@subwallet/extension-base 0.3.6-0 → 0.3.6-1

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 (164) hide show
  1. package/{build/background → background}/KoniTypes.d.ts +0 -0
  2. package/{build/background → background}/KoniTypes.js +0 -0
  3. package/{build/background → background}/RequestBytesSign.d.ts +0 -0
  4. package/{build/background → background}/RequestBytesSign.js +0 -0
  5. package/{build/background → background}/RequestExtrinsicSign.d.ts +0 -0
  6. package/{build/background → background}/RequestExtrinsicSign.js +0 -0
  7. package/{build/background → background}/handlers/Extension.d.ts +0 -0
  8. package/{build/background → background}/handlers/Extension.js +0 -0
  9. package/{build/background → background}/handlers/State.d.ts +0 -0
  10. package/{build/background → background}/handlers/State.js +0 -0
  11. package/{build/background → background}/handlers/Tabs.d.ts +0 -0
  12. package/{build/background → background}/handlers/Tabs.js +0 -0
  13. package/{build/background → background}/handlers/helpers.d.ts +0 -0
  14. package/{build/background → background}/handlers/helpers.js +0 -0
  15. package/{build/background → background}/handlers/index.d.ts +0 -0
  16. package/{build/background → background}/handlers/index.js +0 -0
  17. package/{build/background → background}/handlers/subscriptions.d.ts +0 -0
  18. package/{build/background → background}/handlers/subscriptions.js +0 -0
  19. package/{build/background → background}/types.d.ts +0 -0
  20. package/{build/background → background}/types.js +0 -0
  21. package/{build/bundle.d.ts → bundle.d.ts} +0 -0
  22. package/{build/bundle.js → bundle.js} +0 -0
  23. package/{build-cjs → cjs}/background/KoniTypes.js +0 -0
  24. package/{build-cjs → cjs}/background/RequestBytesSign.js +0 -0
  25. package/{build-cjs → cjs}/background/RequestExtrinsicSign.js +0 -0
  26. package/{build-cjs → cjs}/background/handlers/Extension.js +0 -0
  27. package/{build-cjs → cjs}/background/handlers/State.js +0 -0
  28. package/{build-cjs → cjs}/background/handlers/Tabs.js +0 -0
  29. package/{build-cjs → cjs}/background/handlers/helpers.js +0 -0
  30. package/{build-cjs → cjs}/background/handlers/index.js +0 -0
  31. package/{build-cjs → cjs}/background/handlers/subscriptions.js +0 -0
  32. package/{build-cjs → cjs}/background/types.js +0 -0
  33. package/{build-cjs → cjs}/bundle.js +0 -0
  34. package/{build-cjs → cjs}/defaults.js +0 -0
  35. package/{build-cjs → cjs}/detectOther.js +0 -0
  36. package/{build-cjs → cjs}/detectPackage.js +0 -0
  37. package/{build-cjs → cjs}/index.js +0 -0
  38. package/{build/cjs → cjs}/package.json +0 -0
  39. package/{build-cjs → cjs}/packageInfo.js +0 -0
  40. package/{build-cjs → cjs}/page/Accounts.js +0 -0
  41. package/{build-cjs → cjs}/page/Injected.js +0 -0
  42. package/{build-cjs → cjs}/page/Metadata.js +0 -0
  43. package/{build-cjs → cjs}/page/PostMessageProvider.js +0 -0
  44. package/{build-cjs → cjs}/page/Signer.js +0 -0
  45. package/{build-cjs → cjs}/page/index.js +0 -0
  46. package/{build-cjs → cjs}/page/types.js +0 -0
  47. package/{build-cjs → cjs}/stores/Accounts.js +0 -0
  48. package/{build-cjs → cjs}/stores/Base.js +0 -0
  49. package/{build-cjs → cjs}/stores/Metadata.js +0 -0
  50. package/{build-cjs → cjs}/stores/index.js +0 -0
  51. package/{build-cjs → cjs}/types.js +0 -0
  52. package/{build-cjs → cjs}/utils/canDerive.js +0 -0
  53. package/{build-cjs → cjs}/utils/getId.js +0 -0
  54. package/{build-cjs → cjs}/utils/index.js +0 -0
  55. package/{build/defaults.d.ts → defaults.d.ts} +0 -0
  56. package/{build/defaults.js → defaults.js} +0 -0
  57. package/{build/detectOther.d.ts → detectOther.d.ts} +0 -0
  58. package/{build/detectOther.js → detectOther.js} +0 -0
  59. package/{build/detectPackage.d.ts → detectPackage.d.ts} +0 -0
  60. package/{build/detectPackage.js → detectPackage.js} +0 -0
  61. package/{build/index.d.ts → index.d.ts} +0 -0
  62. package/{build/index.js → index.js} +0 -0
  63. package/package.json +171 -7
  64. package/{build/packageInfo.d.ts → packageInfo.d.ts} +0 -0
  65. package/{build/packageInfo.js → packageInfo.js} +0 -0
  66. package/{build/page → page}/Accounts.d.ts +0 -0
  67. package/{build/page → page}/Accounts.js +0 -0
  68. package/{build/page → page}/Injected.d.ts +0 -0
  69. package/{build/page → page}/Injected.js +0 -0
  70. package/{build/page → page}/Metadata.d.ts +0 -0
  71. package/{build/page → page}/Metadata.js +0 -0
  72. package/{build/page → page}/PostMessageProvider.d.ts +0 -0
  73. package/{build/page → page}/PostMessageProvider.js +0 -0
  74. package/{build/page → page}/Signer.d.ts +0 -0
  75. package/{build/page → page}/Signer.js +0 -0
  76. package/{build/page → page}/index.d.ts +0 -0
  77. package/{build/page → page}/index.js +0 -0
  78. package/{build/page → page}/types.d.ts +0 -0
  79. package/{build/page → page}/types.js +0 -0
  80. package/{build/stores → stores}/Accounts.d.ts +0 -0
  81. package/{build/stores → stores}/Accounts.js +0 -0
  82. package/{build/stores → stores}/Base.d.ts +0 -0
  83. package/{build/stores → stores}/Base.js +0 -0
  84. package/{build/stores → stores}/Metadata.d.ts +0 -0
  85. package/{build/stores → stores}/Metadata.js +0 -0
  86. package/{build/stores → stores}/index.d.ts +0 -0
  87. package/{build/stores → stores}/index.js +0 -0
  88. package/{build/types.d.ts → types.d.ts} +0 -0
  89. package/{build/types.js → types.js} +0 -0
  90. package/{build/utils → utils}/canDerive.d.ts +0 -0
  91. package/{build/utils → utils}/canDerive.js +0 -0
  92. package/{build/utils → utils}/getId.d.ts +0 -0
  93. package/{build/utils → utils}/getId.js +0 -0
  94. package/{build/utils → utils}/index.d.ts +0 -0
  95. package/{build/utils → utils}/index.js +0 -0
  96. package/build/LICENSE +0 -201
  97. package/build/README.md +0 -10
  98. package/build/cjs/background/KoniTypes.js +0 -69
  99. package/build/cjs/background/RequestBytesSign.js +0 -27
  100. package/build/cjs/background/RequestExtrinsicSign.js +0 -23
  101. package/build/cjs/background/handlers/Extension.js +0 -764
  102. package/build/cjs/background/handlers/State.js +0 -472
  103. package/build/cjs/background/handlers/Tabs.js +0 -273
  104. package/build/cjs/background/handlers/helpers.js +0 -20
  105. package/build/cjs/background/handlers/index.js +0 -60
  106. package/build/cjs/background/handlers/subscriptions.js +0 -32
  107. package/build/cjs/background/types.js +0 -1
  108. package/build/cjs/bundle.js +0 -13
  109. package/build/cjs/defaults.js +0 -26
  110. package/build/cjs/detectOther.js +0 -17
  111. package/build/cjs/detectPackage.js +0 -14
  112. package/build/cjs/index.js +0 -18
  113. package/build/cjs/packageInfo.js +0 -16
  114. package/build/cjs/page/Accounts.js +0 -31
  115. package/build/cjs/page/Injected.js +0 -30
  116. package/build/cjs/page/Metadata.js +0 -27
  117. package/build/cjs/page/PostMessageProvider.js +0 -184
  118. package/build/cjs/page/Signer.js +0 -44
  119. package/build/cjs/page/index.js +0 -76
  120. package/build/cjs/page/types.js +0 -1
  121. package/build/cjs/stores/Accounts.js +0 -33
  122. package/build/cjs/stores/Base.js +0 -84
  123. package/build/cjs/stores/Metadata.js +0 -23
  124. package/build/cjs/stores/index.js +0 -23
  125. package/build/cjs/types.js +0 -1
  126. package/build/cjs/utils/canDerive.js +0 -12
  127. package/build/cjs/utils/getId.js +0 -16
  128. package/build/cjs/utils/index.js +0 -13
  129. package/build/package.json +0 -210
  130. package/src/background/KoniTypes.ts +0 -537
  131. package/src/background/RequestBytesSign.ts +0 -30
  132. package/src/background/RequestExtrinsicSign.ts +0 -23
  133. package/src/background/handlers/Extension.spec.ts +0 -456
  134. package/src/background/handlers/Extension.ts +0 -627
  135. package/src/background/handlers/State.ts +0 -513
  136. package/src/background/handlers/Tabs.ts +0 -223
  137. package/src/background/handlers/helpers.ts +0 -14
  138. package/src/background/handlers/index.ts +0 -49
  139. package/src/background/handlers/subscriptions.ts +0 -30
  140. package/src/background/types.ts +0 -437
  141. package/src/bundle.ts +0 -4
  142. package/src/defaults.ts +0 -24
  143. package/src/detectOther.ts +0 -8
  144. package/src/detectPackage.ts +0 -11
  145. package/src/index.ts +0 -7
  146. package/src/packageInfo.ts +0 -6
  147. package/src/page/Accounts.ts +0 -27
  148. package/src/page/Injected.ts +0 -27
  149. package/src/page/Metadata.ts +0 -22
  150. package/src/page/PostMessageProvider.ts +0 -178
  151. package/src/page/Signer.ts +0 -45
  152. package/src/page/index.ts +0 -87
  153. package/src/page/types.ts +0 -10
  154. package/src/stores/Accounts.ts +0 -24
  155. package/src/stores/Base.ts +0 -81
  156. package/src/stores/Metadata.ts +0 -13
  157. package/src/stores/index.ts +0 -5
  158. package/src/types.ts +0 -12
  159. package/src/utils/canDerive.ts +0 -8
  160. package/src/utils/getId.ts +0 -10
  161. package/src/utils/index.ts +0 -4
  162. package/tsconfig.build.json +0 -18
  163. package/tsconfig.build.tsbuildinfo +0 -1
  164. package/tsconfig.json +0 -14
