@docknetwork/wallet-sdk-wasm 1.5.14 → 1.7.6
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 +9 -1
- package/lib/index.mjs +9 -1
- package/lib/modules/network-manager.js +15 -12
- package/lib/modules/network-manager.mjs +15 -12
- package/lib/rpc-server.js +11 -1
- package/lib/rpc-server.mjs +11 -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 +12 -0
- package/lib/services/blockchain/service-rpc.mjs +12 -0
- package/lib/services/blockchain/service.js +161 -19
- package/lib/services/blockchain/service.mjs +162 -20
- package/lib/services/credential/bbs-revocation.js +11 -0
- package/lib/services/credential/bbs-revocation.mjs +11 -0
- package/lib/services/credential/bound-check.js +1 -1
- package/lib/services/credential/bound-check.mjs +1 -1
- package/lib/services/credential/config.js +4 -1
- package/lib/services/credential/config.mjs +4 -1
- package/lib/services/credential/delegatable-credentials.js +300 -0
- package/lib/services/credential/delegatable-credentials.mjs +263 -0
- package/lib/services/credential/index.js +53 -0
- package/lib/services/credential/index.mjs +18 -0
- package/lib/services/credential/pex-helpers.js +4 -4
- package/lib/services/credential/pex-helpers.mjs +4 -4
- 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 +324 -7
- package/lib/services/credential/service.mjs +324 -7
- package/lib/services/edv/index.js +1 -0
- package/lib/services/edv/index.mjs +1 -0
- package/lib/services/edv/service-rpc.js +23 -0
- package/lib/services/edv/service-rpc.mjs +23 -0
- package/lib/services/edv/service.js +226 -2
- package/lib/services/edv/service.mjs +223 -3
- package/lib/services/index.js +14 -0
- package/lib/services/index.mjs +14 -0
- package/lib/services/pex/config.js +4 -0
- package/lib/services/pex/config.mjs +4 -0
- package/lib/services/pex/service-rpc.js +4 -0
- package/lib/services/pex/service-rpc.mjs +4 -0
- package/lib/services/pex/service.js +7 -0
- package/lib/services/pex/service.mjs +7 -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 +9 -1
- package/lib/setup-nodejs.mjs +9 -1
- package/lib/setup-tests.js +9 -1
- package/lib/setup-tests.mjs +9 -1
- package/lib/src/modules/event-manager.d.ts +0 -1
- package/lib/src/modules/event-manager.d.ts.map +1 -1
- package/lib/src/modules/network-manager.d.ts +2 -4
- package/lib/src/modules/network-manager.d.ts.map +1 -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/configs.d.ts +1 -2
- package/lib/src/services/blockchain/configs.d.ts.map +1 -1
- package/lib/src/services/blockchain/service.d.ts +117 -19
- package/lib/src/services/blockchain/service.d.ts.map +1 -1
- package/lib/src/services/credential/bbs-revocation.d.ts +1 -1
- package/lib/src/services/credential/bbs-revocation.d.ts.map +1 -1
- package/lib/src/services/credential/bound-check.d.ts.map +1 -1
- package/lib/src/services/credential/config.d.ts.map +1 -1
- package/lib/src/services/credential/delegatable-credentials.d.ts +272 -0
- package/lib/src/services/credential/delegatable-credentials.d.ts.map +1 -0
- package/lib/src/services/credential/index.d.ts +4 -0
- package/lib/src/services/credential/index.d.ts.map +1 -1
- package/lib/src/services/credential/pex-helpers.d.ts +2 -2
- 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/dids/keypair-utils.d.ts +2 -2
- package/lib/src/services/dids/keypair-utils.d.ts.map +1 -1
- package/lib/src/services/dids/service.d.ts +35 -3
- package/lib/src/services/dids/service.d.ts.map +1 -1
- package/lib/src/services/edv/service.d.ts +201 -2
- package/lib/src/services/edv/service.d.ts.map +1 -1
- package/lib/src/services/pex/config.d.ts +1 -0
- package/lib/src/services/pex/config.d.ts.map +1 -1
- package/lib/src/services/pex/service.d.ts +1 -0
- package/lib/src/services/pex/service.d.ts.map +1 -1
- package/lib/src/services/relay-service/service.d.ts +148 -8
- 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 +2 -2
- package/lib/src/services/util-crypto/service.d.ts.map +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 +29 -16
- package/rollup.config.mjs +5 -3
- package/src/globals.d.ts +3 -0
- package/src/modules/network-manager.ts +15 -14
- 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/configs.ts +1 -2
- package/src/services/blockchain/service-rpc.js +12 -0
- package/src/services/blockchain/service.ts +167 -20
- package/src/services/credential/bound-check.ts +1 -1
- package/src/services/credential/config.ts +7 -1
- package/src/services/credential/delegatable-credentials.ts +409 -0
- package/src/services/credential/index.ts +16 -0
- package/src/services/credential/pex-helpers.js +4 -4
- package/src/services/credential/pex-helpers.test.js +2 -2
- 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 +328 -7
- package/src/services/edv/index.test.js +229 -0
- package/src/services/edv/service-rpc.js +23 -0
- package/src/services/edv/service.ts +272 -1
- package/src/services/pex/config.ts +4 -0
- package/src/services/pex/service-rpc.js +4 -0
- package/src/services/pex/service.ts +13 -0
- package/src/services/pex/tests/pex-service.test.js +210 -0
- 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
|
@@ -647,4 +647,214 @@ describe('Pex Examples', () => {
|
|
|
647
647
|
expect(result).not.toBe(template); // Ensure immutability
|
|
648
648
|
});
|
|
649
649
|
});
|
|
650
|
+
|
|
651
|
+
describe('isCredentialSelectionValid', () => {
|
|
652
|
+
const presentationDefinition = {
|
|
653
|
+
id: 'b4a4bcf5-56a6-4e1c-810f-f2161c295b27',
|
|
654
|
+
input_descriptors: [
|
|
655
|
+
{
|
|
656
|
+
id: 'Credential 1',
|
|
657
|
+
name: 'api test',
|
|
658
|
+
group: ['1'],
|
|
659
|
+
purpose: 'blah blah',
|
|
660
|
+
constraints: {
|
|
661
|
+
fields: [
|
|
662
|
+
{
|
|
663
|
+
path: ['$.credentialSubject.id'],
|
|
664
|
+
optional: true,
|
|
665
|
+
},
|
|
666
|
+
{
|
|
667
|
+
path: ['$.expirationDate'],
|
|
668
|
+
optional: true,
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
path: ['$.credentialSchema.id'],
|
|
672
|
+
filter: {
|
|
673
|
+
const:
|
|
674
|
+
'https://schema.truvera.io/BasicCredential-V2-1703777584571.json',
|
|
675
|
+
},
|
|
676
|
+
},
|
|
677
|
+
],
|
|
678
|
+
},
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
id: 'Credential 2',
|
|
682
|
+
name: 'api test',
|
|
683
|
+
group: ['2'],
|
|
684
|
+
purpose: 'blah blah',
|
|
685
|
+
constraints: {
|
|
686
|
+
fields: [
|
|
687
|
+
{
|
|
688
|
+
path: ['$.credentialSubject.id'],
|
|
689
|
+
optional: true,
|
|
690
|
+
},
|
|
691
|
+
{
|
|
692
|
+
path: ['$.expirationDate'],
|
|
693
|
+
optional: true,
|
|
694
|
+
},
|
|
695
|
+
{
|
|
696
|
+
path: ['$.credentialSchema.id'],
|
|
697
|
+
filter: {
|
|
698
|
+
const:
|
|
699
|
+
'https://schema.truvera.io/UniversityDegree-V1-1703767509472.json',
|
|
700
|
+
},
|
|
701
|
+
},
|
|
702
|
+
],
|
|
703
|
+
},
|
|
704
|
+
},
|
|
705
|
+
],
|
|
706
|
+
submission_requirements: [
|
|
707
|
+
{
|
|
708
|
+
from: '1',
|
|
709
|
+
name: 'Multi Credential Request',
|
|
710
|
+
rule: 'pick',
|
|
711
|
+
count: 1,
|
|
712
|
+
},
|
|
713
|
+
{
|
|
714
|
+
from: '2',
|
|
715
|
+
name: 'Multi Credential Request',
|
|
716
|
+
rule: 'pick',
|
|
717
|
+
count: 1,
|
|
718
|
+
},
|
|
719
|
+
],
|
|
720
|
+
};
|
|
721
|
+
|
|
722
|
+
const basicCredential1 = {
|
|
723
|
+
'@context': [
|
|
724
|
+
'https://www.w3.org/2018/credentials/v1',
|
|
725
|
+
'https://ld.truvera.io/credentials/extensions-v1',
|
|
726
|
+
{
|
|
727
|
+
BasicCredential: 'dk:BasicCredential',
|
|
728
|
+
dk: 'https://ld.truvera.io/credentials#',
|
|
729
|
+
},
|
|
730
|
+
'https://ld.truvera.io/credentials/prettyvc',
|
|
731
|
+
],
|
|
732
|
+
id: 'https://creds.truvera.io/29224c9c87c87c5edfcbace893d99d009513a0548e855bcb793ea30e1c5f8ce8',
|
|
733
|
+
type: [
|
|
734
|
+
'VerifiableCredential',
|
|
735
|
+
'BasicCredential',
|
|
736
|
+
'PrettyVerifiableCredential',
|
|
737
|
+
],
|
|
738
|
+
credentialSubject: {
|
|
739
|
+
id: 'did:key:z6Mktpass177BSFLMuCpNJzCyrLeAUs16XUmg15VLHCQsnhk',
|
|
740
|
+
name: 'Another Cred',
|
|
741
|
+
},
|
|
742
|
+
issuanceDate: '2025-11-25T13:44:36.365Z',
|
|
743
|
+
issuer: 'did:cheqd:testnet:c0890f1c-c7bb-4ea6-be7a-8c31404743b7',
|
|
744
|
+
credentialSchema: {
|
|
745
|
+
id: 'https://schema.truvera.io/BasicCredential-V2-1703777584571.json',
|
|
746
|
+
type: 'JsonSchemaValidator2018',
|
|
747
|
+
},
|
|
748
|
+
name: 'Another Cred',
|
|
749
|
+
proof: {
|
|
750
|
+
type: 'Ed25519Signature2018',
|
|
751
|
+
created: '2025-11-25T13:45:06Z',
|
|
752
|
+
verificationMethod:
|
|
753
|
+
'did:cheqd:testnet:c0890f1c-c7bb-4ea6-be7a-8c31404743b7#keys-1',
|
|
754
|
+
proofPurpose: 'assertionMethod',
|
|
755
|
+
jws: 'eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..x1EjlAHJwJFwKfXtbAegJ8xOycY5m47yvvOQm-0sLzzuvSjbSKerIkphQ8w5J0_MJONb-j1-UE0NWZ9quM4CAQ',
|
|
756
|
+
},
|
|
757
|
+
};
|
|
758
|
+
|
|
759
|
+
const basicCredential2 = {
|
|
760
|
+
'@context': [
|
|
761
|
+
'https://www.w3.org/2018/credentials/v1',
|
|
762
|
+
'https://ld.truvera.io/credentials/extensions-v1',
|
|
763
|
+
{
|
|
764
|
+
BasicCredential: 'dk:BasicCredential',
|
|
765
|
+
dk: 'https://ld.truvera.io/credentials#',
|
|
766
|
+
},
|
|
767
|
+
'https://ld.truvera.io/credentials/prettyvc',
|
|
768
|
+
],
|
|
769
|
+
id: 'https://creds.truvera.io/86bdd6cc4d4915939bc2c11a0f8c7ebd64ef0872da02627ab9d7e6866fe2effb',
|
|
770
|
+
type: [
|
|
771
|
+
'VerifiableCredential',
|
|
772
|
+
'BasicCredential',
|
|
773
|
+
'PrettyVerifiableCredential',
|
|
774
|
+
],
|
|
775
|
+
credentialSubject: {
|
|
776
|
+
name: 'test',
|
|
777
|
+
},
|
|
778
|
+
issuanceDate: '2025-11-25T13:42:02.877Z',
|
|
779
|
+
issuer: 'did:cheqd:testnet:c0890f1c-c7bb-4ea6-be7a-8c31404743b7',
|
|
780
|
+
credentialSchema: {
|
|
781
|
+
id: 'https://schema.truvera.io/BasicCredential-V2-1703777584571.json',
|
|
782
|
+
type: 'JsonSchemaValidator2018',
|
|
783
|
+
},
|
|
784
|
+
name: 'test',
|
|
785
|
+
proof: {
|
|
786
|
+
type: 'Ed25519Signature2018',
|
|
787
|
+
created: '2025-11-25T13:42:42Z',
|
|
788
|
+
verificationMethod:
|
|
789
|
+
'did:cheqd:testnet:c0890f1c-c7bb-4ea6-be7a-8c31404743b7#keys-1',
|
|
790
|
+
proofPurpose: 'assertionMethod',
|
|
791
|
+
jws: 'eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..R-cJhQlBr3TJS6ArSIBwLjLcQO-yuPZ5FUY5zGe6TYIJNm0teHFvgFHjg_-Y9VeuhLZprVNufXyqLoPSkTC7CQ',
|
|
792
|
+
},
|
|
793
|
+
};
|
|
794
|
+
|
|
795
|
+
const universityDegreeCredential = {
|
|
796
|
+
'@context': [
|
|
797
|
+
'https://www.w3.org/2018/credentials/v1',
|
|
798
|
+
'https://ld.truvera.io/credentials/extensions-v1',
|
|
799
|
+
{
|
|
800
|
+
UniversityDegree: 'dk:UniversityDegree',
|
|
801
|
+
additionalDistinctions: 'dk:additionalDistinctions',
|
|
802
|
+
awardedDate: 'dk:awardedDate',
|
|
803
|
+
dateOfBirth: 'dk:dateOfBirth',
|
|
804
|
+
degreeName: 'dk:degreeName',
|
|
805
|
+
degreeType: 'dk:degreeType',
|
|
806
|
+
dk: 'https://ld.truvera.io/credentials#',
|
|
807
|
+
},
|
|
808
|
+
'https://ld.truvera.io/credentials/prettyvc',
|
|
809
|
+
],
|
|
810
|
+
id: 'https://creds.truvera.io/4343d71719d56e2a3461f24a522229f2c89a3bef68ad2664e1f48d70002034c4',
|
|
811
|
+
type: [
|
|
812
|
+
'VerifiableCredential',
|
|
813
|
+
'UniversityDegree',
|
|
814
|
+
'PrettyVerifiableCredential',
|
|
815
|
+
],
|
|
816
|
+
credentialSubject: {
|
|
817
|
+
id: 'did:key:z6Mktpass177BSFLMuCpNJzCyrLeAUs16XUmg15VLHCQsnhk',
|
|
818
|
+
degreeName: 'testing',
|
|
819
|
+
degreeType: 'testing',
|
|
820
|
+
name: 'Tester',
|
|
821
|
+
awardedDate: '2025-11-20',
|
|
822
|
+
dateOfBirth: '2025-11-20',
|
|
823
|
+
additionalDistinctions: 'test',
|
|
824
|
+
},
|
|
825
|
+
issuanceDate: '2025-11-25T13:45:25.699Z',
|
|
826
|
+
issuer: 'did:cheqd:testnet:c0890f1c-c7bb-4ea6-be7a-8c31404743b7',
|
|
827
|
+
credentialSchema: {
|
|
828
|
+
id: 'https://schema.truvera.io/UniversityDegree-V1-1703767509472.json',
|
|
829
|
+
type: 'JsonSchemaValidator2018',
|
|
830
|
+
},
|
|
831
|
+
name: 'University Degree',
|
|
832
|
+
proof: {
|
|
833
|
+
type: 'Ed25519Signature2018',
|
|
834
|
+
created: '2025-11-25T13:46:09Z',
|
|
835
|
+
verificationMethod:
|
|
836
|
+
'did:cheqd:testnet:c0890f1c-c7bb-4ea6-be7a-8c31404743b7#keys-1',
|
|
837
|
+
proofPurpose: 'assertionMethod',
|
|
838
|
+
jws: 'eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..lb0SOlbNGZAEnGOqnaFg-fTSSOp-EWCMdMtKkjVasRkPjwAVSSK4VZmjis3Czdacbhl8VL0q3f6Ow4rge3eHDQ',
|
|
839
|
+
},
|
|
840
|
+
};
|
|
841
|
+
|
|
842
|
+
it('should return true if the credential selection is valid', () => {
|
|
843
|
+
expect(
|
|
844
|
+
pexService.isCredentialSelectionValid({
|
|
845
|
+
credentials: [basicCredential1, universityDegreeCredential],
|
|
846
|
+
presentationDefinition: presentationDefinition,
|
|
847
|
+
}),
|
|
848
|
+
).toBe(true);
|
|
849
|
+
});
|
|
850
|
+
|
|
851
|
+
it('should return false if the credential selection is invalid', () => {
|
|
852
|
+
expect(
|
|
853
|
+
pexService.isCredentialSelectionValid({
|
|
854
|
+
credentials: [basicCredential1, basicCredential2],
|
|
855
|
+
presentationDefinition: presentationDefinition,
|
|
856
|
+
}),
|
|
857
|
+
).toBe(false);
|
|
858
|
+
});
|
|
859
|
+
});
|
|
650
860
|
});
|
|
@@ -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();
|