@polkadot/extension-base 0.44.6 → 0.44.7

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 (63) hide show
  1. package/background/RequestBytesSign.js +1 -2
  2. package/background/RequestExtrinsicSign.js +1 -2
  3. package/background/handlers/Extension.d.ts +4 -1
  4. package/background/handlers/Extension.js +79 -146
  5. package/background/handlers/State.d.ts +8 -3
  6. package/background/handlers/State.js +60 -67
  7. package/background/handlers/Tabs.d.ts +1 -1
  8. package/background/handlers/Tabs.js +17 -57
  9. package/background/handlers/helpers.js +1 -1
  10. package/background/handlers/index.d.ts +1 -1
  11. package/background/handlers/index.js +6 -4
  12. package/background/handlers/subscriptions.js +5 -2
  13. package/background/types.d.ts +33 -25
  14. package/bundle.js +1 -0
  15. package/cjs/background/RequestBytesSign.js +1 -6
  16. package/cjs/background/RequestExtrinsicSign.js +1 -4
  17. package/cjs/background/handlers/Extension.js +95 -207
  18. package/cjs/background/handlers/State.js +60 -82
  19. package/cjs/background/handlers/Tabs.js +17 -70
  20. package/cjs/background/handlers/helpers.js +1 -2
  21. package/cjs/background/handlers/index.js +6 -12
  22. package/cjs/background/handlers/subscriptions.js +5 -3
  23. package/cjs/bundle.js +0 -1
  24. package/cjs/defaults.js +16 -8
  25. package/cjs/detectOther.js +0 -4
  26. package/cjs/detectPackage.js +2 -4
  27. package/cjs/index.js +0 -2
  28. package/cjs/packageInfo.js +3 -1
  29. package/cjs/page/Accounts.js +1 -5
  30. package/cjs/page/Injected.js +6 -8
  31. package/cjs/page/Metadata.js +1 -5
  32. package/cjs/page/PostMessageProvider.js +25 -38
  33. package/cjs/page/Signer.js +12 -12
  34. package/cjs/page/index.js +8 -14
  35. package/cjs/stores/Accounts.js +2 -9
  36. package/cjs/stores/Base.js +1 -14
  37. package/cjs/stores/Metadata.js +2 -7
  38. package/cjs/stores/index.js +0 -3
  39. package/cjs/utils/canDerive.js +1 -1
  40. package/cjs/utils/getId.js +1 -3
  41. package/cjs/utils/index.js +0 -1
  42. package/defaults.d.ts +2 -2
  43. package/defaults.js +14 -5
  44. package/detectOther.js +1 -0
  45. package/detectPackage.js +2 -0
  46. package/index.js +2 -0
  47. package/package.json +16 -16
  48. package/packageInfo.js +3 -1
  49. package/page/Accounts.js +1 -3
  50. package/page/Injected.js +6 -1
  51. package/page/Metadata.js +1 -3
  52. package/page/PostMessageProvider.d.ts +2 -1
  53. package/page/PostMessageProvider.js +25 -33
  54. package/page/Signer.js +12 -10
  55. package/page/index.d.ts +1 -1
  56. package/page/index.js +11 -7
  57. package/stores/Accounts.js +2 -4
  58. package/stores/Base.js +1 -12
  59. package/stores/Metadata.js +2 -2
  60. package/stores/index.js +1 -0
  61. package/utils/canDerive.js +1 -0
  62. package/utils/getId.js +1 -0
  63. package/utils/index.js +1 -0
@@ -1,34 +1,23 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _defaults = require("@polkadot/extension-base/defaults");
11
-
12
9
  var _utils = require("@polkadot/extension-base/utils");
13
-
14
10
  var _phishing = require("@polkadot/phishing");
15
-
16
11
  var _uiKeyring = _interopRequireDefault(require("@polkadot/ui-keyring"));
17
-
18
12
  var _accounts = require("@polkadot/ui-keyring/observable/accounts");
19
-
20
13
  var _util = require("@polkadot/util");
21
-
22
14
  var _RequestBytesSign = _interopRequireDefault(require("../RequestBytesSign"));
23
-
24
15
  var _RequestExtrinsicSign = _interopRequireDefault(require("../RequestExtrinsicSign"));
25
-
26
16
  var _helpers = require("./helpers");
27
-
28
17
  var _subscriptions = require("./subscriptions");
29
-
30
18
  // Copyright 2019-2022 @polkadot/extension authors & contributors
