@extrimian/agent 0.12.0-1 → 0.12.0-11
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/agent.d.ts +77 -77
- package/dist/agent.js +173 -173
- package/dist/agent.js.map +1 -1
- package/dist/data-share-behaviours/data-share-behavior.d.ts +4 -4
- package/dist/data-share-behaviours/data-share-behavior.js +2 -2
- package/dist/data-share-behaviours/identity-data-share-behavior.d.ts +16 -16
- package/dist/data-share-behaviours/identity-data-share-behavior.js +2 -2
- package/dist/data-share-behaviours/identity-plaintext-data-share-behavior.d.ts +5 -5
- package/dist/data-share-behaviours/identity-plaintext-data-share-behavior.js +15 -15
- package/dist/data-share-behaviours/vcs/vc-share-behavior.d.ts +12 -12
- package/dist/data-share-behaviours/vcs/vc-share-behavior.js +2 -2
- package/dist/data-share-behaviours/vcs/vc-share-didcomm-behavior.d.ts +20 -20
- package/dist/data-share-behaviours/vcs/vc-share-didcomm-behavior.js +29 -29
- package/dist/did/did-services.d.ts +14 -14
- package/dist/did/did-services.js +14 -14
- package/dist/exceptions/agent-plugin-not-found.d.ts +2 -2
- package/dist/exceptions/agent-plugin-not-found.js +6 -6
- package/dist/exceptions/vc-protocol-not-found.d.ts +3 -3
- package/dist/exceptions/vc-protocol-not-found.js +11 -11
- package/dist/index.d.ts +32 -32
- package/dist/index.js +60 -60
- package/dist/messaging/messaging.d.ts +41 -41
- package/dist/messaging/messaging.js +90 -88
- package/dist/messaging/messaging.js.map +1 -1
- package/dist/models/agent-identity.d.ts +86 -86
- package/dist/models/agent-identity.js +399 -399
- package/dist/models/agent-identity.js.map +1 -1
- package/dist/models/agent-kms.d.ts +42 -42
- package/dist/models/agent-kms.js +78 -78
- package/dist/models/agent-pbk.d.ts +11 -11
- package/dist/models/agent-pbk.js +11 -11
- package/dist/models/agent-registry.d.ts +95 -94
- package/dist/models/agent-registry.js +130 -129
- package/dist/models/agent-registry.js.map +1 -1
- package/dist/models/agent-resolver-cache.d.ts +21 -21
- package/dist/models/agent-resolver-cache.js +47 -47
- package/dist/models/agent-resolver.d.ts +19 -19
- package/dist/models/agent-resolver.js +33 -33
- package/dist/models/agent-secure-storage.d.ts +3 -3
- package/dist/models/agent-secure-storage.js +2 -2
- package/dist/models/agent-secure-storages/filesystem-agent-secure-storage.d.ts +14 -14
- package/dist/models/agent-secure-storages/filesystem-agent-secure-storage.js +48 -48
- package/dist/models/agent-storage.d.ts +9 -9
- package/dist/models/agent-storage.js +2 -2
- package/dist/models/did.d.ts +19 -19
- package/dist/models/did.js +63 -63
- package/dist/models/transports/ami-transport.d.ts +30 -30
- package/dist/models/transports/ami-transport.js +183 -183
- package/dist/models/transports/connectable-transport.d.ts +25 -25
- package/dist/models/transports/connectable-transport.js +25 -25
- package/dist/models/transports/dwn-transport.d.ts +32 -32
- package/dist/models/transports/dwn-transport.js +191 -191
- package/dist/models/transports/messaging-transport.d.ts +3 -3
- package/dist/models/transports/messaging-transport.js +2 -2
- package/dist/models/transports/transport.d.ts +30 -30
- package/dist/models/transports/transport.js +7 -7
- package/dist/models/transports/websocket-client-transport.d.ts +5 -5
- package/dist/models/transports/websocket-client-transport.js +33 -33
- package/dist/models/transports/websocket-server-transport.d.ts +7 -7
- package/dist/models/transports/websocket-server-transport.js +21 -21
- package/dist/models/transports/websocket-transport.d.ts +30 -30
- package/dist/models/transports/websocket-transport.js +84 -84
- package/dist/models/vc-storage.d.ts +8 -8
- package/dist/models/vc-storage.js +2 -2
- package/dist/plugins/iplugin.d.ts +17 -17
- package/dist/plugins/iplugin.js +2 -2
- package/dist/plugins/istatus-list-plugin.d.ts +14 -14
- package/dist/plugins/istatus-list-plugin.js +2 -2
- package/dist/plugins/ivc-interceptor-plugin.d.ts +9 -9
- package/dist/plugins/ivc-interceptor-plugin.js +2 -2
- package/dist/plugins/plugin-dispatcher.d.ts +6 -6
- package/dist/plugins/plugin-dispatcher.js +19 -19
- package/dist/transport/transport.d.ts +43 -43
- package/dist/transport/transport.js +109 -109
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +14 -14
- package/dist/utils/lite-event.d.ts +25 -25
- package/dist/utils/lite-event.js +36 -36
- package/dist/vc/models/credentia-flow.d.ts +4 -4
- package/dist/vc/models/credentia-flow.js +8 -8
- package/dist/vc/models/credential-request.d.ts +3 -3
- package/dist/vc/models/credential-request.js +2 -2
- package/dist/vc/models/vc-create-key-request.d.ts +4 -4
- package/dist/vc/models/vc-create-key-request.js +2 -2
- package/dist/vc/models/waci-message.d.ts +3 -3
- package/dist/vc/models/waci-message.js +7 -7
- package/dist/vc/protocols/openid-protocol.d.ts +161 -161
- package/dist/vc/protocols/openid-protocol.js +125 -125
- package/dist/vc/protocols/vc-protocol.d.ts +106 -106
- package/dist/vc/protocols/vc-protocol.js +36 -36
- package/dist/vc/protocols/waci-protocol.d.ts +183 -183
- package/dist/vc/protocols/waci-protocol.js +552 -552
- package/dist/vc/vc.d.ts +225 -225
- package/dist/vc/vc.js +328 -328
- package/package.json +19 -20
- package/readme.md +392 -392
- package/dist/vc/vc-setup/vc-setup.d.ts +0 -0
|
@@ -1,192 +1,192 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.inMemoryMessageStorage = exports.DWNTransport = void 0;
|
|
4
|
-
const did_core_1 = require("@extrimian/did-core");
|
|
5
|
-
const dwn_client_1 = require("@extrimian/dwn-client");
|
|
6
|
-
const lite_event_1 = require("../../utils/lite-event");
|
|
7
|
-
const did_1 = require("../did");
|
|
8
|
-
var AsyncLock = require('async-lock');
|
|
9
|
-
var lock = new AsyncLock();
|
|
10
|
-
class DWNTransport {
|
|
11
|
-
get messageArrived() {
|
|
12
|
-
return this.onMessageArrived.expose();
|
|
13
|
-
}
|
|
14
|
-
// constructor(params?: {
|
|
15
|
-
// dwnPollMilliseconds: number,
|
|
16
|
-
// storage?: MessageStorage
|
|
17
|
-
// }) {
|
|
18
|
-
// this.dwnPollMilliseconds = params?.dwnPollMilliseconds || 10000;
|
|
19
|
-
// this.storage = params.storage;
|
|
20
|
-
// }
|
|
21
|
-
constructor(params) {
|
|
22
|
-
this.onMessageArrived = new lite_event_1.LiteEvent();
|
|
23
|
-
this.dwnClientMap = new Map();
|
|
24
|
-
this.dwnPollMilliseconds = (params === null || params === void 0 ? void 0 : params.dwnPollMilliseconds) || 10000;
|
|
25
|
-
this.storage = (params === null || params === void 0 ? void 0 : params.storage) || exports.inMemoryMessageStorage;
|
|
26
|
-
}
|
|
27
|
-
async transportSupportedByTarget(params) {
|
|
28
|
-
const targetDidDocument = await this.resolver.resolve(params.targetDID);
|
|
29
|
-
const dwnUrl = await did_core_1.DIDDocumentUtils.getServiceUrl(targetDidDocument, 'DecentralizedWebNode', 'nodes')[0];
|
|
30
|
-
return dwnUrl != null;
|
|
31
|
-
}
|
|
32
|
-
async dispose() {
|
|
33
|
-
// TODO: dispose
|
|
34
|
-
}
|
|
35
|
-
async processNewDID(did, initialzing = false) {
|
|
36
|
-
await lock.acquire("dwnClients", async () => {
|
|
37
|
-
if (this.dwnClientMap.get(did.value))
|
|
38
|
-
return;
|
|
39
|
-
if (!did.isLongDID()) {
|
|
40
|
-
const longDidDWNClient = Array.from(this.dwnClientMap.keys()).map(x => did_1.DID.from(x)).find(x => x.isLongDIDFor(did));
|
|
41
|
-
//Si ya existe un dwn transport polleando el long, se debe eliminar ese polleo y comenzar a pollear el short.
|
|
42
|
-
if (longDidDWNClient) {
|
|
43
|
-
this.dwnClientMap.delete(longDidDWNClient.value);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
const shortDidDWNClient = Array.from(this.dwnClientMap.keys()).map(x => did_1.DID.from(x)).find(x => x.isShortDIDFor(did));
|
|
48
|
-
//Si ya existe un dwn transport polleando el short, no se debe pollear el DWN del longDID.
|
|
49
|
-
if (shortDidDWNClient)
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
const didDocument = await this.resolver.resolve(did);
|
|
53
|
-
let dwnClient;
|
|
54
|
-
try {
|
|
55
|
-
const dwnEndpoint = this.getServiceUrl(didDocument, 'DecentralizedWebNode', 'nodes');
|
|
56
|
-
if (!dwnEndpoint)
|
|
57
|
-
return;
|
|
58
|
-
dwnClient = new dwn_client_1.DWNClient({
|
|
59
|
-
did: did.value,
|
|
60
|
-
storage: this.storage || exports.inMemoryMessageStorage,
|
|
61
|
-
inboxURL: dwnEndpoint[0],
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
catch (ex) {
|
|
65
|
-
console.error('An error occurred while polling for the DWN: DIDDocument has not a DWN service defined or it is not correct');
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
this.dwnClientMap.set(did.value, dwnClient);
|
|
69
|
-
dwnClient.addSubscriber(async (messages) => {
|
|
70
|
-
messages.forEach((message) => {
|
|
71
|
-
//Los mensajes de DIDComm en el DWN vienen con caracteres extraños y no permiten JSON.parsear el string si no se remueven esos caracteres.
|
|
72
|
-
let messageManagerCompatible = false;
|
|
73
|
-
if (message.data.message) {
|
|
74
|
-
message.data = JSON.parse(message.data.message);
|
|
75
|
-
messageManagerCompatible = true;
|
|
76
|
-
}
|
|
77
|
-
if (typeof message.data === 'string' &&
|
|
78
|
-
message.data.indexOf('{') != 0 &&
|
|
79
|
-
message.data.indexOf('"header":{"alg":"ECDH-1PU') > -1) {
|
|
80
|
-
message.data = message.data.substring(message.data.indexOf('{'), message.data.lastIndexOf('}') + 1);
|
|
81
|
-
}
|
|
82
|
-
this.onMessageArrived.trigger({
|
|
83
|
-
from: null,
|
|
84
|
-
// from: messages[0].data?.message?.from,
|
|
85
|
-
data: message.data,
|
|
86
|
-
context: { ...message, messageManagerCompatible },
|
|
87
|
-
});
|
|
88
|
-
});
|
|
89
|
-
});
|
|
90
|
-
if (!initialzing) {
|
|
91
|
-
this.startPollSpecificClient(did.value, dwnClient);
|
|
92
|
-
}
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
async initialize(params) {
|
|
96
|
-
this.agent = params.agent;
|
|
97
|
-
this.resolver = this.agent.resolver;
|
|
98
|
-
const dids = this.agent.identity.getDIDs();
|
|
99
|
-
for (let did of dids) {
|
|
100
|
-
await this.processNewDID(did_1.DID.from(did), true);
|
|
101
|
-
}
|
|
102
|
-
Array.from(this.dwnClientMap.keys()).forEach(did => {
|
|
103
|
-
this.startPollSpecificClient(did, this.dwnClientMap.get(did));
|
|
104
|
-
});
|
|
105
|
-
this.agent.identity.didCreated.on((args) => {
|
|
106
|
-
this.processNewDID(args.did);
|
|
107
|
-
});
|
|
108
|
-
this.onMessageArrived.on(async (data) => {
|
|
109
|
-
await this.agent.transport.handleMessage(data, this);
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
async send(params) {
|
|
113
|
-
var _a, _b, _c;
|
|
114
|
-
const targetDidDocument = await this.resolver.resolve(params.to);
|
|
115
|
-
const dwnUrl = await did_core_1.DIDDocumentUtils.getServiceUrl(targetDidDocument, 'DecentralizedWebNode', 'nodes')[0];
|
|
116
|
-
const msgParams = {
|
|
117
|
-
targetDID: params.to.value,
|
|
118
|
-
targetInboxURL: dwnUrl,
|
|
119
|
-
message: {
|
|
120
|
-
data: ((_a = params.context) === null || _a === void 0 ? void 0 : _a.messageManagerCompatible)
|
|
121
|
-
? { message: JSON.stringify(params.data) }
|
|
122
|
-
: params.data,
|
|
123
|
-
descriptor: {
|
|
124
|
-
method: undefined,
|
|
125
|
-
dateCreated: new Date(),
|
|
126
|
-
dataFormat: 'application/json',
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
};
|
|
130
|
-
if (!((_c = (_b = params.context) === null || _b === void 0 ? void 0 : _b.descriptor) === null || _c === void 0 ? void 0 : _c.method)) {
|
|
131
|
-
msgParams.message.descriptor.method = dwn_client_1.ThreadMethod.Create;
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
msgParams.message.descriptor.method = dwn_client_1.ThreadMethod.Reply;
|
|
135
|
-
msgParams.message.descriptor.root =
|
|
136
|
-
params.context.descriptor.root || params.context.descriptor.objectId;
|
|
137
|
-
msgParams.message.descriptor.parent = params.context.descriptor.objectId;
|
|
138
|
-
}
|
|
139
|
-
await this.dwnClientMap
|
|
140
|
-
.get(this.agent.identity.getOperationalDID().value)
|
|
141
|
-
.sendMessage(msgParams)
|
|
142
|
-
.catch(console.error);
|
|
143
|
-
}
|
|
144
|
-
async startPollSpecificClient(did, dwnClient) {
|
|
145
|
-
try {
|
|
146
|
-
await dwnClient.pullNewMessageWait();
|
|
147
|
-
}
|
|
148
|
-
catch {
|
|
149
|
-
console.error("Error polling DWNClient for DID", did);
|
|
150
|
-
}
|
|
151
|
-
finally {
|
|
152
|
-
setTimeout(() => {
|
|
153
|
-
if (this.dwnClientMap.get(did)) {
|
|
154
|
-
this.startPollSpecificClient(did, dwnClient);
|
|
155
|
-
}
|
|
156
|
-
}, this.dwnPollMilliseconds);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
getServiceUrl(didDocument, serviceType, serviceEndpointMapKey) {
|
|
160
|
-
var _a;
|
|
161
|
-
try {
|
|
162
|
-
const service = (_a = didDocument.service) === null || _a === void 0 ? void 0 : _a.find((service) => service.type === serviceType);
|
|
163
|
-
if (!service)
|
|
164
|
-
return null;
|
|
165
|
-
if (typeof service.serviceEndpoint === 'object')
|
|
166
|
-
return service.serviceEndpoint[serviceEndpointMapKey];
|
|
167
|
-
return [service.serviceEndpoint];
|
|
168
|
-
}
|
|
169
|
-
catch (error) {
|
|
170
|
-
console.error(error);
|
|
171
|
-
throw Error(`Error finding ${serviceType} service in DID Document`);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
exports.DWNTransport = DWNTransport;
|
|
176
|
-
const messagesStorage = [];
|
|
177
|
-
let lastPullDate;
|
|
178
|
-
exports.inMemoryMessageStorage = {
|
|
179
|
-
async getMessages() {
|
|
180
|
-
return messagesStorage;
|
|
181
|
-
},
|
|
182
|
-
async getLastPullDate() {
|
|
183
|
-
return lastPullDate;
|
|
184
|
-
},
|
|
185
|
-
async updateLastPullDate(date) {
|
|
186
|
-
lastPullDate = date;
|
|
187
|
-
},
|
|
188
|
-
async saveMessages(messages) {
|
|
189
|
-
messagesStorage.push(...messages);
|
|
190
|
-
},
|
|
191
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.inMemoryMessageStorage = exports.DWNTransport = void 0;
|
|
4
|
+
const did_core_1 = require("@extrimian/did-core");
|
|
5
|
+
const dwn_client_1 = require("@extrimian/dwn-client");
|
|
6
|
+
const lite_event_1 = require("../../utils/lite-event");
|
|
7
|
+
const did_1 = require("../did");
|
|
8
|
+
var AsyncLock = require('async-lock');
|
|
9
|
+
var lock = new AsyncLock();
|
|
10
|
+
class DWNTransport {
|
|
11
|
+
get messageArrived() {
|
|
12
|
+
return this.onMessageArrived.expose();
|
|
13
|
+
}
|
|
14
|
+
// constructor(params?: {
|
|
15
|
+
// dwnPollMilliseconds: number,
|
|
16
|
+
// storage?: MessageStorage
|
|
17
|
+
// }) {
|
|
18
|
+
// this.dwnPollMilliseconds = params?.dwnPollMilliseconds || 10000;
|
|
19
|
+
// this.storage = params.storage;
|
|
20
|
+
// }
|
|
21
|
+
constructor(params) {
|
|
22
|
+
this.onMessageArrived = new lite_event_1.LiteEvent();
|
|
23
|
+
this.dwnClientMap = new Map();
|
|
24
|
+
this.dwnPollMilliseconds = (params === null || params === void 0 ? void 0 : params.dwnPollMilliseconds) || 10000;
|
|
25
|
+
this.storage = (params === null || params === void 0 ? void 0 : params.storage) || exports.inMemoryMessageStorage;
|
|
26
|
+
}
|
|
27
|
+
async transportSupportedByTarget(params) {
|
|
28
|
+
const targetDidDocument = await this.resolver.resolve(params.targetDID);
|
|
29
|
+
const dwnUrl = await did_core_1.DIDDocumentUtils.getServiceUrl(targetDidDocument, 'DecentralizedWebNode', 'nodes')[0];
|
|
30
|
+
return dwnUrl != null;
|
|
31
|
+
}
|
|
32
|
+
async dispose() {
|
|
33
|
+
// TODO: dispose
|
|
34
|
+
}
|
|
35
|
+
async processNewDID(did, initialzing = false) {
|
|
36
|
+
await lock.acquire("dwnClients", async () => {
|
|
37
|
+
if (this.dwnClientMap.get(did.value))
|
|
38
|
+
return;
|
|
39
|
+
if (!did.isLongDID()) {
|
|
40
|
+
const longDidDWNClient = Array.from(this.dwnClientMap.keys()).map(x => did_1.DID.from(x)).find(x => x.isLongDIDFor(did));
|
|
41
|
+
//Si ya existe un dwn transport polleando el long, se debe eliminar ese polleo y comenzar a pollear el short.
|
|
42
|
+
if (longDidDWNClient) {
|
|
43
|
+
this.dwnClientMap.delete(longDidDWNClient.value);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const shortDidDWNClient = Array.from(this.dwnClientMap.keys()).map(x => did_1.DID.from(x)).find(x => x.isShortDIDFor(did));
|
|
48
|
+
//Si ya existe un dwn transport polleando el short, no se debe pollear el DWN del longDID.
|
|
49
|
+
if (shortDidDWNClient)
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const didDocument = await this.resolver.resolve(did);
|
|
53
|
+
let dwnClient;
|
|
54
|
+
try {
|
|
55
|
+
const dwnEndpoint = this.getServiceUrl(didDocument, 'DecentralizedWebNode', 'nodes');
|
|
56
|
+
if (!dwnEndpoint)
|
|
57
|
+
return;
|
|
58
|
+
dwnClient = new dwn_client_1.DWNClient({
|
|
59
|
+
did: did.value,
|
|
60
|
+
storage: this.storage || exports.inMemoryMessageStorage,
|
|
61
|
+
inboxURL: dwnEndpoint[0],
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
catch (ex) {
|
|
65
|
+
console.error('An error occurred while polling for the DWN: DIDDocument has not a DWN service defined or it is not correct');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
this.dwnClientMap.set(did.value, dwnClient);
|
|
69
|
+
dwnClient.addSubscriber(async (messages) => {
|
|
70
|
+
messages.forEach((message) => {
|
|
71
|
+
//Los mensajes de DIDComm en el DWN vienen con caracteres extraños y no permiten JSON.parsear el string si no se remueven esos caracteres.
|
|
72
|
+
let messageManagerCompatible = false;
|
|
73
|
+
if (message.data.message) {
|
|
74
|
+
message.data = JSON.parse(message.data.message);
|
|
75
|
+
messageManagerCompatible = true;
|
|
76
|
+
}
|
|
77
|
+
if (typeof message.data === 'string' &&
|
|
78
|
+
message.data.indexOf('{') != 0 &&
|
|
79
|
+
message.data.indexOf('"header":{"alg":"ECDH-1PU') > -1) {
|
|
80
|
+
message.data = message.data.substring(message.data.indexOf('{'), message.data.lastIndexOf('}') + 1);
|
|
81
|
+
}
|
|
82
|
+
this.onMessageArrived.trigger({
|
|
83
|
+
from: null,
|
|
84
|
+
// from: messages[0].data?.message?.from,
|
|
85
|
+
data: message.data,
|
|
86
|
+
context: { ...message, messageManagerCompatible },
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
if (!initialzing) {
|
|
91
|
+
this.startPollSpecificClient(did.value, dwnClient);
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
async initialize(params) {
|
|
96
|
+
this.agent = params.agent;
|
|
97
|
+
this.resolver = this.agent.resolver;
|
|
98
|
+
const dids = this.agent.identity.getDIDs();
|
|
99
|
+
for (let did of dids) {
|
|
100
|
+
await this.processNewDID(did_1.DID.from(did), true);
|
|
101
|
+
}
|
|
102
|
+
Array.from(this.dwnClientMap.keys()).forEach(did => {
|
|
103
|
+
this.startPollSpecificClient(did, this.dwnClientMap.get(did));
|
|
104
|
+
});
|
|
105
|
+
this.agent.identity.didCreated.on((args) => {
|
|
106
|
+
this.processNewDID(args.did);
|
|
107
|
+
});
|
|
108
|
+
this.onMessageArrived.on(async (data) => {
|
|
109
|
+
await this.agent.transport.handleMessage(data, this);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
async send(params) {
|
|
113
|
+
var _a, _b, _c;
|
|
114
|
+
const targetDidDocument = await this.resolver.resolve(params.to);
|
|
115
|
+
const dwnUrl = await did_core_1.DIDDocumentUtils.getServiceUrl(targetDidDocument, 'DecentralizedWebNode', 'nodes')[0];
|
|
116
|
+
const msgParams = {
|
|
117
|
+
targetDID: params.to.value,
|
|
118
|
+
targetInboxURL: dwnUrl,
|
|
119
|
+
message: {
|
|
120
|
+
data: ((_a = params.context) === null || _a === void 0 ? void 0 : _a.messageManagerCompatible)
|
|
121
|
+
? { message: JSON.stringify(params.data) }
|
|
122
|
+
: params.data,
|
|
123
|
+
descriptor: {
|
|
124
|
+
method: undefined,
|
|
125
|
+
dateCreated: new Date(),
|
|
126
|
+
dataFormat: 'application/json',
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
if (!((_c = (_b = params.context) === null || _b === void 0 ? void 0 : _b.descriptor) === null || _c === void 0 ? void 0 : _c.method)) {
|
|
131
|
+
msgParams.message.descriptor.method = dwn_client_1.ThreadMethod.Create;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
msgParams.message.descriptor.method = dwn_client_1.ThreadMethod.Reply;
|
|
135
|
+
msgParams.message.descriptor.root =
|
|
136
|
+
params.context.descriptor.root || params.context.descriptor.objectId;
|
|
137
|
+
msgParams.message.descriptor.parent = params.context.descriptor.objectId;
|
|
138
|
+
}
|
|
139
|
+
await this.dwnClientMap
|
|
140
|
+
.get(this.agent.identity.getOperationalDID().value)
|
|
141
|
+
.sendMessage(msgParams)
|
|
142
|
+
.catch(console.error);
|
|
143
|
+
}
|
|
144
|
+
async startPollSpecificClient(did, dwnClient) {
|
|
145
|
+
try {
|
|
146
|
+
await dwnClient.pullNewMessageWait();
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
console.error("Error polling DWNClient for DID", did);
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
setTimeout(() => {
|
|
153
|
+
if (this.dwnClientMap.get(did)) {
|
|
154
|
+
this.startPollSpecificClient(did, dwnClient);
|
|
155
|
+
}
|
|
156
|
+
}, this.dwnPollMilliseconds);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
getServiceUrl(didDocument, serviceType, serviceEndpointMapKey) {
|
|
160
|
+
var _a;
|
|
161
|
+
try {
|
|
162
|
+
const service = (_a = didDocument.service) === null || _a === void 0 ? void 0 : _a.find((service) => service.type === serviceType);
|
|
163
|
+
if (!service)
|
|
164
|
+
return null;
|
|
165
|
+
if (typeof service.serviceEndpoint === 'object')
|
|
166
|
+
return service.serviceEndpoint[serviceEndpointMapKey];
|
|
167
|
+
return [service.serviceEndpoint];
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
console.error(error);
|
|
171
|
+
throw Error(`Error finding ${serviceType} service in DID Document`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
exports.DWNTransport = DWNTransport;
|
|
176
|
+
const messagesStorage = [];
|
|
177
|
+
let lastPullDate;
|
|
178
|
+
exports.inMemoryMessageStorage = {
|
|
179
|
+
async getMessages() {
|
|
180
|
+
return messagesStorage;
|
|
181
|
+
},
|
|
182
|
+
async getLastPullDate() {
|
|
183
|
+
return lastPullDate;
|
|
184
|
+
},
|
|
185
|
+
async updateLastPullDate(date) {
|
|
186
|
+
lastPullDate = date;
|
|
187
|
+
},
|
|
188
|
+
async saveMessages(messages) {
|
|
189
|
+
messagesStorage.push(...messages);
|
|
190
|
+
},
|
|
191
|
+
};
|
|
192
192
|
//# sourceMappingURL=dwn-transport.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ITransport } from './transport';
|
|
2
|
-
export interface IMessagingTransport extends ITransport {
|
|
3
|
-
}
|
|
1
|
+
import { ITransport } from './transport';
|
|
2
|
+
export interface IMessagingTransport extends ITransport {
|
|
3
|
+
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
//# sourceMappingURL=messaging-transport.js.map
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { Agent } from "../../agent";
|
|
2
|
-
import { ILiteEvent } from "../../utils/lite-event";
|
|
3
|
-
import { DID } from "../did";
|
|
4
|
-
export interface ITransport {
|
|
5
|
-
send(params: TransportSendRequest): any;
|
|
6
|
-
messageArrived: ILiteEvent<MessageArrivedEventArg>;
|
|
7
|
-
initialize(params: {
|
|
8
|
-
agent: Agent;
|
|
9
|
-
}): Promise<void>;
|
|
10
|
-
transportSupportedByTarget(params: {
|
|
11
|
-
targetDID: DID;
|
|
12
|
-
}): Promise<boolean>;
|
|
13
|
-
dispose(): Promise<void>;
|
|
14
|
-
}
|
|
15
|
-
export interface TransportSendRequest {
|
|
16
|
-
data: any;
|
|
17
|
-
from?: DID;
|
|
18
|
-
context?: any;
|
|
19
|
-
to: DID;
|
|
20
|
-
}
|
|
21
|
-
export interface MessageArrivedEventArg {
|
|
22
|
-
data: any;
|
|
23
|
-
from: DID;
|
|
24
|
-
context: any;
|
|
25
|
-
}
|
|
26
|
-
export interface ConnectedEventArg {
|
|
27
|
-
did: DID;
|
|
28
|
-
}
|
|
29
|
-
export type TransportInstance = new (params: any) => ITransport;
|
|
30
|
-
export declare function GetTransportByInstance(transports: ITransport[], instance: TransportInstance): ITransport;
|
|
1
|
+
import { Agent } from "../../agent";
|
|
2
|
+
import { ILiteEvent } from "../../utils/lite-event";
|
|
3
|
+
import { DID } from "../did";
|
|
4
|
+
export interface ITransport {
|
|
5
|
+
send(params: TransportSendRequest): any;
|
|
6
|
+
messageArrived: ILiteEvent<MessageArrivedEventArg>;
|
|
7
|
+
initialize(params: {
|
|
8
|
+
agent: Agent;
|
|
9
|
+
}): Promise<void>;
|
|
10
|
+
transportSupportedByTarget(params: {
|
|
11
|
+
targetDID: DID;
|
|
12
|
+
}): Promise<boolean>;
|
|
13
|
+
dispose(): Promise<void>;
|
|
14
|
+
}
|
|
15
|
+
export interface TransportSendRequest {
|
|
16
|
+
data: any;
|
|
17
|
+
from?: DID;
|
|
18
|
+
context?: any;
|
|
19
|
+
to: DID;
|
|
20
|
+
}
|
|
21
|
+
export interface MessageArrivedEventArg {
|
|
22
|
+
data: any;
|
|
23
|
+
from: DID;
|
|
24
|
+
context: any;
|
|
25
|
+
}
|
|
26
|
+
export interface ConnectedEventArg {
|
|
27
|
+
did: DID;
|
|
28
|
+
}
|
|
29
|
+
export type TransportInstance = new (params: any) => ITransport;
|
|
30
|
+
export declare function GetTransportByInstance(transports: ITransport[], instance: TransportInstance): ITransport;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GetTransportByInstance = void 0;
|
|
4
|
-
function GetTransportByInstance(transports, instance) {
|
|
5
|
-
return transports.find(x => x instanceof instance);
|
|
6
|
-
}
|
|
7
|
-
exports.GetTransportByInstance = GetTransportByInstance;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GetTransportByInstance = void 0;
|
|
4
|
+
function GetTransportByInstance(transports, instance) {
|
|
5
|
+
return transports.find(x => x instanceof instance);
|
|
6
|
+
}
|
|
7
|
+
exports.GetTransportByInstance = GetTransportByInstance;
|
|
8
8
|
//# sourceMappingURL=transport.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TransportSendRequest } from './transport';
|
|
2
|
-
import { WebsocketTransport } from './websocket-transport';
|
|
3
|
-
export declare class WebsocketClientTransport extends WebsocketTransport {
|
|
4
|
-
send(params: TransportSendRequest): Promise<void>;
|
|
5
|
-
}
|
|
1
|
+
import { TransportSendRequest } from './transport';
|
|
2
|
+
import { WebsocketTransport } from './websocket-transport';
|
|
3
|
+
export declare class WebsocketClientTransport extends WebsocketTransport {
|
|
4
|
+
send(params: TransportSendRequest): Promise<void>;
|
|
5
|
+
}
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebsocketClientTransport = void 0;
|
|
4
|
-
const did_core_1 = require("@extrimian/did-core");
|
|
5
|
-
const socket_io_client_1 = require("socket.io-client");
|
|
6
|
-
const did_1 = require("../did");
|
|
7
|
-
const websocket_transport_1 = require("./websocket-transport");
|
|
8
|
-
class WebsocketClientTransport extends websocket_transport_1.WebsocketTransport {
|
|
9
|
-
async send(params) {
|
|
10
|
-
const existingSocket = this.connectedSockets.get(params.to.value);
|
|
11
|
-
if (!existingSocket) {
|
|
12
|
-
const resolver = this.agent.resolver;
|
|
13
|
-
const targetDidDocument = await resolver.resolve(params.to);
|
|
14
|
-
try {
|
|
15
|
-
const websocketUrl = did_core_1.DIDDocumentUtils.getServiceUrl(targetDidDocument, this.wsDidDocumentId)[0];
|
|
16
|
-
const socket = (0, socket_io_client_1.connect)(websocketUrl);
|
|
17
|
-
this.listenToSocket(socket, { did: did_1.DID.from(params.to.value) });
|
|
18
|
-
this.connectedSockets.set(params.to.value, socket);
|
|
19
|
-
}
|
|
20
|
-
catch (ex) {
|
|
21
|
-
throw new Error('Error getting websocket endpoint in did document');
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
const socket = this.connectedSockets.get(params.to.value);
|
|
25
|
-
if (!socket)
|
|
26
|
-
throw new Error(`No socket found for DID ${params.to.value}`);
|
|
27
|
-
socket.emit('message', {
|
|
28
|
-
message: params.data,
|
|
29
|
-
did: this.agent.identity.getOperationalDID().value,
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
exports.WebsocketClientTransport = WebsocketClientTransport;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebsocketClientTransport = void 0;
|
|
4
|
+
const did_core_1 = require("@extrimian/did-core");
|
|
5
|
+
const socket_io_client_1 = require("socket.io-client");
|
|
6
|
+
const did_1 = require("../did");
|
|
7
|
+
const websocket_transport_1 = require("./websocket-transport");
|
|
8
|
+
class WebsocketClientTransport extends websocket_transport_1.WebsocketTransport {
|
|
9
|
+
async send(params) {
|
|
10
|
+
const existingSocket = this.connectedSockets.get(params.to.value);
|
|
11
|
+
if (!existingSocket) {
|
|
12
|
+
const resolver = this.agent.resolver;
|
|
13
|
+
const targetDidDocument = await resolver.resolve(params.to);
|
|
14
|
+
try {
|
|
15
|
+
const websocketUrl = did_core_1.DIDDocumentUtils.getServiceUrl(targetDidDocument, this.wsDidDocumentId)[0];
|
|
16
|
+
const socket = (0, socket_io_client_1.connect)(websocketUrl);
|
|
17
|
+
this.listenToSocket(socket, { did: did_1.DID.from(params.to.value) });
|
|
18
|
+
this.connectedSockets.set(params.to.value, socket);
|
|
19
|
+
}
|
|
20
|
+
catch (ex) {
|
|
21
|
+
throw new Error('Error getting websocket endpoint in did document');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const socket = this.connectedSockets.get(params.to.value);
|
|
25
|
+
if (!socket)
|
|
26
|
+
throw new Error(`No socket found for DID ${params.to.value}`);
|
|
27
|
+
socket.emit('message', {
|
|
28
|
+
message: params.data,
|
|
29
|
+
did: this.agent.identity.getOperationalDID().value,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.WebsocketClientTransport = WebsocketClientTransport;
|
|
34
34
|
//# sourceMappingURL=websocket-client-transport.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { Server } from 'socket.io';
|
|
2
|
-
import { TransportSendRequest } from './transport';
|
|
3
|
-
import { WebsocketTransport } from './websocket-transport';
|
|
4
|
-
export declare class WebsocketServerTransport extends WebsocketTransport {
|
|
5
|
-
initializeServer(socketServer: Server): void;
|
|
6
|
-
send(params: TransportSendRequest): void;
|
|
7
|
-
}
|
|
1
|
+
import { Server } from 'socket.io';
|
|
2
|
+
import { TransportSendRequest } from './transport';
|
|
3
|
+
import { WebsocketTransport } from './websocket-transport';
|
|
4
|
+
export declare class WebsocketServerTransport extends WebsocketTransport {
|
|
5
|
+
initializeServer(socketServer: Server): void;
|
|
6
|
+
send(params: TransportSendRequest): void;
|
|
7
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WebsocketServerTransport = void 0;
|
|
4
|
-
const websocket_transport_1 = require("./websocket-transport");
|
|
5
|
-
class WebsocketServerTransport extends websocket_transport_1.WebsocketTransport {
|
|
6
|
-
initializeServer(socketServer) {
|
|
7
|
-
socketServer.on('connection', (client) => {
|
|
8
|
-
this.listenToSocket(client);
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
send(params) {
|
|
12
|
-
const socket = this.connectedSockets.get(params.to.value);
|
|
13
|
-
if (!socket)
|
|
14
|
-
throw new Error(`No socket found for DID ${params.to.value}`);
|
|
15
|
-
socket.emit('message', {
|
|
16
|
-
message: params.data,
|
|
17
|
-
did: this.agent.identity.getOperationalDID().value,
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
exports.WebsocketServerTransport = WebsocketServerTransport;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WebsocketServerTransport = void 0;
|
|
4
|
+
const websocket_transport_1 = require("./websocket-transport");
|
|
5
|
+
class WebsocketServerTransport extends websocket_transport_1.WebsocketTransport {
|
|
6
|
+
initializeServer(socketServer) {
|
|
7
|
+
socketServer.on('connection', (client) => {
|
|
8
|
+
this.listenToSocket(client);
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
send(params) {
|
|
12
|
+
const socket = this.connectedSockets.get(params.to.value);
|
|
13
|
+
if (!socket)
|
|
14
|
+
throw new Error(`No socket found for DID ${params.to.value}`);
|
|
15
|
+
socket.emit('message', {
|
|
16
|
+
message: params.data,
|
|
17
|
+
did: this.agent.identity.getOperationalDID().value,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.WebsocketServerTransport = WebsocketServerTransport;
|
|
22
22
|
//# sourceMappingURL=websocket-server-transport.js.map
|