@docknetwork/wallet-sdk-core 0.4.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/LICENSE +39 -0
  2. package/babel.config.js +16 -0
  3. package/jest.config.ts +39 -0
  4. package/lib/account-provider.d.ts +8 -0
  5. package/lib/account-provider.d.ts.map +1 -0
  6. package/lib/account-provider.js +15 -0
  7. package/lib/account-provider.js.map +1 -0
  8. package/lib/biometric-provider.d.ts +29 -0
  9. package/lib/biometric-provider.d.ts.map +1 -0
  10. package/lib/biometric-provider.js +54 -0
  11. package/lib/biometric-provider.js.map +1 -0
  12. package/lib/credential-provider.d.ts +58 -0
  13. package/lib/credential-provider.d.ts.map +1 -0
  14. package/lib/credential-provider.js +198 -0
  15. package/lib/credential-provider.js.map +1 -0
  16. package/lib/did-provider.d.ts +79 -0
  17. package/lib/did-provider.d.ts.map +1 -0
  18. package/lib/did-provider.js +215 -0
  19. package/lib/did-provider.js.map +1 -0
  20. package/lib/ecosystem-tools.d.ts +11 -0
  21. package/lib/ecosystem-tools.d.ts.map +1 -0
  22. package/lib/ecosystem-tools.js +33 -0
  23. package/lib/ecosystem-tools.js.map +1 -0
  24. package/lib/helpers.d.ts +8 -0
  25. package/lib/helpers.d.ts.map +1 -0
  26. package/lib/helpers.js +63 -0
  27. package/lib/helpers.js.map +1 -0
  28. package/lib/message-provider.d.ts +36 -0
  29. package/lib/message-provider.d.ts.map +1 -0
  30. package/lib/message-provider.js +172 -0
  31. package/lib/message-provider.js.map +1 -0
  32. package/lib/messages/message-helpers.d.ts +110 -0
  33. package/lib/messages/message-helpers.d.ts.map +1 -0
  34. package/lib/messages/message-helpers.js +106 -0
  35. package/lib/messages/message-helpers.js.map +1 -0
  36. package/lib/network-resolver.d.ts +19 -0
  37. package/lib/network-resolver.d.ts.map +1 -0
  38. package/lib/network-resolver.js +80 -0
  39. package/lib/network-resolver.js.map +1 -0
  40. package/lib/types.d.ts +63 -0
  41. package/lib/types.d.ts.map +1 -0
  42. package/lib/types.js +3 -0
  43. package/lib/types.js.map +1 -0
  44. package/lib/v1-helpers.d.ts +20 -0
  45. package/lib/v1-helpers.d.ts.map +1 -0
  46. package/lib/v1-helpers.js +147 -0
  47. package/lib/v1-helpers.js.map +1 -0
  48. package/lib/verification-controller.d.ts +48 -0
  49. package/lib/verification-controller.d.ts.map +1 -0
  50. package/lib/verification-controller.js +219 -0
  51. package/lib/verification-controller.js.map +1 -0
  52. package/lib/wallet-to-wallet-verification/walletToWalletVerificationProvider.d.ts +20 -0
  53. package/lib/wallet-to-wallet-verification/walletToWalletVerificationProvider.d.ts.map +1 -0
  54. package/lib/wallet-to-wallet-verification/walletToWalletVerificationProvider.js +140 -0
  55. package/lib/wallet-to-wallet-verification/walletToWalletVerificationProvider.js.map +1 -0
  56. package/lib/wallet-wasm.d.ts +10 -0
  57. package/lib/wallet-wasm.d.ts.map +1 -0
  58. package/lib/wallet-wasm.js +62 -0
  59. package/lib/wallet-wasm.js.map +1 -0
  60. package/lib/wallet.d.ts +11 -0
  61. package/lib/wallet.d.ts.map +1 -0
  62. package/lib/wallet.js +173 -0
  63. package/lib/wallet.js.map +1 -0
  64. package/package.json +34 -0
  65. package/setup-tests.ts +1 -0
  66. package/src/account-provider.ts +18 -0
  67. package/src/biometric-provider.ts +82 -0
  68. package/src/credential-provider.test.ts +164 -0
  69. package/src/credential-provider.ts +272 -0
  70. package/src/did-provider.test.ts +203 -0
  71. package/src/did-provider.ts +263 -0
  72. package/src/ecosystem-tools.ts +37 -0
  73. package/src/fixtures/any-credential-proof-request.json +30 -0
  74. package/src/fixtures/biometrics-credential-bbs-revocation.json +62 -0
  75. package/src/fixtures/customer-credential.json +39 -0
  76. package/src/fixtures/iiw-credential.json +59 -0
  77. package/src/fixtures/iiw-template.json +33 -0
  78. package/src/fixtures/university-degree-bbs.json +57 -0
  79. package/src/fixtures/university-degree-proof-request.json +32 -0
  80. package/src/helpers.ts +61 -0
  81. package/src/message-provider.test.ts +115 -0
  82. package/src/message-provider.ts +221 -0
  83. package/src/messages/message-helpers.ts +125 -0
  84. package/src/messages/relay-service-mocks/demo-app-messages.json +450 -0
  85. package/src/network-resolver.test.ts +142 -0
  86. package/src/network-resolver.ts +122 -0
  87. package/src/types.ts +75 -0
  88. package/src/v1-helpers.ts +160 -0
  89. package/src/verification-controller.test.ts +149 -0
  90. package/src/verification-controller.ts +276 -0
  91. package/src/wallet-to-wallet-verification/walletToWalletVerificationProvider.ts +216 -0
  92. package/src/wallet-wasm.ts +74 -0
  93. package/src/wallet.test.ts +72 -0
  94. package/src/wallet.ts +211 -0
  95. package/tsconfig.build.json +26 -0
  96. package/tsconfig.build.tsbuildinfo +1 -0
  97. package/tsconfig.json +30 -0
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createVerificationController = exports.VerificationStatus = void 0;
7
+ const helpers_1 = require("./helpers");
8
+ const pex_1 = require("@docknetwork/wallet-sdk-wasm/src/services/pex");
9
+ const credential_1 = require("@docknetwork/wallet-sdk-wasm/src/services/credential");
10
+ const credential_provider_1 = require("./credential-provider");
11
+ const events_1 = require("events");
12
+ const axios_1 = __importDefault(require("axios"));
13
+ const assert_1 = __importDefault(require("assert"));
14
+ const did_provider_1 = require("./did-provider");
15
+ var VerificationStatus;
16
+ (function (VerificationStatus) {
17
+ VerificationStatus["Started"] = "Started";
18
+ VerificationStatus["LoadingTemplate"] = "LoadingTemplate";
19
+ VerificationStatus["Filtering"] = "Filtering";
20
+ VerificationStatus["FetchingProvingKey"] = "FetchingProvingKey";
21
+ VerificationStatus["Error"] = "Error";
22
+ VerificationStatus["NoCredentialsInTheWallet"] = "NoCredentialsInTheWallet";
23
+ VerificationStatus["SelectingCredentials"] = "SelectingCredentials";
24
+ })(VerificationStatus || (exports.VerificationStatus = VerificationStatus = {}));
25
+ function isRangeProofTemplate(templateJSON) {
26
+ return templateJSON.proving_key;
27
+ }
28
+ function createVerificationController({ wallet, credentialProvider, didProvider, }) {
29
+ const emitter = new events_1.EventEmitter();
30
+ let templateJSON = null;
31
+ let status = VerificationStatus.Started;
32
+ /**
33
+ * Extra data to give better context to the current state
34
+ * Can be used to show error messages, or more specific information about the state
35
+ */
36
+ let statusData = null;
37
+ let filteredCredentials = [];
38
+ let selectedCredentials = new Map();
39
+ let selectedDID = null;
40
+ let provingKey = null;
41
+ if (!credentialProvider) {
42
+ credentialProvider = (0, credential_provider_1.createCredentialProvider)({ wallet });
43
+ }
44
+ if (!didProvider) {
45
+ didProvider = (0, did_provider_1.createDIDProvider)({ wallet });
46
+ }
47
+ async function fetchProvingKey(templateJSON) {
48
+ if (templateJSON.proving_key) {
49
+ setState(VerificationStatus.FetchingProvingKey);
50
+ try {
51
+ provingKey = await axios_1.default
52
+ .get(templateJSON.proving_key)
53
+ .then(res => res.data);
54
+ }
55
+ catch (err) {
56
+ setState(VerificationStatus.Error, {
57
+ message: 'failed_to_fetch_proving_key',
58
+ });
59
+ throw err;
60
+ }
61
+ }
62
+ }
63
+ async function start({ template }) {
64
+ setState(VerificationStatus.LoadingTemplate);
65
+ // check for dids
66
+ const dids = await didProvider.getAll();
67
+ if (!dids.length) {
68
+ setState(VerificationStatus.Error, {
69
+ message: 'no_dids_in_the_wallet',
70
+ });
71
+ throw new Error('No DIDs in the wallet');
72
+ }
73
+ // the application needs to verify if there are more DIDs available, and allow the user to change this selection before creating a presentation
74
+ selectedDID = dids[0].didDocument.id;
75
+ templateJSON = await (0, helpers_1.getJSON)(template);
76
+ await fetchProvingKey(templateJSON);
77
+ await loadCredentials();
78
+ setState(VerificationStatus.SelectingCredentials);
79
+ }
80
+ function setState(_status, data) {
81
+ status = _status;
82
+ statusData = data;
83
+ emitter.emit(_status, data);
84
+ }
85
+ async function loadCredentials() {
86
+ setState(VerificationStatus.Filtering);
87
+ // get wallet credentials and apply pex filter
88
+ const allCredentials = await credentialProvider.getCredentials();
89
+ if (!allCredentials.length) {
90
+ setState(VerificationStatus.NoCredentialsInTheWallet);
91
+ return;
92
+ }
93
+ try {
94
+ const result = await pex_1.pexService.filterCredentials({
95
+ credentials: allCredentials,
96
+ presentationDefinition: getPresentationDefinition(),
97
+ holderDIDs: [],
98
+ });
99
+ filteredCredentials = result.verifiableCredential;
100
+ }
101
+ catch (err) {
102
+ console.error(`Unable to filter credentials using the template: \n ${JSON.stringify(templateJSON, null, 2)}`);
103
+ console.error(err);
104
+ setState(VerificationStatus.Error);
105
+ throw err;
106
+ }
107
+ }
108
+ function getPresentationDefinition() {
109
+ return templateJSON.request;
110
+ }
111
+ async function isBBSPlusCredential(credential) {
112
+ return credential_1.credentialServiceRPC.isBBSPlusCredential({ credential });
113
+ }
114
+ async function createPresentation() {
115
+ (0, assert_1.default)(!!selectedDID, 'No DID selected');
116
+ (0, assert_1.default)(!!selectedCredentials.size, 'No credentials selected');
117
+ if (isRangeProofTemplate(templateJSON)) {
118
+ // TODO: Implement proving key usage for range-proofs
119
+ (0, assert_1.default)(!!provingKey, 'No proving key found');
120
+ }
121
+ const credentials = [];
122
+ for (const credentialSelection of selectedCredentials.values()) {
123
+ const isBBS = await isBBSPlusCredential(credentialSelection.credential);
124
+ if (!isBBS) {
125
+ credentials.push(credentialSelection.credential);
126
+ }
127
+ else {
128
+ // derive BBS credential
129
+ const derivedCredentials = await credential_1.credentialServiceRPC.deriveVCFromBBSPresentation({
130
+ proofRequest: templateJSON,
131
+ credentials: [
132
+ {
133
+ credential: credentialSelection.credential,
134
+ witness: await credentialProvider.getMembershipWitness(credentialSelection.credential.id),
135
+ attributesToReveal: [
136
+ ...(credentialSelection.attributesToReveal || []),
137
+ 'id',
138
+ ],
139
+ },
140
+ ],
141
+ });
142
+ console.log('Credential derived');
143
+ credentials.push(derivedCredentials[0]);
144
+ }
145
+ }
146
+ const didKeyPairList = await didProvider.getDIDKeyPairs();
147
+ const keyDoc = didKeyPairList.find(doc => doc.controller === selectedDID);
148
+ (0, assert_1.default)(keyDoc, `No key pair found for the selected DID ${selectedDID}`);
149
+ const presentation = await credential_1.credentialServiceRPC.createPresentation({
150
+ credentials,
151
+ challenge: templateJSON.nonce,
152
+ keyDoc,
153
+ id: keyDoc.controller.startsWith('did:key:')
154
+ ? keyDoc.id
155
+ : `${keyDoc.controller}#keys-1`,
156
+ domain: 'dock.io',
157
+ });
158
+ return presentation;
159
+ }
160
+ /**
161
+ * Filtered credentials
162
+ */
163
+ function getFilteredCredentials() {
164
+ return filteredCredentials;
165
+ }
166
+ function getStatus() {
167
+ return status;
168
+ }
169
+ function getStatusData() {
170
+ return statusData;
171
+ }
172
+ function setSelectedDID(did) {
173
+ selectedDID = did;
174
+ }
175
+ /**
176
+ * Use pex to evaluate presentation
177
+ *
178
+ * @param presentation
179
+ */
180
+ function evaluatePresentation(presentation) {
181
+ const definition = getPresentationDefinition();
182
+ const result = credential_1.credentialServiceRPC.evaluatePresentation({
183
+ presentation,
184
+ presentationDefinition: definition,
185
+ });
186
+ return {
187
+ isValid: result.errors.length === 0,
188
+ errors: result.errors,
189
+ warnings: result.warnings,
190
+ };
191
+ }
192
+ function submitPresentation(presentation) {
193
+ return axios_1.default
194
+ .post(templateJSON.response_url, presentation)
195
+ .then(res => res.data);
196
+ }
197
+ return {
198
+ emitter,
199
+ selectedCredentials,
200
+ getStatus,
201
+ getStatusData,
202
+ submitPresentation,
203
+ getSelectedDID() {
204
+ return selectedDID;
205
+ },
206
+ setSelectedDID,
207
+ start,
208
+ isBBSPlusCredential,
209
+ loadCredentials,
210
+ getFilteredCredentials,
211
+ createPresentation,
212
+ evaluatePresentation,
213
+ getTemplateJSON() {
214
+ return templateJSON;
215
+ },
216
+ };
217
+ }
218
+ exports.createVerificationController = createVerificationController;
219
+ //# sourceMappingURL=verification-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-controller.js","sourceRoot":"","sources":["../src/verification-controller.ts"],"names":[],"mappings":";;;;;;AAAA,uCAAkC;AAClC,uEAAyE;AACzE,qFAA0F;AAC1F,+DAG+B;AAE/B,mCAAoC;AACpC,kDAA0B;AAC1B,oDAA4B;AAC5B,iDAA+D;AAG/D,IAAY,kBAQX;AARD,WAAY,kBAAkB;IAC5B,yCAAmB,CAAA;IACnB,yDAAmC,CAAA;IACnC,6CAAuB,CAAA;IACvB,+DAAyC,CAAA;IACzC,qCAAe,CAAA;IACf,2EAAqD,CAAA;IACrD,mEAA6C,CAAA;AAC/C,CAAC,EARW,kBAAkB,kCAAlB,kBAAkB,QAQ7B;AAED,SAAS,oBAAoB,CAAC,YAAY;IACxC,OAAO,YAAY,CAAC,WAAW,CAAC;AAClC,CAAC;AASD,SAAgB,4BAA4B,CAAC,EAC3C,MAAM,EACN,kBAAkB,EAClB,WAAW,GAKZ;IACC,MAAM,OAAO,GAAG,IAAI,qBAAY,EAAE,CAAC;IACnC,IAAI,YAAY,GAAG,IAAI,CAAC;IACxB,IAAI,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACxC;;;OAGG;IACH,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,mBAAmB,GAAG,EAAE,CAAC;IAC7B,IAAI,mBAAmB,GAA2B,IAAI,GAAG,EAAE,CAAC;IAC5D,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,IAAI,UAAU,GAAG,IAAI,CAAC;IAEtB,IAAI,CAAC,kBAAkB,EAAE;QACvB,kBAAkB,GAAG,IAAA,8CAAwB,EAAC,EAAC,MAAM,EAAC,CAAC,CAAC;KACzD;IAED,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,GAAG,IAAA,gCAAiB,EAAC,EAAC,MAAM,EAAC,CAAC,CAAC;KAC3C;IAED,KAAK,UAAU,eAAe,CAAC,YAAiB;QAC9C,IAAI,YAAY,CAAC,WAAW,EAAE;YAC5B,QAAQ,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;YAChD,IAAI;gBACF,UAAU,GAAG,MAAM,eAAK;qBACrB,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC;qBAC7B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAC1B;YAAC,OAAO,GAAG,EAAE;gBACZ,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE;oBACjC,OAAO,EAAE,6BAA6B;iBACvC,CAAC,CAAC;gBAEH,MAAM,GAAG,CAAC;aACX;SACF;IACH,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,EAAC,QAAQ,EAA2B;QACvD,QAAQ,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;QAE7C,iBAAiB;QACjB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QAExC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,QAAQ,CAAC,kBAAkB,CAAC,KAAK,EAAE;gBACjC,OAAO,EAAE,uBAAuB;aACjC,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAC1C;QAED,+IAA+I;QAC/I,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,YAAY,GAAG,MAAM,IAAA,iBAAO,EAAC,QAAQ,CAAC,CAAC;QAEvC,MAAM,eAAe,CAAC,YAAY,CAAC,CAAC;QACpC,MAAM,eAAe,EAAE,CAAC;QAExB,QAAQ,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC;IACpD,CAAC;IAED,SAAS,QAAQ,CAAC,OAA2B,EAAE,IAAU;QACvD,MAAM,GAAG,OAAO,CAAC;QACjB,UAAU,GAAG,IAAI,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,UAAU,eAAe;QAC5B,QAAQ,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAEvC,8CAA8C;QAC9C,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,cAAc,EAAE,CAAC;QAEjE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YAC1B,QAAQ,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;YACtD,OAAO;SACR;QAED,IAAI;YACF,MAAM,MAAM,GAAG,MAAM,gBAAU,CAAC,iBAAiB,CAAC;gBAChD,WAAW,EAAE,cAAc;gBAC3B,sBAAsB,EAAE,yBAAyB,EAAE;gBACnD,UAAU,EAAE,EAAE;aACf,CAAC,CAAC;YAEH,mBAAmB,GAAG,MAAM,CAAC,oBAAoB,CAAC;SACnD;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CACX,uDAAuD,IAAI,CAAC,SAAS,CACnE,YAAY,EACZ,IAAI,EACJ,CAAC,CACF,EAAE,CACJ,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEnB,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,GAAG,CAAC;SACX;IACH,CAAC;IAED,SAAS,yBAAyB;QAChC,OAAO,YAAY,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,KAAK,UAAU,mBAAmB,CAAC,UAAU;QAC3C,OAAO,iCAAoB,CAAC,mBAAmB,CAAC,EAAC,UAAU,EAAC,CAAC,CAAC;IAChE,CAAC;IAED,KAAK,UAAU,kBAAkB;QAC/B,IAAA,gBAAM,EAAC,CAAC,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;QACzC,IAAA,gBAAM,EAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAE9D,IAAI,oBAAoB,CAAC,YAAY,CAAC,EAAE;YACtC,qDAAqD;YACrD,IAAA,gBAAM,EAAC,CAAC,CAAC,UAAU,EAAE,sBAAsB,CAAC,CAAC;SAC9C;QAED,MAAM,WAAW,GAAG,EAAE,CAAC;QAEvB,KAAK,MAAM,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,EAAE,EAAE;YAC9D,MAAM,KAAK,GAAG,MAAM,mBAAmB,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YAExE,IAAI,CAAC,KAAK,EAAE;gBACV,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;aAClD;iBAAM;gBACL,wBAAwB;gBACxB,MAAM,kBAAkB,GACtB,MAAM,iCAAoB,CAAC,2BAA2B,CAAC;oBACrD,YAAY,EAAE,YAAY;oBAE1B,WAAW,EAAE;wBACX;4BACE,UAAU,EAAE,mBAAmB,CAAC,UAAU;4BAC1C,OAAO,EAAE,MAAM,kBAAkB,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,UAAU,CAAC,EAAE,CAAC;4BACzF,kBAAkB,EAAE;gCAClB,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,IAAI,EAAE,CAAC;gCACjD,IAAI;6BACL;yBACF;qBACF;iBACF,CAAC,CAAC;gBAEL,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;gBAElC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;aACzC;SACF;QAED,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC;QAE1E,IAAA,gBAAM,EAAC,MAAM,EAAE,0CAA0C,WAAW,EAAE,CAAC,CAAC;QAExE,MAAM,YAAY,GAAG,MAAM,iCAAoB,CAAC,kBAAkB,CAAC;YACjE,WAAW;YACX,SAAS,EAAE,YAAY,CAAC,KAAK;YAC7B,MAAM;YACN,EAAE,EAAE,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC1C,CAAC,CAAC,MAAM,CAAC,EAAE;gBACX,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,SAAS;YACjC,MAAM,EAAE,SAAS;SAClB,CAAC,CAAC;QAEH,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,SAAS,sBAAsB;QAC7B,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAED,SAAS,SAAS;QAChB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,SAAS,aAAa;QACpB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,SAAS,cAAc,CAAC,GAAW;QACjC,WAAW,GAAG,GAAG,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACH,SAAS,oBAAoB,CAAC,YAAY;QACxC,MAAM,UAAU,GAAG,yBAAyB,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,iCAAoB,CAAC,oBAAoB,CAAC;YACvD,YAAY;YACZ,sBAAsB,EAAE,UAAU;SACnC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACnC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;IACJ,CAAC;IAED,SAAS,kBAAkB,CAAC,YAAY;QACtC,OAAO,eAAK;aACT,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,CAAC;aAC7C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,OAAO;QACP,mBAAmB;QACnB,SAAS;QACT,aAAa;QACb,kBAAkB;QAClB,cAAc;YACZ,OAAO,WAAW,CAAC;QACrB,CAAC;QACD,cAAc;QACd,KAAK;QACL,mBAAmB;QACnB,eAAe;QACf,sBAAsB;QACtB,kBAAkB;QAClB,oBAAoB;QACpB,eAAe;YACb,OAAO,YAAY,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AAhPD,oEAgPC"}
@@ -0,0 +1,20 @@
1
+ import { IDIDProvider } from '../did-provider';
2
+ import { IWallet } from '../types';
3
+ import { IMessageProvider } from '../message-provider';
4
+ export interface IWalletToWalletVerificationProvider {
5
+ getInvitationOOBMessage: ({ templateId }: {
6
+ templateId: string;
7
+ }) => Promise<any>;
8
+ setProofRequestHandler: (handler: (proofRequest: any) => any) => Promise<void>;
9
+ setPresentationHandler: (handler: (presentation: any, proofRequest: any) => any) => Promise<void>;
10
+ setPresentationAckHandler: (handler: (proofRequest: any) => any) => Promise<void>;
11
+ addProofRequestTemplate: (proofRequestTemplate: any) => Promise<any>;
12
+ getProofRequestTemplates: () => Promise<any[]>;
13
+ handleMessage: (message: any) => Promise<boolean>;
14
+ }
15
+ export declare function createWalletToWalletVerificationProvider({ wallet, didProvider, messageProvider, }: {
16
+ wallet: IWallet;
17
+ didProvider: IDIDProvider;
18
+ messageProvider: IMessageProvider;
19
+ }): IWalletToWalletVerificationProvider;
20
+ //# sourceMappingURL=walletToWalletVerificationProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletToWalletVerificationProvider.d.ts","sourceRoot":"","sources":["../../src/wallet-to-wallet-verification/walletToWalletVerificationProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAU7C,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AACjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AAKrD,MAAM,WAAW,mCAAmC;IAClD,uBAAuB,EAAE,CAAC,EAAC,UAAU,EAAC,EAAE;QAAC,UAAU,EAAE,MAAM,CAAA;KAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC9E,sBAAsB,EAAE,CACtB,OAAO,EAAE,CAAC,YAAY,EAAE,GAAG,KAAK,GAAG,KAChC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,sBAAsB,EAAE,CACtB,OAAO,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,KAAK,GAAG,KACnD,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,yBAAyB,EAAE,CACzB,OAAO,EAAE,CAAC,YAAY,EAAE,GAAG,KAAK,GAAG,KAChC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,uBAAuB,EAAE,CAAC,oBAAoB,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACrE,wBAAwB,EAAE,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,aAAa,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACnD;AAED,wBAAgB,wCAAwC,CAAC,EACvD,MAAM,EACN,WAAW,EACX,eAAe,GAChB,EAAE;IACD,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,YAAY,CAAC;IAC1B,eAAe,EAAE,gBAAgB,CAAC;CACnC,GAAG,mCAAmC,CA8KtC"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createWalletToWalletVerificationProvider = void 0;
7
+ const assert_1 = __importDefault(require("assert"));
8
+ const message_helpers_1 = require("../messages/message-helpers");
9
+ const logger_1 = require("@docknetwork/wallet-sdk-data-store/src/logger");
10
+ const ProofRequestTemplateType = 'ProofRequestTemplate';
11
+ function createWalletToWalletVerificationProvider({ wallet, didProvider, messageProvider, }) {
12
+ // Should be used by the HOLDER to create a presentation for the verifier
13
+ let proofRequestHandler;
14
+ // Should be used by the VERIFIER verify a presentation received by the holder
15
+ let presentationHandler;
16
+ // Can be used by the HOLDER to render the verification results sent by the verifier
17
+ let presentationAckHandler;
18
+ return {
19
+ getInvitationOOBMessage: async ({ templateId }) => {
20
+ const defaultDID = await didProvider.getDefaultDID();
21
+ const template = await wallet.getDocumentById(templateId);
22
+ (0, assert_1.default)(!!template, `Template with id ${templateId} not found`);
23
+ return (0, message_helpers_1.buildVerificationFlowInviteMessage)({
24
+ proofRequestId: templateId,
25
+ verifierDID: defaultDID,
26
+ });
27
+ },
28
+ setProofRequestHandler: async (handler) => {
29
+ proofRequestHandler = handler;
30
+ },
31
+ setPresentationHandler: async (handler) => {
32
+ presentationHandler = handler;
33
+ },
34
+ setPresentationAckHandler: async (handler) => {
35
+ presentationAckHandler = handler;
36
+ },
37
+ addProofRequestTemplate: async (proofRequestTemplate) => {
38
+ (0, assert_1.default)(!!proofRequestTemplate.input_descriptors, 'Input descriptions are required');
39
+ return wallet.addDocument({
40
+ type: ProofRequestTemplateType,
41
+ template: proofRequestTemplate,
42
+ });
43
+ },
44
+ getProofRequestTemplates: async () => {
45
+ return wallet.getDocumentsByType(ProofRequestTemplateType);
46
+ },
47
+ handleMessage: async (message) => {
48
+ logger_1.logger.debug('Received message');
49
+ logger_1.logger.debug(message);
50
+ if (message.type === message_helpers_1.MessageTypes.Invitation &&
51
+ message?.body?.goal_code === message_helpers_1.Goals.WalletToWalletVerification) {
52
+ // Received a verification invitation from the verifier
53
+ // Sends back an ack message to the verifier
54
+ const defaultDID = await didProvider.getDefaultDID();
55
+ logger_1.logger.debug('Received invitation');
56
+ logger_1.logger.debug('Sending ack message to the verifier');
57
+ messageProvider.sendMessage((0, message_helpers_1.buildAckWalletToWalletVerificationMessage)({
58
+ holderDID: defaultDID,
59
+ proofRequestId: message.body.proofRequestId,
60
+ verifierDID: message.from,
61
+ }));
62
+ return true;
63
+ }
64
+ // The holder sent an ack message to the verifier invite
65
+ // Now the verifier knows the holder did and can offer a proof request
66
+ if (message.type === message_helpers_1.MessageTypes.Ack &&
67
+ message?.body?.goal_code === message_helpers_1.Goals.WalletToWalletVerification) {
68
+ async function process() {
69
+ logger_1.logger.debug(message);
70
+ const templateId = message.body.proofRequestId;
71
+ (0, assert_1.default)(!!templateId, 'Template ID not found in ack message');
72
+ const defaultDID = await didProvider.getDefaultDID();
73
+ const proofRequestTemplate = await wallet.getDocumentById(templateId);
74
+ (0, assert_1.default)(!!proofRequestTemplate, 'Proof request template not found');
75
+ logger_1.logger.debug('Sending proof request to the holder');
76
+ const proofRequest = proofRequestTemplate.template;
77
+ (0, assert_1.default)(!!proofRequest, 'Proof request not found');
78
+ messageProvider.sendMessage((0, message_helpers_1.buildRequestVerifiablePresentationMessage)({
79
+ proofRequestId: templateId,
80
+ proofRequest: proofRequestTemplate.template,
81
+ holderDID: message.from,
82
+ verifierDID: defaultDID,
83
+ }));
84
+ }
85
+ process();
86
+ return true;
87
+ }
88
+ // The holder received a proof request from the verifier
89
+ if (message.type === message_helpers_1.MessageTypes.RequestPresentation) {
90
+ logger_1.logger.debug('Received proof request from the verifier');
91
+ (0, assert_1.default)(!!proofRequestHandler, 'No proof request handler set');
92
+ logger_1.logger.debug('Waiting for proofRequest handler to return a presentation');
93
+ Promise.resolve(proofRequestHandler(message.body.proofRequest)).then(async (presentation) => {
94
+ logger_1.logger.debug('Presentation received from handler');
95
+ const defaultDID = await didProvider.getDefaultDID();
96
+ logger_1.logger.debug('Sending presentation to the verifier');
97
+ messageProvider.sendMessage((0, message_helpers_1.buildVerifiablePresentationMessage)({
98
+ holderDID: defaultDID,
99
+ presentation,
100
+ proofRequestId: message.body.proofRequestId,
101
+ verifierDID: message.from,
102
+ }));
103
+ });
104
+ return true;
105
+ }
106
+ // The verifier received a presentation from the holder
107
+ if (message.type === message_helpers_1.MessageTypes.Presentation) {
108
+ logger_1.logger.debug('Received presentation from the holder');
109
+ const proofRequestTemplate = await wallet.getDocumentById(message.body.proofRequestId);
110
+ const proofRequest = proofRequestTemplate?.template;
111
+ (0, assert_1.default)(!!proofRequest, 'Proof request template not found');
112
+ logger_1.logger.debug('Waiting for presentation handler to return a presentation');
113
+ (0, assert_1.default)(!!presentationHandler, 'No presentation handler set');
114
+ Promise.resolve(presentationHandler(message.body.presentation, proofRequest)).then(async (presentationResult) => {
115
+ const defaultDID = await didProvider.getDefaultDID();
116
+ logger_1.logger.debug('Sending presentation ack to the holder');
117
+ messageProvider.sendMessage((0, message_helpers_1.buildVerifiablePresentationAckMessage)({
118
+ holderDID: message.from,
119
+ presentationResult,
120
+ proofRequestId: message.body.proofRequestId,
121
+ verifierDID: defaultDID,
122
+ }));
123
+ });
124
+ return true;
125
+ }
126
+ // The holder received a presentation ack from the verifier
127
+ if (message.type === message_helpers_1.MessageTypes.Ack &&
128
+ message.body.goal_code === message_helpers_1.Goals.PresentationAckFromVerifier) {
129
+ logger_1.logger.debug('Received presentation ack from the verifier');
130
+ logger_1.logger.debug('Presentation ack received');
131
+ if (presentationAckHandler) {
132
+ presentationAckHandler(message.body.presentationResult);
133
+ }
134
+ return true;
135
+ }
136
+ },
137
+ };
138
+ }
139
+ exports.createWalletToWalletVerificationProvider = createWalletToWalletVerificationProvider;
140
+ //# sourceMappingURL=walletToWalletVerificationProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletToWalletVerificationProvider.js","sourceRoot":"","sources":["../../src/wallet-to-wallet-verification/walletToWalletVerificationProvider.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAE5B,iEAQqC;AAGrC,0EAAqE;AAErE,MAAM,wBAAwB,GAAG,sBAAsB,CAAC;AAkBxD,SAAgB,wCAAwC,CAAC,EACvD,MAAM,EACN,WAAW,EACX,eAAe,GAKhB;IACC,yEAAyE;IACzE,IAAI,mBAAmB,CAAC;IACxB,8EAA8E;IAC9E,IAAI,mBAAmB,CAAC;IACxB,oFAAoF;IACpF,IAAI,sBAAsB,CAAC;IAE3B,OAAO;QACL,uBAAuB,EAAE,KAAK,EAAE,EAAC,UAAU,EAAC,EAAE,EAAE;YAC9C,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC;YACrD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAE1D,IAAA,gBAAM,EAAC,CAAC,CAAC,QAAQ,EAAE,oBAAoB,UAAU,YAAY,CAAC,CAAC;YAE/D,OAAO,IAAA,oDAAkC,EAAC;gBACxC,cAAc,EAAE,UAAU;gBAC1B,WAAW,EAAE,UAAU;aACxB,CAAC,CAAC;QACL,CAAC;QACD,sBAAsB,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;YACpE,mBAAmB,GAAG,OAAO,CAAC;QAChC,CAAC;QACD,sBAAsB,EAAE,KAAK,EAAE,OAAsD,EAAE,EAAE;YACvF,mBAAmB,GAAG,OAAO,CAAC;QAChC,CAAC;QACD,yBAAyB,EAAE,KAAK,EAAE,OAAmC,EAAE,EAAE;YACvE,sBAAsB,GAAG,OAAO,CAAC;QACnC,CAAC;QACD,uBAAuB,EAAE,KAAK,EAAE,oBAAyB,EAAE,EAAE;YAC3D,IAAA,gBAAM,EACJ,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,EACxC,iCAAiC,CAClC,CAAC;YACF,OAAO,MAAM,CAAC,WAAW,CAAC;gBACxB,IAAI,EAAE,wBAAwB;gBAC9B,QAAQ,EAAE,oBAAoB;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACnC,OAAO,MAAM,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;QAC7D,CAAC;QACD,aAAa,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;YACpC,eAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACjC,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtB,IACE,OAAO,CAAC,IAAI,KAAK,8BAAY,CAAC,UAAU;gBACxC,OAAO,EAAE,IAAI,EAAE,SAAS,KAAK,uBAAK,CAAC,0BAA0B,EAC7D;gBACA,uDAAuD;gBACvD,4CAA4C;gBAC5C,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC;gBACrD,eAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;gBACpC,eAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACpD,eAAe,CAAC,WAAW,CACzB,IAAA,2DAAyC,EAAC;oBACxC,SAAS,EAAE,UAAU;oBACrB,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc;oBAC3C,WAAW,EAAE,OAAO,CAAC,IAAI;iBAC1B,CAAC,CACH,CAAC;gBACF,OAAO,IAAI,CAAC;aACb;YAED,wDAAwD;YACxD,sEAAsE;YACtE,IACE,OAAO,CAAC,IAAI,KAAK,8BAAY,CAAC,GAAG;gBACjC,OAAO,EAAE,IAAI,EAAE,SAAS,KAAK,uBAAK,CAAC,0BAA0B,EAC7D;gBACA,KAAK,UAAU,OAAO;oBACpB,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACtB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;oBAC/C,IAAA,gBAAM,EAAC,CAAC,CAAC,UAAU,EAAE,sCAAsC,CAAC,CAAC;oBAC7D,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC;oBACrD,MAAM,oBAAoB,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;oBAEtE,IAAA,gBAAM,EAAC,CAAC,CAAC,oBAAoB,EAAE,kCAAkC,CAAC,CAAC;oBAEnE,eAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;oBAEpD,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,CAAC;oBAEnD,IAAA,gBAAM,EAAC,CAAC,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;oBAElD,eAAe,CAAC,WAAW,CACzB,IAAA,2DAAyC,EAAC;wBACxC,cAAc,EAAE,UAAU;wBAC1B,YAAY,EAAE,oBAAoB,CAAC,QAAQ;wBAC3C,SAAS,EAAE,OAAO,CAAC,IAAI;wBACvB,WAAW,EAAE,UAAU;qBACxB,CAAC,CACH,CAAC;gBACJ,CAAC;gBAED,OAAO,EAAE,CAAC;gBAEV,OAAO,IAAI,CAAC;aACb;YAED,wDAAwD;YACxD,IAAI,OAAO,CAAC,IAAI,KAAK,8BAAY,CAAC,mBAAmB,EAAE;gBACrD,eAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAEzD,IAAA,gBAAM,EAAC,CAAC,CAAC,mBAAmB,EAAE,8BAA8B,CAAC,CAAC;gBAE9D,eAAM,CAAC,KAAK,CACV,2DAA2D,CAC5D,CAAC;gBACF,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAClE,KAAK,EAAC,YAAY,EAAC,EAAE;oBACnB,eAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;oBACnD,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC;oBACrD,eAAM,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;oBACrD,eAAe,CAAC,WAAW,CACzB,IAAA,oDAAkC,EAAC;wBACjC,SAAS,EAAE,UAAU;wBACrB,YAAY;wBACZ,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc;wBAC3C,WAAW,EAAE,OAAO,CAAC,IAAI;qBAC1B,CAAC,CACH,CAAC;gBACJ,CAAC,CACF,CAAC;gBAEF,OAAO,IAAI,CAAC;aACb;YAED,uDAAuD;YACvD,IAAI,OAAO,CAAC,IAAI,KAAK,8BAAY,CAAC,YAAY,EAAE;gBAC9C,eAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;gBAEtD,MAAM,oBAAoB,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBACvF,MAAM,YAAY,GAAG,oBAAoB,EAAE,QAAQ,CAAC;gBAEpD,IAAA,gBAAM,EAAC,CAAC,CAAC,YAAY,EAAE,kCAAkC,CAAC,CAAC;gBAE3D,eAAM,CAAC,KAAK,CACV,2DAA2D,CAC5D,CAAC;gBACF,IAAA,gBAAM,EAAC,CAAC,CAAC,mBAAmB,EAAE,6BAA6B,CAAC,CAAC;gBAE7D,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAChF,KAAK,EAAC,kBAAkB,EAAC,EAAE;oBACzB,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,aAAa,EAAE,CAAC;oBACrD,eAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;oBACvD,eAAe,CAAC,WAAW,CACzB,IAAA,uDAAqC,EAAC;wBACpC,SAAS,EAAE,OAAO,CAAC,IAAI;wBACvB,kBAAkB;wBAClB,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc;wBAC3C,WAAW,EAAE,UAAU;qBACxB,CAAC,CACH,CAAC;gBACJ,CAAC,CACF,CAAC;gBAEF,OAAO,IAAI,CAAC;aACb;YAED,2DAA2D;YAC3D,IACE,OAAO,CAAC,IAAI,KAAK,8BAAY,CAAC,GAAG;gBACjC,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,uBAAK,CAAC,2BAA2B,EAC5D;gBACA,eAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;gBAC5D,eAAM,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAC1C,IAAI,sBAAsB,EAAE;oBAC1B,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;iBACzD;gBACD,OAAO,IAAI,CAAC;aACb;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAtLD,4FAsLC"}
@@ -0,0 +1,10 @@
1
+ import { IWallet } from './types';
2
+ /**
3
+ * Update existing substrate network connection
4
+ * Compare connected substrate connection with the current walle network
5
+ * Disconnect and Establish a new connection if the network is different
6
+ */
7
+ export declare function handleSubstrateNetworkChange(wallet: IWallet): Promise<void>;
8
+ export declare function setSubstrateNetwork(wallet: IWallet): Promise<void>;
9
+ export declare function initWalletWasm(wallet: IWallet): Promise<void>;
10
+ //# sourceMappingURL=wallet-wasm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-wasm.d.ts","sourceRoot":"","sources":["../src/wallet-wasm.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAShC;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,IAAI,CAAC,CAaf;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,OAAO,iBAqBxD;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,OAAO,iBAenD"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initWalletWasm = exports.setSubstrateNetwork = exports.handleSubstrateNetworkChange = void 0;
4
+ const keyring_1 = require("@docknetwork/wallet-sdk-wasm/src/services/keyring");
5
+ const util_crypto_1 = require("@docknetwork/wallet-sdk-wasm/src/services/util-crypto");
6
+ const dock_1 = require("@docknetwork/wallet-sdk-wasm/src/services/dock");
7
+ const wallet_1 = require("@docknetwork/wallet-sdk-wasm/src/modules/wallet");
8
+ const helpers_1 = require("./helpers");
9
+ function isSubstrateNetwork(network) {
10
+ return !!network.configs.substrateUrl;
11
+ }
12
+ /**
13
+ * Update existing substrate network connection
14
+ * Compare connected substrate connection with the current walle network
15
+ * Disconnect and Establish a new connection if the network is different
16
+ */
17
+ async function handleSubstrateNetworkChange(wallet) {
18
+ const currentSubstrateAddress = await dock_1.dockService.getAddress();
19
+ const substrateNetworkId = wallet.dataStore.networks.find(network => network.configs.substrateUrl === currentSubstrateAddress)?.id;
20
+ const currentNetworkId = wallet.dataStore.network?.id;
21
+ if (substrateNetworkId === currentNetworkId) {
22
+ return;
23
+ }
24
+ await dock_1.dockService.disconnect();
25
+ await setSubstrateNetwork(wallet);
26
+ }
27
+ exports.handleSubstrateNetworkChange = handleSubstrateNetworkChange;
28
+ async function setSubstrateNetwork(wallet) {
29
+ const network = wallet.dataStore.network;
30
+ const networkConfigs = network.configs;
31
+ await keyring_1.keyringService.initialize({
32
+ ss58Format: networkConfigs.addressPrefix,
33
+ });
34
+ dock_1.dockService
35
+ .init({
36
+ address: networkConfigs.substrateUrl,
37
+ })
38
+ .then(() => {
39
+ wallet.eventManager.emit(wallet_1.WalletEvents.networkConnected);
40
+ })
41
+ .catch(err => {
42
+ (0, helpers_1.captureException)(new Error('Unable to connect to substrate node'));
43
+ (0, helpers_1.captureException)(err);
44
+ console.error(err);
45
+ wallet.eventManager.emit(wallet_1.WalletEvents.networkError, err);
46
+ });
47
+ }
48
+ exports.setSubstrateNetwork = setSubstrateNetwork;
49
+ async function initWalletWasm(wallet) {
50
+ await util_crypto_1.utilCryptoService.cryptoWaitReady();
51
+ const network = wallet.dataStore.network;
52
+ if (isSubstrateNetwork(network)) {
53
+ await setSubstrateNetwork(wallet);
54
+ wallet.eventManager.on(wallet_1.WalletEvents.networkUpdated, async () => {
55
+ handleSubstrateNetworkChange(wallet);
56
+ });
57
+ }
58
+ wallet.setStatus('ready');
59
+ wallet.eventManager.emit(wallet_1.WalletEvents.ready);
60
+ }
61
+ exports.initWalletWasm = initWalletWasm;
62
+ //# sourceMappingURL=wallet-wasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet-wasm.js","sourceRoot":"","sources":["../src/wallet-wasm.ts"],"names":[],"mappings":";;;AAAA,+EAAiF;AACjF,uFAAwF;AACxF,yEAA2E;AAI3E,4EAA6E;AAC7E,uCAA6C;AAE7C,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;AACxC,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,4BAA4B,CAChD,MAAe;IAEf,MAAM,uBAAuB,GAAG,MAAM,kBAAW,CAAC,UAAU,EAAE,CAAC;IAC/D,MAAM,kBAAkB,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CACvD,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,KAAK,uBAAuB,CACpE,EAAE,EAAE,CAAC;IACN,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;IAEtD,IAAI,kBAAkB,KAAK,gBAAgB,EAAE;QAC3C,OAAO;KACR;IAED,MAAM,kBAAW,CAAC,UAAU,EAAE,CAAC;IAC/B,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;AACpC,CAAC;AAfD,oEAeC;AAEM,KAAK,UAAU,mBAAmB,CAAC,MAAe;IACvD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;IACzC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAEvC,MAAM,wBAAc,CAAC,UAAU,CAAC;QAC9B,UAAU,EAAE,cAAc,CAAC,aAAa;KACzC,CAAC,CAAC;IAEH,kBAAW;SACR,IAAI,CAAC;QACJ,OAAO,EAAE,cAAc,CAAC,YAAY;KACrC,CAAC;SACD,IAAI,CAAC,GAAG,EAAE;QACT,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAY,CAAC,gBAAgB,CAAC,CAAC;IAC1D,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,CAAC,EAAE;QACX,IAAA,0BAAgB,EAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;QACnE,IAAA,0BAAgB,EAAC,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;AACP,CAAC;AArBD,kDAqBC;AAEM,KAAK,UAAU,cAAc,CAAC,MAAe;IAClD,MAAM,+BAAiB,CAAC,eAAe,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;IAEzC,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAC/B,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,qBAAY,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;YAC7D,4BAA4B,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;KACJ;IAED,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAE1B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAY,CAAC,KAAK,CAAC,CAAC;AAC/C,CAAC;AAfD,wCAeC"}
@@ -0,0 +1,11 @@
1
+ import { CreateWalletProps, IWallet } from './types';
2
+ export type { IWallet };
3
+ export declare function ensureDocumentContext(document: any): any;
4
+ /**
5
+ * Create wallet
6
+ *
7
+ * @param createWalletProps
8
+ * @returns {Promise<IWallet>}
9
+ */
10
+ export declare function createWallet(createWalletProps: CreateWalletProps): Promise<IWallet>;
11
+ //# sourceMappingURL=wallet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../src/wallet.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,iBAAiB,EAAE,OAAO,EAAC,MAAM,SAAS,CAAC;AAQnD,YAAY,EAAC,OAAO,EAAC,CAAC;AAMtB,wBAAgB,qBAAqB,CAAC,QAAQ,KAAA,OAS7C;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAChC,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC,OAAO,CAAC,CAgKlB"}