@pezkuwi/extension-base 0.62.8 → 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 (187) hide show
  1. package/LICENSE +201 -0
  2. package/background/RequestBytesSign.js +12 -0
  3. package/background/RequestExtrinsicSign.js +11 -0
  4. package/background/handlers/Extension.js +489 -0
  5. package/background/handlers/State.js +478 -0
  6. package/background/handlers/Tabs.js +195 -0
  7. package/{build/background → background}/handlers/helpers.js +1 -3
  8. package/background/handlers/index.js +40 -0
  9. package/background/handlers/subscriptions.js +18 -0
  10. package/background/index.js +1 -0
  11. package/bundle.js +1 -0
  12. package/cjs/background/RequestBytesSign.d.ts +12 -0
  13. package/cjs/background/RequestBytesSign.js +15 -0
  14. package/cjs/background/RequestExtrinsicSign.d.ts +12 -0
  15. package/cjs/background/RequestExtrinsicSign.js +14 -0
  16. package/cjs/background/handlers/Extension.d.ts +49 -0
  17. package/cjs/background/handlers/Extension.js +492 -0
  18. package/cjs/background/handlers/State.d.ts +96 -0
  19. package/cjs/background/handlers/State.js +482 -0
  20. package/cjs/background/handlers/Tabs.d.ts +25 -0
  21. package/cjs/background/handlers/Tabs.js +199 -0
  22. package/cjs/background/handlers/helpers.d.ts +1 -0
  23. package/cjs/background/handlers/helpers.js +14 -0
  24. package/cjs/background/handlers/index.d.ts +3 -0
  25. package/cjs/background/handlers/index.js +46 -0
  26. package/cjs/background/handlers/subscriptions.d.ts +3 -0
  27. package/cjs/background/handlers/subscriptions.js +22 -0
  28. package/cjs/background/index.d.ts +1 -0
  29. package/cjs/background/index.js +7 -0
  30. package/cjs/background/types.d.ts +343 -0
  31. package/cjs/background/types.js +2 -0
  32. package/cjs/bundle.d.ts +1 -0
  33. package/cjs/bundle.js +5 -0
  34. package/cjs/defaults.js +16 -0
  35. package/cjs/index.js +4 -0
  36. package/cjs/package.json +3 -0
  37. package/cjs/packageDetect.d.ts +1 -0
  38. package/cjs/packageDetect.js +8 -0
  39. package/cjs/packageInfo.js +4 -0
  40. package/cjs/page/Accounts.js +24 -0
  41. package/cjs/page/Injected.js +25 -0
  42. package/cjs/page/Metadata.js +15 -0
  43. package/cjs/page/PostMessageProvider.js +135 -0
  44. package/cjs/page/Signer.js +29 -0
  45. package/cjs/page/index.js +52 -0
  46. package/cjs/page/types.js +2 -0
  47. package/cjs/stores/Accounts.js +21 -0
  48. package/cjs/stores/Base.js +70 -0
  49. package/cjs/stores/Metadata.js +13 -0
  50. package/cjs/stores/index.js +8 -0
  51. package/cjs/types.js +2 -0
  52. package/cjs/utils/canDerive.js +6 -0
  53. package/cjs/utils/getId.js +8 -0
  54. package/cjs/utils/index.js +5 -0
  55. package/{build → cjs}/utils/portUtils.d.ts +0 -1
  56. package/cjs/utils/portUtils.js +49 -0
  57. package/defaults.d.ts +9 -0
  58. package/{src/defaults.ts → defaults.js} +2 -15
  59. package/index.d.ts +1 -0
  60. package/index.js +1 -0
  61. package/package.json +464 -10
  62. package/packageDetect.d.ts +1 -0
  63. package/{build/packageDetect.js → packageDetect.js} +0 -4
  64. package/packageInfo.d.ts +6 -0
  65. package/packageInfo.js +1 -0
  66. package/page/Accounts.d.ts +7 -0
  67. package/page/Accounts.js +21 -0
  68. package/page/Injected.d.ts +13 -0
  69. package/{build/page → page}/Injected.js +10 -10
  70. package/page/Metadata.d.ts +7 -0
  71. package/page/Metadata.js +12 -0
  72. package/page/PostMessageProvider.d.ts +63 -0
  73. package/page/PostMessageProvider.js +132 -0
  74. package/page/Signer.d.ts +8 -0
  75. package/page/Signer.js +26 -0
  76. package/page/index.d.ts +16 -0
  77. package/page/index.js +45 -0
  78. package/page/types.d.ts +6 -0
  79. package/page/types.js +1 -0
  80. package/stores/Accounts.d.ts +6 -0
  81. package/stores/Accounts.js +17 -0
  82. package/stores/Base.d.ts +9 -0
  83. package/stores/Base.js +67 -0
  84. package/stores/Metadata.d.ts +5 -0
  85. package/stores/Metadata.js +9 -0
  86. package/{src/stores/index.ts → stores/index.d.ts} +0 -3
  87. package/{build/stores → stores}/index.js +0 -2
  88. package/types.d.ts +9 -0
  89. package/types.js +1 -0
  90. package/utils/canDerive.d.ts +2 -0
  91. package/{build/utils → utils}/canDerive.js +0 -2
  92. package/utils/getId.d.ts +1 -0
  93. package/utils/getId.js +5 -0
  94. package/utils/index.d.ts +1 -0
  95. package/utils/index.js +1 -0
  96. package/utils/portUtils.d.ts +13 -0
  97. package/utils/portUtils.js +43 -0
  98. package/build/background/RequestBytesSign.js +0 -15
  99. package/build/background/RequestExtrinsicSign.js +0 -14
  100. package/build/background/handlers/Extension.js +0 -645
  101. package/build/background/handlers/State.js +0 -732
  102. package/build/background/handlers/Tabs.js +0 -313
  103. package/build/background/handlers/index.js +0 -45
  104. package/build/background/handlers/subscriptions.js +0 -22
  105. package/build/background/index.js +0 -3
  106. package/build/background/types.js +0 -3
  107. package/build/bundle.js +0 -3
  108. package/build/defaults.js +0 -17
  109. package/build/index.js +0 -5
  110. package/build/packageInfo.js +0 -4
  111. package/build/page/Accounts.js +0 -26
  112. package/build/page/Metadata.js +0 -17
  113. package/build/page/PostMessageProvider.js +0 -234
  114. package/build/page/Signer.js +0 -92
  115. package/build/page/index.js +0 -102
  116. package/build/page/types.js +0 -3
  117. package/build/stores/Accounts.js +0 -83
  118. package/build/stores/Base.js +0 -250
  119. package/build/stores/Metadata.js +0 -29
  120. package/build/types.js +0 -3
  121. package/build/utils/getId.js +0 -7
  122. package/build/utils/index.js +0 -3
  123. package/build/utils/portUtils.js +0 -106
  124. package/src/background/RequestBytesSign.ts +0 -28
  125. package/src/background/RequestExtrinsicSign.ts +0 -22
  126. package/src/background/handlers/Extension.spec.ts +0 -478
  127. package/src/background/handlers/Extension.ts +0 -690
  128. package/src/background/handlers/State.ts +0 -664
  129. package/src/background/handlers/Tabs.ts +0 -289
  130. package/src/background/handlers/helpers.ts +0 -14
  131. package/src/background/handlers/index.ts +0 -60
  132. package/src/background/handlers/subscriptions.ts +0 -32
  133. package/src/background/index.ts +0 -4
  134. package/src/background/types.ts +0 -432
  135. package/src/bundle.ts +0 -4
  136. package/src/index.ts +0 -7
  137. package/src/packageDetect.ts +0 -14
  138. package/src/packageInfo.ts +0 -6
  139. package/src/page/Accounts.ts +0 -33
  140. package/src/page/Injected.ts +0 -33
  141. package/src/page/Metadata.ts +0 -22
  142. package/src/page/PostMessageProvider.ts +0 -182
  143. package/src/page/Signer.ts +0 -45
  144. package/src/page/index.ts +0 -89
  145. package/src/page/types.ts +0 -10
  146. package/src/stores/Accounts.ts +0 -28
  147. package/src/stores/Base.ts +0 -93
  148. package/src/stores/Metadata.ts +0 -17
  149. package/src/types.ts +0 -12
  150. package/src/utils/canDerive.ts +0 -8
  151. package/src/utils/getId.ts +0 -10
  152. package/src/utils/index.ts +0 -4
  153. package/src/utils/portUtils.ts +0 -65
  154. package/tsconfig.build.json +0 -16
  155. package/tsconfig.build.tsbuildinfo +0 -1
  156. package/tsconfig.spec.json +0 -18
  157. package/tsconfig.spec.tsbuildinfo +0 -1
  158. /package/{build/background → background}/RequestBytesSign.d.ts +0 -0
  159. /package/{build/background → background}/RequestExtrinsicSign.d.ts +0 -0
  160. /package/{build/background → background}/handlers/Extension.d.ts +0 -0
  161. /package/{build/background → background}/handlers/State.d.ts +0 -0
  162. /package/{build/background → background}/handlers/Tabs.d.ts +0 -0
  163. /package/{build/background → background}/handlers/helpers.d.ts +0 -0
  164. /package/{build/background → background}/handlers/index.d.ts +0 -0
  165. /package/{build/background → background}/handlers/subscriptions.d.ts +0 -0
  166. /package/{build/background → background}/index.d.ts +0 -0
  167. /package/{build/background → background}/types.d.ts +0 -0
  168. /package/{build/packageDetect.d.ts → background/types.js} +0 -0
  169. /package/{build/bundle.d.ts → bundle.d.ts} +0 -0
  170. /package/{build → cjs}/defaults.d.ts +0 -0
  171. /package/{build → cjs}/index.d.ts +0 -0
  172. /package/{build → cjs}/packageInfo.d.ts +0 -0
  173. /package/{build → cjs}/page/Accounts.d.ts +0 -0
  174. /package/{build → cjs}/page/Injected.d.ts +0 -0
  175. /package/{build → cjs}/page/Metadata.d.ts +0 -0
  176. /package/{build → cjs}/page/PostMessageProvider.d.ts +0 -0
  177. /package/{build → cjs}/page/Signer.d.ts +0 -0
  178. /package/{build → cjs}/page/index.d.ts +0 -0
  179. /package/{build → cjs}/page/types.d.ts +0 -0
  180. /package/{build → cjs}/stores/Accounts.d.ts +0 -0
  181. /package/{build → cjs}/stores/Base.d.ts +0 -0
  182. /package/{build → cjs}/stores/Metadata.d.ts +0 -0
  183. /package/{build → cjs}/stores/index.d.ts +0 -0
  184. /package/{build → cjs}/types.d.ts +0 -0
  185. /package/{build → cjs}/utils/canDerive.d.ts +0 -0
  186. /package/{build → cjs}/utils/getId.d.ts +0 -0
  187. /package/{build → cjs}/utils/index.d.ts +0 -0
