Compare commits

...
Author SHA1 Message Date
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
3e526d46fa Version Packages (#2036)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-12-05 21:14:32 -08:00
Manan TankandGitHub a36c7e8331 Update typedoc setup, JSDoc improvements (#1842)
Signed-off-by: Manan Tank <[email protected]>
2023-12-05 19:00:11 +00:00
7bb054e45c [wallets] Remove barrel files (#2040)
Co-authored-by: Manan Tank <[email protected]>
2023-12-05 15:22:22 +00:00
cd87be4a24 [react-core] Remove barrel files (#2039)
Co-authored-by: Manan Tank <[email protected]>
2023-12-05 15:17:24 +00:00
Joaquim VergesandGitHub aefc4cda4c [SDK] Add migration role (#2051) 2023-12-05 06:08:30 +00:00
YashandGitHub cfe81b4432 [SDK] Update implementation (#2050) 2023-12-05 05:33:40 +00:00
Jonas DanielsandGitHub 72c0bb10d6 fix(contract-roles): ensure connected wallet address is removed last (#2049) 2023-12-05 01:27:07 +00:00
YashandGitHub ca618ea0c9 [SDK] Metadata role for nft base contracts (#2048) 2023-12-04 23:31:02 +00:00
YashandGitHub d20e789856 [SDK] Update publisher and registry (#2044) 2023-12-04 19:11:29 +00:00
Manan TankandGitHub a135857c7a [react] Fix EmbeddedWalletConfigOptions type (#2045) 2023-12-04 17:44:24 +00:00
Manan TankandGitHub 34546c24c7 improved smart wallet autoconnect (#2043) 2023-12-04 15:58:41 +00:00
Manan TankandGitHub 61c62b3f07 [react, wallets] JSDoc Improvements, Type exports for autogenerated docs (#2042) 2023-12-04 13:57:22 +00:00
Jonas DanielsandGitHub f2390b64e8 testing(merkletree): add additional tests back (#2041) 2023-12-04 03:41:03 +00:00
4ae1cd63bb [wallet, react] Add OneKey wallet (#1938)
Co-authored-by: Manan Tank <[email protected]>
2023-12-03 12:00:32 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
a4339818a0 Version Packages (#1998)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-12-01 06:55:35 -08:00
Manan TankandGitHub b3394277c7 [react] JSDoc improvements (#1987) 2023-12-01 13:13:30 +00:00
Manan TankandGitHub fdf19b0a26 [react] Do not swallow error in useEmbeddedWallet() connect (#2031) 2023-12-01 12:42:39 +00:00
FirekeeperandGitHub 9798a31a9a [Unity] Pass down authOptions with smart wallet connections (#2026) 2023-11-30 00:59:22 +00:00
Kien NgoandGitHub f93bd325e1 [Storage] Catch error when converting invalid IPFS URIs (#2021) 2023-11-29 21:35:50 +00:00
iketwandGitHub 97ba1fbd42 [RN] Adds version header to ews calls (#2025) 2023-11-29 20:43:35 +00:00
Kien NgoandGitHub 28fc3736aa [storage] Add Base Sepolia to defaultChains (#2024) 2023-11-29 20:02:58 +00:00
Kien NgoandGitHub 06805217c2 [chains] Add Eth Sepolia to defaultChains (#2023) 2023-11-29 15:24:54 +00:00
Jonas DanielsandGitHub b833250053 chore(chains): add & update chains (#2019) 2023-11-28 22:07:14 +00:00
iketwandGitHub 9455912932 [ReactCore] Share WalletConnecthandler in react core (#2016) 2023-11-28 16:00:48 +00:00
Manan TankandGitHub 4c488aa31f [react-core] Fix auto-connecting a personal wallet for smart/safe wallet (#2015) 2023-11-28 12:17:28 +00:00
Joaquim VergesandGitHub b0ecfd2d8d [SDK] propagate isPartialABI (#2012) 2023-11-27 20:30:32 +00:00
2b4f1c8e55 [wallet, react] Add Crypto.com Defi wallet (#1928)
Co-authored-by: Manan Tank <[email protected]>
2023-11-27 15:16:30 +00:00
e79b293562 [react-core] Add hook: useBalanceForAddress (#2007)
Co-authored-by: Manan Tank <[email protected]>
2023-11-27 14:43:32 +00:00
Joaquim VergesandGitHub 2861dff1f0 [SDK] dont fetch metadata from CDN for local nodes (#2011) 2023-11-27 06:02:33 +00:00
Kien NgoandGitHub 61b6a00214 Fix typo in comment (#2010) 2023-11-27 05:35:30 +00:00
Joaquim VergesandGitHub b02fb91a54 [SDK] Add missing roles from new contracts (#2009) 2023-11-26 04:51:52 +00:00
Joaquim VergesandGitHub 8bf3be88be [SDK] Enable deployments for older AccountFactory contracts (#2005) 2023-11-24 23:02:15 +00:00
Joaquim VergesandGitHub fb5095bff5 [SDK] Handle other possible undefined cases for unknown chains (#2004) 2023-11-23 21:24:05 +00:00
Joaquim VergesandGitHub d28097f508 [SDK] Fix undefined error for unknow chains (#2003) 2023-11-23 17:31:11 +00:00
iketwandGitHub a27b10c5c3 [React] Do not set disconnected if connecting (#2001) 2023-11-23 16:12:39 +00:00
8c2d4e5ea7 [wallet, react] Add Rabby wallet (browser extension) (#1926)
Co-authored-by: Manan Tank <[email protected]>
2023-11-22 18:33:15 +00:00
Manan TankandGitHub 507496627b [react] Fix SmartWallet + MagicLink social login connection, Fix WalletIcon in CW (#1997) 2023-11-22 18:14:30 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
f5b89987af Version Packages (#1991)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-11-22 07:31:24 -08:00
Manan TankandGitHub 4bb8f5b15e Revert "add ConnectEmbed + Fix double connection issue" (#1996) 2023-11-22 15:11:43 +00:00
FirekeeperandGitHub 914befda16 [Unity] Add new tx/block processing methods to match static C# counterparts (#1995) 2023-11-22 11:31:25 +00:00
Joaquim VergesandGitHub b5bbe2bd43 [Wallets] Look at last 10 blocks for recently submitted userOp (#1992) 2023-11-22 04:52:24 +00:00
Kien NgoandGitHub 68288436ac [React, React native] Remove overrides prop from Web3Button (#1994) 2023-11-22 01:23:55 +00:00
Jonas DanielsandGitHub d4ce855e5f chore(chains): update chains & deprecate allChains (#1990) 2023-11-22 01:13:04 +00:00
Kien NgoandGitHub 47b0ed5171 [sdk, chains] Add Arb Sepolia to defaultChains (#1967) 2023-11-21 22:05:17 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
00b9eea9ec Version Packages (#1980)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-11-21 13:37:37 -08:00
iketwandGitHub bf27b88728 [RN] Improves error messages for embedded wallet (#1989) 2023-11-21 19:41:23 +00:00
Tair AsimandGitHub 17fe41d42b fix: api key caching ttl (#1988) 2023-11-21 17:38:59 +00:00
Tair AsimandGitHub 36600decef chore: add logging to authenticate (#1973) 2023-11-21 17:08:22 +00:00
FirekeeperandGitHub e09221f1e0 [Unity] SW Account Override Support (#1986) 2023-11-21 12:16:28 +00:00
FirekeeperandGitHub 62cc785c4a [Unity] Support Add/Remove Admin and Create Session Key for SW (#1985) 2023-11-21 10:42:57 +00:00
Adam MajmudarandGitHub 7c45941b57 Add support for executeMetaTransaction (#1974) 2023-11-20 19:12:11 +00:00
FirekeeperandGitHub 7a2e0edab4 [Unity] Apple and Facebook logins (#1981) 2023-11-20 18:45:33 +00:00
Manan TankandGitHub fb0cb676b9 add ConnectEmbed + Fix double connection issue with Safe/Smart in ConnectWallet (#1952) 2023-11-20 17:56:55 +00:00
12d85dec10 [React/RN] Move usePersonalWalletAddress hook to core (#1971)
Co-authored-by: Manan Tank <[email protected]>
2023-11-20 17:29:32 +00:00
1094a03a04 [wallet, react] Add Coin98 Wallet (#1921)
Co-authored-by: Manan Tank <[email protected]>
2023-11-20 16:27:00 +00:00
353 changed files with 10084 additions and 1146 deletions
+1
View File
@@ -14,6 +14,7 @@
"test": "turbo run test --filter=./packages/*",
"e2e": "turbo run e2e",
"build": "turbo run build --filter=./packages/*",
"typedoc": "turbo run typedoc",
"build:release": "turbo run build --force --filter=./packages/*",
"dev": "turbo run dev --no-cache --parallel --continue",
"fix:repo": "manypkg fix",
+30
View File
@@ -1,5 +1,35 @@
# @thirdweb-dev/auth
## 4.1.14
### Patch Changes
- Updated dependencies [[`a36c7e83`](https://github.com/thirdweb-dev/js/commit/a36c7e8331744879a169f84e97b66abf0ab44f56), [`4ae1cd63`](https://github.com/thirdweb-dev/js/commit/4ae1cd63bb7b471cae48a27bf6554c4953c1dc82), [`61c62b3f`](https://github.com/thirdweb-dev/js/commit/61c62b3f07a082ffd7620c949e3bcc6b75c104b5), [`7bb054e4`](https://github.com/thirdweb-dev/js/commit/7bb054e45c75450c8f465809d23eb66371f6ef8e)]:
- @thirdweb-dev/wallets@2.1.11
## 4.1.13
### Patch Changes
- Updated dependencies [[`8c2d4e5e`](https://github.com/thirdweb-dev/js/commit/8c2d4e5ea7c38b3efa4d8d94c9822a92d271e59b), [`2b4f1c8e`](https://github.com/thirdweb-dev/js/commit/2b4f1c8e55de091100fb5279887bcb19ea31d38c)]:
- @thirdweb-dev/wallets@2.1.10
## 4.1.12
### Patch Changes
- Updated dependencies [[`b5bbe2bd`](https://github.com/thirdweb-dev/js/commit/b5bbe2bd438179c38451bc2cfa20a54fc79e4f3a)]:
- @thirdweb-dev/wallets@2.1.9
## 4.1.11
### Patch Changes
- [#1973](https://github.com/thirdweb-dev/js/pull/1973) [`36600dec`](https://github.com/thirdweb-dev/js/commit/36600decefca7b9ebb1924757b4186b559e439f6) Thanks [@assimovt](https://github.com/assimovt)! - add logging to authenticate
- Updated dependencies [[`1094a03a`](https://github.com/thirdweb-dev/js/commit/1094a03a04f3e7ade84af0f7a6073794c0904cb1)]:
- @thirdweb-dev/wallets@2.1.8
## 4.1.10
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/auth",
"version": "4.1.10",
"version": "4.1.14",
"main": "dist/thirdweb-dev-auth.cjs.js",
"module": "dist/thirdweb-dev-auth.esm.js",
"browser": {
@@ -62,6 +62,7 @@ export async function getUser<
const token = getToken(req);
if (!token) {
console.error("Error: No auth token found");
return null;
}
@@ -75,6 +76,7 @@ export async function getUser<
},
});
} catch (err) {
console.error(`Authenticate Error: ${(err as Error)?.message}`);
return null;
}
+28
View File
@@ -1,5 +1,33 @@
# @thirdweb-dev/chains
## 0.1.60
### Patch Changes
- [#2019](https://github.com/thirdweb-dev/js/pull/2019) [`b8332500`](https://github.com/thirdweb-dev/js/commit/b833250053320c8608109053f5cffe2dc96ce70a) Thanks [@jnsdls](https://github.com/jnsdls)! - add & update chains
- [#2024](https://github.com/thirdweb-dev/js/pull/2024) [`28fc3736`](https://github.com/thirdweb-dev/js/commit/28fc3736aa30c89690084aa2c62556c183796352) Thanks [@kien-ngo](https://github.com/kien-ngo)! - Add Base Sepolia to defaultChains
- [#2023](https://github.com/thirdweb-dev/js/pull/2023) [`06805217`](https://github.com/thirdweb-dev/js/commit/06805217c26de203a57c21246acba22def8a78fa) Thanks [@kien-ngo](https://github.com/kien-ngo)! - Add Eth Sepolia to defaultChains
## 0.1.59
### Patch Changes
- [#1967](https://github.com/thirdweb-dev/js/pull/1967) [`47b0ed51`](https://github.com/thirdweb-dev/js/commit/47b0ed5171be5608ae23c19481a1b04948443c6a) Thanks [@kien-ngo](https://github.com/kien-ngo)! - Add Arbitrum Sepolia to defaultChains
- [#1990](https://github.com/thirdweb-dev/js/pull/1990) [`d4ce855e`](https://github.com/thirdweb-dev/js/commit/d4ce855e5f5e6c4206a3efa250e92e690ae87281) Thanks [@jnsdls](https://github.com/jnsdls)! - deprecate `allChains` `getChainById` and `getChainBySlug`
all of these would (necessarily) pull in every single chain in the package (>600kb)
instead these can be replaced with their async variants:
- `allChains` -> `await fetchChains()`
- `getChainById(chainId)` -> `await getChainByIdAsync(chainId)`
- `getChainBySlug(chainSlug)` -> `await getChainBySlugAsync(chainSlug)`
these async functions will return the same data as their sync counterparts, but without having to pull in every single chain at build-time.
## 0.1.58
### Patch Changes
+2 -2
View File
@@ -39,11 +39,11 @@ export default {
},
"networkId": 13308,
"rpc": [
"https://credit-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://credit-smart-chain-credit.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://13308.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.creditsmartchain.com"
],
"shortName": "Credit",
"slug": "credit-smart-chain",
"slug": "credit-smart-chain-credit",
"testnet": false
} as const satisfies Chain;
+34
View File
@@ -0,0 +1,34 @@
import type { Chain } from "../src/types";
export default {
"chain": "BLITZ",
"chainId": 1343,
"explorers": [
{
"name": "BLITZ Explorer",
"url": "https://subnets-test.avax.network/blitz",
"standard": "EIP3091"
}
],
"faucets": [],
"features": [
{
"name": "EIP1559"
}
],
"infoURL": "https://blitz.gg",
"name": "Blitz Subnet",
"nativeCurrency": {
"name": "BLITZ GAS",
"symbol": "BGAS",
"decimals": 18
},
"networkId": 1343,
"rpc": [
"https://blitz-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1343.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/blitz/testnet/rpc"
],
"shortName": "blitz",
"slug": "blitz-subnet",
"testnet": true
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "parallel-stormy-spica",
"chainId": 1350216234,
"explorers": [
{
"name": "Blockscout",
"url": "https://parallel-stormy-spica.explorer.mainnet.skalenodes.com",
"standard": "EIP3091"
}
],
"faucets": [
"https://sfuel.skale.network/"
],
"icon": {
"url": "ipfs://bafkreiagrt5dhgltg2kmw7hf24kslstr5h42e745luuxwp2wbg24gm6zza",
"width": 500,
"height": 500,
"format": "png"
},
"name": "SKALE Titan Hub",
"nativeCurrency": {
"name": "sFUEL",
"symbol": "sFUEL",
"decimals": 18
},
"networkId": 1350216234,
"rpc": [
"https://skale-titan-hub.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1350216234.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet.skalenodes.com/v1/parallel-stormy-spica",
"wss://mainnet.skalenodes.com/v1/ws/parallel-stormy-spica"
],
"shortName": "titan-mainnet",
"slug": "skale-titan-hub",
"testnet": false
} as const satisfies Chain;
+1 -1
View File
@@ -33,6 +33,6 @@ export default {
],
"shortName": "testnet-zkEVM-mango",
"slug": "polygon-zkevm-testnet",
"testnet": false,
"testnet": true,
"title": "Polygon zkEVM Testnet"
} as const satisfies Chain;
+14 -12
View File
@@ -4,20 +4,22 @@ export default {
"chainId": 1482601649,
"explorers": [
{
"name": "nebula",
"name": "Blockscout",
"url": "https://green-giddy-denebola.explorer.mainnet.skalenodes.com",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmfQkfmQuoUUUKwF1yCcrPEzFcWLaqNyiSv5YMcSj6zs74",
"width": 500,
"height": 500,
"format": "png"
}
"standard": "EIP3091"
}
],
"faucets": [],
"faucets": [
"https://sfuel.skale.network/"
],
"icon": {
"url": "ipfs://bafybeic5eexvd34wfy4kuebcyu73qpkv3x57s54ebzjyhyjsmeuni5jwcm",
"width": 500,
"height": 500,
"format": "png"
},
"infoURL": "https://nebulachain.io/",
"name": "Nebula Mainnet",
"name": "SKALE Nebula Hub",
"nativeCurrency": {
"name": "sFUEL",
"symbol": "sFUEL",
@@ -25,12 +27,12 @@ export default {
},
"networkId": 1482601649,
"rpc": [
"https://nebula.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://skale-nebula-hub.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1482601649.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet.skalenodes.com/v1/green-giddy-denebola",
"wss://mainnet-proxy.skalenodes.com/v1/ws/green-giddy-denebola"
],
"shortName": "nebula-mainnet",
"slug": "nebula",
"slug": "skale-nebula-hub",
"testnet": false
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "staging-aware-chief-gianfar",
"chainId": 1517929550,
"explorers": [
{
"name": "Blockscout",
"url": "https://staging-aware-chief-gianfar.explorer.staging-v3.skalenodes.com",
"standard": "EIP3091"
}
],
"faucets": [
"https://sfuel.dirtroad.dev/staging"
],
"icon": {
"url": "ipfs://bafkreiagrt5dhgltg2kmw7hf24kslstr5h42e745luuxwp2wbg24gm6zza",
"width": 500,
"height": 500,
"format": "png"
},
"name": "SKALE Titan Hub Testnet",
"nativeCurrency": {
"name": "sFUEL",
"symbol": "sFUEL",
"decimals": 18
},
"networkId": 1517929550,
"rpc": [
"https://skale-titan-hub-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1517929550.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://staging-v3.skalenodes.com/v1/staging-aware-chief-gianfar",
"wss://staging-v3.skalenodes.com/v1/ws/staging-aware-chief-gianfar"
],
"shortName": "titan-testnet",
"slug": "skale-titan-hub-testnet",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 15535,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": ".svg"
},
"infoURL": "https://avacloud.io",
"name": "QI M 11271",
"nativeCurrency": {
"name": "QI M 11271 Token",
"symbol": "JZW",
"decimals": 18
},
"networkId": 15535,
"redFlags": [],
"rpc": [
"https://qi-m-11271.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://15535.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/a47e1c06-fa75-4536-a900-1574d198e197"
],
"shortName": "QI M 11271",
"slug": "qi-m-11271",
"testnet": true
} as const satisfies Chain;
+11 -12
View File
@@ -6,20 +6,20 @@ export default {
{
"name": "Blockscout",
"url": "https://honorable-steel-rasalhague.explorer.mainnet.skalenodes.com",
"standard": "EIP3091",
"icon": {
"url": "ipfs://bafybeigyayzxvt7vosat4rtrbmhhnldgx57w2pfbutuniax7h6kswzi42m",
"width": 1637,
"height": 1636,
"format": "png"
}
"standard": "EIP3091"
}
],
"faucets": [
"https://sfuel.dirtroad.dev"
],
"icon": {
"url": "ipfs://bafybeigyayzxvt7vosat4rtrbmhhnldgx57w2pfbutuniax7h6kswzi42m",
"width": 1637,
"height": 1636,
"format": "png"
},
"infoURL": "https://calypsohub.network/",
"name": "Calypso NFT Hub (SKALE)",
"name": "SKALE Calypso Hub",
"nativeCurrency": {
"name": "sFUEL",
"symbol": "sFUEL",
@@ -27,12 +27,11 @@ export default {
},
"networkId": 1564830818,
"rpc": [
"https://calypso-nft-hub-skale.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://skale-calypso-hub.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1564830818.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet.skalenodes.com/v1/honorable-steel-rasalhague"
],
"shortName": "calypso-mainnet",
"slug": "calypso-nft-hub-skale",
"testnet": false,
"title": "Calypso NFT Hub Mainnet"
"slug": "skale-calypso-hub",
"testnet": false
} as const satisfies Chain;
+16 -23
View File
@@ -1,35 +1,28 @@
import type { Chain } from "../src/types";
export default {
"chain": "Yuma",
"chain": "LQC",
"chainId": 1662,
"explorers": [],
"faucets": [],
"features": [
"explorers": [
{
"name": "EIP155"
},
{
"name": "EIP1559"
"name": "Liquichain Mainnet",
"url": "https://mainnet.liquichain.io",
"standard": "EIP3091"
}
],
"icon": {
"url": "ipfs://QmSFMBk3rMyu45Sy9KQHjgArFj4HdywANNYrSosLMUdcti",
"width": 1213,
"height": 1213,
"format": "png"
},
"infoURL": "https://horizen.io/",
"name": "Horizen Yuma Testnet Deprecated",
"faucets": [],
"infoURL": "https://liquichain.io/",
"name": "Liquichain",
"nativeCurrency": {
"name": "Testnet Zen",
"symbol": "tZEN",
"name": "Licoin",
"symbol": "LCN",
"decimals": 18
},
"networkId": 1662,
"redFlags": [
"reusedChainId"
],
"rpc": [],
"shortName": "Yuma",
"slip44": 121,
"slug": "horizen-yuma-testnet-deprecated",
"status": "deprecated",
"testnet": true
"shortName": "Liquichain",
"slug": "liquichain",
"testnet": false
} as const satisfies Chain;
+4 -1
View File
@@ -41,6 +41,7 @@ export default {
"https://faucet.holesky.ethpandaops.io",
"https://holesky-faucet.pk910.de"
],
"features": [],
"icon": {
"url": "ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt",
"width": 1000,
@@ -55,6 +56,7 @@ export default {
"decimals": 18
},
"networkId": 17000,
"redFlags": [],
"rpc": [
"https://holesky.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://17000.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
@@ -65,5 +67,6 @@ export default {
"shortName": "holesky",
"slug": "holesky",
"status": "incubating",
"testnet": true
"testnet": true,
"title": "Ethereum Testnet Holesky"
} as const satisfies Chain;
+41
View File
@@ -0,0 +1,41 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 17001,
"explorers": [
{
"name": "Redstone Holesky Explorer",
"url": "https://explorer.holesky.redstone.xyz",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmdwQDr6vmBtXmK2TmknkEuZNoaDqTasFdZdu3DRw8b2wt",
"width": 1000,
"height": 1628,
"format": "png"
}
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreieyaqgkgntvxuo5tnhgseladga5q6gutc37dab7kqqfdguhq7vkxq",
"width": 5836,
"height": 5836,
"format": "png"
},
"infoURL": "https://redstone.xyz/docs/network-info",
"name": "Redstone Holesky Testnet",
"nativeCurrency": {
"name": "Redstone Testnet Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 17001,
"rpc": [
"https://redstone-holesky-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://17001.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.holesky.redstone.xyz"
],
"shortName": "redstone",
"slug": "redstone-holesky-testnet",
"testnet": true
} as const satisfies Chain;
+6 -8
View File
@@ -2,13 +2,7 @@ import type { Chain } from "../src/types";
export default {
"chain": "Roll",
"chainId": 1748,
"explorers": [
{
"name": "Blockscout",
"url": "https://roll.calderaexplorer.xyz/",
"standard": "EIP3091"
}
],
"explorers": [],
"faucets": [],
"features": [],
"icon": {
@@ -26,7 +20,11 @@ export default {
},
"networkId": 1748,
"redFlags": [],
"rpc": [],
"rpc": [
"https://roll-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1748.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://roll.calderachain.xyz/http"
],
"shortName": "Roll",
"slug": "roll-testnet",
"testnet": true,
+10 -9
View File
@@ -1,33 +1,34 @@
import type { Chain } from "../src/types";
export default {
"chain": "xgon",
"chain": "X1",
"chainId": 195,
"explorers": [
{
"name": "OKLink",
"url": "https://www.oklink.com/okbc-test",
"url": "https://www.oklink.com/x1-test",
"standard": "EIP3091"
}
],
"faucets": [
"https://www.oklink.com/okbc-test"
"https://www.okx.com/x1/faucet"
],
"features": [],
"infoURL": "https://www.okx.com/okbc/docs/dev/quick-start/introduction/introduction-to-okbchain",
"name": "Xgon Testnet",
"infoURL": "https://www.okx.com/x1",
"name": "X1 Testnet",
"nativeCurrency": {
"name": "Xgon Global Utility Token in testnet",
"name": "X1 Global Utility Token in testnet",
"symbol": "OKB",
"decimals": 18
},
"networkId": 195,
"rpc": [
"https://xgon-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://x1-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://195.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testrpc.xgon.io"
"https://testrpc.x1.tech",
"https://x1testrpc.okx.com"
],
"shortName": "tokb",
"slug": "xgon-testnet",
"slug": "x1-testnet",
"status": "active",
"testnet": true
} as const satisfies Chain;
+5 -5
View File
@@ -1,21 +1,21 @@
import type { Chain } from "../src/types";
export default {
"chain": "xgon",
"chain": "X1",
"chainId": 196,
"explorers": [],
"faucets": [],
"features": [],
"infoURL": "https://www.okx.com/okbc/docs/dev/quick-start/introduction/introduction-to-okbchain",
"name": "Xgon Mainnet",
"infoURL": "https://www.okx.com/x1",
"name": "X1 Mainnet",
"nativeCurrency": {
"name": "Xgon Global Utility Token",
"name": "X1 Global Utility Token",
"symbol": "OKB",
"decimals": 18
},
"networkId": 196,
"rpc": [],
"shortName": "okb",
"slug": "xgon",
"slug": "x1",
"status": "incubating",
"testnet": false
} as const satisfies Chain;
+2 -1
View File
@@ -29,7 +29,8 @@ export default {
"rpc": [
"https://z-mainnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://2016.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-rpc.mainnetz.io"
"https://mainnet-rpc.mainnetz.io",
"https://eu-rpc.mainnetz.io"
],
"shortName": "NetZm",
"slug": "z-mainnet",
+3 -3
View File
@@ -20,7 +20,7 @@ export default {
"format": "png"
},
"infoURL": "https://europahub.network/",
"name": "Europa SKALE Chain",
"name": "SKALE Europa Hub",
"nativeCurrency": {
"name": "sFUEL",
"symbol": "sFUEL",
@@ -37,12 +37,12 @@ export default {
]
},
"rpc": [
"https://europa-skale-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://skale-europa-hub.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://2046399126.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet.skalenodes.com/v1/elated-tan-skat",
"wss://mainnet.skalenodes.com/v1/elated-tan-skat"
],
"shortName": "europa",
"slug": "europa-skale-chain",
"slug": "skale-europa-hub",
"testnet": false
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 2121,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": ".svg"
},
"infoURL": "https://avacloud.io",
"name": "M TEST 1103-2",
"nativeCurrency": {
"name": "M TEST 1103-2 Token",
"symbol": "RJI",
"decimals": 18
},
"networkId": 2121,
"redFlags": [],
"rpc": [
"https://m-test-1103-2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://2121.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/cb82eb40-2d0d-4188-905b-d50c4b09b40b"
],
"shortName": "M TEST 1103-2",
"slug": "m-test-1103-2",
"testnet": true
} as const satisfies Chain;
+2 -1
View File
@@ -32,7 +32,8 @@ export default {
"rpc": [
"https://krest-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://2241.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://erpc-krest.peaq.network"
"https://erpc-krest.peaq.network",
"https://krest.unitedbloc.com"
],
"shortName": "KRST",
"slug": "krest-network",
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 23934,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": ".svg"
},
"infoURL": "https://avacloud.io",
"name": "ST 11-16 v7 Regression",
"nativeCurrency": {
"name": "ST 11-16 v7 Regression Token",
"symbol": "WLA",
"decimals": 18
},
"networkId": 23934,
"redFlags": [],
"rpc": [
"https://st-11-16-v7-regression.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://23934.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "ST 11-16 v7 Regression",
"slug": "st-11-16-v7-regression",
"testnet": true
} as const satisfies Chain;
+13
View File
@@ -13,9 +13,21 @@ export default {
"height": 540,
"format": "png"
}
},
{
"name": "etherscan",
"url": "https://kromascan.com/",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM",
"width": 551,
"height": 540,
"format": "png"
}
}
],
"faucets": [],
"features": [],
"icon": {
"url": "ipfs://QmVpV2WET6ZrqnvvPfE9hCwoE2y5ygbPuniuugpaRoxrho",
"width": 320,
@@ -39,6 +51,7 @@ export default {
}
]
},
"redFlags": [],
"rpc": [
"https://kroma.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://255.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
+2 -2
View File
@@ -6,8 +6,8 @@ export default {
"faucets": [],
"name": "DPU Chain",
"nativeCurrency": {
"name": "DGS",
"symbol": "DGS",
"name": "DGC",
"symbol": "DGC",
"decimals": 18
},
"networkId": 2611555,
+43
View File
@@ -0,0 +1,43 @@
import type { Chain } from "../src/types";
export default {
"chain": "K-LAOS",
"chainId": 2718,
"explorers": [
{
"name": "blockscout",
"url": "https://blockscout.klaos.laosfoundation.io",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmW26eoxJeyUfikZ4DUT1Gfk78sBkvydEo8QzHa1BXjUUL",
"width": 580,
"height": 580,
"format": "png"
}
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmW26eoxJeyUfikZ4DUT1Gfk78sBkvydEo8QzHa1BXjUUL",
"width": 580,
"height": 580,
"format": "png"
},
"infoURL": "https://www.laosfoundation.io/",
"name": "K-LAOS",
"nativeCurrency": {
"name": "KLAOS",
"symbol": "KLAOS",
"decimals": 18
},
"networkId": 2718,
"rpc": [
"https://k-laos.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://2718.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.klaos.laosfoundation.io",
"wss://rpc.klaos.laosfoundation.io"
],
"shortName": "k-laos",
"slug": "k-laos",
"testnet": false,
"title": "K-LAOS: LAOS on Kusama"
} as const satisfies Chain;
+2 -2
View File
@@ -5,8 +5,8 @@ export default {
"explorers": [
{
"name": "HashScan",
"url": "https://hashscan.io/mainnet/dashboard",
"standard": "none"
"url": "https://hashscan.io/mainnet",
"standard": "EIP3091"
},
{
"name": "Arkhia Explorer",
+2 -2
View File
@@ -5,8 +5,8 @@ export default {
"explorers": [
{
"name": "HashScan",
"url": "https://hashscan.io/testnet/dashboard",
"standard": "none"
"url": "https://hashscan.io/testnet",
"standard": "EIP3091"
},
{
"name": "Arkhia Explorer",
+2 -2
View File
@@ -5,8 +5,8 @@ export default {
"explorers": [
{
"name": "HashScan",
"url": "https://hashscan.io/previewnet/dashboard",
"standard": "none"
"url": "https://hashscan.io/previewnet",
"standard": "EIP3091"
}
],
"faucets": [
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 30891,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": ".svg"
},
"infoURL": "https://avacloud.io",
"name": "Jambon's Testnet",
"nativeCurrency": {
"name": "Jambon's Testnet Token",
"symbol": "CXY",
"decimals": 18
},
"networkId": 30891,
"redFlags": [],
"rpc": [
"https://jambon-s-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://30891.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/e8b04790-d50c-4bb1-89ba-7bd140b674f3"
],
"shortName": "Jambon's Testnet",
"slug": "jambon-s-testnet",
"testnet": true
} as const satisfies Chain;
+34
View File
@@ -0,0 +1,34 @@
import type { Chain } from "../src/types";
export default {
"chain": "CLOUDVERSE",
"chainId": 33210,
"explorers": [
{
"name": "CLOUDVERSE Explorer",
"url": "https://subnets.avax.network/cloudverse",
"standard": "EIP3091"
}
],
"faucets": [],
"features": [
{
"name": "EIP1559"
}
],
"infoURL": "https://muadao.build/",
"name": "Cloudverse Subnet",
"nativeCurrency": {
"name": "XCLOUD",
"symbol": "XCLOUD",
"decimals": 18
},
"networkId": 33210,
"rpc": [
"https://cloudverse-subnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://33210.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/cloudverse/mainnet/rpc"
],
"shortName": "cloudverse",
"slug": "cloudverse-subnet",
"testnet": false
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 33909,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": ".svg"
},
"infoURL": "https://avacloud.io",
"name": "Reg1116test",
"nativeCurrency": {
"name": "Reg1116test Token",
"symbol": "JUO",
"decimals": 18
},
"networkId": 33909,
"redFlags": [],
"rpc": [
"https://reg1116test.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://33909.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Reg1116test",
"slug": "reg1116test",
"testnet": true
} as const satisfies Chain;
+10 -10
View File
@@ -6,20 +6,20 @@ export default {
{
"name": "Blockscout",
"url": "https://staging-utter-unripe-menkar.explorer.staging-v3.skalenodes.com",
"standard": "EIP3091",
"icon": {
"url": "ipfs://bafybeigyayzxvt7vosat4rtrbmhhnldgx57w2pfbutuniax7h6kswzi42m",
"width": 1637,
"height": 1636,
"format": "png"
}
"standard": "EIP3091"
}
],
"faucets": [
"https://sfuel.dirtroad.dev/staging"
],
"icon": {
"url": "ipfs://bafybeigyayzxvt7vosat4rtrbmhhnldgx57w2pfbutuniax7h6kswzi42m",
"width": 1637,
"height": 1636,
"format": "png"
},
"infoURL": "https://calypsohub.network/",
"name": "Calypso NFT Hub (SKALE Testnet)",
"name": "SKALE Calypso Hub Testnet",
"nativeCurrency": {
"name": "sFUEL",
"symbol": "sFUEL",
@@ -27,12 +27,12 @@ export default {
},
"networkId": 344106930,
"rpc": [
"https://calypso-nft-hub-skale-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://skale-calypso-hub-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://344106930.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://staging-v3.skalenodes.com/v1/staging-utter-unripe-menkar"
],
"shortName": "calypso-testnet",
"slug": "calypso-nft-hub-skale-testnet",
"slug": "skale-calypso-hub-testnet",
"testnet": true,
"title": "Calypso NFT Hub Testnet"
} as const satisfies Chain;
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 34443,
"explorers": [
{
"name": "modescout",
"url": "https://explorer.mode.network",
"standard": "none"
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreidi5y7afj5z4xrz7uz5rkg2mcsv2p2n4ui4g7q4k4ecdz65i2agou",
"width": 2160,
"height": 2160,
"format": "png"
},
"infoURL": "https://docs.mode.network/",
"name": "Mode",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 34443,
"rpc": [
"https://mode.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://34443.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet.mode.network"
],
"shortName": "mode",
"slug": "mode",
"testnet": false
} as const satisfies Chain;
+28
View File
@@ -0,0 +1,28 @@
import type { Chain } from "../src/types";
export default {
"chain": "DS2",
"chainId": 363636,
"explorers": [],
"faucets": [],
"icon": {
"url": "ipfs://QmRiAUu3xV5uiX6Nk1iXD5w6qjki5ugGFETRVavzJ2h5QF",
"width": 370,
"height": 320,
"format": "png"
},
"name": "Digit Soul Smart Chain 2",
"nativeCurrency": {
"name": "Digit Coin",
"symbol": "DGC",
"decimals": 18
},
"networkId": 363636,
"rpc": [
"https://digit-soul-smart-chain-2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://363636.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://dgs-rpc.digitsoul.co.th"
],
"shortName": "DS2",
"slug": "digit-soul-smart-chain-2",
"testnet": false
} as const satisfies Chain;
+1 -1
View File
@@ -43,5 +43,5 @@ export default {
],
"shortName": "tftm",
"slug": "fantom-testnet",
"testnet": false
"testnet": true
} as const satisfies Chain;
+2 -6
View File
@@ -15,9 +15,7 @@ export default {
}
}
],
"faucets": [
"https://coinbase.com/faucets/optimism-goerli-faucet"
],
"faucets": [],
"features": [],
"icon": {
"url": "ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/optimism/512.png",
@@ -37,8 +35,6 @@ export default {
"rpc": [
"https://optimism-goerli.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://420.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://optimism-goerli.infura.io/v3/${INFURA_API_KEY}",
"https://opt-goerli.g.alchemy.com/v2/${ALCHEMY_API_KEY}",
"https://goerli.optimism.io",
"https://optimism-goerli.publicnode.com",
"wss://optimism-goerli.publicnode.com",
@@ -47,5 +43,5 @@ export default {
],
"shortName": "ogor",
"slug": "optimism-goerli",
"testnet": false
"testnet": true
} as const satisfies Chain;
+1 -3
View File
@@ -38,14 +38,12 @@ export default {
"rpc": [
"https://arbitrum-goerli.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://421613.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://arbitrum-goerli.infura.io/v3/${INFURA_API_KEY}",
"https://arb-goerli.g.alchemy.com/v2/${ALCHEMY_API_KEY}",
"https://goerli-rollup.arbitrum.io/rpc",
"https://arbitrum-goerli.publicnode.com",
"wss://arbitrum-goerli.publicnode.com"
],
"shortName": "arb-goerli",
"slug": "arbitrum-goerli",
"testnet": false,
"testnet": true,
"title": "Arbitrum Goerli Rollup Testnet"
} as const satisfies Chain;
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "Geso Verse",
"chainId": 428,
"explorers": [
{
"name": "Geso Verse Explorer",
"url": "https://explorer.verse.gesoten.com",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://Qmb7oJY9zd9sTzxNNQNTVZQz2hkd1aA94mWm4cvXfJ9QxV",
"width": 1280,
"height": 1280,
"format": "png"
},
"infoURL": "https://gesoten.com/",
"name": "Geso Verse",
"nativeCurrency": {
"name": "OAS",
"symbol": "OAS",
"decimals": 18
},
"networkId": 428,
"rpc": [
"https://geso-verse.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://428.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.verse.gesoten.com/"
],
"shortName": "GSV",
"slug": "geso-verse",
"testnet": false
} as const satisfies Chain;
+2 -4
View File
@@ -10,8 +10,7 @@ export default {
}
],
"faucets": [
"https://faucet.avax-test.network/",
"https://faucet.avax.network/"
"https://faucet.avax-test.network/"
],
"features": [],
"icon": {
@@ -32,12 +31,11 @@ export default {
"rpc": [
"https://avalanche-fuji.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://43113.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://avalanche-fuji.infura.io/v3/${INFURA_API_KEY}",
"https://api.avax-test.network/ext/bc/C/rpc",
"https://avalanche-fuji-c-chain.publicnode.com",
"wss://avalanche-fuji-c-chain.publicnode.com"
],
"shortName": "Fuji",
"slug": "avalanche-fuji",
"testnet": false
"testnet": true
} as const satisfies Chain;
+49
View File
@@ -0,0 +1,49 @@
import type { Chain } from "../src/types";
export default {
"chain": "CREDIT",
"chainId": 4400,
"explorers": [
{
"name": "Creditscan",
"url": "https://scan.creditsmartchain.com",
"standard": "EIP3091",
"icon": {
"url": "ipfs://bafkreifbso3gd4wu5wxl27xyurxctmuae2jyuy37guqtzx23nga6ba4ag4",
"width": 1000,
"height": 1628,
"format": "png"
}
}
],
"faucets": [],
"features": [
{
"name": "EIP155"
},
{
"name": "EIP1559"
}
],
"icon": {
"url": "ipfs://bafkreifbso3gd4wu5wxl27xyurxctmuae2jyuy37guqtzx23nga6ba4ag4",
"width": 1000,
"height": 1628,
"format": "png"
},
"infoURL": "https://creditsmartchain.com",
"name": "Credit Smart Chain Mainnet",
"nativeCurrency": {
"name": "Credit",
"symbol": "CREDIT",
"decimals": 18
},
"networkId": 4400,
"rpc": [
"https://credit-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://4400.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.creditsmartchain.com"
],
"shortName": "CreditEdge",
"slug": "credit-smart-chain",
"testnet": false
} as const satisfies Chain;
+1 -1
View File
@@ -45,5 +45,5 @@ export default {
"shortName": "synapse-sepolia",
"slug": "synapse-chain-testnet",
"status": "active",
"testnet": false
"testnet": true
} as const satisfies Chain;
+3 -3
View File
@@ -4,8 +4,8 @@ export default {
"chainId": 44787,
"explorers": [
{
"name": "Celoscan",
"url": "https://alfajores.celoscan.io/",
"name": "Alfajoresscan",
"url": "https://alfajores.celoscan.io",
"standard": "EIP3091"
}
],
@@ -31,5 +31,5 @@ export default {
],
"shortName": "ALFA",
"slug": "celo-alfajores-testnet",
"testnet": false
"testnet": true
} as const satisfies Chain;
-1
View File
@@ -23,7 +23,6 @@ export default {
"https://46.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.darwinia.network",
"https://darwinia-rpc.darwiniacommunitydao.xyz",
"https://darwinia2.api.onfinality.io/public-ws",
"https://darwinia-rpc.dwellir.com"
],
"shortName": "darwinia",
+1 -1
View File
@@ -35,5 +35,5 @@ export default {
],
"shortName": "iotex-testnet",
"slug": "iotex-network-testnet",
"testnet": false
"testnet": true
} as const satisfies Chain;
+38
View File
@@ -0,0 +1,38 @@
import type { Chain } from "../src/types";
export default {
"chain": "staging-legal-crazy-castor",
"chainId": 476158412,
"explorers": [
{
"name": "Blockscout",
"url": "https://staging-legal-crazy-castor.explorer.staging-v3.skalenodes.com",
"standard": "EIP3091"
}
],
"faucets": [
"https://sfuel.dirtroad.dev/staging"
],
"icon": {
"url": "ipfs://bafkreiezcwowhm6xjrkt44cmiu6ml36rhrxx3amcg3cfkcntv2vgcvgbre",
"width": 600,
"height": 600,
"format": "png"
},
"infoURL": "https://europahub.network/",
"name": "SKALE Europa Hub Testnet",
"nativeCurrency": {
"name": "sFUEL",
"symbol": "sFUEL",
"decimals": 18
},
"networkId": 476158412,
"rpc": [
"https://skale-europa-hub-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://476158412.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://staging-v3.skalenodes.com/v1/staging-legal-crazy-castor"
],
"shortName": "europa-testnet",
"slug": "skale-europa-hub-testnet",
"testnet": true,
"title": "Europa Hub Testnet"
} as const satisfies Chain;
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "GC",
"chainId": 4893,
"explorers": [
{
"name": "blockscout",
"url": "https://gcscan.io",
"standard": "none"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmPRHDsVNpRZ72GoQgDbpa3R4wKENmrXCRNuYJkxocFRDb",
"width": 306,
"height": 293,
"format": "png"
},
"infoURL": "https://gcscan.io",
"name": "Globel Chain",
"nativeCurrency": {
"name": "Globel Chain",
"symbol": "GC",
"decimals": 18
},
"networkId": 4893,
"rpc": [
"https://globel-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://4893.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.gcscan.io"
],
"shortName": "GC",
"slug": "globel-chain",
"testnet": false
} as const satisfies Chain;
+2 -4
View File
@@ -26,8 +26,7 @@ export default {
"faucets": [
"http://fauceth.komputing.org?chain=5&address=${ADDRESS}",
"https://goerli-faucet.slock.it?address=${ADDRESS}",
"https://faucet.goerli.mudit.blog",
"https://faucet.paradigm.xyz/"
"https://faucet.goerli.mudit.blog"
],
"features": [],
"icon": {
@@ -50,7 +49,6 @@ export default {
"https://5.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://goerli.infura.io/v3/${INFURA_API_KEY}",
"wss://goerli.infura.io/v3/${INFURA_API_KEY}",
"https://eth-goerli.g.alchemy.com/v2/${ALCHEMY_API_KEY}",
"https://rpc.goerli.mudit.blog/",
"https://ethereum-goerli.publicnode.com",
"wss://ethereum-goerli.publicnode.com",
@@ -59,6 +57,6 @@ export default {
],
"shortName": "gor",
"slug": "goerli",
"testnet": false,
"testnet": true,
"title": "Ethereum Testnet Goerli"
} as const satisfies Chain;
+16 -14
View File
@@ -4,20 +4,22 @@ export default {
"chainId": 503129905,
"explorers": [
{
"name": "nebula",
"name": "Blockscout",
"url": "https://staging-faint-slimy-achird.explorer.staging-v3.skalenodes.com",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmfQkfmQuoUUUKwF1yCcrPEzFcWLaqNyiSv5YMcSj6zs74",
"width": 500,
"height": 500,
"format": "png"
}
"standard": "EIP3091"
}
],
"faucets": [],
"faucets": [
"https://sfuel.dirtroad.dev/staging"
],
"icon": {
"url": "ipfs://bafybeic5eexvd34wfy4kuebcyu73qpkv3x57s54ebzjyhyjsmeuni5jwcm",
"width": 500,
"height": 500,
"format": "png"
},
"infoURL": "https://nebulachain.io/",
"name": "Nebula Staging",
"name": "SKALE Nebula Hub Testnet",
"nativeCurrency": {
"name": "sFUEL",
"symbol": "sFUEL",
@@ -25,12 +27,12 @@ export default {
},
"networkId": 503129905,
"rpc": [
"https://nebula-staging.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://skale-nebula-hub-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://503129905.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://staging-v3.skalenodes.com/v1/staging-faint-slimy-achird",
"wss://staging-v3.skalenodes.com/v1/ws/staging-faint-slimy-achird"
],
"shortName": "nebula-staging",
"slug": "nebula-staging",
"testnet": false
"shortName": "nebula-testnet",
"slug": "skale-nebula-hub-testnet",
"testnet": true
} as const satisfies Chain;
+3 -1
View File
@@ -38,7 +38,9 @@ export default {
"https://rpc1.bahamut.io",
"https://rpc2.bahamut.io",
"wss://ws1.sahara.bahamutchain.com",
"wss://ws2.sahara.bahamutchain.com"
"wss://ws2.sahara.bahamutchain.com",
"https://bahamut.publicnode.com",
"wss://bahamut.publicnode.com"
],
"shortName": "ftn",
"slug": "bahamut",
-1
View File
@@ -24,7 +24,6 @@ export default {
"https://rollux.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://570.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.rollux.com",
"https://rollux.public-rpc.com",
"wss://rpc.rollux.com/wss"
],
"shortName": "sys-rollux",
+2 -1
View File
@@ -47,6 +47,7 @@ export default {
}
]
},
"redFlags": [],
"rpc": [
"https://sepolia-pgn-public-goods-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://58008.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
@@ -54,5 +55,5 @@ export default {
],
"shortName": "sepPGN",
"slug": "sepolia-pgn-public-goods-network",
"testnet": false
"testnet": true
} as const satisfies Chain;
+1 -1
View File
@@ -44,5 +44,5 @@ export default {
],
"shortName": "metis-goerli",
"slug": "metis-goerli-testnet",
"testnet": false
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 62278,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": ".svg"
},
"infoURL": "https://avacloud.io",
"name": "qi1121i1",
"nativeCurrency": {
"name": "qi1121i1 Token",
"symbol": "SJOX",
"decimals": 18
},
"networkId": 62278,
"redFlags": [],
"rpc": [
"https://qi1121i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://62278.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "qi1121i1",
"slug": "qi1121i1",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 63079,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": ".svg"
},
"infoURL": "https://avacloud.io",
"name": "MT 1121-2",
"nativeCurrency": {
"name": "MT 1121-2 Token",
"symbol": "RCE",
"decimals": 18
},
"networkId": 63079,
"redFlags": [],
"rpc": [
"https://mt-1121-2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://63079.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-test.io/d76ea66a-e423-49f6-8ef1-4355260b47f1"
],
"shortName": "MT 1121-2",
"slug": "mt-1121-2",
"testnet": true
} as const satisfies Chain;
+28
View File
@@ -0,0 +1,28 @@
import type { Chain } from "../src/types";
export default {
"chain": "DGS",
"chainId": 6363,
"explorers": [],
"faucets": [],
"icon": {
"url": "ipfs://QmRiAUu3xV5uiX6Nk1iXD5w6qjki5ugGFETRVavzJ2h5QF",
"width": 370,
"height": 320,
"format": "png"
},
"name": "Digit Soul Smart Chain",
"nativeCurrency": {
"name": "Digit Coin",
"symbol": "DGC",
"decimals": 18
},
"networkId": 6363,
"rpc": [
"https://digit-soul-smart-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://6363.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://dsc-rpc.digitsoul.co.th"
],
"shortName": "DGS",
"slug": "digit-soul-smart-chain",
"testnet": false
} as const satisfies Chain;
+36
View File
@@ -0,0 +1,36 @@
import type { Chain } from "../src/types";
export default {
"chain": "JanusNetwork",
"chainId": 66988,
"explorers": [
{
"name": "JanusNetwork Testnet Explorer",
"url": "https://beta.scan.janusnetwork.io",
"standard": "none"
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreifc3vnwf4hj3bo6fg4u5qlqmjgajjgezyeg236qjcihl4ha42siuq",
"width": 819,
"height": 792,
"format": "png"
},
"infoURL": "https://janus-network.gitbook.io/janus",
"name": "Janus Testnet",
"nativeCurrency": {
"name": "Janus",
"symbol": "JNS",
"decimals": 18
},
"networkId": 66988,
"rpc": [
"https://janus-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://66988.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.test.janusnetwork.io"
],
"shortName": "janusnetwork-testnet",
"slug": "janus-testnet",
"status": "active",
"testnet": true
} as const satisfies Chain;
+3 -3
View File
@@ -14,9 +14,9 @@ export default {
],
"features": [],
"icon": {
"url": "ipfs://QmTS1P9sh49zg5xL5BUsRLWDz3vVoJCtCNf9yN1TTnsuQ3",
"width": 321,
"height": 320,
"url": "ipfs://QmRxeKFwBwrXyDksoN4NzNRp3R35s8pVnTBfBj4AJSCq5g",
"width": 512,
"height": 512,
"format": "png"
},
"infoURL": "https://frame.xyz",
+26
View File
@@ -0,0 +1,26 @@
import type { Chain } from "../src/types";
export default {
"chain": "Jambon's Devnet",
"chainId": 72605,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "",
"width": 256,
"height": 256,
"format": ".svg"
},
"name": "Jambon's Devnet",
"nativeCurrency": {
"name": "Jambon's Devnet",
"symbol": "DOB",
"decimals": 18
},
"networkId": 72605,
"redFlags": [],
"rpc": [],
"shortName": "Jambon's Devnet",
"slug": "jambon-s-devnet",
"testnet": true
} as const satisfies Chain;
+38
View File
@@ -0,0 +1,38 @@
import type { Chain } from "../src/types";
export default {
"chain": "MaalChain Testnet",
"chainId": 7860,
"explorers": [
{
"name": "maalscan testnet",
"url": "https://testnet.maalscan.io",
"standard": "EIP3091"
}
],
"faucets": [
"https://faucet-testnet.maalscan.io/"
],
"icon": {
"url": "ipfs://bafkreiexfqfe2x4impvwhra3xxa5eb25gv25zi3kkaoatdnld7wbxdzf2a",
"width": 512,
"height": 512,
"format": "png"
},
"infoURL": "https://www.maalchain.com/",
"name": "MaalChain Testnet",
"nativeCurrency": {
"name": "MAAL",
"symbol": "MAAL",
"decimals": 18
},
"networkId": 7860,
"rpc": [
"https://maalchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://7860.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://node1.maalscan.io/",
"https://rpc-bntest.maalscan.io/"
],
"shortName": "maal-test",
"slug": "maalchain-testnet",
"testnet": true
} as const satisfies Chain;
+14 -1
View File
@@ -13,16 +13,28 @@ export default {
"height": 512,
"format": "png"
}
},
{
"name": "DOScan",
"url": "https://explorer.doschain.com/",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmV2Nowzo81F6pi2qFcHePA4MwmmdMKBMUzBJUrxcymxx4",
"width": 512,
"height": 512,
"format": "png"
}
}
],
"faucets": [],
"features": [],
"icon": {
"url": "ipfs://QmV2Nowzo81F6pi2qFcHePA4MwmmdMKBMUzBJUrxcymxx4",
"width": 512,
"height": 512,
"format": "png"
},
"infoURL": "https://doschain.io",
"infoURL": "https://doschain.com/",
"name": "DOS Chain",
"nativeCurrency": {
"name": "DOS",
@@ -30,6 +42,7 @@ export default {
"decimals": 18
},
"networkId": 7979,
"redFlags": [],
"rpc": [
"https://dos-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://7979.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
+1 -3
View File
@@ -31,8 +31,6 @@ export default {
"rpc": [
"https://mumbai.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://80001.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://polygon-mumbai.infura.io/v3/${INFURA_API_KEY}",
"https://polygon-mumbai.g.alchemy.com/v2/${ALCHEMY_API_KEY}",
"https://rpc-mumbai.maticvigil.com",
"https://polygon-mumbai-bor.publicnode.com",
"wss://polygon-mumbai-bor.publicnode.com",
@@ -41,6 +39,6 @@ export default {
],
"shortName": "maticmum",
"slug": "mumbai",
"testnet": false,
"testnet": true,
"title": "Polygon Testnet Mumbai"
} as const satisfies Chain;
+41
View File
@@ -0,0 +1,41 @@
import type { Chain } from "../src/types";
export default {
"chain": "TQF",
"chainId": 8192,
"explorers": [
{
"name": "blockscout",
"url": "https://toruscan.com",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM",
"width": 551,
"height": 540,
"format": "png"
}
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreidchntjaxmq52cuqqoalpajk5ssk4p77k7n4jgywqmkpldo5qgobm",
"width": 1200,
"height": 1200,
"format": "png"
},
"infoURL": "https://docs.toruschain.com",
"name": "Torus Mainnet",
"nativeCurrency": {
"name": "TQF",
"symbol": "TQF",
"decimals": 18
},
"networkId": 8192,
"rpc": [
"https://torus.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://8192.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.toruschain.com"
],
"shortName": "tqf",
"slug": "torus",
"testnet": false
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "zFirst AvaCloud Subnet Thirdweb",
"chainId": 82807,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": ".svg"
},
"infoURL": "https://avacloud.io",
"name": "zFirst AvaCloud Subnet Thirdweb",
"nativeCurrency": {
"name": "zFirst AvaCloud Subnet Thirdweb",
"symbol": "YOOO",
"decimals": 18
},
"networkId": 82807,
"redFlags": [],
"rpc": [
"https://zfirst-avacloud-subnet-thirdweb.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://82807.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/f2ea180d-0fda-4b06-9b2e-53a65d3fd789"
],
"shortName": "zFirst AvaCloud Subnet Thirdweb",
"slug": "zfirst-avacloud-subnet-thirdweb",
"testnet": true
} as const satisfies Chain;
+13 -1
View File
@@ -6,10 +6,22 @@ export default {
{
"name": "Dodao Explorer",
"url": "https://tanssi-evmexplorer.netlify.app/?rpcUrl=https://fraa-dancebox-3041-rpc.a.dancebox.tanssi.network",
"standard": "none"
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmdWsi6mhs6Agb3LF4uycUwx2fgNmwkuAGb7JmsLPkwd3j",
"width": 636,
"height": 629,
"format": "png"
}
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmdWsi6mhs6Agb3LF4uycUwx2fgNmwkuAGb7JmsLPkwd3j",
"width": 636,
"height": 629,
"format": "png"
},
"infoURL": "https://dodao.dev/",
"name": "Dodao",
"nativeCurrency": {
+1 -1
View File
@@ -42,5 +42,5 @@ export default {
],
"shortName": "bnbt",
"slug": "binance-testnet",
"testnet": false
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 993535,
"explorers": [],
"faucets": [],
"features": [],
"icon": {
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
"width": 256,
"height": 256,
"format": ".svg"
},
"infoURL": "https://avacloud.io",
"name": "qr1120y1",
"nativeCurrency": {
"name": "qr1120y1 Token",
"symbol": "LMK",
"decimals": 18
},
"networkId": 993535,
"redFlags": [],
"rpc": [
"https://qr1120y1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://993535.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/qr1120y1/testnet/rpc"
],
"shortName": "qr1120y1",
"slug": "qr1120y1",
"testnet": true
} as const satisfies Chain;
+2
View File
@@ -29,6 +29,8 @@ export default {
"https://9996.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-msc.mindchain.info/",
"https://seednode.mindchain.info",
"https://archive.mindchain.info/",
"wss://archive.mindchain.info/ws",
"wss://seednode.mindchain.info/ws"
],
"shortName": "MIND",
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/chains",
"version": "0.1.58",
"version": "0.1.60",
"main": "dist/thirdweb-dev-chains.cjs.js",
"module": "dist/thirdweb-dev-chains.esm.js",
"exports": {
+11 -1
View File
@@ -95,7 +95,11 @@ export * from "./types";
export * from "./utils";
export * from "./async";
export const defaultChains = [c1, c5, c8453, c84531, c137, c80001, c42161, c421613, c10, c420, c56, c97, c250, c4002, c43114, c43113, c1337];
// @ts-expect-error - TODO: fix this later
\/**
* @deprecated use \`fetchChains()\` instead
*\/
\/\/ @ts-expect-error - TODO: fix this later
export const allChains: Chain[] = [${exportNames.join(", ")}];
type ChainsById = {
@@ -152,6 +156,9 @@ function isValidChainSlug(slug: string): slug is ChainSlug {
return slug in chainIdsBySlug;
}
/**
* @deprecated use \`getChainByChainIdAsync()\` instead
*/
export function getChainByChainId<TChainId extends ChainId>(
chainId: TChainId | (number & {}),
) {
@@ -162,6 +169,9 @@ export function getChainByChainId<TChainId extends ChainId>(
throw new Error(\`Chain with chainId "\${chainId}" not found\`);
}
/**
* @deprecated use \`getChainBySlugAsync()\` instead
*/
export function getChainBySlug<TSlug extends ChainSlug>(
slug: TSlug | (string & {}),
) {
+50 -1
View File
@@ -4,8 +4,16 @@ type FetchChainResponse = {
data: Chain;
error: unknown;
};
// cache of chainId -> Chain
const chainCache: Record<number, Chain> = {};
// cache of slug -> chainId
const slugToChainId: Record<string, keyof typeof chainCache> = {};
export async function fetchChain(chainIdOrSlug: number | string) {
if (typeof chainIdOrSlug === "string" && chainIdOrSlug in slugToChainId) {
return chainCache[slugToChainId[chainIdOrSlug]];
} else if (typeof chainIdOrSlug === "number" && chainIdOrSlug in chainCache) {
return chainCache[chainIdOrSlug];
}
const res = await fetch(
`https://api.thirdweb.com/v1/chains/${chainIdOrSlug}`,
);
@@ -19,6 +27,11 @@ export async function fetchChain(chainIdOrSlug: number | string) {
console.debug("[chains] fetchChain() error", json.error);
return null;
}
const chain = json.data;
// store the chain in chainCache
chainCache[chain.chainId] = chain;
// store the slug<->chainId in slugToChainId
slugToChainId[chain.slug] = chain.chainId;
return json.data;
} catch (err) {
console.debug("[chains] fetchChain() failed", err);
@@ -31,10 +44,16 @@ type FetchChainsResponse = {
error: unknown;
};
const fetchChainsCache: Record<string, Chain[]> = {};
export async function fetchChains(options?: {
limit?: number;
offset?: number;
}) {
// cache key is based on limit and offset (options)
const cacheKey = `l:${options?.limit ?? 0}o:${options?.offset ?? 0}`;
if (cacheKey in fetchChainsCache) {
return fetchChainsCache[cacheKey];
}
const url = new URL(`https://api.thirdweb.com/v1/chains`);
if (options?.limit && options.limit >= 1) {
url.searchParams.append("limit", options.limit.toString());
@@ -53,9 +72,39 @@ export async function fetchChains(options?: {
console.debug("[chains] fetchChain() error", json.error);
return null;
}
fetchChainsCache[cacheKey] = json.data;
return json.data;
} catch (err) {
console.debug("[chains] fetchChain() failed", err);
return null;
}
}
/**
*
* @param chainId - the chainId of the chain to resolve
* @returns a Promise that resolves to the Chain object
* @throws if the chainId is not found
*/
export async function getChainByChainIdAsync(chainId: number): Promise<Chain> {
const chain = await fetchChain(chainId);
if (!chain) {
throw new Error(`Chain with chainId "${chainId}" not found`);
}
return chain;
}
/**
*
* @param slug - the slug of the chain to resolve
* @returns a Promise that resolves to the Chain object
* @throws if the slug is not found
*/
export async function getChainBySlugAsync(slug: string): Promise<Chain> {
const chain = await fetchChain(slug);
if (!chain) {
throw new Error(`Chain with slug "${slug}" not found`);
}
return chain;
}
File diff suppressed because one or more lines are too long
+40
View File
@@ -1,5 +1,45 @@
# thirdweb
## 0.13.22
### Patch Changes
- Updated dependencies [[`cfe81b44`](https://github.com/thirdweb-dev/js/commit/cfe81b443205d84e58128b8d7d5f2dc940b12875), [`72c0bb10`](https://github.com/thirdweb-dev/js/commit/72c0bb10d6d765d1679b2b22ac63d85db101b5c4), [`ca618ea0`](https://github.com/thirdweb-dev/js/commit/ca618ea0c9ac5dc4f65cbfbfd39360e4150c72c7), [`aefc4cda`](https://github.com/thirdweb-dev/js/commit/aefc4cda4c4fad81411d3a9485931e28100b5718), [`a36c7e83`](https://github.com/thirdweb-dev/js/commit/a36c7e8331744879a169f84e97b66abf0ab44f56), [`4ae1cd63`](https://github.com/thirdweb-dev/js/commit/4ae1cd63bb7b471cae48a27bf6554c4953c1dc82), [`61c62b3f`](https://github.com/thirdweb-dev/js/commit/61c62b3f07a082ffd7620c949e3bcc6b75c104b5), [`7bb054e4`](https://github.com/thirdweb-dev/js/commit/7bb054e45c75450c8f465809d23eb66371f6ef8e), [`d20e7898`](https://github.com/thirdweb-dev/js/commit/d20e7898562a3914841522f2e09f88ca37dfdd4b)]:
- @thirdweb-dev/sdk@4.0.19
- @thirdweb-dev/storage@2.0.7
- @thirdweb-dev/wallets@2.1.11
- @thirdweb-dev/auth@4.1.14
## 0.13.21
### Patch Changes
- Updated dependencies [[`8c2d4e5e`](https://github.com/thirdweb-dev/js/commit/8c2d4e5ea7c38b3efa4d8d94c9822a92d271e59b), [`b0ecfd2d`](https://github.com/thirdweb-dev/js/commit/b0ecfd2d8d5cda33dc8f5ea2d20119cb901a0bcb), [`d28097f5`](https://github.com/thirdweb-dev/js/commit/d28097f508739cdbd6625e09c2ed0fe25a922c0f), [`b8332500`](https://github.com/thirdweb-dev/js/commit/b833250053320c8608109053f5cffe2dc96ce70a), [`8bf3be88`](https://github.com/thirdweb-dev/js/commit/8bf3be88be051178a7142618c4371d2f2ef26271), [`b02fb91a`](https://github.com/thirdweb-dev/js/commit/b02fb91a548a3f66f7677ced24be9397e0f9a7ba), [`f93bd325`](https://github.com/thirdweb-dev/js/commit/f93bd325e119381ddc3380a5ea43fe63fbcf42c0), [`2861dff1`](https://github.com/thirdweb-dev/js/commit/2861dff1f013b5150314fdaccaeadddbcf0d21c9), [`61b6a002`](https://github.com/thirdweb-dev/js/commit/61b6a00214716454222e67fe5fdb47edba391070), [`28fc3736`](https://github.com/thirdweb-dev/js/commit/28fc3736aa30c89690084aa2c62556c183796352), [`06805217`](https://github.com/thirdweb-dev/js/commit/06805217c26de203a57c21246acba22def8a78fa), [`2b4f1c8e`](https://github.com/thirdweb-dev/js/commit/2b4f1c8e55de091100fb5279887bcb19ea31d38c)]:
- @thirdweb-dev/wallets@2.1.10
- @thirdweb-dev/sdk@4.0.18
- @thirdweb-dev/chains@0.1.60
- @thirdweb-dev/storage@2.0.6
- @thirdweb-dev/auth@4.1.13
## 0.13.20
### Patch Changes
- Updated dependencies [[`47b0ed51`](https://github.com/thirdweb-dev/js/commit/47b0ed5171be5608ae23c19481a1b04948443c6a), [`d4ce855e`](https://github.com/thirdweb-dev/js/commit/d4ce855e5f5e6c4206a3efa250e92e690ae87281), [`b5bbe2bd`](https://github.com/thirdweb-dev/js/commit/b5bbe2bd438179c38451bc2cfa20a54fc79e4f3a)]:
- @thirdweb-dev/chains@0.1.59
- @thirdweb-dev/wallets@2.1.9
- @thirdweb-dev/sdk@4.0.17
- @thirdweb-dev/auth@4.1.12
## 0.13.19
### Patch Changes
- Updated dependencies [[`36600dec`](https://github.com/thirdweb-dev/js/commit/36600decefca7b9ebb1924757b4186b559e439f6), [`1094a03a`](https://github.com/thirdweb-dev/js/commit/1094a03a04f3e7ade84af0f7a6073794c0904cb1), [`7c45941b`](https://github.com/thirdweb-dev/js/commit/7c45941b57fb5a6f83be507ee64dbf885d93c9d4)]:
- @thirdweb-dev/auth@4.1.11
- @thirdweb-dev/wallets@2.1.8
- @thirdweb-dev/sdk@4.0.16
## 0.13.18
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "thirdweb",
"main": "dist/cli/index.js",
"version": "0.13.18",
"version": "0.13.22",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/cli",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
+9 -2
View File
@@ -39,7 +39,14 @@
"@types/treeify": "^1.0.2",
"benchmark": "^2.1.4",
"eslint-config-thirdweb": "workspace:*",
"typescript": "^5.1.6"
"typescript": "^5.1.6",
"circomlibjs": "^0.1.7",
"crypto": "0.0.3",
"ethereum-cryptography": "^1.0.3",
"ethereumjs-util": "^7.0.9",
"keccak256": "^1.0.6",
"sha1": "^1.1.1",
"tape": "^4.9.2"
},
"scripts": {
"format": "prettier --write 'src/**/*'",
@@ -48,7 +55,7 @@
"clean": "rm -rf dist/",
"build": "tsc && preconstruct build",
"push": "yalc push",
"test": "bun test",
"test": "bun test && node test/MerkleTree.js",
"benchmark:aes-encrypt": "bun benchmark/aes-encrypt.ts",
"benchmark:aes-decrypt": "bun benchmark/aes-decrypt.ts",
"benchmark:sha256": "bun benchmark/sha256.ts",
File diff suppressed because it is too large Load Diff
+98
View File
@@ -1,5 +1,103 @@
# @thirdweb-dev/react-core
## 4.1.12
### Patch Changes
- [#2043](https://github.com/thirdweb-dev/js/pull/2043) [`34546c24`](https://github.com/thirdweb-dev/js/commit/34546c24c74f4e9e1f5e94567ebe1017ad63aea5) Thanks [@MananTank](https://github.com/MananTank)! - when user clicks on "Switch to personal wallet" when they are connected to smart wallet and reloads the page, auto-connect to smart wallet
- [#1842](https://github.com/thirdweb-dev/js/pull/1842) [`a36c7e83`](https://github.com/thirdweb-dev/js/commit/a36c7e8331744879a169f84e97b66abf0ab44f56) Thanks [@MananTank](https://github.com/MananTank)! - JSDoc improvements
- [#1938](https://github.com/thirdweb-dev/js/pull/1938) [`4ae1cd63`](https://github.com/thirdweb-dev/js/commit/4ae1cd63bb7b471cae48a27bf6554c4953c1dc82) Thanks [@kien-ngo](https://github.com/kien-ngo)! - Add OneKey wallet
- [#2042](https://github.com/thirdweb-dev/js/pull/2042) [`61c62b3f`](https://github.com/thirdweb-dev/js/commit/61c62b3f07a082ffd7620c949e3bcc6b75c104b5) Thanks [@MananTank](https://github.com/MananTank)! - Improved JSDoc comments and Type exports
- [#2039](https://github.com/thirdweb-dev/js/pull/2039) [`cd87be4a`](https://github.com/thirdweb-dev/js/commit/cd87be4a24a9a3a552fbc4f33da6fcb08b7da88b) Thanks [@kien-ngo](https://github.com/kien-ngo)! - Remove barrel files
- Updated dependencies [[`cfe81b44`](https://github.com/thirdweb-dev/js/commit/cfe81b443205d84e58128b8d7d5f2dc940b12875), [`72c0bb10`](https://github.com/thirdweb-dev/js/commit/72c0bb10d6d765d1679b2b22ac63d85db101b5c4), [`ca618ea0`](https://github.com/thirdweb-dev/js/commit/ca618ea0c9ac5dc4f65cbfbfd39360e4150c72c7), [`aefc4cda`](https://github.com/thirdweb-dev/js/commit/aefc4cda4c4fad81411d3a9485931e28100b5718), [`a36c7e83`](https://github.com/thirdweb-dev/js/commit/a36c7e8331744879a169f84e97b66abf0ab44f56), [`4ae1cd63`](https://github.com/thirdweb-dev/js/commit/4ae1cd63bb7b471cae48a27bf6554c4953c1dc82), [`61c62b3f`](https://github.com/thirdweb-dev/js/commit/61c62b3f07a082ffd7620c949e3bcc6b75c104b5), [`7bb054e4`](https://github.com/thirdweb-dev/js/commit/7bb054e45c75450c8f465809d23eb66371f6ef8e), [`d20e7898`](https://github.com/thirdweb-dev/js/commit/d20e7898562a3914841522f2e09f88ca37dfdd4b)]:
- @thirdweb-dev/sdk@4.0.19
- @thirdweb-dev/storage@2.0.7
- @thirdweb-dev/wallets@2.1.11
- @thirdweb-dev/auth@4.1.14
## 4.1.11
### Patch Changes
- [#2007](https://github.com/thirdweb-dev/js/pull/2007) [`e79b2935`](https://github.com/thirdweb-dev/js/commit/e79b293562bbcf4af6fbcb4829b2acb4cb3e2cb4) Thanks [@kien-ngo](https://github.com/kien-ngo)! - Get the native token balance of a wallet address on the `activeChain` network set in the `ThirdwebProvider`
```ts
const balanceQuery = useBalanceForAddress(walletAddress);
console.log(balanceQuery.data);
```
- [#1926](https://github.com/thirdweb-dev/js/pull/1926) [`8c2d4e5e`](https://github.com/thirdweb-dev/js/commit/8c2d4e5ea7c38b3efa4d8d94c9822a92d271e59b) Thanks [@kien-ngo](https://github.com/kien-ngo)! - Add Rabby browser extension
- [#2001](https://github.com/thirdweb-dev/js/pull/2001) [`a27b10c5`](https://github.com/thirdweb-dev/js/commit/a27b10c5c3400500ef0138069acc550b3a07ffc6) Thanks [@iketw](https://github.com/iketw)! - Don't disconnect wallet if connecting
- [#2016](https://github.com/thirdweb-dev/js/pull/2016) [`94559129`](https://github.com/thirdweb-dev/js/commit/9455912932c71f3ef9b67461bf5604f1ea1f71e8) Thanks [@iketw](https://github.com/iketw)! - Share WalletConnectHandler between React and RN to support wallets as receivers
- [#1997](https://github.com/thirdweb-dev/js/pull/1997) [`50749662`](https://github.com/thirdweb-dev/js/commit/507496627bcd77b49bb027b24996a31c57e04819) Thanks [@MananTank](https://github.com/MananTank)! - - Fixes issue #1708
- Fixes smart wallet icon shown even after clicking on "Switch to Personal wallet" in ConnectWallet dropdown
- [#1987](https://github.com/thirdweb-dev/js/pull/1987) [`b3394277`](https://github.com/thirdweb-dev/js/commit/b3394277c77e4af130151111e056e27a28ac893a) Thanks [@MananTank](https://github.com/MananTank)! - Improved JSDoc comments and type exports
- [#1928](https://github.com/thirdweb-dev/js/pull/1928) [`2b4f1c8e`](https://github.com/thirdweb-dev/js/commit/2b4f1c8e55de091100fb5279887bcb19ea31d38c) Thanks [@kien-ngo](https://github.com/kien-ngo)! - Add Crypto.com Defi wallet
- [#2015](https://github.com/thirdweb-dev/js/pull/2015) [`4c488aa3`](https://github.com/thirdweb-dev/js/commit/4c488aa31f6fadc13759ff60f30230b929feb314) Thanks [@MananTank](https://github.com/MananTank)! - Fix auto-connecting a personal wallet for smart/safe wallet
- Updated dependencies [[`8c2d4e5e`](https://github.com/thirdweb-dev/js/commit/8c2d4e5ea7c38b3efa4d8d94c9822a92d271e59b), [`b0ecfd2d`](https://github.com/thirdweb-dev/js/commit/b0ecfd2d8d5cda33dc8f5ea2d20119cb901a0bcb), [`d28097f5`](https://github.com/thirdweb-dev/js/commit/d28097f508739cdbd6625e09c2ed0fe25a922c0f), [`b8332500`](https://github.com/thirdweb-dev/js/commit/b833250053320c8608109053f5cffe2dc96ce70a), [`8bf3be88`](https://github.com/thirdweb-dev/js/commit/8bf3be88be051178a7142618c4371d2f2ef26271), [`b02fb91a`](https://github.com/thirdweb-dev/js/commit/b02fb91a548a3f66f7677ced24be9397e0f9a7ba), [`f93bd325`](https://github.com/thirdweb-dev/js/commit/f93bd325e119381ddc3380a5ea43fe63fbcf42c0), [`2861dff1`](https://github.com/thirdweb-dev/js/commit/2861dff1f013b5150314fdaccaeadddbcf0d21c9), [`61b6a002`](https://github.com/thirdweb-dev/js/commit/61b6a00214716454222e67fe5fdb47edba391070), [`28fc3736`](https://github.com/thirdweb-dev/js/commit/28fc3736aa30c89690084aa2c62556c183796352), [`06805217`](https://github.com/thirdweb-dev/js/commit/06805217c26de203a57c21246acba22def8a78fa), [`2b4f1c8e`](https://github.com/thirdweb-dev/js/commit/2b4f1c8e55de091100fb5279887bcb19ea31d38c)]:
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
## 4.1.10
### Patch Changes
- [#1996](https://github.com/thirdweb-dev/js/pull/1996) [`4bb8f5b1`](https://github.com/thirdweb-dev/js/commit/4bb8f5b15e58de39c5edccc7476da3e4907d7688) Thanks [@MananTank](https://github.com/MananTank)! - Revert commit fb0cb676b996fe386dcc53b5a6dab03f88e76175
- Updated dependencies [[`47b0ed51`](https://github.com/thirdweb-dev/js/commit/47b0ed5171be5608ae23c19481a1b04948443c6a), [`d4ce855e`](https://github.com/thirdweb-dev/js/commit/d4ce855e5f5e6c4206a3efa250e92e690ae87281), [`b5bbe2bd`](https://github.com/thirdweb-dev/js/commit/b5bbe2bd438179c38451bc2cfa20a54fc79e4f3a)]:
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
## 4.1.9
### Patch Changes
- [#1952](https://github.com/thirdweb-dev/js/pull/1952) [`fb0cb676`](https://github.com/thirdweb-dev/js/commit/fb0cb676b996fe386dcc53b5a6dab03f88e76175) Thanks [@MananTank](https://github.com/MananTank)! - - Add `ConnectEmbed`` component to embed the ConnectWallet's Modal UI directly in page
- Fix `ConnectWallet` component setting personal wallet as "connected" wallet when connecting a Safe / Smart Wallet
- [#1921](https://github.com/thirdweb-dev/js/pull/1921) [`1094a03a`](https://github.com/thirdweb-dev/js/commit/1094a03a04f3e7ade84af0f7a6073794c0904cb1) Thanks [@kien-ngo](https://github.com/kien-ngo)! - Add Coin98 wallet
- [#1971](https://github.com/thirdweb-dev/js/pull/1971) [`12d85dec`](https://github.com/thirdweb-dev/js/commit/12d85dec10f47d6520b737a23576e4f832abb47f) Thanks [@iketw](https://github.com/iketw)! - Adds usePersonalWalletAddress hook to React/RN
```typescript
// React
import { usePersonalWalletAddress } from "@thirdweb-dev/react";
const personalWalletAddress = usePersonalWalletAddress();
```
```typescript
// React-Native
import { usePersonalWalletAddress } from "@thirdweb-dev/react-native";
const personalWalletAddress = usePersonalWalletAddress();
```
- Updated dependencies [[`36600dec`](https://github.com/thirdweb-dev/js/commit/36600decefca7b9ebb1924757b4186b559e439f6), [`1094a03a`](https://github.com/thirdweb-dev/js/commit/1094a03a04f3e7ade84af0f7a6073794c0904cb1), [`7c45941b`](https://github.com/thirdweb-dev/js/commit/7c45941b57fb5a6f83be507ee64dbf885d93c9d4)]:
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
- @thirdweb-dev/[email protected]
## 4.1.8
### Patch Changes
+5 -3
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/react-core",
"version": "4.1.8",
"version": "4.1.12",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-core",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
@@ -52,7 +52,8 @@
"generate-docs:evm": "api-extractor run --local --config ./config/api-extractor-evm.json && api-documenter markdown -i ./temp -o ./docs/evm && rm -rf ./temp-evm && mv ./temp ./temp-evm",
"generate-snippets": "node ./scripts/generate-snippets-evm.mjs && node ./scripts/generate-feature-snippets-evm.mjs",
"build": "tsc && preconstruct build",
"push": "yalc push"
"push": "yalc push",
"typedoc": "node scripts/typedoc.mjs"
},
"sideEffects:": false,
"devDependencies": {
@@ -83,7 +84,8 @@
"ethers": "^5.7.2",
"prettier": "^3.0.0",
"react": "^18.2.0",
"typescript": "^5.1.6"
"typescript": "^5.1.6",
"typedoc-gen": "workspace:*"
},
"dependencies": {
"@tanstack/react-query": "^4.33.0",
+14
View File
@@ -0,0 +1,14 @@
// @ts-check
/* eslint-disable better-tree-shaking/no-top-level-side-effects */
import { typedoc } from "typedoc-gen";
typedoc({
entryPoints: ["src/index.ts"],
exclude: [
"**/packages/sdk/**",
"**/packages/wallets/**",
"**/packages/chains/**",
],
output: "both", // TODO: change this to 'json' when old portal is fully migrated to new portal
});
@@ -29,10 +29,12 @@ type NetworkMetadata = {
/**
*
* @deprecated - use `useChain`, `useSwitchChain`, `useChainId` instead
*
* Hook for getting metadata about the network the current wallet is connected to and switching networks
*
* It's important to note that some wallet apps do not support programmatic network switching and switchNetwork will be undefined.
* For those situations, you can typically switch networks in the wallet app this hook will still work.
*
* @example
* ```javascript
* import { useNetwork } from "@thirdweb-dev/react";
@@ -47,12 +49,9 @@ type NetworkMetadata = {
* </button>
* );
* };
```
* ```
*
* It's important to note that some wallet apps do not support programmatic network switching and switchNetwork will be undefined.
* For those situations, you can typically switch networks in the wallet app this hook will still work.
*
* @public
* @deprecated - use `useChain`, `useSwitchChain`, `useChainId` instead
*/
export function useNetwork(): [NetworkMetadata, SwitchNetwork | undefined] {
const chain = useChain();
@@ -2,16 +2,20 @@ import { useWalletContext } from "../providers/thirdweb-wallet-provider";
import invariant from "tiny-invariant";
import type {
BloctoWallet,
Coin98Wallet,
CoinbaseWallet,
CoreWallet,
CryptoDefiWallet,
EmbeddedWallet,
FrameWallet,
LocalWallet,
MagicLink,
MetaMaskWallet,
OKXWallet,
OneKeyWallet,
PaperWallet,
PhantomWallet,
RabbyWallet,
RainbowWallet,
SafeWallet,
SmartWallet,
@@ -26,6 +30,7 @@ export type WalletId = (typeof walletIds)[keyof typeof walletIds];
type WalletIdToWalletTypeMap = {
metamask: MetaMaskWallet;
coin98: Coin98Wallet;
coinbase: CoinbaseWallet;
coreWallet: CoreWallet;
rainbowWallet: RainbowWallet;
@@ -43,6 +48,9 @@ type WalletIdToWalletTypeMap = {
phantom: PhantomWallet;
walletConnectV1: WalletConnect;
okx: OKXWallet;
oneKey: OneKeyWallet;
cryptoDefiWallet: CryptoDefiWallet;
rabby: RabbyWallet;
};
/**
@@ -3,6 +3,9 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { useMemo } from "react";
export interface QueryClientProviderProps {
/**
* If you are using React Query and have your own `QueryClient`, you can pass it as the queryClient prop to use that instead of the SDK's default client.
*/
queryClient?: QueryClient;
}
@@ -1,5 +1,8 @@
import { createContext } from "react";
/**
* @internal
*/
export const ThirdwebThemeContext = /* @__PURE__ */ createContext<
"light" | "dark" | undefined
>(undefined);
@@ -56,6 +56,9 @@ export interface ThirdwebProviderCoreProps<TChains extends Chain[]>
theme?: "light" | "dark";
/**
* @internal
*/
createWalletStorage?: CreateAsyncStorage;
/**
@@ -68,13 +71,19 @@ export interface ThirdwebProviderCoreProps<TChains extends Chain[]>
*
* If wallet fails to connect in this time, it will stop trying to connect and user will have to manually connect
*
* @defaultValue 15000
* By default, it is set to `15000` milliseconds (15 seconds)
*/
autoConnectTimeout?: number;
/**
* @internal
*/
signerWallet?: WalletConfig<SignerWallet>;
}
/**
* @internal
*/
export const ThirdwebProviderCore = <TChains extends Chain[]>({
createWalletStorage = createAsyncLocalStorage,
...props
@@ -11,6 +11,9 @@ import {
ConnectParams,
CreateAsyncStorage,
SignerWallet,
WalletConnectHandler,
WalletConnectReceiverConfig,
WalletConnectV2Handler,
walletIds,
} from "@thirdweb-dev/wallets";
import { Signer } from "ethers";
@@ -24,6 +27,7 @@ import {
useRef,
useState,
} from "react";
import { isWalletConnectReceiverEnabled } from "../utils/receiver";
const LAST_CONNECTED_WALLET_STORAGE_KEY = "lastConnectedWallet";
@@ -92,6 +96,7 @@ type ThirdwebWalletContextData = {
getWalletConfig: (walletInstance: WalletInstance) => WalletConfig | undefined;
activeChainSetExplicitly: boolean;
clientId?: string;
walletConnectHandler: WalletConnectHandler | undefined;
};
const ThirdwebWalletContext = /* @__PURE__ */ createContext<
@@ -131,6 +136,9 @@ export function ThirdwebWalletProvider(
WalletConfig | undefined
>();
const [walletConnectHandler, setWalletConnectHandler] =
useState<WalletConnectHandler>();
if (!lastConnectedWalletStorage) {
lastConnectedWalletStorage =
props.createWalletStorage("coordinatorStorage");
@@ -172,6 +180,34 @@ export function ThirdwebWalletProvider(
}
}, [activeWallet, props.chains]);
useEffect(() => {
if (!activeWallet) {
return;
}
const initWCHandler = async () => {
const wcReceiverOptions =
activeWallet?.getOptions() as WalletConnectReceiverConfig;
const handler = new WalletConnectV2Handler(
{
walletConnectReceiver: {
...(wcReceiverOptions?.walletConnectReceiver === true
? {}
: wcReceiverOptions?.walletConnectReceiver),
},
},
activeWallet,
);
await handler.init();
setWalletConnectHandler(handler);
};
if (isWalletConnectReceiverEnabled(activeWallet)) {
initWCHandler();
}
}, [activeWallet]);
const setConnectedWallet = useCallback(
async (
wallet: WalletInstance,
@@ -267,18 +303,14 @@ export function ThirdwebWalletProvider(
// Auto Connect
useEffect(() => {
// do not auto connect if signerWallet is given
if (props.signerWallet) {
return;
}
if (autoConnectTriggered.current) {
return;
}
// if explicitly set to false, don't auto connect
// by default, auto connect
if (props.shouldAutoConnect === false) {
setConnectionStatus("disconnected");
autoConnectTriggered.current = true;
// do not auto connect if signerWallet is given
if (props.signerWallet) {
return;
}
@@ -292,7 +324,12 @@ export function ThirdwebWalletProvider(
return;
}
autoConnectTriggered.current = true;
// if explicitly set to false, don't auto connect
// by default, auto connect
if (props.shouldAutoConnect === false) {
setConnectionStatus("disconnected");
return;
}
async function autoconnect() {
const walletInfo = await getLastConnectedWalletInfo();
@@ -312,17 +349,31 @@ export function ThirdwebWalletProvider(
return;
}
const personalWalletInfo = walletInfo.connectParams?.personalWallet;
let _personalWalletInfo = walletInfo.connectParams?.personalWallet;
// if the wallet requires a personal wallet (like smartWallet), but the saved data does not have it
// this can happen when user clicks on "switch to personal wallet" and reloads the page
// OR when user clicks on magic link social login
if (walletObj.personalWallets && !_personalWalletInfo) {
// fix the connectParams by adding the personal wallet info
_personalWalletInfo = {
walletId: walletInfo.walletId,
connectParams: walletInfo.connectParams,
};
}
const personalWalletInfo = _personalWalletInfo;
if (personalWalletInfo) {
const personalWallets = walletObj.personalWallets || [];
const personalWalleObj = personalWallets.find(
const personalWalletObj = personalWallets.find(
(W) => W.id === personalWalletInfo.walletId,
);
if (personalWalleObj) {
if (personalWalletObj) {
// create a personal wallet instance and auto connect it
const personalWalletInstance = createWalletInstance(personalWalleObj);
const personalWalletInstance =
createWalletInstance(personalWalletObj);
try {
await timeoutPromise(
@@ -525,6 +576,7 @@ export function ThirdwebWalletProvider(
},
activeChainSetExplicitly: props.activeChainSetExplicitly,
clientId: props.clientId,
walletConnectHandler: walletConnectHandler,
}}
>
{props.children}
@@ -532,6 +584,9 @@ export function ThirdwebWalletProvider(
);
}
/**
* @internal
*/
export function useWalletContext() {
const ctx = useContext(ThirdwebWalletContext);
if (!ctx) {
@@ -542,6 +597,16 @@ export function useWalletContext() {
return ctx;
}
export function useWalletConnectHandler() {
const ctx = useWalletContext();
if (!ctx) {
throw new Error(
`useWalletConnectHandler() can only be used inside <ThirdwebProvider />`,
);
}
return ctx.walletConnectHandler;
}
async function getLastConnectedWalletInfo() {
const str = await lastConnectedWalletStorage.getItem(
LAST_CONNECTED_WALLET_STORAGE_KEY,
@@ -18,6 +18,9 @@ export function neverPersist<TKey extends QueryKey>(key: TKey) {
return [...key, NEVER_PERSIST_QUERY_POSTFIX] as const;
}
/**
* @internal
*/
export function shouldNeverPersistQuery<TKey extends QueryKey>(
key: TKey,
): boolean {
@@ -2,8 +2,7 @@ import invariant from "tiny-invariant";
/**
* Makes a parameter required to be passed, but still allows it to be null or undefined.
*
* @beta
* @internal
*/
export type RequiredParam<T> = T | null | undefined;
+4 -2
View File
@@ -43,13 +43,15 @@ export type WalletConfig<I extends WalletInstance = WalletInstance> = {
/**
* If true, this wallet will be tagged as "recommended" in ConnectWallet Modal and will be shown at the top of the list
* @defaultValue false
*
* By default is set to `false`
*/
recommended?: boolean;
/**
* If the wallet can sign transactions without user interaction, set this to true.
* @defaultValue false
*
* By default is set to `false`
*/
isHeadless?: boolean;
};
@@ -5,6 +5,9 @@ export interface IPFSResolverOptions {
gatewayUrl: string;
}
/**
* @internal
*/
export async function resolveMimeType(url?: string) {
if (!url) {
return undefined;
@@ -0,0 +1,10 @@
import { WalletInstance } from "../types/wallet";
export const isWalletConnectReceiverEnabled = (wallet?: WalletInstance) => {
const options = wallet?.getOptions();
return (
options &&
"walletConnectReceiver" in options &&
options.walletConnectReceiver
);
};
@@ -7,9 +7,12 @@ import {
import { useQueryClient } from "@tanstack/react-query";
import { useWallet } from "../../core/hooks/wallet-hooks";
import { WalletData } from "@thirdweb-dev/wallets";
import { useLogout } from "../hooks/auth";
import { useLogout } from "../hooks/auth/useLogout";
import { useSwitchAccount } from "../hooks/auth/useSwitchAccount";
/**
* @internal
*/
export const ThirdwebAuthProvider: React.FC<
PropsWithChildren<{ value?: ThirdwebAuthConfig }>
> = ({ value, children }) => {
@@ -9,7 +9,6 @@ export interface ISecureStorage {
/**
* The configuration to use the react SDK with an [auth](https://portal.thirdweb.com/auth) server.
*
* @beta
*/
export interface ThirdwebAuthConfig {
/**
@@ -11,6 +11,9 @@ export const ThirdwebConfigContext = /* @__PURE__ */ createContext<
ThirdwebConfigContext | undefined
>(undefined);
/**
* @internal
*/
export const ThirdwebConfigProvider: React.FC<
PropsWithChildren<{
value: ThirdwebConfigContext;
@@ -21,6 +24,9 @@ export const ThirdwebConfigProvider: React.FC<
</ThirdwebConfigContext.Provider>
);
/**
* @internal
*/
export function useThirdwebConfigContext() {
const context = useContext(ThirdwebConfigContext);
invariant(
@@ -31,6 +31,9 @@ export const ThirdwebConnectedWalletContext = /* @__PURE__ */ createContext<
ThirdwebConnectedWalletContext | undefined
>(undefined);
/**
* @internal
*/
export const ThirdwebConnectedWalletProvider: React.FC<
PropsWithChildren<{ signer?: Signer }>
> = ({ signer, children }) => {
@@ -34,7 +34,6 @@ import invariant from "tiny-invariant";
* @returns a response object that includes an array of all accounts with their associated admin
* @twfeature AccountFactory
* @see {@link https://portal.thirdweb.com/react/react.useaccounts?utm_source=sdk | Documentation}
* @beta
*/
export function useAccounts(
contract: RequiredParam<SmartContract>,
@@ -66,7 +65,6 @@ export function useAccounts(
* @returns a response object that includes an array of all accounts associated with the address
* @twfeature AccountFactory
* @see {@link https://portal.thirdweb.com/react/react.useaccountsforaddress?utm_source=sdk | Documentation}
* @beta
*/
export function useAccountsForAddress(
contract: RequiredParam<SmartContract>,
@@ -102,7 +100,6 @@ export function useAccountsForAddress(
* @returns a boolean indicating if a account has been deployed for the given admin
* @twfeature AccountFactory
* @see {@link https://portal.thirdweb.com/react/react.useisaccountdeployed?utm_source=sdk | Documentation}
* @beta
*/
export function useIsAccountDeployed(
contract: RequiredParam<SmartContract>,
@@ -160,7 +157,6 @@ export function useIsAccountDeployed(
* @returns a mutation object that can be used to create a account
* @twfeature AccountFactory
* @see {@link https://portal.thirdweb.com/react/react.usecreateaccount?utm_source=sdk | Documentation}
* @beta
*/
export function useCreateAccount(contract: RequiredParam<SmartContract>) {
const activeChainId = useSDKChainId();
@@ -35,7 +35,6 @@ import { useWallet } from "../../../core/hooks/wallet-hooks";
* @returns a response object that includes an array of all signers of the provided account
* @twfeature Account
* @see {@link https://portal.thirdweb.com/react/react.useaccountsigners?utm_source=sdk | Documentation}
* @beta
*/
export function useAccountSigners(
contract: RequiredParam<SmartContract>,
@@ -67,7 +66,6 @@ export function useAccountSigners(
* @returns a response object that includes an array of all admins of the provided account
* @twfeature Account
* @see {@link https://portal.thirdweb.com/react/react.useaccountadmins?utm_source=sdk | Documentation}
* @beta
*/
export function useAccountAdmins(
contract: RequiredParam<SmartContract>,
@@ -99,7 +97,6 @@ export function useAccountAdmins(
* @returns a response object that includes an array of all admins of the provided account
* @twfeature Account
* @see {@link https://portal.thirdweb.com/react/react.useaccountadmins?utm_source=sdk | Documentation}
* @beta
*/
export function useAccountAdminsAndSigners(
contract: RequiredParam<SmartContract>,
@@ -28,7 +28,6 @@ import invariant from "tiny-invariant";
* @param contract - the {@link SmartContract} instance of the contract to get the appURI of
* @returns a response object that includes the appURI of the contract
* @twfeature AppURI
* @beta
*/
export function useAppURI<TContract extends ValidContractInstance>(
contract: RequiredParam<TContract>,
@@ -75,7 +74,6 @@ export function useAppURI<TContract extends ValidContractInstance>(
* @param contract - an instance of a {@link SmartContract}
* @returns a mutation object that can be used to update the appURI of a contract
* @twfeature AppUR
* @beta
*/
export function useSetAppURI(
contract: RequiredParam<ValidContractInstance>,
@@ -30,7 +30,6 @@ import invariant from "tiny-invariant";
/**
* The options to be passed as the second parameter to the {@link useClaimIneligibilityReasons} hook.
*
* @beta
*/
export type ClaimIneligibilityParams = {
// the wallet address to check claim eligibility for
@@ -42,7 +41,6 @@ export type ClaimIneligibilityParams = {
/**
* The params for the {@link useSetClaimConditions} hook mutation.
*
* @beta
*/
export type SetClaimConditionsParams = {
phases: ClaimConditionInput[];
@@ -66,7 +64,6 @@ export type SetClaimConditionsParams = {
* @returns a response object with the currently active claim condition
* @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1
* @see {@link https://portal.thirdweb.com/react/react.useactiveclaimcondition?utm_source=sdk | Documentation}
* @beta
*/
export function useActiveClaimCondition(
contract: RequiredParam<DropContract>,
@@ -122,7 +119,6 @@ export function useActiveClaimCondition(
* @returns a response object with the snapshot for the provided address
* @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1
* @see {@link https://portal.thirdweb.com/react/react.useclaimerproofs?utm_source=sdk | Documentation}
* @beta
*/
export function useClaimerProofs(
contract: RequiredParam<DropContract>,
@@ -186,7 +182,6 @@ export function useClaimerProofs(
* @returns a response object with the list of claim conditions
* @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1
* @see {@link https://portal.thirdweb.com/react/react.useclaimconditions?utm_source=sdk | Documentation}
* @beta
*/
export function useClaimConditions(
contract: RequiredParam<DropContract>,
@@ -241,7 +236,6 @@ export function useClaimConditions(
* @returns a response object with the reasons for the claim ineligibility
* @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1
* @see {@link https://portal.thirdweb.com/react/react.useclaimineligibilityreasons?utm_source=sdk | Documentation}
* @beta
*/
export function useClaimIneligibilityReasons(
contract: RequiredParam<DropContract>,
@@ -311,7 +305,6 @@ export function useClaimIneligibilityReasons(
* @returns the active claim condition for the wallet address or null if there is no active claim condition
* @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1
* @see {@link https://portal.thirdweb.com/react/react.useactiveclaimconditionforwallet?utm_source=sdk | Documentation}
* @beta
*/
export function useActiveClaimConditionForWallet(
contract: RequiredParam<DropContract>,
@@ -467,7 +460,6 @@ export function useActiveClaimConditionForWallet(
* @returns a mutation object that can be used to set claim conditions
* @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1
* @see {@link https://portal.thirdweb.com/react/react.usesetclaimconditions?utm_source=sdk | Documentation}
* @beta
*/
export function useSetClaimConditions(
contract: RequiredParam<DropContract>,
@@ -546,7 +538,6 @@ export function useSetClaimConditions(
* @param contract - an instance of a {@link DropContract}
* @returns a mutation object that can be used to reset claim conditions
* @twfeature ERC20ClaimPhasesV2 | ERC20ClaimPhasesV1 | ERC20ClaimConditionsV2 | ERC20ClaimConditionsV1 | ERC721ClaimPhasesV2 | ERC721ClaimPhasesV1 | ERC721ClaimConditionsV2 | ERC721ClaimConditionsV1 | ERC1155ClaimPhasesV2 | ERC1155ClaimPhasesV1 | ERC1155ClaimConditionsV2 | ERC1155ClaimConditionsV1
* @beta
*/
export function useResetClaimConditions(
contract: RequiredParam<DropContract>,
@@ -37,7 +37,6 @@ import invariant from "tiny-invariant";
* @returns the wallet address of the primary sales recipient
* @twfeature PrimarySale
* @see {@link https://portal.thirdweb.com/react/react.useprimarysalerecipient?utm_source=sdk | Documentation}
* @beta
*/
export function usePrimarySaleRecipient(
contract: RequiredParam<ValidContractInstance>,
@@ -89,7 +88,6 @@ export function usePrimarySaleRecipient(
* @returns a mutation object that can be used to update the primary sales recipient
* @twfeature PrimarySale
* @see {@link https://portal.thirdweb.com/react/react.useupdateprimarysalerecipient?utm_source=sdk | Documentation}
* @beta
*/
export function useUpdatePrimarySaleRecipient(
contract: RequiredParam<ValidContractInstance>,
@@ -140,7 +138,6 @@ export function useUpdatePrimarySaleRecipient(
* @returns an object containing recipient address and the royalty basis points
* @twfeature Royalty
* @see {@link https://portal.thirdweb.com/react/react.useroyaltysettings?utm_source=sdk | Documentation}
* @beta
*/
export function useRoyaltySettings(
contract: RequiredParam<ValidContractInstance>,
@@ -192,7 +189,6 @@ export function useRoyaltySettings(
* @returns a mutation object that can be used to update the royalty settings
* @twfeature Royalty
* @see {@link https://portal.thirdweb.com/react/react.useupdateroyaltysettings?utm_source=sdk | Documentation}
* @beta
*/
export function useUpdateRoyaltySettings(
contract: RequiredParam<ValidContractInstance>,
@@ -239,7 +235,6 @@ export function useUpdateRoyaltySettings(
* @returns an object containing the platform fee basis points and the fee recipient address
* @twfeature PlatformFee
* @see {@link https://portal.thirdweb.com/react/react.useplatformfees?utm_source=sdk | Documentation}
* @beta
*/
export function usePlatformFees(
contract: RequiredParam<ValidContractInstance>,
@@ -290,7 +285,6 @@ export function usePlatformFees(
* @returns a mutation object that can be used to update the platform fees settings
* @twfeature PlatformFee
* @see {@link https://portal.thirdweb.com/react/react.useupdateplatformfees?utm_source=sdk | Documentation}
* @beta
*/
export function useUpdatePlatformFees(
contract: RequiredParam<ValidContractInstance>,
@@ -336,7 +330,6 @@ export function useUpdatePlatformFees(
* @param contract - an instance of a {@link SmartContract}
* @returns a {@link CustomContractMetadata} object containing the metadata
* @see {@link https://portal.thirdweb.com/react/react.usemetadata?utm_source=sdk | Documentation}
* @beta
*/
export function useMetadata(
contract: RequiredParam<ValidContractInstance>,
@@ -390,7 +383,6 @@ export function useMetadata(
* @param contract - an instance of a {@link SmartContract}
* @returns a mutation object that can be used to update the metadata
* @see {@link https://portal.thirdweb.com/react/react.useupdatemetadata?utm_source=sdk | Documentation}
* @beta
*/
export function useUpdateMetadata(
contract: RequiredParam<ValidContractInstance>,

Some files were not shown because too many files have changed in this diff Show More