31
19
  // SPDX-License-Identifier: Apache-2.0
20
+
32
21
  function transformAccounts(accounts) {
33
22
  let anyType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
34
23
  return Object.values(accounts).filter(_ref => {
@@ -64,26 +53,23 @@ function transformAccounts(accounts) {
64
53
  };
65
54
  });
66
55
  }
67
-
68
56
  class Tabs {
69
57
  #accountSubs = {};
70
58
  #state;
71
-
72
59
  constructor(state) {
73
60
  this.#state = state;
74
61
  }
75
-
76
62
  filterForAuthorizedAccounts(accounts, url) {
77
63
  const auth = this.#state.authUrls[this.#state.stripUrl(url)];
78
- return accounts.filter(allAcc => auth.authorizedAccounts // we have a list, use it
79
- ? auth.authorizedAccounts.includes(allAcc.address) // if no authorizedAccounts and isAllowed return all - these are old converted urls
64
+ return accounts.filter(allAcc => auth.authorizedAccounts
65
+ // we have a list, use it
66
+ ? auth.authorizedAccounts.includes(allAcc.address)
67
+ // if no authorizedAccounts and isAllowed return all - these are old converted urls
80
68
  : auth.isAllowed);
81
69
  }
82
-
83
70
  authorize(url, request) {
84
71
  return this.#state.authorizeUrl(url, request);
85
72
  }
86
-
87
73
  accountsListAuthorized(url, _ref4) {
88
74
  let {
89
75
  anyType
@@ -91,7 +77,6 @@ class Tabs {
91
77
  const transformedAccounts = transformAccounts(_accounts.accounts.subject.getValue(), anyType);
92
78
  return this.filterForAuthorizedAccounts(transformedAccounts, url);
93
79
  }
94
-
95
80
  accountsSubscribeAuthorized(url, id, port) {
96
81
  const cb = (0, _subscriptions.createSubscription)(id, port);
97
82
  this.#accountSubs[id] = {
@@ -108,30 +93,24 @@ class Tabs {
108
93
  });
109
94
  return id;
110
95
  }
111
-
112
96
  accountsUnsubscribe(url, _ref5) {
113
97
  let {
114
98
  id
115
99
  } = _ref5;
116
100
  const sub = this.#accountSubs[id];
117
-
118
101
  if (!sub || sub.url !== url) {
119
102
  return false;
120
103
  }
121
-
122
104
  delete this.#accountSubs[id];
123
105
  (0, _subscriptions.unsubscribe)(id);
124
106
  sub.subscription.unsubscribe();
125
107
  return true;
126
108
  }
127
-
128
109
  getSigningPair(address) {
129
110
  const pair = _uiKeyring.default.getPair(address);
130
-
131
111
  (0, _util.assert)(pair, 'Unable to find keypair');
132
112
  return pair;
133
113
  }
134
-
135
114
  bytesSign(url, request) {
136
115
  const address = request.address;
137
116
  const pair = this.getSigningPair(address);
@@ -140,7 +119,6 @@ class Tabs {
140
119
  ...pair.meta
141
120
  });
142
121
  }
143
-
144
122
  extrinsicSign(url, request) {
145
123
  const address = request.address;
146
124
  const pair = this.getSigningPair(address);
@@ -149,12 +127,11 @@ class Tabs {
149
127
  ...pair.meta
150
128
  });
151
129
  }
152
-
153
130
  metadataProvide(url, request) {
154
131
  return this.#state.injectMetadata(url, request);
155
- } // eslint-disable-next-line @typescript-eslint/no-unused-vars
156
-
132
+ }
157
133
 
134
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
158
135
  metadataList(url) {
159
136
  return this.#state.knownMetadata.map(_ref6 => {
160
137
  let {
@@ -167,50 +144,40 @@ class Tabs {
167
144
  };
168
145
  });
169
146
  }
170
-
171
147
  rpcListProviders() {
172
148
  return this.#state.rpcListProviders();
173
149
  }
174
-
175
150
  rpcSend(request, port) {
176
151
  return this.#state.rpcSend(request, port);
177
152
  }
178
-
179
153
  rpcStartProvider(key, port) {
180
154
  return this.#state.rpcStartProvider(key, port);
181
155
  }
