@polkadot/extension-base 0.45.1 → 0.45.3

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 (82) hide show
  1. package/background/RequestBytesSign.d.ts +1 -1
  2. package/background/RequestBytesSign.js +1 -2
  3. package/background/RequestExtrinsicSign.d.ts +1 -1
  4. package/background/RequestExtrinsicSign.js +1 -2
  5. package/background/handlers/Extension.d.ts +2 -2
  6. package/background/handlers/Extension.js +41 -38
  7. package/background/handlers/State.d.ts +1 -1
  8. package/background/handlers/State.js +126 -123
  9. package/background/handlers/Tabs.d.ts +2 -2
  10. package/background/handlers/Tabs.js +24 -22
  11. package/background/handlers/helpers.js +1 -1
  12. package/background/handlers/index.d.ts +1 -1
  13. package/background/handlers/index.js +1 -1
  14. package/background/handlers/subscriptions.d.ts +1 -1
  15. package/background/handlers/subscriptions.js +1 -1
  16. package/background/types.d.ts +2 -2
  17. package/background/types.js +1 -1
  18. package/bundle.d.ts +1 -1
  19. package/bundle.js +1 -1
  20. package/cjs/background/RequestBytesSign.js +1 -1
  21. package/cjs/background/RequestExtrinsicSign.js +1 -1
  22. package/cjs/background/handlers/Extension.js +16 -16
  23. package/cjs/background/handlers/State.js +7 -7
  24. package/cjs/background/handlers/Tabs.js +16 -17
  25. package/cjs/background/handlers/helpers.js +1 -1
  26. package/cjs/background/handlers/index.js +9 -9
  27. package/cjs/background/handlers/subscriptions.js +1 -1
  28. package/cjs/background/types.js +1 -1
  29. package/cjs/bundle.js +2 -2
  30. package/cjs/defaults.js +1 -1
  31. package/cjs/detectOther.js +1 -1
  32. package/cjs/detectPackage.js +3 -3
  33. package/cjs/index.js +1 -1
  34. package/cjs/packageInfo.js +1 -1
  35. package/cjs/page/Accounts.js +1 -1
  36. package/cjs/page/Injected.js +9 -9
  37. package/cjs/page/Metadata.js +1 -1
  38. package/cjs/page/PostMessageProvider.js +3 -3
  39. package/cjs/page/Signer.js +1 -1
  40. package/cjs/page/index.js +7 -7
  41. package/cjs/page/types.js +1 -1
  42. package/cjs/stores/Accounts.js +6 -6
  43. package/cjs/stores/Base.js +1 -1
  44. package/cjs/stores/Metadata.js +6 -6
  45. package/cjs/stores/index.js +4 -4
  46. package/cjs/types.js +1 -1
  47. package/cjs/utils/canDerive.js +1 -1
  48. package/cjs/utils/getId.js +3 -3
  49. package/cjs/utils/index.js +2 -2
  50. package/defaults.js +1 -1
  51. package/detectOther.js +1 -1
  52. package/detectPackage.js +1 -1
  53. package/index.d.ts +1 -1
  54. package/index.js +1 -1
  55. package/package.json +17 -16
  56. package/packageInfo.js +1 -1
  57. package/page/Accounts.d.ts +1 -1
  58. package/page/Accounts.js +1 -1
  59. package/page/Injected.d.ts +5 -5
  60. package/page/Injected.js +2 -6
  61. package/page/Metadata.d.ts +1 -1
  62. package/page/Metadata.js +1 -1
  63. package/page/PostMessageProvider.d.ts +1 -1
  64. package/page/PostMessageProvider.js +24 -21
  65. package/page/Signer.d.ts +1 -1
  66. package/page/Signer.js +1 -1
  67. package/page/index.d.ts +2 -2
  68. package/page/index.js +1 -1
  69. package/page/types.d.ts +1 -1
  70. package/page/types.js +1 -1
  71. package/stores/Accounts.d.ts +1 -1
  72. package/stores/Accounts.js +1 -1
  73. package/stores/Base.js +11 -8
  74. package/stores/Metadata.d.ts +1 -1
  75. package/stores/Metadata.js +1 -1
  76. package/stores/index.d.ts +2 -2
  77. package/stores/index.js +1 -1
  78. package/types.js +1 -1
  79. package/utils/canDerive.js +1 -1
  80. package/utils/getId.js +1 -1
  81. package/utils/index.d.ts +1 -1
  82. package/utils/index.js +1 -1
