@extrimian/agent 0.8.7

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.
Files changed (119) hide show
  1. package/dist/agent.d.ts +50 -0
  2. package/dist/agent.js +152 -0
  3. package/dist/agent.js.map +1 -0
  4. package/dist/data-share-behaviours/data-share-behavior.d.ts +4 -0
  5. package/dist/data-share-behaviours/data-share-behavior.js +3 -0
  6. package/dist/data-share-behaviours/data-share-behavior.js.map +1 -0
  7. package/dist/data-share-behaviours/identity-data-share-behavior.d.ts +16 -0
  8. package/dist/data-share-behaviours/identity-data-share-behavior.js +3 -0
  9. package/dist/data-share-behaviours/identity-data-share-behavior.js.map +1 -0
  10. package/dist/data-share-behaviours/identity-plaintext-data-share-behavior.d.ts +5 -0
  11. package/dist/data-share-behaviours/identity-plaintext-data-share-behavior.js +29 -0
  12. package/dist/data-share-behaviours/identity-plaintext-data-share-behavior.js.map +1 -0
  13. package/dist/did/did-services.d.ts +14 -0
  14. package/dist/did/did-services.js +15 -0
  15. package/dist/did/did-services.js.map +1 -0
  16. package/dist/exceptions/agent-plugin-not-found.d.ts +2 -0
  17. package/dist/exceptions/agent-plugin-not-found.js +7 -0
  18. package/dist/exceptions/agent-plugin-not-found.js.map +1 -0
  19. package/dist/exceptions/vc-protocol-not-found.d.ts +3 -0
  20. package/dist/exceptions/vc-protocol-not-found.js +12 -0
  21. package/dist/exceptions/vc-protocol-not-found.js.map +1 -0
  22. package/dist/index.d.ts +24 -0
  23. package/dist/index.js +41 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/messaging/messaging.d.ts +37 -0
  26. package/dist/messaging/messaging.js +96 -0
  27. package/dist/messaging/messaging.js.map +1 -0
  28. package/dist/models/agent-identity.d.ts +81 -0
  29. package/dist/models/agent-identity.js +395 -0
  30. package/dist/models/agent-identity.js.map +1 -0
  31. package/dist/models/agent-pbk.d.ts +11 -0
  32. package/dist/models/agent-pbk.js +12 -0
  33. package/dist/models/agent-pbk.js.map +1 -0
  34. package/dist/models/agent-registry.d.ts +90 -0
  35. package/dist/models/agent-registry.js +142 -0
  36. package/dist/models/agent-registry.js.map +1 -0
  37. package/dist/models/agent-resolver.d.ts +19 -0
  38. package/dist/models/agent-resolver.js +51 -0
  39. package/dist/models/agent-resolver.js.map +1 -0
  40. package/dist/models/agent-secure-storage.d.ts +3 -0
  41. package/dist/models/agent-secure-storage.js +3 -0
  42. package/dist/models/agent-secure-storage.js.map +1 -0
  43. package/dist/models/agent-secure-storages/filesystem-agent-secure-storage.d.ts +14 -0
  44. package/dist/models/agent-secure-storages/filesystem-agent-secure-storage.js +64 -0
  45. package/dist/models/agent-secure-storages/filesystem-agent-secure-storage.js.map +1 -0
  46. package/dist/models/agent-storage.d.ts +9 -0
  47. package/dist/models/agent-storage.js +3 -0
  48. package/dist/models/agent-storage.js.map +1 -0
  49. package/dist/models/did.d.ts +19 -0
  50. package/dist/models/did.js +64 -0
  51. package/dist/models/did.js.map +1 -0
  52. package/dist/models/transports/connectable-transport.d.ts +25 -0
  53. package/dist/models/transports/connectable-transport.js +37 -0
  54. package/dist/models/transports/connectable-transport.js.map +1 -0
  55. package/dist/models/transports/dwn-transport.d.ts +30 -0
  56. package/dist/models/transports/dwn-transport.js +213 -0
  57. package/dist/models/transports/dwn-transport.js.map +1 -0
  58. package/dist/models/transports/messaging-transport.d.ts +3 -0
  59. package/dist/models/transports/messaging-transport.js +3 -0
  60. package/dist/models/transports/messaging-transport.js.map +1 -0
  61. package/dist/models/transports/transport.d.ts +29 -0
  62. package/dist/models/transports/transport.js +8 -0
  63. package/dist/models/transports/transport.js.map +1 -0
  64. package/dist/models/transports/websocket-client-transport.d.ts +5 -0
  65. package/dist/models/transports/websocket-client-transport.js +45 -0
  66. package/dist/models/transports/websocket-client-transport.js.map +1 -0
  67. package/dist/models/transports/websocket-server-transport.d.ts +7 -0
  68. package/dist/models/transports/websocket-server-transport.js +22 -0
  69. package/dist/models/transports/websocket-server-transport.js.map +1 -0
  70. package/dist/models/transports/websocket-transport.d.ts +30 -0
  71. package/dist/models/transports/websocket-transport.js +100 -0
  72. package/dist/models/transports/websocket-transport.js.map +1 -0
  73. package/dist/models/vc-storage.d.ts +8 -0
  74. package/dist/models/vc-storage.js +3 -0
  75. package/dist/models/vc-storage.js.map +1 -0
  76. package/dist/plugins/iplugin.d.ts +17 -0
  77. package/dist/plugins/iplugin.js +3 -0
  78. package/dist/plugins/iplugin.js.map +1 -0
  79. package/dist/plugins/plugin-dispatcher.d.ts +6 -0
  80. package/dist/plugins/plugin-dispatcher.js +31 -0
  81. package/dist/plugins/plugin-dispatcher.js.map +1 -0
  82. package/dist/transport/transport.d.ts +41 -0
  83. package/dist/transport/transport.js +99 -0
  84. package/dist/transport/transport.js.map +1 -0
  85. package/dist/utils/index.d.ts +1 -0
  86. package/dist/utils/index.js +15 -0
  87. package/dist/utils/index.js.map +1 -0
  88. package/dist/utils/lite-event.d.ts +25 -0
  89. package/dist/utils/lite-event.js +33 -0
  90. package/dist/utils/lite-event.js.map +1 -0
  91. package/dist/vc/models/credentia-flow.d.ts +4 -0
  92. package/dist/vc/models/credentia-flow.js +9 -0
  93. package/dist/vc/models/credentia-flow.js.map +1 -0
  94. package/dist/vc/models/credential-request.d.ts +3 -0
  95. package/dist/vc/models/credential-request.js +3 -0
  96. package/dist/vc/models/credential-request.js.map +1 -0
  97. package/dist/vc/models/vc-create-key-request.d.ts +4 -0
  98. package/dist/vc/models/vc-create-key-request.js +3 -0
  99. package/dist/vc/models/vc-create-key-request.js.map +1 -0
  100. package/dist/vc/models/waci-message.d.ts +3 -0
  101. package/dist/vc/models/waci-message.js +8 -0
  102. package/dist/vc/models/waci-message.js.map +1 -0
  103. package/dist/vc/protocols/openid-protocol.d.ts +159 -0
  104. package/dist/vc/protocols/openid-protocol.js +147 -0
  105. package/dist/vc/protocols/openid-protocol.js.map +1 -0
  106. package/dist/vc/protocols/vc-protocol.d.ts +98 -0
  107. package/dist/vc/protocols/vc-protocol.js +37 -0
  108. package/dist/vc/protocols/vc-protocol.js.map +1 -0
  109. package/dist/vc/protocols/waci-protocol.d.ts +144 -0
  110. package/dist/vc/protocols/waci-protocol.js +391 -0
  111. package/dist/vc/protocols/waci-protocol.js.map +1 -0
  112. package/dist/vc/vc-setup/vc-setup.d.ts +0 -0
  113. package/dist/vc/vc-setup/vc-setup.js +1 -0
  114. package/dist/vc/vc-setup/vc-setup.js.map +1 -0
  115. package/dist/vc/vc.d.ts +152 -0
  116. package/dist/vc/vc.js +263 -0
  117. package/dist/vc/vc.js.map +1 -0
  118. package/package.json +50 -0
  119. package/readme.md +392 -0
