@subwallet/extension-base 1.3.36-0 → 1.3.38-0
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/background/KoniTypes.d.ts +7 -0
- package/background/types.d.ts +2 -1
- package/cjs/core/logic-validation/request.js +62 -13
- package/cjs/koni/background/handlers/Extension.js +168 -108
- package/cjs/koni/background/handlers/State.js +18 -17
- package/cjs/koni/background/handlers/Tabs.js +38 -5
- package/cjs/packageInfo.js +1 -1
- package/cjs/page/cardano/cips/cip30.js +21 -1
- package/cjs/page/cardano/index.js +5 -5
- package/cjs/services/request-service/handler/AuthRequestHandler.js +4 -1
- package/cjs/services/request-service/handler/CardanoRequestHandler.js +4 -3
- package/cjs/services/request-service/helper/index.js +19 -17
- package/cjs/services/swap-service/handler/base-handler.js +4 -2
- package/cjs/services/swap-service/handler/uniswap-handler.js +122 -57
- package/cjs/services/swap-service/index.js +1 -1
- package/cjs/utils/cardano.js +10 -2
- package/core/logic-validation/request.d.ts +1 -0
- package/core/logic-validation/request.js +63 -15
- package/koni/background/handlers/Extension.d.ts +1 -0
- package/koni/background/handlers/Extension.js +61 -2
- package/koni/background/handlers/State.js +20 -19
- package/koni/background/handlers/Tabs.d.ts +1 -0
- package/koni/background/handlers/Tabs.js +38 -5
- package/package.json +11 -11
- package/packageInfo.js +1 -1
- package/page/cardano/cips/cip30.d.ts +31 -17
- package/page/cardano/cips/cip30.js +17 -1
- package/page/cardano/index.d.ts +20 -4
- package/page/cardano/index.js +5 -5
- package/services/chain-service/types.d.ts +1 -1
- package/services/request-service/handler/AuthRequestHandler.js +4 -1
- package/services/request-service/handler/CardanoRequestHandler.js +4 -3
- package/services/request-service/helper/index.js +19 -17
- package/services/swap-service/handler/base-handler.js +4 -2
- package/services/swap-service/handler/uniswap-handler.d.ts +1 -1
- package/services/swap-service/handler/uniswap-handler.js +99 -34
- package/services/swap-service/index.js +1 -1
- package/types/service-base.d.ts +1 -0
- package/utils/cardano.d.ts +2 -0
- package/utils/cardano.js +7 -0
|
@@ -98,6 +98,11 @@ export interface ResultResolver {
|
|
|
98
98
|
result: boolean;
|
|
99
99
|
accounts: string[];
|
|
100
100
|
}
|
|
101
|
+
export interface RequestSwitchCurrentNetworkAuthorization {
|
|
102
|
+
url: string;
|
|
103
|
+
networkKey: string;
|
|
104
|
+
authSwitchNetworkType: AccountAuthType;
|
|
105
|
+
}
|
|
101
106
|
export declare enum StakingType {
|
|
102
107
|
NOMINATED = "nominated",
|
|
103
108
|
POOLED = "pooled",
|
|
@@ -895,6 +900,7 @@ export interface TonSignatureRequest extends TonSignRequest {
|
|
|
895
900
|
export interface CardanoSignatureRequest extends CardanoSignRequest {
|
|
896
901
|
id: string;
|
|
897
902
|
errors?: ErrorValidation[];
|
|
903
|
+
currentAddress: string;
|
|
898
904
|
payload: unknown;
|
|
899
905
|
}
|
|
900
906
|
export interface EvmSendTransactionRequest extends TransactionConfig, EvmSignRequest {
|
|
@@ -1836,6 +1842,7 @@ export interface KoniRequestSignatures {
|
|
|
1836
1842
|
'cardano(account.get.address)': [null, string[]];
|
|
1837
1843
|
'cardano(account.get.balance)': [null, Cbor];
|
|
1838
1844
|
'cardano(account.get.change.address)': [null, string];
|
|
1845
|
+
'cardano(account.get.reward.address)': [null, string[]];
|
|
1839
1846
|
'cardano(account.get.utxos)': [RequestCardanoGetUtxos, Cbor[] | null];
|
|
1840
1847
|
'cardano(account.get.collateral)': [RequestCardanoGetCollateral, Cbor[] | null];
|
|
1841
1848
|
'cardano(network.get.current)': [null, number];
|
package/background/types.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { KeyringPairs$Json } from '@subwallet/ui-keyring/types';
|
|
|
4
4
|
import type { JsonRpcResponse } from '@polkadot/rpc-provider/types';
|
|
5
5
|
import type { SignerPayloadJSON, SignerPayloadRaw } from '@polkadot/types/types';
|
|
6
6
|
import type { HexString } from '@polkadot/util/types';
|
|
7
|
-
import { KoniRequestSignatures, NetworkJson } from '@subwallet/extension-base/background/KoniTypes';
|
|
7
|
+
import { KoniRequestSignatures, NetworkJson, RequestSwitchCurrentNetworkAuthorization } from '@subwallet/extension-base/background/KoniTypes';
|
|
8
8
|
import { AuthUrls } from '@subwallet/extension-base/services/request-service/types';
|
|
9
9
|
import { AccountJson } from '@subwallet/extension-base/types';
|
|
10
10
|
import { TypeRegistry } from '@polkadot/types';
|
|
@@ -68,6 +68,7 @@ export interface RequestSignatures extends KoniRequestSignatures {
|
|
|
68
68
|
'pri(authorize.reject)': [RequestAuthorizeReject, boolean];
|
|
69
69
|
'pri(authorize.requests)': [RequestAuthorizeSubscribe, boolean, AuthorizeRequest[]];
|
|
70
70
|
'pri(authorize.toggle)': [string, ResponseAuthorizeList];
|
|
71
|
+
'pri(authorize.switchCurrentNetwork)': [RequestSwitchCurrentNetworkAuthorization, ResponseAuthorizeList];
|
|
71
72
|
'pri(derivation.create)': [RequestDeriveCreate, boolean];
|
|
72
73
|
'pri(derivation.validate)': [RequestDeriveValidate, ResponseDeriveValidate];
|
|
73
74
|
'pri(json.batchRestore)': [RequestBatchRestore, void];
|
|
@@ -11,6 +11,7 @@ exports.joiValidate = void 0;
|
|
|
11
11
|
exports.validateSignMessageData = validateSignMessageData;
|
|
12
12
|
exports.validateTypedSignMessageDataV1 = validateTypedSignMessageDataV1;
|
|
13
13
|
exports.validateTypedSignMessageDataV3V4 = validateTypedSignMessageDataV3V4;
|
|
14
|
+
exports.validationAuthCardanoMiddleware = validationAuthCardanoMiddleware;
|
|
14
15
|
exports.validationAuthMiddleware = validationAuthMiddleware;
|
|
15
16
|
exports.validationAuthWCMiddleware = validationAuthWCMiddleware;
|
|
16
17
|
exports.validationCardanoSignDataMiddleware = validationCardanoSignDataMiddleware;
|
|
@@ -24,6 +25,7 @@ var _TransactionError = require("@subwallet/extension-base/background/errors/Tra
|
|
|
24
25
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
25
26
|
var _types = require("@subwallet/extension-base/types");
|
|
26
27
|
var _utils = require("@subwallet/extension-base/utils");
|
|
28
|
+
var _cardano = require("@subwallet/extension-base/utils/cardano");
|
|
27
29
|
var _parseTransaction = require("@subwallet/extension-base/utils/eth/parseTransaction");
|
|
28
30
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
29
31
|
var _keyring = require("@subwallet/keyring");
|
|
@@ -147,36 +149,33 @@ async function generateValidationProcess(koni, url, payloadValidate, validationM
|
|
|
147
149
|
}
|
|
148
150
|
return resultValidated;
|
|
149
151
|
}
|
|
152
|
+
function handleAuthError(payload, message, errorPosition, errors) {
|
|
153
|
+
payload.errorPosition = errorPosition;
|
|
154
|
+
errors.push(new Error(convertErrorMessage(message)[0]));
|
|
155
|
+
return payload;
|
|
156
|
+
}
|
|
150
157
|
async function validationAuthMiddleware(koni, url, payload) {
|
|
151
158
|
const {
|
|
152
159
|
address,
|
|
153
160
|
errors
|
|
154
161
|
} = payload;
|
|
155
162
|
if (!address || !(0, _util.isString)(address)) {
|
|
156
|
-
payload
|
|
157
|
-
const [message] = convertErrorMessage('Not found address to sign');
|
|
158
|
-
errors.push(new Error(message));
|
|
163
|
+
return handleAuthError(payload, 'Not found address to sign', 'dApp', errors);
|
|
159
164
|
} else {
|
|
160
165
|
try {
|
|
161
166
|
payload.pair = _uiKeyring.keyring.getPair(address);
|
|
162
167
|
if (!payload.pair) {
|
|
163
|
-
payload
|
|
164
|
-
const [message] = convertErrorMessage('Unable to find account');
|
|
165
|
-
errors.push(new Error(message));
|
|
168
|
+
return handleAuthError(payload, 'Unable to find account', 'dApp', errors);
|
|
166
169
|
} else {
|
|
167
170
|
const authList = await koni.getAuthList();
|
|
168
171
|
const authInfo = authList[(0, _utils.stripUrl)(url)];
|
|
169
172
|
if (!authInfo || !authInfo.isAllowed || !authInfo.isAllowedMap[payload.pair.address]) {
|
|
170
|
-
payload
|
|
171
|
-
const [message] = convertErrorMessage('Account not in allowed list', '');
|
|
172
|
-
errors.push(new Error(message));
|
|
173
|
+
return handleAuthError(payload, 'Account not in allowed list', 'dApp', errors);
|
|
173
174
|
}
|
|
174
175
|
payload.authInfo = authInfo;
|
|
175
176
|
}
|
|
176
177
|
} catch (e) {
|
|
177
|
-
|
|
178
|
-
payload.errorPosition = 'dApp';
|
|
179
|
-
errors.push(new Error(message));
|
|
178
|
+
return handleAuthError(payload, e.message, 'dApp', errors);
|
|
180
179
|
}
|
|
181
180
|
}
|
|
182
181
|
return payload;
|
|
@@ -564,11 +563,51 @@ function validationAuthWCMiddleware(koni, url, payload, topic) {
|
|
|
564
563
|
});
|
|
565
564
|
return promise;
|
|
566
565
|
}
|
|
566
|
+
async function validationAuthCardanoMiddleware(koni, url, payload) {
|
|
567
|
+
const authList = await koni.getAuthList();
|
|
568
|
+
const authInfo = authList[(0, _utils.stripUrl)(url)];
|
|
569
|
+
const {
|
|
570
|
+
address,
|
|
571
|
+
errors
|
|
572
|
+
} = payload;
|
|
573
|
+
if (!authInfo || !authInfo.isAllowed) {
|
|
574
|
+
return handleAuthError(payload, 'Account not in allowed list', 'dApp', errors);
|
|
575
|
+
}
|
|
576
|
+
const currentAddress = authInfo.currentAccount;
|
|
577
|
+
const currentNetwork = authInfo.currentNetworkMap.cardano || 'cardano';
|
|
578
|
+
const currentNetworkId = +(currentNetwork === 'cardano');
|
|
579
|
+
if (!currentAddress || !authInfo.isAllowedMap[currentAddress]) {
|
|
580
|
+
return handleAuthError(payload, 'Unable to find account', 'dApp', errors);
|
|
581
|
+
}
|
|
582
|
+
const pair = _uiKeyring.keyring.getPair(currentAddress);
|
|
583
|
+
if (!pair) {
|
|
584
|
+
return handleAuthError(payload, 'Unable to find account', 'dApp', errors);
|
|
585
|
+
}
|
|
586
|
+
payload.pair = pair;
|
|
587
|
+
if ((0, _keyring.isCardanoBaseAddress)(address)) {
|
|
588
|
+
if (!authInfo.isAllowedMap[address]) {
|
|
589
|
+
return handleAuthError(payload, 'Account not in allowed list', 'dApp', errors);
|
|
590
|
+
}
|
|
591
|
+
const addressByChainFormat = (0, _utils.reformatAddress)(currentAddress, currentNetworkId);
|
|
592
|
+
if (!(0, _utils.isSameAddress)(addressByChainFormat, address)) {
|
|
593
|
+
return handleAuthError(payload, 'Current account is changed', 'dApp', errors);
|
|
594
|
+
}
|
|
595
|
+
} else if ((0, _keyring.isCardanoRewardAddress)(address)) {
|
|
596
|
+
const rewardAddress = pair.cardano.rewardAddress;
|
|
597
|
+
const addressByChainFormat = (0, _utils.reformatAddress)(rewardAddress, currentNetworkId);
|
|
598
|
+
if (!(0, _utils.isSameAddress)(addressByChainFormat, address)) {
|
|
599
|
+
return handleAuthError(payload, 'Current account is changed', 'dApp', errors);
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
return payload;
|
|
603
|
+
}
|
|
567
604
|
async function validationCardanoSignDataMiddleware(koni, url, payload_) {
|
|
568
605
|
const {
|
|
569
606
|
address,
|
|
607
|
+
authInfo,
|
|
570
608
|
errors,
|
|
571
|
-
pair: pair_
|
|
609
|
+
pair: pair_,
|
|
610
|
+
type
|
|
572
611
|
} = payload_;
|
|
573
612
|
const payload = payload_.payloadAfterValidated;
|
|
574
613
|
const {
|
|
@@ -590,6 +629,15 @@ async function validationCardanoSignDataMiddleware(koni, url, payload_) {
|
|
|
590
629
|
if (!(0, _keyring.isCardanoAddress)(address)) {
|
|
591
630
|
handleError('Not found cardano address');
|
|
592
631
|
}
|
|
632
|
+
const currentCardanoNetwork = koni.requestService.getDAppChainInfo({
|
|
633
|
+
autoActive: true,
|
|
634
|
+
accessType: 'cardano',
|
|
635
|
+
defaultChain: authInfo === null || authInfo === void 0 ? void 0 : authInfo.currentNetworkMap[type],
|
|
636
|
+
url
|
|
637
|
+
});
|
|
638
|
+
if (!(0, _cardano.validateAddressNetwork)(address, currentCardanoNetwork)) {
|
|
639
|
+
handleError('Invalid address network');
|
|
640
|
+
}
|
|
593
641
|
const pair = pair_ || _uiKeyring.keyring.getPair(address);
|
|
594
642
|
if (!(pair !== null && pair !== void 0 && pair.meta.isExtneral)) {
|
|
595
643
|
canSign = true;
|
|
@@ -597,6 +645,7 @@ async function validationCardanoSignDataMiddleware(koni, url, payload_) {
|
|
|
597
645
|
const payloadAfterValidated = {
|
|
598
646
|
address,
|
|
599
647
|
payload: payload,
|
|
648
|
+
currentAddress: authInfo === null || authInfo === void 0 ? void 0 : authInfo.currentAccount,
|
|
600
649
|
hashPayload: payload,
|
|
601
650
|
canSign: canSign,
|
|
602
651
|
id: ''
|