182
-
183
156
  async rpcSubscribe(request, id, port) {
184
157
  const innerCb = (0, _subscriptions.createSubscription)(id, port);
185
-
186
158
  const cb = (_error, data) => innerCb(data);
187
-
188
159
  const subscriptionId = await this.#state.rpcSubscribe(request, cb, port);
189
160
  port.onDisconnect.addListener(() => {
190
161
  (0, _subscriptions.unsubscribe)(id);
191
- (0, _helpers.withErrorLog)(() => this.rpcUnsubscribe({ ...request,
162
+ (0, _helpers.withErrorLog)(() => this.rpcUnsubscribe({
163
+ ...request,
192
164
  subscriptionId
193
165
  }, port));
194
166
  });
195
167
  return true;
196
168
  }
197
-
198
169
  rpcSubscribeConnected(request, id, port) {
199
170
  const innerCb = (0, _subscriptions.createSubscription)(id, port);
200
-
201
171
  const cb = (_error, data) => innerCb(data);
202
-
203
172
  this.#state.rpcSubscribeConnected(request, cb, port);
204
173
  port.onDisconnect.addListener(() => {
205
174
  (0, _subscriptions.unsubscribe)(id);
206
175
  });
207
176
  return Promise.resolve(true);
208
177
  }
209
-
210
178
  async rpcUnsubscribe(request, port) {
211
179
  return this.#state.rpcUnsubscribe(request, port);
212
180
  }
213
-
214
181
  redirectPhishingLanding(phishingWebsite) {
215
182
  const nonFragment = phishingWebsite.split('#')[0];
216
183
  const encodedWebsite = encodeURIComponent(nonFragment);
@@ -228,75 +195,55 @@ class Tabs {
228
195
  })));
229
196
  });
230
197
  }
231
-
232
198
  async redirectIfPhishing(url) {
233
199
  const isInDenyList = await (0, _phishing.checkIfDenied)(url);
234
-
235
200
  if (isInDenyList) {
236
201
  this.redirectPhishingLanding(url);
237
202
  return true;
238
203
  }
239
-
240
204
  return false;
241
205
  }
242
-
243
206
  async handle(id, type, request, url, port) {
244
207
  if (type === 'pub(phishing.redirectIfDenied)') {
245
208
  return this.redirectIfPhishing(url);
246
209
  }
247
-
248
210
  if (type !== 'pub(authorize.tab)') {
249
211
  this.#state.ensureUrlAuthorized(url);
250
212
  }
251
-
252
213
  switch (type) {
253
214
  case 'pub(authorize.tab)':
254
215
  return this.authorize(url, request);
255
-
256
216
  case 'pub(accounts.list)':
257
217
  return this.accountsListAuthorized(url, request);
258
-
259
218
  case 'pub(accounts.subscribe)':
260
- return this.accountsSubscribeAuthorized(url, id, port);
261
-
219
+ return port && this.accountsSubscribeAuthorized(url, id, port);
262
220
  case 'pub(accounts.unsubscribe)':
263
221
  return this.accountsUnsubscribe(url, request);
264
-
265
222
  case 'pub(bytes.sign)':
266
223
  return this.bytesSign(url, request);
267
-
268
224
  case 'pub(extrinsic.sign)':
269
225
  return this.extrinsicSign(url, request);
270
-
271
226
  case 'pub(metadata.list)':
272
227
  return this.metadataList(url);
273
-
274
228
  case 'pub(metadata.provide)':
275
229
  return this.metadataProvide(url, request);
276
-
230
+ case 'pub(ping)':
231
+ return Promise.resolve(true);
277
232
  case 'pub(rpc.listProviders)':
278
233
  return this.rpcListProviders();
279
-
280
234
  case 'pub(rpc.send)':
281
- return this.rpcSend(request, port);
282
-
235
+ return port && this.rpcSend(request, port);
283
236
  case 'pub(rpc.startProvider)':
284
- return this.rpcStartProvider(request, port);
285
-
237
+ return port && this.rpcStartProvider(request, port);
286
238
  case 'pub(rpc.subscribe)':
287
- return this.rpcSubscribe(request, id, port);
288
-
239
+ return port && this.rpcSubscribe(request, id, port);
289
240
  case 'pub(rpc.subscribeConnected)':
290
- return this.rpcSubscribeConnected(request, id, port);
291
-
241
+ return port && this.rpcSubscribeConnected(request, id, port);
292
242
  case 'pub(rpc.unsubscribe)':
293
- return this.rpcUnsubscribe(request, port);
294
-
243
+ return port && this.rpcUnsubscribe(request, port);
295
244
  default:
296
245
  throw new Error(`Unable to handle message of type ${type}`);
297
246
  }
298
247
  }
