@docknetwork/wallet-sdk-wasm 1.5.11 → 1.7.0

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/generate-docs.js +49 -0
  2. package/jsdoc.conf.json +29 -6
  3. package/lib/index.js +8 -1
  4. package/lib/index.mjs +8 -1
  5. package/lib/rpc-server.js +10 -1
  6. package/lib/rpc-server.mjs +10 -1
  7. package/lib/services/blockchain/cached-did-resolver.js +113 -0
  8. package/lib/services/blockchain/cached-did-resolver.mjs +109 -0
  9. package/lib/services/blockchain/index.js +11 -0
  10. package/lib/services/blockchain/index.mjs +11 -0
  11. package/lib/services/blockchain/service-rpc.js +16 -0
  12. package/lib/services/blockchain/service-rpc.mjs +16 -0
  13. package/lib/services/blockchain/service.js +144 -12
  14. package/lib/services/blockchain/service.mjs +144 -12
  15. package/lib/services/credential/bbs-revocation.js +11 -0
  16. package/lib/services/credential/bbs-revocation.mjs +11 -0
  17. package/lib/services/credential/config.js +4 -1
  18. package/lib/services/credential/config.mjs +4 -1
  19. package/lib/services/credential/index.js +14 -0
  20. package/lib/services/credential/index.mjs +14 -0
  21. package/lib/services/credential/pex-helpers.js +20 -0
  22. package/lib/services/credential/pex-helpers.mjs +20 -1
  23. package/lib/services/credential/sd-jwt.js +214 -0
  24. package/lib/services/credential/sd-jwt.mjs +200 -0
  25. package/lib/services/credential/service-rpc.js +9 -0
  26. package/lib/services/credential/service-rpc.mjs +9 -0
  27. package/lib/services/credential/service.js +325 -8
  28. package/lib/services/credential/service.mjs +326 -9
  29. package/lib/services/edv/service.js +145 -1
  30. package/lib/services/edv/service.mjs +145 -1
  31. package/lib/services/index.js +13 -0
  32. package/lib/services/index.mjs +13 -0
  33. package/lib/services/relay-service/service.js +124 -1
  34. package/lib/services/relay-service/service.mjs +124 -1
  35. package/lib/services/rpc-service-client.js +0 -3
  36. package/lib/services/rpc-service-client.mjs +0 -3
  37. package/lib/services/storage/index.js +19 -2
  38. package/lib/services/storage/index.mjs +24 -1
  39. package/lib/services/storage/service-rpc.js +7 -3
  40. package/lib/services/storage/service-rpc.mjs +7 -3
  41. package/lib/services/storage/service.js +4 -0
  42. package/lib/services/storage/service.mjs +4 -0
  43. package/lib/setup-nodejs.js +8 -1
  44. package/lib/setup-nodejs.mjs +8 -1
  45. package/lib/setup-tests.js +8 -1
  46. package/lib/setup-tests.mjs +8 -1
  47. package/lib/src/services/blockchain/cached-did-resolver.d.ts +28 -0
  48. package/lib/src/services/blockchain/cached-did-resolver.d.ts.map +1 -0
  49. package/lib/src/services/blockchain/cached-did-resolver.test.d.ts +2 -0
  50. package/lib/src/services/blockchain/cached-did-resolver.test.d.ts.map +1 -0
  51. package/lib/src/services/blockchain/service.d.ts +115 -17
  52. package/lib/src/services/blockchain/service.d.ts.map +1 -1
  53. package/lib/src/services/credential/config.d.ts.map +1 -1
  54. package/lib/src/services/credential/index.d.ts +3 -0
  55. package/lib/src/services/credential/index.d.ts.map +1 -1
  56. package/lib/src/services/credential/pex-helpers.d.ts +13 -1
  57. package/lib/src/services/credential/pex-helpers.d.ts.map +1 -1
  58. package/lib/src/services/credential/sd-jwt.test.d.ts +2 -0
  59. package/lib/src/services/credential/sd-jwt.test.d.ts.map +1 -0
  60. package/lib/src/services/credential/service.d.ts +274 -4
  61. package/lib/src/services/credential/service.d.ts.map +1 -1
  62. package/lib/src/services/edv/service.d.ts +151 -1
  63. package/lib/src/services/edv/service.d.ts.map +1 -1
  64. package/lib/src/services/relay-service/service.d.ts +129 -1
  65. package/lib/src/services/relay-service/service.d.ts.map +1 -1
  66. package/lib/src/services/rpc-service-client.d.ts +2 -2
  67. package/lib/src/services/rpc-service-client.d.ts.map +1 -1
  68. package/lib/src/services/storage/index.d.ts +1 -1
  69. package/lib/src/services/storage/index.d.ts.map +1 -1
  70. package/lib/src/services/storage/service-rpc.d.ts +9 -0
  71. package/lib/src/services/storage/service-rpc.d.ts.map +1 -0
  72. package/lib/src/services/storage/service.d.ts +1 -0
  73. package/lib/src/services/storage/service.d.ts.map +1 -1
  74. package/lib/src/services/util-crypto/service.d.ts +1 -1
  75. package/lib/tsconfig.tsbuildinfo +1 -1
  76. package/lib/wallet/rpc-storage-interface.js +13 -3
  77. package/lib/wallet/rpc-storage-interface.mjs +11 -1
  78. package/lib/wallet/rpc-storage-wallet.js +10 -0
  79. package/lib/wallet/rpc-storage-wallet.mjs +10 -0
  80. package/package.json +13 -8
  81. package/src/services/blockchain/cached-did-resolver.test.ts +288 -0
  82. package/src/services/blockchain/cached-did-resolver.ts +126 -0
  83. package/src/services/blockchain/service-rpc.js +16 -0
  84. package/src/services/blockchain/service.ts +146 -12
  85. package/src/services/credential/config.ts +7 -1
  86. package/src/services/credential/pex-helpers.js +20 -1
  87. package/src/services/credential/pex-helpers.test.js +114 -0
  88. package/src/services/credential/sd-jwt.test.ts +718 -0
  89. package/src/services/credential/sd-jwt.ts +231 -0
  90. package/src/services/credential/service-rpc.js +9 -0
  91. package/src/services/credential/service.ts +330 -9
  92. package/src/services/edv/service.ts +153 -1
  93. package/src/services/relay-service/service.ts +130 -1
  94. package/src/services/rpc-service-client.js +0 -3
  95. package/src/services/storage/index.js +15 -1
  96. package/src/services/storage/service-rpc.js +7 -3
  97. package/src/services/storage/service.ts +5 -0
