@docknetwork/wallet-sdk-wasm 1.5.14 → 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 (91) 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 +12 -0
  12. package/lib/services/blockchain/service-rpc.mjs +12 -0
  13. package/lib/services/blockchain/service.js +140 -11
  14. package/lib/services/blockchain/service.mjs +140 -11
  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/sd-jwt.js +214 -0
  22. package/lib/services/credential/sd-jwt.mjs +200 -0
  23. package/lib/services/credential/service-rpc.js +9 -0
  24. package/lib/services/credential/service-rpc.mjs +9 -0
  25. package/lib/services/credential/service.js +324 -7
  26. package/lib/services/credential/service.mjs +324 -7
  27. package/lib/services/edv/service.js +145 -1
  28. package/lib/services/edv/service.mjs +145 -1
  29. package/lib/services/index.js +13 -0
  30. package/lib/services/index.mjs +13 -0
  31. package/lib/services/relay-service/service.js +124 -1
  32. package/lib/services/relay-service/service.mjs +124 -1
  33. package/lib/services/rpc-service-client.js +0 -3
  34. package/lib/services/rpc-service-client.mjs +0 -3
  35. package/lib/services/storage/index.js +19 -2
  36. package/lib/services/storage/index.mjs +24 -1
  37. package/lib/services/storage/service-rpc.js +7 -3
  38. package/lib/services/storage/service-rpc.mjs +7 -3
  39. package/lib/services/storage/service.js +4 -0
  40. package/lib/services/storage/service.mjs +4 -0
  41. package/lib/setup-nodejs.js +8 -1
  42. package/lib/setup-nodejs.mjs +8 -1
  43. package/lib/setup-tests.js +8 -1
  44. package/lib/setup-tests.mjs +8 -1
  45. package/lib/src/services/blockchain/cached-did-resolver.d.ts +28 -0
  46. package/lib/src/services/blockchain/cached-did-resolver.d.ts.map +1 -0
  47. package/lib/src/services/blockchain/cached-did-resolver.test.d.ts +2 -0
  48. package/lib/src/services/blockchain/cached-did-resolver.test.d.ts.map +1 -0
  49. package/lib/src/services/blockchain/service.d.ts +114 -17
  50. package/lib/src/services/blockchain/service.d.ts.map +1 -1
  51. package/lib/src/services/credential/config.d.ts.map +1 -1
  52. package/lib/src/services/credential/index.d.ts +3 -0
  53. package/lib/src/services/credential/index.d.ts.map +1 -1
  54. package/lib/src/services/credential/sd-jwt.test.d.ts +2 -0
  55. package/lib/src/services/credential/sd-jwt.test.d.ts.map +1 -0
  56. package/lib/src/services/credential/service.d.ts +274 -4
  57. package/lib/src/services/credential/service.d.ts.map +1 -1
  58. package/lib/src/services/edv/service.d.ts +151 -1
  59. package/lib/src/services/edv/service.d.ts.map +1 -1
  60. package/lib/src/services/relay-service/service.d.ts +129 -1
  61. package/lib/src/services/relay-service/service.d.ts.map +1 -1
  62. package/lib/src/services/rpc-service-client.d.ts +2 -2
  63. package/lib/src/services/rpc-service-client.d.ts.map +1 -1
  64. package/lib/src/services/storage/index.d.ts +1 -1
  65. package/lib/src/services/storage/index.d.ts.map +1 -1
  66. package/lib/src/services/storage/service-rpc.d.ts +9 -0
  67. package/lib/src/services/storage/service-rpc.d.ts.map +1 -0
  68. package/lib/src/services/storage/service.d.ts +1 -0
  69. package/lib/src/services/storage/service.d.ts.map +1 -1
  70. package/lib/src/services/util-crypto/service.d.ts +1 -1
  71. package/lib/tsconfig.tsbuildinfo +1 -1
  72. package/lib/wallet/rpc-storage-interface.js +13 -3
  73. package/lib/wallet/rpc-storage-interface.mjs +11 -1
  74. package/lib/wallet/rpc-storage-wallet.js +10 -0
  75. package/lib/wallet/rpc-storage-wallet.mjs +10 -0
  76. package/package.json +13 -8
  77. package/src/services/blockchain/cached-did-resolver.test.ts +288 -0
  78. package/src/services/blockchain/cached-did-resolver.ts +126 -0
  79. package/src/services/blockchain/service-rpc.js +12 -0
  80. package/src/services/blockchain/service.ts +142 -11
  81. package/src/services/credential/config.ts +7 -1
  82. package/src/services/credential/sd-jwt.test.ts +718 -0
  83. package/src/services/credential/sd-jwt.ts +231 -0
  84. package/src/services/credential/service-rpc.js +9 -0
  85. package/src/services/credential/service.ts +328 -7
  86. package/src/services/edv/service.ts +153 -1
  87. package/src/services/relay-service/service.ts +130 -1
  88. package/src/services/rpc-service-client.js +0 -3
  89. package/src/services/storage/index.js +15 -1
  90. package/src/services/storage/service-rpc.js +7 -3
  91. package/src/services/storage/service.ts +5 -0