@@ -1,764 +0,0 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = exports.SEED_LENGTHS = exports.SEED_DEFAULT_LENGTH = exports.ETH_DERIVE_DEFAULT = void 0;
9
- exports.getSuri = getSuri;
10
-
11
- var _defaults = require("@subwallet/extension-base/defaults");
12
-
13
- var _types = require("@polkadot/types");
14
-
15
- var _uiKeyring = _interopRequireDefault(require("@polkadot/ui-keyring"));
16
-
17
- var _accounts = require("@polkadot/ui-keyring/observable/accounts");
18
-
19
- var _util = require("@polkadot/util");
20
-
21
- var _utilCrypto = require("@polkadot/util-crypto");
22
-
23
- var _helpers = require("./helpers");
24
-
25
- var _subscriptions = require("./subscriptions");
26
-
27
- // Copyright 2019-2022 @subwallet/extension authors & contributors
28
- // SPDX-License-Identifier: Apache-2.0
29
- const SEED_DEFAULT_LENGTH = 12;
30
- exports.SEED_DEFAULT_LENGTH = SEED_DEFAULT_LENGTH;
31
- const SEED_LENGTHS = [12, 15, 18, 21, 24];
32
- exports.SEED_LENGTHS = SEED_LENGTHS;
33
- const ETH_DERIVE_DEFAULT = '/m/44\'/60\'/0\'/0/0'; // a global registry to use internally
34
-
35
- exports.ETH_DERIVE_DEFAULT = ETH_DERIVE_DEFAULT;
36
- const registry = new _types.TypeRegistry();
37
-
38
- function getSuri(seed, type) {
39
- return type === 'ethereum' ? `${seed}${ETH_DERIVE_DEFAULT}` : seed;
40
- }
41
-
42
- function transformAccounts(accounts) {
43
- return Object.values(accounts).map(_ref => {
44
- let {
45
- json: {
46
- address,
47
- meta
48
- },
49
- type
50
- } = _ref;
51
- return {
52
- address,
53
- ...meta,
54
- type
55
- };
56
- });
57
- }
58
-
59
- function isJsonPayload(value) {
60
- return value.genesisHash !== undefined;
61
- }
62
-
63
- class Extension {
64
- #cachedUnlocks;
65
- #state;
66
-
67
- constructor(state) {
68
- this.#cachedUnlocks = {};
69
- this.#state = state;
70
- }
71
-
72
- accountsCreateExternal(_ref2) {
73
- let {
74
- address,
75
- genesisHash,
76
- name
77
- } = _ref2;
78
-
79
- _uiKeyring.default.addExternal(address, {
80
- genesisHash,
81
- name
82
- });
83
-
84
- return true;
85
- }
86
-
87
- accountsCreateHardware(_ref3) {
88
- let {
89
- accountIndex,
90
- address,
91
- addressOffset,
92
- genesisHash,
93
- hardwareType,
94
- name
95
- } = _ref3;
96
-
97
- _uiKeyring.default.addHardware(address, hardwareType, {
98
- accountIndex,
99
- addressOffset,
100
- genesisHash,
101
- name
102
- });
103
-
104
- return true;
105
- }
106
-
107
- accountsCreateSuri(_ref4) {
108
- let {
109
- genesisHash,
110
- name,
111
- password,
112
- suri,
113
- type
114
- } = _ref4;
115
-
116
- _uiKeyring.default.addUri(getSuri(suri, type), password, {
117
- genesisHash,
118
- name
119
- }, type);
120
-
121
- return true;
122
- }
123
-
124
- accountsChangePassword(_ref5) {
125
- let {
126
- address,
127
- newPass,
128
- oldPass
129
- } = _ref5;
130
-
131
- const pair = _uiKeyring.default.getPair(address);
132
-
133
- (0, _util.assert)(pair, 'Unable to find pair');
134
-
135
- try {
136
- if (!pair.isLocked) {
137
- pair.lock();
138
- }
139
-
140
- pair.decodePkcs8(oldPass);
141
- } catch (error) {
142
- throw new Error('oldPass is invalid');
143
- }
144
-
145
- _uiKeyring.default.encryptAccount(pair, newPass);
146
-
147
- return true;
148
- }
149
-
150
- accountsEdit(_ref6) {
151
- let {
152
- address,
153
- name
154
- } = _ref6;
155
-
156
- const pair = _uiKeyring.default.getPair(address);
157
-
158
- (0, _util.assert)(pair, 'Unable to find pair');
159
-
160
- _uiKeyring.default.saveAccountMeta(pair, { ...pair.meta,
161
- name
162
- });
163
-
164
- return true;
165
- }
166
-
167
- accountsExport(_ref7) {
168
- let {
169
- address,
170
- password
171
- } = _ref7;
172
- return {
173
- exportedJson: _uiKeyring.default.backupAccount(_uiKeyring.default.getPair(address), password)
174
- };
175
- } // private async accountsBatchExport ({ addresses, password }: RequestAccountBatchExport): Promise<ResponseAccountsExport> {
176
- // return {
177
- // exportedJson: await keyring.backupAccounts(addresses, password)
178
- // };
179
- // }
180
-
181
-
182
- accountsForget(_ref8) {
183
- let {
184
- address
185
- } = _ref8;
186
-
187
- _uiKeyring.default.forgetAccount(address);
188
-
189
- return true;
190
- }
191
-
192
- refreshAccountPasswordCache(pair) {
193
- const {
194
- address
195
- } = pair;
196
- const savedExpiry = this.#cachedUnlocks[address] || 0;
197
- const remainingTime = savedExpiry - Date.now();
198
-
199
- if (remainingTime < 0) {
200
- this.#cachedUnlocks[address] = 0;
201
- pair.lock();
202
- return 0;
203
- }
204
-
205
- return remainingTime;
206
- }
207
-
208
- accountsShow(_ref9) {
209
- let {
210
- address,
211
- isShowing
212
- } = _ref9;
213
-
214
- const pair = _uiKeyring.default.getPair(address);
215
-
216
- (0, _util.assert)(pair, 'Unable to find pair');
217
-
218
- _uiKeyring.default.saveAccountMeta(pair, { ...pair.meta,
219
- isHidden: !isShowing
220
- });
221
-
222
- return true;
223
- }
224
-
225
- accountsTie(_ref10) {
226
- let {
227
- address,
228
- genesisHash
229
- } = _ref10;
230
-
231
- const pair = _uiKeyring.default.getPair(address);
232
-
233
- (0, _util.assert)(pair, 'Unable to find pair');
234
-
235
- _uiKeyring.default.saveAccountMeta(pair, { ...pair.meta,
236
- genesisHash
237
- });
238
-
239
- return true;
240
- }
241
-
242
- accountsValidate(_ref11) {
243
- let {
244
- address,
245
- password
246
- } = _ref11;
247
-
248
- try {
249
- _uiKeyring.default.backupAccount(_uiKeyring.default.getPair(address), password);
250
-
251
- return true;
252
- } catch (e) {
253
- return false;
254
- }
255
- } // FIXME This looks very much like what we have in Tabs
256
-
257
-
258
- accountsSubscribe(id, port) {
259
- const cb = (0, _subscriptions.createSubscription)(id, port);
260
-
261
- const subscription = _accounts.accounts.subject.subscribe(accounts => cb(transformAccounts(accounts)));
262
-
263
- port.onDisconnect.addListener(() => {
264
- (0, _subscriptions.unsubscribe)(id);
265
- subscription.unsubscribe();
266
- });
267
- return true;
268
- }
269
-
270
- authorizeApprove(_ref12) {
271
- let {
272
- id
273
- } = _ref12;
274
- const queued = this.#state.getAuthRequest(id);
275
- (0, _util.assert)(queued, 'Unable to find request');
276
- const {
277
- resolve
278
- } = queued;
279
- resolve(true);
280
- return true;
281
- }
282
-
283
- getAuthList() {
284
- return {
285
- list: this.#state.authUrls
286
- };
287
- }
288
-
289
- authorizeReject(_ref13) {
290
- let {
291
- id
292
- } = _ref13;
293
- const queued = this.#state.getAuthRequest(id);
294
- (0, _util.assert)(queued, 'Unable to find request');
295
- const {
296
- reject
297
- } = queued;
298
- reject(new Error('Rejected'));
299
- return true;
300
- } // FIXME This looks very much like what we have in accounts
301
-
302
-
303
- authorizeSubscribe(id, port) {
304
- const cb = (0, _subscriptions.createSubscription)(id, port);
305
- const subscription = this.#state.authSubject.subscribe(requests => cb(requests));
306
- port.onDisconnect.addListener(() => {
307
- (0, _subscriptions.unsubscribe)(id);
308
- subscription.unsubscribe();
309
- });
310
- return true;
311
- }
312
-
313
- metadataApprove(_ref14) {
314
- let {
315
- id
316
- } = _ref14;
317
- const queued = this.#state.getMetaRequest(id);
318
- (0, _util.assert)(queued, 'Unable to find request');
319
- const {
320
- request,
321
- resolve
322
- } = queued;
323
- this.#state.saveMetadata(request);
324
- resolve(true);
325
- return true;
326
- }
327
-
328
- metadataGet(genesisHash) {
329
- return this.#state.knownMetadata.find(result => result.genesisHash === genesisHash) || null;
330
- }
331
-
332
- metadataList() {
333
- return this.#state.knownMetadata;
334
- }
335
-
336
- metadataReject(_ref15) {
337
- let {
338
- id
339
- } = _ref15;
340
- const queued = this.#state.getMetaRequest(id);
341
- (0, _util.assert)(queued, 'Unable to find request');
342
- const {
343
- reject
344
- } = queued;
345
- reject(new Error('Rejected'));
346
- return true;
347
- }
348
-
349
- metadataSubscribe(id, port) {
350
- const cb = (0, _subscriptions.createSubscription)(id, port);
351
- const subscription = this.#state.metaSubject.subscribe(requests => cb(requests));
352
- port.onDisconnect.addListener(() => {
353
- (0, _subscriptions.unsubscribe)(id);
354
- subscription.unsubscribe();
355
- });
356
- return true;
357
- }
358
-
359
- jsonRestore(_ref16) {
360
- let {
361
- file,
362
- password
363
- } = _ref16;
364
-
365
- try {
366
- _uiKeyring.default.restoreAccount(file, password);
367
- } catch (error) {
368
- throw new Error(error.message);
369
- }
370
- }
371
-
372
- batchRestore(_ref17) {
373
- let {
374
- file,
375
- password
376
- } = _ref17;
377
-
378
- try {
379
- _uiKeyring.default.restoreAccounts(file, password);
380
- } catch (error) {
381
- throw new Error(error.message);
382
- }
383
- }
384
-
385
- jsonGetAccountInfo(json) {
386
- try {
387
- const {
388
- address,
389
- meta: {
390
- genesisHash,
391
- name
392
- },
393
- type
394
- } = _uiKeyring.default.createFromJson(json);
395
-
396
- return {
397
- address,
398
- genesisHash,
399
- name,
400
- type
401
- };
402
- } catch (e) {
403
- console.error(e);
404
- throw new Error(e.message);
405
- }
406
- }
407
-
408
- seedCreate(_ref18) {
409
- let {
410
- length = SEED_DEFAULT_LENGTH,
411
- seed: _seed,
412
- type
413
- } = _ref18;
414
-
415
- const seed = _seed || (0, _utilCrypto.mnemonicGenerate)(length);
416
-
417
- return {
418
- address: _uiKeyring.default.createFromUri(getSuri(seed, type), {}, type).address,
419
- seed
420
- };
421
- }
422
-
423
- seedValidate(_ref19) {
424
- let {
425
- suri,
426
- type
427
- } = _ref19;
428
- const {
429
- phrase
430
- } = (0, _utilCrypto.keyExtractSuri)(suri);
431
-
432
- if ((0, _util.isHex)(phrase)) {
433
- (0, _util.assert)((0, _util.isHex)(phrase, 256), 'Hex seed needs to be 256-bits');
434
- } else {
435
- // sadly isHex detects as string, so we need a cast here
436
- (0, _util.assert)(SEED_LENGTHS.includes(phrase.split(' ').length), `Mnemonic needs to contain ${SEED_LENGTHS.join(', ')} words`);
437
- (0, _util.assert)((0, _utilCrypto.mnemonicValidate)(phrase), 'Not a valid mnemonic seed');
438
- }
439
-
440
- return {
441
- address: _uiKeyring.default.createFromUri(getSuri(suri, type), {}, type).address,
442
- suri
443
- };
444
- }
445
-
446
- signingApprovePassword(_ref20) {
447
- let {
448
- id,
449
- password,
450
- savePass
451
- } = _ref20;
452
- const queued = this.#state.getSignRequest(id);
453
- (0, _util.assert)(queued, 'Unable to find request');
454
- const {
455
- reject,
456
- request,
457
- resolve
458
- } = queued;
459
-
460
- const pair = _uiKeyring.default.getPair(queued.account.address); // unlike queued.account.address the following
461
- // address is encoded with the default prefix
462
- // which what is used for password caching mapping
463
-
464
-
465
- const {
466
- address
467
- } = pair;
468
-
469
- if (!pair) {
470
- reject(new Error('Unable to find pair'));
471
- return false;
472
- }
473
-
474
- this.refreshAccountPasswordCache(pair); // if the keyring pair is locked, the password is needed
475
-
476
- if (pair.isLocked && !password) {
477
- reject(new Error('Password needed to unlock the account'));
478
- }
479
-
480
- if (pair.isLocked) {
481
- pair.decodePkcs8(password);
482
- }
483
-
484
- const {
485
- payload
486
- } = request;
487
-
488
- if (isJsonPayload(payload)) {
489
- // Get the metadata for the genesisHash
490
- const currentMetadata = this.#state.knownMetadata.find(meta => meta.genesisHash === payload.genesisHash); // set the registry before calling the sign function
491
-
492
- registry.setSignedExtensions(payload.signedExtensions, currentMetadata === null || currentMetadata === void 0 ? void 0 : currentMetadata.userExtensions);
493
-
494
- if (currentMetadata) {
495
- registry.register(currentMetadata === null || currentMetadata === void 0 ? void 0 : currentMetadata.types);
496
- }
497
- }
498
-
499
- const result = request.sign(registry, pair);
500
-
501
- if (savePass) {
502
- this.#cachedUnlocks[address] = Date.now() + _defaults.PASSWORD_EXPIRY_MS;
503
- } else {
504
- pair.lock();
505
- }
506
-
507
- resolve({
508
- id,
509
- ...result
510
- });
511
- return true;
512
- }
513
-
514
- signingApproveSignature(_ref21) {
515
- let {
516
- id,
517
- signature
518
- } = _ref21;
519
- const queued = this.#state.getSignRequest(id);
520
- (0, _util.assert)(queued, 'Unable to find request');
521
- const {
522
- resolve
523
- } = queued;
524
- resolve({
525
- id,
526
- signature
527
- });
528
- return true;
529
- }
530
-
531
- signingCancel(_ref22) {
532
- let {
533
- id
534
- } = _ref22;
535
- const queued = this.#state.getSignRequest(id);
536
- (0, _util.assert)(queued, 'Unable to find request');
537
- const {
538
- reject
539
- } = queued;
540
- reject(new Error('Cancelled'));
541
- return true;
542
- }
543
-
544
- signingIsLocked(_ref23) {
545
- let {
546
- id
547
- } = _ref23;
548
- const queued = this.#state.getSignRequest(id);
549
- (0, _util.assert)(queued, 'Unable to find request');
550
- const address = queued.request.payload.address;
551
-
552
- const pair = _uiKeyring.default.getPair(address);
553
-
554
- (0, _util.assert)(pair, 'Unable to find pair');
555
- const remainingTime = this.refreshAccountPasswordCache(pair);
556
- return {
557
- isLocked: pair.isLocked,
558
- remainingTime
559
- };
560
- } // FIXME This looks very much like what we have in authorization
561
-
562
-
563
- signingSubscribe(id, port) {
564
- const cb = (0, _subscriptions.createSubscription)(id, port);
565
- const subscription = this.#state.signSubject.subscribe(requests => cb(requests));
566
- port.onDisconnect.addListener(() => {
567
- (0, _subscriptions.unsubscribe)(id);
568
- subscription.unsubscribe();
569
- });
570
- return true;
571
- }
572
-
573
- windowOpen(path) {
574
- const url = `${chrome.extension.getURL('index.html')}#${path}`;
575
-
576
- if (!_defaults.ALLOWED_PATH.includes(path)) {
577
- console.error('Not allowed to open the url:', url);
578
- return false;
579
- }
580
-
581
- (0, _helpers.withErrorLog)(() => chrome.tabs.create({
582
- url
583
- }));
584
- return true;
585
- }
586
-
587
- derive(parentAddress, suri, password, metadata) {
588
- const parentPair = _uiKeyring.default.getPair(parentAddress);
589
-
590
- try {
591
- parentPair.decodePkcs8(password);
592
- } catch (e) {
593
- throw new Error('invalid password');
594
- }
595
-
596
- try {
597
- return parentPair.derive(suri, metadata);
598
- } catch (err) {
599
- throw new Error(`"${suri}" is not a valid derivation path`);
600
- }
601
- }
602
-
603
- derivationValidate(_ref24) {
604
- let {
605
- parentAddress,
606
- parentPassword,
607
- suri
608
- } = _ref24;
609
- const childPair = this.derive(parentAddress, suri, parentPassword, {});
610
- return {
611
- address: childPair.address,
612
- suri
613
- };
614
- }
615
-
616
- derivationCreate(_ref25) {
617
- let {
618
- genesisHash,
619
- name,
620
- parentAddress,
621
- parentPassword,
622
- password,
623
- suri
624
- } = _ref25;
625
- const childPair = this.derive(parentAddress, suri, parentPassword, {
626
- genesisHash,
627
- name,
628
- parentAddress,
629
- suri
630
- });
631
-
632
- _uiKeyring.default.addPair(childPair, password);
633
-
634
- return true;
635
- }
636
-
637
- toggleAuthorization(url) {
638
- return {
639
- list: this.#state.toggleAuthorization(url)
640
- };
641
- } // Weird thought, the eslint override is not needed in Tabs
642
- // eslint-disable-next-line @typescript-eslint/require-await
643
-
644
-
645
- async handle(id, type, request, port) {
646
- switch (type) {
647
- case 'pri(authorize.approve)':
648
- return this.authorizeApprove(request);
649
-
650
- case 'pri(authorize.list)':
651
- return this.getAuthList();
652
-
653
- case 'pri(authorize.reject)':
654
- return this.authorizeReject(request);
655
-
656
- case 'pri(authorize.toggle)':
657
- return this.toggleAuthorization(request);
658
-
659
- case 'pri(authorize.requests)':
660
- return this.authorizeSubscribe(id, port);
661
-
662
- case 'pri(accounts.create.external)':
663
- return this.accountsCreateExternal(request);
664
-
665
- case 'pri(accounts.create.hardware)':
666
- return this.accountsCreateHardware(request);
667
-
668
- case 'pri(accounts.create.suri)':
669
- return this.accountsCreateSuri(request);
670
-
671
- case 'pri(accounts.changePassword)':
672
- return this.accountsChangePassword(request);
673
-
674
- case 'pri(accounts.edit)':
675
- return this.accountsEdit(request);
676
-
677
- case 'pri(accounts.export)':
678
- return this.accountsExport(request);
679
-
680
- case 'pri(accounts.batchExport)':
681
- // return this.accountsBatchExport(request as RequestAccountBatchExport);
682
- // Disable export all util use master password
683
- return null;
684
-
685
- case 'pri(accounts.forget)':
686
- return this.accountsForget(request);
687
-
688
- case 'pri(accounts.show)':
689
- return this.accountsShow(request);
690
-
691
- case 'pri(accounts.subscribe)':
692
- return this.accountsSubscribe(id, port);
693
-
694
- case 'pri(accounts.tie)':
695
- return this.accountsTie(request);
696
-
697
- case 'pri(accounts.validate)':
698
- return this.accountsValidate(request);
699
-
700
- case 'pri(metadata.approve)':
701
- return this.metadataApprove(request);
702
-
703
- case 'pri(metadata.get)':
704
- return this.metadataGet(request);
705
-
706
- case 'pri(metadata.list)':
707
- return this.metadataList();
708
-
709
- case 'pri(metadata.reject)':
710
- return this.metadataReject(request);
711
-
712
- case 'pri(metadata.requests)':
713
- return this.metadataSubscribe(id, port);
714
-
715
- case 'pri(derivation.create)':
716
- return this.derivationCreate(request);
717
-
718
- case 'pri(derivation.validate)':
719
- return this.derivationValidate(request);
720
-
721
- case 'pri(json.restore)':
722
- return this.jsonRestore(request);
723
-
724
- case 'pri(json.batchRestore)':
725
- return this.batchRestore(request);
726
-
727
- case 'pri(json.account.info)':
728
- return this.jsonGetAccountInfo(request);
729
-
730
- case 'pri(seed.create)':
731
- return this.seedCreate(request);
732
-
733
- case 'pri(seed.validate)':
734
- return this.seedValidate(request);
735
-
736
- case 'pri(settings.notification)':
737
- return this.#state.setNotification(request);
738
-
739
- case 'pri(signing.approve.password)':
740
- return this.signingApprovePassword(request);
741
-
742
- case 'pri(signing.approve.signature)':
743
- return this.signingApproveSignature(request);
744
-
745
- case 'pri(signing.cancel)':
746
- return this.signingCancel(request);
747
-
748
- case 'pri(signing.isLocked)':
749
- return this.signingIsLocked(request);
750
-
751
- case 'pri(signing.requests)':
752
- return this.signingSubscribe(id, port);
753
-
754
- case 'pri(window.open)':
755
- return this.windowOpen(request);
756
-
757
- default:
758
- throw new Error(`Unable to handle message of type ${type}`);
759
- }
760
- }
761
-
762
- }
763
-
764
- exports.default = Extension;