btc-wallet 0.5.5-beta → 0.5.7-beta
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/connector/xverse.d.ts +8 -1
- package/dist/index.js +80 -78
- package/dist/index.js.map +2 -2
- package/esm/index.js +80 -78
- package/esm/index.js.map +2 -2
- package/package.json +1 -1
@@ -1,5 +1,9 @@
|
|
1
1
|
import EventEmitter from 'events';
|
2
|
+
import type { Address } from 'sats-connect';
|
2
3
|
import { BaseConnector, type WalletMetadata } from './base';
|
4
|
+
interface XverseAddress extends Address {
|
5
|
+
walletType: 'software' | 'ledger';
|
6
|
+
}
|
3
7
|
export declare class XverseConnector extends BaseConnector {
|
4
8
|
#private;
|
5
9
|
constructor();
|
@@ -10,14 +14,17 @@ export declare class XverseConnector extends BaseConnector {
|
|
10
14
|
txid: string;
|
11
15
|
}>;
|
12
16
|
requestAccounts(): Promise<string[]>;
|
17
|
+
getAddresses(): Promise<XverseAddress[]>;
|
18
|
+
getCurrentAddress(): Promise<XverseAddress>;
|
13
19
|
getAccounts(): Promise<string[]>;
|
14
20
|
getPublicKey(): Promise<string>;
|
15
21
|
signMessage(signStr: string): Promise<string>;
|
16
22
|
on(event: string, handler: (data?: unknown) => void): EventEmitter<[never]>;
|
17
23
|
removeListener(event: string, handler: (data?: unknown) => void): EventEmitter<[never]>;
|
18
|
-
getProvider(): import("sats-connect").BitcoinProvider
|
24
|
+
getProvider(): import("sats-connect").BitcoinProvider;
|
19
25
|
getNetwork(): Promise<'livenet' | 'testnet'>;
|
20
26
|
switchNetwork(): Promise<void>;
|
21
27
|
sendBitcoin(toAddress: string, satoshis: number): Promise<string>;
|
22
28
|
disconnect(): void;
|
23
29
|
}
|
30
|
+
export {};
|
package/dist/index.js
CHANGED
@@ -713,26 +713,18 @@ var XverseConnector = class extends BaseConnector {
|
|
713
713
|
downloadUrl: "https://www.xverse.app"
|
714
714
|
};
|
715
715
|
this.loadAccounts = (network) => __async(this, null, function* () {
|
716
|
-
const {
|
717
|
-
const
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
type: network
|
724
|
-
}
|
725
|
-
},
|
726
|
-
onFinish: (response) => {
|
727
|
-
resolve(response.addresses);
|
728
|
-
},
|
729
|
-
onCancel: () => reject({
|
730
|
-
code: 4001,
|
731
|
-
message: "User rejected the request."
|
732
|
-
})
|
733
|
-
};
|
734
|
-
getAddress(getAddressOptions).catch((error) => reject(error));
|
716
|
+
const { AddressPurpose } = yield import("sats-connect");
|
717
|
+
const provider = this.getProvider();
|
718
|
+
yield provider.request("wallet_requestPermissions", void 0);
|
719
|
+
const { result: walletType } = yield provider.request("wallet_getWalletType", void 0);
|
720
|
+
const { result } = yield provider.request("getAddresses", {
|
721
|
+
purposes: [AddressPurpose.Payment, AddressPurpose.Ordinals],
|
722
|
+
message: "Address for receiving Ordinals and payments"
|
735
723
|
});
|
724
|
+
const addresses = result.addresses.map((item) => __spreadProps(__spreadValues({}, item), {
|
725
|
+
walletType
|
726
|
+
}));
|
727
|
+
console.log("\u{1F680} ~ XverseConnector ~ loadAccounts ~ res:", addresses);
|
736
728
|
localStorage.setItem("btc-connect-xverse-addresses-" + network, JSON.stringify(addresses));
|
737
729
|
return addresses;
|
738
730
|
});
|
@@ -754,78 +746,76 @@ var XverseConnector = class extends BaseConnector {
|
|
754
746
|
}
|
755
747
|
requestAccounts() {
|
756
748
|
return __async(this, null, function* () {
|
757
|
-
if (isMobile()
|
758
|
-
|
759
|
-
|
749
|
+
if (isMobile()) {
|
750
|
+
try {
|
751
|
+
this.getProvider();
|
752
|
+
} catch (error) {
|
753
|
+
MobileWalletConnect.redirectToWallet(this.metadata.id);
|
754
|
+
return [];
|
755
|
+
}
|
760
756
|
}
|
761
757
|
const addresses = yield this.loadAccounts(__privateGet(this, _network));
|
762
758
|
return addresses.map((item) => item.address);
|
763
759
|
});
|
764
760
|
}
|
765
|
-
|
761
|
+
getAddresses() {
|
766
762
|
return __async(this, null, function* () {
|
767
|
-
if (!this.isReady()) {
|
768
|
-
throw new Error(`${this.metadata.name} is not install!`);
|
769
|
-
}
|
770
763
|
const data = localStorage.getItem("btc-connect-xverse-addresses-" + __privateGet(this, _network));
|
771
764
|
if (data) {
|
772
|
-
|
773
|
-
return addresses.map((item) => item.address);
|
774
|
-
} else {
|
775
|
-
return [];
|
765
|
+
return JSON.parse(data);
|
776
766
|
}
|
767
|
+
return [];
|
777
768
|
});
|
778
769
|
}
|
779
|
-
|
770
|
+
getCurrentAddress() {
|
780
771
|
return __async(this, null, function* () {
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
if (data) {
|
786
|
-
const addresses = JSON.parse(data);
|
787
|
-
return addresses[0].publicKey;
|
788
|
-
} else {
|
789
|
-
return "";
|
772
|
+
const addresses = yield this.getAddresses();
|
773
|
+
const address = addresses == null ? void 0 : addresses[0];
|
774
|
+
if (!address) {
|
775
|
+
throw new Error(`${this.metadata.name} not connected!`);
|
790
776
|
}
|
777
|
+
return address;
|
791
778
|
});
|
792
779
|
}
|
793
|
-
|
780
|
+
getAccounts() {
|
794
781
|
return __async(this, null, function* () {
|
795
782
|
if (!this.isReady()) {
|
796
783
|
throw new Error(`${this.metadata.name} is not install!`);
|
797
784
|
}
|
798
|
-
const addresses = yield this.
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
reject({
|
817
|
-
code: 4001,
|
818
|
-
message: "User rejected the request."
|
819
|
-
});
|
820
|
-
}
|
821
|
-
};
|
822
|
-
signMessage(signMessageOptions).catch((e) => {
|
823
|
-
reject(e);
|
824
|
-
});
|
785
|
+
const addresses = yield this.getAddresses();
|
786
|
+
return addresses.map((item) => item.address);
|
787
|
+
});
|
788
|
+
}
|
789
|
+
getPublicKey() {
|
790
|
+
return __async(this, null, function* () {
|
791
|
+
const address = yield this.getCurrentAddress();
|
792
|
+
return address.publicKey;
|
793
|
+
});
|
794
|
+
}
|
795
|
+
signMessage(signStr) {
|
796
|
+
return __async(this, null, function* () {
|
797
|
+
const address = yield this.getCurrentAddress();
|
798
|
+
const provider = this.getProvider();
|
799
|
+
const { result } = yield provider.request("signMessage", {
|
800
|
+
address: address.address,
|
801
|
+
message: signStr,
|
802
|
+
protocol: "ECDSA"
|
825
803
|
});
|
826
|
-
const modifiedSig = Buffer.from(
|
827
|
-
|
828
|
-
|
804
|
+
const modifiedSig = Buffer.from(result.signature, "base64");
|
805
|
+
console.log("xverse walletType", address.walletType);
|
806
|
+
console.log("xverse raw sig", result.signature, modifiedSig.toString("base64"));
|
807
|
+
if (address.walletType === "ledger") {
|
808
|
+
if (address.addressType === "p2wpkh") {
|
809
|
+
modifiedSig[0] = 31 + (modifiedSig[0] - 39);
|
810
|
+
} else if (address.addressType === "p2sh") {
|
811
|
+
modifiedSig[0] = 31 + (modifiedSig[0] - 35);
|
812
|
+
}
|
813
|
+
} else {
|
814
|
+
modifiedSig[0] = 31 + (modifiedSig[0] - 31) % 4;
|
815
|
+
}
|
816
|
+
const sig = modifiedSig.toString("base64");
|
817
|
+
console.log("xverse modified sig", sig);
|
818
|
+
return sig;
|
829
819
|
});
|
830
820
|
}
|
831
821
|
on(event, handler) {
|
@@ -835,9 +825,11 @@ var XverseConnector = class extends BaseConnector {
|
|
835
825
|
return __privateGet(this, _event).removeListener(event, handler);
|
836
826
|
}
|
837
827
|
getProvider() {
|
838
|
-
|
839
|
-
|
828
|
+
const provider = window.BitcoinProvider;
|
829
|
+
if (!provider) {
|
830
|
+
throw new Error(`${this.metadata.name} is not install!`);
|
840
831
|
}
|
832
|
+
return provider;
|
841
833
|
}
|
842
834
|
getNetwork() {
|
843
835
|
return __async(this, null, function* () {
|
@@ -855,9 +847,6 @@ var XverseConnector = class extends BaseConnector {
|
|
855
847
|
sendBitcoin(toAddress, satoshis) {
|
856
848
|
return __async(this, null, function* () {
|
857
849
|
const provider = this.getProvider();
|
858
|
-
if (!provider) {
|
859
|
-
throw new Error(`${this.metadata.name} is not install!`);
|
860
|
-
}
|
861
850
|
const { result } = yield provider.request("sendTransfer", {
|
862
851
|
recipients: [{ address: toAddress, amount: satoshis }]
|
863
852
|
});
|
@@ -3418,6 +3407,16 @@ function getCsnaAccountId(env) {
|
|
3418
3407
|
return csna;
|
3419
3408
|
});
|
3420
3409
|
}
|
3410
|
+
function checkDepositDisabledAddress() {
|
3411
|
+
const data = localStorage.getItem("btc-connect-xverse-addresses-Mainnet");
|
3412
|
+
if (!data)
|
3413
|
+
return;
|
3414
|
+
const addresses = JSON.parse(data);
|
3415
|
+
const address = addresses == null ? void 0 : addresses[0];
|
3416
|
+
if (address.walletType === "ledger" && (address.addressType !== "p2wpkh" || address.addressType !== "p2sh")) {
|
3417
|
+
throw new Error("Ledger is only supported for p2wpkh and p2sh address");
|
3418
|
+
}
|
3419
|
+
}
|
3421
3420
|
function executeBTCDepositAndAction(_0) {
|
3422
3421
|
return __async(this, arguments, function* ({
|
3423
3422
|
action,
|
@@ -3430,6 +3429,7 @@ function executeBTCDepositAndAction(_0) {
|
|
3430
3429
|
}) {
|
3431
3430
|
var _a;
|
3432
3431
|
try {
|
3432
|
+
checkDepositDisabledAddress();
|
3433
3433
|
const { getPublicKey } = getBtcProvider();
|
3434
3434
|
const config = yield getConfig(env);
|
3435
3435
|
const btcPublicKey = yield getPublicKey();
|
@@ -3872,7 +3872,9 @@ function setupButtonClickHandler(button, iframe, wallet, originalWallet) {
|
|
3872
3872
|
iframe.src = iframeSrc.toString();
|
3873
3873
|
const actions = {
|
3874
3874
|
signAndSendTransaction: wallet.signAndSendTransaction,
|
3875
|
-
|
3875
|
+
signAndSendTransactions: wallet.signAndSendTransactions,
|
3876
|
+
executeBTCDepositAndAction,
|
3877
|
+
getWithdrawTransaction
|
3876
3878
|
};
|
3877
3879
|
window.addEventListener("message", (event) => __async(this, null, function* () {
|
3878
3880
|
var _a2, _b;
|
@@ -4484,7 +4486,7 @@ function setupBTCWallet({
|
|
4484
4486
|
|
4485
4487
|
// src/index.ts
|
4486
4488
|
var getVersion = () => {
|
4487
|
-
return "0.5.
|
4489
|
+
return "0.5.7-beta";
|
4488
4490
|
};
|
4489
4491
|
if (typeof window !== "undefined") {
|
4490
4492
|
window.__BTC_WALLET_VERSION = getVersion();
|