@extrimian/agent 0.12.0-10 → 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.
Files changed (134) hide show
  1. package/dist/agent.d.ts +77 -0
  2. package/dist/agent.js +173 -173
  3. package/dist/agent.js.map +1 -1
  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 +16 -0
  12. package/dist/data-share-behaviours/identity-plaintext-data-share-behavior.js.map +1 -0
  13. package/dist/data-share-behaviours/vcs/vc-share-behavior.d.ts +12 -0
  14. package/dist/data-share-behaviours/vcs/vc-share-behavior.js +3 -0
  15. package/dist/data-share-behaviours/vcs/vc-share-behavior.js.map +1 -0
  16. package/dist/data-share-behaviours/vcs/vc-share-didcomm-behavior.d.ts +20 -0
  17. package/dist/data-share-behaviours/vcs/vc-share-didcomm-behavior.js +30 -0
  18. package/dist/data-share-behaviours/vcs/vc-share-didcomm-behavior.js.map +1 -0
  19. package/dist/did/did-services.d.ts +14 -0
  20. package/dist/did/did-services.js +15 -0
  21. package/dist/did/did-services.js.map +1 -0
  22. package/dist/exceptions/agent-plugin-not-found.d.ts +2 -0
  23. package/dist/exceptions/agent-plugin-not-found.js +7 -0
  24. package/dist/exceptions/agent-plugin-not-found.js.map +1 -0
  25. package/dist/exceptions/vc-protocol-not-found.d.ts +3 -0
  26. package/dist/exceptions/vc-protocol-not-found.js +12 -0
  27. package/dist/exceptions/vc-protocol-not-found.js.map +1 -0
  28. package/dist/index.d.ts +32 -0
  29. package/dist/index.js +60 -60
  30. package/dist/messaging/messaging.d.ts +41 -0
  31. package/dist/messaging/messaging.js +90 -90
  32. package/dist/models/agent-identity.d.ts +86 -0
  33. package/dist/models/agent-identity.js +399 -399
  34. package/dist/models/agent-kms.d.ts +42 -0
  35. package/dist/models/agent-kms.js +79 -0
  36. package/dist/models/agent-kms.js.map +1 -0
  37. package/dist/models/agent-pbk.d.ts +11 -0
  38. package/dist/models/agent-pbk.js +12 -0
  39. package/dist/models/agent-pbk.js.map +1 -0
  40. package/dist/models/agent-registry.d.ts +95 -95
  41. package/dist/models/agent-registry.js +130 -130
  42. package/dist/models/agent-resolver-cache.d.ts +21 -0
  43. package/dist/models/agent-resolver-cache.js +48 -0
  44. package/dist/models/agent-resolver-cache.js.map +1 -0
  45. package/dist/models/agent-resolver.d.ts +19 -0
  46. package/dist/models/agent-resolver.js +34 -0
  47. package/dist/models/agent-resolver.js.map +1 -0
  48. package/dist/models/agent-secure-storage.d.ts +3 -0
  49. package/dist/models/agent-secure-storage.js +3 -0
  50. package/dist/models/agent-secure-storage.js.map +1 -0
  51. package/dist/models/agent-secure-storages/filesystem-agent-secure-storage.d.ts +14 -0
  52. package/dist/models/agent-secure-storages/filesystem-agent-secure-storage.js +49 -0
  53. package/dist/models/agent-secure-storages/filesystem-agent-secure-storage.js.map +1 -0
  54. package/dist/models/agent-storage.d.ts +9 -0
  55. package/dist/models/agent-storage.js +3 -0
  56. package/dist/models/agent-storage.js.map +1 -0
  57. package/dist/models/did.d.ts +19 -0
  58. package/dist/models/did.js +64 -0
  59. package/dist/models/did.js.map +1 -0
  60. package/dist/models/transports/ami-transport.d.ts +30 -0
  61. package/dist/models/transports/ami-transport.js +184 -0
  62. package/dist/models/transports/ami-transport.js.map +1 -0
  63. package/dist/models/transports/connectable-transport.d.ts +25 -0
  64. package/dist/models/transports/connectable-transport.js +26 -0
  65. package/dist/models/transports/connectable-transport.js.map +1 -0
  66. package/dist/models/transports/dwn-transport.d.ts +32 -0
  67. package/dist/models/transports/dwn-transport.js +192 -0
  68. package/dist/models/transports/dwn-transport.js.map +1 -0
  69. package/dist/models/transports/messaging-transport.d.ts +3 -0
  70. package/dist/models/transports/messaging-transport.js +3 -0
  71. package/dist/models/transports/messaging-transport.js.map +1 -0
  72. package/dist/models/transports/transport.d.ts +30 -0
  73. package/dist/models/transports/transport.js +8 -0
  74. package/dist/models/transports/transport.js.map +1 -0
  75. package/dist/models/transports/websocket-client-transport.d.ts +5 -0
  76. package/dist/models/transports/websocket-client-transport.js +34 -0
  77. package/dist/models/transports/websocket-client-transport.js.map +1 -0
  78. package/dist/models/transports/websocket-server-transport.d.ts +7 -0
  79. package/dist/models/transports/websocket-server-transport.js +22 -0
  80. package/dist/models/transports/websocket-server-transport.js.map +1 -0
  81. package/dist/models/transports/websocket-transport.d.ts +30 -0
  82. package/dist/models/transports/websocket-transport.js +85 -0
  83. package/dist/models/transports/websocket-transport.js.map +1 -0
  84. package/dist/models/vc-storage.d.ts +8 -0
  85. package/dist/models/vc-storage.js +3 -0
  86. package/dist/models/vc-storage.js.map +1 -0
  87. package/dist/plugins/iplugin.d.ts +17 -0
  88. package/dist/plugins/iplugin.js +3 -0
  89. package/dist/plugins/iplugin.js.map +1 -0
  90. package/dist/plugins/istatus-list-plugin.d.ts +14 -0
  91. package/dist/plugins/istatus-list-plugin.js +3 -0
  92. package/dist/plugins/istatus-list-plugin.js.map +1 -0
  93. package/dist/plugins/ivc-interceptor-plugin.d.ts +9 -0
  94. package/dist/plugins/ivc-interceptor-plugin.js +3 -0
  95. package/dist/plugins/ivc-interceptor-plugin.js.map +1 -0
  96. package/dist/plugins/plugin-dispatcher.d.ts +6 -0
  97. package/dist/plugins/plugin-dispatcher.js +20 -0
  98. package/dist/plugins/plugin-dispatcher.js.map +1 -0
  99. package/dist/transport/transport.d.ts +43 -0
  100. package/dist/transport/transport.js +110 -0
  101. package/dist/transport/transport.js.map +1 -0
  102. package/dist/utils/index.d.ts +1 -0
  103. package/dist/utils/index.js +15 -0
  104. package/dist/utils/index.js.map +1 -0
  105. package/dist/utils/lite-event.d.ts +25 -0
  106. package/dist/utils/lite-event.js +37 -0
  107. package/dist/utils/lite-event.js.map +1 -0
  108. package/dist/vc/models/credentia-flow.d.ts +4 -0
  109. package/dist/vc/models/credentia-flow.js +9 -0
  110. package/dist/vc/models/credentia-flow.js.map +1 -0
  111. package/dist/vc/models/credential-request.d.ts +3 -0
  112. package/dist/vc/models/credential-request.js +3 -0
  113. package/dist/vc/models/credential-request.js.map +1 -0
  114. package/dist/vc/models/vc-create-key-request.d.ts +4 -0
  115. package/dist/vc/models/vc-create-key-request.js +3 -0
  116. package/dist/vc/models/vc-create-key-request.js.map +1 -0
  117. package/dist/vc/models/waci-message.d.ts +3 -0
  118. package/dist/vc/models/waci-message.js +8 -0
  119. package/dist/vc/models/waci-message.js.map +1 -0
  120. package/dist/vc/protocols/openid-protocol.d.ts +161 -0
  121. package/dist/vc/protocols/openid-protocol.js +126 -0
  122. package/dist/vc/protocols/openid-protocol.js.map +1 -0
  123. package/dist/vc/protocols/vc-protocol.d.ts +106 -0
  124. package/dist/vc/protocols/vc-protocol.js +37 -0
  125. package/dist/vc/protocols/vc-protocol.js.map +1 -0
  126. package/dist/vc/protocols/waci-protocol.d.ts +183 -0
  127. package/dist/vc/protocols/waci-protocol.js +553 -0
  128. package/dist/vc/protocols/waci-protocol.js.map +1 -0
  129. package/dist/vc/vc-setup/vc-setup.js +1 -0
  130. package/dist/vc/vc-setup/vc-setup.js.map +1 -0
  131. package/dist/vc/vc.d.ts +225 -0
  132. package/dist/vc/vc.js +328 -328
  133. package/package.json +19 -20
  134. package/readme.md +392 -392
