@extrimian/agent 0.10.0-1 → 0.10.0-2

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.
@@ -0,0 +1,30 @@
1
+ import { DIDDocument } from '@extrimian/did-core';
2
+ import { DWNAmiClient, MessageStorage } from '@extrimian/dwn-client-ami';
3
+ import { Agent } from '../../agent';
4
+ import { ILiteEvent } from '../../utils/lite-event';
5
+ import { DID } from '../did';
6
+ import { IMessagingTransport } from './messaging-transport';
7
+ import { MessageArrivedEventArg, TransportSendRequest } from './transport';
8
+ export declare class DWNTransport implements IMessagingTransport {
9
+ private readonly onMessageArrived;
10
+ get messageArrived(): ILiteEvent<MessageArrivedEventArg>;
11
+ dwnClientMap: Map<string, DWNAmiClient>;
12
+ agent: Agent;
13
+ private resolver;
14
+ dwnPollMilliseconds: number;
15
+ constructor(params?: {
16
+ dwnPollMilliseconds: number;
17
+ });
18
+ transportSupportedByTarget(params: {
19
+ targetDID: DID;
20
+ }): Promise<boolean>;
21
+ dispose(): Promise<void>;
22
+ processNewDID(did: DID, initialzing?: boolean): Promise<void>;
23
+ initialize(params: {
24
+ agent: Agent;
25
+ }): Promise<void>;
26
+ send(params: TransportSendRequest): Promise<void>;
27
+ startPollSpecificClient(did: string, dwnClient: DWNAmiClient): Promise<void>;
28
+ getServiceUrl(didDocument: DIDDocument, serviceType: string, serviceEndpointMapKey?: string): string[];
29
+ }
30
+ export declare const inMemoryMessageStorage: MessageStorage;
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.inMemoryMessageStorage = exports.DWNTransport = void 0;
13
+ const did_core_1 = require("@extrimian/did-core");
14
+ const dwn_client_ami_1 = require("@extrimian/dwn-client-ami");
15
+ const lite_event_1 = require("../../utils/lite-event");
16
+ const did_1 = require("../did");
17
+ var AsyncLock = require('async-lock');
18
+ var lock = new AsyncLock();
19
+ class DWNTransport {
20
+ get messageArrived() {
21
+ return this.onMessageArrived.expose();
22
+ }
23
+ constructor(params) {
24
+ this.onMessageArrived = new lite_event_1.LiteEvent();
25
+ this.dwnClientMap = new Map();
26
+ this.dwnPollMilliseconds = (params === null || params === void 0 ? void 0 : params.dwnPollMilliseconds) || 10000;
27
+ }
28
+ transportSupportedByTarget(params) {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ const targetDidDocument = yield this.resolver.resolve(params.targetDID);
31
+ const dwnUrl = yield did_core_1.DIDDocumentUtils.getServiceUrl(targetDidDocument, 'DecentralizedWebNode', 'nodes')[0];
32
+ return dwnUrl != null;
33
+ });
34
+ }
35
+ dispose() {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ // TODO: dispose
38
+ });
39
+ }
40
+ processNewDID(did, initialzing = false) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ yield lock.acquire("dwnClients", () => __awaiter(this, void 0, void 0, function* () {
43
+ if (this.dwnClientMap.get(did.value))
44
+ return;
45
+ if (!did.isLongDID()) {
46
+ const longDidDWNClient = Array.from(this.dwnClientMap.keys()).map(x => did_1.DID.from(x)).find(x => x.isLongDIDFor(did));
47
+ //Si ya existe un dwn transport polleando el long, se debe eliminar ese polleo y comenzar a pollear el short.
48
+ if (longDidDWNClient) {
49
+ this.dwnClientMap.delete(longDidDWNClient.value);
50
+ }
51
+ }
52
+ else {
53
+ const shortDidDWNClient = Array.from(this.dwnClientMap.keys()).map(x => did_1.DID.from(x)).find(x => x.isShortDIDFor(did));
54
+ //Si ya existe un dwn transport polleando el short, no se debe pollear el DWN del longDID.
55
+ if (shortDidDWNClient)
56
+ return;
57
+ }
58
+ const didDocument = yield this.resolver.resolve(did);
59
+ let dwnClient;
60
+ try {
61
+ const dwnEndpoint = this.getServiceUrl(didDocument, 'DecentralizedWebNode', 'nodes');
62
+ if (!dwnEndpoint)
63
+ return;
64
+ dwnClient = new dwn_client_ami_1.DWNAmiClient({
65
+ did: did.value,
66
+ storage: exports.inMemoryMessageStorage,
67
+ inboxURL: dwnEndpoint[0],
68
+ });
69
+ }
70
+ catch (ex) {
71
+ console.error('An error occurred while polling for the DWN: DIDDocument has not a DWN service defined or it is not correct');
72
+ return;
73
+ }
74
+ this.dwnClientMap.set(did.value, dwnClient);
75
+ dwnClient.addSubscriber((messages) => __awaiter(this, void 0, void 0, function* () {
76
+ messages.forEach((message) => {
77
+ //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.
78
+ let messageManagerCompatible = false;
79
+ if (message.data.message) {
80
+ message.data = JSON.parse(message.data.message);
81
+ messageManagerCompatible = true;
82
+ }
83
+ if (typeof message.data === 'string' &&
84
+ message.data.indexOf('{') != 0 &&
85
+ message.data.indexOf('"header":{"alg":"ECDH-1PU') > -1) {
86
+ message.data = message.data.substring(message.data.indexOf('{'), message.data.lastIndexOf('}') + 1);
87
+ }
88
+ this.onMessageArrived.trigger({
89
+ from: null,
90
+ // from: messages[0].data?.message?.from,
91
+ data: message.data,
92
+ context: Object.assign(Object.assign({}, message), { messageManagerCompatible }),
93
+ });
94
+ });
95
+ }));
96
+ if (!initialzing) {
97
+ this.startPollSpecificClient(did.value, dwnClient);
98
+ }
99
+ }));
100
+ });
101
+ }
102
+ initialize(params) {
103
+ return __awaiter(this, void 0, void 0, function* () {
104
+ this.agent = params.agent;
105
+ this.resolver = this.agent.resolver;
106
+ const dids = this.agent.identity.getDIDs();
107
+ for (let did of dids) {
108
+ yield this.processNewDID(did_1.DID.from(did), true);
109
+ }
110
+ Array.from(this.dwnClientMap.keys()).forEach(did => {
111
+ this.startPollSpecificClient(did, this.dwnClientMap.get(did));
112
+ });
113
+ this.agent.identity.didCreated.on((args) => {
114
+ this.processNewDID(args.did);
115
+ });
116
+ this.onMessageArrived.on((data) => __awaiter(this, void 0, void 0, function* () {
117
+ yield this.agent.transport.handleMessage(data, this);
118
+ }));
119
+ });
120
+ }
121
+ send(params) {
122
+ var _a, _b, _c;
123
+ return __awaiter(this, void 0, void 0, function* () {
124
+ const targetDidDocument = yield this.resolver.resolve(params.to);
125
+ const dwnUrl = yield did_core_1.DIDDocumentUtils.getServiceUrl(targetDidDocument, 'DecentralizedWebNode', 'nodes')[0];
126
+ const msgParams = {
127
+ targetDID: params.to.value,
128
+ targetInboxURL: dwnUrl,
129
+ message: {
130
+ data: ((_a = params.context) === null || _a === void 0 ? void 0 : _a.messageManagerCompatible)
131
+ ? { message: JSON.stringify(params.data) }
132
+ : params.data,
133
+ descriptor: {
134
+ method: undefined,
135
+ dateCreated: new Date(),
136
+ dataFormat: 'application/json',
137
+ },
138
+ },
139
+ };
140
+ if (!((_c = (_b = params.context) === null || _b === void 0 ? void 0 : _b.descriptor) === null || _c === void 0 ? void 0 : _c.method)) {
141
+ msgParams.message.descriptor.method = dwn_client_ami_1.ThreadMethod.Create;
142
+ }
143
+ else {
144
+ msgParams.message.descriptor.method = dwn_client_ami_1.ThreadMethod.Reply;
145
+ msgParams.message.descriptor.root =
146
+ params.context.descriptor.root || params.context.descriptor.objectId;
147
+ msgParams.message.descriptor.parent = params.context.descriptor.objectId;
148
+ }
149
+ yield this.dwnClientMap
150
+ .get(this.agent.identity.getOperationalDID().value)
151
+ .sendMessage(msgParams)
152
+ .catch(console.error);
153
+ });
154
+ }
155
+ startPollSpecificClient(did, dwnClient) {
156
+ return __awaiter(this, void 0, void 0, function* () {
157
+ try {
158
+ yield dwnClient.pullNewMessageWait();
159
+ }
160
+ catch (_a) {
161
+ console.error("Error polling DWNClient for DID", did);
162
+ }
163
+ finally {
164
+ setTimeout(() => {
165
+ if (this.dwnClientMap.get(did)) {
166
+ this.startPollSpecificClient(did, dwnClient);
167
+ }
168
+ }, this.dwnPollMilliseconds);
169
+ }
170
+ });
171
+ }
172
+ getServiceUrl(didDocument, serviceType, serviceEndpointMapKey) {
173
+ var _a;
174
+ try {
175
+ const service = (_a = didDocument.service) === null || _a === void 0 ? void 0 : _a.find((service) => service.type === serviceType);
176
+ if (!service)
177
+ return null;
178
+ if (typeof service.serviceEndpoint === 'object')
179
+ return service.serviceEndpoint[serviceEndpointMapKey];
180
+ return [service.serviceEndpoint];
181
+ }
182
+ catch (error) {
183
+ console.error(error);
184
+ throw Error(`Error finding ${serviceType} service in DID Document`);
185
+ }
186
+ }
187
+ }
188
+ exports.DWNTransport = DWNTransport;
189
+ const messagesStorage = [];
190
+ let lastPullDate;
191
+ exports.inMemoryMessageStorage = {
192
+ getMessages() {
193
+ return __awaiter(this, void 0, void 0, function* () {
194
+ return messagesStorage;
195
+ });
196
+ },
197
+ getLastPullDate() {
198
+ return __awaiter(this, void 0, void 0, function* () {
199
+ return lastPullDate;
200
+ });
201
+ },
202
+ updateLastPullDate(date) {
203
+ return __awaiter(this, void 0, void 0, function* () {
204
+ lastPullDate = date;
205
+ });
206
+ },
207
+ saveMessages(messages) {
208
+ return __awaiter(this, void 0, void 0, function* () {
209
+ messagesStorage.push(...messages);
210
+ });
211
+ },
212
+ };
213
+ //# sourceMappingURL=ami-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ami-transport.js","sourceRoot":"","sources":["../../../src/models/transports/ami-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { VerifiableCredential } from "@extrimian/vc-core";
2
+ /**
3
+ * Interfaz para los plugins de interceptación del flujo de credenciales verificables (VC).
4
+ */
5
+ export declare abstract class VCInterceptorPlugin {
6
+ /**
7
+ * Método que se ejecuta antes de firmar una credencial verificable.
8
+ *
9
+ * @param vc - La credencial verificable que se va a firmar.
10
+ * @returns Una promesa que se resuelve cuando la operación ha finalizado.
11
+ */
12
+ beforeVcSigned(vc: VerifiableCredential): Promise<void>;
13
+ /**
14
+ * Método que se ejecuta después de verificar una credencial verificable.
15
+ *
16
+ * @param vc - La credencial verificable que ha sido verificada.
17
+ * @param result - El resultado de la verificación.
18
+ * @returns Una promesa que se resuelve cuando la operación ha finalizado.
19
+ */
20
+ afterVcVerified?(vc: VerifiableCredential): Promise<{
21
+ verified: boolean;
22
+ message?: string;
23
+ }>;
24
+ /**
25
+ * Método que se ejecuta después de que el titular ha guardado la credencial verificable en su lista de credenciales.
26
+ *
27
+ * @param vc - La credencial verificable que se ha guardado.
28
+ * @returns Una promesa que se resuelve cuando la operación ha finalizado.
29
+ */
30
+ afterVcStored?(vc: VerifiableCredential): Promise<void>;
31
+ }
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.VCInterceptorPlugin = void 0;
13
+ /**
14
+ * Interfaz para los plugins de interceptación del flujo de credenciales verificables (VC).
15
+ */
16
+ class VCInterceptorPlugin {
17
+ /**
18
+ * Método que se ejecuta antes de firmar una credencial verificable.
19
+ *
20
+ * @param vc - La credencial verificable que se va a firmar.
21
+ * @returns Una promesa que se resuelve cuando la operación ha finalizado.
22
+ */
23
+ beforeVcSigned(vc) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ });
26
+ }
27
+ /**
28
+ * Método que se ejecuta después de verificar una credencial verificable.
29
+ *
30
+ * @param vc - La credencial verificable que ha sido verificada.
31
+ * @param result - El resultado de la verificación.
32
+ * @returns Una promesa que se resuelve cuando la operación ha finalizado.
33
+ */
34
+ afterVcVerified(vc) {
35
+ return __awaiter(this, void 0, void 0, function* () {
36
+ return {
37
+ verified: true
38
+ };
39
+ });
40
+ }
41
+ ;
42
+ /**
43
+ * Método que se ejecuta después de que el titular ha guardado la credencial verificable en su lista de credenciales.
44
+ *
45
+ * @param vc - La credencial verificable que se ha guardado.
46
+ * @returns Una promesa que se resuelve cuando la operación ha finalizado.
47
+ */
48
+ afterVcStored(vc) {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ });
51
+ }
52
+ }
53
+ exports.VCInterceptorPlugin = VCInterceptorPlugin;
54
+ //# sourceMappingURL=ivc-interceptor-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ivc-interceptor-plugin.js","sourceRoot":"","sources":["../../src/plugins/ivc-interceptor-plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA;;GAEG;AACH,MAAsB,mBAAmB;IACrC;;;;;MAKE;IACI,cAAc,CAAC,EAAwB;;QAE7C,CAAC;KAAA;IAED;;;;;;MAME;IACI,eAAe,CAAE,EAAwB;;YAC3C,OAAO;gBACH,QAAQ,EAAE,IAAI;aACjB,CAAC;QACN,CAAC;KAAA;IAAA,CAAC;IAEF;;;;;MAKE;IACI,aAAa,CAAE,EAAwB;;QAE7C,CAAC;KAAA;CACJ;AAjCD,kDAiCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@extrimian/agent",
3
- "version": "0.10.0-1",
3
+ "version": "0.10.0-2",
4
4
  "description": "Agent SDK",
5
5
  "main": "dist/index.js",
6
6
  "private": false,
@@ -30,6 +30,7 @@
30
30
  "@extrimian/did-registry": "^1.5.0",
31
31
  "@extrimian/did-resolver": "^1.4.1",
32
32
  "@extrimian/dwn-client": "^1.2.0",
33
+ "@extrimian/dwn-client-ami": "^1.0.0",
33
34
  "@extrimian/kms-client": "1.4.0-2",
34
35
  "@extrimian/kms-core": "1.4.0-2",
35
36
  "@extrimian/modena-sdk": "1.3.2",