@polkadot/extension-base 0.45.1 → 0.45.2

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 (47) hide show
  1. package/background/RequestBytesSign.d.ts +1 -1
  2. package/background/RequestBytesSign.js +0 -1
  3. package/background/RequestExtrinsicSign.d.ts +1 -1
  4. package/background/RequestExtrinsicSign.js +0 -1
  5. package/background/handlers/Extension.d.ts +2 -2
  6. package/background/handlers/Extension.js +37 -34
  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 +23 -20
  11. package/background/handlers/index.d.ts +1 -1
  12. package/background/handlers/subscriptions.d.ts +1 -1
  13. package/background/types.d.ts +2 -2
  14. package/bundle.d.ts +1 -1
  15. package/cjs/background/handlers/Extension.js +11 -11
  16. package/cjs/background/handlers/State.js +6 -6
  17. package/cjs/background/handlers/Tabs.js +14 -14
  18. package/cjs/background/handlers/index.js +8 -8
  19. package/cjs/bundle.js +2 -2
  20. package/cjs/detectPackage.js +3 -3
  21. package/cjs/index.js +1 -1
  22. package/cjs/packageInfo.js +1 -1
  23. package/cjs/page/Injected.js +8 -8
  24. package/cjs/page/PostMessageProvider.js +2 -2
  25. package/cjs/page/index.js +6 -6
  26. package/cjs/stores/Accounts.js +5 -5
  27. package/cjs/stores/Metadata.js +5 -5
  28. package/cjs/stores/index.js +4 -4
  29. package/cjs/utils/getId.js +2 -2
  30. package/cjs/utils/index.js +2 -2
  31. package/index.d.ts +1 -1
  32. package/package.json +14 -14
  33. package/packageInfo.js +1 -1
  34. package/page/Accounts.d.ts +1 -1
  35. package/page/Injected.d.ts +5 -5
  36. package/page/Injected.js +1 -5
  37. package/page/Metadata.d.ts +1 -1
  38. package/page/PostMessageProvider.d.ts +1 -1
  39. package/page/PostMessageProvider.js +24 -21
  40. package/page/Signer.d.ts +1 -1
  41. package/page/index.d.ts +2 -2
  42. package/page/types.d.ts +1 -1
  43. package/stores/Accounts.d.ts +1 -1
  44. package/stores/Base.js +11 -8
  45. package/stores/Metadata.d.ts +1 -1
  46. package/stores/index.d.ts +2 -2
  47. package/utils/index.d.ts +1 -1
@@ -1,3 +1,5 @@
1
+ var _State_authUrls, _State_authRequests, _State_metaStore, _State_injectedProviders, _State_metaRequests, _State_notification, _State_providers, _State_signRequests, _State_windows, _State_connectedTabsUrl;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { BehaviorSubject } from 'rxjs';
2
4
  import { getId } from '@polkadot/extension-base/utils/getId';
3
5
  import { addMetadata, knownMetadata } from '@polkadot/extension-chains';
@@ -61,29 +63,87 @@ function extractMetadata(store) {
61
63
  });
62
64
  }