@@ -31,7 +31,10 @@ var EDVHTTPStorageInterface__default = /*#__PURE__*/_interopDefaultLegacy(EDVHTT
31
31
 
32
32
  // @ts-nocheck
33
33
  /**
34
- * EDVService
34
+ * Service class for managing Encrypted Data Vaults
35
+ * @class
36
+ * @description Provides methods for creating, managing, and interacting with
37
+ * encrypted data vaults for secure storage of sensitive wallet data
35
38
  */
36
39
  class EDVService {
37
40
  storageInterface;
@@ -47,9 +50,32 @@ class EDVService {
47
50
  EDVService.prototype.insert,
48
51
  EDVService.prototype.delete,
49
52
  ];
53
+ /**
54
+ * Creates a new EDVService instance
55
+ * @constructor
56
+ */
50
57
  constructor() {
51
58
  this.name = services_edv_configs.serviceName;
52
59
  }
60
+ /**
61
+ * Initializes the EDV service with encryption keys and connection parameters
62
+ * @param {InitializeEDVParams} params - Initialization parameters
63
+ * @param {Object} params.hmacKey - HMAC key for document indexing
64
+ * @param {Object} params.agreementKey - Key agreement key for encryption
65
+ * @param {Object} params.verificationKey - Verification key for authentication
66
+ * @param {string} params.edvUrl - URL of the EDV server
67
+ * @param {string} params.authKey - Authentication key for the EDV server
68
+ * @returns {Promise<void>}
69
+ * @throws {Error} If unable to create or connect to EDV
70
+ * @example
71
+ * await edvService.initialize({
72
+ * hmacKey: hmacKeyData,
73
+ * agreementKey: agreementKeyData,
74
+ * verificationKey: verificationKeyData,
75
+ * edvUrl: 'https://edv.example.com',
76
+ * authKey: 'auth-token-123'
77
+ * });
78
+ */
53
79
  async initialize({ hmacKey, agreementKey, verificationKey, edvUrl, authKey, }) {
54
80
  const hmac = await services_edv_hmac.create({
55
81
  key: hmacKey,
@@ -97,6 +123,21 @@ class EDVService {
97
123
  attribute: 'content.type',
98
124
  });
99
125
  }
126
+ /**
127
+ * Generates new cryptographic keys for EDV operations
128
+ * @returns {Promise<Object>} Generated keys
129
+ * @returns {Object} returns.verificationKey - Ed25519 verification key for authentication
130
+ * @returns {Object} returns.agreementKey - X25519 key agreement key for encryption
131
+ * @returns {Object} returns.hmacKey - HMAC key for indexing
132
+ * @example
133
+ * const keys = await edvService.generateKeys();
134
+ * // Use keys for EDV initialization
135
+ * await edvService.initialize({
136
+ * ...keys,
137
+ * edvUrl: 'https://edv.example.com',
138
+ * authKey: 'auth-token'
139
+ * });
140
+ */
100
141
  async generateKeys() {
101
142
  const keyPair = await services_dids_service.didService.generateKeyDoc({});
102
143
  const verificationKey = await ed25519VerificationKey2018.Ed25519VerificationKey2018.generate({
@@ -109,6 +150,17 @@ class EDVService {
109
150
  const hmacKey = await services_edv_hmac.exportKey(await services_edv_hmac.generateKey());
110
151
  return { verificationKey, agreementKey, hmacKey };
111
152
  }
153
+ /**
154
+ * Derives cryptographic keys from a master key
155
+ * @param {Uint8Array} masterKey - Master key for derivation
156
+ * @returns {Promise<Object>} Derived keys
157
+ * @returns {Object} returns.verificationKey - Derived Ed25519 verification key
158
+ * @returns {Object} returns.agreementKey - Derived X25519 key agreement key
159
+ * @returns {Object} returns.hmacKey - Derived HMAC key
160
+ * @example
161
+ * const masterKey = new Uint8Array(32); // Your master key
162
+ * const keys = await edvService.deriveKeys(masterKey);
163
+ */
112
164
  async deriveKeys(masterKey) {
113
165
  const { keyPair: pair } = new keypairs$1.Ed25519Keypair(masterKey, 'seed');
114
166
  const keyPair = await services_dids_service.didService.deriveKeyDoc({ pair });
@@ -118,15 +170,63 @@ class EDVService {
118
170
  const hmacKey = await services_edv_hmac.exportKey(await services_edv_hmac.deriveKey(masterKey));
119
171
  return { verificationKey, agreementKey, hmacKey };
120
172
  }
173
+ /**
174
+ * Gets the controller identifier for the current EDV
175
+ * @returns {Promise<string>} The controller DID or identifier
176
+ * @example
177
+ * const controller = await edvService.getController();
178
+ * console.log('EDV Controller:', controller);
179
+ */
121
180
  async getController() {
122
181
  return this.controller;
123
182
  }
183
+ /**
184
+ * Finds documents in the EDV based on query parameters
185
+ * @param {Object} params - Query parameters
186
+ * @param {Object} [params.equals] - Equality-based query conditions
187
+ * @param {boolean} [params.has] - Existence-based query conditions
188
+ * @param {number} [params.limit] - Maximum number of results
189
+ * @returns {Promise<Array>} Array of matching documents
190
+ * @example
191
+ * const documents = await edvService.find({
192
+ * equals: { 'content.type': 'VerifiableCredential' },
193
+ * limit: 10
194
+ * });
195
+ */
124
196
  find(params) {
125
197
  return this.storageInterface.find(params);
126
198
  }
199
+ /**
200
+ * Updates a document in the EDV
201
+ * @param {Object} params - Update parameters
202
+ * @param {string} params.id - Document ID to update
203
+ * @param {Object} params.content - New document content
204
+ * @returns {Promise<Object>} Updated document
205
+ * @example
206
+ * const updated = await edvService.update({
207
+ * id: 'doc-123',
208
+ * content: { ...existingContent, updated: true }
209
+ * });
210
+ */
127
211
  update(params) {
128
212
  return this.storageInterface.update(params);
129
213
  }
214
+ /**
215
+ * Inserts a new document into the EDV
216
+ * @param {Object} params - Insert parameters
217
+ * @param {string} params.id - Document ID
218
+ * @param {Object} params.content - Document content to store
219
+ * @returns {Promise<Object>} The inserted document
220
+ * @throws {Error} If insertion fails
221
+ * @example
222
+ * const document = await edvService.insert({
223
+ * id: 'doc-456',
224
+ * content: {
225
+ * type: 'VerifiableCredential',
226
+ * data: credentialData
227
+ * }
228
+ * });
229
+ */
130
230
  insert(params) {
131
231
  this.insertQueue = this.insertQueue.then(() => {
132
232
  return this.storageInterface.insert(params).catch(error => {
@@ -136,10 +236,54 @@ class EDVService {
136
236
  });
137
237
  return this.insertQueue;
138
238
  }
239
+ /**
240
+ * Deletes a document from the EDV
241
+ * @param {Object} params - Deletion parameters
242
+ * @param {string} params.id - Document ID to delete
243
+ * @returns {Promise<boolean>} True if deletion successful
244
+ * @example
245
+ * const deleted = await edvService.delete({
246
+ * id: 'doc-123'
247
+ * });
248
+ */
139
249
  delete(params) {
140
250
  return this.storageInterface.delete(params);
141
251
  }
142
252
  }
253
+ /**
254
+ * Singleton instance of the EDV service
255
+ * @type {EDVService}
256
+ * @example
257
+ * import { edvService } from '@docknetwork/wallet-sdk-wasm/services/edv';
258
+ *
259
+ * // Generate keys and initialize
260
+ * const keys = await edvService.generateKeys();
261
+ * await edvService.initialize({
262
+ * ...keys,
263
+ * edvUrl: 'https://edv.example.com',
264
+ * authKey: 'auth-token'
265
+ * });
266
+ *
267
+ * // Store encrypted data
268
+ * await edvService.insert({
269
+ * id: 'credential-1',
270
+ * content: {
271
+ * type: 'VerifiableCredential',
272
+ * data: credentialData
273
+ * }
274
+ * });
275
+ *
276
+ * // Query encrypted data
277
+ * const credentials = await edvService.find({
278
+ * equals: { 'content.type': 'VerifiableCredential' }
279
+ * });
280
+ *
281
+ * // Update encrypted data
282
+ * await edvService.update({
283
+ * id: 'credential-1',
284
+ * content: updatedData
285
+ * });
286
+ */
143
287
  const edvService = new EDVService();
144
288
 
145
289
  exports.EDVService = EDVService;
@@ -23,7 +23,10 @@ import '../dids/keypair-utils.mjs';
23
23
 
24
24
  // @ts-nocheck
25
25
  /**
26
- * EDVService
26
+ * Service class for managing Encrypted Data Vaults
27
+ * @class
28
+ * @description Provides methods for creating, managing, and interacting with
29
+ * encrypted data vaults for secure storage of sensitive wallet data
27
30
  */
28
31
  class EDVService {
29
32
  storageInterface;
@@ -39,9 +42,32 @@ class EDVService {
39
42
  EDVService.prototype.insert,
40
43
  EDVService.prototype.delete,
41
44
  ];
45
+ /**
46
+ * Creates a new EDVService instance
47
+ * @constructor
48
+ */
42
49
  constructor() {
43
50
  this.name = serviceName;
44
51
  }
52
+ /**
53
+ * Initializes the EDV service with encryption keys and connection parameters
54
+ * @param {InitializeEDVParams} params - Initialization parameters
55
+ * @param {Object} params.hmacKey - HMAC key for document indexing
56
+ * @param {Object} params.agreementKey - Key agreement key for encryption
57
+ * @param {Object} params.verificationKey - Verification key for authentication
58
+ * @param {string} params.edvUrl - URL of the EDV server
59
+ * @param {string} params.authKey - Authentication key for the EDV server
60
+ * @returns {Promise<void>}
61
+ * @throws {Error} If unable to create or connect to EDV
62
+ * @example
63
+ * await edvService.initialize({
64
+ * hmacKey: hmacKeyData,
65
+ * agreementKey: agreementKeyData,
66
+ * verificationKey: verificationKeyData,
67
+ * edvUrl: 'https://edv.example.com',
68
+ * authKey: 'auth-token-123'
69
+ * });
70
+ */
45
71
  async initialize({ hmacKey, agreementKey, verificationKey, edvUrl, authKey, }) {
46
72
  const hmac = await HMAC.create({
47
73
  key: hmacKey,
@@ -89,6 +115,21 @@ class EDVService {
89
115
  attribute: 'content.type',
90
116
  });
91
117
  }
118
+ /**
119
+ * Generates new cryptographic keys for EDV operations
120
+ * @returns {Promise<Object>} Generated keys
121
+ * @returns {Object} returns.verificationKey - Ed25519 verification key for authentication
122
+ * @returns {Object} returns.agreementKey - X25519 key agreement key for encryption
123
+ * @returns {Object} returns.hmacKey - HMAC key for indexing
124
+ * @example
125
+ * const keys = await edvService.generateKeys();
126
+ * // Use keys for EDV initialization
127
+ * await edvService.initialize({
128
+ * ...keys,
129
+ * edvUrl: 'https://edv.example.com',
130
+ * authKey: 'auth-token'
131
+ * });
132
+ */
92
133
  async generateKeys() {
93
134
  const keyPair = await didService.generateKeyDoc({});
94
135
  const verificationKey = await Ed25519VerificationKey2018.generate({
@@ -101,6 +142,17 @@ class EDVService {
101
142
  const hmacKey = await HMAC.exportKey(await HMAC.generateKey());
102
143
  return { verificationKey, agreementKey, hmacKey };
103
144
  }
145
+ /**
146
+ * Derives cryptographic keys from a master key
147
+ * @param {Uint8Array} masterKey - Master key for derivation
148
+ * @returns {Promise<Object>} Derived keys
149
+ * @returns {Object} returns.verificationKey - Derived Ed25519 verification key
150
+ * @returns {Object} returns.agreementKey - Derived X25519 key agreement key
151
+ * @returns {Object} returns.hmacKey - Derived HMAC key
152
+ * @example
153
+ * const masterKey = new Uint8Array(32); // Your master key
154
+ * const keys = await edvService.deriveKeys(masterKey);
155
+ */
104
156
  async deriveKeys(masterKey) {
105
157
  const { keyPair: pair } = new Ed25519Keypair(masterKey, 'seed');
106
158
  const keyPair = await didService.deriveKeyDoc({ pair });
@@ -110,15 +162,63 @@ class EDVService {
110
162
  const hmacKey = await HMAC.exportKey(await HMAC.deriveKey(masterKey));
111
163
  return { verificationKey, agreementKey, hmacKey };
112
164
  }
165
+ /**
166
+ * Gets the controller identifier for the current EDV
167
+ * @returns {Promise<string>} The controller DID or identifier
168
+ * @example
169
+ * const controller = await edvService.getController();
170
+ * console.log('EDV Controller:', controller);
171
+ */
113
172
  async getController() {
114
173
  return this.controller;
115
174
  }
175
+ /**
176
+ * Finds documents in the EDV based on query parameters
177
+ * @param {Object} params - Query parameters
178
+ * @param {Object} [params.equals] - Equality-based query conditions
179
+ * @param {boolean} [params.has] - Existence-based query conditions
180
+ * @param {number} [params.limit] - Maximum number of results
181
+ * @returns {Promise<Array>} Array of matching documents
182
+ * @example
183
+ * const documents = await edvService.find({
184
+ * equals: { 'content.type': 'VerifiableCredential' },
185
+ * limit: 10
186
+ * });
187
+ */
116
188
  find(params) {
117
189
  return this.storageInterface.find(params);
118
190
  }
191
+ /**
192
+ * Updates a document in the EDV
193
+ * @param {Object} params - Update parameters
194
+ * @param {string} params.id - Document ID to update
195
+ * @param {Object} params.content - New document content
196
+ * @returns {Promise<Object>} Updated document
197
+ * @example
198
+ * const updated = await edvService.update({
199
+ * id: 'doc-123',
200
+ * content: { ...existingContent, updated: true }
201
+ * });
202
+ */
119
203
  update(params) {
120
204
  return this.storageInterface.update(params);
121
205
  }
206
+ /**
207
+ * Inserts a new document into the EDV
208
+ * @param {Object} params - Insert parameters
209
+ * @param {string} params.id - Document ID
210
+ * @param {Object} params.content - Document content to store
211
+ * @returns {Promise<Object>} The inserted document
212
+ * @throws {Error} If insertion fails
213
+ * @example
214
+ * const document = await edvService.insert({
215
+ * id: 'doc-456',
216
+ * content: {
217
+ * type: 'VerifiableCredential',
218
+ * data: credentialData
219
+ * }
220
+ * });
221
+ */
122
222
  insert(params) {
123
223
  this.insertQueue = this.insertQueue.then(() => {
124
224
  return this.storageInterface.insert(params).catch(error => {
@@ -128,10 +228,54 @@ class EDVService {
128
228
  });
129
229
  return this.insertQueue;
130
230
  }
231
+ /**
232
+ * Deletes a document from the EDV
233
+ * @param {Object} params - Deletion parameters
234
+ * @param {string} params.id - Document ID to delete
235
+ * @returns {Promise<boolean>} True if deletion successful
236
+ * @example
237
+ * const deleted = await edvService.delete({
238
+ * id: 'doc-123'
239
+ * });
240
+ */
131
241
  delete(params) {
132
242
  return this.storageInterface.delete(params);
133
243
  }
134
244
  }
245
+ /**
246
+ * Singleton instance of the EDV service
247
+ * @type {EDVService}
248
+ * @example
249
+ * import { edvService } from '@docknetwork/wallet-sdk-wasm/services/edv';
250
+ *
251
+ * // Generate keys and initialize
252
+ * const keys = await edvService.generateKeys();
253
+ * await edvService.initialize({
254
+ * ...keys,
255
+ * edvUrl: 'https://edv.example.com',
256
+ * authKey: 'auth-token'
257
+ * });
258
+ *
259
+ * // Store encrypted data
260
+ * await edvService.insert({
261
+ * id: 'credential-1',
262
+ * content: {
263
+ * type: 'VerifiableCredential',
264
+ * data: credentialData
265
+ * }
266
+ * });
267
+ *
268
+ * // Query encrypted data
269
+ * const credentials = await edvService.find({
270
+ * equals: { 'content.type': 'VerifiableCredential' }
271
+ * });
272
+ *
273
+ * // Update encrypted data
274
+ * await edvService.update({
275
+ * id: 'credential-1',
276
+ * content: updatedData
277
+ * });
278
+ */
135
279
  const edvService = new EDVService();
136
280
 
137
281
  export { EDVService, edvService };
@@ -20,6 +20,16 @@ require('../core/logger.js');
20
20
  require('../modules/event-manager.js');
21
21
  require('assert');
22
22
  require('@docknetwork/credential-sdk/types');
23
+ require('./blockchain/cached-did-resolver.js');
24
+ require('./storage/index.js');
25
+ require('./storage/service-rpc.js');
26
+ require('./rpc-service-client.js');
27
+ require('../rpc-client.js');
28
+ require('json-rpc-2.0');
29
+ require('../core/crypto.js');
30
+ require('crypto');
31
+ require('../logger.js');
32
+ require('../rpc-util.js');
23
33
  require('../wallet/memory-storage-wallet.js');
24
34
  require('@docknetwork/universal-wallet/storage-wallet');
25
35
  require('../wallet/memory-storage-interface.js');
@@ -55,6 +65,9 @@ require('@docknetwork/crypto-wasm-ts/lib/legosnark');
55
65
  require('./credential/pex-helpers.js');
56
66
  require('@astronautlabs/jsonpath');
57
67
  require('./credential/bbs-revocation.js');
68
+ require('./credential/sd-jwt.js');
69
+ require('@sd-jwt/sd-jwt-vc');
70
+ require('@sd-jwt/crypto-nodejs');
58
71
  require('./relay-service/configs.js');
59
72
  require('@docknetwork/wallet-sdk-relay-service/lib');
60
73
  require('./pex/config.js');
@@ -18,6 +18,16 @@ import '../core/logger.mjs';
18
18
  import '../modules/event-manager.mjs';
19
19
  import 'assert';
20
20
  import '@docknetwork/credential-sdk/types';
21
+ import './blockchain/cached-did-resolver.mjs';
22
+ import './storage/index.mjs';
23
+ import './storage/service-rpc.mjs';
24
+ import './rpc-service-client.mjs';
25
+ import '../rpc-client.mjs';
26
+ import 'json-rpc-2.0';
27
+ import '../core/crypto.mjs';
28
+ import 'crypto';
29
+ import '../logger.mjs';
30
+ import '../rpc-util.mjs';
21
31
  import '../wallet/memory-storage-wallet.mjs';
22
32
  import '@docknetwork/universal-wallet/storage-wallet';
23
33
  import '../wallet/memory-storage-interface.mjs';
@@ -53,6 +63,9 @@ import '@docknetwork/crypto-wasm-ts/lib/legosnark';
53
63
  import './credential/pex-helpers.mjs';
54
64
  import '@astronautlabs/jsonpath';
55
65
  import './credential/bbs-revocation.mjs';
66
+ import './credential/sd-jwt.mjs';
67
+ import '@sd-jwt/sd-jwt-vc';
68
+ import '@sd-jwt/crypto-nodejs';
56
69
  import './relay-service/configs.mjs';
57
70
  import '@docknetwork/wallet-sdk-relay-service/lib';
58
71
  import './pex/config.mjs';
@@ -9,7 +9,16 @@ require('../../core/validation.js');
9
9
  require('../../types.js');
10
10
 
11
11
  /**
12
- * RelayService
12
+ * @module relay-service
13
+ * @description DIDComm message relay service for the Wallet SDK.
14
+ * This module provides functionality for sending, receiving, and managing DIDComm messages
15
+ * through a relay service, including push notification support.
16
+ */
17
+ /**
18
+ * Service class for managing DIDComm message relay operations
19
+ * @class
20
+ * @description Provides methods for sending, receiving, and acknowledging DIDComm messages
21
+ * through a relay service infrastructure
13
22
  */
14
23
  class RelayService {
15
24
  name;
@@ -21,33 +30,147 @@ class RelayService {
21
30
  RelayService.prototype.sendMessage,
22
31
  RelayService.prototype.signJwt,
23
32
  ];
33
+ /**
34
+ * Creates a new RelayService instance
35
+ * @constructor
36
+ */
24
37
  constructor() {
25
38
  this.name = services_relayService_configs.serviceName;
26
39
  }
40
+ /**
41
+ * Sends a DIDComm message through the relay service
42
+ * @param {SendMessageParams} params - Message parameters
43
+ * @param {Object} params.keyPairDoc - Key pair document for message encryption
44
+ * @param {Object} params.message - The message payload to send
45
+ * @param {string} params.recipientDid - DID of the message recipient
46
+ * @param {string} [params.type] - Message type identifier
47
+ * @returns {Promise<Object>} Result of the send operation
48
+ * @throws {Error} If validation fails or sending fails
49
+ * @example
50
+ * const result = await relayService.sendMessage({
51
+ * keyPairDoc: senderKeyPair,
52
+ * message: { content: 'Hello' },
53
+ * recipientDid: 'did:key:recipient123',
54
+ * type: 'basic-message'
55
+ * });
56
+ */
27
57
  sendMessage(params) {
28
58
  services_relayService_configs.validation.sendMessage(params);
29
59
  return src.RelayService.sendMessage(params);
30
60
  }
61
+ /**
62
+ * Acknowledges receipt of messages from the relay service
63
+ * @param {AckMessagesParams} params - Acknowledgment parameters
64
+ * @param {string} params.did - DID acknowledging the messages
65
+ * @param {Array<string>} params.messageIds - Array of message IDs to acknowledge
66
+ * @returns {Promise<Object>} Result of the acknowledgment operation
67
+ * @example
68
+ * await relayService.ackMessages({
69
+ * did: 'did:key:holder123',
70
+ * messageIds: ['msg-1', 'msg-2']
71
+ * });
72
+ */
31
73
  ackMessages(params) {
32
74
  return src.RelayService.ackMessages(params);
33
75
  }
76
+ /**
77
+ * Resolves and decrypts a DIDComm message
78
+ * @param {ResolveDidcommMessageParams} params - Resolution parameters
79
+ * @param {Object} params.encryptedMessage - The encrypted message to resolve
80
+ * @param {Object} params.keyPairDoc - Key pair document for decryption
81
+ * @returns {Promise<Object>} The decrypted and resolved message
82
+ * @throws {Error} If validation fails or resolution fails
83
+ * @example
84
+ * const decrypted = await relayService.resolveDidcommMessage({
85
+ * encryptedMessage: encryptedData,
86
+ * keyPairDoc: recipientKeyPair
87
+ * });
88
+ */
34
89
  resolveDidcommMessage(params) {
35
90
  services_relayService_configs.validation.resolveDidcommMessage(params);
36
91
  return src.RelayService.resolveDidcommMessage(params);
37
92
  }
93
+ /**
94
+ * Signs a JWT using the provided key pair
95
+ * @param {ResolveDidcommMessageParams} params - Signing parameters
96
+ * @param {Object} params.payload - JWT payload to sign
97
+ * @param {Object} params.keyPairDoc - Key pair document for signing
98
+ * @returns {Promise<string>} The signed JWT token
99
+ * @throws {Error} If validation fails or signing fails
100
+ * @example
101
+ * const jwt = await relayService.signJwt({
102
+ * payload: { sub: 'did:key:123', iat: Date.now() },
103
+ * keyPairDoc: signerKeyPair
104
+ * });
105
+ */
38
106
  signJwt(params) {
39
107
  services_relayService_configs.validation.signJwt(params);
40
108
  return src.RelayService.signJwt(params);
41
109
  }
110
+ /**
111
+ * Retrieves messages from the relay service
112
+ * @param {GetMessagesParams} params - Retrieval parameters
113
+ * @param {Object} params.keyPairDocs - Key pair documents for decryption
114
+ * @param {number} [params.limit] - Maximum number of messages to retrieve
115
+ * @param {boolean} [params.skipMessageResolution] - Whether to skip message resolution
116
+ * @returns {Promise<Array>} Array of retrieved messages
117
+ * @throws {Error} If validation fails or retrieval fails
118
+ * @example
119
+ * const messages = await relayService.getMessages({
120
+ * keyPairDocs: [keyPairDoc1, keyPairDoc2],
121
+ * limit: 50,
122
+ * skipMessageResolution: false
123
+ * });
124
+ */
42
125
  getMessages(params) {
43
126
  services_relayService_configs.validation.getMessages(params);
44
127
  return src.RelayService.getMessages(params);
45
128
  }
129
+ /**
130
+ * Registers a DID for push notifications
131
+ * @param {RegisterDIDPushNotificationParams} params - Registration parameters
132
+ * @param {string} params.did - The DID to register for notifications
133
+ * @param {string} params.deviceToken - Device token for push notifications
134
+ * @param {string} [params.platform] - Platform identifier (ios, android, etc.)
135
+ * @returns {Promise<Object>} Result of the registration
136
+ * @throws {Error} If validation fails or registration fails
137
+ * @example
138
+ * await relayService.registerDIDPushNotification({
139
+ * did: 'did:key:holder123',
140
+ * deviceToken: 'fcm-token-123',
141
+ * platform: 'android'
142
+ * });
143
+ */
46
144
  registerDIDPushNotification(params) {
47
145
  services_relayService_configs.validation.registerDIDPushNotification(params);
48
146
  return src.RelayService.registerDIDPushNotification(params);
49
147
  }
50
148
  }
149
+ /**
150
+ * Singleton instance of the relay service
151
+ * @type {RelayService}
152
+ * @example
153
+ * import { relayService } from '@docknetwork/wallet-sdk-wasm/services/relay-service';
154
+ *
155
+ * // Send a DIDComm message
156
+ * await relayService.sendMessage({
157
+ * keyPairDoc: senderKeyPair,
158
+ * message: { type: 'greeting', content: 'Hello!' },
159
+ * recipientDid: 'did:key:recipient123'
160
+ * });
161
+ *
162
+ * // Retrieve messages
163
+ * const messages = await relayService.getMessages({
164
+ * keyPairDocs: [recipientKeyPair],
165
+ * limit: 10
166
+ * });
167
+ *
168
+ * // Acknowledge messages
169
+ * await relayService.ackMessages({
170
+ * did: 'did:key:recipient123',
171
+ * messageIds: messages.map(m => m.id)
172
+ * });
173
+ */
51
174
  const relayService = new RelayService();
52
175
 
53
176
  Object.defineProperty(exports, 'relayServiceClient', {