btc-wallet 0.5.6-beta → 0.5.7-beta
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/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" && (address.addressType !== "p2wpkh" || address.addressType !== "p2sh")) {
|
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.7-beta";
|
4483
4490
|
};
|
4484
4491
|
if (typeof window !== "undefined") {
|
4485
4492
|
window.__BTC_WALLET_VERSION = getVersion();
|