@reown/appkit-core 0.0.3 → 0.0.5

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.
Files changed (81) hide show
  1. package/dist/esm/exports/react.js +9 -7
  2. package/dist/esm/exports/react.js.map +1 -1
  3. package/dist/esm/src/controllers/AccountController.js +10 -6
  4. package/dist/esm/src/controllers/AccountController.js.map +1 -1
  5. package/dist/esm/src/controllers/ApiController.js +6 -5
  6. package/dist/esm/src/controllers/ApiController.js.map +1 -1
  7. package/dist/esm/src/controllers/BlockchainApiController.js +9 -7
  8. package/dist/esm/src/controllers/BlockchainApiController.js.map +1 -1
  9. package/dist/esm/src/controllers/ChainController.js +18 -13
  10. package/dist/esm/src/controllers/ChainController.js.map +1 -1
  11. package/dist/esm/src/controllers/ConnectionController.js +6 -5
  12. package/dist/esm/src/controllers/ConnectionController.js.map +1 -1
  13. package/dist/esm/src/controllers/ConnectorController.js +48 -21
  14. package/dist/esm/src/controllers/ConnectorController.js.map +1 -1
  15. package/dist/esm/src/controllers/EnsController.js +9 -10
  16. package/dist/esm/src/controllers/EnsController.js.map +1 -1
  17. package/dist/esm/src/controllers/EventsController.js +1 -1
  18. package/dist/esm/src/controllers/EventsController.js.map +1 -1
  19. package/dist/esm/src/controllers/ModalController.js +4 -5
  20. package/dist/esm/src/controllers/ModalController.js.map +1 -1
  21. package/dist/esm/src/controllers/NetworkController.js +4 -10
  22. package/dist/esm/src/controllers/NetworkController.js.map +1 -1
  23. package/dist/esm/src/controllers/OptionsController.js +7 -5
  24. package/dist/esm/src/controllers/OptionsController.js.map +1 -1
  25. package/dist/esm/src/controllers/SendController.js +5 -6
  26. package/dist/esm/src/controllers/SendController.js.map +1 -1
  27. package/dist/esm/src/controllers/SwapController.js +8 -7
  28. package/dist/esm/src/controllers/SwapController.js.map +1 -1
  29. package/dist/esm/src/controllers/TransactionsController.js +3 -3
  30. package/dist/esm/src/controllers/TransactionsController.js.map +1 -1
  31. package/dist/esm/src/utils/CoreHelperUtil.js +7 -0
  32. package/dist/esm/src/utils/CoreHelperUtil.js.map +1 -1
  33. package/dist/esm/src/utils/SwapApiUtil.js +4 -4
  34. package/dist/esm/src/utils/SwapApiUtil.js.map +1 -1
  35. package/dist/esm/tests/controllers/EnsController.test.js +4 -9
  36. package/dist/esm/tests/controllers/EnsController.test.js.map +1 -1
  37. package/dist/esm/tests/controllers/NetworkController.test.js +16 -16
  38. package/dist/esm/tests/controllers/NetworkController.test.js.map +1 -1
  39. package/dist/esm/tests/controllers/OptionsController.test.js +1 -1
  40. package/dist/esm/tests/controllers/OptionsController.test.js.map +1 -1
  41. package/dist/esm/tests/controllers/SwapController.test.js +1 -1
  42. package/dist/esm/tests/controllers/SwapController.test.js.map +1 -1
  43. package/dist/esm/tests/controllers/TransactionsController.test.js +3 -3
  44. package/dist/esm/tests/controllers/TransactionsController.test.js.map +1 -1
  45. package/dist/esm/tests/hooks/react.test.js +68 -0
  46. package/dist/esm/tests/hooks/react.test.js.map +1 -0
  47. package/dist/esm/tests/utils/EnsUtil.test.js +23 -0
  48. package/dist/esm/tests/utils/EnsUtil.test.js.map +1 -0
  49. package/dist/esm/tests/utils/FetchUtil.test.js +175 -0
  50. package/dist/esm/tests/utils/FetchUtil.test.js.map +1 -0
  51. package/dist/esm/tests/utils/OptionsUtil.test.js +20 -0
  52. package/dist/esm/tests/utils/OptionsUtil.test.js.map +1 -0
  53. package/dist/esm/tests/utils/RouterUtil.test.js +62 -0
  54. package/dist/esm/tests/utils/RouterUtil.test.js.map +1 -0
  55. package/dist/esm/tests/utils/StorageUtil.test.js +145 -0
  56. package/dist/esm/tests/utils/StorageUtil.test.js.map +1 -0
  57. package/dist/esm/tests/utils/SwapApiUtil.test.js +196 -0
  58. package/dist/esm/tests/utils/SwapApiUtil.test.js.map +1 -0
  59. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  60. package/dist/types/exports/react.d.ts +1 -1
  61. package/dist/types/src/controllers/AccountController.d.ts +1 -0
  62. package/dist/types/src/controllers/ApiController.d.ts +1 -1
  63. package/dist/types/src/controllers/ChainController.d.ts +3 -2
  64. package/dist/types/src/controllers/ConnectionController.d.ts +1 -1
  65. package/dist/types/src/controllers/ConnectorController.d.ts +2 -2
  66. package/dist/types/src/controllers/EnsController.d.ts +3 -2
  67. package/dist/types/src/controllers/EventsController.d.ts +1 -1
  68. package/dist/types/src/controllers/NetworkController.d.ts +1 -1
  69. package/dist/types/src/controllers/OptionsController.d.ts +5 -1
  70. package/dist/types/src/controllers/SwapController.d.ts +3 -3
  71. package/dist/types/src/utils/CoreHelperUtil.d.ts +5 -2
  72. package/dist/types/src/utils/TypeUtil.d.ts +5 -4
  73. package/dist/types/tests/hooks/react.test.d.ts +1 -0
  74. package/dist/types/tests/mocks/SwapController.d.ts +3 -3
  75. package/dist/types/tests/utils/EnsUtil.test.d.ts +1 -0
  76. package/dist/types/tests/utils/FetchUtil.test.d.ts +1 -0
  77. package/dist/types/tests/utils/OptionsUtil.test.d.ts +1 -0
  78. package/dist/types/tests/utils/RouterUtil.test.d.ts +1 -0
  79. package/dist/types/tests/utils/StorageUtil.test.d.ts +1 -0
  80. package/dist/types/tests/utils/SwapApiUtil.test.d.ts +1 -0
  81. package/package.json +4 -4
