@docknetwork/wallet-sdk-core 0.4.19

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 (97) hide show
  1. package/LICENSE +39 -0
  2. package/babel.config.js +16 -0
  3. package/jest.config.ts +39 -0
  4. package/lib/account-provider.d.ts +8 -0
  5. package/lib/account-provider.d.ts.map +1 -0
  6. package/lib/account-provider.js +15 -0
  7. package/lib/account-provider.js.map +1 -0
  8. package/lib/biometric-provider.d.ts +29 -0
  9. package/lib/biometric-provider.d.ts.map +1 -0
  10. package/lib/biometric-provider.js +54 -0
  11. package/lib/biometric-provider.js.map +1 -0
  12. package/lib/credential-provider.d.ts +58 -0
  13. package/lib/credential-provider.d.ts.map +1 -0
  14. package/lib/credential-provider.js +198 -0
  15. package/lib/credential-provider.js.map +1 -0
  16. package/lib/did-provider.d.ts +79 -0
  17. package/lib/did-provider.d.ts.map +1 -0
  18. package/lib/did-provider.js +215 -0
  19. package/lib/did-provider.js.map +1 -0
  20. package/lib/ecosystem-tools.d.ts +11 -0
  21. package/lib/ecosystem-tools.d.ts.map +1 -0
  22. package/lib/ecosystem-tools.js +33 -0
  23. package/lib/ecosystem-tools.js.map +1 -0
  24. package/lib/helpers.d.ts +8 -0
  25. package/lib/helpers.d.ts.map +1 -0
  26. package/lib/helpers.js +63 -0
  27. package/lib/helpers.js.map +1 -0
  28. package/lib/message-provider.d.ts +36 -0
  29. package/lib/message-provider.d.ts.map +1 -0
  30. package/lib/message-provider.js +172 -0
  31. package/lib/message-provider.js.map +1 -0
  32. package/lib/messages/message-helpers.d.ts +110 -0
  33. package/lib/messages/message-helpers.d.ts.map +1 -0
  34. package/lib/messages/message-helpers.js +106 -0
  35. package/lib/messages/message-helpers.js.map +1 -0
  36. package/lib/network-resolver.d.ts +19 -0
  37. package/lib/network-resolver.d.ts.map +1 -0
  38. package/lib/network-resolver.js +80 -0
  39. package/lib/network-resolver.js.map +1 -0
  40. package/lib/types.d.ts +63 -0
  41. package/lib/types.d.ts.map +1 -0
  42. package/lib/types.js +3 -0
  43. package/lib/types.js.map +1 -0
  44. package/lib/v1-helpers.d.ts +20 -0
  45. package/lib/v1-helpers.d.ts.map +1 -0
  46. package/lib/v1-helpers.js +147 -0
  47. package/lib/v1-helpers.js.map +1 -0
  48. package/lib/verification-controller.d.ts +48 -0
  49. package/lib/verification-controller.d.ts.map +1 -0
  50. package/lib/verification-controller.js +219 -0
  51. package/lib/verification-controller.js.map +1 -0
  52. package/lib/wallet-to-wallet-verification/walletToWalletVerificationProvider.d.ts +20 -0
  53. package/lib/wallet-to-wallet-verification/walletToWalletVerificationProvider.d.ts.map +1 -0
  54. package/lib/wallet-to-wallet-verification/walletToWalletVerificationProvider.js +140 -0
  55. package/lib/wallet-to-wallet-verification/walletToWalletVerificationProvider.js.map +1 -0
  56. package/lib/wallet-wasm.d.ts +10 -0
  57. package/lib/wallet-wasm.d.ts.map +1 -0
  58. package/lib/wallet-wasm.js +62 -0
  59. package/lib/wallet-wasm.js.map +1 -0
  60. package/lib/wallet.d.ts +11 -0
  61. package/lib/wallet.d.ts.map +1 -0
  62. package/lib/wallet.js +173 -0
  63. package/lib/wallet.js.map +1 -0
  64. package/package.json +34 -0
  65. package/setup-tests.ts +1 -0
  66. package/src/account-provider.ts +18 -0
  67. package/src/biometric-provider.ts +82 -0
  68. package/src/credential-provider.test.ts +164 -0
  69. package/src/credential-provider.ts +272 -0
  70. package/src/did-provider.test.ts +203 -0
  71. package/src/did-provider.ts +263 -0
  72. package/src/ecosystem-tools.ts +37 -0
  73. package/src/fixtures/any-credential-proof-request.json +30 -0
  74. package/src/fixtures/biometrics-credential-bbs-revocation.json +62 -0
  75. package/src/fixtures/customer-credential.json +39 -0
  76. package/src/fixtures/iiw-credential.json +59 -0
  77. package/src/fixtures/iiw-template.json +33 -0
  78. package/src/fixtures/university-degree-bbs.json +57 -0
  79. package/src/fixtures/university-degree-proof-request.json +32 -0
  80. package/src/helpers.ts +61 -0
  81. package/src/message-provider.test.ts +115 -0
  82. package/src/message-provider.ts +221 -0
  83. package/src/messages/message-helpers.ts +125 -0
  84. package/src/messages/relay-service-mocks/demo-app-messages.json +450 -0
  85. package/src/network-resolver.test.ts +142 -0
  86. package/src/network-resolver.ts +122 -0
  87. package/src/types.ts +75 -0
  88. package/src/v1-helpers.ts +160 -0
  89. package/src/verification-controller.test.ts +149 -0
  90. package/src/verification-controller.ts +276 -0
  91. package/src/wallet-to-wallet-verification/walletToWalletVerificationProvider.ts +216 -0
  92. package/src/wallet-wasm.ts +74 -0
  93. package/src/wallet.test.ts +72 -0
  94. package/src/wallet.ts +211 -0
  95. package/tsconfig.build.json +26 -0
  96. package/tsconfig.build.tsbuildinfo +1 -0
  97. package/tsconfig.json +30 -0