@@ -1,7 +1,7 @@
1
1
  import type { KeyringPair } from '@polkadot/keyring/types';
2
2
  import type { SignerPayloadRaw } from '@polkadot/types/types';
3
3
  import type { HexString } from '@polkadot/util/types';
4
- import type { RequestSign } from './types';
4
+ import type { RequestSign } from './types.js';
5
5
  import { TypeRegistry } from '@polkadot/types';
6
6
  export default class RequestBytesSign implements RequestSign {
7
7
  readonly payload: SignerPayloadRaw;
@@ -1,7 +1,6 @@
1
1
  import { wrapBytes } from '@polkadot/extension-dapp/wrapBytes';
2
2
  import { u8aToHex } from '@polkadot/util';
3
3
  export default class RequestBytesSign {
4
- payload;
5
4
  constructor(payload) {
6
5
  this.payload = payload;
7
6
  }
@@ -10,4 +9,4 @@ export default class RequestBytesSign {
10
9
  signature: u8aToHex(pair.sign(wrapBytes(this.payload.data)))
11
10
  };
12
11
  }
13
- }
12
+ }
@@ -1,7 +1,7 @@
1
1
  import type { KeyringPair } from '@polkadot/keyring/types';
2
2
  import type { SignerPayloadJSON } from '@polkadot/types/types';
3
3
  import type { HexString } from '@polkadot/util/types';
4
- import type { RequestSign } from './types';
4
+ import type { RequestSign } from './types.js';
5
5
  import { TypeRegistry } from '@polkadot/types';
6
6
  export default class RequestExtrinsicSign implements RequestSign {
7
7
  readonly payload: SignerPayloadJSON;
@@ -1,5 +1,4 @@
1
1
  export default class RequestExtrinsicSign {
2
- payload;
3
2
  constructor(payload) {
4
3
  this.payload = payload;
5
4
  }
@@ -8,4 +7,4 @@ export default class RequestExtrinsicSign {
8
7
  .createType('ExtrinsicPayload', this.payload, { version: this.payload.version })
9
8
  .sign(pair);
10
9
  }
11
- }
10
+ }
@@ -1,6 +1,6 @@
1
1
  /// <reference types="chrome" />