@@ -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_1 = require("@extrimian/dwn-client");
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
+ constructor(params) {
21
+ this.onMessageArrived = new lite_event_1.LiteEvent();
22
+ this.dwnClientMap = new Map();
23
+ this.dwnPollMilliseconds = (params === null || params === void 0 ? void 0 : params.dwnPollMilliseconds) || 10000;
24
+ }
25
+ get messageArrived() {
26
+ return this.onMessageArrived.expose();
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_1.DWNClient({
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_1.ThreadMethod.Create;
142
+ }
143
+ else {
144
+ msgParams.message.descriptor.method = dwn_client_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=dwn-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dwn-transport.js","sourceRoot":"","sources":["../../../src/models/transports/dwn-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { ITransport } from './transport';
2
+ export interface IMessagingTransport extends ITransport {
3
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=messaging-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging-transport.js","sourceRoot":"","sources":["../../../src/models/transports/messaging-transport.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
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
+ context?: any;
18
+ to: DID;
19
+ }
20
+ export interface MessageArrivedEventArg {
21
+ data: any;
22
+ from: DID;
23
+ context: any;
24
+ }
25
+ export interface ConnectedEventArg {
26
+ did: DID;
27
+ }
28
+ export declare type TransportInstance = new (params: any) => ITransport;
29
+ export declare function GetTransportByInstance(transports: ITransport[], instance: TransportInstance): ITransport;
@@ -0,0 +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;
8
+ //# sourceMappingURL=transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/models/transports/transport.ts"],"names":[],"mappings":";;;AA8BA,SAAgB,sBAAsB,CAAC,UAAwB,EAAE,QAA2B;IACxF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,QAAQ,CAAC,CAAC;AACvD,CAAC;AAFD,wDAEC"}
@@ -0,0 +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
+ }
@@ -0,0 +1,45 @@
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.WebsocketClientTransport = void 0;
13
+ const did_core_1 = require("@extrimian/did-core");
14
+ const socket_io_client_1 = require("socket.io-client");
15
+ const did_1 = require("../did");
16
+ const websocket_transport_1 = require("./websocket-transport");
17
+ class WebsocketClientTransport extends websocket_transport_1.WebsocketTransport {
18
+ send(params) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ const existingSocket = this.connectedSockets.get(params.to.value);
21
+ if (!existingSocket) {
22
+ const resolver = this.agent.resolver;
23
+ const targetDidDocument = yield resolver.resolve(params.to);
24
+ try {
25
+ const websocketUrl = did_core_1.DIDDocumentUtils.getServiceUrl(targetDidDocument, this.wsDidDocumentId)[0];
26
+ const socket = (0, socket_io_client_1.connect)(websocketUrl);
27
+ this.listenToSocket(socket, { did: did_1.DID.from(params.to.value) });
28
+ this.connectedSockets.set(params.to.value, socket);
29
+ }
30
+ catch (ex) {
31
+ throw new Error('Error getting websocket endpoint in did document');
32
+ }
33
+ }
34
+ const socket = this.connectedSockets.get(params.to.value);
35
+ if (!socket)
36
+ throw new Error(`No socket found for DID ${params.to.value}`);
37
+ socket.emit('message', {
38
+ message: params.data,
39
+ did: this.agent.identity.getOperationalDID().value,
40
+ });
41
+ });
42
+ }
43
+ }
44
+ exports.WebsocketClientTransport = WebsocketClientTransport;
45
+ //# sourceMappingURL=websocket-client-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client-transport.js","sourceRoot":"","sources":["../../../src/models/transports/websocket-client-transport.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kDAAuD;AACvD,uDAA2C;AAC3C,gCAA6B;AAE7B,+DAA2D;AAE3D,MAAa,wBAAyB,SAAQ,wCAAkB;IACxD,IAAI,CAAC,MAA4B;;YACrC,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,CAAC,cAAc,EAAE;gBACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACrC,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC5D,IAAI;oBACF,MAAM,YAAY,GAAG,2BAAgB,CAAC,aAAa,CACjD,iBAAiB,EACjB,IAAI,CAAC,eAAe,CACrB,CAAC,CAAC,CAAC,CAAC;oBACL,MAAM,MAAM,GAAG,IAAA,0BAAO,EAAC,YAAY,CAAC,CAAC;oBACrC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAChE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;iBACpD;gBAAC,OAAO,EAAE,EAAE;oBACX,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;iBACrE;aACF;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;gBACrB,OAAO,EAAE,MAAM,CAAC,IAAI;gBACpB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK;aACnD,CAAC,CAAC;QACL,CAAC;KAAA;CACF;AA1BD,4DA0BC"}
@@ -0,0 +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
+ }
@@ -0,0 +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;
22
+ //# sourceMappingURL=websocket-server-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-server-transport.js","sourceRoot":"","sources":["../../../src/models/transports/websocket-server-transport.ts"],"names":[],"mappings":";;;AAEA,+DAA2D;AAE3D,MAAa,wBAAyB,SAAQ,wCAAkB;IAC9D,gBAAgB,CAAC,YAAoB;QACnC,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;YACvC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,MAA4B;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3E,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE;YACrB,OAAO,EAAE,MAAM,CAAC,IAAI;YACpB,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK;SACnD,CAAC,CAAC;IACL,CAAC;CACF;AAfD,4DAeC"}
@@ -0,0 +1,30 @@
1
+ import { Socket as ServerSocket } from 'socket.io';
2
+ import { Socket as ClientSocket } from 'socket.io-client';
3
+ import { Agent } from '../../agent';
4
+ import { ILiteEvent, LiteEvent } from '../../utils/lite-event';
5
+ import { DID } from '../did';
6
+ import { ConnectableTransport } from './connectable-transport';
7
+ import { MessageArrivedEventArg, TransportSendRequest } from './transport';
8
+ declare type GenericSocket = ServerSocket | ClientSocket;
9
+ export declare abstract class WebsocketTransport extends ConnectableTransport {
10
+ protected readonly wsDidDocumentId: string;
11
+ protected agent: Agent;
12
+ protected readonly onMessageArrived: LiteEvent<MessageArrivedEventArg>;
13
+ protected readonly connectedSockets: Map<string, GenericSocket>;
14
+ constructor(wsDidDocumentId?: string);
15
+ get messageArrived(): ILiteEvent<MessageArrivedEventArg>;
16
+ dispose(params?: {
17
+ did: DID;
18
+ }): Promise<void>;
19
+ initialize(params: {
20
+ agent: Agent;
21
+ }): Promise<void>;
22
+ abstract send(params: TransportSendRequest): Promise<void> | void;
23
+ transportSupportedByTarget(params: {
24
+ targetDID: DID;
25
+ }): Promise<boolean>;
26
+ listenToSocket(socket: GenericSocket, params?: {
27
+ did: DID;
28
+ }): void;
29
+ }
30
+ export {};
@@ -0,0 +1,100 @@
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.WebsocketTransport = void 0;
13
+ const did_core_1 = require("@extrimian/did-core");
14
+ const lite_event_1 = require("../../utils/lite-event");
15
+ const did_1 = require("../did");
16
+ const connectable_transport_1 = require("./connectable-transport");
17
+ class WebsocketTransport extends connectable_transport_1.ConnectableTransport {
18
+ constructor(wsDidDocumentId = 'MessagingWebSocket') {
19
+ super();
20
+ this.wsDidDocumentId = wsDidDocumentId;
21
+ this.onMessageArrived = new lite_event_1.LiteEvent();
22
+ this.connectedSockets = new Map();
23
+ }
24
+ get messageArrived() {
25
+ return this.onMessageArrived.expose();
26
+ }
27
+ dispose(params) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ if (params === null || params === void 0 ? void 0 : params.did) {
30
+ const socket = this.connectedSockets.get(params.did.value);
31
+ if (socket) {
32
+ socket.disconnect();
33
+ }
34
+ this.connectedSockets.delete(params.did.value);
35
+ return;
36
+ }
37
+ else {
38
+ for (const socket of this.connectedSockets.values()) {
39
+ socket.disconnect();
40
+ }
41
+ }
42
+ });
43
+ }
44
+ initialize(params) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ this.agent = params.agent;
47
+ this.onMessageArrived.on((data) => __awaiter(this, void 0, void 0, function* () {
48
+ yield this.handleMessage(data, this);
49
+ }));
50
+ });
51
+ }
52
+ transportSupportedByTarget(params) {
53
+ return __awaiter(this, void 0, void 0, function* () {
54
+ const connectedClient = this.connectedSockets.get(params.targetDID.value);
55
+ if (connectedClient)
56
+ return true;
57
+ const resolver = this.agent.resolver;
58
+ const targetDidDocument = yield resolver.resolve(params.targetDID);
59
+ try {
60
+ const websocketUrl = did_core_1.DIDDocumentUtils.getServiceUrl(targetDidDocument, this.wsDidDocumentId)[0];
61
+ return !!websocketUrl;
62
+ }
63
+ catch (_a) {
64
+ return false;
65
+ }
66
+ });
67
+ }
68
+ listenToSocket(socket, params) {
69
+ socket.on('message', (data) => {
70
+ var _a, _b;
71
+ const existingSocket = this.connectedSockets.get(data.did);
72
+ if (!existingSocket) {
73
+ this.connectedSockets.set(data.did, socket);
74
+ }
75
+ this.onMessageArrived.trigger({
76
+ data: ((_a = data.message) === null || _a === void 0 ? void 0 : _a.message)
77
+ ? JSON.parse(data.message.message)
78
+ : data.message,
79
+ from: did_1.DID.from(data.did),
80
+ context: {
81
+ messageManagerCompatible: !!((_b = data.message) === null || _b === void 0 ? void 0 : _b.message),
82
+ },
83
+ });
84
+ });
85
+ socket.on('connect', () => {
86
+ this.handleConnect({ did: params === null || params === void 0 ? void 0 : params.did });
87
+ });
88
+ socket.on('disconnect', () => {
89
+ const socketsByDid = Array.from(this.connectedSockets.entries());
90
+ socketsByDid.forEach(([did, socket]) => {
91
+ if (socket.disconnected) {
92
+ this.handleDisconnect({ did: did_1.DID.from(did) });
93
+ this.connectedSockets.delete(did);
94
+ }
95
+ });
96
+ });
97
+ }
98
+ }
99
+ exports.WebsocketTransport = WebsocketTransport;
100
+ //# sourceMappingURL=websocket-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-transport.js","sourceRoot":"","sources":["../../../src/models/transports/websocket-transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { VerifiableCredential } from "@extrimian/vc-core";
2
+ import { DID } from "./did";
3
+ export interface IVCStorage {
4
+ getAllByDID(did: DID): any;
5
+ save(did: DID, vc: VerifiableCredential): any;
6
+ getById(credentialId: string): any;
7
+ remove(did: DID, credentialId: string): any;
8
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=vc-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vc-storage.js","sourceRoot":"","sources":["../../src/models/vc-storage.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { Agent } from "../agent";
2
+ import { DID } from "../models/did";
3
+ export interface IAgentPlugin {
4
+ canHandle(input: IAgentPluginMessage): Promise<boolean>;
5
+ handle(input: IAgentPluginMessage): Promise<IAgentPluginResponse>;
6
+ initialize(params: {
7
+ agent: Agent;
8
+ }): Promise<void>;
9
+ }
10
+ export interface IAgentPluginResponse {
11
+ to: DID;
12
+ message: any;
13
+ }
14
+ export interface IAgentPluginMessage {
15
+ message: any;
16
+ contextMessage?: any;
17
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=iplugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iplugin.js","sourceRoot":"","sources":["../../src/plugins/iplugin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { IAgentPlugin, IAgentPluginMessage, IAgentPluginResponse } from "./iplugin";
2
+ export declare class PluginDispatcher {
3
+ private plugins;
4
+ constructor(plugins: IAgentPlugin[]);
5
+ dispatch(input: IAgentPluginMessage): Promise<IAgentPluginResponse>;
6
+ }
@@ -0,0 +1,31 @@
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.PluginDispatcher = void 0;
13
+ const agent_plugin_not_found_1 = require("../exceptions/agent-plugin-not-found");
14
+ class PluginDispatcher {
15
+ constructor(plugins) {
16
+ this.plugins = plugins;
17
+ }
18
+ dispatch(input) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ for (const plugin of this.plugins) {
21
+ if (plugin.canHandle(input)) {
22
+ return yield plugin.handle(input);
23
+ }
24
+ }
25
+ // Si llegamos aquí, es porque ningún plugin puede manejar la entrada
26
+ throw new agent_plugin_not_found_1.AgentPluginNotFound('No plugin was found that can handle the input');
27
+ });
28
+ }
29
+ }
30
+ exports.PluginDispatcher = PluginDispatcher;
31
+ //# sourceMappingURL=plugin-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-dispatcher.js","sourceRoot":"","sources":["../../src/plugins/plugin-dispatcher.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,iFAAuG;AAGvG,MAAa,gBAAgB;IAGzB,YAAY,OAAuB;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEY,QAAQ,CAAC,KAA0B;;YAC5C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC/B,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBACzB,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBACrC;aACJ;YAED,qEAAqE;YACrE,MAAM,IAAI,4CAAwB,CAAC,+CAA+C,CAAC,CAAC;QACxF,CAAC;KAAA;CACJ;AAjBD,4CAiBC"}
@@ -0,0 +1,41 @@
1
+ import { Agent } from "../agent";
2
+ import { DID } from "../models/did";
3
+ import { ITransport, MessageArrivedEventArg } from "../models/transports/transport";
4
+ export declare class AgentTransport {
5
+ private cacheStorage;
6
+ private readonly onMessageArrived;
7
+ get messageArrived(): import("../utils/lite-event").ILiteEvent<{
8
+ message: any;
9
+ transport: ITransport;
10
+ contextMessage: any;
11
+ }>;
12
+ private readonly onConnected;
13
+ get connected(): import("../utils/lite-event").ILiteEvent<{
14
+ did: DID;
15
+ }>;
16
+ private readonly onDisconnected;
17
+ get disconnected(): import("../utils/lite-event").ILiteEvent<{
18
+ did: DID;
19
+ }>;
20
+ transports: ITransport[];
21
+ agent: Agent;
22
+ constructor(params: {
23
+ agent: Agent;
24
+ transports?: ITransport[];
25
+ });
26
+ handleConnect(params?: {
27
+ did: DID;
28
+ }): Promise<void>;
29
+ handleDisconnect(params?: {
30
+ did: DID;
31
+ }): Promise<void>;
32
+ handleMessage(params: MessageArrivedEventArg, transport: ITransport): Promise<void>;
33
+ addTransports(transport: ITransport): void;
34
+ getTranportByMessageId(messageId: string): ITransport;
35
+ sendMessage(params: {
36
+ to: DID;
37
+ message: any;
38
+ preferredTransport?: ITransport;
39
+ messageContext?: any;
40
+ }): Promise<void>;
41
+ }