@@ -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', {
@@ -6,7 +6,16 @@ import '../../core/validation.mjs';
6
6
  import '../../types.mjs';
7
7
 
8
8
  /**
9
- * RelayService
9
+ * @module relay-service
10
+ * @description DIDComm message relay service for the Wallet SDK.
11
+ * This module provides functionality for sending, receiving, and managing DIDComm messages
12
+ * through a relay service, including push notification support.
13
+ */
14
+ /**
15
+ * Service class for managing DIDComm message relay operations
16
+ * @class
17
+ * @description Provides methods for sending, receiving, and acknowledging DIDComm messages
18
+ * through a relay service infrastructure
10
19
  */
11
20
  class RelayService {
12
21
  name;
@@ -18,33 +27,147 @@ class RelayService {
18
27
  RelayService.prototype.sendMessage,
19
28
  RelayService.prototype.signJwt,
20
29
  ];
30
+ /**
31
+ * Creates a new RelayService instance
32
+ * @constructor
33
+ */
21
34
  constructor() {
22
35
  this.name = serviceName;
23
36
  }
37
+ /**
38
+ * Sends a DIDComm message through the relay service
39
+ * @param {SendMessageParams} params - Message parameters
40
+ * @param {Object} params.keyPairDoc - Key pair document for message encryption
41
+ * @param {Object} params.message - The message payload to send
42
+ * @param {string} params.recipientDid - DID of the message recipient
43
+ * @param {string} [params.type] - Message type identifier
44
+ * @returns {Promise<Object>} Result of the send operation
45
+ * @throws {Error} If validation fails or sending fails
46
+ * @example
47
+ * const result = await relayService.sendMessage({
48
+ * keyPairDoc: senderKeyPair,
49
+ * message: { content: 'Hello' },
50
+ * recipientDid: 'did:key:recipient123',
51
+ * type: 'basic-message'
52
+ * });
53
+ */
24
54
  sendMessage(params) {
25
55
  validation.sendMessage(params);
26
56
  return RelayService$1.sendMessage(params);
27
57
  }
58
+ /**
59
+ * Acknowledges receipt of messages from the relay service
60
+ * @param {AckMessagesParams} params - Acknowledgment parameters
61
+ * @param {string} params.did - DID acknowledging the messages
62
+ * @param {Array<string>} params.messageIds - Array of message IDs to acknowledge
63
+ * @returns {Promise<Object>} Result of the acknowledgment operation
64
+ * @example
65
+ * await relayService.ackMessages({
66
+ * did: 'did:key:holder123',
67
+ * messageIds: ['msg-1', 'msg-2']
68
+ * });
69
+ */
28
70
  ackMessages(params) {
29
71
  return RelayService$1.ackMessages(params);
30
72
  }
73
+ /**
74
+ * Resolves and decrypts a DIDComm message
75
+ * @param {ResolveDidcommMessageParams} params - Resolution parameters
76
+ * @param {Object} params.encryptedMessage - The encrypted message to resolve
77
+ * @param {Object} params.keyPairDoc - Key pair document for decryption
78
+ * @returns {Promise<Object>} The decrypted and resolved message
79
+ * @throws {Error} If validation fails or resolution fails
80
+ * @example
81
+ * const decrypted = await relayService.resolveDidcommMessage({
82
+ * encryptedMessage: encryptedData,
83
+ * keyPairDoc: recipientKeyPair
84
+ * });
85
+ */
31
86
  resolveDidcommMessage(params) {
32
87
  validation.resolveDidcommMessage(params);
33
88
  return RelayService$1.resolveDidcommMessage(params);
34
89
  }
90
+ /**
91
+ * Signs a JWT using the provided key pair
92
+ * @param {ResolveDidcommMessageParams} params - Signing parameters
93
+ * @param {Object} params.payload - JWT payload to sign
94
+ * @param {Object} params.keyPairDoc - Key pair document for signing
95
+ * @returns {Promise<string>} The signed JWT token
96
+ * @throws {Error} If validation fails or signing fails
97
+ * @example
98
+ * const jwt = await relayService.signJwt({
99
+ * payload: { sub: 'did:key:123', iat: Date.now() },
100
+ * keyPairDoc: signerKeyPair
101
+ * });
102
+ */
35
103
  signJwt(params) {
36
104
  validation.signJwt(params);
37
105
  return RelayService$1.signJwt(params);
38
106
  }
107
+ /**
108
+ * Retrieves messages from the relay service
109
+ * @param {GetMessagesParams} params - Retrieval parameters
110
+ * @param {Object} params.keyPairDocs - Key pair documents for decryption
111
+ * @param {number} [params.limit] - Maximum number of messages to retrieve
112
+ * @param {boolean} [params.skipMessageResolution] - Whether to skip message resolution
113
+ * @returns {Promise<Array>} Array of retrieved messages
114
+ * @throws {Error} If validation fails or retrieval fails
115
+ * @example
116
+ * const messages = await relayService.getMessages({
117
+ * keyPairDocs: [keyPairDoc1, keyPairDoc2],
118
+ * limit: 50,
119
+ * skipMessageResolution: false
120
+ * });
121
+ */
39
122
  getMessages(params) {
40
123
  validation.getMessages(params);
41
124
  return RelayService$1.getMessages(params);
42
125
  }
126
+ /**
127
+ * Registers a DID for push notifications
128
+ * @param {RegisterDIDPushNotificationParams} params - Registration parameters
129
+ * @param {string} params.did - The DID to register for notifications
130
+ * @param {string} params.deviceToken - Device token for push notifications
131
+ * @param {string} [params.platform] - Platform identifier (ios, android, etc.)
132
+ * @returns {Promise<Object>} Result of the registration
133
+ * @throws {Error} If validation fails or registration fails
134
+ * @example
135
+ * await relayService.registerDIDPushNotification({
136
+ * did: 'did:key:holder123',
137
+ * deviceToken: 'fcm-token-123',
138
+ * platform: 'android'
139
+ * });
140
+ */
43
141
  registerDIDPushNotification(params) {
44
142
  validation.registerDIDPushNotification(params);
45
143
  return RelayService$1.registerDIDPushNotification(params);
46
144
  }
47
145
  }