@@ -0,0 +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
+ };
192
+ //# 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,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;
@@ -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":";;;AA+BA,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,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;
34
+ //# 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;IAC9D,KAAK,CAAC,IAAI,CAAC,MAA4B;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,CAAC,cAAc,EAAE;YACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACrC,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI;gBACF,MAAM,YAAY,GAAG,2BAAgB,CAAC,aAAa,CACjD,iBAAiB,EACjB,IAAI,CAAC,eAAe,CACrB,CAAC,CAAC,CAAC,CAAC;gBACL,MAAM,MAAM,GAAG,IAAA,0BAAO,EAAC,YAAY,CAAC,CAAC;gBACrC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,SAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;aACpD;YAAC,OAAO,EAAE,EAAE;gBACX,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;aACrE;SACF;QAED,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;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
+ 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,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebsocketTransport = void 0;
4
+ const did_core_1 = require("@extrimian/did-core");
5
+ const lite_event_1 = require("../../utils/lite-event");
6
+ const did_1 = require("../did");
7
+ const connectable_transport_1 = require("./connectable-transport");
8
+ class WebsocketTransport extends connectable_transport_1.ConnectableTransport {
9
+ constructor(wsDidDocumentId = 'MessagingWebSocket') {
10
+ super();
11
+ this.wsDidDocumentId = wsDidDocumentId;
12
+ this.onMessageArrived = new lite_event_1.LiteEvent();
13
+ this.connectedSockets = new Map();
14
+ }
15
+ get messageArrived() {
16
+ return this.onMessageArrived.expose();
17
+ }
18
+ async dispose(params) {
19
+ if (params === null || params === void 0 ? void 0 : params.did) {
20
+ const socket = this.connectedSockets.get(params.did.value);
21
+ if (socket) {
22
+ socket.disconnect();
23
+ }
24
+ this.connectedSockets.delete(params.did.value);
25
+ return;
26
+ }
27
+ else {
28
+ for (const socket of this.connectedSockets.values()) {
29
+ socket.disconnect();
30
+ }
31
+ }
32
+ }
33
+ async initialize(params) {
34
+ this.agent = params.agent;
35
+ this.onMessageArrived.on(async (data) => {
36
+ await this.handleMessage(data, this);
37
+ });
38
+ }
39
+ async transportSupportedByTarget(params) {
40
+ const connectedClient = this.connectedSockets.get(params.targetDID.value);
41
+ if (connectedClient)
42
+ return true;
43
+ const resolver = this.agent.resolver;
44
+ const targetDidDocument = await resolver.resolve(params.targetDID);
45
+ try {
46
+ const websocketUrl = did_core_1.DIDDocumentUtils.getServiceUrl(targetDidDocument, this.wsDidDocumentId)[0];
47
+ return !!websocketUrl;
48
+ }
49
+ catch {
50
+ return false;
51
+ }
52
+ }
53
+ listenToSocket(socket, params) {
54
+ socket.on('message', (data) => {
55
+ var _a, _b;
56
+ const existingSocket = this.connectedSockets.get(data.did);
57
+ if (!existingSocket) {
58
+ this.connectedSockets.set(data.did, socket);
59
+ }
60
+ this.onMessageArrived.trigger({
61
+ data: ((_a = data.message) === null || _a === void 0 ? void 0 : _a.message)
62
+ ? JSON.parse(data.message.message)
63
+ : data.message,
64
+ from: did_1.DID.from(data.did),
65
+ context: {
66
+ messageManagerCompatible: !!((_b = data.message) === null || _b === void 0 ? void 0 : _b.message),
67
+ },
68
+ });
69
+ });
70
+ socket.on('connect', () => {
71
+ this.handleConnect({ did: params === null || params === void 0 ? void 0 : params.did });
72
+ });
73
+ socket.on('disconnect', () => {
74
+ const socketsByDid = Array.from(this.connectedSockets.entries());
75
+ socketsByDid.forEach(([did, socket]) => {
76
+ if (socket.disconnected) {
77
+ this.handleDisconnect({ did: did_1.DID.from(did) });
78
+ this.connectedSockets.delete(did);
79
+ }
80
+ });
81
+ });
82
+ }
83
+ }
84
+ exports.WebsocketTransport = WebsocketTransport;
85
+ //# 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,14 @@
1
+ import { VerifiableCredential } from "@extrimian/vc-core";
2
+ import { Agent } from "../agent";
3
+ import { DID } from "../models/did";
4
+ export interface IStatusListAgentPlugin {
5
+ canHandle(input: IStatusListPluginMessage): Promise<boolean>;
6
+ handle(input: IStatusListPluginMessage): Promise<void>;
7
+ initialize(params: {
8
+ agent: Agent;
9
+ }): Promise<void>;
10
+ }
11
+ export interface IStatusListPluginMessage {
12
+ vc: VerifiableCredential;
13
+ issuerDID: DID;
14
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=istatus-list-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"istatus-list-plugin.js","sourceRoot":"","sources":["../../src/plugins/istatus-list-plugin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { Agent } from "../agent";
2
+ /**
3
+ * Interfaz para los plugins de interceptación del flujo de credenciales verificables (VC).
4
+ */
5
+ export interface AgentPluginBase {
6
+ initialize(params: {
7
+ agent: Agent;
8
+ }): Promise<void>;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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":""}
@@ -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,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PluginDispatcher = void 0;
4
+ const agent_plugin_not_found_1 = require("../exceptions/agent-plugin-not-found");
5
+ class PluginDispatcher {
6
+ constructor(plugins) {
7
+ this.plugins = plugins;
8
+ }
9
+ async dispatch(input) {
10
+ for (const plugin of this.plugins) {
11
+ if (plugin.canHandle(input)) {
12
+ return await plugin.handle(input);
13
+ }
14
+ }
15
+ // Si llegamos aquí, es porque ningún plugin puede manejar la entrada
16
+ throw new agent_plugin_not_found_1.AgentPluginNotFound('No plugin was found that can handle the input');
17
+ }
18
+ }
19
+ exports.PluginDispatcher = PluginDispatcher;
20
+ //# 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;IAEM,KAAK,CAAC,QAAQ,CAAC,KAA0B;QAC5C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACzB,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACrC;SACJ;QAED,qEAAqE;QACrE,MAAM,IAAI,4CAAwB,CAAC,+CAA+C,CAAC,CAAC;IACxF,CAAC;CACJ;AAjBD,4CAiBC"}
@@ -0,0 +1,43 @@
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
+ from?: DID;
38
+ message: any;
39
+ preferredTransport?: ITransport;
40
+ messageContext?: any;
41
+ }): Promise<void>;
42
+ private sendMessageUsingTransport;
43
+ }