@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.
- package/LICENSE +201 -0
- package/background/RequestBytesSign.js +12 -0
- package/background/RequestExtrinsicSign.js +11 -0
- package/background/handlers/Extension.js +489 -0
- package/background/handlers/State.js +478 -0
- package/background/handlers/Tabs.js +195 -0
- package/{build/background → background}/handlers/helpers.js +1 -3
- package/background/handlers/index.js +40 -0
- package/background/handlers/subscriptions.js +18 -0
- package/background/index.js +1 -0
- package/bundle.js +1 -0
- package/cjs/background/RequestBytesSign.d.ts +12 -0
- package/cjs/background/RequestBytesSign.js +15 -0
- package/cjs/background/RequestExtrinsicSign.d.ts +12 -0
- package/cjs/background/RequestExtrinsicSign.js +14 -0
- package/cjs/background/handlers/Extension.d.ts +49 -0
- package/cjs/background/handlers/Extension.js +492 -0
- package/cjs/background/handlers/State.d.ts +96 -0
- package/cjs/background/handlers/State.js +482 -0
- package/cjs/background/handlers/Tabs.d.ts +25 -0
- package/cjs/background/handlers/Tabs.js +199 -0
- package/cjs/background/handlers/helpers.d.ts +1 -0
- package/cjs/background/handlers/helpers.js +14 -0
- package/cjs/background/handlers/index.d.ts +3 -0
- package/cjs/background/handlers/index.js +46 -0
- package/cjs/background/handlers/subscriptions.d.ts +3 -0
- package/cjs/background/handlers/subscriptions.js +22 -0
- package/cjs/background/index.d.ts +1 -0
- package/cjs/background/index.js +7 -0
- package/cjs/background/types.d.ts +343 -0
- package/cjs/background/types.js +2 -0
- package/cjs/bundle.d.ts +1 -0
- package/cjs/bundle.js +5 -0
- package/cjs/defaults.js +16 -0
- package/cjs/index.js +4 -0
- package/cjs/package.json +3 -0
- package/cjs/packageDetect.d.ts +1 -0
- package/cjs/packageDetect.js +8 -0
- package/cjs/packageInfo.js +4 -0
- package/cjs/page/Accounts.js +24 -0
- package/cjs/page/Injected.js +25 -0
- package/cjs/page/Metadata.js +15 -0
- package/cjs/page/PostMessageProvider.js +135 -0
- package/cjs/page/Signer.js +29 -0
- package/cjs/page/index.js +52 -0
- package/cjs/page/types.js +2 -0
- package/cjs/stores/Accounts.js +21 -0
- package/cjs/stores/Base.js +70 -0
- package/cjs/stores/Metadata.js +13 -0
- package/cjs/stores/index.js +8 -0
- package/cjs/types.js +2 -0
- package/cjs/utils/canDerive.js +6 -0
- package/cjs/utils/getId.js +8 -0
- package/cjs/utils/index.js +5 -0
- package/{build → cjs}/utils/portUtils.d.ts +0 -1
- package/cjs/utils/portUtils.js +49 -0
- package/defaults.d.ts +9 -0
- package/{src/defaults.ts → defaults.js} +2 -15
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +464 -10
- package/packageDetect.d.ts +1 -0
- package/{build/packageDetect.js → packageDetect.js} +0 -4
- package/packageInfo.d.ts +6 -0
- package/packageInfo.js +1 -0
- package/page/Accounts.d.ts +7 -0
- package/page/Accounts.js +21 -0
- package/page/Injected.d.ts +13 -0
- package/{build/page → page}/Injected.js +10 -10
- package/page/Metadata.d.ts +7 -0
- package/page/Metadata.js +12 -0
- package/page/PostMessageProvider.d.ts +63 -0
- package/page/PostMessageProvider.js +132 -0
- package/page/Signer.d.ts +8 -0
- package/page/Signer.js +26 -0
- package/page/index.d.ts +16 -0
- package/page/index.js +45 -0
- package/page/types.d.ts +6 -0
- package/page/types.js +1 -0
- package/stores/Accounts.d.ts +6 -0
- package/stores/Accounts.js +17 -0
- package/stores/Base.d.ts +9 -0
- package/stores/Base.js +67 -0
- package/stores/Metadata.d.ts +5 -0
- package/stores/Metadata.js +9 -0
- package/{src/stores/index.ts → stores/index.d.ts} +0 -3
- package/{build/stores → stores}/index.js +0 -2
- package/types.d.ts +9 -0
- package/types.js +1 -0
- package/utils/canDerive.d.ts +2 -0
- package/{build/utils → utils}/canDerive.js +0 -2
- package/utils/getId.d.ts +1 -0
- package/utils/getId.js +5 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
- package/utils/portUtils.d.ts +13 -0
- package/utils/portUtils.js +43 -0
- package/build/background/RequestBytesSign.js +0 -15
- package/build/background/RequestExtrinsicSign.js +0 -14
- package/build/background/handlers/Extension.js +0 -645
- package/build/background/handlers/State.js +0 -732
- package/build/background/handlers/Tabs.js +0 -313
- package/build/background/handlers/index.js +0 -45
- package/build/background/handlers/subscriptions.js +0 -22
- package/build/background/index.js +0 -3
- package/build/background/types.js +0 -3
- package/build/bundle.js +0 -3
- package/build/defaults.js +0 -17
- package/build/index.js +0 -5
- package/build/packageInfo.js +0 -4
- package/build/page/Accounts.js +0 -26
- package/build/page/Metadata.js +0 -17
- package/build/page/PostMessageProvider.js +0 -234
- package/build/page/Signer.js +0 -92
- package/build/page/index.js +0 -102
- package/build/page/types.js +0 -3
- package/build/stores/Accounts.js +0 -83
- package/build/stores/Base.js +0 -250
- package/build/stores/Metadata.js +0 -29
- package/build/types.js +0 -3
- package/build/utils/getId.js +0 -7
- package/build/utils/index.js +0 -3
- package/build/utils/portUtils.js +0 -106
- package/src/background/RequestBytesSign.ts +0 -28
- package/src/background/RequestExtrinsicSign.ts +0 -22
- package/src/background/handlers/Extension.spec.ts +0 -478
- package/src/background/handlers/Extension.ts +0 -690
- package/src/background/handlers/State.ts +0 -664
- package/src/background/handlers/Tabs.ts +0 -289
- package/src/background/handlers/helpers.ts +0 -14
- package/src/background/handlers/index.ts +0 -60
- package/src/background/handlers/subscriptions.ts +0 -32
- package/src/background/index.ts +0 -4
- package/src/background/types.ts +0 -432
- package/src/bundle.ts +0 -4
- package/src/index.ts +0 -7
- package/src/packageDetect.ts +0 -14
- package/src/packageInfo.ts +0 -6
- package/src/page/Accounts.ts +0 -33
- package/src/page/Injected.ts +0 -33
- package/src/page/Metadata.ts +0 -22
- package/src/page/PostMessageProvider.ts +0 -182
- package/src/page/Signer.ts +0 -45
- package/src/page/index.ts +0 -89
- package/src/page/types.ts +0 -10
- package/src/stores/Accounts.ts +0 -28
- package/src/stores/Base.ts +0 -93
- package/src/stores/Metadata.ts +0 -17
- package/src/types.ts +0 -12
- package/src/utils/canDerive.ts +0 -8
- package/src/utils/getId.ts +0 -10
- package/src/utils/index.ts +0 -4
- package/src/utils/portUtils.ts +0 -65
- package/tsconfig.build.json +0 -16
- package/tsconfig.build.tsbuildinfo +0 -1
- package/tsconfig.spec.json +0 -18
- package/tsconfig.spec.tsbuildinfo +0 -1
- /package/{build/background → background}/RequestBytesSign.d.ts +0 -0
- /package/{build/background → background}/RequestExtrinsicSign.d.ts +0 -0
- /package/{build/background → background}/handlers/Extension.d.ts +0 -0
- /package/{build/background → background}/handlers/State.d.ts +0 -0
- /package/{build/background → background}/handlers/Tabs.d.ts +0 -0
- /package/{build/background → background}/handlers/helpers.d.ts +0 -0
- /package/{build/background → background}/handlers/index.d.ts +0 -0
- /package/{build/background → background}/handlers/subscriptions.d.ts +0 -0
- /package/{build/background → background}/index.d.ts +0 -0
- /package/{build/background → background}/types.d.ts +0 -0
- /package/{build/packageDetect.d.ts → background/types.js} +0 -0
- /package/{build/bundle.d.ts → bundle.d.ts} +0 -0
- /package/{build → cjs}/defaults.d.ts +0 -0
- /package/{build → cjs}/index.d.ts +0 -0
- /package/{build → cjs}/packageInfo.d.ts +0 -0
- /package/{build → cjs}/page/Accounts.d.ts +0 -0
- /package/{build → cjs}/page/Injected.d.ts +0 -0
- /package/{build → cjs}/page/Metadata.d.ts +0 -0
- /package/{build → cjs}/page/PostMessageProvider.d.ts +0 -0
- /package/{build → cjs}/page/Signer.d.ts +0 -0
- /package/{build → cjs}/page/index.d.ts +0 -0
- /package/{build → cjs}/page/types.d.ts +0 -0
- /package/{build → cjs}/stores/Accounts.d.ts +0 -0
- /package/{build → cjs}/stores/Base.d.ts +0 -0
- /package/{build → cjs}/stores/Metadata.d.ts +0 -0
- /package/{build → cjs}/stores/index.d.ts +0 -0
- /package/{build → cjs}/types.d.ts +0 -0
- /package/{build → cjs}/utils/canDerive.d.ts +0 -0
- /package/{build → cjs}/utils/getId.d.ts +0 -0
- /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;
|