@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.
- package/background/RequestBytesSign.d.ts +1 -1
- package/background/RequestBytesSign.js +1 -2
- package/background/RequestExtrinsicSign.d.ts +1 -1
- package/background/RequestExtrinsicSign.js +1 -2
- package/background/handlers/Extension.d.ts +2 -2
- package/background/handlers/Extension.js +41 -38
- package/background/handlers/State.d.ts +1 -1
- package/background/handlers/State.js +126 -123
- package/background/handlers/Tabs.d.ts +2 -2
- package/background/handlers/Tabs.js +24 -22
- package/background/handlers/helpers.js +1 -1
- package/background/handlers/index.d.ts +1 -1
- package/background/handlers/index.js +1 -1
- package/background/handlers/subscriptions.d.ts +1 -1
- package/background/handlers/subscriptions.js +1 -1
- package/background/types.d.ts +2 -2
- package/background/types.js +1 -1
- package/bundle.d.ts +1 -1
- package/bundle.js +1 -1
- package/cjs/background/RequestBytesSign.js +1 -1
- package/cjs/background/RequestExtrinsicSign.js +1 -1
- package/cjs/background/handlers/Extension.js +16 -16
- package/cjs/background/handlers/State.js +7 -7
- package/cjs/background/handlers/Tabs.js +16 -17
- package/cjs/background/handlers/helpers.js +1 -1
- package/cjs/background/handlers/index.js +9 -9
- package/cjs/background/handlers/subscriptions.js +1 -1
- package/cjs/background/types.js +1 -1
- package/cjs/bundle.js +2 -2
- package/cjs/defaults.js +1 -1
- package/cjs/detectOther.js +1 -1
- package/cjs/detectPackage.js +3 -3
- package/cjs/index.js +1 -1
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/Accounts.js +1 -1
- package/cjs/page/Injected.js +9 -9
- package/cjs/page/Metadata.js +1 -1
- package/cjs/page/PostMessageProvider.js +3 -3
- package/cjs/page/Signer.js +1 -1
- package/cjs/page/index.js +7 -7
- package/cjs/page/types.js +1 -1
- package/cjs/stores/Accounts.js +6 -6
- package/cjs/stores/Base.js +1 -1
- package/cjs/stores/Metadata.js +6 -6
- package/cjs/stores/index.js +4 -4
- package/cjs/types.js +1 -1
- package/cjs/utils/canDerive.js +1 -1
- package/cjs/utils/getId.js +3 -3
- package/cjs/utils/index.js +2 -2
- package/defaults.js +1 -1
- package/detectOther.js +1 -1
- package/detectPackage.js +1 -1
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/package.json +17 -16
- package/packageInfo.js +1 -1
- package/page/Accounts.d.ts +1 -1
- package/page/Accounts.js +1 -1
- package/page/Injected.d.ts +5 -5
- package/page/Injected.js +2 -6
- package/page/Metadata.d.ts +1 -1
- package/page/Metadata.js +1 -1
- package/page/PostMessageProvider.d.ts +1 -1
- package/page/PostMessageProvider.js +24 -21
- package/page/Signer.d.ts +1 -1
- package/page/Signer.js +1 -1
- package/page/index.d.ts +2 -2
- package/page/index.js +1 -1
- package/page/types.d.ts +1 -1
- package/page/types.js +1 -1
- package/stores/Accounts.d.ts +1 -1
- package/stores/Accounts.js +1 -1
- package/stores/Base.js +11 -8
- package/stores/Metadata.d.ts +1 -1
- package/stores/Metadata.js +1 -1
- package/stores/index.d.ts +2 -2
- package/stores/index.js +1 -1
- package/types.js +1 -1
- package/utils/canDerive.js +1 -1
- package/utils/getId.js +1 -1
- package/utils/index.d.ts +1 -1
- 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
|
|
26
|
-
this
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
89
|
-
this
|
|
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
|
|
97
|
+
const savedExpiry = __classPrivateFieldGet(this, _Extension_cachedUnlocks, "f")[address] || 0;
|
|
96
98
|
const remainingTime = savedExpiry - Date.now();
|
|
97
99
|
if (remainingTime < 0) {
|
|
98
|
-
this
|
|
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
|
|
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
|
|
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
|
|
144
|
+
return __classPrivateFieldGet(this, _Extension_state, "f").updateAuthorizedAccounts([[url, authorizedAccounts]]);
|
|
143
145
|
}
|
|
144
146
|
getAuthList() {
|
|
145
|
-
return { list: this
|
|
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
|
|
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
|
|
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
|
|
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
|
|
168
|
+
return __classPrivateFieldGet(this, _Extension_state, "f").knownMetadata.find((result) => result.genesisHash === genesisHash) || null;
|
|
167
169
|
}
|
|
168
170
|
metadataList() {
|
|
169
|
-
return this
|
|
171
|
+
return __classPrivateFieldGet(this, _Extension_state, "f").knownMetadata;
|
|
170
172
|
}
|
|
171
173
|
metadataReject({ id }) {
|
|
172
|
-
const queued = this
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
375
|
+
return { list: __classPrivateFieldGet(this, _Extension_state, "f").removeAuthorization(url) };
|
|
374
376
|
}
|
|
375
377
|
deleteAuthRequest(requestId) {
|
|
376
|
-
return this
|
|
378
|
+
return __classPrivateFieldGet(this, _Extension_state, "f").deleteAuthRequest(requestId);
|
|
377
379
|
}
|
|
378
380
|
updateCurrentTabs({ urls }) {
|
|
379
|
-
this
|
|
381
|
+
__classPrivateFieldGet(this, _Extension_state, "f").udateCurrentTabsUrl(urls);
|
|
380
382
|
}
|
|
381
383
|
getConnectedTabsUrl() {
|
|
382
|
-
return this
|
|
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
|
|
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;
|