@silentswap/react 0.0.92 → 0.0.93

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.
@@ -7,6 +7,113 @@ const AssetsContext = createContext(undefined);
7
7
  let assetsStore = {};
8
8
  let chainsStore = {};
9
9
  let assetsLoaded = false;
10
+ // Match Svelte `A_CAIP2_WHITELIST_GLOBAL` ordering/filtering from `silentswap-v2-ui/src/data.ts`.
11
+ const CHAIN_WHITELIST_GLOBAL = new Set([
12
+ 'eip155:1',
13
+ 'solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp',
14
+ 'eip155:56',
15
+ 'eip155:8453',
16
+ 'eip155:42161',
17
+ 'eip155:9745',
18
+ 'eip155:999',
19
+ 'eip155:43114',
20
+ 'eip155:137',
21
+ 'eip155:747474',
22
+ 'eip155:25',
23
+ 'eip155:59144',
24
+ 'eip155:5000',
25
+ 'eip155:57073',
26
+ 'eip155:10',
27
+ 'eip155:80094',
28
+ 'eip155:1329',
29
+ 'eip155:3073',
30
+ 'eip155:14',
31
+ 'eip155:534352',
32
+ 'eip155:369',
33
+ 'eip155:30',
34
+ 'eip155:98866',
35
+ 'eip155:222222',
36
+ 'eip155:397',
37
+ 'eip155:100',
38
+ 'eip155:143',
39
+ 'eip155:130',
40
+ 'eip155:747',
41
+ 'eip155:146',
42
+ 'eip155:73927',
43
+ 'eip155:60808',
44
+ 'eip155:295',
45
+ 'eip155:1440000',
46
+ 'eip155:42793',
47
+ 'eip155:2222',
48
+ 'eip155:43111',
49
+ 'eip155:252',
50
+ 'eip155:81457',
51
+ 'eip155:1868',
52
+ 'eip155:1116',
53
+ 'eip155:42220',
54
+ 'eip155:4200',
55
+ 'eip155:480',
56
+ 'eip155:324',
57
+ 'eip155:2345',
58
+ 'eip155:2741',
59
+ 'eip155:1729',
60
+ 'eip155:173',
61
+ 'eip155:2525',
62
+ 'eip155:314',
63
+ 'eip155:13371',
64
+ 'eip155:167000',
65
+ ]);
66
+ // Match Svelte `AS_CAIP2_BLACKLIST_INGRESS`.
67
+ const CHAIN_BLACKLIST_INGRESS = new Set([]);
68
+ // Match Svelte `H_EXCLUSIVE_TOKENS`.
69
+ const EXCLUSIVE_TOKENS_BY_CHAIN = {
70
+ 'eip155:9745': new Set([
71
+ 'eip155:9745/erc20:0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb',
72
+ ]),
73
+ 'eip155:747474': new Set([
74
+ 'eip155:747474/slip44:60',
75
+ ]),
76
+ 'eip155:25': new Set([
77
+ 'eip155:25/slip44:394',
78
+ ]),
79
+ };
80
+ function getCaip2FromCaip19(caip19) {
81
+ const slashIndex = caip19.indexOf('/');
82
+ return slashIndex >= 0 ? caip19.slice(0, slashIndex) : '';
83
+ }
84
+ function applySvelteAssetFilters(allAssets, ingress = false) {
85
+ let filteredAssets = allAssets.filter((asset) => {
86
+ const caip2 = getCaip2FromCaip19(asset.caip19);
87
+ return CHAIN_WHITELIST_GLOBAL.size === 0 || CHAIN_WHITELIST_GLOBAL.has(caip2);
88
+ });
89
+ if (ingress) {
90
+ filteredAssets = filteredAssets.filter((asset) => {
91
+ const caip2 = getCaip2FromCaip19(asset.caip19);
92
+ return !CHAIN_BLACKLIST_INGRESS.has(caip2);
93
+ });
94
+ }
95
+ for (const [chainCaip2, exclusiveAssets] of Object.entries(EXCLUSIVE_TOKENS_BY_CHAIN)) {
96
+ if (!exclusiveAssets.size)
97
+ continue;
98
+ filteredAssets = filteredAssets.filter((asset) => {
99
+ const caip2 = getCaip2FromCaip19(asset.caip19);
100
+ return caip2 !== chainCaip2 || exclusiveAssets.has(asset.caip19);
101
+ });
102
+ }
103
+ return filteredAssets;
104
+ }
105
+ function applySvelteChainFilters(allChains) {
106
+ if (CHAIN_WHITELIST_GLOBAL.size === 0) {
107
+ return allChains;
108
+ }
109
+ const filteredChains = {};
110
+ for (const [caip2, chain] of Object.entries(allChains)) {
111
+ if (CHAIN_WHITELIST_GLOBAL.has(caip2)) {
112
+ filteredChains[caip2] = chain;
113
+ }
114
+ }
115
+ return filteredChains;
116
+ }
10
117
  /**
11
118
  * Provider for asset and chain metadata from the SDK
12
119
  */
