@dynamic-labs/starknet 2.0.0-alpha.1 → 2.0.0-alpha.10

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/CHANGELOG.md CHANGED
@@ -1,4 +1,137 @@
1
1
 
2
+ ## [2.0.0-alpha.10](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.9...v2.0.0-alpha.10) (2024-03-08)
3
+
4
+
5
+ ### ⚠ BREAKING CHANGES
6
+
7
+ * rename hideEmbeddedWalletUIs prop to hideEmbeddedWalletTra… (#4892)
8
+ * refactor send transaction for multi chain (#4831)
9
+
10
+ ### Features
11
+
12
+ * add sandbox indicator to sdk ([62fd821](https://github.com/dynamic-labs/DynamicAuth/commit/62fd821a895bb54cec4cae3d153aa0056a7e6638))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * coinbase connector and auth fetcher no being set properly ([#4891](https://github.com/dynamic-labs/DynamicAuth/issues/4891)) ([328566f](https://github.com/dynamic-labs/DynamicAuth/commit/328566ff39c38d5b5761ddc655de3a5d08bb567a))
18
+ * fix server side rendering ([#4811](https://github.com/dynamic-labs/DynamicAuth/issues/4811)) ([063dfae](https://github.com/dynamic-labs/DynamicAuth/commit/063dfae8b6750875d2f35dd9709a1f675495f4fb))
19
+ * hide network ([#4885](https://github.com/dynamic-labs/DynamicAuth/issues/4885)) ([ec10c58](https://github.com/dynamic-labs/DynamicAuth/commit/ec10c588218f067e991d5830fc06ec081e4e1d18))
20
+ * network picker on mobile ([#4887](https://github.com/dynamic-labs/DynamicAuth/issues/4887)) ([6e0ab1b](https://github.com/dynamic-labs/DynamicAuth/commit/6e0ab1bc7d138b73373741960a501ff7cf20e3f9))
21
+
22
+
23
+ * refactor send transaction for multi chain ([#4831](https://github.com/dynamic-labs/DynamicAuth/issues/4831)) ([c98444b](https://github.com/dynamic-labs/DynamicAuth/commit/c98444be7935420dda3d8216d03946f5893eb82f))
24
+ * rename hideEmbeddedWalletUIs prop to hideEmbeddedWalletTra… ([#4892](https://github.com/dynamic-labs/DynamicAuth/issues/4892)) ([7cdf519](https://github.com/dynamic-labs/DynamicAuth/commit/7cdf5196b1cd8516de2d456163fe9071956d40d3))
25
+
26
+ ## [2.0.0-alpha.9](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.8...v2.0.0-alpha.9) (2024-03-06)
27
+
28
+
29
+ ### Features
30
+
31
+ * solana connector new sendTransaction method ([#4842](https://github.com/dynamic-labs/DynamicAuth/issues/4842)) ([0b198e3](https://github.com/dynamic-labs/DynamicAuth/commit/0b198e30d83fbbc8d506654d87cbfad403fda289))
32
+ * specify solana network when using phantom redirect deeplinking ([#4863](https://github.com/dynamic-labs/DynamicAuth/issues/4863)) ([fb4ee7c](https://github.com/dynamic-labs/DynamicAuth/commit/fb4ee7cfc0493c9c85b6ccb31954842556c58aa4))
33
+
34
+
35
+ ### Bug Fixes
36
+
37
+ * isLoggedIn should return true even when there is no primary wallet ([#4875](https://github.com/dynamic-labs/DynamicAuth/issues/4875)) ([f396e22](https://github.com/dynamic-labs/DynamicAuth/commit/f396e22b9d809b05ac52194ffa4346f3591d17fe))
38
+ * update btckit network conversion for signPsbt ([a6009e1](https://github.com/dynamic-labs/DynamicAuth/commit/a6009e18c453b4e65545455fea0e52ed7a983b4d))
39
+ * user getting logged out when signing in with email linked to a unavailable wallet ([#4858](https://github.com/dynamic-labs/DynamicAuth/issues/4858)) ([8653e13](https://github.com/dynamic-labs/DynamicAuth/commit/8653e13d2067dd0161e660b4374c08a9fe0bc203))
40
+
41
+ ## [2.0.0-alpha.8](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.7...v2.0.0-alpha.8) (2024-03-04)
42
+
43
+ ## [2.0.0-alpha.7](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.6...v2.0.0-alpha.7) (2024-02-28)
44
+
45
+
46
+ ### ⚠ BREAKING CHANGES
47
+
48
+ * add networkValidationMode and remove enableForcedNetworkValidation (#4778)
49
+
50
+ ### Features
51
+
52
+ * add bitget and okx wallets ([51fab41](https://github.com/dynamic-labs/DynamicAuth/commit/51fab413096fd89ce99c6c617cf4f3f5db9bf44d))
53
+ * add networkValidationMode and remove enableForcedNetworkValidation ([#4778](https://github.com/dynamic-labs/DynamicAuth/issues/4778)) ([ccb9576](https://github.com/dynamic-labs/DynamicAuth/commit/ccb9576c81b2c570185f5126d6d1fcfcbb5ac9e3))
54
+
55
+
56
+ ### Bug Fixes
57
+
58
+ * **GVTY-1243:** non evm onramp urls ([#4791](https://github.com/dynamic-labs/DynamicAuth/issues/4791)) ([fea602e](https://github.com/dynamic-labs/DynamicAuth/commit/fea602e2835b4bb9bc096b96375fa97297bf35f1))
59
+ * revert use enableForcedNetworkValidation on connect-only ([#4750](https://github.com/dynamic-labs/DynamicAuth/issues/4750)) ([#4772](https://github.com/dynamic-labs/DynamicAuth/issues/4772)) ([b871c22](https://github.com/dynamic-labs/DynamicAuth/commit/b871c2295f39230bc34ae1fca5f8817cd9251a17))
60
+ * use correct chromeId for okx and bitget wallets and remove group from coin98 ([#4795](https://github.com/dynamic-labs/DynamicAuth/issues/4795)) ([e63bad7](https://github.com/dynamic-labs/DynamicAuth/commit/e63bad76ed06636151212c915a102359a03b4218))
61
+
62
+ ## [2.0.0-alpha.6](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.5...v2.0.0-alpha.6) (2024-02-26)
63
+
64
+
65
+ ### ⚠ BREAKING CHANGES
66
+
67
+ * setShowAuthFlow opens dynamic profile in non-multi-wallet states
68
+
69
+ ### Features
70
+
71
+ * allow passing prop to hide embedded wallet action confirmation UIs ([#4775](https://github.com/dynamic-labs/DynamicAuth/issues/4775)) ([d7c6a46](https://github.com/dynamic-labs/DynamicAuth/commit/d7c6a4699e41f6a62d31880c3bd0346ebfa0e3ba))
72
+ * make sms mobile keyboard numeric ([#4755](https://github.com/dynamic-labs/DynamicAuth/issues/4755)) ([f36844a](https://github.com/dynamic-labs/DynamicAuth/commit/f36844aeaae240c520181b3242492db8ffc64a50))
73
+ * setShowAuthFlow opens dynamic profile in non-multi-wallet states ([42dbbc0](https://github.com/dynamic-labs/DynamicAuth/commit/42dbbc00a5cebe937dca5a80397cdd3c577f6a45))
74
+
75
+
76
+ ### Bug Fixes
77
+
78
+ * demo one-time codes for solana wallets fix ([#4760](https://github.com/dynamic-labs/DynamicAuth/issues/4760)) ([a5ab2a8](https://github.com/dynamic-labs/DynamicAuth/commit/a5ab2a8bc348a35a898e03db0900bfab88184c17))
79
+ * only store passcode in backend when auto-generated by dynamic ([#4764](https://github.com/dynamic-labs/DynamicAuth/issues/4764)) ([528bedc](https://github.com/dynamic-labs/DynamicAuth/commit/528bedce5cbd3022ddafe4242954a04f5b70ae74))
80
+ * use enableForcedNetworkValidation on connect-only ([#4750](https://github.com/dynamic-labs/DynamicAuth/issues/4750)) ([6299f7c](https://github.com/dynamic-labs/DynamicAuth/commit/6299f7c3ce705ddb19714f6b7a3a488851ed8dde))
81
+
82
+ ## [2.0.0-alpha.5](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.4...v2.0.0-alpha.5) (2024-02-22)
83
+
84
+
85
+ ### ⚠ BREAKING CHANGES
86
+
87
+ * wagmi v2 (#4660)
88
+
89
+ ### Features
90
+
91
+ * wagmi v2 ([#4660](https://github.com/dynamic-labs/DynamicAuth/issues/4660)) ([d8894e6](https://github.com/dynamic-labs/DynamicAuth/commit/d8894e61393b90ccf44904c33394b54286f0f9e9))
92
+
93
+ ## [2.0.0-alpha.4](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.3...v2.0.0-alpha.4) (2024-02-22)
94
+
95
+
96
+ ### ⚠ BREAKING CHANGES
97
+
98
+ * remove wallet connector from callback types (#4730)
99
+ * drop support for walletconnect v1 (#4666)
100
+
101
+ ### Features
102
+
103
+ * add coin98 evm ([1d64f5f](https://github.com/dynamic-labs/DynamicAuth/commit/1d64f5f00885ff671358651fd0251b77a2e05739))
104
+ * add support for solana versioned transactions ([#4721](https://github.com/dynamic-labs/DynamicAuth/issues/4721)) ([25b1643](https://github.com/dynamic-labs/DynamicAuth/commit/25b1643f8addbada09fff5d22e988bdf22038170))
105
+
106
+
107
+ ### Bug Fixes
108
+
109
+ * allow rpc-providers package to use exports based on usage ([#4539](https://github.com/dynamic-labs/DynamicAuth/issues/4539)) ([abdc196](https://github.com/dynamic-labs/DynamicAuth/commit/abdc19641580cbcfe8f9e357c645f8291bc9ed66))
110
+ * coinbasesocial should display coinbase in profile linking section ([#4680](https://github.com/dynamic-labs/DynamicAuth/issues/4680)) ([21cbe2e](https://github.com/dynamic-labs/DynamicAuth/commit/21cbe2e24345a33bc927428c01cc7b5c724e40e5))
111
+ * improve on transaction confirmation step ([#4704](https://github.com/dynamic-labs/DynamicAuth/issues/4704)) ([f2b27cf](https://github.com/dynamic-labs/DynamicAuth/commit/f2b27cfd94452be2eb7e88a298f61ef56985931f))
112
+ * prevent the DynamicMultiWalletPromptsWidget from opening if useris not logged in ([#4701](https://github.com/dynamic-labs/DynamicAuth/issues/4701)) ([2bb35fd](https://github.com/dynamic-labs/DynamicAuth/commit/2bb35fd29b60677e893390f7d47857cd76c73adc))
113
+ * reduce isPreauthorized calls when starknet wallet is connected ([#4710](https://github.com/dynamic-labs/DynamicAuth/issues/4710)) ([ca6a630](https://github.com/dynamic-labs/DynamicAuth/commit/ca6a630dd47a1c116afcd63fe7256ffc745532ab))
114
+ * update sepolia currency symbol ([#4728](https://github.com/dynamic-labs/DynamicAuth/issues/4728)) ([3c228a0](https://github.com/dynamic-labs/DynamicAuth/commit/3c228a03ccc962374ad1dac3ab45af92732ba61a))
115
+ * use overflow clip when available, use hidden by default ([#4696](https://github.com/dynamic-labs/DynamicAuth/issues/4696)) ([29fb2a1](https://github.com/dynamic-labs/DynamicAuth/commit/29fb2a1e48b010c6c1d525403fbdcf7ded068466))
116
+
117
+
118
+ * drop support for walletconnect v1 ([#4666](https://github.com/dynamic-labs/DynamicAuth/issues/4666)) ([4af93e4](https://github.com/dynamic-labs/DynamicAuth/commit/4af93e4f9b95fa4c49bbfda0c1144da1a4a43991))
119
+ * remove wallet connector from callback types ([#4730](https://github.com/dynamic-labs/DynamicAuth/issues/4730)) ([08cb200](https://github.com/dynamic-labs/DynamicAuth/commit/08cb200a09c0fd78d2093d1a60b17089b3b2c2b1))
120
+
121
+ ## [2.0.0-alpha.3](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.2...v2.0.0-alpha.3) (2024-02-13)
122
+
123
+
124
+ ### Bug Fixes
125
+
126
+ * allow any icon to be used in wallet list tabs ([#4678](https://github.com/dynamic-labs/DynamicAuth/issues/4678)) ([eb03603](https://github.com/dynamic-labs/DynamicAuth/commit/eb036031725a91cb28c144b3bdcb5b20b3314038))
127
+
128
+ ## [2.0.0-alpha.2](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.1...v2.0.0-alpha.2) (2024-02-13)
129
+
130
+
131
+ ### Bug Fixes
132
+
133
+ * old iconic dependency version ([#4673](https://github.com/dynamic-labs/DynamicAuth/issues/4673)) ([4a5c448](https://github.com/dynamic-labs/DynamicAuth/commit/4a5c448c251540139f84514328d5f1d31808d75c))
134
+
2
135
  ## [2.0.0-alpha.1](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.0...v2.0.0-alpha.1) (2024-02-12)
3
136
 
4
137
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/starknet",
3
- "version": "2.0.0-alpha.1",
3
+ "version": "2.0.0-alpha.10",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -27,15 +27,14 @@
27
27
  },
28
28
  "dependencies": {
29
29
  "starknet": "5.25.0",
30
- "get-starknet-core": "^3.2.0",
30
+ "get-starknet-core": "3.2.0",
31
31
  "text-encoding": "0.7.0",
32
32
  "starknetkit": "1.1.3",
33
- "@dynamic-labs/sdk-api": "0.0.363",
34
- "@dynamic-labs/rpc-providers": "2.0.0-alpha.1",
35
- "@dynamic-labs/types": "2.0.0-alpha.1",
36
- "@dynamic-labs/utils": "2.0.0-alpha.1",
37
- "@dynamic-labs/wallet-book": "2.0.0-alpha.1",
38
- "@dynamic-labs/wallet-connector-core": "2.0.0-alpha.1"
33
+ "@dynamic-labs/sdk-api": "0.0.376",
34
+ "@dynamic-labs/rpc-provider-starknet": "2.0.0-alpha.10",
35
+ "@dynamic-labs/utils": "2.0.0-alpha.10",
36
+ "@dynamic-labs/wallet-book": "2.0.0-alpha.10",
37
+ "@dynamic-labs/wallet-connector-core": "2.0.0-alpha.10"
39
38
  },
40
39
  "peerDependencies": {}
41
40
  }
package/src/index.cjs CHANGED
@@ -6,6 +6,9 @@ var argentx = require('./wallets/argentx.cjs');
6
6
  var braavos = require('./wallets/braavos.cjs');
7
7
  var argentxMobile = require('./wallets/argentxMobile.cjs');
8
8
  var argentxWeb = require('./wallets/argentxWeb.cjs');
9
+ var bitget = require('./wallets/bitget.cjs');
10
+ var okx = require('./wallets/okx.cjs');
11
+ require('@dynamic-labs/rpc-provider-starknet');
9
12
 
10
13
  /* eslint-disable @typescript-eslint/no-unused-vars */
11
14
  const StarknetWalletConnectors = (props) => [
@@ -13,6 +16,8 @@ const StarknetWalletConnectors = (props) => [
13
16
  braavos.Braavos,
14
17
  argentxMobile.ArgentXMobile,
15
18
  argentxWeb.ArgentXWeb,
19
+ okx.Okx,
20
+ bitget.Bitget,
16
21
  ];
17
22
 
18
23
  exports.StarknetWalletConnectors = StarknetWalletConnectors;
package/src/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import { ArgentX } from './wallets/argentx';
2
+ import '@dynamic-labs/rpc-provider-starknet';
2
3
  export declare const StarknetWalletConnectors: (props: any) => (typeof ArgentX)[];
3
4
  export type { StarknetWalletConnectorType } from './starknetWalletConnector';
4
5
  export type { ArgentXWalletConnectorType } from './wallets/argentx';
package/src/index.js CHANGED
@@ -2,6 +2,9 @@ import { ArgentX } from './wallets/argentx.js';
2
2
  import { Braavos } from './wallets/braavos.js';
3
3
  import { ArgentXMobile } from './wallets/argentxMobile.js';
4
4
  import { ArgentXWeb } from './wallets/argentxWeb.js';
5
+ import { Bitget } from './wallets/bitget.js';
6
+ import { Okx } from './wallets/okx.js';
7
+ import '@dynamic-labs/rpc-provider-starknet';
5
8
 
6
9
  /* eslint-disable @typescript-eslint/no-unused-vars */
7
10
  const StarknetWalletConnectors = (props) => [
@@ -9,6 +12,8 @@ const StarknetWalletConnectors = (props) => [
9
12
  Braavos,
10
13
  ArgentXMobile,
11
14
  ArgentXWeb,
15
+ Okx,
16
+ Bitget,
12
17
  ];
13
18
 
14
19
  export { StarknetWalletConnectors };
@@ -7,7 +7,6 @@ var getStarknetCore = require('get-starknet-core');
7
7
  var starknet = require('starknet');
8
8
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
9
9
  var utils = require('@dynamic-labs/utils');
10
- var rpcProviders = require('@dynamic-labs/rpc-providers');
11
10
  var constants = require('./constants.cjs');
12
11
  var ethereumContractAbi = require('./ethereumContractAbi.cjs');
13
12
  var convertors = require('./utils/convertors.cjs');
@@ -26,26 +25,14 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
26
25
  this.windowKey = windowKey;
27
26
  this.starknetNetworks = opts.starknetNetworks;
28
27
  this.chainRpcProviders = opts.chainRpcProviders;
29
- (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerChainProviders(rpcProviders.ProviderChain.STARKNET, (config) => {
30
- const rpcProviders = {};
31
- if (config === null || config === void 0 ? void 0 : config.starknet) {
32
- const networks = config.starknet;
33
- rpcProviders.starknet = this.createProviderFromConfig(networks);
34
- }
35
- return rpcProviders.starknet;
36
- });
28
+ (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerStarknetProviders();
37
29
  }
38
- createProviderFromConfig(networks) {
39
- return networks.map((network) => {
40
- var _a;
41
- const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
42
- const provider = new starknet.RpcProvider({ nodeUrl: rpcUrl });
43
- return {
44
- chainId: network.chainId.toString(),
45
- chainName: network.name,
46
- provider,
47
- };
48
- });
30
+ // abstracting this method to a function due to some wallets (bitget)
31
+ // having non-standard use of the isConnected flag. This allows for us to use other flags to determine connectivity
32
+ isProviderConnected() {
33
+ var _a;
34
+ const wallet = this.getWallet();
35
+ return (_a = wallet === null || wallet === void 0 ? void 0 : wallet.isConnected) !== null && _a !== void 0 ? _a : false;
49
36
  }
50
37
  getPublicClient() {
51
38
  var _a;
@@ -74,7 +61,7 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
74
61
  if (!wallet) {
75
62
  return Promise.resolve(undefined);
76
63
  }
77
- if (!wallet.isConnected) {
64
+ if (!this.isProviderConnected()) {
78
65
  yield wallet.enable({ starknetVersion: this.STARKNET_VERSION });
79
66
  }
80
67
  return Promise.resolve((_a = wallet.provider) === null || _a === void 0 ? void 0 : _a.getChainId());
@@ -84,7 +71,7 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
84
71
  return _tslib.__awaiter(this, void 0, void 0, function* () {
85
72
  const wallet = this.getWallet();
86
73
  try {
87
- if (wallet && !wallet.isConnected) {
74
+ if (wallet && !this.isProviderConnected()) {
88
75
  yield wallet.enable({ starknetVersion: this.STARKNET_VERSION });
89
76
  localStorage.setItem('dynamic_should_have_wallet', 'true');
90
77
  }
@@ -97,8 +84,10 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
97
84
  fetchPublicAddress() {
98
85
  return _tslib.__awaiter(this, void 0, void 0, function* () {
99
86
  const wallet = this.getWallet();
100
- yield (wallet === null || wallet === void 0 ? void 0 : wallet.isPreauthorized());
101
- yield this.connect();
87
+ if (wallet && !this.isProviderConnected()) {
88
+ yield (wallet === null || wallet === void 0 ? void 0 : wallet.isPreauthorized());
89
+ yield this.connect();
90
+ }
102
91
  return Promise.resolve(wallet === null || wallet === void 0 ? void 0 : wallet.selectedAddress);
103
92
  });
104
93
  }
@@ -179,7 +168,7 @@ class StarknetWalletConnector extends walletConnectorCore.WalletConnectorBase {
179
168
  if (!wallet) {
180
169
  return [];
181
170
  }
182
- const needsReconnection = !wallet.isConnected && (yield wallet.isPreauthorized());
171
+ const needsReconnection = !this.isProviderConnected() && (yield wallet.isPreauthorized());
183
172
  if (needsReconnection) {
184
173
  /**
185
174
  * this is a hack for braavos
@@ -3,8 +3,7 @@ import { ProviderInterface, constants, AccountInterface, RpcProvider } from 'sta
3
3
  import { Chain, WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
4
4
  import { NetworkConfiguration } from '@dynamic-labs/sdk-api';
5
5
  import { WalletBookSchema } from '@dynamic-labs/wallet-book';
6
- import { ChainRpcProviders, StarknetRpcProvider } from '@dynamic-labs/rpc-providers';
7
- import { GenericNetwork } from '@dynamic-labs/types';
6
+ import { IChainRpcProviders } from '@dynamic-labs/rpc-provider-starknet';
8
7
  import { StarknetWalletKey } from './types';
9
8
  type AccountChangeEventHandler = (address: {
10
9
  toString(): string;
@@ -25,11 +24,11 @@ declare abstract class StarknetWalletConnector extends WalletConnectorBase {
25
24
  switchNetworkOnlyFromWallet: boolean;
26
25
  starknetNetworks: NetworkConfiguration[];
27
26
  constructor(name: string, windowKey: StarknetWalletKey, opts: {
28
- chainRpcProviders: typeof ChainRpcProviders;
27
+ chainRpcProviders: IChainRpcProviders;
29
28
  starknetNetworks: NetworkConfiguration[];
30
29
  walletBook: WalletBookSchema;
31
30
  });
32
- createProviderFromConfig(networks: GenericNetwork[]): StarknetRpcProvider[];
31
+ isProviderConnected(): boolean;
33
32
  getPublicClient(): Promise<RpcProvider | undefined>;
34
33
  /**
35
34
  * returns starknet wallet network id
@@ -1,9 +1,8 @@
1
1
  import { __awaiter } from '../_virtual/_tslib.js';
2
2
  import { getStarknet } from 'get-starknet-core';
3
- import { RpcProvider, Contract, cairo, constants } from 'starknet';
3
+ import { Contract, cairo, constants } from 'starknet';
4
4
  import { WalletConnectorBase, logger } from '@dynamic-labs/wallet-connector-core';
5
5
  import { DynamicError, retryableFn } from '@dynamic-labs/utils';
6
- import { ProviderChain } from '@dynamic-labs/rpc-providers';
7
6
  import { ETH_STARKNET_ADDRESS } from './constants.js';
8
7
  import ETH_CONTRACT_ABI from './ethereumContractAbi.js';
9
8
  import { formatTypedDataMessage } from './utils/convertors.js';
@@ -22,26 +21,14 @@ class StarknetWalletConnector extends WalletConnectorBase {
22
21
  this.windowKey = windowKey;
23
22
  this.starknetNetworks = opts.starknetNetworks;
24
23
  this.chainRpcProviders = opts.chainRpcProviders;
25
- (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerChainProviders(ProviderChain.STARKNET, (config) => {
26
- const rpcProviders = {};
27
- if (config === null || config === void 0 ? void 0 : config.starknet) {
28
- const networks = config.starknet;
29
- rpcProviders.starknet = this.createProviderFromConfig(networks);
30
- }
31
- return rpcProviders.starknet;
32
- });
24
+ (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerStarknetProviders();
33
25
  }
34
- createProviderFromConfig(networks) {
35
- return networks.map((network) => {
36
- var _a;
37
- const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
38
- const provider = new RpcProvider({ nodeUrl: rpcUrl });
39
- return {
40
- chainId: network.chainId.toString(),
41
- chainName: network.name,
42
- provider,
43
- };
44
- });
26
+ // abstracting this method to a function due to some wallets (bitget)
27
+ // having non-standard use of the isConnected flag. This allows for us to use other flags to determine connectivity
28
+ isProviderConnected() {
29
+ var _a;
30
+ const wallet = this.getWallet();
31
+ return (_a = wallet === null || wallet === void 0 ? void 0 : wallet.isConnected) !== null && _a !== void 0 ? _a : false;
45
32
  }
46
33
  getPublicClient() {
47
34
  var _a;
@@ -70,7 +57,7 @@ class StarknetWalletConnector extends WalletConnectorBase {
70
57
  if (!wallet) {
71
58
  return Promise.resolve(undefined);
72
59
  }
73
- if (!wallet.isConnected) {
60
+ if (!this.isProviderConnected()) {
74
61
  yield wallet.enable({ starknetVersion: this.STARKNET_VERSION });
75
62
  }
76
63
  return Promise.resolve((_a = wallet.provider) === null || _a === void 0 ? void 0 : _a.getChainId());
@@ -80,7 +67,7 @@ class StarknetWalletConnector extends WalletConnectorBase {
80
67
  return __awaiter(this, void 0, void 0, function* () {
81
68
  const wallet = this.getWallet();
82
69
  try {
83
- if (wallet && !wallet.isConnected) {
70
+ if (wallet && !this.isProviderConnected()) {
84
71
  yield wallet.enable({ starknetVersion: this.STARKNET_VERSION });
85
72
  localStorage.setItem('dynamic_should_have_wallet', 'true');
86
73
  }
@@ -93,8 +80,10 @@ class StarknetWalletConnector extends WalletConnectorBase {
93
80
  fetchPublicAddress() {
94
81
  return __awaiter(this, void 0, void 0, function* () {
95
82
  const wallet = this.getWallet();
96
- yield (wallet === null || wallet === void 0 ? void 0 : wallet.isPreauthorized());
97
- yield this.connect();
83
+ if (wallet && !this.isProviderConnected()) {
84
+ yield (wallet === null || wallet === void 0 ? void 0 : wallet.isPreauthorized());
85
+ yield this.connect();
86
+ }
98
87
  return Promise.resolve(wallet === null || wallet === void 0 ? void 0 : wallet.selectedAddress);
99
88
  });
100
89
  }
@@ -175,7 +164,7 @@ class StarknetWalletConnector extends WalletConnectorBase {
175
164
  if (!wallet) {
176
165
  return [];
177
166
  }
178
- const needsReconnection = !wallet.isConnected && (yield wallet.isPreauthorized());
167
+ const needsReconnection = !this.isProviderConnected() && (yield wallet.isPreauthorized());
179
168
  if (needsReconnection) {
180
169
  /**
181
170
  * this is a hack for braavos
package/src/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { StarknetWindowObject } from 'get-starknet-core';
2
- export type StarknetWalletKey = 'braavos' | 'argentX' | 'argentXMobile' | 'argentWebWallet';
2
+ export type StarknetWalletKey = 'braavos' | 'argentX' | 'argentXMobile' | 'argentWebWallet' | 'okxwallet' | 'bitkeep';
3
3
  export type StarknetWindowKey = `starknet_${StarknetWalletKey}` | 'starknet';
4
4
  type StarknetWindow = {
5
5
  [key in StarknetWindowKey]: StarknetWindowObject;
@@ -8,6 +8,7 @@ var starknetWalletConnector = require('../starknetWalletConnector.cjs');
8
8
  class ArgentX extends starknetWalletConnector["default"] {
9
9
  constructor(opts) {
10
10
  super('Argent X', 'argentX', opts);
11
+ this.overrideKey = 'argentx';
11
12
  }
12
13
  getConnectedAccounts() {
13
14
  return _tslib.__awaiter(this, void 0, void 0, function* () {
@@ -1,6 +1,7 @@
1
1
  import { WalletConnector } from '@dynamic-labs/wallet-connector-core';
2
2
  import StarknetProvider from '../starknetWalletConnector';
3
3
  export declare class ArgentX extends StarknetProvider implements WalletConnector {
4
+ overrideKey: string;
4
5
  constructor(opts: any);
5
6
  getConnectedAccounts(): Promise<string[]>;
6
7
  }
@@ -4,6 +4,7 @@ import StarknetWalletConnector from '../starknetWalletConnector.js';
4
4
  class ArgentX extends StarknetWalletConnector {
5
5
  constructor(opts) {
6
6
  super('Argent X', 'argentX', opts);
7
+ this.overrideKey = 'argentx';
7
8
  }
8
9
  getConnectedAccounts() {
9
10
  return __awaiter(this, void 0, void 0, function* () {
@@ -12,6 +12,7 @@ var argentxBase = require('./argentxBase.cjs');
12
12
  class ArgentXMobile extends argentxBase {
13
13
  constructor(opts) {
14
14
  super('Argent X - Mobile', 'argentXMobile', opts);
15
+ this.overrideKey = 'argentxmobile';
15
16
  this.projectId = opts.projectId;
16
17
  this.appName = opts.appName;
17
18
  this.appLogoUrls = opts.appLogoUrl
@@ -3,6 +3,7 @@ export declare class ArgentXMobile extends ArgentXBase {
3
3
  projectId: string | undefined;
4
4
  appName: string | undefined;
5
5
  appLogoUrls: string[] | undefined;
6
+ overrideKey: string;
6
7
  constructor(opts: any);
7
8
  filter(): boolean;
8
9
  connect(): Promise<void>;
@@ -8,6 +8,7 @@ import ArgentXBase from './argentxBase.js';
8
8
  class ArgentXMobile extends ArgentXBase {
9
9
  constructor(opts) {
10
10
  super('Argent X - Mobile', 'argentXMobile', opts);
11
+ this.overrideKey = 'argentxmobile';
11
12
  this.projectId = opts.projectId;
12
13
  this.appName = opts.appName;
13
14
  this.appLogoUrls = opts.appLogoUrl
@@ -12,6 +12,7 @@ var argentxBase = require('./argentxBase.cjs');
12
12
  class ArgentXWeb extends argentxBase {
13
13
  constructor(opts) {
14
14
  super('Argent X - Web', 'argentWebWallet', opts);
15
+ this.overrideKey = 'argentxweb';
15
16
  }
16
17
  connect() {
17
18
  return _tslib.__awaiter(this, void 0, void 0, function* () {
@@ -1,5 +1,6 @@
1
1
  import ArgentXBase from './argentxBase';
2
2
  export declare class ArgentXWeb extends ArgentXBase {
3
+ overrideKey: string;
3
4
  constructor(opts: any);
4
5
  connect(): Promise<void>;
5
6
  getConnectedAccounts(): Promise<string[]>;
@@ -8,6 +8,7 @@ import ArgentXBase from './argentxBase.js';
8
8
  class ArgentXWeb extends ArgentXBase {
9
9
  constructor(opts) {
10
10
  super('Argent X - Web', 'argentWebWallet', opts);
11
+ this.overrideKey = 'argentxweb';
11
12
  }
12
13
  connect() {
13
14
  return __awaiter(this, void 0, void 0, function* () {
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var starknetWalletConnector = require('../starknetWalletConnector.cjs');
6
+
7
+ class Bitget extends starknetWalletConnector["default"] {
8
+ constructor(opts) {
9
+ super('Bitget Starknet', 'bitkeep', opts);
10
+ this.overrideKey = 'bitgetstarknet';
11
+ }
12
+ // adding this method due to inconsistencies in isConnected flag on the window object
13
+ // the window object shows isConnected=true and no provider/account defined
14
+ isProviderConnected() {
15
+ var _a;
16
+ const wallet = this.getWallet();
17
+ return (_a = (Boolean(wallet === null || wallet === void 0 ? void 0 : wallet.account) && (wallet === null || wallet === void 0 ? void 0 : wallet.isConnected))) !== null && _a !== void 0 ? _a : false;
18
+ }
19
+ }
20
+
21
+ exports.Bitget = Bitget;
@@ -0,0 +1,7 @@
1
+ import type { WalletConnector } from '@dynamic-labs/wallet-connector-core';
2
+ import StarknetProvider from '../starknetWalletConnector';
3
+ export declare class Bitget extends StarknetProvider implements WalletConnector {
4
+ overrideKey: string;
5
+ constructor(opts: any);
6
+ isProviderConnected(): boolean;
7
+ }
@@ -0,0 +1,17 @@
1
+ import StarknetWalletConnector from '../starknetWalletConnector.js';
2
+
3
+ class Bitget extends StarknetWalletConnector {
4
+ constructor(opts) {
5
+ super('Bitget Starknet', 'bitkeep', opts);
6
+ this.overrideKey = 'bitgetstarknet';
7
+ }
8
+ // adding this method due to inconsistencies in isConnected flag on the window object
9
+ // the window object shows isConnected=true and no provider/account defined
10
+ isProviderConnected() {
11
+ var _a;
12
+ const wallet = this.getWallet();
13
+ return (_a = (Boolean(wallet === null || wallet === void 0 ? void 0 : wallet.account) && (wallet === null || wallet === void 0 ? void 0 : wallet.isConnected))) !== null && _a !== void 0 ? _a : false;
14
+ }
15
+ }
16
+
17
+ export { Bitget };
@@ -9,6 +9,7 @@ var starknetWalletConnector = require('../starknetWalletConnector.cjs');
9
9
  class Braavos extends starknetWalletConnector["default"] {
10
10
  constructor(opts) {
11
11
  super('Braavos', 'braavos', opts);
12
+ this.overrideKey = 'braavos';
12
13
  }
13
14
  fetchPublicAddress() {
14
15
  const _super = Object.create(null, {
@@ -1,6 +1,7 @@
1
1
  import type { WalletConnector } from '@dynamic-labs/wallet-connector-core';
2
2
  import StarknetProvider from '../starknetWalletConnector';
3
3
  export declare class Braavos extends StarknetProvider implements WalletConnector {
4
+ overrideKey: string;
4
5
  constructor(opts: any);
5
6
  fetchPublicAddress(): Promise<string | undefined>;
6
7
  }
@@ -5,6 +5,7 @@ import StarknetWalletConnector from '../starknetWalletConnector.js';
5
5
  class Braavos extends StarknetWalletConnector {
6
6
  constructor(opts) {
7
7
  super('Braavos', 'braavos', opts);
8
+ this.overrideKey = 'braavos';
8
9
  }
9
10
  fetchPublicAddress() {
10
11
  const _super = Object.create(null, {
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var starknetWalletConnector = require('../starknetWalletConnector.cjs');
6
+
7
+ class Okx extends starknetWalletConnector["default"] {
8
+ constructor(opts) {
9
+ super('OKX Starknet', 'okxwallet', opts);
10
+ this.overrideKey = 'okxstarknet';
11
+ }
12
+ }
13
+
14
+ exports.Okx = Okx;
@@ -0,0 +1,6 @@
1
+ import type { WalletConnector } from '@dynamic-labs/wallet-connector-core';
2
+ import StarknetProvider from '../starknetWalletConnector';
3
+ export declare class Okx extends StarknetProvider implements WalletConnector {
4
+ overrideKey: string;
5
+ constructor(opts: any);
6
+ }
@@ -0,0 +1,10 @@
1
+ import StarknetWalletConnector from '../starknetWalletConnector.js';
2
+
3
+ class Okx extends StarknetWalletConnector {
4
+ constructor(opts) {
5
+ super('OKX Starknet', 'okxwallet', opts);
6
+ this.overrideKey = 'okxstarknet';
7
+ }
8
+ }
9
+
10
+ export { Okx };