@pezkuwi/extension-base 0.62.10 → 0.62.12

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 (97) hide show
  1. package/LICENSE +201 -0
  2. package/background/RequestBytesSign.js +6 -9
  3. package/background/RequestExtrinsicSign.js +6 -9
  4. package/background/handlers/Extension.js +304 -460
  5. package/background/handlers/State.js +365 -619
  6. package/background/handlers/Tabs.js +155 -273
  7. package/background/handlers/helpers.js +1 -3
  8. package/background/handlers/index.js +17 -22
  9. package/background/handlers/subscriptions.js +5 -9
  10. package/background/index.js +0 -2
  11. package/background/types.js +0 -2
  12. package/bundle.js +0 -2
  13. package/cjs/background/RequestBytesSign.d.ts +12 -0
  14. package/cjs/background/RequestBytesSign.js +15 -0
  15. package/cjs/background/RequestExtrinsicSign.d.ts +12 -0
  16. package/cjs/background/RequestExtrinsicSign.js +14 -0
  17. package/cjs/background/handlers/Extension.d.ts +49 -0
  18. package/cjs/background/handlers/Extension.js +492 -0
  19. package/cjs/background/handlers/State.d.ts +96 -0
  20. package/cjs/background/handlers/State.js +482 -0
  21. package/cjs/background/handlers/Tabs.d.ts +25 -0
  22. package/cjs/background/handlers/Tabs.js +199 -0
  23. package/cjs/background/handlers/helpers.d.ts +1 -0
  24. package/cjs/background/handlers/helpers.js +14 -0
  25. package/cjs/background/handlers/index.d.ts +3 -0
  26. package/cjs/background/handlers/index.js +46 -0
  27. package/cjs/background/handlers/subscriptions.d.ts +3 -0
  28. package/cjs/background/handlers/subscriptions.js +22 -0
  29. package/cjs/background/index.d.ts +1 -0
  30. package/cjs/background/index.js +7 -0
  31. package/cjs/background/types.d.ts +343 -0
  32. package/cjs/background/types.js +2 -0
  33. package/cjs/bundle.d.ts +1 -0
  34. package/cjs/bundle.js +5 -0
  35. package/cjs/defaults.d.ts +9 -0
  36. package/cjs/defaults.js +16 -0
  37. package/cjs/index.d.ts +1 -0
  38. package/cjs/index.js +4 -0
  39. package/cjs/package.json +3 -0
  40. package/cjs/packageDetect.d.ts +1 -0
  41. package/cjs/packageDetect.js +8 -0
  42. package/cjs/packageInfo.d.ts +6 -0
  43. package/cjs/packageInfo.js +4 -0
  44. package/cjs/page/Accounts.d.ts +7 -0
  45. package/cjs/page/Accounts.js +24 -0
  46. package/cjs/page/Injected.d.ts +13 -0
  47. package/cjs/page/Injected.js +25 -0
  48. package/cjs/page/Metadata.d.ts +7 -0
  49. package/cjs/page/Metadata.js +15 -0
  50. package/cjs/page/PostMessageProvider.d.ts +63 -0
  51. package/cjs/page/PostMessageProvider.js +135 -0
  52. package/cjs/page/Signer.d.ts +8 -0
  53. package/cjs/page/Signer.js +29 -0
  54. package/cjs/page/index.d.ts +16 -0
  55. package/cjs/page/index.js +52 -0
  56. package/cjs/page/types.d.ts +6 -0
  57. package/cjs/page/types.js +2 -0
  58. package/cjs/stores/Accounts.d.ts +6 -0
  59. package/cjs/stores/Accounts.js +21 -0
  60. package/cjs/stores/Base.d.ts +9 -0
  61. package/cjs/stores/Base.js +70 -0
  62. package/cjs/stores/Metadata.d.ts +5 -0
  63. package/cjs/stores/Metadata.js +13 -0
  64. package/cjs/stores/index.d.ts +2 -0
  65. package/cjs/stores/index.js +8 -0
  66. package/cjs/types.d.ts +9 -0
  67. package/cjs/types.js +2 -0
  68. package/cjs/utils/canDerive.d.ts +2 -0
  69. package/cjs/utils/canDerive.js +6 -0
  70. package/cjs/utils/getId.d.ts +1 -0
  71. package/cjs/utils/getId.js +8 -0
  72. package/cjs/utils/index.d.ts +1 -0
  73. package/cjs/utils/index.js +5 -0
  74. package/cjs/utils/portUtils.d.ts +13 -0
  75. package/cjs/utils/portUtils.js +49 -0
  76. package/defaults.js +10 -14
  77. package/index.js +0 -4
  78. package/package.json +464 -10
  79. package/packageDetect.js +0 -4
  80. package/packageInfo.js +1 -4
  81. package/page/Accounts.js +13 -18
  82. package/page/Injected.js +10 -10
  83. package/page/Metadata.js +8 -13
  84. package/page/PostMessageProvider.js +90 -192
  85. package/page/Signer.js +24 -90
  86. package/page/index.js +15 -72
  87. package/page/types.js +0 -2
  88. package/stores/Accounts.js +14 -80
  89. package/stores/Base.js +57 -240
  90. package/stores/Metadata.js +6 -26
  91. package/stores/index.js +0 -2
  92. package/types.js +0 -2
  93. package/utils/canDerive.js +0 -2
  94. package/utils/getId.js +2 -4
  95. package/utils/index.js +0 -2
  96. package/utils/portUtils.d.ts +0 -1
  97. package/utils/portUtils.js +31 -94