@@ -1,732 +0,0 @@
1
- // Copyright 2019-2025 @pezkuwi/extension-bg 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
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
51
- if (kind === "m") throw new TypeError("Private method is not writable");
52
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
53
- 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");
54
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
55
- };
56
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
57
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
58
- 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");
59
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
60
- };
61
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
62
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
63
- if (ar || !(i in from)) {
64
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
65
- ar[i] = from[i];
66
- }
67
- }
68
- return to.concat(ar || Array.prototype.slice.call(from));
69
- };
70
- var _State_authUrls, _State_lastRequestTimestamps, _State_maxEntries, _State_rateLimitInterval, _State_authRequests, _State_metaStore, _State_injectedProviders, _State_metaRequests, _State_notification, _State_providers, _State_signRequests, _State_windows, _State_connectedTabsUrl;
71
- import { BehaviorSubject } from 'rxjs';
72
- import { addMetadata, knownMetadata } from '@pezkuwi/extension-chains';
73
- import { knownGenesis } from '@pezkuwi/networks/defaults';
74
- import { settings } from '@pezkuwi/ui-settings';
75
- import { assert } from '@pezkuwi/util';
76
- import { MetadataStore } from '../../stores/index.js';
77
- import { getId } from '../../utils/getId.js';
78
- import { withErrorLog } from './helpers.js';
79
- var NOTIFICATION_URL = chrome.runtime.getURL('notification.html');
80
- var POPUP_WINDOW_OPTS = {
81
- focused: true,
82
- height: 621,
83
- left: 150,
84
- top: 150,
85
- type: 'popup',
86
- url: NOTIFICATION_URL,
87
- width: 560
88
- };
89
- var NORMAL_WINDOW_OPTS = {
90
- focused: true,
91
- type: 'normal',
92
- url: NOTIFICATION_URL
93
- };
94
- export var NotificationOptions;
95
- (function (NotificationOptions) {
96
- NotificationOptions[NotificationOptions["None"] = 0] = "None";
97
- NotificationOptions[NotificationOptions["Normal"] = 1] = "Normal";
98
- NotificationOptions[NotificationOptions["PopUp"] = 2] = "PopUp";
99
- })(NotificationOptions || (NotificationOptions = {}));
100
- var AUTH_URLS_KEY = 'authUrls';
101
- var DEFAULT_AUTH_ACCOUNTS = 'defaultAuthAccounts';
102
- function extractMetadata(store) {
103
- return __awaiter(this, void 0, void 0, function () {
104
- var _this = this;
105
- return __generator(this, function (_a) {
106
- switch (_a.label) {
107
- case 0: return [4 /*yield*/, store.allMap(function (map) { return __awaiter(_this, void 0, void 0, function () {
108
- var knownEntries, defs, removals, _i, removals_1, key;
109
- return __generator(this, function (_a) {
110
- switch (_a.label) {
111
- case 0:
112
- knownEntries = Object.entries(knownGenesis);
113
- defs = {};
114
- removals = [];
115
- Object
116
- .entries(map)
117
- .forEach(function (_a) {
118
- var key = _a[0], def = _a[1];
119
- var entry = knownEntries.find(function (_a) {
120
- var hashes = _a[1];
121
- return hashes.includes(def.genesisHash);
122
- });
123
- if (entry) {
124
- var name_1 = entry[0], hashes = entry[1];
125
- var index = hashes.indexOf(def.genesisHash);
126
- // flatten the known metadata based on the genesis index
127
- // (lower is better/newer)
128
- if (!defs[name_1] || (defs[name_1].index > index)) {
129
- if (defs[name_1]) {
130
- // remove the old version of the metadata
131
- removals.push(defs[name_1].key);
132
- }
133
- defs[name_1] = { def: def, index: index, key: key };
134
- }
135
- }
136
- else {
137
- // this is not a known entry, so we will just apply it
138
- defs[key] = { def: def, index: 0, key: key };
139
- }
140
- });
141
- _i = 0, removals_1 = removals;
142
- _a.label = 1;
143
- case 1:
144
- if (!(_i < removals_1.length)) return [3 /*break*/, 4];
145
- key = removals_1[_i];
146
- return [4 /*yield*/, store.remove(key)];
147
- case 2:
148
- _a.sent();
149
- _a.label = 3;
150
- case 3:
151
- _i++;
152
- return [3 /*break*/, 1];
153
- case 4:
154
- Object.values(defs).forEach(function (_a) {
155
- var def = _a.def;
156
- return addMetadata(def);
157
- });
158
- return [2 /*return*/];
159
- }
160
- });
161
- }); })];
162
- case 1:
163
- _a.sent();
164
- return [2 /*return*/];
165
- }
166
- });
167
- });
168
- }
169
- var State = /** @class */ (function () {
170
- function State(providers, rateLimitInterval) {
171
- if (providers === void 0) { providers = {}; }
172
- if (rateLimitInterval === void 0) { rateLimitInterval = 3000; }
173
- var _this = this;
174
- _State_authUrls.set(this, new Map());
175
- _State_lastRequestTimestamps.set(this, new Map());
176
- _State_maxEntries.set(this, 10);
177
- _State_rateLimitInterval.set(this, 3000); // 3 seconds
178
- _State_authRequests.set(this, {});
179
- _State_metaStore.set(this, new MetadataStore());
180
- // Map of providers currently injected in tabs
181
- _State_injectedProviders.set(this, new Map());
182
- _State_metaRequests.set(this, {});
183
- _State_notification.set(this, settings.notification);
184
- // Map of all providers exposed by the extension, they are retrievable by key
185
- _State_providers.set(this, void 0);
186
- _State_signRequests.set(this, {});
187
- _State_windows.set(this, []);
188
- _State_connectedTabsUrl.set(this, []);
189
- this.authSubject = new BehaviorSubject([]);
190
- this.metaSubject = new BehaviorSubject([]);
191
- this.signSubject = new BehaviorSubject([]);
192
- this.authUrlSubjects = {};
193
- this.defaultAuthAccountSelection = [];
194
- this.authComplete = function (id, resolve, reject) {
195
- var complete = function () {
196
- var args_1 = [];
197
- for (var _i = 0; _i < arguments.length; _i++) {
198
- args_1[_i] = arguments[_i];
199
- }
200
- return __awaiter(_this, __spreadArray([], args_1, true), void 0, function (authorizedAccounts) {
201
- var _a, idStr, origin, url, strippedUrl, authInfo;
202
- if (authorizedAccounts === void 0) { authorizedAccounts = []; }
203
- return __generator(this, function (_b) {
204
- switch (_b.label) {
205
- case 0:
206
- _a = __classPrivateFieldGet(this, _State_authRequests, "f")[id], idStr = _a.idStr, origin = _a.request.origin, url = _a.url;
207
- strippedUrl = this.stripUrl(url);
208
- authInfo = {
209
- authorizedAccounts: authorizedAccounts,
210
- count: 0,
211
- id: idStr,
212
- origin: origin,
213
- url: url
214
- };
215
- __classPrivateFieldGet(this, _State_authUrls, "f").set(strippedUrl, authInfo);
216
- if (!this.authUrlSubjects[strippedUrl]) {
217
- this.authUrlSubjects[strippedUrl] = new BehaviorSubject(authInfo);
218
- }
219
- else {
220
- this.authUrlSubjects[strippedUrl].next(authInfo);
221
- }
222
- return [4 /*yield*/, this.saveCurrentAuthList()];
223
- case 1:
224
- _b.sent();
225
- return [4 /*yield*/, this.updateDefaultAuthAccounts(authorizedAccounts)];
226
- case 2:
227
- _b.sent();
228
- delete __classPrivateFieldGet(this, _State_authRequests, "f")[id];
229
- this.updateIconAuth(true);
230
- return [2 /*return*/];
231
- }
232
- });
233
- });
234
- };
235
- return {
236
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
237
- reject: function (error) { return __awaiter(_this, void 0, void 0, function () {
238
- return __generator(this, function (_a) {
239
- switch (_a.label) {
240
- case 0:
241
- if (!(error.message === 'Cancelled')) return [3 /*break*/, 1];
242
- delete __classPrivateFieldGet(this, _State_authRequests, "f")[id];
243
- this.updateIconAuth(true);
244
- reject(new Error('Connection request was cancelled by the user.'));
245
- return [3 /*break*/, 3];
246
- case 1: return [4 /*yield*/, complete()];
247
- case 2:
248
- _a.sent();
249
- reject(new Error('Connection request was rejected by the user.'));
250
- _a.label = 3;
251
- case 3: return [2 /*return*/];
252
- }
253
- });
254
- }); },
255
- // eslint-disable-next-line @typescript-eslint/no-misused-promises
256
- resolve: function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
257
- var authorizedAccounts = _b.authorizedAccounts, result = _b.result;
258
- return __generator(this, function (_c) {
259
- switch (_c.label) {
260
- case 0: return [4 /*yield*/, complete(authorizedAccounts)];
261
- case 1:
262
- _c.sent();
263
- resolve({ authorizedAccounts: authorizedAccounts, result: result });
264
- return [2 /*return*/];
265
- }
266
- });
267
- }); }
268
- };
269
- };
270
- this.metaComplete = function (id, resolve, reject) {
271
- var complete = function () {
272
- delete __classPrivateFieldGet(_this, _State_metaRequests, "f")[id];
273
- _this.updateIconMeta(true);
274
- };
275
- return {
276
- reject: function (error) {
277
- complete();
278
- reject(error);
279
- },
280
- resolve: function (result) {
281
- complete();
282
- resolve(result);
283
- }
284
- };
285
- };
286
- this.signComplete = function (id, resolve, reject) {
287
- var complete = function () {
288
- delete __classPrivateFieldGet(_this, _State_signRequests, "f")[id];
289
- _this.updateIconSign(true);
290
- };
291
- return {
292
- reject: function (error) {
293
- complete();
294
- reject(error);
295
- },
296
- resolve: function (result) {
297
- complete();
298
- resolve(result);
299
- }
300
- };
301
- };
302
- assert(rateLimitInterval >= 0, 'Expects non-negative number for rateLimitInterval');
303
- __classPrivateFieldSet(this, _State_providers, providers, "f");
304
- __classPrivateFieldSet(this, _State_rateLimitInterval, rateLimitInterval, "f");
305
- }
306
- State.prototype.init = function () {
307
- return __awaiter(this, void 0, void 0, function () {
308
- var storageAuthUrls, authString, previousAuth, storageDefaultAuthAccounts, defaultAuthString, previousDefaultAuth;
309
- var _this = this;
310
- return __generator(this, function (_a) {
311
- switch (_a.label) {
312
- case 0: return [4 /*yield*/, extractMetadata(__classPrivateFieldGet(this, _State_metaStore, "f"))];
313
- case 1:
314
- _a.sent();
315
- return [4 /*yield*/, chrome.storage.local.get(AUTH_URLS_KEY)];
316
- case 2:
317
- storageAuthUrls = _a.sent();
318
- authString = (storageAuthUrls === null || storageAuthUrls === void 0 ? void 0 : storageAuthUrls[AUTH_URLS_KEY]) || '{}';
319
- previousAuth = JSON.parse(authString);
320
- __classPrivateFieldSet(this, _State_authUrls, new Map(Object.entries(previousAuth)), "f");
321
- // Initialize authUrlSubjects for each URL
322
- __classPrivateFieldGet(this, _State_authUrls, "f").forEach(function (authInfo, url) {
323
- _this.authUrlSubjects[url] = new BehaviorSubject(authInfo);
324
- });
325
- return [4 /*yield*/, chrome.storage.local.get(DEFAULT_AUTH_ACCOUNTS)];
326
- case 3:
327
- storageDefaultAuthAccounts = _a.sent();
328
- defaultAuthString = (storageDefaultAuthAccounts === null || storageDefaultAuthAccounts === void 0 ? void 0 : storageDefaultAuthAccounts[DEFAULT_AUTH_ACCOUNTS]) || '[]';
329
- previousDefaultAuth = JSON.parse(defaultAuthString);
330
- this.defaultAuthAccountSelection = previousDefaultAuth;
331
- return [2 /*return*/];
332
- }
333
- });
334
- });
335
- };
336
- Object.defineProperty(State.prototype, "knownMetadata", {
337
- get: function () {
338
- return knownMetadata();
339
- },
340
- enumerable: false,
341
- configurable: true
342
- });
343
- Object.defineProperty(State.prototype, "numAuthRequests", {
344
- get: function () {
345
- return Object.keys(__classPrivateFieldGet(this, _State_authRequests, "f")).length;
346
- },
347
- enumerable: false,
348
- configurable: true
349
- });
350
- Object.defineProperty(State.prototype, "numMetaRequests", {
351
- get: function () {
352
- return Object.keys(__classPrivateFieldGet(this, _State_metaRequests, "f")).length;
353
- },
354
- enumerable: false,
355
- configurable: true
356
- });
357
- Object.defineProperty(State.prototype, "numSignRequests", {
358
- get: function () {
359
- return Object.keys(__classPrivateFieldGet(this, _State_signRequests, "f")).length;
360
- },
361
- enumerable: false,
362
- configurable: true
363
- });
364
- Object.defineProperty(State.prototype, "allAuthRequests", {
365
- get: function () {
366
- return Object
367
- .values(__classPrivateFieldGet(this, _State_authRequests, "f"))
368
- .map(function (_a) {
369
- var id = _a.id, request = _a.request, url = _a.url;
370
- return ({ id: id, request: request, url: url });
371
- });
372
- },
373
- enumerable: false,
374
- configurable: true
375
- });
376
- Object.defineProperty(State.prototype, "allMetaRequests", {
377
- get: function () {
378
- return Object
379
- .values(__classPrivateFieldGet(this, _State_metaRequests, "f"))
380
- .map(function (_a) {
381
- var id = _a.id, request = _a.request, url = _a.url;
382
- return ({ id: id, request: request, url: url });
383
- });
384
- },
385
- enumerable: false,
386
- configurable: true
387
- });
388
- Object.defineProperty(State.prototype, "allSignRequests", {
389
- get: function () {
390
- return Object
391
- .values(__classPrivateFieldGet(this, _State_signRequests, "f"))
392
- .map(function (_a) {
393
- var account = _a.account, id = _a.id, request = _a.request, url = _a.url;
394
- return ({ account: account, id: id, request: request, url: url });
395
- });
396
- },
397
- enumerable: false,
398
- configurable: true
399
- });
400
- Object.defineProperty(State.prototype, "authUrls", {
401
- get: function () {
402
- return Object.fromEntries(__classPrivateFieldGet(this, _State_authUrls, "f"));
403
- },
404
- enumerable: false,
405
- configurable: true
406
- });
407
- State.prototype.popupClose = function () {
408
- __classPrivateFieldGet(this, _State_windows, "f").forEach(function (id) {
409
- return withErrorLog(function () { return chrome.windows.remove(id); });
410
- });
411
- __classPrivateFieldSet(this, _State_windows, [], "f");
412
- };
413
- State.prototype.popupOpen = function () {
414
- var _this = this;
415
- __classPrivateFieldGet(this, _State_notification, "f") !== 'extension' &&
416
- chrome.windows.create(__classPrivateFieldGet(this, _State_notification, "f") === 'window'
417
- ? NORMAL_WINDOW_OPTS
418
- : POPUP_WINDOW_OPTS, function (window) {
419
- if (window) {
420
- __classPrivateFieldGet(_this, _State_windows, "f").push(window.id || 0);
421
- }
422
- });
423
- };
424
- /**
425
- * @deprecated This method is deprecated in favor of {@link updateCurrentTabs} and will be removed in a future release.
426
- */
427
- State.prototype.udateCurrentTabsUrl = function (urls) {
428
- this.updateCurrentTabsUrl(urls);
429
- };
430
- State.prototype.updateCurrentTabsUrl = function (urls) {
431
- var _this = this;
432
- var connectedTabs = urls.map(function (url) {
433
- var strippedUrl = '';
434
- // the assert in stripUrl may throw for new tabs with "chrome://newtab/"
435
- try {
436
- strippedUrl = _this.stripUrl(url);
437
- }
438
- catch (e) {
439
- console.error(e);
440
- }
441
- // return the stripped url only if this website is known
442
- return !!strippedUrl && _this.authUrls[strippedUrl]
443
- ? strippedUrl
444
- : undefined;
445
- })
446
- .filter(function (value) { return !!value; });
447
- __classPrivateFieldSet(this, _State_connectedTabsUrl, connectedTabs, "f");
448
- };
449
- State.prototype.getConnectedTabsUrl = function () {
450
- return __classPrivateFieldGet(this, _State_connectedTabsUrl, "f");
451
- };
452
- State.prototype.deleteAuthRequest = function (requestId) {
453
- delete __classPrivateFieldGet(this, _State_authRequests, "f")[requestId];
454
- this.updateIconAuth(true);
455
- };
456
- State.prototype.saveCurrentAuthList = function () {
457
- return __awaiter(this, void 0, void 0, function () {
458
- var _a;
459
- return __generator(this, function (_b) {
460
- switch (_b.label) {
461
- case 0: return [4 /*yield*/, chrome.storage.local.set((_a = {}, _a[AUTH_URLS_KEY] = JSON.stringify(Object.fromEntries(__classPrivateFieldGet(this, _State_authUrls, "f"))), _a))];
462
- case 1:
463
- _b.sent();
464
- return [2 /*return*/];
465
- }
466
- });
467
- });
468
- };
469
- State.prototype.saveDefaultAuthAccounts = function () {
470
- return __awaiter(this, void 0, void 0, function () {
471
- var _a;
472
- return __generator(this, function (_b) {
473
- switch (_b.label) {
474
- case 0: return [4 /*yield*/, chrome.storage.local.set((_a = {}, _a[DEFAULT_AUTH_ACCOUNTS] = JSON.stringify(this.defaultAuthAccountSelection), _a))];
475
- case 1:
476
- _b.sent();
477
- return [2 /*return*/];
478
- }
479
- });
480
- });
481
- };
482
- State.prototype.updateDefaultAuthAccounts = function (newList) {
483
- return __awaiter(this, void 0, void 0, function () {
484
- return __generator(this, function (_a) {
485
- switch (_a.label) {
486
- case 0:
487
- this.defaultAuthAccountSelection = newList;
488
- return [4 /*yield*/, this.saveDefaultAuthAccounts()];
489
- case 1:
490
- _a.sent();
491
- return [2 /*return*/];
492
- }
493
- });
494
- });
495
- };
496
- State.prototype.stripUrl = function (url) {
497
- try {
498
- var parsedUrl = new URL(url);
499
- if (!['http:', 'https:', 'ipfs:', 'ipns:'].includes(parsedUrl.protocol)) {
500
- throw new Error("Invalid protocol ".concat(parsedUrl.protocol));
501
- }
502
- // For ipfs/ipns which don't have a standard origin, we handle it differently.
503
- if (parsedUrl.protocol === 'ipfs:' || parsedUrl.protocol === 'ipns:') {
504
- // ipfs://<hash> | ipns://<hash>
505
- return "".concat(parsedUrl.protocol, "//").concat(parsedUrl.hostname);
506
- }
507
- return parsedUrl.origin;
508
- }
509
- catch (e) {
510
- console.error(e);
511
- throw new Error('Invalid URL');
512
- }
513
- };
514
- State.prototype.updateIcon = function (shouldClose) {
515
- var authCount = this.numAuthRequests;
516
- var metaCount = this.numMetaRequests;
517
- var signCount = this.numSignRequests;
518
- var text = (authCount
519
- ? 'Auth'
520
- : metaCount
521
- ? 'Meta'
522
- : (signCount ? "".concat(signCount) : ''));
523
- withErrorLog(function () { return chrome.action.setBadgeText({ text: text }); });
524
- if (shouldClose && text === '') {
525
- this.popupClose();
526
- }
527
- };
528
- State.prototype.removeAuthorization = function (url) {
529
- return __awaiter(this, void 0, void 0, function () {
530
- var entry;
531
- return __generator(this, function (_a) {
532
- switch (_a.label) {
533
- case 0:
534
- entry = __classPrivateFieldGet(this, _State_authUrls, "f").get(url);
535
- assert(entry, "The source ".concat(url, " is not known"));
536
- __classPrivateFieldGet(this, _State_authUrls, "f").delete(url);
537
- return [4 /*yield*/, this.saveCurrentAuthList()];
538
- case 1:
539
- _a.sent();
540
- if (this.authUrlSubjects[url]) {
541
- entry.authorizedAccounts = [];
542
- this.authUrlSubjects[url].next(entry);
543
- }
544
- return [2 /*return*/, this.authUrls];
545
- }
546
- });
547
- });
548
- };
549
- State.prototype.updateIconAuth = function (shouldClose) {
550
- this.authSubject.next(this.allAuthRequests);
551
- this.updateIcon(shouldClose);
552
- };
553
- State.prototype.updateIconMeta = function (shouldClose) {
554
- this.metaSubject.next(this.allMetaRequests);
555
- this.updateIcon(shouldClose);
556
- };
557
- State.prototype.updateIconSign = function (shouldClose) {
558
- this.signSubject.next(this.allSignRequests);
559
- this.updateIcon(shouldClose);
560
- };
561
- State.prototype.updateAuthorizedAccounts = function (authorizedAccountsDiff) {
562
- return __awaiter(this, void 0, void 0, function () {
563
- var _this = this;
564
- return __generator(this, function (_a) {
565
- switch (_a.label) {
566
- case 0:
567
- authorizedAccountsDiff.forEach(function (_a) {
568
- var url = _a[0], authorizedAccountDiff = _a[1];
569
- var authInfo = __classPrivateFieldGet(_this, _State_authUrls, "f").get(url);
570
- if (authInfo) {
571
- authInfo.authorizedAccounts = authorizedAccountDiff;
572
- __classPrivateFieldGet(_this, _State_authUrls, "f").set(url, authInfo);
573
- _this.authUrlSubjects[url].next(authInfo);
574
- }
575
- });
576
- return [4 /*yield*/, this.saveCurrentAuthList()];
577
- case 1:
578
- _a.sent();
579
- return [2 /*return*/];
580
- }
581
- });
582
- });
583
- };
584
- State.prototype.authorizeUrl = function (url, request) {
585
- return __awaiter(this, void 0, void 0, function () {
586
- var idStr, isDuplicate, authInfo;
587
- var _this = this;
588
- return __generator(this, function (_a) {
589
- idStr = this.stripUrl(url);
590
- isDuplicate = Object
591
- .values(__classPrivateFieldGet(this, _State_authRequests, "f"))
592
- .some(function (request) { return request.idStr === idStr; });
593
- assert(!isDuplicate, "The source ".concat(url, " has a pending authorization request"));
594
- if (__classPrivateFieldGet(this, _State_authUrls, "f").has(idStr)) {
595
- authInfo = __classPrivateFieldGet(this, _State_authUrls, "f").get(idStr);
596
- assert((authInfo === null || authInfo === void 0 ? void 0 : authInfo.authorizedAccounts) || (authInfo === null || authInfo === void 0 ? void 0 : authInfo.isAllowed), "The source ".concat(url, " is not allowed to interact with this extension"));
597
- return [2 /*return*/, {
598
- authorizedAccounts: [],
599
- result: false
600
- }];
601
- }
602
- return [2 /*return*/, new Promise(function (resolve, reject) {
603
- var id = getId();
604
- __classPrivateFieldGet(_this, _State_authRequests, "f")[id] = __assign(__assign({}, _this.authComplete(id, resolve, reject)), { id: id, idStr: idStr, request: request, url: url });
605
- _this.updateIconAuth();
606
- _this.popupOpen();
607
- })];
608
- });
609
- });
610
- };
611
- State.prototype.ensureUrlAuthorized = function (url) {
612
- var entry = __classPrivateFieldGet(this, _State_authUrls, "f").get(this.stripUrl(url));
613
- assert(entry, "The source ".concat(url, " has not been enabled yet"));
614
- return true;
615
- };
616
- State.prototype.injectMetadata = function (url, request) {
617
- var _this = this;
618
- return new Promise(function (resolve, reject) {
619
- var id = getId();
620
- __classPrivateFieldGet(_this, _State_metaRequests, "f")[id] = __assign(__assign({}, _this.metaComplete(id, resolve, reject)), { id: id, request: request, url: url });
621
- _this.updateIconMeta();
622
- _this.popupOpen();
623
- });
624
- };
625
- State.prototype.getAuthRequest = function (id) {
626
- return __classPrivateFieldGet(this, _State_authRequests, "f")[id];
627
- };
628
- State.prototype.getMetaRequest = function (id) {
629
- return __classPrivateFieldGet(this, _State_metaRequests, "f")[id];
630
- };
631
- State.prototype.getSignRequest = function (id) {
632
- return __classPrivateFieldGet(this, _State_signRequests, "f")[id];
633
- };
634
- // List all providers the extension is exposing
635
- State.prototype.rpcListProviders = function () {
636
- var _this = this;
637
- return Promise.resolve(Object.keys(__classPrivateFieldGet(this, _State_providers, "f")).reduce(function (acc, key) {
638
- acc[key] = __classPrivateFieldGet(_this, _State_providers, "f")[key].meta;
639
- return acc;
640
- }, {}));
641
- };
642
- State.prototype.rpcSend = function (request, port) {
643
- var provider = __classPrivateFieldGet(this, _State_injectedProviders, "f").get(port);
644
- assert(provider, 'Cannot call pub(rpc.subscribe) before provider is set');
645
- return provider.send(request.method, request.params);
646
- };
647
- // Start a provider, return its meta
648
- State.prototype.rpcStartProvider = function (key, port) {
649
- var _this = this;
650
- assert(Object.keys(__classPrivateFieldGet(this, _State_providers, "f")).includes(key), "Provider ".concat(key, " is not exposed by extension"));
651
- if (__classPrivateFieldGet(this, _State_injectedProviders, "f").get(port)) {
652
- return Promise.resolve(__classPrivateFieldGet(this, _State_providers, "f")[key].meta);
653
- }
654
- // Instantiate the provider
655
- __classPrivateFieldGet(this, _State_injectedProviders, "f").set(port, __classPrivateFieldGet(this, _State_providers, "f")[key].start());
656
- // Close provider connection when page is closed
657
- port.onDisconnect.addListener(function () {
658
- var provider = __classPrivateFieldGet(_this, _State_injectedProviders, "f").get(port);
659
- if (provider) {
660
- withErrorLog(function () { return provider.disconnect(); });
661
- }
662
- __classPrivateFieldGet(_this, _State_injectedProviders, "f").delete(port);
663
- });
664
- return Promise.resolve(__classPrivateFieldGet(this, _State_providers, "f")[key].meta);
665
- };
666
- State.prototype.rpcSubscribe = function (_a, cb, port) {
667
- var method = _a.method, params = _a.params, type = _a.type;
668
- var provider = __classPrivateFieldGet(this, _State_injectedProviders, "f").get(port);
669
- assert(provider, 'Cannot call pub(rpc.subscribe) before provider is set');
670
- return provider.subscribe(type, method, params, cb);
671
- };
672
- State.prototype.rpcSubscribeConnected = function (_request, cb, port) {
673
- var provider = __classPrivateFieldGet(this, _State_injectedProviders, "f").get(port);
674
- assert(provider, 'Cannot call pub(rpc.subscribeConnected) before provider is set');
675
- cb(null, provider.isConnected); // Immediately send back current isConnected
676
- provider.on('connected', function () { return cb(null, true); });
677
- provider.on('disconnected', function () { return cb(null, false); });
678
- };
679
- State.prototype.rpcUnsubscribe = function (request, port) {
680
- var provider = __classPrivateFieldGet(this, _State_injectedProviders, "f").get(port);
681
- assert(provider, 'Cannot call pub(rpc.unsubscribe) before provider is set');
682
- return provider.unsubscribe(request.type, request.method, request.subscriptionId);
683
- };
684
- State.prototype.saveMetadata = function (meta) {
685
- return __awaiter(this, void 0, void 0, function () {
686
- return __generator(this, function (_a) {
687
- switch (_a.label) {
688
- case 0: return [4 /*yield*/, __classPrivateFieldGet(this, _State_metaStore, "f").set(meta.genesisHash, meta)];
689
- case 1:
690
- _a.sent();
691
- addMetadata(meta);
692
- return [2 /*return*/];
693
- }
694
- });
695
- });
696
- };
697
- State.prototype.setNotification = function (notification) {
698
- __classPrivateFieldSet(this, _State_notification, notification, "f");
699
- return true;
700
- };
701
- State.prototype.handleSignRequest = function (origin) {
702
- var now = Date.now();
703
- var lastTime = __classPrivateFieldGet(this, _State_lastRequestTimestamps, "f").get(origin) || 0;
704
- if (now - lastTime < __classPrivateFieldGet(this, _State_rateLimitInterval, "f")) {
705
- throw new Error('Rate limit exceeded. Try again later.');
706
- }
707
- // If we're about to exceed max entries, evict the oldest
708
- if (!__classPrivateFieldGet(this, _State_lastRequestTimestamps, "f").has(origin) && __classPrivateFieldGet(this, _State_lastRequestTimestamps, "f").size >= __classPrivateFieldGet(this, _State_maxEntries, "f")) {
709
- var oldestKey = __classPrivateFieldGet(this, _State_lastRequestTimestamps, "f").keys().next().value;
710
- oldestKey && __classPrivateFieldGet(this, _State_lastRequestTimestamps, "f").delete(oldestKey);
711
- }
712
- __classPrivateFieldGet(this, _State_lastRequestTimestamps, "f").set(origin, now);
713
- };
714
- State.prototype.sign = function (url, request, account) {
715
- var _this = this;
716
- var id = getId();
717
- try {
718
- this.handleSignRequest(url);
719
- }
720
- catch (error) {
721
- return Promise.reject(error);
722
- }
723
- return new Promise(function (resolve, reject) {
724
- __classPrivateFieldGet(_this, _State_signRequests, "f")[id] = __assign(__assign({}, _this.signComplete(id, resolve, reject)), { account: account, id: id, request: request, url: url });
725
- _this.updateIconSign();
726
- _this.popupOpen();
727
- });
728
- };
729
- return State;
730
- }());
731
- _State_authUrls = new WeakMap(), _State_lastRequestTimestamps = new WeakMap(), _State_maxEntries = new WeakMap(), _State_rateLimitInterval = 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();
732
- export default State;