@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,313 +0,0 @@
|
|
|
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
|
-
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 _Tabs_accountSubs, _Tabs_state;
|
|
62
|
-
import { combineLatest } from 'rxjs';
|
|
63
|
-
import { checkIfDenied } from '@pezkuwi/phishing';
|
|
64
|
-
import { keyring } from '@pezkuwi/ui-keyring';
|
|
65
|
-
import { accounts as accountsObservable } from '@pezkuwi/ui-keyring/observable/accounts';
|
|
66
|
-
import { assert, isNumber } from '@pezkuwi/util';
|
|
67
|
-
import { PHISHING_PAGE_REDIRECT } from '../../defaults.js';
|
|
68
|
-
import { canDerive } from '../../utils/index.js';
|
|
69
|
-
import RequestBytesSign from '../RequestBytesSign.js';
|
|
70
|
-
import RequestExtrinsicSign from '../RequestExtrinsicSign.js';
|
|
71
|
-
import { withErrorLog } from './helpers.js';
|
|
72
|
-
import { createSubscription, unsubscribe } from './subscriptions.js';
|
|
73
|
-
function transformAccounts(accounts, anyType) {
|
|
74
|
-
if (anyType === void 0) { anyType = false; }
|
|
75
|
-
return Object
|
|
76
|
-
.values(accounts)
|
|
77
|
-
.filter(function (_a) {
|
|
78
|
-
var isHidden = _a.json.meta.isHidden;
|
|
79
|
-
return !isHidden;
|
|
80
|
-
})
|
|
81
|
-
.filter(function (_a) {
|
|
82
|
-
var type = _a.type;
|
|
83
|
-
return anyType ? true : canDerive(type);
|
|
84
|
-
})
|
|
85
|
-
.sort(function (a, b) { return (a.json.meta.whenCreated || 0) - (b.json.meta.whenCreated || 0); })
|
|
86
|
-
.map(function (_a) {
|
|
87
|
-
var _b = _a.json, address = _b.address, _c = _b.meta, genesisHash = _c.genesisHash, name = _c.name, type = _a.type;
|
|
88
|
-
return ({
|
|
89
|
-
address: address,
|
|
90
|
-
genesisHash: genesisHash,
|
|
91
|
-
name: name,
|
|
92
|
-
type: type
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
var Tabs = /** @class */ (function () {
|
|
97
|
-
function Tabs(state) {
|
|
98
|
-
_Tabs_accountSubs.set(this, {});
|
|
99
|
-
_Tabs_state.set(this, void 0);
|
|
100
|
-
__classPrivateFieldSet(this, _Tabs_state, state, "f");
|
|
101
|
-
}
|
|
102
|
-
Tabs.prototype.filterForAuthorizedAccounts = function (accounts, url) {
|
|
103
|
-
var auth = __classPrivateFieldGet(this, _Tabs_state, "f").authUrls[__classPrivateFieldGet(this, _Tabs_state, "f").stripUrl(url)];
|
|
104
|
-
if (!auth) {
|
|
105
|
-
return [];
|
|
106
|
-
}
|
|
107
|
-
return accounts.filter(function (allAcc) {
|
|
108
|
-
return auth.authorizedAccounts
|
|
109
|
-
// we have a list, use it
|
|
110
|
-
? auth.authorizedAccounts.includes(allAcc.address)
|
|
111
|
-
// if no authorizedAccounts and isAllowed return all - these are old converted urls
|
|
112
|
-
: auth.isAllowed;
|
|
113
|
-
});
|
|
114
|
-
};
|
|
115
|
-
Tabs.prototype.authorize = function (url, request) {
|
|
116
|
-
return __classPrivateFieldGet(this, _Tabs_state, "f").authorizeUrl(url, request);
|
|
117
|
-
};
|
|
118
|
-
Tabs.prototype.accountsListAuthorized = function (url, _a) {
|
|
119
|
-
var anyType = _a.anyType;
|
|
120
|
-
var transformedAccounts = transformAccounts(accountsObservable.subject.getValue(), anyType);
|
|
121
|
-
return this.filterForAuthorizedAccounts(transformedAccounts, url);
|
|
122
|
-
};
|
|
123
|
-
Tabs.prototype.accountsSubscribeAuthorized = function (url, id, port) {
|
|
124
|
-
var _this = this;
|
|
125
|
-
var _a;
|
|
126
|
-
var cb = createSubscription(id, port);
|
|
127
|
-
var strippedUrl = __classPrivateFieldGet(this, _Tabs_state, "f").stripUrl(url);
|
|
128
|
-
var authUrlObservable = (_a = __classPrivateFieldGet(this, _Tabs_state, "f").authUrlSubjects[strippedUrl]) === null || _a === void 0 ? void 0 : _a.asObservable();
|
|
129
|
-
if (!authUrlObservable) {
|
|
130
|
-
console.error("No authUrlSubject found for ".concat(strippedUrl));
|
|
131
|
-
return id;
|
|
132
|
-
}
|
|
133
|
-
__classPrivateFieldGet(this, _Tabs_accountSubs, "f")[id] = {
|
|
134
|
-
subscription: combineLatest([accountsObservable.subject, authUrlObservable]).subscribe(function (_a) {
|
|
135
|
-
var accounts = _a[0], _authUrlInfo = _a[1];
|
|
136
|
-
var transformedAccounts = transformAccounts(accounts);
|
|
137
|
-
cb(_this.filterForAuthorizedAccounts(transformedAccounts, url));
|
|
138
|
-
}),
|
|
139
|
-
url: url
|
|
140
|
-
};
|
|
141
|
-
port.onDisconnect.addListener(function () {
|
|
142
|
-
_this.accountsUnsubscribe(url, { id: id });
|
|
143
|
-
});
|
|
144
|
-
return id;
|
|
145
|
-
};
|
|
146
|
-
Tabs.prototype.accountsUnsubscribe = function (url, _a) {
|
|
147
|
-
var id = _a.id;
|
|
148
|
-
var sub = __classPrivateFieldGet(this, _Tabs_accountSubs, "f")[id];
|
|
149
|
-
if (!sub || sub.url !== url) {
|
|
150
|
-
return false;
|
|
151
|
-
}
|
|
152
|
-
delete __classPrivateFieldGet(this, _Tabs_accountSubs, "f")[id];
|
|
153
|
-
unsubscribe(id);
|
|
154
|
-
sub.subscription.unsubscribe();
|
|
155
|
-
return true;
|
|
156
|
-
};
|
|
157
|
-
Tabs.prototype.getSigningPair = function (address) {
|
|
158
|
-
var pair = keyring.getPair(address);
|
|
159
|
-
assert(pair, 'Unable to find keypair');
|
|
160
|
-
return pair;
|
|
161
|
-
};
|
|
162
|
-
Tabs.prototype.bytesSign = function (url, request) {
|
|
163
|
-
var address = request.address;
|
|
164
|
-
var pair = this.getSigningPair(address);
|
|
165
|
-
return __classPrivateFieldGet(this, _Tabs_state, "f").sign(url, new RequestBytesSign(request), __assign({ address: address }, pair.meta));
|
|
166
|
-
};
|
|
167
|
-
Tabs.prototype.extrinsicSign = function (url, request) {
|
|
168
|
-
var address = request.address;
|
|
169
|
-
var pair = this.getSigningPair(address);
|
|
170
|
-
return __classPrivateFieldGet(this, _Tabs_state, "f").sign(url, new RequestExtrinsicSign(request), __assign({ address: address }, pair.meta));
|
|
171
|
-
};
|
|
172
|
-
Tabs.prototype.metadataProvide = function (url, request) {
|
|
173
|
-
return __classPrivateFieldGet(this, _Tabs_state, "f").injectMetadata(url, request);
|
|
174
|
-
};
|
|
175
|
-
Tabs.prototype.metadataList = function (_url) {
|
|
176
|
-
return __classPrivateFieldGet(this, _Tabs_state, "f").knownMetadata.map(function (_a) {
|
|
177
|
-
var genesisHash = _a.genesisHash, specVersion = _a.specVersion;
|
|
178
|
-
return ({
|
|
179
|
-
genesisHash: genesisHash,
|
|
180
|
-
specVersion: specVersion
|
|
181
|
-
});
|
|
182
|
-
});
|
|
183
|
-
};
|
|
184
|
-
Tabs.prototype.rpcListProviders = function () {
|
|
185
|
-
return __classPrivateFieldGet(this, _Tabs_state, "f").rpcListProviders();
|
|
186
|
-
};
|
|
187
|
-
Tabs.prototype.rpcSend = function (request, port) {
|
|
188
|
-
return __classPrivateFieldGet(this, _Tabs_state, "f").rpcSend(request, port);
|
|
189
|
-
};
|
|
190
|
-
Tabs.prototype.rpcStartProvider = function (key, port) {
|
|
191
|
-
return __classPrivateFieldGet(this, _Tabs_state, "f").rpcStartProvider(key, port);
|
|
192
|
-
};
|
|
193
|
-
Tabs.prototype.rpcSubscribe = function (request, id, port) {
|
|
194
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
195
|
-
var innerCb, cb, subscriptionId;
|
|
196
|
-
var _this = this;
|
|
197
|
-
return __generator(this, function (_a) {
|
|
198
|
-
switch (_a.label) {
|
|
199
|
-
case 0:
|
|
200
|
-
innerCb = createSubscription(id, port);
|
|
201
|
-
cb = function (_error, data) { return innerCb(data); };
|
|
202
|
-
return [4 /*yield*/, __classPrivateFieldGet(this, _Tabs_state, "f").rpcSubscribe(request, cb, port)];
|
|
203
|
-
case 1:
|
|
204
|
-
subscriptionId = _a.sent();
|
|
205
|
-
port.onDisconnect.addListener(function () {
|
|
206
|
-
unsubscribe(id);
|
|
207
|
-
withErrorLog(function () { return _this.rpcUnsubscribe(__assign(__assign({}, request), { subscriptionId: subscriptionId }), port); });
|
|
208
|
-
});
|
|
209
|
-
return [2 /*return*/, true];
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
};
|
|
214
|
-
Tabs.prototype.rpcSubscribeConnected = function (request, id, port) {
|
|
215
|
-
var innerCb = createSubscription(id, port);
|
|
216
|
-
var cb = function (_error, data) { return innerCb(data); };
|
|
217
|
-
__classPrivateFieldGet(this, _Tabs_state, "f").rpcSubscribeConnected(request, cb, port);
|
|
218
|
-
port.onDisconnect.addListener(function () {
|
|
219
|
-
unsubscribe(id);
|
|
220
|
-
});
|
|
221
|
-
return Promise.resolve(true);
|
|
222
|
-
};
|
|
223
|
-
Tabs.prototype.rpcUnsubscribe = function (request, port) {
|
|
224
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
225
|
-
return __generator(this, function (_a) {
|
|
226
|
-
return [2 /*return*/, __classPrivateFieldGet(this, _Tabs_state, "f").rpcUnsubscribe(request, port)];
|
|
227
|
-
});
|
|
228
|
-
});
|
|
229
|
-
};
|
|
230
|
-
Tabs.prototype.redirectPhishingLanding = function (phishingWebsite) {
|
|
231
|
-
var nonFragment = phishingWebsite.split('#')[0];
|
|
232
|
-
var encodedWebsite = encodeURIComponent(nonFragment);
|
|
233
|
-
var url = "".concat(chrome.runtime.getURL('index.html'), "#").concat(PHISHING_PAGE_REDIRECT, "/").concat(encodedWebsite);
|
|
234
|
-
chrome.tabs.query({ url: nonFragment }, function (tabs) {
|
|
235
|
-
tabs
|
|
236
|
-
.map(function (_a) {
|
|
237
|
-
var id = _a.id;
|
|
238
|
-
return id;
|
|
239
|
-
})
|
|
240
|
-
.filter(function (id) { return isNumber(id); })
|
|
241
|
-
.forEach(function (id) {
|
|
242
|
-
return withErrorLog(function () { return chrome.tabs.update(id, { url: url }); });
|
|
243
|
-
});
|
|
244
|
-
});
|
|
245
|
-
};
|
|
246
|
-
Tabs.prototype.redirectIfPhishing = function (url) {
|
|
247
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
248
|
-
var isInDenyList;
|
|
249
|
-
return __generator(this, function (_a) {
|
|
250
|
-
switch (_a.label) {
|
|
251
|
-
case 0: return [4 /*yield*/, checkIfDenied(url)];
|
|
252
|
-
case 1:
|
|
253
|
-
isInDenyList = _a.sent();
|
|
254
|
-
if (isInDenyList) {
|
|
255
|
-
this.redirectPhishingLanding(url);
|
|
256
|
-
return [2 /*return*/, true];
|
|
257
|
-
}
|
|
258
|
-
return [2 /*return*/, false];
|
|
259
|
-
}
|
|
260
|
-
});
|
|
261
|
-
});
|
|
262
|
-
};
|
|
263
|
-
Tabs.prototype.handle = function (id, type, request, url, port) {
|
|
264
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
265
|
-
return __generator(this, function (_a) {
|
|
266
|
-
if (type === 'pub(phishing.redirectIfDenied)') {
|
|
267
|
-
return [2 /*return*/, this.redirectIfPhishing(url)];
|
|
268
|
-
}
|
|
269
|
-
if (type !== 'pub(authorize.tab)') {
|
|
270
|
-
__classPrivateFieldGet(this, _Tabs_state, "f").ensureUrlAuthorized(url);
|
|
271
|
-
}
|
|
272
|
-
switch (type) {
|
|
273
|
-
case 'pub(authorize.tab)':
|
|
274
|
-
return [2 /*return*/, this.authorize(url, request)];
|
|
275
|
-
case 'pub(accounts.list)':
|
|
276
|
-
return [2 /*return*/, this.accountsListAuthorized(url, request)];
|
|
277
|
-
case 'pub(accounts.subscribe)':
|
|
278
|
-
return [2 /*return*/, port && this.accountsSubscribeAuthorized(url, id, port)];
|
|
279
|
-
case 'pub(accounts.unsubscribe)':
|
|
280
|
-
return [2 /*return*/, this.accountsUnsubscribe(url, request)];
|
|
281
|
-
case 'pub(bytes.sign)':
|
|
282
|
-
return [2 /*return*/, this.bytesSign(url, request)];
|
|
283
|
-
case 'pub(extrinsic.sign)':
|
|
284
|
-
return [2 /*return*/, this.extrinsicSign(url, request)];
|
|
285
|
-
case 'pub(metadata.list)':
|
|
286
|
-
return [2 /*return*/, this.metadataList(url)];
|
|
287
|
-
case 'pub(metadata.provide)':
|
|
288
|
-
return [2 /*return*/, this.metadataProvide(url, request)];
|
|
289
|
-
case 'pub(ping)':
|
|
290
|
-
return [2 /*return*/, Promise.resolve(true)];
|
|
291
|
-
case 'pub(rpc.listProviders)':
|
|
292
|
-
return [2 /*return*/, this.rpcListProviders()];
|
|
293
|
-
case 'pub(rpc.send)':
|
|
294
|
-
return [2 /*return*/, port && this.rpcSend(request, port)];
|
|
295
|
-
case 'pub(rpc.startProvider)':
|
|
296
|
-
return [2 /*return*/, port && this.rpcStartProvider(request, port)];
|
|
297
|
-
case 'pub(rpc.subscribe)':
|
|
298
|
-
return [2 /*return*/, port && this.rpcSubscribe(request, id, port)];
|
|
299
|
-
case 'pub(rpc.subscribeConnected)':
|
|
300
|
-
return [2 /*return*/, port && this.rpcSubscribeConnected(request, id, port)];
|
|
301
|
-
case 'pub(rpc.unsubscribe)':
|
|
302
|
-
return [2 /*return*/, port && this.rpcUnsubscribe(request, port)];
|
|
303
|
-
default:
|
|
304
|
-
throw new Error("Unable to handle message of type ".concat(type));
|
|
305
|
-
}
|
|
306
|
-
return [2 /*return*/];
|
|
307
|
-
});
|
|
308
|
-
});
|
|
309
|
-
};
|
|
310
|
-
return Tabs;
|
|
311
|
-
}());
|
|
312
|
-
_Tabs_accountSubs = new WeakMap(), _Tabs_state = new WeakMap();
|
|
313
|
-
export default Tabs;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
// Copyright 2019-2025 @pezkuwi/extension-base authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import { assert } from '@pezkuwi/util';
|
|
4
|
-
import { PORT_EXTENSION } from '../../defaults.js';
|
|
5
|
-
import Extension from './Extension.js';
|
|
6
|
-
import State from './State.js';
|
|
7
|
-
import Tabs from './Tabs.js';
|
|
8
|
-
export { withErrorLog } from './helpers.js';
|
|
9
|
-
var state = new State();
|
|
10
|
-
await state.init();
|
|
11
|
-
var extension = new Extension(state);
|
|
12
|
-
var tabs = new Tabs(state);
|
|
13
|
-
export default function handler(_a, port, extensionPortName) {
|
|
14
|
-
var _b;
|
|
15
|
-
var id = _a.id, message = _a.message, request = _a.request;
|
|
16
|
-
if (extensionPortName === void 0) { extensionPortName = PORT_EXTENSION; }
|
|
17
|
-
var isExtension = !port || (port === null || port === void 0 ? void 0 : port.name) === extensionPortName;
|
|
18
|
-
var sender = port === null || port === void 0 ? void 0 : port.sender;
|
|
19
|
-
if (!isExtension && !sender) {
|
|
20
|
-
throw new Error('Unable to extract message sender');
|
|
21
|
-
}
|
|
22
|
-
var from = isExtension
|
|
23
|
-
? 'extension'
|
|
24
|
-
: (sender === null || sender === void 0 ? void 0 : sender.url) || ((_b = sender === null || sender === void 0 ? void 0 : sender.tab) === null || _b === void 0 ? void 0 : _b.url) || '<unknown>';
|
|
25
|
-
var source = "".concat(from, ": ").concat(id, ": ").concat(message);
|
|
26
|
-
console.log(" [in] ".concat(source)); // :: ${JSON.stringify(request)}`);
|
|
27
|
-
var promise = isExtension
|
|
28
|
-
? extension.handle(id, message, request, port)
|
|
29
|
-
: tabs.handle(id, message, request, from, port);
|
|
30
|
-
promise
|
|
31
|
-
.then(function (response) {
|
|
32
|
-
console.log("[out] ".concat(source)); // :: ${JSON.stringify(response)}`);
|
|
33
|
-
// between the start and the end of the promise, the user may have closed
|
|
34
|
-
// the tab, in which case port will be undefined
|
|
35
|
-
assert(port, 'Port has been disconnected');
|
|
36
|
-
port.postMessage({ id: id, response: response });
|
|
37
|
-
})
|
|
38
|
-
.catch(function (error) {
|
|
39
|
-
console.log("[err] ".concat(source, ":: ").concat(error.message));
|
|
40
|
-
// only send message back to port if it's still connected
|
|
41
|
-
if (port) {
|
|
42
|
-
port.postMessage({ error: error.message, id: id });
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
// Copyright 2019-2025 @pezkuwi/extension-base authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
var subscriptions = {};
|
|
4
|
-
// return a subscription callback, that will send the data to the caller via the port
|
|
5
|
-
export function createSubscription(id, port) {
|
|
6
|
-
subscriptions[id] = port;
|
|
7
|
-
return function (subscription) {
|
|
8
|
-
if (subscriptions[id]) {
|
|
9
|
-
port.postMessage({ id: id, subscription: subscription });
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
// clear a previous subscriber
|
|
14
|
-
export function unsubscribe(id) {
|
|
15
|
-
if (subscriptions[id]) {
|
|
16
|
-
console.log("Unsubscribing from ".concat(id));
|
|
17
|
-
delete subscriptions[id];
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
console.error("Unable to unsubscribe from ".concat(id));
|
|
21
|
-
}
|
|
22
|
-
}
|
package/build/bundle.js
DELETED
package/build/defaults.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// Copyright 2019-2025 @pezkuwi/extension-base authors & contributors
|
|
2
|
-
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
// this _must_ be changed for each extension
|
|
4
|
-
export var EXTENSION_PREFIX = process.env['EXTENSION_PREFIX'] || '';
|
|
5
|
-
if (!EXTENSION_PREFIX && !process.env['PORT_PREFIX']) {
|
|
6
|
-
throw new Error('CRITICAL: The extension does not define an own EXTENSION_PREFIX environment variable as part of the build, this is required to ensure that messages are not shared between extensions. Failure to do so will yield messages sent to multiple extensions.');
|
|
7
|
-
}
|
|
8
|
-
var PORT_PREFIX = "".concat(EXTENSION_PREFIX || 'unknown', "-").concat(process.env['PORT_PREFIX'] || 'unknown');
|
|
9
|
-
export var PORT_CONTENT = "".concat(PORT_PREFIX, "-content");
|
|
10
|
-
export var PORT_EXTENSION = "".concat(PORT_PREFIX, "-extension");
|
|
11
|
-
export var MESSAGE_ORIGIN_PAGE = "".concat(PORT_PREFIX, "-page");
|
|
12
|
-
export var MESSAGE_ORIGIN_CONTENT = "".concat(PORT_PREFIX, "-content");
|
|
13
|
-
export var ALLOWED_PATH = ['/', '/account/import-ledger', '/account/restore-json'];
|
|
14
|
-
export var PASSWORD_EXPIRY_MIN = 15;
|
|
15
|
-
export var PASSWORD_EXPIRY_MS = PASSWORD_EXPIRY_MIN * 60 * 1000;
|
|
16
|
-
export var PHISHING_PAGE_REDIRECT = '/phishing-page-detected';
|
|
17
|
-
// console.log(`Extension is sending and receiving messages on ${PORT_PREFIX}-*`);
|
package/build/index.js
DELETED
package/build/packageInfo.js
DELETED
package/build/page/Accounts.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
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 Accounts = /** @class */ (function () {
|
|
6
|
-
function Accounts(_sendRequest) {
|
|
7
|
-
sendRequest = _sendRequest;
|
|
8
|
-
}
|
|
9
|
-
Accounts.prototype.get = function (anyType) {
|
|
10
|
-
return sendRequest('pub(accounts.list)', { anyType: anyType });
|
|
11
|
-
};
|
|
12
|
-
Accounts.prototype.subscribe = function (cb) {
|
|
13
|
-
var id = null;
|
|
14
|
-
sendRequest('pub(accounts.subscribe)', null, cb)
|
|
15
|
-
.then(function (subId) {
|
|
16
|
-
id = subId;
|
|
17
|
-
})
|
|
18
|
-
.catch(console.error);
|
|
19
|
-
return function () {
|
|
20
|
-
id && sendRequest('pub(accounts.unsubscribe)', { id: id })
|
|
21
|
-
.catch(console.error);
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
return Accounts;
|
|
25
|
-
}());
|
|
26
|
-
export default Accounts;
|
package/build/page/Metadata.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
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) {
|
|
7
|
-
sendRequest = _sendRequest;
|
|
8
|
-
}
|
|
9
|
-
Metadata.prototype.get = function () {
|
|
10
|
-
return sendRequest('pub(metadata.list)');
|
|
11
|
-
};
|
|
12
|
-
Metadata.prototype.provide = function (definition) {
|
|
13
|
-
return sendRequest('pub(metadata.provide)', definition);
|
|
14
|
-
};
|
|
15
|
-
return Metadata;
|
|
16
|
-
}());
|
|
17
|
-
export default Metadata;
|