@@ -26,21 +133,22 @@ export const AssetsProvider = ({ children }) => {
26
133
  // Use SDK methods to get assets and chains
27
134
  const allAssets = getAllAssetsArray();
28
135
  const allChains = getAllChains();
29
- // Convert to our format
30
- const assetsMap = {};
31
- allAssets.forEach((asset) => {
32
- assetsMap[asset.caip19] = asset;
33
- });
34
136
  const chainsMap = {};
35
137
  Object.entries(allChains).forEach(([caip2, chain]) => {
36
138
  chainsMap[caip2] = chain;
37
139
  });
140
+ const filteredChainsMap = applySvelteChainFilters(chainsMap);
141
+ const filteredAssets = applySvelteAssetFilters(allAssets, false);
142
+ const filteredAssetsMap = {};
143
+ filteredAssets.forEach((asset) => {
144
+ filteredAssetsMap[asset.caip19] = asset;
145
+ });
38
146
  // Store globally
39
- assetsStore = assetsMap;
40
- chainsStore = chainsMap;
147
+ assetsStore = filteredAssetsMap;
148
+ chainsStore = filteredChainsMap;
41
149
  assetsLoaded = true;
42
- setAssets(assetsMap);
43
- setChains(chainsMap);
150
+ setAssets(filteredAssetsMap);
151
+ setChains(filteredChainsMap);
44
152
  setLoading(false);
45
153
  }
46
154
  catch (error) {
@@ -54,13 +162,7 @@ export const AssetsProvider = ({ children }) => {
54
162
  return assets[caip19];
55
163
  }, [assets]);
56
164
  const getFilteredAssets = useCallback((filter) => {
57
- let filteredAssets = Object.values(assets);
58
- // Apply ingress filter (exclude blacklisted chains)
59
- if (filter?.ingress) {
60
- // For now, just return all - implement blacklist logic if needed
61
- filteredAssets = filteredAssets;
62
- }
63
- return filteredAssets;
165
+ return applySvelteAssetFilters(Object.values(assets), Boolean(filter?.ingress));
64
166
  }, [assets]);
65
167
  const value = useMemo(() => ({
66
168
  assets,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@silentswap/react",
3
3
  "type": "module",
4
- "version": "0.0.92",
4
+ "version": "0.0.93",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -24,8 +24,8 @@
24
24
  "dependencies": {
25
25
  "@bigmi/core": "^0.6.5",
26
26
  "@ensdomains/ensjs": "^4.2.0",
27
- "@silentswap/sdk": "0.0.92",
28
- "@silentswap/ui-kit": "0.0.92",
27
+ "@silentswap/sdk": "0.0.93",
28
+ "@silentswap/ui-kit": "0.0.93",
29
29
  "@solana/codecs-strings": "^5.1.0",
30
30
  "@solana/kit": "^5.1.0",
31
31
  "@solana/rpc": "^5.1.0",