@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.
- package/generate-docs.js +49 -0
- package/jsdoc.conf.json +29 -6
- package/lib/index.js +8 -1
- package/lib/index.mjs +8 -1
- package/lib/rpc-server.js +10 -1
- package/lib/rpc-server.mjs +10 -1
- package/lib/services/blockchain/cached-did-resolver.js +113 -0
- package/lib/services/blockchain/cached-did-resolver.mjs +109 -0
- package/lib/services/blockchain/index.js +11 -0
- package/lib/services/blockchain/index.mjs +11 -0
- package/lib/services/blockchain/service-rpc.js +16 -0
- package/lib/services/blockchain/service-rpc.mjs +16 -0
- package/lib/services/blockchain/service.js +144 -12
- package/lib/services/blockchain/service.mjs +144 -12
- package/lib/services/credential/bbs-revocation.js +11 -0
- package/lib/services/credential/bbs-revocation.mjs +11 -0
- package/lib/services/credential/config.js +4 -1
- package/lib/services/credential/config.mjs +4 -1
- package/lib/services/credential/index.js +14 -0
- package/lib/services/credential/index.mjs +14 -0
- package/lib/services/credential/pex-helpers.js +20 -0
- package/lib/services/credential/pex-helpers.mjs +20 -1
- package/lib/services/credential/sd-jwt.js +214 -0
- package/lib/services/credential/sd-jwt.mjs +200 -0
- package/lib/services/credential/service-rpc.js +9 -0
- package/lib/services/credential/service-rpc.mjs +9 -0
- package/lib/services/credential/service.js +325 -8
- package/lib/services/credential/service.mjs +326 -9
- package/lib/services/edv/service.js +145 -1
- package/lib/services/edv/service.mjs +145 -1
- package/lib/services/index.js +13 -0
- package/lib/services/index.mjs +13 -0
- package/lib/services/relay-service/service.js +124 -1
- package/lib/services/relay-service/service.mjs +124 -1
- package/lib/services/rpc-service-client.js +0 -3
- package/lib/services/rpc-service-client.mjs +0 -3
- package/lib/services/storage/index.js +19 -2
- package/lib/services/storage/index.mjs +24 -1
- package/lib/services/storage/service-rpc.js +7 -3
- package/lib/services/storage/service-rpc.mjs +7 -3
- package/lib/services/storage/service.js +4 -0
- package/lib/services/storage/service.mjs +4 -0
- package/lib/setup-nodejs.js +8 -1
- package/lib/setup-nodejs.mjs +8 -1
- package/lib/setup-tests.js +8 -1
- package/lib/setup-tests.mjs +8 -1
- package/lib/src/services/blockchain/cached-did-resolver.d.ts +28 -0
- package/lib/src/services/blockchain/cached-did-resolver.d.ts.map +1 -0
- package/lib/src/services/blockchain/cached-did-resolver.test.d.ts +2 -0
- package/lib/src/services/blockchain/cached-did-resolver.test.d.ts.map +1 -0
- package/lib/src/services/blockchain/service.d.ts +115 -17
- package/lib/src/services/blockchain/service.d.ts.map +1 -1
- package/lib/src/services/credential/config.d.ts.map +1 -1
- package/lib/src/services/credential/index.d.ts +3 -0
- package/lib/src/services/credential/index.d.ts.map +1 -1
- package/lib/src/services/credential/pex-helpers.d.ts +13 -1
- package/lib/src/services/credential/pex-helpers.d.ts.map +1 -1
- package/lib/src/services/credential/sd-jwt.test.d.ts +2 -0
- package/lib/src/services/credential/sd-jwt.test.d.ts.map +1 -0
- package/lib/src/services/credential/service.d.ts +274 -4
- package/lib/src/services/credential/service.d.ts.map +1 -1
- package/lib/src/services/edv/service.d.ts +151 -1
- package/lib/src/services/edv/service.d.ts.map +1 -1
- package/lib/src/services/relay-service/service.d.ts +129 -1
- package/lib/src/services/relay-service/service.d.ts.map +1 -1
- package/lib/src/services/rpc-service-client.d.ts +2 -2
- package/lib/src/services/rpc-service-client.d.ts.map +1 -1
- package/lib/src/services/storage/index.d.ts +1 -1
- package/lib/src/services/storage/index.d.ts.map +1 -1
- package/lib/src/services/storage/service-rpc.d.ts +9 -0
- package/lib/src/services/storage/service-rpc.d.ts.map +1 -0
- package/lib/src/services/storage/service.d.ts +1 -0
- package/lib/src/services/storage/service.d.ts.map +1 -1
- package/lib/src/services/util-crypto/service.d.ts +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/wallet/rpc-storage-interface.js +13 -3
- package/lib/wallet/rpc-storage-interface.mjs +11 -1
- package/lib/wallet/rpc-storage-wallet.js +10 -0
- package/lib/wallet/rpc-storage-wallet.mjs +10 -0
- package/package.json +13 -8
- package/src/services/blockchain/cached-did-resolver.test.ts +288 -0
- package/src/services/blockchain/cached-did-resolver.ts +126 -0
- package/src/services/blockchain/service-rpc.js +16 -0
- package/src/services/blockchain/service.ts +146 -12
- package/src/services/credential/config.ts +7 -1
- package/src/services/credential/pex-helpers.js +20 -1
- package/src/services/credential/pex-helpers.test.js +114 -0
- package/src/services/credential/sd-jwt.test.ts +718 -0
- package/src/services/credential/sd-jwt.ts +231 -0
- package/src/services/credential/service-rpc.js +9 -0
- package/src/services/credential/service.ts +330 -9
- package/src/services/edv/service.ts +153 -1
- package/src/services/relay-service/service.ts +130 -1
- package/src/services/rpc-service-client.js +0 -3
- package/src/services/storage/index.js +15 -1
- package/src/services/storage/service-rpc.js +7 -3
- package/src/services/storage/service.ts +5 -0
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
// @ts-nocheck
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @module edv-service
|
|
5
|
+
* @description Encrypted Data Vault (EDV) service for the Wallet SDK.
|
|
6
|
+
* This module provides secure, encrypted storage functionality using EDV protocol,
|
|
7
|
+
* enabling privacy-preserving data storage with client-side encryption.
|
|
8
|
+
*/
|
|
9
|
+
|
|
2
10
|
import {InitializeEDVParams, serviceName} from './configs';
|
|
3
11
|
import EDVHTTPStorageInterface from '@docknetwork/universal-wallet/storage/edv-http-storage';
|
|
4
12
|
import HMAC from './hmac';
|
|
@@ -11,7 +19,10 @@ import {didService} from '@docknetwork/wallet-sdk-wasm/src/services/dids/service
|
|
|
11
19
|
import {Ed25519Keypair} from '@docknetwork/credential-sdk/keypairs';
|
|
12
20
|
|
|
13
21
|
/**
|
|
14
|
-
*
|
|
22
|
+
* Service class for managing Encrypted Data Vaults
|
|
23
|
+
* @class
|
|
24
|
+
* @description Provides methods for creating, managing, and interacting with
|
|
25
|
+
* encrypted data vaults for secure storage of sensitive wallet data
|
|
15
26
|
*/
|
|
16
27
|
export class EDVService {
|
|
17
28
|
storageInterface: EDVHTTPStorageInterface;
|
|
@@ -30,10 +41,33 @@ export class EDVService {
|
|
|
30
41
|
EDVService.prototype.delete,
|
|
31
42
|
];
|
|
32
43
|
|
|
44
|
+
/**
|
|
45
|
+
* Creates a new EDVService instance
|
|
46
|
+
* @constructor
|
|
47
|
+
*/
|
|
33
48
|
constructor() {
|
|
34
49
|
this.name = serviceName;
|
|
35
50
|
}
|
|
36
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
|
+
*/
|
|
37
71
|
async initialize({
|
|
38
72
|
hmacKey,
|
|
39
73
|
agreementKey,
|
|
@@ -95,6 +129,21 @@ export class EDVService {
|
|
|
95
129
|
});
|
|
96
130
|
}
|
|
97
131
|
|
|
132
|
+
/**
|
|
133
|
+
* Generates new cryptographic keys for EDV operations
|
|
134
|
+
* @returns {Promise<Object>} Generated keys
|
|
135
|
+
* @returns {Object} returns.verificationKey - Ed25519 verification key for authentication
|
|
136
|
+
* @returns {Object} returns.agreementKey - X25519 key agreement key for encryption
|
|
137
|
+
* @returns {Object} returns.hmacKey - HMAC key for indexing
|
|
138
|
+
* @example
|
|
139
|
+
* const keys = await edvService.generateKeys();
|
|
140
|
+
* // Use keys for EDV initialization
|
|
141
|
+
* await edvService.initialize({
|
|
142
|
+
* ...keys,
|
|
143
|
+
* edvUrl: 'https://edv.example.com',
|
|
144
|
+
* authKey: 'auth-token'
|
|
145
|
+
* });
|
|
146
|
+
*/
|
|
98
147
|
async generateKeys() {
|
|
99
148
|
const keyPair = await didService.generateKeyDoc({});
|
|
100
149
|
|
|
@@ -111,6 +160,17 @@ export class EDVService {
|
|
|
111
160
|
return {verificationKey, agreementKey, hmacKey};
|
|
112
161
|
}
|
|
113
162
|
|
|
163
|
+
/**
|
|
164
|
+
* Derives cryptographic keys from a master key
|
|
165
|
+
* @param {Uint8Array} masterKey - Master key for derivation
|
|
166
|
+
* @returns {Promise<Object>} Derived keys
|
|
167
|
+
* @returns {Object} returns.verificationKey - Derived Ed25519 verification key
|
|
168
|
+
* @returns {Object} returns.agreementKey - Derived X25519 key agreement key
|
|
169
|
+
* @returns {Object} returns.hmacKey - Derived HMAC key
|
|
170
|
+
* @example
|
|
171
|
+
* const masterKey = new Uint8Array(32); // Your master key
|
|
172
|
+
* const keys = await edvService.deriveKeys(masterKey);
|
|
173
|
+
*/
|
|
114
174
|
async deriveKeys(masterKey: Uint8Array) {
|
|
115
175
|
const {keyPair: pair} = new Ed25519Keypair(masterKey, 'seed');
|
|
116
176
|
|
|
@@ -126,18 +186,66 @@ export class EDVService {
|
|
|
126
186
|
return { verificationKey, agreementKey, hmacKey };
|
|
127
187
|
}
|
|
128
188
|
|
|
189
|
+
/**
|
|
190
|
+
* Gets the controller identifier for the current EDV
|
|
191
|
+
* @returns {Promise<string>} The controller DID or identifier
|
|
192
|
+
* @example
|
|
193
|
+
* const controller = await edvService.getController();
|
|
194
|
+
* console.log('EDV Controller:', controller);
|
|
195
|
+
*/
|
|
129
196
|
async getController() {
|
|
130
197
|
return this.controller;
|
|
131
198
|
}
|
|
132
199
|
|
|
200
|
+
/**
|
|
201
|
+
* Finds documents in the EDV based on query parameters
|
|
202
|
+
* @param {Object} params - Query parameters
|
|
203
|
+
* @param {Object} [params.equals] - Equality-based query conditions
|
|
204
|
+
* @param {boolean} [params.has] - Existence-based query conditions
|
|
205
|
+
* @param {number} [params.limit] - Maximum number of results
|
|
206
|
+
* @returns {Promise<Array>} Array of matching documents
|
|
207
|
+
* @example
|
|
208
|
+
* const documents = await edvService.find({
|
|
209
|
+
* equals: { 'content.type': 'VerifiableCredential' },
|
|
210
|
+
* limit: 10
|
|
211
|
+
* });
|
|
212
|
+
*/
|
|
133
213
|
find(params: any) {
|
|
134
214
|
return this.storageInterface.find(params);
|
|
135
215
|
}
|
|
136
216
|
|
|
217
|
+
/**
|
|
218
|
+
* Updates a document in the EDV
|
|
219
|
+
* @param {Object} params - Update parameters
|
|
220
|
+
* @param {string} params.id - Document ID to update
|
|
221
|
+
* @param {Object} params.content - New document content
|
|
222
|
+
* @returns {Promise<Object>} Updated document
|
|
223
|
+
* @example
|
|
224
|
+
* const updated = await edvService.update({
|
|
225
|
+
* id: 'doc-123',
|
|
226
|
+
* content: { ...existingContent, updated: true }
|
|
227
|
+
* });
|
|
228
|
+
*/
|
|
137
229
|
update(params: any) {
|
|
138
230
|
return this.storageInterface.update(params);
|
|
139
231
|
}
|
|
140
232
|
|
|
233
|
+
/**
|
|
234
|
+
* Inserts a new document into the EDV
|
|
235
|
+
* @param {Object} params - Insert parameters
|
|
236
|
+
* @param {string} params.id - Document ID
|
|
237
|
+
* @param {Object} params.content - Document content to store
|
|
238
|
+
* @returns {Promise<Object>} The inserted document
|
|
239
|
+
* @throws {Error} If insertion fails
|
|
240
|
+
* @example
|
|
241
|
+
* const document = await edvService.insert({
|
|
242
|
+
* id: 'doc-456',
|
|
243
|
+
* content: {
|
|
244
|
+
* type: 'VerifiableCredential',
|
|
245
|
+
* data: credentialData
|
|
246
|
+
* }
|
|
247
|
+
* });
|
|
248
|
+
*/
|
|
141
249
|
insert(params: any) {
|
|
142
250
|
this.insertQueue = this.insertQueue.then(() => {
|
|
143
251
|
return this.storageInterface.insert(params).catch(error => {
|
|
@@ -148,9 +256,53 @@ export class EDVService {
|
|
|
148
256
|
return this.insertQueue;
|
|
149
257
|
}
|
|
150
258
|
|
|
259
|
+
/**
|
|
260
|
+
* Deletes a document from the EDV
|
|
261
|
+
* @param {Object} params - Deletion parameters
|
|
262
|
+
* @param {string} params.id - Document ID to delete
|
|
263
|
+
* @returns {Promise<boolean>} True if deletion successful
|
|
264
|
+
* @example
|
|
265
|
+
* const deleted = await edvService.delete({
|
|
266
|
+
* id: 'doc-123'
|
|
267
|
+
* });
|
|
268
|
+
*/
|
|
151
269
|
delete(params: any) {
|
|
152
270
|
return this.storageInterface.delete(params);
|
|
153
271
|
}
|
|
154
272
|
}
|
|
155
273
|
|
|
274
|
+
/**
|
|
275
|
+
* Singleton instance of the EDV service
|
|
276
|
+
* @type {EDVService}
|
|
277
|
+
* @example
|
|
278
|
+
* import { edvService } from '@docknetwork/wallet-sdk-wasm/services/edv';
|
|
279
|
+
*
|
|
280
|
+
* // Generate keys and initialize
|
|
281
|
+
* const keys = await edvService.generateKeys();
|
|
282
|
+
* await edvService.initialize({
|
|
283
|
+
* ...keys,
|
|
284
|
+
* edvUrl: 'https://edv.example.com',
|
|
285
|
+
* authKey: 'auth-token'
|
|
286
|
+
* });
|
|
287
|
+
*
|
|
288
|
+
* // Store encrypted data
|
|
289
|
+
* await edvService.insert({
|
|
290
|
+
* id: 'credential-1',
|
|
291
|
+
* content: {
|
|
292
|
+
* type: 'VerifiableCredential',
|
|
293
|
+
* data: credentialData
|
|
294
|
+
* }
|
|
295
|
+
* });
|
|
296
|
+
*
|
|
297
|
+
* // Query encrypted data
|
|
298
|
+
* const credentials = await edvService.find({
|
|
299
|
+
* equals: { 'content.type': 'VerifiableCredential' }
|
|
300
|
+
* });
|
|
301
|
+
*
|
|
302
|
+
* // Update encrypted data
|
|
303
|
+
* await edvService.update({
|
|
304
|
+
* id: 'credential-1',
|
|
305
|
+
* content: updatedData
|
|
306
|
+
* });
|
|
307
|
+
*/
|
|
156
308
|
export const edvService: EDVService = new EDVService();
|
|
@@ -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
|
-
*
|
|
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();
|
|
@@ -1 +1,15 @@
|
|
|
1
|
-
|
|
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)
|
|
8
|
+
setItem(...args) {
|
|
9
9
|
return this.call('setItem', ...args);
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
removeItem(...args)
|
|
12
|
+
removeItem(...args) {
|
|
13
13
|
return this.call('removeItem', ...args);
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
getItem(...args)
|
|
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();
|