@@ -0,0 +1,196 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
2
+ import { SwapApiUtil } from '../../src/utils/SwapApiUtil';
3
+ import { ChainController } from '../../src/controllers/ChainController';
4
+ import { BlockchainApiController } from '../../src/controllers/BlockchainApiController';
5
+ import { OptionsController } from '../../src/controllers/OptionsController';
6
+ import { ConnectionController } from '../../src/controllers/ConnectionController';
7
+ import { AccountController } from '../../src/controllers/AccountController';
8
+ import { NetworkController } from '../../src/controllers/NetworkController';
9
+ // Mock the controllers
10
+ vi.mock('../../src/controllers/ChainController');
11
+ vi.mock('../../src/controllers/BlockchainApiController');
12
+ vi.mock('../../src/controllers/OptionsController');
13
+ vi.mock('../../src/controllers/ConnectionController');
14
+ vi.mock('../../src/controllers/AccountController');
15
+ vi.mock('../../src/controllers/NetworkController');
16
+ const mockSolanaNetwork = {
17
+ id: 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',
18
+ chainNamespace: 'solana',
19
+ chainId: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',
20
+ name: 'Solana',
21
+ explorerUrl: 'https://explorer.solana.com',
22
+ rpcUrl: 'https://api.mainnet-beta.solana.com',
23
+ currency: 'SOL'
24
+ };
25
+ const mockEthereumNetwork = {
26
+ id: 'eip155:1',
27
+ chainNamespace: 'eip155',
28
+ chainId: '1',
29
+ name: 'Ethereum',
30
+ explorerUrl: 'https://etherscan.io',
31
+ rpcUrl: 'https://mainnet.infura.io/v3/YOUR-PROJECT-ID',
32
+ currency: 'ETH'
33
+ };
34
+ describe('SwapApiUtil', () => {
35
+ beforeEach(() => {
36
+ vi.resetAllMocks();
37
+ });
38
+ afterEach(() => {
39
+ vi.restoreAllMocks();
40
+ });
41
+ describe('getTokenList', () => {
42
+ it('should return a list of tokens', async () => {
43
+ const mockTokens = [{ address: '0x123', symbol: 'TEST', name: 'Test Token', decimals: 18 }];
44
+ ChainController.state.activeCaipNetwork = mockEthereumNetwork;
45
+ OptionsController.state.projectId = 'test-project-id';
46
+ BlockchainApiController.fetchSwapTokens = vi.fn().mockResolvedValue({ tokens: mockTokens });
47
+ const result = await SwapApiUtil.getTokenList();
48
+ expect(BlockchainApiController.fetchSwapTokens).toHaveBeenCalledWith({
49
+ chainId: 'eip155:1',
50
+ projectId: 'test-project-id'
51
+ });
52
+ expect(result).toEqual([
53
+ {
54
+ ...mockTokens[0],
55
+ eip2612: false,
56
+ quantity: { decimals: '0', numeric: '0' },
57
+ price: 0,
58
+ value: 0
59
+ }
60
+ ]);
61
+ });
62
+ it('should return an empty array if no tokens are fetched', async () => {
63
+ BlockchainApiController.fetchSwapTokens = vi.fn().mockResolvedValue({ tokens: null });
64
+ const result = await SwapApiUtil.getTokenList();
65
+ expect(result).toEqual([]);
66
+ });
67
+ });
68
+ describe('fetchGasPrice', () => {
69
+ it('should fetch gas price for EVM chain', async () => {
70
+ ChainController.state.activeCaipNetwork = mockEthereumNetwork;
71
+ OptionsController.state.projectId = 'test-project-id';
72
+ BlockchainApiController.fetchGasPrice = vi
73
+ .fn()
74
+ .mockResolvedValue({ standard: '20', fast: '25', instant: '30' });
75
+ const result = await SwapApiUtil.fetchGasPrice();
76
+ expect(BlockchainApiController.fetchGasPrice).toHaveBeenCalledWith({
77
+ projectId: 'test-project-id',
78
+ chainId: 'eip155:1'
79
+ });
80
+ expect(result).toEqual({ standard: '20', fast: '25', instant: '30' });
81
+ });
82
+ it('should fetch gas price for Solana chain', async () => {
83
+ ChainController.state.activeCaipNetwork = mockSolanaNetwork;
84
+ ConnectionController.estimateGas = vi.fn().mockResolvedValue(5000);
85
+ const result = await SwapApiUtil.fetchGasPrice();
86
+ expect(ConnectionController.estimateGas).toHaveBeenCalledWith({ chainNamespace: 'solana' });
87
+ expect(result).toEqual({ standard: '5000', fast: '5000', instant: '5000' });
88
+ });
89
+ it('should return null if there is an error', async () => {
90
+ ChainController.state.activeCaipNetwork = {
91
+ id: 'eip155:1',
92
+ chainNamespace: 'eip155',
93
+ chainId: '1',
94
+ name: 'Ethereum',
95
+ currency: 'ETH',
96
+ explorerUrl: 'https://etherscan.io',
97
+ rpcUrl: 'https://mainnet.infura.io/v3/YOUR-PROJECT-ID'
98
+ };
99
+ BlockchainApiController.fetchGasPrice = vi.fn().mockRejectedValue(new Error('API Error'));
100
+ const result = await SwapApiUtil.fetchGasPrice();
101
+ expect(result).toBeNull();
102
+ });
103
+ });
104
+ describe('fetchSwapAllowance', () => {
105
+ it('should fetch and return swap allowance', async () => {
106
+ OptionsController.state.projectId = 'test-project-id';
107
+ BlockchainApiController.fetchSwapAllowance = vi
108
+ .fn()
109
+ .mockResolvedValue({ allowance: '1000000000000000000' });
110
+ ConnectionController.parseUnits = vi.fn().mockReturnValue(BigInt('500000000000000000'));
111
+ const result = await SwapApiUtil.fetchSwapAllowance({
112
+ tokenAddress: '0x123',
113
+ userAddress: '0x456',
114
+ sourceTokenAmount: '0.5',
115
+ sourceTokenDecimals: 18
116
+ });
117
+ expect(BlockchainApiController.fetchSwapAllowance).toHaveBeenCalledWith({
118
+ projectId: 'test-project-id',
119
+ tokenAddress: '0x123',
120
+ userAddress: '0x456'
121
+ });
122
+ expect(result).toBe(true);
123
+ });
124
+ it('should return false if allowance is less than source token amount', async () => {
125
+ BlockchainApiController.fetchSwapAllowance = vi
126
+ .fn()
127
+ .mockResolvedValue({ allowance: '100000000000000000' });
128
+ ConnectionController.parseUnits = vi.fn().mockReturnValue(BigInt('500000000000000000'));
129
+ const result = await SwapApiUtil.fetchSwapAllowance({
130
+ tokenAddress: '0x123',
131
+ userAddress: '0x456',
132
+ sourceTokenAmount: '0.5',
133
+ sourceTokenDecimals: 18
134
+ });
135
+ expect(result).toBe(false);
136
+ });
137
+ });
138
+ describe('getMyTokensWithBalance', () => {
139
+ it('should fetch and return tokens with balance', async () => {
140
+ AccountController.state.address = '0x123';
141
+ ChainController.state.activeCaipNetwork = mockEthereumNetwork;
142
+ BlockchainApiController.getBalance = vi.fn().mockResolvedValue({
143
+ balances: [{ address: '0x456', quantity: { decimals: '18', numeric: '1.5' } }]
144
+ });
145
+ NetworkController.getActiveNetworkTokenAddress = vi.fn().mockReturnValue('0x789');
146
+ const result = await SwapApiUtil.getMyTokensWithBalance();
147
+ expect(BlockchainApiController.getBalance).toHaveBeenCalledWith('0x123', 'eip155:1', undefined);
148
+ expect(AccountController.setTokenBalance).toHaveBeenCalled();
149
+ expect(result).toEqual([
150
+ {
151
+ address: '0x456',
152
+ quantity: { decimals: '18', numeric: '1.5' },
153
+ decimals: 18,
154
+ logoUri: undefined,
155
+ eip2612: false
156
+ }
157
+ ]);
158
+ });
159
+ it('should return an empty array if no address or active network', async () => {
160
+ AccountController.state.address = undefined;
161
+ ChainController.state.activeCaipNetwork = undefined;
162
+ const result = await SwapApiUtil.getMyTokensWithBalance();
163
+ expect(result).toEqual([]);
164
+ });
165
+ });
166
+ describe('mapBalancesToSwapTokens', () => {
167
+ it('should map balances to swap tokens', () => {
168
+ const balances = [
169
+ {
170
+ address: '0x123',
171
+ quantity: { decimals: '18', numeric: '1.5' },
172
+ iconUrl: 'https://example.com/icon.png'
173
+ }
174
+ ];
175
+ NetworkController.getActiveNetworkTokenAddress = vi.fn().mockReturnValue('0x789');
176
+ const result = SwapApiUtil.mapBalancesToSwapTokens(balances);
177
+ expect(result).toEqual([
178
+ {
179
+ address: '0x123',
180
+ quantity: { decimals: '18', numeric: '1.5' },
181
+ decimals: 18,
182
+ logoUri: 'https://example.com/icon.png',
183
+ eip2612: false,
184
+ iconUrl: 'https://example.com/icon.png'
185
+ }
186
+ ]);
187
+ });
188
+ it('should use network token address if balance address is undefined', () => {
189
+ const balances = [{ address: undefined, quantity: { decimals: '18', numeric: '1.5' } }];
190
+ NetworkController.getActiveNetworkTokenAddress = vi.fn().mockReturnValue('0x789');
191
+ const result = SwapApiUtil.mapBalancesToSwapTokens(balances);
192
+ expect(result[0]?.address).toBe('0x789');
193
+ });
194
+ });
195
+ });
196
+ //# sourceMappingURL=SwapApiUtil.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SwapApiUtil.test.js","sourceRoot":"","sources":["../../../../tests/utils/SwapApiUtil.test.ts"],"names":[],"mappings":"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"}