63
65
  export default class State {
64
- #authUrls = {};
65
- #authRequests = {};
66
- #metaStore = new MetadataStore();
67
- // Map of providers currently injected in tabs
68
- #injectedProviders = new Map();
69
- #metaRequests = {};
70
- #notification = settings.notification;
71
- // Map of all providers exposed by the extension, they are retrievable by key
72
- #providers;
73
- #signRequests = {};
74
- #windows = [];
75
- #connectedTabsUrl = [];
76
- authSubject = new BehaviorSubject([]);
77
- metaSubject = new BehaviorSubject([]);
78
- signSubject = new BehaviorSubject([]);
79
- defaultAuthAccountSelection = [];
80
66
  constructor(providers = {}) {
81
- this.#providers = providers;
82
- extractMetadata(this.#metaStore);
67
+ _State_authUrls.set(this, {});
68
+ _State_authRequests.set(this, {});
69
+ _State_metaStore.set(this, new MetadataStore());
70
+ // Map of providers currently injected in tabs
71
+ _State_injectedProviders.set(this, new Map());
72
+ _State_metaRequests.set(this, {});
73
+ _State_notification.set(this, settings.notification);
74
+ // Map of all providers exposed by the extension, they are retrievable by key
75
+ _State_providers.set(this, void 0);
76
+ _State_signRequests.set(this, {});
77
+ _State_windows.set(this, []);
78
+ _State_connectedTabsUrl.set(this, []);
79
+ this.authSubject = new BehaviorSubject([]);
80
+ this.metaSubject = new BehaviorSubject([]);
81
+ this.signSubject = new BehaviorSubject([]);
82
+ this.defaultAuthAccountSelection = [];
83
+ this.authComplete = (id, resolve, reject) => {
84
+ const complete = (authorizedAccounts = []) => {
85
+ const { idStr, request: { origin }, url } = __classPrivateFieldGet(this, _State_authRequests, "f")[id];
86
+ __classPrivateFieldGet(this, _State_authUrls, "f")[this.stripUrl(url)] = {
87
+ authorizedAccounts,
88
+ count: 0,
89
+ id: idStr,
90
+ origin,
91
+ url
92
+ };
93
+ this.saveCurrentAuthList();
94
+ this.updateDefaultAuthAccounts(authorizedAccounts);
95
+ delete __classPrivateFieldGet(this, _State_authRequests, "f")[id];
96
+ this.updateIconAuth(true);
97
+ };
98
+ return {
99
+ reject: (error) => {
100
+ complete();
101
+ reject(error);
102
+ },
103
+ resolve: ({ authorizedAccounts, result }) => {
104
+ complete(authorizedAccounts);
105
+ resolve({ authorizedAccounts, result });
106
+ }
107
+ };
108
+ };
109
+ this.metaComplete = (id, resolve, reject) => {
110
+ const complete = () => {
111
+ delete __classPrivateFieldGet(this, _State_metaRequests, "f")[id];
112
+ this.updateIconMeta(true);
113
+ };
114
+ return {
115
+ reject: (error) => {
116
+ complete();
117
+ reject(error);
118
+ },
119
+ resolve: (result) => {
120
+ complete();
121
+ resolve(result);
122
+ }
123
+ };
124
+ };
125
+ this.signComplete = (id, resolve, reject) => {
126
+ const complete = () => {
127
+ delete __classPrivateFieldGet(this, _State_signRequests, "f")[id];
128
+ this.updateIconSign(true);
129
+ };
130
+ return {
131
+ reject: (error) => {
132
+ complete();
133
+ reject(error);
134
+ },
135
+ resolve: (result) => {
136
+ complete();
137
+ resolve(result);
138
+ }
139
+ };
140
+ };
141
+ __classPrivateFieldSet(this, _State_providers, providers, "f");
142
+ extractMetadata(__classPrivateFieldGet(this, _State_metaStore, "f"));
83
143
  // retrieve previously set authorizations
84
144
  const authString = localStorage.getItem(AUTH_URLS_KEY) || '{}';
85
145
  const previousAuth = JSON.parse(authString);
86
- this.#authUrls = previousAuth;
146
+ __classPrivateFieldSet(this, _State_authUrls, previousAuth, "f");
87
147
  // retrieve previously set default auth accounts
88
148
  const defaultAuthString = localStorage.getItem(DEFAULT_AUTH_ACCOUNTS) || '[]';
89
149
  const previousDefaultAuth = JSON.parse(defaultAuthString);
@@ -93,72 +153,46 @@ export default class State {
93
153
  return knownMetadata();
94
154
  }
95
155
  get numAuthRequests() {
96
- return Object.keys(this.#authRequests).length;
156
+ return Object.keys(__classPrivateFieldGet(this, _State_authRequests, "f")).length;
97
157
  }
98
158
  get numMetaRequests() {
99
- return Object.keys(this.#metaRequests).length;
159
+ return Object.keys(__classPrivateFieldGet(this, _State_metaRequests, "f")).length;
100
160
  }
101
161
  get numSignRequests() {
102
- return Object.keys(this.#signRequests).length;
162
+ return Object.keys(__classPrivateFieldGet(this, _State_signRequests, "f")).length;
103
163
  }
104
164
  get allAuthRequests() {
105
165
  return Object
106
- .values(this.#authRequests)
166
+ .values(__classPrivateFieldGet(this, _State_authRequests, "f"))
107
167
  .map(({ id, request, url }) => ({ id, request, url }));
108
168
  }
109
169
  get allMetaRequests() {
110
170
  return Object
111
- .values(this.#metaRequests)
171
+ .values(__classPrivateFieldGet(this, _State_metaRequests, "f"))
112
172
  .map(({ id, request, url }) => ({ id, request, url }));
113
173
  }
114
174
  get allSignRequests() {
115
175
  return Object
116
- .values(this.#signRequests)
176
+ .values(__classPrivateFieldGet(this, _State_signRequests, "f"))
117
177
  .map(({ account, id, request, url }) => ({ account, id, request, url }));
118
178
  }
119
179
  get authUrls() {
120
- return this.#authUrls;
180
+ return __classPrivateFieldGet(this, _State_authUrls, "f");
121
181
  }
122
182
  popupClose() {
123
- this.#windows.forEach((id) => withErrorLog(() => chrome.windows.remove(id)));
124
- this.#windows = [];
183
+ __classPrivateFieldGet(this, _State_windows, "f").forEach((id) => withErrorLog(() => chrome.windows.remove(id)));
184
+ __classPrivateFieldSet(this, _State_windows, [], "f");
125
185
  }
126
186
  popupOpen() {
127
- this.#notification !== 'extension' &&
128
- chrome.windows.create(this.#notification === 'window'
187
+ __classPrivateFieldGet(this, _State_notification, "f") !== 'extension' &&
188
+ chrome.windows.create(__classPrivateFieldGet(this, _State_notification, "f") === 'window'
129
189
  ? NORMAL_WINDOW_OPTS
130
190
  : POPUP_WINDOW_OPTS, (window) => {
131
191
  if (window) {
132
- this.#windows.push(window.id || 0);
192
+ __classPrivateFieldGet(this, _State_windows, "f").push(window.id || 0);
133
193
  }
134
194
  });
135
195
  }
136
- authComplete = (id, resolve, reject) => {
137
- const complete = (authorizedAccounts = []) => {
138
- const { idStr, request: { origin }, url } = this.#authRequests[id];
139
- this.#authUrls[this.stripUrl(url)] = {
140
- authorizedAccounts,
141
- count: 0,
142
- id: idStr,
143
- origin,
144
- url
145
- };
146
- this.saveCurrentAuthList();
147
- this.updateDefaultAuthAccounts(authorizedAccounts);
148
- delete this.#authRequests[id];
149
- this.updateIconAuth(true);
150
- };
151
- return {
152
- reject: (error) => {
153
- complete();
154
- reject(error);
155
- },
156
- resolve: ({ authorizedAccounts, result }) => {
157
- complete(authorizedAccounts);
158
- resolve({ authorizedAccounts, result });
159
- }
160
- };
161
- };
162
196
  udateCurrentTabsUrl(urls) {
163
197
  const connectedTabs = urls.map((url) => {
164
198
  let strippedUrl = '';
@@ -175,17 +209,17 @@ export default class State {
175
209
  : undefined;
176
210
  })
177
211
  .filter((value) => !!value);
178
- this.#connectedTabsUrl = connectedTabs;
212
+ __classPrivateFieldSet(this, _State_connectedTabsUrl, connectedTabs, "f");
179
213
  }
180
214
  getConnectedTabsUrl() {
181
- return this.#connectedTabsUrl;
215
+ return __classPrivateFieldGet(this, _State_connectedTabsUrl, "f");
182
216
  }
183
217
  deleteAuthRequest(requestId) {
184
- delete this.#authRequests[requestId];
218
+ delete __classPrivateFieldGet(this, _State_authRequests, "f")[requestId];
185
219
  this.updateIconAuth(true);
186
220
  }
187
221
  saveCurrentAuthList() {
188
- localStorage.setItem(AUTH_URLS_KEY, JSON.stringify(this.#authUrls));
222
+ localStorage.setItem(AUTH_URLS_KEY, JSON.stringify(__classPrivateFieldGet(this, _State_authUrls, "f")));
189
223
  }
190
224
  saveDefaultAuthAccounts() {
191
225
  localStorage.setItem(DEFAULT_AUTH_ACCOUNTS, JSON.stringify(this.defaultAuthAccountSelection));
@@ -194,38 +228,6 @@ export default class State {
194
228
  this.defaultAuthAccountSelection = newList;
195
229
  this.saveDefaultAuthAccounts();
196
230
  }
197
- metaComplete = (id, resolve, reject) => {
198
- const complete = () => {
199
- delete this.#metaRequests[id];
200
- this.updateIconMeta(true);
201
- };
202
- return {
203
- reject: (error) => {
204
- complete();
205
- reject(error);
206
- },
207
- resolve: (result) => {
208
- complete();
209
- resolve(result);
210
- }
211
- };
212
- };
213
- signComplete = (id, resolve, reject) => {
214
- const complete = () => {
215
- delete this.#signRequests[id];
216
- this.updateIconSign(true);
217
- };
218
- return {
219
- reject: (error) => {
220
- complete();
221
- reject(error);
222
- },
223
- resolve: (result) => {
224
- complete();
225
- resolve(result);
226
- }
227
- };
228
- };
229
231
  stripUrl(url) {
230
232
  assert(url && (url.startsWith('http:') || url.startsWith('https:') || url.startsWith('ipfs:') || url.startsWith('ipns:')), `Invalid url ${url}, expected to start with http: or https: or ipfs: or ipns:`);
231
233
  const parts = url.split('/');
@@ -246,11 +248,11 @@ export default class State {
246
248
  }
247
249
  }
248
250
  removeAuthorization(url) {
249
- const entry = this.#authUrls[url];
251
+ const entry = __classPrivateFieldGet(this, _State_authUrls, "f")[url];
250
252
  assert(entry, `The source ${url} is not known`);
251
- delete this.#authUrls[url];
253
+ delete __classPrivateFieldGet(this, _State_authUrls, "f")[url];
252
254
  this.saveCurrentAuthList();
253
- return this.#authUrls;
255
+ return __classPrivateFieldGet(this, _State_authUrls, "f");
254
256
  }
255
257
  updateIconAuth(shouldClose) {
256
258
  this.authSubject.next(this.allAuthRequests);
@@ -266,7 +268,7 @@ export default class State {
266
268
  }
267
269
  updateAuthorizedAccounts(authorizedAccountDiff) {
268
270
  authorizedAccountDiff.forEach(([url, authorizedAccountDiff]) => {
269
- this.#authUrls[url].authorizedAccounts = authorizedAccountDiff;
271
+ __classPrivateFieldGet(this, _State_authUrls, "f")[url].authorizedAccounts = authorizedAccountDiff;
270
272
  });
271
273
  this.saveCurrentAuthList();
272
274
  }
@@ -274,12 +276,12 @@ export default class State {
274
276
  const idStr = this.stripUrl(url);
275
277
  // Do not enqueue duplicate authorization requests.
276
278
  const isDuplicate = Object
277
- .values(this.#authRequests)
279
+ .values(__classPrivateFieldGet(this, _State_authRequests, "f"))
278
280
  .some((request) => request.idStr === idStr);
279
281
  assert(!isDuplicate, `The source ${url} has a pending authorization request`);
280
- if (this.#authUrls[idStr]) {
282
+ if (__classPrivateFieldGet(this, _State_authUrls, "f")[idStr]) {
281
283
  // this url was seen in the past
282
- assert(this.#authUrls[idStr].authorizedAccounts || this.#authUrls[idStr].isAllowed, `The source ${url} is not allowed to interact with this extension`);
284
+ assert(__classPrivateFieldGet(this, _State_authUrls, "f")[idStr].authorizedAccounts || __classPrivateFieldGet(this, _State_authUrls, "f")[idStr].isAllowed, `The source ${url} is not allowed to interact with this extension`);
283
285
  return {
284
286
  authorizedAccounts: [],
285
287
  result: false
@@ -287,7 +289,7 @@ export default class State {
287
289
  }
288
290
  return new Promise((resolve, reject) => {
289
291
  const id = getId();
290
- this.#authRequests[id] = {
292
+ __classPrivateFieldGet(this, _State_authRequests, "f")[id] = {
291
293
  ...this.authComplete(id, resolve, reject),
292
294
  id,
293
295
  idStr,
@@ -299,14 +301,14 @@ export default class State {
299
301
  });
300
302
  }
301
303
  ensureUrlAuthorized(url) {
302
- const entry = this.#authUrls[this.stripUrl(url)];
304
+ const entry = __classPrivateFieldGet(this, _State_authUrls, "f")[this.stripUrl(url)];
303
305
  assert(entry, `The source ${url} has not been enabled yet`);
304
306
  return true;
305
307
  }
306
308
  injectMetadata(url, request) {
307
309
  return new Promise((resolve, reject) => {
308
310
  const id = getId();
309
- this.#metaRequests[id] = {
311
+ __classPrivateFieldGet(this, _State_metaRequests, "f")[id] = {
310
312
  ...this.metaComplete(id, resolve, reject),
311
313
  id,
312
314
  request,
@@ -317,73 +319,73 @@ export default class State {
317
319
  });
318
320
  }
319
321
  getAuthRequest(id) {
320
- return this.#authRequests[id];
322
+ return __classPrivateFieldGet(this, _State_authRequests, "f")[id];
321
323
  }
322
324
  getMetaRequest(id) {
323
- return this.#metaRequests[id];
325
+ return __classPrivateFieldGet(this, _State_metaRequests, "f")[id];
324
326
  }
325
327
  getSignRequest(id) {
326
- return this.#signRequests[id];
328
+ return __classPrivateFieldGet(this, _State_signRequests, "f")[id];
327
329
  }
328
330
  // List all providers the extension is exposing
329
331
  rpcListProviders() {
330
- return Promise.resolve(Object.keys(this.#providers).reduce((acc, key) => {
331
- acc[key] = this.#providers[key].meta;
332
+ return Promise.resolve(Object.keys(__classPrivateFieldGet(this, _State_providers, "f")).reduce((acc, key) => {
333
+ acc[key] = __classPrivateFieldGet(this, _State_providers, "f")[key].meta;
332
334
  return acc;
333
335
  }, {}));
334
336
  }
335
337
  rpcSend(request, port) {
336
- const provider = this.#injectedProviders.get(port);
338
+ const provider = __classPrivateFieldGet(this, _State_injectedProviders, "f").get(port);
337
339
  assert(provider, 'Cannot call pub(rpc.subscribe) before provider is set');
338
340
  return provider.send(request.method, request.params);
339
341
  }
340
342
  // Start a provider, return its meta
341
343
  rpcStartProvider(key, port) {
342
- assert(Object.keys(this.#providers).includes(key), `Provider ${key} is not exposed by extension`);
343
- if (this.#injectedProviders.get(port)) {
344
- return Promise.resolve(this.#providers[key].meta);
344
+ assert(Object.keys(__classPrivateFieldGet(this, _State_providers, "f")).includes(key), `Provider ${key} is not exposed by extension`);
345
+ if (__classPrivateFieldGet(this, _State_injectedProviders, "f").get(port)) {
346
+ return Promise.resolve(__classPrivateFieldGet(this, _State_providers, "f")[key].meta);
345
347
  }
346
348
  // Instantiate the provider
347
- this.#injectedProviders.set(port, this.#providers[key].start());
349
+ __classPrivateFieldGet(this, _State_injectedProviders, "f").set(port, __classPrivateFieldGet(this, _State_providers, "f")[key].start());
348
350
  // Close provider connection when page is closed
349
351
  port.onDisconnect.addListener(() => {
350
- const provider = this.#injectedProviders.get(port);
352
+ const provider = __classPrivateFieldGet(this, _State_injectedProviders, "f").get(port);
351
353
  if (provider) {
352
354
  withErrorLog(() => provider.disconnect());
353
355
  }
354
- this.#injectedProviders.delete(port);
356
+ __classPrivateFieldGet(this, _State_injectedProviders, "f").delete(port);
355
357
  });
356
- return Promise.resolve(this.#providers[key].meta);
358
+ return Promise.resolve(__classPrivateFieldGet(this, _State_providers, "f")[key].meta);
357
359
  }
358
360
  rpcSubscribe({ method, params, type }, cb, port) {
359
- const provider = this.#injectedProviders.get(port);
361
+ const provider = __classPrivateFieldGet(this, _State_injectedProviders, "f").get(port);
360
362
  assert(provider, 'Cannot call pub(rpc.subscribe) before provider is set');
361
363
  return provider.subscribe(type, method, params, cb);
362
364
  }
363
365
  rpcSubscribeConnected(_request, cb, port) {
364
- const provider = this.#injectedProviders.get(port);
366
+ const provider = __classPrivateFieldGet(this, _State_injectedProviders, "f").get(port);
365
367
  assert(provider, 'Cannot call pub(rpc.subscribeConnected) before provider is set');
366
368
  cb(null, provider.isConnected); // Immediately send back current isConnected
367
369
  provider.on('connected', () => cb(null, true));
368
370
  provider.on('disconnected', () => cb(null, false));
369
371
  }
370
372
  rpcUnsubscribe(request, port) {
371
- const provider = this.#injectedProviders.get(port);
373
+ const provider = __classPrivateFieldGet(this, _State_injectedProviders, "f").get(port);
372
374
  assert(provider, 'Cannot call pub(rpc.unsubscribe) before provider is set');
373
375
  return provider.unsubscribe(request.type, request.method, request.subscriptionId);
374
376
  }
375
377
  saveMetadata(meta) {
376
- this.#metaStore.set(meta.genesisHash, meta);
378
+ __classPrivateFieldGet(this, _State_metaStore, "f").set(meta.genesisHash, meta);
377
379
  addMetadata(meta);
378
380
  }
379
381
  setNotification(notification) {
380
- this.#notification = notification;
382
+ __classPrivateFieldSet(this, _State_notification, notification, "f");
381
383
  return true;
382
384
  }
383
385
  sign(url, request, account) {
384
386
  const id = getId();
385
387
  return new Promise((resolve, reject) => {
386
- this.#signRequests[id] = {
388
+ __classPrivateFieldGet(this, _State_signRequests, "f")[id] = {
387
389
  ...this.signComplete(id, resolve, reject),
388
390
  account,
389
391
  id,
@@ -394,4 +396,5 @@ export default class State {
394
396
  this.popupOpen();
395
397
  });
396
398
  }
397
- }
399
+ }
400
+ _State_authUrls = new WeakMap(), _State_authRequests = new WeakMap(), _State_metaStore = new WeakMap(), _State_injectedProviders = new WeakMap(), _State_metaRequests = new WeakMap(), _State_notification = new WeakMap(), _State_providers = new WeakMap(), _State_signRequests = new WeakMap(), _State_windows = new WeakMap(), _State_connectedTabsUrl = new WeakMap();
@@ -1,6 +1,6 @@
1
1
  /// <reference types="chrome" />
2
- import type { MessageTypes, RequestTypes, ResponseTypes } from '../types';
3
- import State from './State';
2
+ import type { MessageTypes, RequestTypes, ResponseTypes } from '../types.js';
3
+ import State from './State.js';
4
4
  export default class Tabs {
5
5
  #private;
6
6
  constructor(state: State);
@@ -1,3 +1,5 @@
1
+ var _Tabs_accountSubs, _Tabs_state;
2
+ import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
1
3
  import { PHISHING_PAGE_REDIRECT } from '@polkadot/extension-base/defaults';
2
4
  import { canDerive } from '@polkadot/extension-base/utils';
3
5
  import { checkIfDenied } from '@polkadot/phishing';
@@ -22,13 +24,13 @@ function transformAccounts(accounts, anyType = false) {
22
24
  }));
23
25
  }
24
26
  export default class Tabs {
25
- #accountSubs = {};
26
- #state;
27
27
  constructor(state) {
28
- this.#state = state;
28
+ _Tabs_accountSubs.set(this, {});
29
+ _Tabs_state.set(this, void 0);
30
+ __classPrivateFieldSet(this, _Tabs_state, state, "f");
29
31
  }
30
32
  filterForAuthorizedAccounts(accounts, url) {
31
- const auth = this.#state.authUrls[this.#state.stripUrl(url)];
33
+ const auth = __classPrivateFieldGet(this, _Tabs_state, "f").authUrls[__classPrivateFieldGet(this, _Tabs_state, "f").stripUrl(url)];
32
34
  return accounts.filter((allAcc) => auth.authorizedAccounts
33
35
  // we have a list, use it
34
36
  ? auth.authorizedAccounts.includes(allAcc.address)
@@ -36,7 +38,7 @@ export default class Tabs {
36
38
  : auth.isAllowed);
37
39
  }
38
40
  authorize(url, request) {
39
- return this.#state.authorizeUrl(url, request);
41
+ return __classPrivateFieldGet(this, _Tabs_state, "f").authorizeUrl(url, request);
40
42
  }
41
43
  accountsListAuthorized(url, { anyType }) {
42
44
  const transformedAccounts = transformAccounts(accountsObservable.subject.getValue(), anyType);
@@ -44,7 +46,7 @@ export default class Tabs {
44
46
  }
45
47
  accountsSubscribeAuthorized(url, id, port) {
46
48
  const cb = createSubscription(id, port);
47
- this.#accountSubs[id] = {
49
+ __classPrivateFieldGet(this, _Tabs_accountSubs, "f")[id] = {
48
50
  subscription: accountsObservable.subject.subscribe((accounts) => {
49
51
  const transformedAccounts = transformAccounts(accounts);
50
52
  cb(this.filterForAuthorizedAccounts(transformedAccounts, url));
@@ -57,11 +59,11 @@ export default class Tabs {
57
59
  return id;
58
60
  }
59
61
  accountsUnsubscribe(url, { id }) {
60
- const sub = this.#accountSubs[id];
62
+ const sub = __classPrivateFieldGet(this, _Tabs_accountSubs, "f")[id];
61
63
  if (!sub || sub.url !== url) {
62
64
  return false;
63
65
  }
64
- delete this.#accountSubs[id];
66
+ delete __classPrivateFieldGet(this, _Tabs_accountSubs, "f")[id];
65
67
  unsubscribe(id);
66
68
  sub.subscription.unsubscribe();
67
69
  return true;
@@ -74,36 +76,36 @@ export default class Tabs {
74
76
  bytesSign(url, request) {
75
77
  const address = request.address;
76
78
  const pair = this.getSigningPair(address);
77
- return this.#state.sign(url, new RequestBytesSign(request), { address, ...pair.meta });
79
+ return __classPrivateFieldGet(this, _Tabs_state, "f").sign(url, new RequestBytesSign(request), { address, ...pair.meta });
78
80
  }
79
81
  extrinsicSign(url, request) {
80
82
  const address = request.address;
81
83
  const pair = this.getSigningPair(address);
82
- return this.#state.sign(url, new RequestExtrinsicSign(request), { address, ...pair.meta });
84
+ return __classPrivateFieldGet(this, _Tabs_state, "f").sign(url, new RequestExtrinsicSign(request), { address, ...pair.meta });
83
85
  }
84
86
  metadataProvide(url, request) {
85
- return this.#state.injectMetadata(url, request);
87
+ return __classPrivateFieldGet(this, _Tabs_state, "f").injectMetadata(url, request);
86
88
  }
87
89
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
88
90
  metadataList(url) {
89
- return this.#state.knownMetadata.map(({ genesisHash, specVersion }) => ({
91
+ return __classPrivateFieldGet(this, _Tabs_state, "f").knownMetadata.map(({ genesisHash, specVersion }) => ({
90
92
  genesisHash,
91
93
  specVersion
92
94
  }));
93
95
  }
94
96
  rpcListProviders() {
95
- return this.#state.rpcListProviders();
97
+ return __classPrivateFieldGet(this, _Tabs_state, "f").rpcListProviders();
96
98
  }
97
99
  rpcSend(request, port) {
98
- return this.#state.rpcSend(request, port);
100
+ return __classPrivateFieldGet(this, _Tabs_state, "f").rpcSend(request, port);
99
101
  }
100
102
  rpcStartProvider(key, port) {
101
- return this.#state.rpcStartProvider(key, port);
103
+ return __classPrivateFieldGet(this, _Tabs_state, "f").rpcStartProvider(key, port);
102
104
  }
103
105
  async rpcSubscribe(request, id, port) {
104
106
  const innerCb = createSubscription(id, port);
105
107
  const cb = (_error, data) => innerCb(data);
106
- const subscriptionId = await this.#state.rpcSubscribe(request, cb, port);
108
+ const subscriptionId = await __classPrivateFieldGet(this, _Tabs_state, "f").rpcSubscribe(request, cb, port);
107
109
  port.onDisconnect.addListener(() => {
108
110
  unsubscribe(id);
109
111
  withErrorLog(() => this.rpcUnsubscribe({ ...request, subscriptionId }, port));
@@ -113,14 +115,14 @@ export default class Tabs {
113
115
  rpcSubscribeConnected(request, id, port) {
114
116
  const innerCb = createSubscription(id, port);
115
117
  const cb = (_error, data) => innerCb(data);
116
- this.#state.rpcSubscribeConnected(request, cb, port);
118
+ __classPrivateFieldGet(this, _Tabs_state, "f").rpcSubscribeConnected(request, cb, port);
117
119
  port.onDisconnect.addListener(() => {
118
120
  unsubscribe(id);
119
121
  });
120
122
  return Promise.resolve(true);
121
123
  }
122
124
  async rpcUnsubscribe(request, port) {
123
- return this.#state.rpcUnsubscribe(request, port);
125
+ return __classPrivateFieldGet(this, _Tabs_state, "f").rpcUnsubscribe(request, port);
124
126
  }
125
127
  redirectPhishingLanding(phishingWebsite) {
126
128
  const nonFragment = phishingWebsite.split('#')[0];
@@ -146,7 +148,7 @@ export default class Tabs {
146
148
  return this.redirectIfPhishing(url);
147
149
  }
148
150
  if (type !== 'pub(authorize.tab)') {
149
- this.#state.ensureUrlAuthorized(url);
151
+ __classPrivateFieldGet(this, _Tabs_state, "f").ensureUrlAuthorized(url);
150
152
  }
151
153
  switch (type) {
152
154
  case 'pub(authorize.tab)':
@@ -183,4 +185,5 @@ export default class Tabs {
183
185
  throw new Error(`Unable to handle message of type ${type}`);
184
186
  }
185
187
  }
186
- }
188
+ }
189
+ _Tabs_accountSubs = new WeakMap(), _Tabs_state = new WeakMap();
@@ -1,3 +1,3 @@
1
1
  /// <reference types="chrome" />
2
- import type { MessageTypes, TransportRequestMessage } from '../types';
2
+ import type { MessageTypes, TransportRequestMessage } from '../types.js';
3
3
  export default function handler<TMessageType extends MessageTypes>({ id, message, request }: TransportRequestMessage<TMessageType>, port?: chrome.runtime.Port, extensionPortName?: string): void;
@@ -1,4 +1,4 @@
1
1
  /// <reference types="chrome" />
2
- import type { MessageTypesWithSubscriptions, SubscriptionMessageTypes } from '../types';
2
+ import type { MessageTypesWithSubscriptions, SubscriptionMessageTypes } from '../types.js';
3
3
  export declare function createSubscription<TMessageType extends MessageTypesWithSubscriptions>(id: string, port: chrome.runtime.Port): (data: SubscriptionMessageTypes[TMessageType]) => void;
4
4
  export declare function unsubscribe(id: string): void;
@@ -5,8 +5,8 @@ import type { Registry, SignerPayloadJSON, SignerPayloadRaw } from '@polkadot/ty
5
5
  import type { KeyringPairs$Json } from '@polkadot/ui-keyring/types';
6
6
  import type { HexString } from '@polkadot/util/types';
7
7
  import type { KeypairType } from '@polkadot/util-crypto/types';
8
- import { ALLOWED_PATH } from '../defaults';
9
- import { AuthResponse, AuthUrls } from './handlers/State';
8
+ import { ALLOWED_PATH } from '../defaults.js';
9
+ import { AuthResponse, AuthUrls } from './handlers/State.js';
10
10
  type KeysWithDefinedValues<T> = {
11
11
  [K in keyof T]: T[K] extends undefined ? never : K;
12
12
  }[keyof T];
package/bundle.d.ts CHANGED
@@ -1 +1 @@
1
- export { packageInfo } from './packageInfo';
1
+ export { packageInfo } from './packageInfo.js';
@@ -9,8 +9,8 @@ const ui_keyring_1 = tslib_1.__importDefault(require("@polkadot/ui-keyring"));
9
9
  const accounts_1 = require("@polkadot/ui-keyring/observable/accounts");
10
10
  const util_1 = require("@polkadot/util");
11
11
  const util_crypto_1 = require("@polkadot/util-crypto");
12
- const helpers_1 = require("./helpers");
13
- const subscriptions_1 = require("./subscriptions");
12
+ const helpers_js_1 = require("./helpers.js");
13
+ const subscriptions_js_1 = require("./subscriptions.js");
14
14
  const SEED_DEFAULT_LENGTH = 12;
15
15
  const SEED_LENGTHS = [12, 15, 18, 21, 24];
16
16
  const ETH_DERIVE_DEFAULT = "/m/44'/60'/0'/0/0";
@@ -127,10 +127,10 @@ class Extension {
127
127
  }
128
128
  }
129
129
  accountsSubscribe(id, port) {
130
- const cb = (0, subscriptions_1.createSubscription)(id, port);
130
+ const cb = (0, subscriptions_js_1.createSubscription)(id, port);
131
131
  const subscription = accounts_1.accounts.subject.subscribe((accounts) => cb(this.transformAccounts(accounts)));
132
132
  port.onDisconnect.addListener(() => {
133
- (0, subscriptions_1.unsubscribe)(id);
133
+ (0, subscriptions_js_1.unsubscribe)(id);
134
134
  subscription.unsubscribe();
135
135
  });
136
136
  return true;
@@ -150,10 +150,10 @@ class Extension {
150
150
  }
151
151
  // FIXME This looks very much like what we have in accounts
152
152
  authorizeSubscribe(id, port) {
153
- const cb = (0, subscriptions_1.createSubscription)(id, port);
153
+ const cb = (0, subscriptions_js_1.createSubscription)(id, port);
154
154
  const subscription = tslib_1.__classPrivateFieldGet(this, _Extension_state, "f").authSubject.subscribe((requests) => cb(requests));
155
155
  port.onDisconnect.addListener(() => {
156
- (0, subscriptions_1.unsubscribe)(id);
156
+ (0, subscriptions_js_1.unsubscribe)(id);
157
157
  subscription.unsubscribe();
158
158
  });
159
159
  return true;
@@ -180,10 +180,10 @@ class Extension {
180
180
  return true;
181
181
  }
182
182
  metadataSubscribe(id, port) {
183
- const cb = (0, subscriptions_1.createSubscription)(id, port);
183
+ const cb = (0, subscriptions_js_1.createSubscription)(id, port);
184
184
  const subscription = tslib_1.__classPrivateFieldGet(this, _Extension_state, "f").metaSubject.subscribe((requests) => cb(requests));
185
185
  port.onDisconnect.addListener(() => {
186
- (0, subscriptions_1.unsubscribe)(id);
186
+ (0, subscriptions_js_1.unsubscribe)(id);
187
187
  subscription.unsubscribe();
188
188
  });
189
189
  return true;
@@ -324,10 +324,10 @@ class Extension {
324
324
  }
325
325
  // FIXME This looks very much like what we have in authorization
326
326
  signingSubscribe(id, port) {
327
- const cb = (0, subscriptions_1.createSubscription)(id, port);
327
+ const cb = (0, subscriptions_js_1.createSubscription)(id, port);
328
328
  const subscription = tslib_1.__classPrivateFieldGet(this, _Extension_state, "f").signSubject.subscribe((requests) => cb(requests));
329
329
  port.onDisconnect.addListener(() => {
330
- (0, subscriptions_1.unsubscribe)(id);
330
+ (0, subscriptions_js_1.unsubscribe)(id);
331
331
  subscription.unsubscribe();
332
332
  });
333
333
  return true;
@@ -338,7 +338,7 @@ class Extension {
338
338
  console.error('Not allowed to open the url:', url);
339
339
  return false;
340
340
  }
341
- (0, helpers_1.withErrorLog)(() => chrome.tabs.create({ url }));
341
+ (0, helpers_js_1.withErrorLog)(() => chrome.tabs.create({ url }));
342
342
  return true;
343
343
  }
344
344
  derive(parentAddress, suri, password, metadata) {