146
+ /**
147
+ * Singleton instance of the relay service
148
+ * @type {RelayService}
149
+ * @example
150
+ * import { relayService } from '@docknetwork/wallet-sdk-wasm/services/relay-service';
151
+ *
152
+ * // Send a DIDComm message
153
+ * await relayService.sendMessage({
154
+ * keyPairDoc: senderKeyPair,
155
+ * message: { type: 'greeting', content: 'Hello!' },
156
+ * recipientDid: 'did:key:recipient123'
157
+ * });
158
+ *
159
+ * // Retrieve messages
160
+ * const messages = await relayService.getMessages({
161
+ * keyPairDocs: [recipientKeyPair],
162
+ * limit: 10
163
+ * });
164
+ *
165
+ * // Acknowledge messages
166
+ * await relayService.ackMessages({
167
+ * did: 'did:key:recipient123',
168
+ * messageIds: messages.map(m => m.id)
169
+ * });
170
+ */
48
171
  const relayService = new RelayService();
49
172
 
50
173
  export { RelayService, relayService };
@@ -16,9 +16,6 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
16
16
  var assert__default = /*#__PURE__*/_interopDefaultLegacy(assert);
17
17
 
18
18
  class RpcService {
19
-
20
-
21
-
22
19
  constructor(serviceName) {
23
20
  assert__default["default"](!!serviceName, 'serviceName is required');
24
21
 
@@ -8,9 +8,6 @@ import '../logger.mjs';
8
8
  import '../rpc-util.mjs';
9
9
 
10
10
  class RpcService {
11
-
12
-
13
-
14
11
  constructor(serviceName) {
15
12
  assert(!!serviceName, 'serviceName is required');
16
13
 
@@ -3,7 +3,24 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var services_storage_service = require('./service.js');
6
+ var services_storage_serviceRpc = require('./service-rpc.js');
7
+ require('../rpc-service-client.js');
8
+ require('assert');
9
+ require('../../rpc-client.js');
10
+ require('json-rpc-2.0');
11
+ require('../../core/crypto.js');
12
+ require('crypto');
13
+ require('../../core/logger.js');
14
+ require('../../logger.js');
15
+ require('../../rpc-util.js');
6
16
 
17
+ exports.storageService = void 0;
7
18
 
8
-
9
- exports.storageService = services_storage_service.storageService;
19
+ if (typeof window !== 'undefined' && window.ReactNativeWebView) {
20
+ // Detect if we are running inside the webview
21
+ // then route the calls to the service-rpc
22
+ exports.storageService = new services_storage_serviceRpc.StorageServiceRpc();
23
+ } else {
24
+ // use the service directly for non-webview environments
25
+ exports.storageService = services_storage_service.storageService;
26
+ }
@@ -1 +1,24 @@
1
- export { storageService } from './service.mjs';
1
+ import { storageService as storageService$1 } from './service.mjs';
2
+ import { StorageServiceRpc } from './service-rpc.mjs';
3
+ import '../rpc-service-client.mjs';
4
+ import 'assert';
5
+ import '../../rpc-client.mjs';
6
+ import 'json-rpc-2.0';
7
+ import '../../core/crypto.mjs';
8
+ import 'crypto';
9
+ import '../../core/logger.mjs';
10
+ import '../../logger.mjs';
11
+ import '../../rpc-util.mjs';
12
+
13
+ let storageService;
14
+
15
+ if (typeof window !== 'undefined' && window.ReactNativeWebView) {
16
+ // Detect if we are running inside the webview
17
+ // then route the calls to the service-rpc
18
+ storageService = new StorageServiceRpc();
19
+ } else {
20
+ // use the service directly for non-webview environments
21
+ storageService = storageService$1;
22
+ }
23
+
24
+ export { storageService };
@@ -17,17 +17,21 @@ class StorageServiceRpc extends services_rpcServiceClient.RpcService {
17
17
  super('storage');
18
18
  }
19
19
 
20
- setItem(...args) {
20
+ setItem(...args) {
21
21
  return this.call('setItem', ...args);
22
22
  }
23
23
 
24
- removeItem(...args) {
24
+ removeItem(...args) {
25
25
  return this.call('removeItem', ...args);
26
26
  }
27
27
 
28
- getItem(...args) {
28
+ getItem(...args) {
29
29
  return this.call('getItem', ...args);
30
30
  }
31
+
32
+ getAllKeys() {
33
+ return this.call('getAllKeys');
34
+ }
31
35
  }
32
36
 
33
37
  exports.StorageServiceRpc = StorageServiceRpc;