@reown/appkit-bitcoin-react-native 0.0.0-fix-ui-changes-20250829201240 → 0.0.0-fix-singleton-appkit-20251001153745
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/lib/commonjs/adapter.js +21 -1
- package/lib/commonjs/adapter.js.map +1 -1
- package/lib/commonjs/utils/FormatUtil.js +37 -0
- package/lib/commonjs/utils/FormatUtil.js.map +1 -0
- package/lib/module/adapter.js +22 -2
- package/lib/module/adapter.js.map +1 -1
- package/lib/module/utils/FormatUtil.js +33 -0
- package/lib/module/utils/FormatUtil.js.map +1 -0
- package/lib/typescript/adapter.d.ts +3 -2
- package/lib/typescript/adapter.d.ts.map +1 -1
- package/lib/typescript/utils/FormatUtil.d.ts +7 -0
- package/lib/typescript/utils/FormatUtil.d.ts.map +1 -0
- package/package.json +5 -4
- package/src/adapter.ts +24 -2
- package/src/utils/FormatUtil.ts +33 -0
package/lib/commonjs/adapter.js
CHANGED
|
@@ -7,7 +7,8 @@ exports.BitcoinAdapter = void 0;
|
|
|
7
7
|
var _appkitCommonReactNative = require("@reown/appkit-common-react-native");
|
|
8
8
|
var _BitcoinApi = require("./utils/BitcoinApi");
|
|
9
9
|
var _UnitsUtil = require("./utils/UnitsUtil");
|
|
10
|
-
|
|
10
|
+
var _FormatUtil = require("./utils/FormatUtil");
|
|
11
|
+
class BitcoinAdapter extends _appkitCommonReactNative.BitcoinBaseAdapter {
|
|
11
12
|
static supportedNamespace = 'bip122';
|
|
12
13
|
static api = _BitcoinApi.BitcoinApi;
|
|
13
14
|
constructor() {
|
|
@@ -79,6 +80,25 @@ class BitcoinAdapter extends _appkitCommonReactNative.BlockchainAdapter {
|
|
|
79
80
|
getSupportedNamespace() {
|
|
80
81
|
return BitcoinAdapter.supportedNamespace;
|
|
81
82
|
}
|
|
83
|
+
async signMessage(address, message, chainId) {
|
|
84
|
+
if (!this.connector) throw new Error('BitcoinAdapter:signMessage - No active connector');
|
|
85
|
+
const provider = this.connector.getProvider('bip122');
|
|
86
|
+
if (!provider) throw new Error('BitcoinAdapter:signMessage - No active provider');
|
|
87
|
+
const chain = chainId ? `${this.getSupportedNamespace()}:${chainId}` : undefined;
|
|
88
|
+
const {
|
|
89
|
+
signature
|
|
90
|
+
} = await provider.request({
|
|
91
|
+
method: 'signMessage',
|
|
92
|
+
params: {
|
|
93
|
+
message,
|
|
94
|
+
account: address,
|
|
95
|
+
address,
|
|
96
|
+
protocol: 'ecdsa'
|
|
97
|
+
}
|
|
98
|
+
}, chain);
|
|
99
|
+
const formattedSignature = _FormatUtil.FormatUtil.normalizeSignature(signature);
|
|
100
|
+
return formattedSignature.base64;
|
|
101
|
+
}
|
|
82
102
|
}
|
|
83
103
|
exports.BitcoinAdapter = BitcoinAdapter;
|
|
84
104
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_appkitCommonReactNative","require","_BitcoinApi","_UnitsUtil","BitcoinAdapter","
|
|
1
|
+
{"version":3,"names":["_appkitCommonReactNative","require","_BitcoinApi","_UnitsUtil","_FormatUtil","BitcoinAdapter","BitcoinBaseAdapter","supportedNamespace","api","BitcoinApi","constructor","adapterType","getBalance","params","network","address","connector","Error","balanceCaipAddress","getAccounts","find","account","includes","id","toString","balanceAddress","split","Promise","resolve","amount","symbol","utxos","getUTXOs","balance","reduce","acc","utxo","value","formattedBalance","UnitsUtil","parseSatoshis","emit","nativeCurrency","error","switchNetwork","provider","getProvider","switchError","namespaces","getNamespaces","getSupportedNamespace","accounts","disconnect","signMessage","message","chainId","chain","undefined","signature","request","method","protocol","formattedSignature","FormatUtil","normalizeSignature","base64","exports"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.FormatUtil = void 0;
|
|
7
|
+
const FormatUtil = exports.FormatUtil = {
|
|
8
|
+
normalizeSignature(signature) {
|
|
9
|
+
let raw;
|
|
10
|
+
try {
|
|
11
|
+
// Try hex first
|
|
12
|
+
raw = Buffer.from(signature, 'hex');
|
|
13
|
+
if (raw.length > 0 && /^[0-9a-fA-F]+$/.test(signature)) {
|
|
14
|
+
return {
|
|
15
|
+
hex: signature,
|
|
16
|
+
base64: raw.toString('base64')
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
} catch {
|
|
20
|
+
// ignore and try base64
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
// Fallback: assume base64
|
|
24
|
+
raw = Buffer.from(signature, 'base64');
|
|
25
|
+
if (raw.length > 0) {
|
|
26
|
+
return {
|
|
27
|
+
hex: raw.toString('hex'),
|
|
28
|
+
base64: signature
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
} catch {
|
|
32
|
+
// ignore
|
|
33
|
+
}
|
|
34
|
+
throw new Error('Unsupported signature format: expected hex or base64');
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=FormatUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FormatUtil","exports","normalizeSignature","signature","raw","Buffer","from","length","test","hex","base64","toString","Error"],"sourceRoot":"../../../src","sources":["utils/FormatUtil.ts"],"mappings":";;;;;;AAAO,MAAMA,UAAU,GAAAC,OAAA,CAAAD,UAAA,GAAG;EACxBE,kBAAkBA,CAACC,SAAiB,EAAmC;IACrE,IAAIC,GAAW;IAEf,IAAI;MACF;MACAA,GAAG,GAAGC,MAAM,CAACC,IAAI,CAACH,SAAS,EAAE,KAAK,CAAC;MACnC,IAAIC,GAAG,CAACG,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAACC,IAAI,CAACL,SAAS,CAAC,EAAE;QACtD,OAAO;UACLM,GAAG,EAAEN,SAAS;UACdO,MAAM,EAAEN,GAAG,CAACO,QAAQ,CAAC,QAAQ;QAC/B,CAAC;MACH;IACF,CAAC,CAAC,MAAM;MACN;IAAA;IAGF,IAAI;MACF;MACAP,GAAG,GAAGC,MAAM,CAACC,IAAI,CAACH,SAAS,EAAE,QAAQ,CAAC;MACtC,IAAIC,GAAG,CAACG,MAAM,GAAG,CAAC,EAAE;QAClB,OAAO;UACLE,GAAG,EAAEL,GAAG,CAACO,QAAQ,CAAC,KAAK,CAAC;UACxBD,MAAM,EAAEP;QACV,CAAC;MACH;IACF,CAAC,CAAC,MAAM;MACN;IAAA;IAGF,MAAM,IAAIS,KAAK,CAAC,sDAAsD,CAAC;EACzE;AACF,CAAC","ignoreList":[]}
|
package/lib/module/adapter.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { BitcoinBaseAdapter } from '@reown/appkit-common-react-native';
|
|
4
4
|
import { BitcoinApi } from './utils/BitcoinApi';
|
|
5
5
|
import { UnitsUtil } from './utils/UnitsUtil';
|
|
6
|
-
|
|
6
|
+
import { FormatUtil } from './utils/FormatUtil';
|
|
7
|
+
export class BitcoinAdapter extends BitcoinBaseAdapter {
|
|
7
8
|
static supportedNamespace = 'bip122';
|
|
8
9
|
static api = BitcoinApi;
|
|
9
10
|
constructor() {
|
|
@@ -75,5 +76,24 @@ export class BitcoinAdapter extends BlockchainAdapter {
|
|
|
75
76
|
getSupportedNamespace() {
|
|
76
77
|
return BitcoinAdapter.supportedNamespace;
|
|
77
78
|
}
|
|
79
|
+
async signMessage(address, message, chainId) {
|
|
80
|
+
if (!this.connector) throw new Error('BitcoinAdapter:signMessage - No active connector');
|
|
81
|
+
const provider = this.connector.getProvider('bip122');
|
|
82
|
+
if (!provider) throw new Error('BitcoinAdapter:signMessage - No active provider');
|
|
83
|
+
const chain = chainId ? `${this.getSupportedNamespace()}:${chainId}` : undefined;
|
|
84
|
+
const {
|
|
85
|
+
signature
|
|
86
|
+
} = await provider.request({
|
|
87
|
+
method: 'signMessage',
|
|
88
|
+
params: {
|
|
89
|
+
message,
|
|
90
|
+
account: address,
|
|
91
|
+
address,
|
|
92
|
+
protocol: 'ecdsa'
|
|
93
|
+
}
|
|
94
|
+
}, chain);
|
|
95
|
+
const formattedSignature = FormatUtil.normalizeSignature(signature);
|
|
96
|
+
return formattedSignature.base64;
|
|
97
|
+
}
|
|
78
98
|
}
|
|
79
99
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["BitcoinBaseAdapter","BitcoinApi","UnitsUtil","FormatUtil","BitcoinAdapter","supportedNamespace","api","constructor","adapterType","getBalance","params","network","address","connector","Error","balanceCaipAddress","getAccounts","find","account","includes","id","toString","balanceAddress","split","Promise","resolve","amount","symbol","utxos","getUTXOs","balance","reduce","acc","utxo","value","formattedBalance","parseSatoshis","emit","nativeCurrency","error","switchNetwork","provider","getProvider","switchError","namespaces","getNamespaces","getSupportedNamespace","accounts","disconnect","signMessage","message","chainId","chain","undefined","signature","request","method","protocol","formattedSignature","normalizeSignature","base64"],"sourceRoot":"../../src","sources":["adapter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export const FormatUtil = {
|
|
4
|
+
normalizeSignature(signature) {
|
|
5
|
+
let raw;
|
|
6
|
+
try {
|
|
7
|
+
// Try hex first
|
|
8
|
+
raw = Buffer.from(signature, 'hex');
|
|
9
|
+
if (raw.length > 0 && /^[0-9a-fA-F]+$/.test(signature)) {
|
|
10
|
+
return {
|
|
11
|
+
hex: signature,
|
|
12
|
+
base64: raw.toString('base64')
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
} catch {
|
|
16
|
+
// ignore and try base64
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
// Fallback: assume base64
|
|
20
|
+
raw = Buffer.from(signature, 'base64');
|
|
21
|
+
if (raw.length > 0) {
|
|
22
|
+
return {
|
|
23
|
+
hex: raw.toString('hex'),
|
|
24
|
+
base64: signature
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
} catch {
|
|
28
|
+
// ignore
|
|
29
|
+
}
|
|
30
|
+
throw new Error('Unsupported signature format: expected hex or base64');
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=FormatUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["FormatUtil","normalizeSignature","signature","raw","Buffer","from","length","test","hex","base64","toString","Error"],"sourceRoot":"../../../src","sources":["utils/FormatUtil.ts"],"mappings":";;AAAA,OAAO,MAAMA,UAAU,GAAG;EACxBC,kBAAkBA,CAACC,SAAiB,EAAmC;IACrE,IAAIC,GAAW;IAEf,IAAI;MACF;MACAA,GAAG,GAAGC,MAAM,CAACC,IAAI,CAACH,SAAS,EAAE,KAAK,CAAC;MACnC,IAAIC,GAAG,CAACG,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAACC,IAAI,CAACL,SAAS,CAAC,EAAE;QACtD,OAAO;UACLM,GAAG,EAAEN,SAAS;UACdO,MAAM,EAAEN,GAAG,CAACO,QAAQ,CAAC,QAAQ;QAC/B,CAAC;MACH;IACF,CAAC,CAAC,MAAM;MACN;IAAA;IAGF,IAAI;MACF;MACAP,GAAG,GAAGC,MAAM,CAACC,IAAI,CAACH,SAAS,EAAE,QAAQ,CAAC;MACtC,IAAIC,GAAG,CAACG,MAAM,GAAG,CAAC,EAAE;QAClB,OAAO;UACLE,GAAG,EAAEL,GAAG,CAACO,QAAQ,CAAC,KAAK,CAAC;UACxBD,MAAM,EAAEP;QACV,CAAC;MACH;IACF,CAAC,CAAC,MAAM;MACN;IAAA;IAGF,MAAM,IAAIS,KAAK,CAAC,sDAAsD,CAAC;EACzE;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare class BitcoinAdapter extends
|
|
1
|
+
import { BitcoinBaseAdapter, type AppKitNetwork, type CaipAddress, type ChainNamespace, type GetBalanceParams, type GetBalanceResponse } from '@reown/appkit-common-react-native';
|
|
2
|
+
export declare class BitcoinAdapter extends BitcoinBaseAdapter {
|
|
3
3
|
private static supportedNamespace;
|
|
4
4
|
private static api;
|
|
5
5
|
constructor();
|
|
@@ -8,5 +8,6 @@ export declare class BitcoinAdapter extends BlockchainAdapter {
|
|
|
8
8
|
getAccounts(): CaipAddress[] | undefined;
|
|
9
9
|
disconnect(): Promise<void>;
|
|
10
10
|
getSupportedNamespace(): ChainNamespace;
|
|
11
|
+
signMessage(address: string, message: string, chainId?: string): Promise<string>;
|
|
11
12
|
}
|
|
12
13
|
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACxB,MAAM,mCAAmC,CAAC;AAK3C,qBAAa,cAAe,SAAQ,kBAAkB;IACpD,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA4B;IAC7D,OAAO,CAAC,MAAM,CAAC,GAAG,CAAc;;IAS1B,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAsCjE,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1D,WAAW,IAAI,WAAW,EAAE,GAAG,SAAS;IAOxC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,qBAAqB,IAAI,cAAc;IAIjC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoBvF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormatUtil.d.ts","sourceRoot":"","sources":["../../../src/utils/FormatUtil.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;kCACS,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CA+BvE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reown/appkit-bitcoin-react-native",
|
|
3
|
-
"version": "0.0.0-fix-
|
|
3
|
+
"version": "0.0.0-fix-singleton-appkit-20251001153745",
|
|
4
4
|
"main": "lib/commonjs/index.js",
|
|
5
5
|
"types": "lib/typescript/index.d.ts",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -30,16 +30,17 @@
|
|
|
30
30
|
"repository": "https://github.com/reown-com/appkit-react-native",
|
|
31
31
|
"author": "Reown (https://discord.gg/reown)",
|
|
32
32
|
"homepage": "https://reown.com/appkit",
|
|
33
|
-
"license": "
|
|
33
|
+
"license": "SEE LICENSE IN LICENSE.md",
|
|
34
34
|
"bugs": {
|
|
35
35
|
"url": "https://github.com/reown-com/appkit-react-native/issues"
|
|
36
36
|
},
|
|
37
37
|
"publishConfig": {
|
|
38
38
|
"registry": "https://registry.npmjs.org/",
|
|
39
|
-
"access": "public"
|
|
39
|
+
"access": "public",
|
|
40
|
+
"provenance": true
|
|
40
41
|
},
|
|
41
42
|
"dependencies": {
|
|
42
|
-
"@reown/appkit-common-react-native": "0.0.0-fix-
|
|
43
|
+
"@reown/appkit-common-react-native": "0.0.0-fix-singleton-appkit-20251001153745"
|
|
43
44
|
},
|
|
44
45
|
"peerDependencies": {
|
|
45
46
|
"@walletconnect/react-native-compat": ">=2.16.1",
|
package/src/adapter.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
BitcoinBaseAdapter,
|
|
3
3
|
type AppKitNetwork,
|
|
4
4
|
type CaipAddress,
|
|
5
5
|
type ChainNamespace,
|
|
@@ -8,8 +8,9 @@ import {
|
|
|
8
8
|
} from '@reown/appkit-common-react-native';
|
|
9
9
|
import { BitcoinApi } from './utils/BitcoinApi';
|
|
10
10
|
import { UnitsUtil } from './utils/UnitsUtil';
|
|
11
|
+
import { FormatUtil } from './utils/FormatUtil';
|
|
11
12
|
|
|
12
|
-
export class BitcoinAdapter extends
|
|
13
|
+
export class BitcoinAdapter extends BitcoinBaseAdapter {
|
|
13
14
|
private static supportedNamespace: ChainNamespace = 'bip122';
|
|
14
15
|
private static api = BitcoinApi;
|
|
15
16
|
|
|
@@ -89,4 +90,25 @@ export class BitcoinAdapter extends BlockchainAdapter {
|
|
|
89
90
|
getSupportedNamespace(): ChainNamespace {
|
|
90
91
|
return BitcoinAdapter.supportedNamespace;
|
|
91
92
|
}
|
|
93
|
+
|
|
94
|
+
async signMessage(address: string, message: string, chainId?: string): Promise<string> {
|
|
95
|
+
if (!this.connector) throw new Error('BitcoinAdapter:signMessage - No active connector');
|
|
96
|
+
|
|
97
|
+
const provider = this.connector.getProvider('bip122');
|
|
98
|
+
if (!provider) throw new Error('BitcoinAdapter:signMessage - No active provider');
|
|
99
|
+
|
|
100
|
+
const chain = chainId ? `${this.getSupportedNamespace()}:${chainId}` : undefined;
|
|
101
|
+
|
|
102
|
+
const { signature } = (await provider.request(
|
|
103
|
+
{
|
|
104
|
+
method: 'signMessage',
|
|
105
|
+
params: { message, account: address, address, protocol: 'ecdsa' }
|
|
106
|
+
},
|
|
107
|
+
chain
|
|
108
|
+
)) as { address: string; signature: string };
|
|
109
|
+
|
|
110
|
+
const formattedSignature = FormatUtil.normalizeSignature(signature);
|
|
111
|
+
|
|
112
|
+
return formattedSignature.base64;
|
|
113
|
+
}
|
|
92
114
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export const FormatUtil = {
|
|
2
|
+
normalizeSignature(signature: string): { hex: string; base64: string } {
|
|
3
|
+
let raw: Buffer;
|
|
4
|
+
|
|
5
|
+
try {
|
|
6
|
+
// Try hex first
|
|
7
|
+
raw = Buffer.from(signature, 'hex');
|
|
8
|
+
if (raw.length > 0 && /^[0-9a-fA-F]+$/.test(signature)) {
|
|
9
|
+
return {
|
|
10
|
+
hex: signature,
|
|
11
|
+
base64: raw.toString('base64')
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
} catch {
|
|
15
|
+
// ignore and try base64
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
try {
|
|
19
|
+
// Fallback: assume base64
|
|
20
|
+
raw = Buffer.from(signature, 'base64');
|
|
21
|
+
if (raw.length > 0) {
|
|
22
|
+
return {
|
|
23
|
+
hex: raw.toString('hex'),
|
|
24
|
+
base64: signature
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
} catch {
|
|
28
|
+
// ignore
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
throw new Error('Unsupported signature format: expected hex or base64');
|
|
32
|
+
}
|
|
33
|
+
};
|