@@ -0,0 +1,215 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createDIDProvider = exports.ensureDID = exports.getDIDKeyPairs = exports.getDefaultDID = exports.getAll = exports.createDIDKey = exports.createDIDKeyDocument = exports.createDIDock = exports.importDID = void 0;
7
+ const index_1 = require("@docknetwork/wallet-sdk-wasm/src/services/dids/index");
8
+ const assert_1 = __importDefault(require("assert"));
9
+ async function importDID({ wallet, encryptedJSONWallet, password, }) {
10
+ try {
11
+ const rawDocs = await wallet.getDocumentsFromEncryptedWallet(encryptedJSONWallet, password);
12
+ // TODO: Will implement a network check for did:dock here, there is a jira for it already
13
+ const docs = rawDocs.map(rawDoc => {
14
+ if (Array.isArray(rawDoc.type) && rawDoc.type.length > 0) {
15
+ return {
16
+ ...rawDoc,
17
+ type: rawDoc.type[0],
18
+ };
19
+ }
20
+ return rawDoc;
21
+ });
22
+ for (const doc of docs) {
23
+ const existingDocs = await wallet.query({
24
+ id: doc.id,
25
+ });
26
+ if (existingDocs.length === 0) {
27
+ await wallet.addDocument(doc);
28
+ }
29
+ else if (existingDocs.length > 0 &&
30
+ existingDocs[0].type === 'DIDResolutionResponse') {
31
+ throw new Error('DID already exists in wallet');
32
+ }
33
+ }
34
+ return docs;
35
+ }
36
+ catch (e) {
37
+ switch (e.message) {
38
+ case 'No matching recipient found for key agreement key.':
39
+ throw new Error('Incorrect password');
40
+ default:
41
+ throw e;
42
+ }
43
+ }
44
+ }
45
+ exports.importDID = importDID;
46
+ async function createDIDock({ wallet, address, name }) {
47
+ (0, assert_1.default)(!!wallet, 'wallet is required');
48
+ (0, assert_1.default)(!!address, 'address is required');
49
+ (0, assert_1.default)(!!name, 'name is required');
50
+ const keyPair = await wallet.getAccountKeyPair(address);
51
+ const { dockDID, keyPairWalletId } = await index_1.didServiceRPC.registerDidDock(keyPair);
52
+ const keydoc = await index_1.didServiceRPC.generateKeyDoc({
53
+ keyPairJSON: keyPair,
54
+ controller: dockDID,
55
+ });
56
+ const didDocument = await index_1.didServiceRPC.getDidDockDocument(dockDID);
57
+ const dockDIDResolution = {
58
+ id: dockDID,
59
+ type: 'DIDResolutionResponse',
60
+ name,
61
+ didDocument,
62
+ correlation: [keydoc.id, keyPairWalletId],
63
+ };
64
+ await wallet.add(keydoc);
65
+ await wallet.add(dockDIDResolution);
66
+ }
67
+ exports.createDIDock = createDIDock;
68
+ async function editDID({ wallet, id, name }) {
69
+ if (typeof id === 'string' && id.length > 0) {
70
+ const docs = await wallet.query({
71
+ id,
72
+ });
73
+ if (docs.length === 1) {
74
+ const doc = docs[0];
75
+ await wallet.update({
76
+ ...doc,
77
+ name,
78
+ });
79
+ }
80
+ }
81
+ else {
82
+ throw new Error('Document ID is not set');
83
+ }
84
+ }
85
+ ;
86
+ async function deleteDID({ wallet, id }) {
87
+ if (typeof id === 'string' && id.length > 0) {
88
+ return await wallet.remove(id);
89
+ }
90
+ else {
91
+ throw Error('Document ID is not set');
92
+ }
93
+ }
94
+ async function exportDID({ wallet, id, password }) {
95
+ const existingDoc = await wallet.getDocumentById(id);
96
+ if (existingDoc) {
97
+ const allCorrelationDocuments = (await wallet.resolveCorrelations(id)).filter(doc => doc && doc?.id !== existingDoc.id);
98
+ const documentsToExport = [existingDoc, ...allCorrelationDocuments];
99
+ if (allCorrelationDocuments.length >= 1) {
100
+ return wallet.exportDocuments({
101
+ documents: documentsToExport,
102
+ password,
103
+ });
104
+ }
105
+ throw new Error('DID KeyPair not found');
106
+ }
107
+ throw new Error('DID Document not found');
108
+ }
109
+ const createDIDKeyDocument = async (keypairDoc, didDocParams = {}) => {
110
+ const keypairDocCorrelations = Array.isArray(keypairDoc.correlation)
111
+ ? keypairDoc.correlation
112
+ : [];
113
+ const { didDocument } = await index_1.didServiceRPC.keypairToDIDKeyDocument({
114
+ keypairDoc: keypairDoc,
115
+ });
116
+ const didDocumentResolution = await index_1.didServiceRPC.getDIDResolution({
117
+ didDocumentCustomProp: didDocParams,
118
+ didDocument,
119
+ });
120
+ didDocumentResolution.correlation.push(keypairDoc.id);
121
+ keypairDocCorrelations.push(didDocumentResolution.id);
122
+ return {
123
+ didDocumentResolution,
124
+ keypairDoc,
125
+ };
126
+ };
127
+ exports.createDIDKeyDocument = createDIDKeyDocument;
128
+ async function createDIDKey({ wallet, name, derivePath = undefined, type = undefined }) {
129
+ (0, assert_1.default)(!!wallet, 'wallet is required');
130
+ (0, assert_1.default)(!!name, 'name is required');
131
+ const keyDoc = await index_1.didServiceRPC.generateKeyDoc({ derivePath, type });
132
+ const { didDocumentResolution } = await (0, exports.createDIDKeyDocument)(keyDoc, {
133
+ name,
134
+ });
135
+ await wallet.add(keyDoc);
136
+ await wallet.add(didDocumentResolution);
137
+ return {
138
+ keyDoc,
139
+ didDocumentResolution,
140
+ };
141
+ }
142
+ exports.createDIDKey = createDIDKey;
143
+ /**
144
+ * Get DIDs list
145
+ *
146
+ * @param param0
147
+ * @returns
148
+ */
149
+ async function getAll({ wallet }) {
150
+ (0, assert_1.default)(!!wallet, 'wallet is required');
151
+ const dids = await wallet.getDocumentsByType('DIDResolutionResponse');
152
+ return dids;
153
+ }
154
+ exports.getAll = getAll;
155
+ async function getDefaultDID({ wallet }) {
156
+ (0, assert_1.default)(!!wallet, 'wallet is required');
157
+ const allDids = await getAll({ wallet });
158
+ return allDids[0]?.didDocument.id;
159
+ }
160
+ exports.getDefaultDID = getDefaultDID;
161
+ async function getDIDKeyPairs({ wallet }) {
162
+ (0, assert_1.default)(!!wallet, 'wallet is required');
163
+ const didDocs = await getAll({ wallet });
164
+ const keyPairs = [];
165
+ for (const didDoc of didDocs) {
166
+ const keyPair = await wallet.getDocumentById(didDoc.correlation[0]);
167
+ keyPairs.push(keyPair);
168
+ }
169
+ return keyPairs;
170
+ }
171
+ exports.getDIDKeyPairs = getDIDKeyPairs;
172
+ async function ensureDID({ wallet }) {
173
+ (0, assert_1.default)(!!wallet, 'wallet is required');
174
+ const dids = await getAll({ wallet });
175
+ if (dids.length === 0) {
176
+ return createDIDKey({ wallet, name: 'Default DID' });
177
+ }
178
+ }
179
+ exports.ensureDID = ensureDID;
180
+ function createDIDProvider({ wallet }) {
181
+ return {
182
+ async importDID({ encryptedJSONWallet, password }) {
183
+ return importDID({ wallet, encryptedJSONWallet, password });
184
+ },
185
+ async createDIDock({ address, name }) {
186
+ return createDIDock({ wallet, address, name });
187
+ },
188
+ async createDIDKey({ name, derivePath, type }) {
189
+ return createDIDKey({ wallet, name, derivePath, type });
190
+ },
191
+ async editDID(params) {
192
+ return editDID({ wallet, ...params });
193
+ },
194
+ async deleteDID(params) {
195
+ return deleteDID({ wallet, ...params });
196
+ },
197
+ async exportDID(params) {
198
+ return exportDID({ wallet, ...params });
199
+ },
200
+ async getAll() {
201
+ return getAll({ wallet });
202
+ },
203
+ async getDIDKeyPairs() {
204
+ return getDIDKeyPairs({ wallet });
205
+ },
206
+ async ensureDID() {
207
+ return ensureDID({ wallet });
208
+ },
209
+ async getDefaultDID() {
210
+ return getDefaultDID({ wallet });
211
+ }
212
+ };
213
+ }
214
+ exports.createDIDProvider = createDIDProvider;
215
+ //# sourceMappingURL=did-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"did-provider.js","sourceRoot":"","sources":["../src/did-provider.ts"],"names":[],"mappings":";;;;;;AACA,gFAAmF;AACnF,oDAA4B;AAErB,KAAK,UAAU,SAAS,CAAC,EAC9B,MAAM,EACN,mBAAmB,EACnB,QAAQ,GAKT;IACC,IAAI;QACF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAC1D,mBAAmB,EACnB,QAAQ,CACT,CAAC;QAEF,yFAAyF;QAEzF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAChC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxD,OAAO;oBACL,GAAG,MAAM;oBACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;iBACrB,CAAC;aACH;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;gBACtC,EAAE,EAAE,GAAG,CAAC,EAAE;aACX,CAAC,CAAC;YAEH,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7B,MAAM,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;aAC/B;iBAAM,IACL,YAAY,CAAC,MAAM,GAAG,CAAC;gBACvB,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,uBAAuB,EAChD;gBACA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;aACjD;SACF;QACD,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,CAAC,EAAE;QACV,QAAQ,CAAC,CAAC,OAAO,EAAE;YACjB,KAAK,oDAAoD;gBACvD,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACxC;gBACE,MAAM,CAAC,CAAC;SACX;KACF;AACH,CAAC;AAlDD,8BAkDC;AAEM,KAAK,UAAU,YAAY,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC;IACxD,IAAA,gBAAM,EAAC,CAAC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACvC,IAAA,gBAAM,EAAC,CAAC,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IACzC,IAAA,gBAAM,EAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAEnC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,EAAC,OAAO,EAAE,eAAe,EAAC,GAAG,MAAM,qBAAa,CAAC,eAAe,CACpE,OAAO,CACR,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,qBAAa,CAAC,cAAc,CAAC;QAChD,WAAW,EAAE,OAAO;QACpB,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,qBAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAEpE,MAAM,iBAAiB,GAAG;QACxB,EAAE,EAAE,OAAO;QACX,IAAI,EAAE,uBAAuB;QAC7B,IAAI;QACJ,WAAW;QACX,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC;KAC1C,CAAC;IAEF,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;AACtC,CAAC;AA3BD,oCA2BC;AAED,KAAK,UAAU,OAAO,CAAC,EAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAC;IACvC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAC9B,EAAE;SACH,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,MAAM,CAAC,MAAM,CAAC;gBAClB,GAAG,GAAG;gBACN,IAAI;aACL,CAAC,CAAC;SACJ;KACF;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;KAC3C;AACH,CAAC;AAAA,CAAC;AAEF,KAAK,UAAU,SAAS,CAAC,EAAC,MAAM,EAAE,EAAE,EAAC;IACnC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3C,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;KAChC;SAAM;QACL,MAAM,KAAK,CAAC,wBAAwB,CAAC,CAAC;KACvC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,EAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE;IAC9C,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACrD,IAAI,WAAW,EAAE;QACf,MAAM,uBAAuB,GAAG,CAC9B,MAAM,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CACrC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,EAAE,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;QACnD,MAAM,iBAAiB,GAAG,CAAC,WAAW,EAAE,GAAG,uBAAuB,CAAC,CAAC;QAEpE,IAAI,uBAAuB,CAAC,MAAM,IAAI,CAAC,EAAE;YACvC,OAAO,MAAM,CAAC,eAAe,CAAC;gBAC5B,SAAS,EAAE,iBAAiB;gBAC5B,QAAQ;aACT,CAAC,CAAC;SACJ;QACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;KAC1C;IAED,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC5C,CAAC;AAEM,MAAM,oBAAoB,GAAG,KAAK,EACvC,UAAe,EACf,eAAoB,EAAE,EACtB,EAAE;IACF,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;QAClE,CAAC,CAAC,UAAU,CAAC,WAAW;QACxB,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,EAAC,WAAW,EAAC,GAAG,MAAM,qBAAa,CAAC,uBAAuB,CAAC;QAChE,UAAU,EAAE,UAAU;KACvB,CAAC,CAAC;IAEH,MAAM,qBAAqB,GAAG,MAAM,qBAAa,CAAC,gBAAgB,CAAC;QACjE,qBAAqB,EAAE,YAAY;QACnC,WAAW;KACL,CAAC,CAAC;IAEV,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAEtD,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAEtD,OAAO;QACL,qBAAqB;QACrB,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAzBW,QAAA,oBAAoB,wBAyB/B;AAEK,KAAK,UAAU,YAAY,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,UAAU,GAAC,SAAS,EAAE,IAAI,GAAC,SAAS,EAAC;IACrF,IAAA,gBAAM,EAAC,CAAC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACvC,IAAA,gBAAM,EAAC,CAAC,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAEnC,MAAM,MAAM,GAAG,MAAM,qBAAa,CAAC,cAAc,CAAC,EAAC,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;IAEtE,MAAM,EAAC,qBAAqB,EAAC,GAAG,MAAM,IAAA,4BAAoB,EAAC,MAAM,EAAE;QACjE,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,MAAM,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAExC,OAAO;QACL,MAAM;QACN,qBAAqB;KACtB,CAAC;AACJ,CAAC;AAjBD,oCAiBC;AAED;;;;;GAKG;AACI,KAAK,UAAU,MAAM,CAAC,EAAC,MAAM,EAAC;IACnC,IAAA,gBAAM,EAAC,CAAC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAJD,wBAIC;AAEM,KAAK,UAAU,aAAa,CAAC,EAAC,MAAM,EAAC;IAC1C,IAAA,gBAAM,EAAC,CAAC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;AACpC,CAAC;AAJD,sCAIC;AAEM,KAAK,UAAU,cAAc,CAAC,EAAC,MAAM,EAAC;IAC3C,IAAA,gBAAM,EAAC,CAAC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;QAC5B,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACxB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AATD,wCASC;AAEM,KAAK,UAAU,SAAS,CAAC,EAAC,MAAM,EAAC;IACtC,IAAA,gBAAM,EAAC,CAAC,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;IACpC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACrB,OAAO,YAAY,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,aAAa,EAAC,CAAC,CAAC;KACpD;AACH,CAAC;AAND,8BAMC;AAkBD,SAAgB,iBAAiB,CAAC,EAAC,MAAM,EAAC;IACxC,OAAO;QACL,KAAK,CAAC,SAAS,CAAC,EAAC,mBAAmB,EAAE,QAAQ,EAAC;YAC7C,OAAO,SAAS,CAAC,EAAC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,EAAC,CAAC,CAAC;QAC5D,CAAC;QACD,KAAK,CAAC,YAAY,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC;YAChC,OAAO,YAAY,CAAC,EAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,CAAC,YAAY,CAAC,EAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAC;YACzC,OAAO,YAAY,CAAC,EAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAC,CAAC,CAAC;QACxD,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,MAAM;YAClB,OAAO,OAAO,CAAC,EAAC,MAAM,EAAE,GAAG,MAAM,EAAC,CAAC,CAAC;QACtC,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,MAAM;YACpB,OAAO,SAAS,CAAC,EAAC,MAAM,EAAE,GAAG,MAAM,EAAC,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,CAAC,SAAS,CAAC,MAAM;YACpB,OAAO,SAAS,CAAC,EAAC,MAAM,EAAE,GAAG,MAAM,EAAC,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,CAAC,MAAM;YACV,OAAO,MAAM,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,cAAc;YAClB,OAAO,cAAc,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAClC,CAAC;QACD,KAAK,CAAC,SAAS;YACb,OAAO,SAAS,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,aAAa;YACjB,OAAO,aAAa,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QACjC,CAAC;KACF,CAAC;AACJ,CAAC;AAjCD,8CAiCC"}
@@ -0,0 +1,11 @@
1
+ export declare function getEcosystems({ issuerDID, verifierDID, schemaId, }: {
2
+ issuerDID?: string;
3
+ verifierDID?: string;
4
+ schemaId?: string;
5
+ }): Promise<any>;
6
+ export declare function getVerifiers({ trustRegistryId, issuerDID, schemaId }: {
7
+ trustRegistryId: any;
8
+ issuerDID: any;
9
+ schemaId: any;
10
+ }): Promise<any>;
11
+ //# sourceMappingURL=ecosystem-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecosystem-tools.d.ts","sourceRoot":"","sources":["../src/ecosystem-tools.ts"],"names":[],"mappings":"AAGA,wBAAsB,aAAa,CAAC,EAClC,SAAS,EACT,WAAW,EACX,QAAQ,GACT,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,gBASA;AAED,wBAAsB,YAAY,CAAC,EAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAC;;;;CAAA,gBAcxE"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getVerifiers = exports.getEcosystems = void 0;
4
+ const dock_1 = require("@docknetwork/wallet-sdk-wasm/src/services/dock");
5
+ const trust_registry_1 = require("@docknetwork/wallet-sdk-wasm/src/services/trust-registry");
6
+ async function getEcosystems({ issuerDID, verifierDID, schemaId, }) {
7
+ await dock_1.dockService.ensureDockReady();
8
+ try {
9
+ return await trust_registry_1.trustRegistryService.getTrustRegistries({ issuerDID, verifierDID, schemaId });
10
+ }
11
+ catch (error) {
12
+ console.log('error', error);
13
+ return [];
14
+ }
15
+ }
16
+ exports.getEcosystems = getEcosystems;
17
+ async function getVerifiers({ trustRegistryId, issuerDID, schemaId }) {
18
+ await dock_1.dockService.ensureDockReady();
19
+ try {
20
+ const verifiers = await trust_registry_1.trustRegistryService.getTrustRegistryVerifiers({
21
+ schemaId,
22
+ issuerDID: issuerDID,
23
+ trustRegistryId,
24
+ });
25
+ return verifiers;
26
+ }
27
+ catch (error) {
28
+ console.log('error', error);
29
+ return [];
30
+ }
31
+ }
32
+ exports.getVerifiers = getVerifiers;
33
+ //# sourceMappingURL=ecosystem-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecosystem-tools.js","sourceRoot":"","sources":["../src/ecosystem-tools.ts"],"names":[],"mappings":";;;AAAA,yEAA2E;AAC3E,6FAA8F;AAEvF,KAAK,UAAU,aAAa,CAAC,EAClC,SAAS,EACT,WAAW,EACX,QAAQ,GAKT;IACC,MAAM,kBAAW,CAAC,eAAe,EAAE,CAAC;IAEpC,IAAI;QACF,OAAO,MAAM,qCAAoB,CAAC,kBAAkB,CAAC,EAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAC,CAAC,CAAC;KAC1F;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAjBD,sCAiBC;AAEM,KAAK,UAAU,YAAY,CAAC,EAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,EAAC;IACvE,MAAM,kBAAW,CAAC,eAAe,EAAE,CAAC;IAEpC,IAAI;QACF,MAAM,SAAS,GAAG,MAAM,qCAAoB,CAAC,yBAAyB,CAAC;YACrE,QAAQ;YACR,SAAS,EAAE,SAAS;YACpB,eAAe;SAChB,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;KAClB;IAAC,OAAO,KAAK,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,OAAO,EAAE,CAAC;KACX;AACH,CAAC;AAdD,oCAcC"}
@@ -0,0 +1,8 @@
1
+ export declare function setSentryCaptureException(impl: any): void;
2
+ export declare function captureException(error: any): void;
3
+ export declare const WalletDocumentTypes: {
4
+ DIDCommMessage: string;
5
+ };
6
+ export declare function getJSONFromURL(url: string): Promise<any>;
7
+ export declare function getJSON(jsonOrURL: string | any): any;
8
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAQA,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,GAAG,QAElD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,KAAA,QAIrC;AAGD,eAAO,MAAM,mBAAmB;;CAG/B,CAAC;AAYF,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,gBAOzC;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,OAiB9C"}
package/lib/helpers.js ADDED
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getJSON = exports.getJSONFromURL = exports.WalletDocumentTypes = exports.captureException = exports.setSentryCaptureException = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ const assert_1 = __importDefault(require("assert"));
9
+ // Sentry implementation will be injected by the wallet-app
10
+ let sentryCaptureException = error => {
11
+ console.error(error);
12
+ };
13
+ function setSentryCaptureException(impl) {
14
+ sentryCaptureException = impl;
15
+ }
16
+ exports.setSentryCaptureException = setSentryCaptureException;
17
+ function captureException(error) {
18
+ if (sentryCaptureException) {
19
+ sentryCaptureException(error);
20
+ }
21
+ }
22
+ exports.captureException = captureException;
23
+ exports.WalletDocumentTypes = {
24
+ // This is used to store encrypted DIDComm messasges recieved from relay service
25
+ DIDCommMessage: 'DIDCommMessage',
26
+ };
27
+ function isURL(str) {
28
+ try {
29
+ // eslint-disable-next-line no-new
30
+ new URL(str);
31
+ return true;
32
+ }
33
+ catch (err) {
34
+ return false;
35
+ }
36
+ }
37
+ function getJSONFromURL(url) {
38
+ return axios_1.default
39
+ .get(url)
40
+ .then(res => res.data)
41
+ .catch(err => {
42
+ console.error(`Error fetching ${url}`, err);
43
+ });
44
+ }
45
+ exports.getJSONFromURL = getJSONFromURL;
46
+ function getJSON(jsonOrURL) {
47
+ (0, assert_1.default)(!!jsonOrURL, 'jsonOrURL is required');
48
+ if (typeof jsonOrURL === 'object') {
49
+ return jsonOrURL;
50
+ }
51
+ if (typeof jsonOrURL === 'string') {
52
+ if (isURL(jsonOrURL)) {
53
+ console.log(`Fetching ${jsonOrURL}`);
54
+ return getJSONFromURL(jsonOrURL);
55
+ }
56
+ else {
57
+ return JSON.parse(jsonOrURL);
58
+ }
59
+ }
60
+ throw new Error(`Invalid data ${jsonOrURL}`);
61
+ }
62
+ exports.getJSON = getJSON;
63
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,oDAA4B;AAE5B,2DAA2D;AAC3D,IAAI,sBAAsB,GAAQ,KAAK,CAAC,EAAE;IACxC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,SAAgB,yBAAyB,CAAC,IAAS;IACjD,sBAAsB,GAAG,IAAI,CAAC;AAChC,CAAC;AAFD,8DAEC;AAED,SAAgB,gBAAgB,CAAC,KAAK;IACpC,IAAI,sBAAsB,EAAE;QAC1B,sBAAsB,CAAC,KAAK,CAAC,CAAC;KAC/B;AACH,CAAC;AAJD,4CAIC;AAGY,QAAA,mBAAmB,GAAG;IACjC,gFAAgF;IAChF,cAAc,EAAE,gBAAgB;CACjC,CAAC;AAEF,SAAS,KAAK,CAAC,GAAG;IAChB,IAAI;QACF,kCAAkC;QAClC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,CAAC;KACb;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,KAAK,CAAC;KACd;AACH,CAAC;AAED,SAAgB,cAAc,CAAC,GAAW;IACxC,OAAO,eAAK;SACT,GAAG,CAAC,GAAG,CAAC;SACR,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;SACrB,KAAK,CAAC,GAAG,CAAC,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,kBAAkB,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACP,CAAC;AAPD,wCAOC;AAED,SAAgB,OAAO,CAAC,SAAuB;IAC7C,IAAA,gBAAM,EAAC,CAAC,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;IAE7C,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;QACjC,OAAO,SAAS,CAAC;KAClB;IAED,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;QACjC,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE;YACpB,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,EAAE,CAAC,CAAC;YACrC,OAAO,cAAc,CAAC,SAAS,CAAC,CAAC;SAClC;aAAM;YACL,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SAC9B;KACF;IAED,MAAM,IAAI,KAAK,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;AAC/C,CAAC;AAjBD,0BAiBC"}
@@ -0,0 +1,36 @@
1
+ /// <reference types="node" />
2
+ import { IDIDProvider } from './did-provider';
3
+ import { IWallet } from './types';
4
+ export interface IMessageProvider {
5
+ sendMessage: (message: any) => Promise<void>;
6
+ fetchMessages: () => Promise<void>;
7
+ processDIDCommMessages: () => Promise<void>;
8
+ startAutoFetch: (timeout?: number) => () => void;
9
+ addMessageListener: (handler: () => void) => () => void;
10
+ waitForMessage: () => Promise<any>;
11
+ markMessageAsRead: (messageId: string) => Promise<void>;
12
+ clearCache: () => Promise<void>;
13
+ }
14
+ export declare function createMessageProvider({ wallet, didProvider, relayService, }: {
15
+ wallet: IWallet;
16
+ didProvider: IDIDProvider;
17
+ relayService?: any;
18
+ }): {
19
+ sendMessage({ did, recipientDid, message, from, to, body, type, }: {
20
+ did: any;
21
+ recipientDid: any;
22
+ message: any;
23
+ from: any;
24
+ to: any;
25
+ body: any;
26
+ type: any;
27
+ }): Promise<void>;
28
+ waitForMessage(): Promise<unknown>;
29
+ startAutoFetch(timeout?: number): () => void;
30
+ clearCache: () => Promise<void[]>;
31
+ fetchMessages: () => Promise<any>;
32
+ addMessageListener: (handler: any) => () => import("events");
33
+ processDIDCommMessages: (limit?: number) => Promise<void>;
34
+ markMessageAsRead: (messageId: string) => Promise<void>;
35
+ };
36
+ //# sourceMappingURL=message-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-provider.d.ts","sourceRoot":"","sources":["../src/message-provider.ts"],"names":[],"mappings":";AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAKhC,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC;IACjD,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IACxD,cAAc,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAcD,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,WAAW,EACX,YAAkC,GACnC,EAAE;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,YAAY,CAAC;IAC1B,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;;;;;;;;;;;;;;;;mCAC6C,MAAM;EAqLnD"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createMessageProvider = void 0;
4
+ const helpers_1 = require("./helpers");
5
+ const relay_service_1 = require("@docknetwork/wallet-sdk-wasm/src/services/relay-service");
6
+ const FETCH_MESSAGE_LIMIT = 10;
7
+ async function getKeyPairDocs(didProvider, did) {
8
+ try {
9
+ const keyPairDocs = await didProvider.getDIDKeyPairs();
10
+ if (did) {
11
+ return keyPairDocs.find(doc => doc.controller === did);
12
+ }
13
+ return keyPairDocs;
14
+ }
15
+ catch (error) {
16
+ throw new Error(`Failed to get key pair docs: ${error.message}`);
17
+ }
18
+ }
19
+ function createMessageProvider({ wallet, didProvider, relayService = relay_service_1.relayService, }) {
20
+ async function markMessageAsRead(messageId) {
21
+ try {
22
+ const message = await wallet.getDocumentById(messageId);
23
+ if (message.type !== helpers_1.WalletDocumentTypes.DIDCommMessage) {
24
+ throw new Error(`Document with id ${messageId} is not a DIDCommMessage`);
25
+ }
26
+ await wallet.removeDocument(messageId);
27
+ }
28
+ catch (error) {
29
+ (0, helpers_1.captureException)(error);
30
+ throw new Error(`Failed to mark message as read: ${error.message}`);
31
+ }
32
+ }
33
+ async function processDIDCommMessages(limit = 1) {
34
+ try {
35
+ const messages = await wallet.getDocumentsByType(helpers_1.WalletDocumentTypes.DIDCommMessage);
36
+ const keyPairDocs = await getKeyPairDocs(didProvider);
37
+ let count = 0;
38
+ for (const message of messages) {
39
+ if (count >= limit) {
40
+ return;
41
+ }
42
+ try {
43
+ if (!message.encryptedMessage) {
44
+ await wallet.removeDocument(message.id);
45
+ throw new Error(`Message with payload ${JSON.stringify(message)} is invalid`);
46
+ }
47
+ const decryptedMessage = await relayService.resolveDidcommMessage({
48
+ keyPairDocs,
49
+ message: message.encryptedMessage,
50
+ });
51
+ wallet.eventManager.emit('didcomm-message-decrypted', {
52
+ decryptedMessage,
53
+ messageId: message.id,
54
+ });
55
+ count++;
56
+ // the wallet app will call markMessageAsRead after the message is processed
57
+ }
58
+ catch (err) {
59
+ if (err.message?.includes('the DID in question does not exist')) {
60
+ // the DID lookup failed (a testnet credential was issued to a mainnet did), so we can't
61
+ // decrypt the message remove the message from the wallet
62
+ await wallet.removeDocument(message.id);
63
+ }
64
+ (0, helpers_1.captureException)(err);
65
+ }
66
+ }
67
+ }
68
+ catch (error) {
69
+ (0, helpers_1.captureException)(error);
70
+ throw new Error(`Failed to process DIDComm messages: ${error.message}`);
71
+ }
72
+ }
73
+ async function fetchMessages() {
74
+ try {
75
+ const keyPairDocs = await getKeyPairDocs(didProvider);
76
+ const encryptedMessages = await relayService.getMessages({
77
+ keyPairDocs,
78
+ limit: FETCH_MESSAGE_LIMIT,
79
+ skipMessageResolution: true,
80
+ });
81
+ if (encryptedMessages.length) {
82
+ console.log(`Fetched ${encryptedMessages.length} messages`);
83
+ }
84
+ for (const message of encryptedMessages) {
85
+ try {
86
+ await wallet.addDocument({
87
+ id: message._id,
88
+ type: helpers_1.WalletDocumentTypes.DIDCommMessage,
89
+ encryptedMessage: message,
90
+ });
91
+ }
92
+ catch (err) {
93
+ // this message will be lost if it fails to be stored in the wallet
94
+ (0, helpers_1.captureException)(err);
95
+ }
96
+ }
97
+ if (encryptedMessages.length > 0) {
98
+ wallet.eventManager.emit('didcomm-messages-received', encryptedMessages);
99
+ }
100
+ return encryptedMessages;
101
+ }
102
+ catch (error) {
103
+ (0, helpers_1.captureException)(error);
104
+ throw new Error(`Failed to fetch messages: ${error.message}`);
105
+ }
106
+ }
107
+ function addMessageListener(handler) {
108
+ const listener = async (message) => {
109
+ await Promise.resolve(handler(message.decryptedMessage));
110
+ await markMessageAsRead(message.messageId);
111
+ };
112
+ wallet.eventManager.addListener('didcomm-message-decrypted', listener);
113
+ return () => wallet.eventManager.removeListener('didcomm-message-decrypted', listener);
114
+ }
115
+ ;
116
+ let listnerIntervalId = null;
117
+ return {
118
+ async sendMessage({ did, recipientDid, message,
119
+ // didcomm message parameters
120
+ from, to, body, type, }) {
121
+ // TODO: rename relay service parameters to make it easier to understand
122
+ if (from) {
123
+ did = from;
124
+ }
125
+ if (to) {
126
+ recipientDid = to;
127
+ }
128
+ if (!message && body) {
129
+ message = body;
130
+ }
131
+ try {
132
+ const keyPairDoc = await getKeyPairDocs(didProvider, did);
133
+ if (!keyPairDoc) {
134
+ throw new Error(`${did} not found in didDocs`);
135
+ }
136
+ await relayService.sendMessage({ keyPairDoc, message, recipientDid, type });
137
+ }
138
+ catch (error) {
139
+ (0, helpers_1.captureException)(error);
140
+ throw new Error(`Failed to send message: ${error.message}`);
141
+ }
142
+ },
143
+ waitForMessage() {
144
+ return new Promise((resolve) => {
145
+ let removeListener = addMessageListener(async (message) => {
146
+ removeListener();
147
+ await resolve(message);
148
+ });
149
+ });
150
+ },
151
+ startAutoFetch(timeout = 2000) {
152
+ clearInterval(listnerIntervalId);
153
+ listnerIntervalId = setInterval(async () => {
154
+ await fetchMessages();
155
+ await processDIDCommMessages();
156
+ }, timeout);
157
+ return () => clearInterval(listnerIntervalId);
158
+ },
159
+ clearCache: async () => {
160
+ return Promise.all((await wallet.getDocumentsByType(helpers_1.WalletDocumentTypes.DIDCommMessage)).map(document => {
161
+ markMessageAsRead(document.id);
162
+ return wallet.removeDocument(document.id);
163
+ }));
164
+ },
165
+ fetchMessages,
166
+ addMessageListener,
167
+ processDIDCommMessages,
168
+ markMessageAsRead,
169
+ };
170
+ }
171
+ exports.createMessageProvider = createMessageProvider;
172
+ //# sourceMappingURL=message-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-provider.js","sourceRoot":"","sources":["../src/message-provider.ts"],"names":[],"mappings":"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"}