2
- import type { MessageTypes, RequestTypes, ResponseType } from '../types';
3
- import State from './State';
2
+ import type { MessageTypes, RequestTypes, ResponseType } from '../types.js';
3
+ import State from './State.js';
4
4
  export default class Extension {
5
5
  #private;
6
6
  constructor(state: State);
@@ -1,3 +1,5 @@
1
+ var _Extension_cachedUnlocks, _Extension_state;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { ALLOWED_PATH, PASSWORD_EXPIRY_MS } from '@polkadot/extension-base/defaults';
2
4
  import { metadataExpand } from '@polkadot/extension-chains';
3
5
  import { TypeRegistry } from '@polkadot/types';
@@ -19,16 +21,16 @@ function isJsonPayload(value) {
19
21
  return value.genesisHash !== undefined;
20
22
  }
21
23
  export default class Extension {
22
- #cachedUnlocks;
23
- #state;
24
24
  constructor(state) {
25
- this.#cachedUnlocks = {};
26
- this.#state = state;
25
+ _Extension_cachedUnlocks.set(this, void 0);
26
+ _Extension_state.set(this, void 0);
27
+ __classPrivateFieldSet(this, _Extension_cachedUnlocks, {}, "f");
28
+ __classPrivateFieldSet(this, _Extension_state, state, "f");
27
29
  }
28
30
  transformAccounts(accounts) {
29
31
  return Object.values(accounts).map(({ json: { address, meta }, type }) => ({
30
32
  address,
31
- isDefaultAuthSelected: this.#state.defaultAuthAccountSelection.includes(address),
33
+ isDefaultAuthSelected: __classPrivateFieldGet(this, _Extension_state, "f").defaultAuthAccountSelection.includes(address),
32
34
  ...meta,
33
35
  type
34
36
  }));
@@ -54,7 +56,7 @@ export default class Extension {
54
56
  }
55
57
  pair.decodePkcs8(oldPass);
56
58
  }
57
- catch (error) {
59
+ catch {
58
60
  throw new Error('oldPass is invalid');
59
61
  }
60
62
  keyring.encryptAccount(pair, newPass);
@@ -77,25 +79,25 @@ export default class Extension {
77
79
  accountsForget({ address }) {
78
80
  const authorizedAccountsDiff = [];
79
81
  // cycle through authUrls and prepare the array of diff
80
- Object.entries(this.#state.authUrls).forEach(([url, urlInfo]) => {
82
+ Object.entries(__classPrivateFieldGet(this, _Extension_state, "f").authUrls).forEach(([url, urlInfo]) => {
81
83
  if (!urlInfo.authorizedAccounts.includes(address)) {
82
84
  return;
83
85
  }
84
86
  authorizedAccountsDiff.push([url, urlInfo.authorizedAccounts.filter((previousAddress) => previousAddress !== address)]);
85
87
  });
86
- this.#state.updateAuthorizedAccounts(authorizedAccountsDiff);
88
+ __classPrivateFieldGet(this, _Extension_state, "f").updateAuthorizedAccounts(authorizedAccountsDiff);
87
89
  // cycle through default account selection for auth and remove any occurence of the account
88
- const newDefaultAuthAccounts = this.#state.defaultAuthAccountSelection.filter((defaultSelectionAddress) => defaultSelectionAddress !== address);
89
- this.#state.updateDefaultAuthAccounts(newDefaultAuthAccounts);
90
+ const newDefaultAuthAccounts = __classPrivateFieldGet(this, _Extension_state, "f").defaultAuthAccountSelection.filter((defaultSelectionAddress) => defaultSelectionAddress !== address);
91
+ __classPrivateFieldGet(this, _Extension_state, "f").updateDefaultAuthAccounts(newDefaultAuthAccounts);
90
92
  keyring.forgetAccount(address);
91
93
  return true;
92
94
  }
93
95
  refreshAccountPasswordCache(pair) {
94
96
  const { address } = pair;
95
- const savedExpiry = this.#cachedUnlocks[address] || 0;
97
+ const savedExpiry = __classPrivateFieldGet(this, _Extension_cachedUnlocks, "f")[address] || 0;
96
98
  const remainingTime = savedExpiry - Date.now();
97
99
  if (remainingTime < 0) {
98
- this.#cachedUnlocks[address] = 0;
100
+ __classPrivateFieldGet(this, _Extension_cachedUnlocks, "f")[address] = 0;
99
101
  pair.lock();
100
102
  return 0;
101
103
  }
@@ -118,7 +120,7 @@ export default class Extension {
118
120
  keyring.backupAccount(keyring.getPair(address), password);
119
121
  return true;
120
122
  }
121
- catch (e) {
123
+ catch {
122
124
  return false;
123
125
  }
124
126
  }
@@ -132,22 +134,22 @@ export default class Extension {
132
134
  return true;
133
135
  }
134
136
  authorizeApprove({ authorizedAccounts, id }) {
135
- const queued = this.#state.getAuthRequest(id);
137
+ const queued = __classPrivateFieldGet(this, _Extension_state, "f").getAuthRequest(id);
136
138
  assert(queued, 'Unable to find request');
137
139
  const { resolve } = queued;
138
140
  resolve({ authorizedAccounts, result: true });
139
141
  return true;
140
142
  }
141
143
  authorizeUpdate({ authorizedAccounts, url }) {
142
- return this.#state.updateAuthorizedAccounts([[url, authorizedAccounts]]);
144
+ return __classPrivateFieldGet(this, _Extension_state, "f").updateAuthorizedAccounts([[url, authorizedAccounts]]);
143
145
  }
144
146
  getAuthList() {
145
- return { list: this.#state.authUrls };
147
+ return { list: __classPrivateFieldGet(this, _Extension_state, "f").authUrls };
146
148
  }
147
149
  // FIXME This looks very much like what we have in accounts
148
150
  authorizeSubscribe(id, port) {
149
151
  const cb = createSubscription(id, port);
150
- const subscription = this.#state.authSubject.subscribe((requests) => cb(requests));
152
+ const subscription = __classPrivateFieldGet(this, _Extension_state, "f").authSubject.subscribe((requests) => cb(requests));
151
153
  port.onDisconnect.addListener(() => {
152
154
  unsubscribe(id);
153
155
  subscription.unsubscribe();
@@ -155,21 +157,21 @@ export default class Extension {
155
157
  return true;
156
158
  }
157
159
  metadataApprove({ id }) {
158
- const queued = this.#state.getMetaRequest(id);
160
+ const queued = __classPrivateFieldGet(this, _Extension_state, "f").getMetaRequest(id);
159
161
  assert(queued, 'Unable to find request');
160
162
  const { request, resolve } = queued;
161
- this.#state.saveMetadata(request);
163
+ __classPrivateFieldGet(this, _Extension_state, "f").saveMetadata(request);
162
164
  resolve(true);
163
165
  return true;
164
166
  }
165
167
  metadataGet(genesisHash) {
166
- return this.#state.knownMetadata.find((result) => result.genesisHash === genesisHash) || null;
168
+ return __classPrivateFieldGet(this, _Extension_state, "f").knownMetadata.find((result) => result.genesisHash === genesisHash) || null;
167
169
  }
168
170
  metadataList() {
169
- return this.#state.knownMetadata;
171
+ return __classPrivateFieldGet(this, _Extension_state, "f").knownMetadata;
170
172
  }
171
173
  metadataReject({ id }) {
172
- const queued = this.#state.getMetaRequest(id);
174
+ const queued = __classPrivateFieldGet(this, _Extension_state, "f").getMetaRequest(id);
173
175
  assert(queued, 'Unable to find request');
174
176
  const { reject } = queued;
175
177
  reject(new Error('Rejected'));
@@ -177,7 +179,7 @@ export default class Extension {
177
179
  }
178
180
  metadataSubscribe(id, port) {
179
181
  const cb = createSubscription(id, port);
180
- const subscription = this.#state.metaSubject.subscribe((requests) => cb(requests));
182
+ const subscription = __classPrivateFieldGet(this, _Extension_state, "f").metaSubject.subscribe((requests) => cb(requests));
181
183
  port.onDisconnect.addListener(() => {
182
184
  unsubscribe(id);
183
185
  subscription.unsubscribe();
@@ -238,7 +240,7 @@ export default class Extension {
238
240
  };
239
241
  }
240
242
  signingApprovePassword({ id, password, savePass }) {
241
- const queued = this.#state.getSignRequest(id);
243
+ const queued = __classPrivateFieldGet(this, _Extension_state, "f").getSignRequest(id);
242
244
  assert(queued, 'Unable to find request');
243
245
  const { reject, request, resolve } = queued;
244
246
  const pair = keyring.getPair(queued.account.address);
@@ -259,7 +261,7 @@ export default class Extension {
259
261
  const { payload } = request;
260
262
  if (isJsonPayload(payload)) {
261
263
  // Get the metadata for the genesisHash
262
- const metadata = this.#state.knownMetadata.find(({ genesisHash }) => genesisHash === payload.genesisHash);
264
+ const metadata = __classPrivateFieldGet(this, _Extension_state, "f").knownMetadata.find(({ genesisHash }) => genesisHash === payload.genesisHash);
263
265
  if (metadata) {
264
266
  // we have metadata, expand it and extract the info/registry
265
267
  const expanded = metadataExpand(metadata, false);
@@ -281,7 +283,7 @@ export default class Extension {
281
283
  // unlike queued.account.address the following
282
284
  // address is encoded with the default prefix
283
285
  // which what is used for password caching mapping
284
- this.#cachedUnlocks[pair.address] = Date.now() + PASSWORD_EXPIRY_MS;
286
+ __classPrivateFieldGet(this, _Extension_cachedUnlocks, "f")[pair.address] = Date.now() + PASSWORD_EXPIRY_MS;
285
287
  }
286
288
  else {
287
289
  pair.lock();
@@ -293,21 +295,21 @@ export default class Extension {
293
295
  return true;
294
296
  }
295
297
  signingApproveSignature({ id, signature }) {
296
- const queued = this.#state.getSignRequest(id);
298
+ const queued = __classPrivateFieldGet(this, _Extension_state, "f").getSignRequest(id);
297
299
  assert(queued, 'Unable to find request');
298
300
  const { resolve } = queued;
299
301
  resolve({ id, signature });
300
302
  return true;
301
303
  }
302
304
  signingCancel({ id }) {
303
- const queued = this.#state.getSignRequest(id);
305
+ const queued = __classPrivateFieldGet(this, _Extension_state, "f").getSignRequest(id);
304
306
  assert(queued, 'Unable to find request');
305
307
  const { reject } = queued;
306
308
  reject(new Error('Cancelled'));
307
309
  return true;
308
310
  }
309
311
  signingIsLocked({ id }) {
310
- const queued = this.#state.getSignRequest(id);
312
+ const queued = __classPrivateFieldGet(this, _Extension_state, "f").getSignRequest(id);
311
313
  assert(queued, 'Unable to find request');
312
314
  const address = queued.request.payload.address;
313
315
  const pair = keyring.getPair(address);
@@ -321,7 +323,7 @@ export default class Extension {
321
323
  // FIXME This looks very much like what we have in authorization
322
324
  signingSubscribe(id, port) {
323
325
  const cb = createSubscription(id, port);
324
- const subscription = this.#state.signSubject.subscribe((requests) => cb(requests));
326
+ const subscription = __classPrivateFieldGet(this, _Extension_state, "f").signSubject.subscribe((requests) => cb(requests));
325
327
  port.onDisconnect.addListener(() => {
326
328
  unsubscribe(id);
327
329
  subscription.unsubscribe();
@@ -342,13 +344,13 @@ export default class Extension {
342
344
  try {
343
345
  parentPair.decodePkcs8(password);
344
346
  }
345
- catch (e) {
347
+ catch {
346
348
  throw new Error('invalid password');
347
349
  }
348
350
  try {
349
351
  return parentPair.derive(suri, metadata);
350
352
  }
351
- catch (err) {
353
+ catch {
352
354
  throw new Error(`"${suri}" is not a valid derivation path`);
353
355
  }
354
356
  }
@@ -370,16 +372,16 @@ export default class Extension {
370
372
  return true;
371
373
  }
372
374
  removeAuthorization(url) {
373
- return { list: this.#state.removeAuthorization(url) };
375
+ return { list: __classPrivateFieldGet(this, _Extension_state, "f").removeAuthorization(url) };
374
376
  }
375
377
  deleteAuthRequest(requestId) {
376
- return this.#state.deleteAuthRequest(requestId);
378
+ return __classPrivateFieldGet(this, _Extension_state, "f").deleteAuthRequest(requestId);
377
379
  }
378
380
  updateCurrentTabs({ urls }) {
379
- this.#state.udateCurrentTabsUrl(urls);
381
+ __classPrivateFieldGet(this, _Extension_state, "f").udateCurrentTabsUrl(urls);
380
382
  }
381
383
  getConnectedTabsUrl() {
382
- return this.#state.getConnectedTabsUrl();
384
+ return __classPrivateFieldGet(this, _Extension_state, "f").getConnectedTabsUrl();
383
385
  }
384
386
  // Weird thought, the eslint override is not needed in Tabs
385
387
  // eslint-disable-next-line @typescript-eslint/require-await
@@ -452,7 +454,7 @@ export default class Extension {
452
454
  case 'pri(seed.validate)':
453
455
  return this.seedValidate(request);
454
456
  case 'pri(settings.notification)':
455
- return this.#state.setNotification(request);
457
+ return __classPrivateFieldGet(this, _Extension_state, "f").setNotification(request);
456
458
  case 'pri(signing.approve.password)':
457
459
  return this.signingApprovePassword(request);
458
460
  case 'pri(signing.approve.signature)':
@@ -469,4 +471,5 @@ export default class Extension {
469
471
  throw new Error(`Unable to handle message of type ${type}`);
470
472
  }
471
473
  }
472
- }
474
+ }
475
+ _Extension_cachedUnlocks = new WeakMap(), _Extension_state = new WeakMap();
@@ -1,7 +1,7 @@
1
1
  /// <reference types="chrome" />
2
2
  import type { MetadataDef, ProviderMeta } from '@polkadot/extension-inject/types';
3
3
  import type { JsonRpcResponse, ProviderInterface, ProviderInterfaceCallback } from '@polkadot/rpc-provider/types';
4
- import type { AccountJson, AuthorizeRequest, MetadataRequest, RequestAuthorizeTab, RequestRpcSend, RequestRpcSubscribe, RequestRpcUnsubscribe, RequestSign, ResponseRpcListProviders, ResponseSigning, SigningRequest } from '../types';
4
+ import type { AccountJson, AuthorizeRequest, MetadataRequest, RequestAuthorizeTab, RequestRpcSend, RequestRpcSubscribe, RequestRpcUnsubscribe, RequestSign, ResponseRpcListProviders, ResponseSigning, SigningRequest } from '../types.js';
5
5
  import { BehaviorSubject } from 'rxjs';
6
6
  interface Resolver<T> {
7
7
  reject: (error: Error) => void;