package/page/Injected.js CHANGED
@@ -1,21 +1,21 @@
1
- // Copyright 2019-2025 @pezkuwi/extension-base authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
1
  import Accounts from './Accounts.js';
4
2
  import Metadata from './Metadata.js';
5
3
  import PostMessageProvider from './PostMessageProvider.js';
6
4
  import Signer from './Signer.js';
7
- var default_1 = /** @class */ (function () {
8
- function default_1(sendRequest) {
5
+ export default class {
6
+ accounts;
7
+ metadata;
8
+ provider;
9
+ signer;
10
+ constructor(sendRequest) {
9
11
  this.accounts = new Accounts(sendRequest);
10
12
  this.metadata = new Metadata(sendRequest);
11
13
  this.provider = new PostMessageProvider(sendRequest);
12
14
  this.signer = new Signer(sendRequest);
13
- setInterval(function () {
14
- sendRequest('pub(ping)', null).catch(function () {
15
+ setInterval(() => {
16
+ sendRequest('pub(ping)', null).catch(() => {
15
17
  console.error('Extension unavailable, ping failed');
16
18
  });
17
- }, 5000 + Math.floor(Math.random() * 5000));
19
+ }, 5_000 + Math.floor(Math.random() * 5_000));
18
20
  }
19
- return default_1;
20
- }());
21
- export default default_1;
21
+ }
package/page/Metadata.js CHANGED
@@ -1,17 +1,12 @@
1
- // Copyright 2019-2025 @pezkuwi/extension-base authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
- // External to class, this.# is not private enough (yet)
4
- var sendRequest;
5
- var Metadata = /** @class */ (function () {
6
- function Metadata(_sendRequest) {
1
+ let sendRequest;
2
+ export default class Metadata {
3
+ constructor(_sendRequest) {
7
4
  sendRequest = _sendRequest;
8
5
  }
9
- Metadata.prototype.get = function () {
6
+ get() {
10
7
  return sendRequest('pub(metadata.list)');
11
- };
12
- Metadata.prototype.provide = function (definition) {
8
+ }
9
+ provide(definition) {
13
10
  return sendRequest('pub(metadata.provide)', definition);
14
- };
15
- return Metadata;
16
- }());
17
- export default Metadata;
11
+ }
12
+ }
@@ -1,234 +1,132 @@
1
- // Copyright 2019-2025 @pezkuwi/extension-base authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
- return new (P || (P = Promise))(function (resolve, reject) {
6
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
- step((generator = generator.apply(thisArg, _arguments || [])).next());
10
- });
11
- };
12
- var __generator = (this && this.__generator) || function (thisArg, body) {
13
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
14
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
15
- function verb(n) { return function (v) { return step([n, v]); }; }
16
- function step(op) {
17
- if (f) throw new TypeError("Generator is already executing.");
18
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
19
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
20
- if (y = 0, t) op = [op[0] & 2, t.value];
21
- switch (op[0]) {
22
- case 0: case 1: t = op; break;
23
- case 4: _.label++; return { value: op[1], done: false };
24
- case 5: _.label++; y = op[1]; op = [0]; continue;
25
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
26
- default:
27
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
28
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
29
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
30
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
31
- if (t[2]) _.ops.pop();
32
- _.trys.pop(); continue;
33
- }
34
- op = body.call(thisArg, _);
35
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
36
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
37
- }
38
- };
39
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
40
- if (kind === "m") throw new TypeError("Private method is not writable");
41
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
42
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
43
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
44
- };
45
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
46
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
47
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
48
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
49
- };
50
- var _PostMessageProvider_eventemitter, _PostMessageProvider_isConnected, _PostMessageProvider_subscriptions;
51
1
  import { EventEmitter } from 'eventemitter3';
52
2
  import { isUndefined, logger } from '@pezkuwi/util';
53
- var l = logger('PostMessageProvider');
54
- // External to class, this.# is not private enough (yet)
55
- var sendRequest;
3
+ const l = logger('PostMessageProvider');
4
+ let sendRequest;
56
5
  /**
57
6
  * @name PostMessageProvider
58
7
  *
59
8
  * @description Extension provider to be used by dapps
60
9
  */
61
- var PostMessageProvider = /** @class */ (function () {
10
+ export default class PostMessageProvider {
11
+ #eventemitter;
12
+ // Whether or not the actual extension background provider is connected
13
+ #isConnected = false;
14
+ // Subscription IDs are (historically) not guaranteed to be globally unique;
15
+ // only unique for a given subscription method; which is why we identify
16
+ // the subscriptions based on subscription id + type
17
+ #subscriptions = {}; // {[(type,subscriptionId)]: callback}
62
18
  /**
63
19
  * @param {function} sendRequest The function to be called to send requests to the node
64
20
  * @param {function} subscriptionNotificationHandler Channel for receiving subscription messages
65
21
  */
66
- function PostMessageProvider(_sendRequest) {
67
- _PostMessageProvider_eventemitter.set(this, void 0);
68
- // Whether or not the actual extension background provider is connected
69
- _PostMessageProvider_isConnected.set(this, false);
70
- // Subscription IDs are (historically) not guaranteed to be globally unique;
71
- // only unique for a given subscription method; which is why we identify
72
- // the subscriptions based on subscription id + type
73
- _PostMessageProvider_subscriptions.set(this, {}); // {[(type,subscriptionId)]: callback}
74
- __classPrivateFieldSet(this, _PostMessageProvider_eventemitter, new EventEmitter(), "f");
22
+ constructor(_sendRequest) {
23
+ this.#eventemitter = new EventEmitter();
75
24
  sendRequest = _sendRequest;
76
25
  }
77
- Object.defineProperty(PostMessageProvider.prototype, "isClonable", {
78
- get: function () {
79
- return !!true;
80
- },
81
- enumerable: false,
82
- configurable: true
83
- });
26
+ get isClonable() {
27
+ return !!true;
28
+ }
84
29
  /**
85
30
  * @description Returns a clone of the object
86
31
  */
87
- PostMessageProvider.prototype.clone = function () {
32
+ clone() {
88
33
  return new PostMessageProvider(sendRequest);
89
- };
34
+ }
90
35
  /**
91
36
  * @description Manually disconnect from the connection, clearing autoconnect logic
92
37
  */
93
38
  // eslint-disable-next-line @typescript-eslint/require-await
94
- PostMessageProvider.prototype.connect = function () {
95
- return __awaiter(this, void 0, void 0, function () {
96
- return __generator(this, function (_a) {
97
- // FIXME This should see if the extension's state's provider can disconnect
98
- console.error('PostMessageProvider.disconnect() is not implemented.');
99
- return [2 /*return*/];
100
- });
101
- });
102
- };
39
+ async connect() {
40
+ // FIXME This should see if the extension's state's provider can disconnect
41
+ console.error('PostMessageProvider.disconnect() is not implemented.');
42
+ }
103
43
  /**
104
44
  * @description Manually disconnect from the connection, clearing autoconnect logic
105
45
  */
106
46
  // eslint-disable-next-line @typescript-eslint/require-await
107
- PostMessageProvider.prototype.disconnect = function () {
108
- return __awaiter(this, void 0, void 0, function () {
109
- return __generator(this, function (_a) {
110
- // FIXME This should see if the extension's state's provider can disconnect
111
- console.error('PostMessageProvider.disconnect() is not implemented.');
112
- return [2 /*return*/];
113
- });
114
- });
115
- };
116
- Object.defineProperty(PostMessageProvider.prototype, "hasSubscriptions", {
117
- /**
118
- * @summary `true` when this provider supports subscriptions
119
- */
120
- get: function () {
121
- // FIXME This should see if the extension's state's provider has subscriptions
122
- return !!true;
123
- },
124
- enumerable: false,
125
- configurable: true
126
- });
127
- Object.defineProperty(PostMessageProvider.prototype, "isConnected", {
128
- /**
129
- * @summary Whether the node is connected or not.
130
- * @return {boolean} true if connected
131
- */
132
- get: function () {
133
- return __classPrivateFieldGet(this, _PostMessageProvider_isConnected, "f");
134
- },
135
- enumerable: false,
136
- configurable: true
137
- });
138
- PostMessageProvider.prototype.listProviders = function () {
47
+ async disconnect() {
48
+ // FIXME This should see if the extension's state's provider can disconnect
49
+ console.error('PostMessageProvider.disconnect() is not implemented.');
50
+ }
51
+ /**
52
+ * @summary `true` when this provider supports subscriptions
53
+ */
54
+ get hasSubscriptions() {
55
+ // FIXME This should see if the extension's state's provider has subscriptions
56
+ return !!true;
57
+ }
58
+ /**
59
+ * @summary Whether the node is connected or not.
60
+ * @return {boolean} true if connected
61
+ */
62
+ get isConnected() {
63
+ return this.#isConnected;
64
+ }
65
+ listProviders() {
139
66
  return sendRequest('pub(rpc.listProviders)', undefined);
140
- };
67
+ }
141
68
  /**
142
69
  * @summary Listens on events after having subscribed using the [[subscribe]] function.
143
70
  * @param {ProviderInterfaceEmitted} type Event
144
71
  * @param {ProviderInterfaceEmitCb} sub Callback
145
72
  * @return unsubscribe function
146
73
  */
147
- PostMessageProvider.prototype.on = function (type, sub) {
148
- var _this = this;
149
- __classPrivateFieldGet(this, _PostMessageProvider_eventemitter, "f").on(type, sub);
150
- return function () {
151
- __classPrivateFieldGet(_this, _PostMessageProvider_eventemitter, "f").removeListener(type, sub);
74
+ on(type, sub) {
75
+ this.#eventemitter.on(type, sub);
76
+ return () => {
77
+ this.#eventemitter.removeListener(type, sub);
152
78
  };
153
- };
79
+ }
154
80
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
155
- PostMessageProvider.prototype.send = function (method, params, _, subscription) {
156
- return __awaiter(this, void 0, void 0, function () {
157
- var callback, type, id;
158
- return __generator(this, function (_a) {
159
- switch (_a.label) {
160
- case 0:
161
- if (!subscription) return [3 /*break*/, 2];
162
- callback = subscription.callback, type = subscription.type;
163
- return [4 /*yield*/, sendRequest('pub(rpc.subscribe)', { method: method, params: params, type: type }, function (res) {
164
- subscription.callback(null, res);
165
- })];
166
- case 1:
167
- id = _a.sent();
168
- __classPrivateFieldGet(this, _PostMessageProvider_subscriptions, "f")["".concat(type, "::").concat(id)] = callback;
169
- return [2 /*return*/, id];
170
- case 2: return [2 /*return*/, sendRequest('pub(rpc.send)', { method: method, params: params })];
171
- }
81
+ async send(method, params, _, subscription) {
82
+ if (subscription) {
83
+ const { callback, type } = subscription;
84
+ const id = await sendRequest('pub(rpc.subscribe)', { method, params, type }, (res) => {
85
+ subscription.callback(null, res);
172
86
  });
173
- });
174
- };
87
+ this.#subscriptions[`${type}::${id}`] = callback;
88
+ return id;
89
+ }
90
+ return sendRequest('pub(rpc.send)', { method, params });
91
+ }
175
92
  /**
176
93
  * @summary Spawn a provider on the extension background.
177
94
  */
178
- PostMessageProvider.prototype.startProvider = function (key) {
179
- return __awaiter(this, void 0, void 0, function () {
180
- var meta;
181
- var _this = this;
182
- return __generator(this, function (_a) {
183
- switch (_a.label) {
184
- case 0:
185
- // Disconnect from the previous provider
186
- __classPrivateFieldSet(this, _PostMessageProvider_isConnected, false, "f");
187
- __classPrivateFieldGet(this, _PostMessageProvider_eventemitter, "f").emit('disconnected');
188
- return [4 /*yield*/, sendRequest('pub(rpc.startProvider)', key)];
189
- case 1:
190
- meta = _a.sent();
191
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
192
- sendRequest('pub(rpc.subscribeConnected)', null, function (connected) {
193
- __classPrivateFieldSet(_this, _PostMessageProvider_isConnected, connected, "f");
194
- if (connected) {
195
- __classPrivateFieldGet(_this, _PostMessageProvider_eventemitter, "f").emit('connected');
196
- }
197
- else {
198
- __classPrivateFieldGet(_this, _PostMessageProvider_eventemitter, "f").emit('disconnected');
199
- }
200
- return true;
201
- });
202
- return [2 /*return*/, meta];
203
- }
204
- });
95
+ async startProvider(key) {
96
+ // Disconnect from the previous provider
97
+ this.#isConnected = false;
98
+ this.#eventemitter.emit('disconnected');
99
+ const meta = await sendRequest('pub(rpc.startProvider)', key);
100
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
101
+ sendRequest('pub(rpc.subscribeConnected)', null, (connected) => {
102
+ this.#isConnected = connected;
103
+ if (connected) {
104
+ this.#eventemitter.emit('connected');
105
+ }
106
+ else {
107
+ this.#eventemitter.emit('disconnected');
108
+ }
109
+ return true;
205
110
  });
206
- };
207
- PostMessageProvider.prototype.subscribe = function (type, method, params, callback) {
208
- return this.send(method, params, false, { callback: callback, type: type });
209
- };
111
+ return meta;
112
+ }
113
+ subscribe(type, method, params, callback) {
114
+ return this.send(method, params, false, { callback, type });
115
+ }
210
116
  /**
211
117
  * @summary Allows unsubscribing to subscriptions made with [[subscribe]].
212
118
  */
213
- PostMessageProvider.prototype.unsubscribe = function (type, method, id) {
214
- return __awaiter(this, void 0, void 0, function () {
215
- var subscription;
216
- return __generator(this, function (_a) {
217
- subscription = "".concat(type, "::").concat(id);
218
- // FIXME This now could happen with re-subscriptions. The issue is that with a re-sub
219
- // the assigned id now does not match what the API user originally received. It has
220
- // a slight complication in solving - since we cannot rely on the send id, but rather
221
- // need to find the actual subscription id to map it
222
- if (isUndefined(__classPrivateFieldGet(this, _PostMessageProvider_subscriptions, "f")[subscription])) {
223
- l.debug(function () { return "Unable to find active subscription=".concat(subscription); });
224
- return [2 /*return*/, false];
225
- }
226
- delete __classPrivateFieldGet(this, _PostMessageProvider_subscriptions, "f")[subscription];
227
- return [2 /*return*/, this.send(method, [id])];
228
- });
229
- });
230
- };
231
- return PostMessageProvider;
232
- }());
233
- _PostMessageProvider_eventemitter = new WeakMap(), _PostMessageProvider_isConnected = new WeakMap(), _PostMessageProvider_subscriptions = new WeakMap();
234
- export default PostMessageProvider;
119
+ async unsubscribe(type, method, id) {
120
+ const subscription = `${type}::${id}`;
121
+ // FIXME This now could happen with re-subscriptions. The issue is that with a re-sub
122
+ // the assigned id now does not match what the API user originally received. It has
123
+ // a slight complication in solving - since we cannot rely on the send id, but rather
124
+ // need to find the actual subscription id to map it
125
+ if (isUndefined(this.#subscriptions[subscription])) {
126
+ l.debug(() => `Unable to find active subscription=${subscription}`);
127
+ return false;
128
+ }
129
+ delete this.#subscriptions[subscription];
130
+ return this.send(method, [id]);
131
+ }
132
+ }
package/page/Signer.js CHANGED
@@ -1,92 +1,26 @@
1
- // Copyright 2019-2025 @pezkuwi/extension-base authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
- var __assign = (this && this.__assign) || function () {
4
- __assign = Object.assign || function(t) {
5
- for (var s, i = 1, n = arguments.length; i < n; i++) {
6
- s = arguments[i];
7
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
8
- t[p] = s[p];
9
- }
10
- return t;
11
- };
12
- return __assign.apply(this, arguments);
13
- };
14
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
- return new (P || (P = Promise))(function (resolve, reject) {
17
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
- step((generator = generator.apply(thisArg, _arguments || [])).next());
21
- });
22
- };
23
- var __generator = (this && this.__generator) || function (thisArg, body) {
24
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
25
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
26
- function verb(n) { return function (v) { return step([n, v]); }; }
27
- function step(op) {
28
- if (f) throw new TypeError("Generator is already executing.");
29
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
30
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
31
- if (y = 0, t) op = [op[0] & 2, t.value];
32
- switch (op[0]) {
33
- case 0: case 1: t = op; break;
34
- case 4: _.label++; return { value: op[1], done: false };
35
- case 5: _.label++; y = op[1]; op = [0]; continue;
36
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
37
- default:
38
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
39
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
40
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
41
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
42
- if (t[2]) _.ops.pop();
43
- _.trys.pop(); continue;
44
- }
45
- op = body.call(thisArg, _);
46
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
47
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
48
- }
49
- };
50
- // External to class, this.# is not private enough (yet)
51
- var sendRequest;
52
- var nextId = 0;
53
- var Signer = /** @class */ (function () {
54
- function Signer(_sendRequest) {
1
+ let sendRequest;
2
+ let nextId = 0;
3
+ export default class Signer {
4
+ constructor(_sendRequest) {
55
5
  sendRequest = _sendRequest;
56
6
  }
57
- Signer.prototype.signPayload = function (payload) {
58
- return __awaiter(this, void 0, void 0, function () {
59
- var id, result;
60
- return __generator(this, function (_a) {
61
- switch (_a.label) {
62
- case 0:
63
- id = ++nextId;
64
- return [4 /*yield*/, sendRequest('pub(extrinsic.sign)', payload)];
65
- case 1:
66
- result = _a.sent();
67
- // we add an internal id (number) - should have a mapping from the
68
- // extension id (string) -> internal id (number) if we wish to provide
69
- // updated via the update functionality (noop at this point)
70
- return [2 /*return*/, __assign(__assign({}, result), { id: id })];
71
- }
72
- });
73
- });
74
- };
75
- Signer.prototype.signRaw = function (payload) {
76
- return __awaiter(this, void 0, void 0, function () {
77
- var id, result;
78
- return __generator(this, function (_a) {
79
- switch (_a.label) {
80
- case 0:
81
- id = ++nextId;
82
- return [4 /*yield*/, sendRequest('pub(bytes.sign)', payload)];
83
- case 1:
84
- result = _a.sent();
85
- return [2 /*return*/, __assign(__assign({}, result), { id: id })];
86
- }
87
- });
88
- });
89
- };
90
- return Signer;
91
- }());
92
- export default Signer;
7
+ async signPayload(payload) {
8
+ const id = ++nextId;
9
+ const result = await sendRequest('pub(extrinsic.sign)', payload);
10
+ // we add an internal id (number) - should have a mapping from the
11
+ // extension id (string) -> internal id (number) if we wish to provide
12
+ // updated via the update functionality (noop at this point)
13
+ return {
14
+ ...result,
15
+ id
16
+ };
17
+ }
18
+ async signRaw(payload) {
19
+ const id = ++nextId;
20
+ const result = await sendRequest('pub(bytes.sign)', payload);
21
+ return {
22
+ ...result,
23
+ id
24
+ };
25
+ }
26
+ }
package/page/index.js CHANGED
@@ -1,89 +1,32 @@
1
- // Copyright 2019-2025 @pezkuwi/extension-base authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
- return new (P || (P = Promise))(function (resolve, reject) {
6
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
- step((generator = generator.apply(thisArg, _arguments || [])).next());
10
- });
11
- };
12
- var __generator = (this && this.__generator) || function (thisArg, body) {
13
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
14
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
15
- function verb(n) { return function (v) { return step([n, v]); }; }
16
- function step(op) {
17
- if (f) throw new TypeError("Generator is already executing.");
18
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
19
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
20
- if (y = 0, t) op = [op[0] & 2, t.value];
21
- switch (op[0]) {
22
- case 0: case 1: t = op; break;
23
- case 4: _.label++; return { value: op[1], done: false };
24
- case 5: _.label++; y = op[1]; op = [0]; continue;
25
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
26
- default:
27
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
28
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
29
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
30
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
31
- if (t[2]) _.ops.pop();
32
- _.trys.pop(); continue;
33
- }
34
- op = body.call(thisArg, _);
35
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
36
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
37
- }
38
- };
39
1
  import { MESSAGE_ORIGIN_PAGE } from '../defaults.js';
40
2
  import { getId } from '../utils/getId.js';
41
3
  import Injected from './Injected.js';
42
- var handlers = {};
4
+ const handlers = {};
43
5
  export function sendMessage(message, request, subscriber) {
44
- return new Promise(function (resolve, reject) {
45
- var id = getId();
46
- handlers[id] = { reject: reject, resolve: resolve, subscriber: subscriber };
47
- var transportRequestMessage = {
48
- id: id,
49
- message: message,
6
+ return new Promise((resolve, reject) => {
7
+ const id = getId();
8
+ handlers[id] = { reject, resolve, subscriber };
9
+ const transportRequestMessage = {
10
+ id,
11
+ message,
50
12
  origin: MESSAGE_ORIGIN_PAGE,
51
13
  request: request || null
52
14
  };
53
15
  window.postMessage(transportRequestMessage, '*');
54
16
  });
55
17
  }
56
- // the enable function, called by the dapp to allow access
57
- export function enable(origin) {
58
- return __awaiter(this, void 0, void 0, function () {
59
- return __generator(this, function (_a) {
60
- switch (_a.label) {
61
- case 0: return [4 /*yield*/, sendMessage('pub(authorize.tab)', { origin: origin })];
62
- case 1:
63
- _a.sent();
64
- return [2 /*return*/, new Injected(sendMessage)];
65
- }
66
- });
67
- });
18
+ export async function enable(origin) {
19
+ await sendMessage('pub(authorize.tab)', { origin });
20
+ return new Injected(sendMessage);
68
21
  }
69
- // redirect users if this page is considered as phishing, otherwise return false
70
- export function redirectIfPhishing() {
71
- return __awaiter(this, void 0, void 0, function () {
72
- var res;
73
- return __generator(this, function (_a) {
74
- switch (_a.label) {
75
- case 0: return [4 /*yield*/, sendMessage('pub(phishing.redirectIfDenied)')];
76
- case 1:
77
- res = _a.sent();
78
- return [2 /*return*/, res];
79
- }
80
- });
81
- });
22
+ export async function redirectIfPhishing() {
23
+ const res = await sendMessage('pub(phishing.redirectIfDenied)');
24
+ return res;
82
25
  }
83
26
  export function handleResponse(data) {
84
- var handler = handlers[data.id];
27
+ const handler = handlers[data.id];
85
28
  if (!handler) {
86
- console.error("Unknown response: ".concat(JSON.stringify(data)));
29
+ console.error(`Unknown response: ${JSON.stringify(data)}`);
87
30
  return;
88
31
  }
89
32
  if (!handler.subscriber) {
package/page/types.js CHANGED
@@ -1,3 +1 @@
1
- // Copyright 2019-2025 @pezkuwi/extension-base authors & contributors
2
- // SPDX-License-Identifier: Apache-2.0
3
1
  export {};