btc-wallet 0.5.6-beta → 0.5.8-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 +69 -62
- package/dist/index.js.map +2 -2
- package/esm/index.js +69 -62
- 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
@@ -715,16 +715,15 @@ var XverseConnector = class extends BaseConnector {
|
|
715
715
|
this.loadAccounts = (network) => __async(this, null, function* () {
|
716
716
|
const { AddressPurpose } = yield import("sats-connect");
|
717
717
|
const provider = this.getProvider();
|
718
|
-
if (!provider) {
|
719
|
-
throw new Error(`${this.metadata.name} is not install!`);
|
720
|
-
}
|
721
718
|
yield provider.request("wallet_requestPermissions", void 0);
|
722
719
|
const { result: walletType } = yield provider.request("wallet_getWalletType", void 0);
|
723
720
|
const { result } = yield provider.request("getAddresses", {
|
724
721
|
purposes: [AddressPurpose.Payment, AddressPurpose.Ordinals],
|
725
722
|
message: "Address for receiving Ordinals and payments"
|
726
723
|
});
|
727
|
-
const addresses = result.addresses.map((item) => __spreadProps(__spreadValues({}, item), {
|
724
|
+
const addresses = result.addresses.map((item) => __spreadProps(__spreadValues({}, item), {
|
725
|
+
walletType
|
726
|
+
}));
|
728
727
|
console.log("\u{1F680} ~ XverseConnector ~ loadAccounts ~ res:", addresses);
|
729
728
|
localStorage.setItem("btc-connect-xverse-addresses-" + network, JSON.stringify(addresses));
|
730
729
|
return addresses;
|
@@ -747,78 +746,76 @@ var XverseConnector = class extends BaseConnector {
|
|
747
746
|
}
|
748
747
|
requestAccounts() {
|
749
748
|
return __async(this, null, function* () {
|
750
|
-
if (isMobile()
|
751
|
-
|
752
|
-
|
749
|
+
if (isMobile()) {
|
750
|
+
try {
|
751
|
+
this.getProvider();
|
752
|
+
} catch (error) {
|
753
|
+
MobileWalletConnect.redirectToWallet(this.metadata.id);
|
754
|
+
return [];
|
755
|
+
}
|
753
756
|
}
|
754
757
|
const addresses = yield this.loadAccounts(__privateGet(this, _network));
|
755
758
|
return addresses.map((item) => item.address);
|
756
759
|
});
|
757
760
|
}
|
758
|
-
|
761
|
+
getAddresses() {
|
759
762
|
return __async(this, null, function* () {
|
760
|
-
if (!this.isReady()) {
|
761
|
-
throw new Error(`${this.metadata.name} is not install!`);
|
762
|
-
}
|
763
763
|
const data = localStorage.getItem("btc-connect-xverse-addresses-" + __privateGet(this, _network));
|
764
764
|
if (data) {
|
765
|
-
|
766
|
-
return addresses.map((item) => item.address);
|
767
|
-
} else {
|
768
|
-
return [];
|
765
|
+
return JSON.parse(data);
|
769
766
|
}
|
767
|
+
return [];
|
770
768
|
});
|
771
769
|
}
|
772
|
-
|
770
|
+
getCurrentAddress() {
|
773
771
|
return __async(this, null, function* () {
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
if (data) {
|
779
|
-
const addresses = JSON.parse(data);
|
780
|
-
return addresses[0].publicKey;
|
781
|
-
} else {
|
782
|
-
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!`);
|
783
776
|
}
|
777
|
+
return address;
|
784
778
|
});
|
785
779
|
}
|
786
|
-
|
780
|
+
getAccounts() {
|
787
781
|
return __async(this, null, function* () {
|
788
782
|
if (!this.isReady()) {
|
789
783
|
throw new Error(`${this.metadata.name} is not install!`);
|
790
784
|
}
|
791
|
-
const addresses = yield this.
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
803
|
-
|
804
|
-
|
805
|
-
|
806
|
-
|
807
|
-
|
808
|
-
|
809
|
-
reject({
|
810
|
-
code: 4001,
|
811
|
-
message: "User rejected the request."
|
812
|
-
});
|
813
|
-
}
|
814
|
-
};
|
815
|
-
signMessage(signMessageOptions).catch((e) => {
|
816
|
-
reject(e);
|
817
|
-
});
|
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"
|
818
803
|
});
|
819
|
-
const modifiedSig = Buffer.from(
|
820
|
-
|
821
|
-
|
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;
|
822
819
|
});
|
823
820
|
}
|
824
821
|
on(event, handler) {
|
@@ -828,9 +825,11 @@ var XverseConnector = class extends BaseConnector {
|
|
828
825
|
return __privateGet(this, _event).removeListener(event, handler);
|
829
826
|
}
|
830
827
|
getProvider() {
|
831
|
-
|
832
|
-
|
828
|
+
const provider = window.BitcoinProvider;
|
829
|
+
if (!provider) {
|
830
|
+
throw new Error(`${this.metadata.name} is not install!`);
|
833
831
|
}
|
832
|
+
return provider;
|
834
833
|
}
|
835
834
|
getNetwork() {
|
836
835
|
return __async(this, null, function* () {
|
@@ -848,9 +847,6 @@ var XverseConnector = class extends BaseConnector {
|
|
848
847
|
sendBitcoin(toAddress, satoshis) {
|
849
848
|
return __async(this, null, function* () {
|
850
849
|
const provider = this.getProvider();
|
851
|
-
if (!provider) {
|
852
|
-
throw new Error(`${this.metadata.name} is not install!`);
|
853
|
-
}
|
854
850
|
const { result } = yield provider.request("sendTransfer", {
|
855
851
|
recipients: [{ address: toAddress, amount: satoshis }]
|
856
852
|
});
|
@@ -3411,6 +3407,16 @@ function getCsnaAccountId(env) {
|
|
3411
3407
|
return csna;
|
3412
3408
|
});
|
3413
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" && !["p2wpkh", "p2sh"].includes(address.addressType)) {
|
3417
|
+
throw new Error("Ledger is only supported for p2wpkh and p2sh address");
|
3418
|
+
}
|
3419
|
+
}
|
3414
3420
|
function executeBTCDepositAndAction(_0) {
|
3415
3421
|
return __async(this, arguments, function* ({
|
3416
3422
|
action,
|
@@ -3423,6 +3429,7 @@ function executeBTCDepositAndAction(_0) {
|
|
3423
3429
|
}) {
|
3424
3430
|
var _a;
|
3425
3431
|
try {
|
3432
|
+
checkDepositDisabledAddress();
|
3426
3433
|
const { getPublicKey } = getBtcProvider();
|
3427
3434
|
const config = yield getConfig(env);
|
3428
3435
|
const btcPublicKey = yield getPublicKey();
|
@@ -4479,7 +4486,7 @@ function setupBTCWallet({
|
|
4479
4486
|
|
4480
4487
|
// src/index.ts
|
4481
4488
|
var getVersion = () => {
|
4482
|
-
return "0.5.
|
4489
|
+
return "0.5.8-beta";
|
4483
4490
|
};
|
4484
4491
|
if (typeof window !== "undefined") {
|
4485
4492
|
window.__BTC_WALLET_VERSION = getVersion();
|