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