@reown/appkit-coinbase-react-native 0.0.0-feat-coinbase-20250722174423 → 0.0.0-feat-coinbase-20250722184953
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/providers/CoinbaseProvider.js +29 -3
- package/lib/commonjs/providers/CoinbaseProvider.js.map +1 -1
- package/lib/module/providers/CoinbaseProvider.js +30 -4
- package/lib/module/providers/CoinbaseProvider.js.map +1 -1
- package/lib/typescript/providers/CoinbaseProvider.d.ts +2 -0
- package/lib/typescript/providers/CoinbaseProvider.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/providers/CoinbaseProvider.ts +36 -3
|
@@ -9,6 +9,7 @@ var _walletMobileSdk = require("@coinbase/wallet-mobile-sdk");
|
|
|
9
9
|
var _utils = require("../utils");
|
|
10
10
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
11
|
class CoinbaseProvider extends _events.default {
|
|
12
|
+
chainChangedListeners = new Map();
|
|
12
13
|
constructor(config) {
|
|
13
14
|
super();
|
|
14
15
|
this.config = config;
|
|
@@ -37,9 +38,6 @@ class CoinbaseProvider extends _events.default {
|
|
|
37
38
|
} else {
|
|
38
39
|
accounts = this.provider.selectedAddress ? [this.provider.selectedAddress] : [];
|
|
39
40
|
}
|
|
40
|
-
|
|
41
|
-
//TODO: check switch chain
|
|
42
|
-
|
|
43
41
|
return accounts;
|
|
44
42
|
} catch (error) {
|
|
45
43
|
console.warn('CoinbaseProvider: connect error', error);
|
|
@@ -59,10 +57,38 @@ class CoinbaseProvider extends _events.default {
|
|
|
59
57
|
getChainId() {
|
|
60
58
|
return this.provider.chainId;
|
|
61
59
|
}
|
|
60
|
+
onChainChanged(hexChainId) {
|
|
61
|
+
const chainId = (0, _utils.hexToString)(hexChainId);
|
|
62
|
+
this.emit('chainChanged', {
|
|
63
|
+
chainId
|
|
64
|
+
});
|
|
65
|
+
}
|
|
62
66
|
on(event, listener) {
|
|
67
|
+
if (event === 'chainChanged') {
|
|
68
|
+
// Create middleware that formats the chain ID before calling the original listener
|
|
69
|
+
const chainChangedMiddleware = hexChainId => {
|
|
70
|
+
const chainId = (0, _utils.hexToString)(hexChainId);
|
|
71
|
+
listener(chainId);
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
// Store the mapping between original listener and middleware
|
|
75
|
+
this.chainChangedListeners.set(listener, chainChangedMiddleware);
|
|
76
|
+
return this.provider.on('chainChanged', chainChangedMiddleware);
|
|
77
|
+
}
|
|
63
78
|
return this.provider.on(event, listener);
|
|
64
79
|
}
|
|
65
80
|
off(event, listener) {
|
|
81
|
+
if (event === 'chainChanged') {
|
|
82
|
+
// Get the middleware wrapper for this listener
|
|
83
|
+
const middleware = this.chainChangedListeners.get(listener);
|
|
84
|
+
if (middleware) {
|
|
85
|
+
// Remove the middleware from the provider
|
|
86
|
+
this.provider.off('chainChanged', middleware);
|
|
87
|
+
// Remove the mapping
|
|
88
|
+
this.chainChangedListeners.delete(listener);
|
|
89
|
+
return this;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
66
92
|
return this.provider.off(event, listener);
|
|
67
93
|
}
|
|
68
94
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_events","_interopRequireDefault","require","_walletMobileSdk","_utils","e","__esModule","default","CoinbaseProvider","EventEmitter","constructor","config","configure","hostURL","URL","callbackURL","redirect","hostPackageName","provider","WalletMobileSDKEVMProvider","jsonRpcUrl","rpcUrl","chainId","defaultChain","storage","connect","accounts","isConnected","connected","request","method","params","selectedAddress","error","console","warn","disconnect","Promise","resolve","args","isValidMethod","Error","getChainId","on","event","listener","off","exports"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,gBAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;
|
|
1
|
+
{"version":3,"names":["_events","_interopRequireDefault","require","_walletMobileSdk","_utils","e","__esModule","default","CoinbaseProvider","EventEmitter","chainChangedListeners","Map","constructor","config","configure","hostURL","URL","callbackURL","redirect","hostPackageName","provider","WalletMobileSDKEVMProvider","jsonRpcUrl","rpcUrl","chainId","defaultChain","storage","connect","accounts","isConnected","connected","request","method","params","selectedAddress","error","console","warn","disconnect","Promise","resolve","args","isValidMethod","Error","getChainId","onChainChanged","hexChainId","hexToString","emit","on","event","listener","chainChangedMiddleware","set","off","middleware","get","delete","exports"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import EventEmitter from 'events';
|
|
2
2
|
import { configure, WalletMobileSDKEVMProvider } from '@coinbase/wallet-mobile-sdk';
|
|
3
|
-
import { isValidMethod } from '../utils';
|
|
3
|
+
import { hexToString, isValidMethod } from '../utils';
|
|
4
4
|
export class CoinbaseProvider extends EventEmitter {
|
|
5
|
+
chainChangedListeners = new Map();
|
|
5
6
|
constructor(config) {
|
|
6
7
|
super();
|
|
7
8
|
this.config = config;
|
|
@@ -30,9 +31,6 @@ export class CoinbaseProvider extends EventEmitter {
|
|
|
30
31
|
} else {
|
|
31
32
|
accounts = this.provider.selectedAddress ? [this.provider.selectedAddress] : [];
|
|
32
33
|
}
|
|
33
|
-
|
|
34
|
-
//TODO: check switch chain
|
|
35
|
-
|
|
36
34
|
return accounts;
|
|
37
35
|
} catch (error) {
|
|
38
36
|
console.warn('CoinbaseProvider: connect error', error);
|
|
@@ -52,10 +50,38 @@ export class CoinbaseProvider extends EventEmitter {
|
|
|
52
50
|
getChainId() {
|
|
53
51
|
return this.provider.chainId;
|
|
54
52
|
}
|
|
53
|
+
onChainChanged(hexChainId) {
|
|
54
|
+
const chainId = hexToString(hexChainId);
|
|
55
|
+
this.emit('chainChanged', {
|
|
56
|
+
chainId
|
|
57
|
+
});
|
|
58
|
+
}
|
|
55
59
|
on(event, listener) {
|
|
60
|
+
if (event === 'chainChanged') {
|
|
61
|
+
// Create middleware that formats the chain ID before calling the original listener
|
|
62
|
+
const chainChangedMiddleware = hexChainId => {
|
|
63
|
+
const chainId = hexToString(hexChainId);
|
|
64
|
+
listener(chainId);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
// Store the mapping between original listener and middleware
|
|
68
|
+
this.chainChangedListeners.set(listener, chainChangedMiddleware);
|
|
69
|
+
return this.provider.on('chainChanged', chainChangedMiddleware);
|
|
70
|
+
}
|
|
56
71
|
return this.provider.on(event, listener);
|
|
57
72
|
}
|
|
58
73
|
off(event, listener) {
|
|
74
|
+
if (event === 'chainChanged') {
|
|
75
|
+
// Get the middleware wrapper for this listener
|
|
76
|
+
const middleware = this.chainChangedListeners.get(listener);
|
|
77
|
+
if (middleware) {
|
|
78
|
+
// Remove the middleware from the provider
|
|
79
|
+
this.provider.off('chainChanged', middleware);
|
|
80
|
+
// Remove the mapping
|
|
81
|
+
this.chainChangedListeners.delete(listener);
|
|
82
|
+
return this;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
59
85
|
return this.provider.off(event, listener);
|
|
60
86
|
}
|
|
61
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["EventEmitter","configure","WalletMobileSDKEVMProvider","isValidMethod","CoinbaseProvider","constructor","config","hostURL","URL","callbackURL","redirect","hostPackageName","provider","jsonRpcUrl","rpcUrl","chainId","defaultChain","storage","connect","accounts","isConnected","connected","request","method","params","selectedAddress","error","console","warn","disconnect","Promise","resolve","args","Error","getChainId","on","event","listener","off"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":"AAAA,OAAOA,YAAY,MAAM,QAAQ;AAEjC,SAASC,SAAS,EAAEC,0BAA0B,QAAQ,6BAA6B;AACnF,SAASC,aAAa,QAAQ,UAAU;
|
|
1
|
+
{"version":3,"names":["EventEmitter","configure","WalletMobileSDKEVMProvider","hexToString","isValidMethod","CoinbaseProvider","chainChangedListeners","Map","constructor","config","hostURL","URL","callbackURL","redirect","hostPackageName","provider","jsonRpcUrl","rpcUrl","chainId","defaultChain","storage","connect","accounts","isConnected","connected","request","method","params","selectedAddress","error","console","warn","disconnect","Promise","resolve","args","Error","getChainId","onChainChanged","hexChainId","emit","on","event","listener","chainChangedMiddleware","set","off","middleware","get","delete"],"sourceRoot":"../../../src","sources":["providers/CoinbaseProvider.ts"],"mappings":"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"}
|
|
@@ -5,11 +5,13 @@ import type { CoinbaseProviderConfig } from '../types';
|
|
|
5
5
|
export declare class CoinbaseProvider extends EventEmitter implements Provider {
|
|
6
6
|
private readonly config;
|
|
7
7
|
private provider;
|
|
8
|
+
private chainChangedListeners;
|
|
8
9
|
constructor(config: CoinbaseProviderConfig);
|
|
9
10
|
connect<T = string[]>(): Promise<T>;
|
|
10
11
|
disconnect(): Promise<void>;
|
|
11
12
|
request<T = unknown>(args: RequestArguments): Promise<T>;
|
|
12
13
|
getChainId(): `0x${string}`;
|
|
14
|
+
onChainChanged(hexChainId: `0x${string}`): void;
|
|
13
15
|
on(event: string, listener: (args?: any) => void): any;
|
|
14
16
|
off(event: string, listener: (args?: any) => void): any;
|
|
15
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoinbaseProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/CoinbaseProvider.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,qBAAa,gBAAiB,SAAQ,YAAa,YAAW,QAAQ;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAA6B;
|
|
1
|
+
{"version":3,"file":"CoinbaseProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/CoinbaseProvider.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAEvD,qBAAa,gBAAiB,SAAQ,YAAa,YAAW,QAAQ;IACpE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAChD,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,qBAAqB,CAGzB;gBAEQ,MAAM,EAAE,sBAAsB;IAgBpC,OAAO,CAAC,CAAC,GAAG,MAAM,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC;IAqBnC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC,OAAO,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAQxD,UAAU,IAAI,KAAK,MAAM,EAAE;IAI3B,cAAc,CAAC,UAAU,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI;IAKtC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG;IAiBtD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,GAAG,GAAG;CAgBjE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reown/appkit-coinbase-react-native",
|
|
3
|
-
"version": "0.0.0-feat-coinbase-
|
|
3
|
+
"version": "0.0.0-feat-coinbase-20250722184953",
|
|
4
4
|
"main": "lib/commonjs/index.js",
|
|
5
5
|
"types": "lib/typescript/index.d.ts",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"access": "public"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@reown/appkit-common-react-native": "0.0.0-feat-coinbase-
|
|
38
|
+
"@reown/appkit-common-react-native": "0.0.0-feat-coinbase-20250722184953"
|
|
39
39
|
},
|
|
40
40
|
"peerDependencies": {
|
|
41
41
|
"@coinbase/wallet-mobile-sdk": ">=1.1.2"
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import EventEmitter from 'events';
|
|
2
2
|
import type { Provider, RequestArguments } from '@reown/appkit-common-react-native';
|
|
3
3
|
import { configure, WalletMobileSDKEVMProvider } from '@coinbase/wallet-mobile-sdk';
|
|
4
|
-
import { isValidMethod } from '../utils';
|
|
4
|
+
import { hexToString, isValidMethod } from '../utils';
|
|
5
5
|
import type { CoinbaseProviderConfig } from '../types';
|
|
6
6
|
|
|
7
7
|
export class CoinbaseProvider extends EventEmitter implements Provider {
|
|
8
8
|
private readonly config: CoinbaseProviderConfig;
|
|
9
9
|
private provider: WalletMobileSDKEVMProvider;
|
|
10
|
+
private chainChangedListeners = new Map<
|
|
11
|
+
(args?: any) => void,
|
|
12
|
+
(hexChainId: `0x${string}`) => void
|
|
13
|
+
>();
|
|
10
14
|
|
|
11
15
|
constructor(config: CoinbaseProviderConfig) {
|
|
12
16
|
super();
|
|
@@ -38,8 +42,6 @@ export class CoinbaseProvider extends EventEmitter implements Provider {
|
|
|
38
42
|
accounts = this.provider.selectedAddress ? [this.provider.selectedAddress] : [];
|
|
39
43
|
}
|
|
40
44
|
|
|
41
|
-
//TODO: check switch chain
|
|
42
|
-
|
|
43
45
|
return accounts as T;
|
|
44
46
|
} catch (error) {
|
|
45
47
|
console.warn('CoinbaseProvider: connect error', error);
|
|
@@ -65,11 +67,42 @@ export class CoinbaseProvider extends EventEmitter implements Provider {
|
|
|
65
67
|
return this.provider.chainId as `0x${string}`;
|
|
66
68
|
}
|
|
67
69
|
|
|
70
|
+
onChainChanged(hexChainId: `0x${string}`): void {
|
|
71
|
+
const chainId = hexToString(hexChainId);
|
|
72
|
+
this.emit('chainChanged', { chainId });
|
|
73
|
+
}
|
|
74
|
+
|
|
68
75
|
override on(event: string, listener: (args?: any) => void): any {
|
|
76
|
+
if (event === 'chainChanged') {
|
|
77
|
+
// Create middleware that formats the chain ID before calling the original listener
|
|
78
|
+
const chainChangedMiddleware = (hexChainId: `0x${string}`) => {
|
|
79
|
+
const chainId = hexToString(hexChainId);
|
|
80
|
+
listener(chainId);
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
// Store the mapping between original listener and middleware
|
|
84
|
+
this.chainChangedListeners.set(listener, chainChangedMiddleware);
|
|
85
|
+
|
|
86
|
+
return this.provider.on('chainChanged', chainChangedMiddleware);
|
|
87
|
+
}
|
|
88
|
+
|
|
69
89
|
return this.provider.on(event, listener);
|
|
70
90
|
}
|
|
71
91
|
|
|
72
92
|
override off(event: string, listener: (args?: any) => void): any {
|
|
93
|
+
if (event === 'chainChanged') {
|
|
94
|
+
// Get the middleware wrapper for this listener
|
|
95
|
+
const middleware = this.chainChangedListeners.get(listener);
|
|
96
|
+
if (middleware) {
|
|
97
|
+
// Remove the middleware from the provider
|
|
98
|
+
this.provider.off('chainChanged', middleware);
|
|
99
|
+
// Remove the mapping
|
|
100
|
+
this.chainChangedListeners.delete(listener);
|
|
101
|
+
|
|
102
|
+
return this;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
73
106
|
return this.provider.off(event, listener);
|
|
74
107
|
}
|
|
75
108
|
}
|