299
-
300
248
  }
301
-
302
249
  exports.default = Tabs;
@@ -4,13 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.withErrorLog = withErrorLog;
7
-
8
7
  // Copyright 2019-2022 @polkadot/extension authors & contributors
9
8
  // SPDX-License-Identifier: Apache-2.0
9
+
10
10
  function withErrorLog(fn) {
11
11
  try {
12
12
  const p = fn();
13
-
14
13
  if (p && typeof p === 'object' && typeof p.catch === 'function') {
15
14
  p.catch(console.error);
16
15
  }
@@ -1,28 +1,21 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = handler;
9
-
10
8
  var _util = require("@polkadot/util");
11
-
12
9
  var _defaults = require("../../defaults");
13
-
14
10
  var _Extension = _interopRequireDefault(require("./Extension"));
15
-
16
11
  var _State = _interopRequireDefault(require("./State"));
17
-
18
12
  var _Tabs = _interopRequireDefault(require("./Tabs"));
19
-
20
13
  // Copyright 2019-2022 @polkadot/extension authors & contributors
21
14
  // SPDX-License-Identifier: Apache-2.0
15
+
22
16
  const state = new _State.default();
23
17
  const extension = new _Extension.default(state);
24
18
  const tabs = new _Tabs.default(state);
25
-
26
19
  function handler(_ref, port) {
27
20
  let {
28
21
  id,
@@ -30,8 +23,8 @@ function handler(_ref, port) {
30
23
  request
31
24
  } = _ref;
32
25
  let extensionPortName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _defaults.PORT_EXTENSION;
33
- const isExtension = port.name === extensionPortName;
34
- const sender = port.sender;
26
+ const isExtension = !port || (port == null ? void 0 : port.name) === extensionPortName;
27
+ const sender = port == null ? void 0 : port.sender;
35
28
  const from = isExtension ? 'extension' : sender.tab && sender.tab.url || sender.url || '<unknown>';
36
29
  const source = `${from}: ${id}: ${message}`;
37
30
  console.log(` [in] ${source}`); // :: ${JSON.stringify(request)}`);
@@ -39,17 +32,18 @@ function handler(_ref, port) {
39
32
  const promise = isExtension ? extension.handle(id, message, request, port) : tabs.handle(id, message, request, from, port);
40
33
  promise.then(response => {
41
34
  console.log(`[out] ${source}`); // :: ${JSON.stringify(response)}`);
35
+
42
36
  // between the start and the end of the promise, the user may have closed
43
37
  // the tab, in which case port will be undefined
44
-
45
38
  (0, _util.assert)(port, 'Port has been disconnected');
46
39
  port.postMessage({
47
40
  id,
48
41
  response
49
42
  });
50
43
  }).catch(error => {
51
- console.log(`[err] ${source}:: ${error.message}`); // only send message back to port if it's still connected
44
+ console.log(`[err] ${source}:: ${error.message}`);
52
45
 
46
+ // only send message back to port if it's still connected
53
47
  if (port) {
54
48
  port.postMessage({
55
49
  error: error.message,
@@ -7,8 +7,10 @@ exports.createSubscription = createSubscription;
7
7
  exports.unsubscribe = unsubscribe;
8
8
  // Copyright 2019-2022 @polkadot/extension authors & contributors
9
9
  // SPDX-License-Identifier: Apache-2.0
10
- const subscriptions = {}; // return a subscription callback, that will send the data to the caller via the port
11
10
 
11
+ const subscriptions = {};
12
+
13
+ // return a subscription callback, that will send the data to the caller via the port
12
14
  function createSubscription(id, port) {
13
15
  subscriptions[id] = port;
14
16
  return subscription => {
@@ -19,9 +21,9 @@ function createSubscription(id, port) {
19
21
  });
20
22
  }
21
23
  };
22
- } // clear a previous subscriber
23
-
24
+ }
24
25
 
26
+ // clear a previous subscriber
25
27
  function unsubscribe(id) {
26
28
  if (subscriptions[id]) {
27
29
  console.log(`Unsubscribing from ${id}`);
package/cjs/bundle.js CHANGED
@@ -9,5 +9,4 @@ Object.defineProperty(exports, "packageInfo", {
9
9
  return _packageInfo.packageInfo;
10
10
  }
11
11
  });
12
-
13
12
  var _packageInfo = require("./packageInfo");
package/cjs/defaults.js CHANGED
@@ -6,21 +6,29 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.PORT_EXTENSION = exports.PORT_CONTENT = exports.PHISHING_PAGE_REDIRECT = exports.PASSWORD_EXPIRY_MS = exports.PASSWORD_EXPIRY_MIN = exports.MESSAGE_ORIGIN_PAGE = exports.MESSAGE_ORIGIN_CONTENT = exports.EXTENSION_PREFIX = exports.ALLOWED_PATH = void 0;
7
7
  // Copyright 2019-2022 @polkadot/extension-base authors & contributors
8
8
  // SPDX-License-Identifier: Apache-2.0
9
- const ALLOWED_PATH = ['/', '/account/import-ledger', '/account/restore-json'];
10
- exports.ALLOWED_PATH = ALLOWED_PATH;
11
- const PHISHING_PAGE_REDIRECT = '/phishing-page-detected';
12
- exports.PHISHING_PAGE_REDIRECT = PHISHING_PAGE_REDIRECT;
9
+
10
+ // this _must_ be changed for each extension
13
11
  const EXTENSION_PREFIX = process.env.EXTENSION_PREFIX || '';
14
12
  exports.EXTENSION_PREFIX = EXTENSION_PREFIX;
15
- const PORT_CONTENT = `${EXTENSION_PREFIX}content`;
13
+ if (!EXTENSION_PREFIX && !process.env.PORT_PREFIX) {
14
+ throw new Error('CRITICAL: The extension does not define an own EXTENSION_PREFIX environment variable as part of the build, this is required to ensure that messages are not shared between extensions. Failure to do so will yield messages sent to multiple extensions.');
15
+ }
16
+ const PORT_PREFIX = `${EXTENSION_PREFIX || 'unknown'}-${process.env.PORT_PREFIX || 'unknown'}`;
17
+ const PORT_CONTENT = `${PORT_PREFIX}-content`;
16
18
  exports.PORT_CONTENT = PORT_CONTENT;
17
- const PORT_EXTENSION = `${EXTENSION_PREFIX}extension`;
19
+ const PORT_EXTENSION = `${PORT_PREFIX}-extension`;
18
20
  exports.PORT_EXTENSION = PORT_EXTENSION;
19
- const MESSAGE_ORIGIN_PAGE = `${EXTENSION_PREFIX}page`;
21
+ const MESSAGE_ORIGIN_PAGE = `${PORT_PREFIX}-page`;
20
22
  exports.MESSAGE_ORIGIN_PAGE = MESSAGE_ORIGIN_PAGE;
21
- const MESSAGE_ORIGIN_CONTENT = `${EXTENSION_PREFIX}content`;
23
+ const MESSAGE_ORIGIN_CONTENT = `${PORT_PREFIX}-content`;
22
24
  exports.MESSAGE_ORIGIN_CONTENT = MESSAGE_ORIGIN_CONTENT;
25
+ const ALLOWED_PATH = ['/', '/account/import-ledger', '/account/restore-json'];
26
+ exports.ALLOWED_PATH = ALLOWED_PATH;
27
+ const PHISHING_PAGE_REDIRECT = '/phishing-page-detected';
28
+ exports.PHISHING_PAGE_REDIRECT = PHISHING_PAGE_REDIRECT;
23
29
  const PASSWORD_EXPIRY_MIN = 15;
24
30
  exports.PASSWORD_EXPIRY_MIN = PASSWORD_EXPIRY_MIN;
25
31
  const PASSWORD_EXPIRY_MS = PASSWORD_EXPIRY_MIN * 60 * 1000;
32
+
33
+ // console.log(`Extension is sending and receiving messages on ${PORT_PREFIX}-*`);
26
34
  exports.PASSWORD_EXPIRY_MS = PASSWORD_EXPIRY_MS;
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _packageInfo = require("@polkadot/extension-chains/cjs/packageInfo");
9
-
10
8
  var _packageInfo2 = require("@polkadot/extension-dapp/cjs/packageInfo");
11
-
12
9
  var _packageInfo3 = require("@polkadot/extension-inject/cjs/packageInfo");
13
-
14
10
  // Copyright 2017-2022 @polkadot/extension-base authors & contributors
15
11
  // SPDX-License-Identifier: Apache-2.0
16
12
  var _default = [_packageInfo.packageInfo, _packageInfo2.packageInfo, _packageInfo3.packageInfo];
@@ -1,14 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  var _util = require("@polkadot/util");
6
-
7
5
  var _detectOther = _interopRequireDefault(require("./detectOther"));
8
-
9
6
  var _packageInfo = require("./packageInfo");
10
-
11
7
  // Copyright 2017-2022 @polkadot/extension-base authors & contributors
12
8
  // SPDX-License-Identifier: Apache-2.0
9
+
13
10
  // Do not edit, auto-generated by @polkadot/dev
11
+
14
12
  (0, _util.detectPackage)(_packageInfo.packageInfo, null, _detectOther.default);
package/cjs/index.js CHANGED
@@ -3,9 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
-
7
6
  var _bundle = require("./bundle");
8
-
9
7
  Object.keys(_bundle).forEach(function (key) {
10
8
  if (key === "default" || key === "__esModule") return;
11
9
  if (key in exports && exports[key] === _bundle[key]) return;
@@ -6,11 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.packageInfo = void 0;
7
7
  // Copyright 2017-2022 @polkadot/extension-base authors & contributors
8
8
  // SPDX-License-Identifier: Apache-2.0
9
+
9
10
  // Do not edit, auto-generated by @polkadot/dev
11
+
10
12
  const packageInfo = {
11
13
  name: '@polkadot/extension-base',
12
14
  path: typeof __dirname === 'string' ? __dirname : 'auto',
13
15
  type: 'cjs',
14
- version: '0.44.6'
16
+ version: '0.44.7'
15
17
  };
16
18
  exports.packageInfo = packageInfo;
@@ -6,20 +6,18 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  // Copyright 2019-2022 @polkadot/extension authors & contributors
8
8
  // SPDX-License-Identifier: Apache-2.0
9
+
9
10
  // External to class, this.# is not private enough (yet)
10
11
  let sendRequest;
11
-
12
12
  class Accounts {
13
13
  constructor(_sendRequest) {
14
14
  sendRequest = _sendRequest;
15
15
  }
16
-
17
16
  get(anyType) {
18
17
  return sendRequest('pub(accounts.list)', {
19
18
  anyType
20
19
  });
21
20
  }
22
-
23
21
  subscribe(cb) {
24
22
  let id = null;
25
23
  sendRequest('pub(accounts.subscribe)', null, cb).then(subId => {
@@ -31,7 +29,5 @@ class Accounts {
31
29
  }).catch(console.error);
32
30
  };
33
31
  }
34
-
35
32
  }
36
-
37
33
  exports.default = Accounts;
@@ -1,30 +1,28 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
9
-
10
8
  var _Accounts = _interopRequireDefault(require("./Accounts"));
11
-
12
9
  var _Metadata = _interopRequireDefault(require("./Metadata"));
13
-
14
10
  var _PostMessageProvider = _interopRequireDefault(require("./PostMessageProvider"));
15
-
16
11
  var _Signer = _interopRequireDefault(require("./Signer"));
17
-
18
12
  // Copyright 2019-2022 @polkadot/extension authors & contributors
19
13
  // SPDX-License-Identifier: Apache-2.0
14
+
20
15
  class _default {
21
16
  constructor(sendRequest) {
22
17
  this.accounts = new _Accounts.default(sendRequest);
23
18
  this.metadata = new _Metadata.default(sendRequest);
24
19
  this.provider = new _PostMessageProvider.default(sendRequest);
25
20
  this.signer = new _Signer.default(sendRequest);
21
+ setInterval(() => {
22
+ sendRequest('pub(ping)', null).catch(() => {
23
+ console.error('Extension unavailable, ping failed');
24
+ });
25
+ }, 5000 + Math.floor(Math.random() * 5000));
26
26
  }
27
-
28
27
  }
29
-
30
28
  exports.default = _default;
@@ -6,22 +6,18 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
  // Copyright 2019-2022 @polkadot/extension authors & contributors
8
8
  // SPDX-License-Identifier: Apache-2.0
9
+
9
10
  // External to class, this.# is not private enough (yet)
10
11
  let sendRequest;
11
-
12
12
  class Metadata {
13
13
  constructor(_sendRequest) {
14
14
  sendRequest = _sendRequest;
15
15
  }
16
-
17
16
  get() {
18
17
  return sendRequest('pub(metadata.list)');
19
18
  }
20
-
21
19
  provide(definition) {
22
20
  return sendRequest('pub(metadata.provide)', definition);
23
21
  }
24
-
25
22
  }
26
-
27
23
  exports.default = Metadata;