Compare commits

..
Author SHA1 Message Date
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
d33227ab2b Version Packages (#2282)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-02-09 17:37:26 -08:00
Joaquim VergesandGitHub 53786fc306 [SDK] memoize extensions (#2291) 2024-02-10 01:00:42 +00:00
Manan TankandGitHub f85806c067 Update EmbeddedWallet name in CW (#2290) 2024-02-09 22:40:40 +00:00
Manan TankandGitHub 0155adcea4 Show EmbeddedWallet UI as initial screen in CW (#2289) 2024-02-09 20:57:32 +00:00
Manan TankandGitHub 74d76ff580 Add "Powered By Thirdweb" Branding in CW (#2288) 2024-02-09 16:32:27 +00:00
farhanW3andGitHub 537e5e063d [Usage]: Usage Schema to have new field (#2287) 2024-02-09 00:47:33 +00:00
Isaac DubuqueandGitHub a86478bf24 add sdk support for engine relayer options (#2233) 2024-02-09 00:40:52 +00:00
Joaquim VergesandGitHub 09de55f13c [SDK] Export MerkleTree helper functions (#2286) 2024-02-08 22:43:13 +00:00
23d0e55308 chore(chains): update chains (#2280)
Co-authored-by: GitHub Action <[email protected]>
2024-02-08 09:44:22 -08:00
FirekeeperandGitHub 185093c185 Unity 4.6.2 (#2284) 2024-02-08 14:35:00 +00:00
farhanW3andGitHub 77400fcf21 Added new properties to usage (#2281) 2024-02-08 01:34:19 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
6a41fe9829 Version Packages (#2274)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-02-07 13:11:26 -08:00
0092e2a317 fix(auth): Next.js App Router handler return type (#2278)
Signed-off-by: Jonas Daniels <[email protected]>
Co-authored-by: Jonas Daniels <[email protected]>
2024-02-07 12:47:09 -08:00
87b9e6d42d chore(chains): update chains (#2279)
Co-authored-by: GitHub Action <[email protected]>
2024-02-07 10:29:29 -08:00
github-actions[bot]andGitHub 336dfd3b37 chore(chains): update chains (#2277) 2024-02-07 08:52:01 -08:00
957c75a36e chore(chains): update chains (#2276)
Co-authored-by: GitHub Action <[email protected]>
2024-02-06 22:27:49 -08:00
357886e31b chore(chains): update chains (#2258)
Co-authored-by: GitHub Action <[email protected]>
2024-02-06 15:46:46 -08:00
DustinandGitHub 330c270f3c Update .env.example (#2272) 2024-02-06 13:52:51 -08:00
Joaquim VergesandGitHub 9096bdc0f1 [ServiceUtils] Add latency prop to CF worker logs (#2273) 2024-02-06 21:44:43 +00:00
saminaandGitHub 62ef83c9e0 Update pull_request_template.md (#2267)
Signed-off-by: samina <[email protected]>
2024-02-06 18:15:54 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
1e7a7a5f3c Version Packages (#2261)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-02-06 09:36:14 -08:00
Manan TankandGitHub 433d49e3ab [react-core] keep wallet states in sync (#2270) 2024-02-06 17:18:46 +00:00
Joaquim VergesandGitHub 5a3f7fa123 [ServiceUtil] add latency prop to logHttpRequest (#2266) 2024-02-06 05:08:46 +00:00
FirekeeperandGitHub 3857cba8ab Unity v4.6.1 (#2268) 2024-02-06 01:57:02 +00:00
Manan TankandGitHub 6a3cacb622 [react] Enforce compact CW modal size based on available space (#2260) 2024-02-02 17:35:52 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
bdf60e9890 Version Packages (#2257)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2024-02-01 17:26:18 -08:00
1e50caeed1 chore(chains): update chains (#2255)
Co-authored-by: GitHub Action <[email protected]>
2024-02-01 17:21:42 -08:00
Jonas DanielsandGitHub 1decd52a36 fix(gas-price): handle flag-chain overrides (#2256) 2024-02-02 01:10:37 +00:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
0b7010eccb Version Packages (#2249)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-02-01 15:52:14 -08:00
041c01341b chore(chains): update chains (#2250)
Co-authored-by: GitHub Action <[email protected]>
2024-02-01 15:09:04 -08:00
Manan TankandGitHub 439a377aa7 [react] add detailsModalFooter prop in ConnectWallet (#2252) 2024-02-01 21:53:21 +00:00
Nacho IacovinoandGitHub 4f52c29611 Update error message link (#2248) 2024-02-01 18:39:14 +00:00
374671fd9a chore(chains): update chains (#2247)
Co-authored-by: GitHub Action <[email protected]>
2024-01-31 21:25:01 -08:00
Jonas DanielsGitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>GitHub Action
0a9fc269ff Version Packages (#2246)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: GitHub Action <[email protected]>
2024-01-31 16:59:43 -08:00
iketwandGitHub 2e3cc7cdd4 Adds support for RN 0.73 and removes magic (#2225) 2024-02-01 00:34:28 +00:00
3ba15366be [Analytics] Unify client analytics (#2224)
Co-authored-by: ikethirdweb <[email protected]>
2024-01-31 23:46:44 +00:00
771bd1e1b2 chore(chains): update chains (#2245)
Co-authored-by: GitHub Action <[email protected]>
2024-01-31 01:05:57 -08:00
169 changed files with 4638 additions and 1833 deletions
+2 -1
View File
@@ -3,4 +3,5 @@
# used for unit tests that hit real IPFS gateway
# get a secret key from https://thirdweb.com/create-api-key
TW_SECRET_KEY=""
# Learn more about API keys. https://portal.thirdweb.com/account/api-keys
TW_SECRET_KEY=""
+6
View File
@@ -11,3 +11,9 @@ Short description of the bug fixed or feature added
- [ ] Automated tests: link to unit test file
- [ ] Manual tests: step by step instructions on how to test
## Contributor NFT
Paste in your wallet address below and we will airdrop you a special NFT when your pull request is merged.
```Address: ```
+37
View File
@@ -1,5 +1,42 @@
# @thirdweb-dev/auth
## 4.1.32
### Patch Changes
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.10
## 4.1.31
### Patch Changes
- [#2278](https://github.com/thirdweb-dev/js/pull/2278) [`0092e2a3`](https://github.com/thirdweb-dev/js/commit/0092e2a3177364ad26af15ecafb4381591dc9be1) Thanks [@hsynlms](https://github.com/hsynlms)! - fix(auth): Next.js App Router handler return type
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.9
## 4.1.30
### Patch Changes
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.8
## 4.1.29
### Patch Changes
- Updated dependencies []:
- @thirdweb-dev/wallets@2.4.7
## 4.1.28
### Patch Changes
- Updated dependencies [[`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a)]:
- @thirdweb-dev/wallets@2.4.6
## 4.1.27
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/auth",
"version": "4.1.27",
"version": "4.1.32",
"main": "dist/thirdweb-dev-auth.cjs.js",
"module": "dist/thirdweb-dev-auth.esm.js",
"browser": {
+2 -7
View File
@@ -58,13 +58,8 @@ export function ThirdwebAuth<
auth: new ThirdwebAuthSDK(cfg.wallet, cfg.domain),
};
async function ThirdwebAuthHandler(...args: [] | [NextRequest, ThirdwebNextContext]) {
if (args.length === 0) {
return async (req: NextRequest, ctx: ThirdwebNextContext): Promise<void | Response> =>
await ThirdwebAuthRouter(req, ctx, authCtx as ThirdwebAuthContext);
}
return ThirdwebAuthRouter(args[0], args[1], authCtx as ThirdwebAuthContext);
async function ThirdwebAuthHandler(req: NextRequest, ctx: ThirdwebNextContext) {
return await ThirdwebAuthRouter(req, ctx, authCtx as ThirdwebAuthContext);
}
return {
+30
View File
@@ -1,5 +1,35 @@
# @thirdweb-dev/chains
## 0.1.72
### Patch Changes
- [#2280](https://github.com/thirdweb-dev/js/pull/2280) [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.71
### Patch Changes
- [#2258](https://github.com/thirdweb-dev/js/pull/2258) [`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.70
### Patch Changes
- [#2255](https://github.com/thirdweb-dev/js/pull/2255) [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.69
### Patch Changes
- [#2247](https://github.com/thirdweb-dev/js/pull/2247) [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.68
### Patch Changes
- [#2245](https://github.com/thirdweb-dev/js/pull/2245) [`771bd1e1`](https://github.com/thirdweb-dev/js/commit/771bd1e1b280681992195103c22aafa1fb98f7e0) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
## 0.1.67
### Patch Changes
+1 -1
View File
@@ -31,5 +31,5 @@ export default {
"shortName": "Baobab",
"slip44": 1,
"slug": "klaytn-testnet-baobab",
"testnet": true
"testnet": false
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 103454,
"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": "Masa Testnet",
"nativeCurrency": {
"name": "Masa Testnet Token",
"symbol": "tMASA",
"decimals": 18
},
"networkId": 103454,
"redFlags": [],
"rpc": [
"https://masa-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://103454.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/masatestne/testnet/rpc"
],
"shortName": "Masa Testnet",
"slug": "masa-testnet",
"testnet": true
} as const satisfies Chain;
+3 -2
View File
@@ -42,11 +42,12 @@ export default {
"https://humans-ai.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1089.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://jsonrpc.humans.nodestake.top",
"https://humans-mainnet-evm.itrocket.net:443",
"https://humans-mainnet-evm.itrocket.net",
"https://humans-evm-rpc.staketab.org:443",
"https://evm.humans.stakepool.dev.br",
"https://mainnet-humans-evm.konsortech.xyz",
"https://evm-rpc.mainnet.humans.zone"
"https://evm-rpc.mainnet.humans.zone",
"https://json-rpc.humans.bh.rocks"
],
"shortName": "humans",
"slug": "humans-ai",
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "Dymension",
"chainId": 1100,
"explorers": [
{
"name": "dym.fyi",
"url": "https://dym.fyi",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreic4sjyqikz33xzpcctczvkiwfj44q5i3i7zslycnjiqmyx5ybc3fi",
"width": 1200,
"height": 1200,
"format": "png"
},
"infoURL": "https://dymension.xyz",
"name": "Dymension",
"nativeCurrency": {
"name": "DYM",
"symbol": "DYM",
"decimals": 18
},
"networkId": 1100,
"rpc": [
"https://dymension.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1100.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://dymension-evm.blockpi.network/v1/rpc/public"
],
"shortName": "dymension",
"slug": "dymension",
"testnet": false
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "MetaDAP",
"chainId": 119139,
"explorers": [
{
"name": "MetaDAP Enterprise Testnet explorer",
"url": "https://explorer.testnet.chain.metadap.io",
"standard": "none"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmcCFUTStKKJKfzTwrjfMFoVaPCMsvAvWXRdDkYMvCkEs3",
"width": 800,
"height": 800,
"format": "svg"
},
"infoURL": "https://metadap.io/",
"name": "MetaDAP Enterprise Testnet",
"nativeCurrency": {
"name": "DAP",
"symbol": "DAP",
"decimals": 18
},
"networkId": 119139,
"rpc": [
"https://metadap-enterprise-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://119139.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.testnet.chain.metadap.io",
"wss://rpc-ws.testnet.chain.metadap.io"
],
"shortName": "MetaDAP-T",
"slug": "metadap-enterprise-testnet",
"testnet": true,
"title": "MetaDAP Enterprise Testnet"
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 12001,
"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": "Mikias's Testnet",
"nativeCurrency": {
"name": "Mikias's Testnet Token",
"symbol": "XVL",
"decimals": 18
},
"networkId": 12001,
"redFlags": [],
"rpc": [
"https://mikias-s-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://12001.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-test.io/c3c8cc74-5101-4380-937f-4f534cad0128"
],
"shortName": "Mikias's Testnet",
"slug": "mikias-s-testnet",
"testnet": true
} as const satisfies Chain;
+6 -8
View File
@@ -2,13 +2,7 @@ import type { Chain } from "../src/types";
export default {
"chain": "1220",
"chainId": 1220,
"explorers": [
{
"name": "flagscan",
"url": "https://testnet-scan.flagscan.io/",
"standard": "EIP3091"
}
],
"explorers": [],
"faucets": [],
"features": [],
"icon": {
@@ -26,7 +20,11 @@ export default {
},
"networkId": 1220,
"redFlags": [],
"rpc": [],
"rpc": [
"https://flag-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1220.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet.flagscan.io"
],
"shortName": "Flag",
"slug": "flag-testnet",
"testnet": true
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "NEAR",
"chainId": 1313161560,
"explorers": [
{
"name": "PowerGold explorer",
"url": "https://explorer.powergold.aurora.dev",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreib2sabb6vgfoskobp2wdr6if7v6s34f2xwjecfceui6qhjudmu4u4",
"width": 512,
"height": 512,
"format": "png"
},
"infoURL": "https://www.powergold.tech",
"name": "PowerGold",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 1313161560,
"rpc": [
"https://powergold.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1313161560.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://powergold.aurora.dev"
],
"shortName": "powergold",
"slug": "powergold",
"testnet": false
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 13838,
"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": "XTraderlands Subnet Tesnet",
"nativeCurrency": {
"name": "XTraderlands Subnet Tesnet Token",
"symbol": "XTDL",
"decimals": 18
},
"networkId": 13838,
"redFlags": [],
"rpc": [
"https://xtraderlands-subnet-tesnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://13838.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/xtraderlan/testnet/rpc"
],
"shortName": "XTraderlands Subnet Tesnet",
"slug": "xtraderlands-subnet-tesnet",
"testnet": true
} as const satisfies Chain;
@@ -1,7 +1,7 @@
import type { Chain } from "../src/types";
export default {
"chain": "XRPL",
"chainId": 1440001,
"chainId": 1440002,
"explorers": [
{
"name": "XRP Ledger Explorer",
@@ -23,11 +23,11 @@ export default {
"symbol": "XRP",
"decimals": 18
},
"networkId": 1440001,
"networkId": 1440002,
"redFlags": [],
"rpc": [
"https://xrp-ledger-evm-devnet-sidechain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1440001.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1440002.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-evm-sidechain.xrpl.org"
],
"shortName": "XRPL-EVM-Devnet-Sidechain",
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 15056,
"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 2402052",
"nativeCurrency": {
"name": "QI M 2402052 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 15056,
"redFlags": [],
"rpc": [
"https://qi-m-2402052.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://15056.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402052",
"slug": "qi-m-2402052",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 15104,
"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 2402054",
"nativeCurrency": {
"name": "QI M 2402054 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 15104,
"redFlags": [],
"rpc": [
"https://qi-m-2402054.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://15104.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402054",
"slug": "qi-m-2402054",
"testnet": true
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "Puppynet Shibarium",
"chainId": 157,
"explorers": [
{
"name": "puppyscan",
"url": "https://puppyscan.shib.io",
"standard": "none"
}
],
"faucets": [
"https://beta.shibariumtech.com/faucet"
],
"icon": {
"url": "ipfs://QmYNVkoZgRjDBQzJz6kog9mA2yPzQFW2oSKvhnkwuBhLQE",
"width": 2000,
"height": 2000,
"format": "png"
},
"infoURL": "https://shibariumecosystem.com",
"name": "Puppynet Shibarium",
"nativeCurrency": {
"name": "BONE",
"symbol": "BONE",
"decimals": 18
},
"networkId": 157,
"rpc": [
"https://puppynet-shibarium.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://157.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://puppynet.shibrpc.com"
],
"shortName": "puppynet",
"slug": "puppynet-shibarium",
"testnet": false
} as const satisfies Chain;
-36
View File
@@ -1,36 +0,0 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 167005,
"explorers": [
{
"name": "blockscout",
"url": "https://explorer.test.taiko.xyz",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui",
"width": 288,
"height": 258,
"format": "png"
},
"infoURL": "https://taiko.xyz",
"name": "Taiko Grimsvotn L2",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 167005,
"rpc": [
"https://taiko-grimsvotn-l2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://167005.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.test.taiko.xyz"
],
"shortName": "taiko-l2",
"slug": "taiko-grimsvotn-l2",
"status": "deprecated",
"testnet": true
} as const satisfies Chain;
-36
View File
@@ -1,36 +0,0 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 167006,
"explorers": [
{
"name": "blockscout",
"url": "https://explorer.l3test.taiko.xyz",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui",
"width": 288,
"height": 258,
"format": "png"
},
"infoURL": "https://taiko.xyz",
"name": "Taiko Eldfell L3",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 167006,
"rpc": [
"https://taiko-eldfell-l3.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://167006.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.l3test.taiko.xyz"
],
"shortName": "taiko-l3",
"slug": "taiko-eldfell-l3",
"status": "deprecated",
"testnet": true
} as const satisfies Chain;
-36
View File
@@ -1,36 +0,0 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 167007,
"explorers": [
{
"name": "blockscout",
"url": "https://explorer.jolnir.taiko.xyz",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui",
"width": 288,
"height": 258,
"format": "png"
},
"infoURL": "https://taiko.xyz",
"name": "Taiko Jolnir L2",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 167007,
"rpc": [
"https://taiko-jolnir-l2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://167007.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.jolnir.taiko.xyz"
],
"shortName": "tko-jolnir",
"slug": "taiko-jolnir-l2",
"status": "deprecated",
"testnet": false
} as const satisfies Chain;
+50
View File
@@ -0,0 +1,50 @@
import type { Chain } from "../src/types";
export default {
"chain": "ETH",
"chainId": 1686,
"explorers": [
{
"name": "blockscout",
"url": "https://testnet-explorer.mintchain.io",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmQsYisbKkCTKoKG2YSVs94UGuWWMiBspirH4Af4FyZeZz",
"width": 80,
"height": 80,
"format": "png"
}
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmQsYisbKkCTKoKG2YSVs94UGuWWMiBspirH4Af4FyZeZz",
"width": 80,
"height": 80,
"format": "png"
},
"infoURL": "https://www.mintchain.io",
"name": "Mint Testnet",
"nativeCurrency": {
"name": "Sepolia Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 1686,
"parent": {
"type": "L2",
"chain": "eip155-1",
"bridges": [
{
"url": "https://testnet-bridge.mintchain.io"
}
]
},
"rpc": [
"https://mint-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://1686.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.mintchain.io"
],
"shortName": "minttest",
"slug": "mint-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": 234560,
"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": "Project Orc",
"nativeCurrency": {
"name": "Project Orc Token",
"symbol": "STX",
"decimals": 18
},
"networkId": 234560,
"redFlags": [],
"rpc": [
"https://project-orc.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://234560.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/projectorc/testnet/rpc"
],
"shortName": "Project Orc",
"slug": "project-orc",
"testnet": true
} as const satisfies Chain;
+41
View File
@@ -0,0 +1,41 @@
import type { Chain } from "../src/types";
export default {
"chain": "Elizabeth",
"chainId": 2731,
"explorers": [
{
"name": "Time Network Explorer",
"url": "https://testnet-scanner.timenetwork.io",
"standard": "none",
"icon": {
"url": "ipfs://bafkreidoudwo453gr3hoxpreleguga73rm55yl6vuedxrfmhknljppqbiu",
"width": 512,
"height": 512,
"format": "png"
}
}
],
"faucets": [],
"icon": {
"url": "ipfs://bafkreidoudwo453gr3hoxpreleguga73rm55yl6vuedxrfmhknljppqbiu",
"width": 512,
"height": 512,
"format": "png"
},
"infoURL": "https://whitepaper.anttime.net/overview/anttime",
"name": "Elizabeth Testnet",
"nativeCurrency": {
"name": "TIME",
"symbol": "TIME",
"decimals": 18
},
"networkId": 2731,
"rpc": [
"https://elizabeth-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://2731.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.timenetwork.io"
],
"shortName": "TIME",
"slug": "elizabeth-testnet",
"testnet": true
} as const satisfies Chain;
+30
View File
@@ -0,0 +1,30 @@
import type { Chain } from "../src/types";
export default {
"chain": "BPX",
"chainId": 279,
"explorers": [],
"faucets": [],
"icon": {
"url": "ipfs://bafkreiatcu42wbjlo24mr35jou4awvsqpaqys6iv4kxgkjhno3haovsiaq",
"width": 140,
"height": 140,
"format": "svg"
},
"infoURL": "https://bpxchain.cc",
"name": "BPX Blockchain",
"nativeCurrency": {
"name": "BPX",
"symbol": "BPX",
"decimals": 18
},
"networkId": 279,
"rpc": [
"https://bpx-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://279.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.mainnet.bpxchain.cc",
"https://bpx-dataseed.infinex.cc"
],
"shortName": "bpx",
"slug": "bpx-blockchain",
"testnet": false
} as const satisfies Chain;
+39
View File
@@ -0,0 +1,39 @@
import type { Chain } from "../src/types";
export default {
"chain": "XEN",
"chainId": 2941,
"explorers": [
{
"name": "Xenon testnet Explorer",
"url": "https://testnet.xenonchain.com",
"standard": "none"
}
],
"faucets": [
"https://xfaucet.xenonchain.com"
],
"icon": {
"url": "ipfs://QmNSoxDnj6MV8mPJWiuzzLbATcbk5op11NTwMTdzcr272F",
"width": 500,
"height": 500,
"format": "png"
},
"infoURL": "https://xenonchain.com",
"name": "Xenon Chain Testnet",
"nativeCurrency": {
"name": "Xenon Testnet",
"symbol": "tXEN",
"decimals": 18
},
"networkId": 2941,
"rpc": [
"https://xenon-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://2941.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-chain.xenonchain.com/",
"https://testnet-dev.xenonchain.com/"
],
"shortName": "xenon",
"slip44": 1,
"slug": "xenon-chain-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": 29442,
"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 2402055",
"nativeCurrency": {
"name": "QI M 2402055 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 29442,
"redFlags": [],
"rpc": [
"https://qi-m-2402055.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://29442.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402055",
"slug": "qi-m-2402055",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 30266,
"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": "Tnet02-06",
"nativeCurrency": {
"name": "Tnet02-06 Token",
"symbol": "LFC",
"decimals": 18
},
"networkId": 30266,
"redFlags": [],
"rpc": [
"https://tnet02-06.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://30266.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Tnet02-06",
"slug": "tnet02-06",
"testnet": true
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "Lovely",
"chainId": 307,
"explorers": [
{
"name": "Lovely Network Testnet",
"url": "https://tscan.lovely.network",
"standard": "EIP3091"
}
],
"faucets": [
"https://faucet.lovely.network"
],
"icon": {
"url": "ipfs://QmPB7uW7Wj8zWWdeuPnUHPJ5FhaiTL76tv4ZQ4oKWEpb1g",
"width": 897,
"height": 824,
"format": "png"
},
"infoURL": "https://lovely.network",
"name": "Lovely Network Testnet",
"nativeCurrency": {
"name": "Lovely",
"symbol": "LOVELY",
"decimals": 18
},
"networkId": 307,
"rpc": [
"https://lovely-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://307.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://trpc.lovely.network"
],
"shortName": "LOVELY-Testnet",
"slug": "lovely-network-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": 32277,
"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 2402058",
"nativeCurrency": {
"name": "QI M 2402058 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 32277,
"redFlags": [],
"rpc": [
"https://qi-m-2402058.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://32277.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402058",
"slug": "qi-m-2402058",
"testnet": true
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "Bloom",
"chainId": 323213,
"explorers": [
{
"name": "Bloom Genesis Testnet",
"url": "https://testnet.bloomgenesis.com",
"standard": "EIP3091"
}
],
"faucets": [
"https://faucet.bloomgenesis.com"
],
"icon": {
"url": "ipfs://Qmetu9hMLvczYo7tDPRyjqjBHwwpHU8mEgW3PEPPre56su",
"width": 2794,
"height": 2711,
"format": "png"
},
"infoURL": "https://www.bloomgenesis.com",
"name": "Bloom Genesis Testnet",
"nativeCurrency": {
"name": "Bloom",
"symbol": "BGBC",
"decimals": 18
},
"networkId": 323213,
"rpc": [
"https://bloom-genesis-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://323213.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.bloomgenesis.com"
],
"shortName": "BGBC-Testnet",
"slug": "bloom-genesis-testnet",
"testnet": true
} as const satisfies Chain;
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "Bloom",
"chainId": 333313,
"explorers": [
{
"name": "Bloom Genesis Mainnet",
"url": "https://explorer.bloomgenesis.com",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://Qmetu9hMLvczYo7tDPRyjqjBHwwpHU8mEgW3PEPPre56su",
"width": 2794,
"height": 2711,
"format": "png"
},
"infoURL": "https://www.bloomgenesis.com",
"name": "Bloom Genesis Mainnet",
"nativeCurrency": {
"name": "Bloom",
"symbol": "BGBC",
"decimals": 18
},
"networkId": 333313,
"rpc": [
"https://bloom-genesis.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://333313.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-rpc.bloomgenesis.com"
],
"shortName": "BGBC",
"slug": "bloom-genesis",
"testnet": false
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 37375,
"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 2402057",
"nativeCurrency": {
"name": "QI M 2402057 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 37375,
"redFlags": [],
"rpc": [
"https://qi-m-2402057.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://37375.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402057",
"slug": "qi-m-2402057",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 37767,
"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": "Tnet 01-15",
"nativeCurrency": {
"name": "Tnet 01-15 Token",
"symbol": "LFC",
"decimals": 18
},
"networkId": 37767,
"redFlags": [],
"rpc": [
"https://tnet-01-15.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://37767.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Tnet 01-15",
"slug": "tnet-01-15",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 41077,
"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": "REALLY",
"nativeCurrency": {
"name": "REALLY Token",
"symbol": "FAN",
"decimals": 18
},
"networkId": 41077,
"redFlags": [],
"rpc": [
"https://really.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://41077.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/really/testnet/rpc"
],
"shortName": "REALLY",
"slug": "really",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 41425,
"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": "QR0205I1",
"nativeCurrency": {
"name": "QR0205I1 Token",
"symbol": "PVW",
"decimals": 18
},
"networkId": 41425,
"redFlags": [],
"rpc": [
"https://qr0205i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://41425.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/qr0205i1/testnet/rpc"
],
"shortName": "QR0205I1",
"slug": "qr0205i1",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 41604,
"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": "Testnet",
"nativeCurrency": {
"name": "Testnet Token",
"symbol": "LFC",
"decimals": 18
},
"networkId": 41604,
"redFlags": [],
"rpc": [
"https://testnet-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://41604.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Testnet",
"slug": "testnet-testnet",
"testnet": true
} as const satisfies Chain;
+42
View File
@@ -0,0 +1,42 @@
import type { Chain } from "../src/types";
export default {
"chain": "Merlin",
"chainId": 4200,
"explorers": [
{
"name": "blockscout",
"url": "https://scan.merlinchain.io",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmULpMFUvKSmJT8sWXS3WDnTm4EacgRbsEynDenpxcfrAj",
"width": 400,
"height": 400,
"format": "jpg"
}
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmULpMFUvKSmJT8sWXS3WDnTm4EacgRbsEynDenpxcfrAj",
"width": 400,
"height": 400,
"format": "jpg"
},
"infoURL": "https://merlinchain.io",
"name": "Merlin Mainnet",
"nativeCurrency": {
"name": "BTC",
"symbol": "BTC",
"decimals": 18
},
"networkId": 4200,
"rpc": [
"https://merlin.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://4200.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.merlinchain.io"
],
"shortName": "Merlin-Mainnet",
"slug": "merlin",
"testnet": false,
"title": "Merlin Mainnet"
} as const satisfies Chain;
+40
View File
@@ -0,0 +1,40 @@
import type { Chain } from "../src/types";
export default {
"chain": "SYNDRSEPOLIA",
"chainId": 444444,
"explorers": [
{
"name": "Syndr L3 Sepolia Testnet Explorer",
"url": "https://sepolia-explorer.syndr.com",
"standard": "EIP3091"
}
],
"faucets": [],
"infoURL": "https://syndr.com",
"name": "Syndr L3 Sepolia",
"nativeCurrency": {
"name": "Sepolia Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 444444,
"parent": {
"type": "L2",
"chain": "eip155-421614",
"bridges": [
{
"url": "https://sepolia-bridge.syndr.com"
}
]
},
"rpc": [
"https://syndr-l3-sepolia.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://444444.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://sepolia.syndr.com/http",
"wss://sepolia.syndr.com/ws"
],
"shortName": "syndr",
"slug": "syndr-l3-sepolia",
"testnet": true,
"title": "Syndr L3 Sepolia Rollup Testnet"
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 48702,
"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": "Testnet",
"nativeCurrency": {
"name": "Testnet Token",
"symbol": "LUG",
"decimals": 18
},
"networkId": 48702,
"redFlags": [],
"rpc": [
"https://testnet-testnet-48702.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://48702.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Testnet",
"slug": "testnet-testnet-48702",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 5042,
"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": "OMOCHI",
"nativeCurrency": {
"name": "OMOCHI Token",
"symbol": "OMCH",
"decimals": 18
},
"networkId": 5042,
"redFlags": [],
"rpc": [
"https://omochi.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://5042.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/omochi/testnet/rpc"
],
"shortName": "OMOCHI",
"slug": "omochi",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Syndicate",
"chainId": 510,
"explorers": [],
"faucets": [],
"icon": {
"url": "ipfs://QmeSvQcD3XvLFAiMLoQSPbGK9JxVfbCWPBUTMLhhhzYPqX",
"width": 16000,
"height": 16000,
"format": "png"
},
"infoURL": "https://syndicate.io",
"name": "Syndicate Chain",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 510,
"rpc": [
"https://syndicate-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://510.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-mainnet.syndicate.io"
],
"shortName": "syndicate-chain-mainnet",
"slug": "syndicate-chain",
"status": "incubating",
"testnet": false,
"title": "Syndicate Chain"
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Syndicate",
"chainId": 5100,
"explorers": [],
"faucets": [],
"icon": {
"url": "ipfs://QmeSvQcD3XvLFAiMLoQSPbGK9JxVfbCWPBUTMLhhhzYPqX",
"width": 16000,
"height": 16000,
"format": "png"
},
"infoURL": "https://syndicate.io",
"name": "Syndicate Testnet",
"nativeCurrency": {
"name": "S-Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 5100,
"rpc": [
"https://syndicate-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://5100.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-testnet.syndicate.io"
],
"shortName": "syndicate-chain-testnet",
"slug": "syndicate-testnet",
"status": "incubating",
"testnet": true,
"title": "Syndicate Testnet"
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Syndicate Frame",
"chainId": 5101,
"explorers": [],
"faucets": [],
"icon": {
"url": "ipfs://QmeSvQcD3XvLFAiMLoQSPbGK9JxVfbCWPBUTMLhhhzYPqX",
"width": 16000,
"height": 16000,
"format": "png"
},
"infoURL": "https://syndicate.io",
"name": "Syndicate Frame Chain",
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"networkId": 5101,
"rpc": [
"https://syndicate-frame-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://5101.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-frame.syndicate.io"
],
"shortName": "syndicate-chain-frame",
"slug": "syndicate-frame-chain",
"status": "incubating",
"testnet": false,
"title": "Syndicate Frame Chain"
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 60834,
"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 2402059",
"nativeCurrency": {
"name": "QI M 2402059 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 60834,
"redFlags": [],
"rpc": [
"https://qi-m-2402059.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://60834.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402059",
"slug": "qi-m-2402059",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 63891,
"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": "Tnetv2",
"nativeCurrency": {
"name": "Tnetv2 Token",
"symbol": "LFC",
"decimals": 18
},
"networkId": 63891,
"redFlags": [],
"rpc": [
"https://tnetv2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://63891.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Tnetv2",
"slug": "tnetv2",
"testnet": true
} as const satisfies Chain;
+2 -8
View File
@@ -2,13 +2,7 @@ import type { Chain } from "../src/types";
export default {
"chain": "Xai Mainnet",
"chainId": 660279,
"explorers": [
{
"name": "blockscout",
"url": "https://explorer.xai-chain.net/",
"standard": "EIP3091"
}
],
"explorers": [],
"faucets": [],
"features": [],
"icon": {
@@ -29,7 +23,7 @@ export default {
"rpc": [
"https://xai.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://660279.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://xai-chain.net/rpc"
"https://xai-chain.net/rpc/xai79df8614da076af58f199126a07db"
],
"shortName": "xai",
"slug": "xai",
+3 -2
View File
@@ -27,10 +27,11 @@ export default {
"rpc": [
"https://zetachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://7000.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://api.mainnet.zetachain.com/evm"
"https://zetachain-evm.blockpi.network/v1/rpc/public",
"https://zetachain-mainnet-archive.allthatnode.com:8545"
],
"shortName": "zetachain-mainnet",
"slug": "zetachain",
"status": "incubating",
"status": "active",
"testnet": false
} as const satisfies Chain;
+44
View File
@@ -0,0 +1,44 @@
import type { Chain } from "../src/types";
export default {
"chain": "Sei",
"chainId": 713715,
"explorers": [
{
"name": "Seistream",
"url": "https://seistream.app",
"standard": "none"
},
{
"name": "Seitrace",
"url": "https://seitrace.com",
"standard": "EIP3091"
}
],
"faucets": [
"https://sei-faucet.nima.enterprises",
"https://sei-evm.faucetme.pro"
],
"icon": {
"url": "ipfs://bafkreih3l3iisplmikofkbfyimqlox7nmixzlkzhjoewmpi4jbqitwryoa",
"width": 600,
"height": 600,
"format": "png"
},
"infoURL": "https://www.sei.io",
"name": "Sei Devnet",
"nativeCurrency": {
"name": "Sei",
"symbol": "SEI",
"decimals": 18
},
"networkId": 713715,
"rpc": [
"https://sei-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://713715.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://evm-rpc-arctic-1.sei-apis.com",
"https://evm-rpc.arctic-1.seinetwork.io"
],
"shortName": "sei-devnet",
"slug": "sei-devnet",
"testnet": false
} as const satisfies Chain;
+35
View File
@@ -0,0 +1,35 @@
import type { Chain } from "../src/types";
export default {
"chain": "Lovely",
"chainId": 730,
"explorers": [
{
"name": "Lovely Network Mainnet",
"url": "https://scan.lovely.network",
"standard": "EIP3091"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmPB7uW7Wj8zWWdeuPnUHPJ5FhaiTL76tv4ZQ4oKWEpb1g",
"width": 897,
"height": 824,
"format": "png"
},
"infoURL": "https://lovely.network",
"name": "Lovely Network Mainnet",
"nativeCurrency": {
"name": "Lovely",
"symbol": "LOVELY",
"decimals": 18
},
"networkId": 730,
"rpc": [
"https://lovely-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://730.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.lovely.network"
],
"shortName": "LOVELY",
"slug": "lovely-network",
"testnet": false
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 74738,
"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": "Testnet",
"nativeCurrency": {
"name": "Testnet Token",
"symbol": "CWA",
"decimals": 18
},
"networkId": 74738,
"redFlags": [],
"rpc": [
"https://testnet-testnet-74738.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://74738.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Testnet",
"slug": "testnet-testnet-74738",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 7640,
"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": "QI0205I1",
"nativeCurrency": {
"name": "QI0205I1 Token",
"symbol": "KOA",
"decimals": 18
},
"networkId": 7640,
"redFlags": [],
"rpc": [
"https://qi0205i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://7640.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "QI0205I1",
"slug": "qi0205i1",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 7865,
"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 02-07",
"nativeCurrency": {
"name": "ST 02-07 Token",
"symbol": "TJO",
"decimals": 18
},
"networkId": 7865,
"redFlags": [],
"rpc": [
"https://st-02-07.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://7865.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "ST 02-07",
"slug": "st-02-07",
"testnet": true
} as const satisfies Chain;
+8 -8
View File
@@ -8,10 +8,10 @@ export default {
"url": "https://testnet-explorer.haven1.org",
"standard": "EIP3091",
"icon": {
"url": "ipfs://QmbSwngVDEiGaw3JzdME7fz5mYBWKbbz1ZerTpimaAxNXR",
"width": 32,
"height": 33,
"format": "svg"
"url": "ipfs://bafkreih4jq33lz2mjwvu62hmo2ptt277et5l6oqi5ejuyxv2dir2iohsai",
"width": 128,
"height": 128,
"format": "png"
}
}
],
@@ -27,10 +27,10 @@ export default {
}
],
"icon": {
"url": "ipfs://QmbSwngVDEiGaw3JzdME7fz5mYBWKbbz1ZerTpimaAxNXR",
"width": 32,
"height": 33,
"format": "svg"
"url": "ipfs://bafkreih4jq33lz2mjwvu62hmo2ptt277et5l6oqi5ejuyxv2dir2iohsai",
"width": 128,
"height": 128,
"format": "png"
},
"infoURL": "https://www.haven1.org",
"name": "Haven1 Testnet",
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 87815,
"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 2402056",
"nativeCurrency": {
"name": "QI M 2402056 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 87815,
"redFlags": [],
"rpc": [
"https://qi-m-2402056.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://87815.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402056",
"slug": "qi-m-2402056",
"testnet": true
} as const satisfies Chain;
+37
View File
@@ -0,0 +1,37 @@
import type { Chain } from "../src/types";
export default {
"chain": "MetaDAP",
"chainId": 91120,
"explorers": [
{
"name": "MetaDAP Enterprise Mainnet explorer",
"url": "https://explorer.chain.metadap.io",
"standard": "none"
}
],
"faucets": [],
"icon": {
"url": "ipfs://QmcCFUTStKKJKfzTwrjfMFoVaPCMsvAvWXRdDkYMvCkEs3",
"width": 800,
"height": 800,
"format": "svg"
},
"infoURL": "https://metadap.io/",
"name": "MetaDAP Enterprise Mainnet",
"nativeCurrency": {
"name": "DAP",
"symbol": "DAP",
"decimals": 18
},
"networkId": 91120,
"rpc": [
"https://metadap-enterprise.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://91120.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.chain.metadap.io",
"wss://rpc-ws.chain.metadap.io"
],
"shortName": "MetaDAP",
"slug": "metadap-enterprise",
"testnet": false,
"title": "MetaDAP Enterprise Mainnet"
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 92780,
"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 2402053",
"nativeCurrency": {
"name": "QI M 2402053 Token",
"symbol": "ACI",
"decimals": 18
},
"networkId": 92780,
"redFlags": [],
"rpc": [
"https://qi-m-2402053.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://92780.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/c908add6-74c5-4407-8091-18762786a0b9"
],
"shortName": "QI M 2402053",
"slug": "qi-m-2402053",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 93694,
"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 2401291",
"nativeCurrency": {
"name": "QI M 2401291 Token",
"symbol": "HZU",
"decimals": 18
},
"networkId": 93694,
"redFlags": [],
"rpc": [
"https://qi-m-2401291.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://93694.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avacloud-dev.io/f14d837e-de8f-446d-8222-0077f26e6694"
],
"shortName": "QI M 2401291",
"slug": "qi-m-2401291",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 951083,
"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": "QR0205Y1S",
"nativeCurrency": {
"name": "QR0205Y1S Token",
"symbol": "MYO",
"decimals": 18
},
"networkId": 951083,
"redFlags": [],
"rpc": [
"https://qr0205y1s.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://951083.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/qr0205y1s/testnet/rpc"
],
"shortName": "QR0205Y1S",
"slug": "qr0205y1s",
"testnet": true
} as const satisfies Chain;
+2 -2
View File
@@ -21,11 +21,11 @@ export default {
"networkId": 95395,
"redFlags": [],
"rpc": [
"https://testnet-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-testnet-95395.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://95395.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
],
"shortName": "Testnet",
"slug": "testnet-testnet",
"slug": "testnet-testnet-95395",
"testnet": true
} as const satisfies Chain;
+31
View File
@@ -0,0 +1,31 @@
import type { Chain } from "../src/types";
export default {
"chain": "Avalanche",
"chainId": 98557,
"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": "QR0201I1",
"nativeCurrency": {
"name": "QR0201I1 Token",
"symbol": "OCZ",
"decimals": 18
},
"networkId": 98557,
"redFlags": [],
"rpc": [
"https://qr0201i1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://98557.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://subnets.avax.network/qr0201i1/testnet/rpc"
],
"shortName": "QR0201I1",
"slug": "qr0201i1",
"testnet": true
} as const satisfies Chain;
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/chains",
"version": "0.1.67",
"version": "0.1.72",
"main": "dist/thirdweb-dev-chains.cjs.js",
"module": "dist/thirdweb-dev-chains.esm.js",
"exports": {
File diff suppressed because one or more lines are too long
+51
View File
@@ -1,5 +1,56 @@
# thirdweb
## 0.13.40
### Patch Changes
- Updated dependencies [[`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94), [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5), [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371), [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
- @thirdweb-dev/sdk@4.0.35
- @thirdweb-dev/chains@0.1.72
- @thirdweb-dev/wallets@2.4.10
- @thirdweb-dev/auth@4.1.32
## 0.13.39
### Patch Changes
- Updated dependencies [[`0092e2a3`](https://github.com/thirdweb-dev/js/commit/0092e2a3177364ad26af15ecafb4381591dc9be1), [`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
- @thirdweb-dev/auth@4.1.31
- @thirdweb-dev/chains@0.1.71
- @thirdweb-dev/sdk@4.0.34
- @thirdweb-dev/wallets@2.4.9
## 0.13.38
### Patch Changes
- Updated dependencies [[`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83), [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
- @thirdweb-dev/sdk@4.0.33
- @thirdweb-dev/chains@0.1.70
- @thirdweb-dev/wallets@2.4.8
- @thirdweb-dev/auth@4.1.30
## 0.13.37
### Patch Changes
- Updated dependencies [[`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d), [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
- @thirdweb-dev/sdk@4.0.32
- @thirdweb-dev/chains@0.1.69
- @thirdweb-dev/wallets@2.4.7
- @thirdweb-dev/auth@4.1.29
## 0.13.36
### Patch Changes
- Updated dependencies [[`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a), [`771bd1e1`](https://github.com/thirdweb-dev/js/commit/771bd1e1b280681992195103c22aafa1fb98f7e0)]:
- @thirdweb-dev/storage@2.0.9
- @thirdweb-dev/wallets@2.4.6
- @thirdweb-dev/sdk@4.0.31
- @thirdweb-dev/chains@0.1.68
- @thirdweb-dev/auth@4.1.28
## 0.13.35
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "thirdweb",
"main": "dist/cli/index.js",
"version": "0.13.35",
"version": "0.13.40",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/cli",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
+57
View File
@@ -1,5 +1,62 @@
# @thirdweb-dev/react-core
## 4.4.8
### Patch Changes
- Updated dependencies [[`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94), [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5), [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371), [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
- @thirdweb-dev/sdk@4.0.35
- @thirdweb-dev/chains@0.1.72
- @thirdweb-dev/wallets@2.4.10
- @thirdweb-dev/auth@4.1.32
## 4.4.7
### Patch Changes
- Updated dependencies [[`0092e2a3`](https://github.com/thirdweb-dev/js/commit/0092e2a3177364ad26af15ecafb4381591dc9be1), [`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
- @thirdweb-dev/auth@4.1.31
- @thirdweb-dev/chains@0.1.71
- @thirdweb-dev/sdk@4.0.34
- @thirdweb-dev/wallets@2.4.9
## 4.4.6
### Patch Changes
- [#2270](https://github.com/thirdweb-dev/js/pull/2270) [`433d49e3`](https://github.com/thirdweb-dev/js/commit/433d49e3aba03df33678f429f19f426fd107b7eb) Thanks [@MananTank](https://github.com/MananTank)! - Keep the wallet states like signer, chainId, address in sync by setting their states at once synchronously
## 4.4.5
### Patch Changes
- Updated dependencies [[`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83), [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
- @thirdweb-dev/sdk@4.0.33
- @thirdweb-dev/chains@0.1.70
- @thirdweb-dev/wallets@2.4.8
- @thirdweb-dev/auth@4.1.30
## 4.4.4
### Patch Changes
- Updated dependencies [[`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d), [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
- @thirdweb-dev/sdk@4.0.32
- @thirdweb-dev/chains@0.1.69
- @thirdweb-dev/wallets@2.4.7
- @thirdweb-dev/auth@4.1.29
## 4.4.3
### Patch Changes
- Updated dependencies [[`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a), [`771bd1e1`](https://github.com/thirdweb-dev/js/commit/771bd1e1b280681992195103c22aafa1fb98f7e0)]:
- @thirdweb-dev/storage@2.0.9
- @thirdweb-dev/wallets@2.4.6
- @thirdweb-dev/sdk@4.0.31
- @thirdweb-dev/chains@0.1.68
- @thirdweb-dev/auth@4.1.28
## 4.4.2
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/react-core",
"version": "4.4.2",
"version": "4.4.8",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-core",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
@@ -90,6 +90,8 @@ type WalletSetupData = {
};
type ThirdwebWalletContextData = {
address: string | undefined;
chainId: number | undefined;
wallets: WalletConfig[];
signer?: Signer;
activeWallet?: WalletInstance;
@@ -127,7 +129,7 @@ type ThirdwebWalletContextData = {
isAutoConnecting: boolean;
};
const ThirdwebWalletContext = /* @__PURE__ */ createContext<
export const ThirdwebWalletContext = /* @__PURE__ */ createContext<
ThirdwebWalletContextData | undefined
>(undefined);
@@ -221,17 +223,26 @@ function useWalletConnectionSetup(
connectParams?: ConnectParams<Record<string, any>>,
isAutoConnect = false,
) => {
setActiveWallet(wallet);
const walletConfig = walletInstanceToConfig.get(wallet);
if (!walletConfig) {
throw new Error(
"Wallet config not found for given wallet instance. Do not create a wallet instance manually - use the useCreateWalletInstance() hook instead",
);
}
const [_signer, _chainId, _address] = await Promise.all([
wallet.getSigner(),
wallet.getChainId(),
wallet.getAddress(),
]);
// set states for the connected wallet
setActiveWallet(wallet);
setChainId(_chainId);
setWalletAddress(_address);
setSigner(_signer);
setActiveWalletConfig(walletConfig);
setConnectionStatus("connected");
const _signer = await wallet.getSigner();
setSigner(_signer);
// if personal wallet exists, we need to replace the connectParams.personalWallet to a stringifiable version
const personalWallet = wallet.getPersonalWallet() as AbstractClientWallet;
@@ -341,16 +352,14 @@ function useWalletConnectionSetup(
[createWalletInstance, setConnectedWallet, chainToConnect],
);
const onWalletDisconnect = useCallback(async () => {
await lastConnectedWalletStorage.removeItem(
LAST_CONNECTED_WALLET_STORAGE_KEY,
);
const onWalletDisconnect = useCallback(() => {
setConnectionStatus("disconnected");
setSigner(undefined);
setActiveWallet(undefined);
setActiveWalletConfig(undefined);
setChainId(undefined);
setWalletAddress(undefined);
lastConnectedWalletStorage.removeItem(LAST_CONNECTED_WALLET_STORAGE_KEY);
}, []);
const disconnectWallet = useCallback(async () => {
@@ -360,14 +369,13 @@ function useWalletConnectionSetup(
return;
}
onWalletDisconnect();
const personalWallet = activeWallet.getPersonalWallet();
await activeWallet.disconnect();
if (personalWallet) {
await (personalWallet as AbstractClientWallet)?.disconnect();
}
onWalletDisconnect();
}, [activeWallet, onWalletDisconnect]);
// handle wallet change event
@@ -380,9 +388,15 @@ function useWalletConnectionSetup(
}
const update = async () => {
activeWallet.getSigner().then(setSigner);
activeWallet.getChainId().then(setChainId);
activeWallet.getAddress().then(setWalletAddress);
Promise.all([
activeWallet.getSigner(),
activeWallet.getChainId(),
activeWallet.getAddress(),
]).then(([_signer, _chainId, _address]) => {
setSigner(_signer);
setChainId(_chainId);
setWalletAddress(_address);
});
};
update();
@@ -459,6 +473,8 @@ export function ThirdwebWalletProvider(
switchChain,
connectWallet,
disconnectWallet,
address,
chainId,
} = useWalletConnectionSetup(walletSetupData, {
connectionStatus: "unknown",
});
@@ -713,6 +729,8 @@ export function ThirdwebWalletProvider(
return (
<ThirdwebWalletContext.Provider
value={{
address,
chainId,
disconnect: disconnectWallet,
wallets: props.supportedWallets,
connect: connectWallet,
+10 -1
View File
@@ -2,6 +2,7 @@ import { useContext } from "react";
import { ThirdwebConnectedWalletContext } from "../contexts/thirdweb-wallet";
import type { Signer } from "ethers";
import invariant from "tiny-invariant";
import { ThirdwebWalletContext } from "../../core/providers/thirdweb-wallet-provider";
/**
* Hook for getting the [ethers signer](https://docs.ethers.org/v5/api/signer/) of the connected wallet.
@@ -24,9 +25,17 @@ import invariant from "tiny-invariant";
*/
export function useSigner(): Signer | undefined {
const context = useContext(ThirdwebConnectedWalletContext);
const walletCtx = useContext(ThirdwebWalletContext);
// if ThirdwebWalletContext is present, use the signer from there because signer from ThirdwebConnectedWalletContext also uses that signer but it lags behind
// walletCtx is undefined if only ThirdwebSDKProvider is used
if (walletCtx) {
return walletCtx.signer;
}
invariant(
context,
"useSigner() hook must be used within a <ThirdwebProvider/>",
"useSigner() hook must be used within a <ThirdwebProvider/> or <ThirdwebSDKProvider/> component",
);
return context.signer;
}
+21 -2
View File
@@ -10,7 +10,10 @@ import { UseQueryResult, useQuery } from "@tanstack/react-query";
import { Chain, defaultChains } from "@thirdweb-dev/chains";
import { useContext, useMemo } from "react";
import { useSDK } from "./useSDK";
import { useWalletContext } from "../../core/providers/thirdweb-wallet-provider";
import {
ThirdwebWalletContext,
useWalletContext,
} from "../../core/providers/thirdweb-wallet-provider";
import { BigNumber } from "ethers";
/**
@@ -151,6 +154,14 @@ export function useConnectedWallet() {
*/
export function useAddress(): string | undefined {
const context = useContext(ThirdwebConnectedWalletContext);
const walletCtx = useContext(ThirdwebWalletContext);
// if ThirdwebWalletContext is present, use the address from there because address from ThirdwebConnectedWalletContext also uses that address but it lags behind
// walletCtx is undefined if only ThirdwebSDKProvider is used
if (walletCtx) {
return walletCtx.address;
}
invariant(
context,
"useAddress() hook must be used within a <ThirdwebProvider/>",
@@ -185,9 +196,17 @@ export function useAddress(): string | undefined {
*/
export function useChainId(): number | undefined {
const context = useContext(ThirdwebConnectedWalletContext);
const walletCtx = useContext(ThirdwebWalletContext);
// if ThirdwebWalletContext is present, use the chainId from there because chainId from ThirdwebConnectedWalletContext also uses that chainId but it lags behind
// walletCtx is undefined if only ThirdwebSDKProvider is used
if (walletCtx) {
return walletCtx.chainId;
}
invariant(
context,
"useChainId() hook must be used within a <ThirdwebProvider/>",
"useChainId() hook must be used within a <ThirdwebProvider/> or <ThirdwebSDKProvider/> component",
);
return context.chainId;
}
Binary file not shown.
+16
View File
@@ -1,5 +1,21 @@
# @thirdweb-dev/react-native-compat
## 0.7.5
## 0.7.4
## 0.7.3
## 0.7.2
## 0.7.1
## 0.7.0
### Minor Changes
- [#2225](https://github.com/thirdweb-dev/js/pull/2225) [`2e3cc7cd`](https://github.com/thirdweb-dev/js/commit/2e3cc7cdd4017df8a5b00ebdd6e37334432e0b82) Thanks [@iketw](https://github.com/iketw)! - Adds support for RN 0.73
## 0.6.5
## 0.6.4
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "@thirdweb-dev/react-native-compat",
"description": "Shims for Thirdweb in React Native Projects",
"version": "0.6.5",
"version": "0.7.5",
"author": "thirdweb eng <[email protected]>",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-native-compat",
"license": "Apache-2.0",
@@ -22,7 +22,7 @@
},
"dependencies": {
"@ethersproject/shims": "^5.7.0",
"@walletconnect/react-native-compat": "^2.8.6",
"@walletconnect/react-native-compat": "2.9.2",
"base-64": "^1.0.0",
"big-integer": "^1.6.51",
"react-native-get-random-values": "^1.10.0",
+66
View File
@@ -1,5 +1,71 @@
# @thirdweb-dev/react-native
## 0.7.5
### Patch Changes
- Updated dependencies [[`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94), [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5), [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371), [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
- @thirdweb-dev/sdk@4.0.35
- @thirdweb-dev/chains@0.1.72
- @thirdweb-dev/react-core@4.4.8
- @thirdweb-dev/wallets@2.4.10
## 0.7.4
### Patch Changes
- Updated dependencies [[`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
- @thirdweb-dev/chains@0.1.71
- @thirdweb-dev/react-core@4.4.7
- @thirdweb-dev/sdk@4.0.34
- @thirdweb-dev/wallets@2.4.9
## 0.7.3
### Patch Changes
- Updated dependencies [[`433d49e3`](https://github.com/thirdweb-dev/js/commit/433d49e3aba03df33678f429f19f426fd107b7eb)]:
- @thirdweb-dev/react-core@4.4.6
## 0.7.2
### Patch Changes
- Updated dependencies [[`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83), [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
- @thirdweb-dev/sdk@4.0.33
- @thirdweb-dev/chains@0.1.70
- @thirdweb-dev/react-core@4.4.5
- @thirdweb-dev/wallets@2.4.8
## 0.7.1
### Patch Changes
- Updated dependencies [[`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d), [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
- @thirdweb-dev/sdk@4.0.32
- @thirdweb-dev/chains@0.1.69
- @thirdweb-dev/react-core@4.4.4
- @thirdweb-dev/wallets@2.4.7
## 0.7.0
### Minor Changes
- [#2225](https://github.com/thirdweb-dev/js/pull/2225) [`2e3cc7cd`](https://github.com/thirdweb-dev/js/commit/2e3cc7cdd4017df8a5b00ebdd6e37334432e0b82) Thanks [@iketw](https://github.com/iketw)! - Adds support for RN 0.73
### Patch Changes
- [#2224](https://github.com/thirdweb-dev/js/pull/2224) [`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a) Thanks [@0xFirekeeper](https://github.com/0xFirekeeper)! - Adds correct reporing headers
- [#2224](https://github.com/thirdweb-dev/js/pull/2224) [`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a) Thanks [@0xFirekeeper](https://github.com/0xFirekeeper)! - Adds global sdk vars
- Updated dependencies [[`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a), [`771bd1e1`](https://github.com/thirdweb-dev/js/commit/771bd1e1b280681992195103c22aafa1fb98f7e0)]:
- @thirdweb-dev/storage@2.0.9
- @thirdweb-dev/wallets@2.4.6
- @thirdweb-dev/sdk@4.0.31
- @thirdweb-dev/chains@0.1.68
- @thirdweb-dev/react-core@4.4.3
## 0.6.5
### Patch Changes
+5 -13
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/react-native",
"version": "0.6.5",
"version": "0.7.5",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react-native",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
@@ -27,9 +27,7 @@
"dependencies": {
"@aws-sdk/client-lambda": "3.350.0",
"@aws-sdk/credential-providers": "3.350.0",
"@coinbase/wallet-mobile-sdk": "1.0.10",
"@magic-sdk/provider": "17.2.0",
"@magic-sdk/react-native-bare": "^18.5.0",
"@coinbase/wallet-mobile-sdk": "1.0.13",
"@paperxyz/embedded-wallet-service-sdk": "^1.2.4",
"@shopify/restyle": "^2.4.2",
"@tanstack/react-query": "^4.33.0",
@@ -41,7 +39,7 @@
"abitype": "^0.2.5",
"aws-amplify": "^5.3.8",
"expo-application": "^5.3.0",
"expo-clipboard": "^4.1.2",
"expo-clipboard": "^4.5.0",
"expo-document-picker": "^11.2.2",
"expo-file-system": "^15.2.2",
"expo-secure-store": "^12.1.1",
@@ -77,9 +75,6 @@
"react": "^18.2.0",
"react-native": "^0.71.11",
"react-native-camera": "^4.2.1",
"react-native-device-info": "10.6.0",
"react-native-safe-area-context": "4.7.4",
"react-native-webview": "12.1.0",
"rimraf": "^3.0.2",
"typedoc-gen": "workspace:*",
"typescript": "^5.3.3"
@@ -88,16 +83,13 @@
"amazon-cognito-identity-js": "^6.3.3",
"react-native-aes-gcm-crypto": "^0.2.2",
"react-native-camera": "^4.2.1",
"react-native-device-info": "10.6.0",
"react-native-inappbrowser-reborn": "^3.7.0",
"react-native-quick-base64": "^2.0.7",
"react-native-quick-crypto": "^0.6.1",
"react-native-safe-area-context": "4.7.4",
"react-native-webview": "12.1.0"
"react-native-quick-crypto": "^0.6.1"
},
"peerDependencies": {
"ethers": ">=5.5.1 <6",
"expo": ">=47 <50",
"expo": ">=47",
"react": ">=18.0.0",
"react-native": ">=0.71.0",
"react-native-mmkv": ">=2.11.0"
@@ -5,8 +5,7 @@ import {
TW_UPLOAD_SERVER_URL,
} from "@thirdweb-dev/storage";
import { IpfsUploaderOptions, UploadDataValue } from "./types";
import { appBundleId, packageVersion } from "../../evm/utils/version";
import { BUNDLE_ID_HEADER } from "../../evm/constants/headers";
import { getAnalyticsHeaders, setAnalyticsHeaders } from "./utils";
const METADATA_NAME = "Storage React Native SDK";
@@ -38,9 +37,6 @@ export class IpfsUploader implements IStorageUploader<IpfsUploadBatchOptions> {
keyvalues: { ...options?.metadata },
};
const { version, name: packageName } = packageVersion;
const platform = "react-native";
if ("uri" in data[0] && "type" in data[0] && "name" in data[0]) {
// then it's an array of files
return new Promise(async (resolve, reject) => {
@@ -140,14 +136,11 @@ export class IpfsUploader implements IStorageUploader<IpfsUploadBatchOptions> {
});
xhr.open("POST", `${TW_UPLOAD_SERVER_URL}/ipfs/upload`);
xhr.setRequestHeader(BUNDLE_ID_HEADER, appBundleId || ""); // only empty on web
if (this.clientId) {
xhr.setRequestHeader("x-client-id", this.clientId);
}
xhr.setRequestHeader("x-sdk-version", version);
xhr.setRequestHeader("x-sdk-name", packageName);
xhr.setRequestHeader("x-sdk-platform", platform);
setAnalyticsHeaders(xhr);
xhr.send(form);
});
@@ -165,12 +158,9 @@ export class IpfsUploader implements IStorageUploader<IpfsUploadBatchOptions> {
{
method: "POST",
headers: {
[BUNDLE_ID_HEADER]: appBundleId || "", // only empty on web
...(this.clientId ? { "x-client-id": this.clientId } : {}),
"Content-Type": "application/json",
"x-sdk-version": version,
"x-sdk-name": packageName,
"x-sdk-platform": platform,
...getAnalyticsHeaders(),
},
body: fetchBody,
},
@@ -1,4 +1,6 @@
import { DEFAULT_GATEWAY_URLS, GatewayUrls } from "@thirdweb-dev/storage";
import { Platform } from "react-native";
import { appBundleId, packageVersion } from "../../evm/utils/version";
/**
* @internal
@@ -32,3 +34,51 @@ export function prepareGatewayUrls(
return allGatewayUrls;
}
export function setAnalyticsHeaders(xhr: XMLHttpRequest) {
const globals = getAnalyticsGlobals();
xhr.setRequestHeader("x-sdk-version", globals.x_sdk_version);
xhr.setRequestHeader("x-sdk-os", globals.x_sdk_os);
xhr.setRequestHeader("x-sdk-name", globals.x_sdk_name);
xhr.setRequestHeader("x-sdk-platform", globals.x_sdk_platform);
xhr.setRequestHeader("x-bundle-id", globals.app_bundle_id);
}
export function getAnalyticsHeaders() {
const globals = getAnalyticsGlobals();
return {
"x-sdk-version": globals.x_sdk_version,
"x-sdk-os": globals.x_sdk_os,
"x-sdk-name": globals.x_sdk_name,
"x-sdk-platform": globals.x_sdk_platform,
"x-bundle-id": globals.app_bundle_id,
};
}
export function getAnalyticsGlobals() {
if (typeof globalThis === "undefined") {
return {
x_sdk_name: packageVersion.name,
x_sdk_platform: "mobile",
x_sdk_version: packageVersion.version,
x_sdk_os: Platform.OS,
app_bundle_id: appBundleId,
};
}
if ((globalThis as any).X_SDK_NAME === undefined) {
(globalThis as any).X_SDK_NAME = packageVersion.name;
(globalThis as any).X_SDK_PLATFORM = "mobile";
(globalThis as any).X_SDK_VERSION = packageVersion.version;
(globalThis as any).X_SDK_OS = Platform.OS;
(globalThis as any).APP_BUNDLE_ID = appBundleId;
}
return {
x_sdk_name: (globalThis as any).X_SDK_NAME,
x_sdk_platform: (globalThis as any).X_SDK_PLATFORM,
x_sdk_version: (globalThis as any).X_SDK_VERSION,
x_sdk_os: (globalThis as any).X_SDK_OS,
app_bundle_id: (globalThis as any).APP_BUNDLE_ID,
};
}
@@ -49,15 +49,12 @@ export function ChooseWallet({
const guestWallet = wallets.find((w) => w.id === walletIds.localWallet);
const emailWallet = wallets.find(
(w) =>
w.id === walletIds.magicLink ||
(w.id === walletIds.embeddedWallet && w.selectUI),
(w) => w.id === walletIds.embeddedWallet && w.selectUI,
);
const walletsToDisplay = useMemo(() => {
const filteredWallets = wallets.filter(
(wallet) =>
wallet.id !== walletIds.magicLink &&
wallet.id !== walletIds.embeddedWallet &&
wallet.id !== walletIds.localWallet,
);
@@ -1 +0,0 @@
export const BUNDLE_ID_HEADER = "x-bundle-id";
-4
View File
@@ -15,10 +15,6 @@ export { TrustWallet, trustWallet } from "./wallets/wallets/trust-wallet";
export { smartWallet } from "./wallets/wallets/smart-wallet";
export { localWallet } from "./wallets/wallets/local-wallet";
export { LocalWallet } from "./wallets/wallets/LocalWallet";
export { magicWallet } from "./wallets/wallets/magic-link";
export { MagicWallet } from "./wallets/wallets/MagicLink";
export { MagicLink } from "./wallets/wallets/MagicLink";
export { magicLink } from "./wallets/wallets/magic-link";
export { EmbeddedWallet } from "./wallets/wallets/embedded/EmbeddedWallet";
export { embeddedWallet } from "./wallets/wallets/embedded/embedded-wallet";
export * from "./wallets/wallets/wallet-connect/WalletConnectBase";
@@ -1,61 +1,27 @@
import { SmartWallet, walletIds } from "@thirdweb-dev/wallets";
import {
createContext,
useCallback,
useContext,
useEffect,
useState,
} from "react";
import { SmartWallet } from "@thirdweb-dev/wallets";
import { createContext, useContext, useState } from "react";
import { useWalletConnectListener } from "../wallets/hooks/useWalletConnectListener";
import { MagicLink } from "../wallets/wallets/MagicLink";
import { useWalletContext } from "@thirdweb-dev/react-core";
type DappContextType = {
smartWallet?: SmartWallet;
setSmartWallet?: (value?: SmartWallet) => void;
magicLink?: MagicLink;
setMagicLink?: (value?: MagicLink) => void;
};
const DappContext = createContext<DappContextType>({});
export const DappContextProvider = (props: React.PropsWithChildren) => {
const [smartWallet, setSmartWallet] = useState<SmartWallet | undefined>();
const [magicLink, setMagicLink] = useState<MagicLink | undefined>();
const createdWalletInstance = useWalletContext().createdWalletInstance;
useEffect(() => {
if (!createdWalletInstance) {
return;
}
if (createdWalletInstance.walletId === walletIds.magicLink) {
setMagicLink(createdWalletInstance as MagicLink);
}
}, [createdWalletInstance, setMagicLink]);
useWalletConnectListener();
const magicSDK = useCallback(() => {
if (magicLink) {
const magic = magicLink.getMagicSDK();
return <magic.Relayer />;
}
return null;
}, [magicLink]);
return (
<DappContext.Provider
value={{
smartWallet,
setSmartWallet,
magicLink: magicLink,
setMagicLink: setMagicLink,
}}
>
{props.children}
{magicSDK()}
</DappContext.Provider>
);
};
@@ -69,12 +35,3 @@ export const useSmartWallet = () => {
return [context.smartWallet, context.setSmartWallet] as const;
};
export const useMagicLink = () => {
const context = useContext(DappContext);
return {
magicLink: context.magicLink,
setMagicLink: context.setMagicLink,
} as const;
};
@@ -4,7 +4,7 @@ import {
ThirdwebProviderCoreProps,
WalletConfig,
} from "@thirdweb-dev/react-core";
import { PropsWithChildren, useMemo } from "react";
import { PropsWithChildren } from "react";
import type { Chain, defaultChains } from "@thirdweb-dev/chains";
import { SecureStorage } from "../../core/SecureStorage";
import { useCoinbaseWalletListener } from "../wallets/hooks/useCoinbaseWalletListener";
@@ -13,10 +13,10 @@ import { DappContextProvider } from "./context-provider";
import { UIContextProvider } from "./ui-context-provider";
import { MainModal } from "../components/MainModal";
import { ThemeProvider, ThemeType } from "../styles/ThemeProvider";
import { SafeAreaProvider } from "react-native-safe-area-context";
import { walletIds } from "@thirdweb-dev/wallets";
import { ThirdwebStorage } from "../../core/storage/storage";
import type { Locale } from "../i18n/types";
import { getAnalyticsGlobals } from "../../core/storage/utils";
export interface ThirdwebProviderProps<TChains extends Chain[]>
extends Omit<
@@ -148,6 +148,8 @@ export const ThirdwebProvider = <TChains extends Chain[] = DefaultChains>(
...restProps
} = props;
getAnalyticsGlobals();
const coinbaseWalletObj = supportedWallets.find(
(w) => w.id === walletIds.coinbase,
);
@@ -158,11 +160,6 @@ export const ThirdwebProvider = <TChains extends Chain[] = DefaultChains>(
coinbaseWalletObj?.config?.callbackURL,
);
const hasMagicConfig = useMemo(
() => !!supportedWallets.find((wc) => wc.id === walletIds.magicLink),
[supportedWallets],
);
return (
<ThirdwebProviderCore
supportedWallets={supportedWallets}
@@ -188,19 +185,10 @@ export const ThirdwebProvider = <TChains extends Chain[] = DefaultChains>(
>
<ThemeProvider theme={theme ? theme : "dark"}>
<UIContextProvider locale={locale}>
{hasMagicConfig ? (
<SafeAreaProvider>
<DappContextProvider>
{children}
<MainModal />
</DappContextProvider>
</SafeAreaProvider>
) : (
<DappContextProvider>
{children}
<MainModal />
</DappContextProvider>
)}
<DappContextProvider>
{children}
<MainModal />
</DappContextProvider>
</UIContextProvider>
</ThemeProvider>
</ThirdwebProviderCore>
@@ -1,7 +0,0 @@
export function isGlobalThisPresent() {
return typeof globalThis !== "undefined";
}
export function isAppBundleIdPresentInGlobal() {
return isGlobalThisPresent() && "APP_BUNDLE_ID" in globalThis;
}
@@ -41,12 +41,14 @@ import {
} from "../types";
import { InAppBrowser } from "react-native-inappbrowser-reborn";
import { createErrorMessage } from "./helpers/errors";
import {
appBundleId,
reactNativePackageVersion,
} from "../../../../utils/version";
import { BUNDLE_ID_HEADER } from "../../../../constants/headers";
import { ANALYTICS } from "./helpers/analytics";
import { getAnalyticsHeaders } from "../../../../../core/storage/utils";
const HEADERS = {
[EWS_VERSION_HEADER]: (globalThis as any).X_SDK_VERSION,
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
...getAnalyticsHeaders(),
};
export async function sendVerificationEmail(options: {
email: string;
@@ -196,9 +198,7 @@ export async function socialLogin(oauthOptions: OauthOption, clientId: string) {
const resp = await fetch(headlessLoginLinkWithParams, {
headers: {
[EWS_VERSION_HEADER]: reactNativePackageVersion,
[BUNDLE_ID_HEADER]: appBundleId,
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
...HEADERS,
},
});
@@ -279,9 +279,7 @@ export async function customJwt(authOptions: AuthOptions, clientId: string) {
method: "POST",
headers: {
"Content-Type": "application/json",
[EWS_VERSION_HEADER]: reactNativePackageVersion,
[BUNDLE_ID_HEADER]: appBundleId,
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
...HEADERS,
},
body: JSON.stringify({
jwt: jwt,
@@ -329,9 +327,7 @@ export async function authEndpoint(
method: "POST",
headers: {
"Content-Type": "application/json",
[EWS_VERSION_HEADER]: reactNativePackageVersion,
[BUNDLE_ID_HEADER]: appBundleId,
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
...HEADERS,
},
body: JSON.stringify({
payload: payload,
@@ -20,20 +20,17 @@ import {
VerifiedTokenResponse,
} from "../../../types";
import { createErrorMessage } from "../errors";
import {
appBundleId,
reactNativePackageVersion,
} from "../../../../../../utils/version";
import { BUNDLE_ID_HEADER } from "../../../../../../constants/headers";
import { ANALYTICS } from "../analytics";
import { getAnalyticsHeaders } from "../../../../../../../core/storage/utils";
const EMBEDDED_WALLET_TOKEN_HEADER = "embedded-wallet-token";
const PAPER_CLIENT_ID_HEADER = "x-thirdweb-client-id";
const HEADERS = {
"Content-Type": "application/json",
[BUNDLE_ID_HEADER]: appBundleId,
[EWS_VERSION_HEADER]: reactNativePackageVersion,
[EWS_VERSION_HEADER]: (globalThis as any).X_SDK_VERSION,
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
...getAnalyticsHeaders(),
};
export const verifyClientId = async (clientId: string) => {
@@ -68,19 +65,15 @@ export const authFetchEmbeddedWalletUser = async (
Authorization: `Bearer ${EMBEDDED_WALLET_TOKEN_HEADER}:${
authTokenClient || ""
}`,
[BUNDLE_ID_HEADER]: appBundleId,
[PAPER_CLIENT_ID_HEADER]: clientId,
[EWS_VERSION_HEADER]: reactNativePackageVersion,
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
...HEADERS,
}
: {
Authorization: `Bearer ${EMBEDDED_WALLET_TOKEN_HEADER}:${
authTokenClient || ""
}`,
[BUNDLE_ID_HEADER]: appBundleId,
[PAPER_CLIENT_ID_HEADER]: clientId,
[EWS_VERSION_HEADER]: reactNativePackageVersion,
[THIRDWEB_SESSION_NONCE_HEADER]: ANALYTICS.nonce,
...HEADERS,
};
return fetch(url, params);
};
@@ -1,198 +0,0 @@
import {
Magic,
MagicSDKAdditionalConfiguration,
} from "@magic-sdk/react-native-bare";
import { Chain, Connector, normalizeChainId } from "@thirdweb-dev/wallets";
import { Signer, ethers, providers } from "ethers";
import { defaultChains } from "@thirdweb-dev/chains";
import { MagicConnectorOptions } from "./types";
export class MagicConnector extends Connector<MagicConnectorOptions> {
magicSDK: Magic;
magicOptions: MagicConnectorOptions;
provider: any | undefined;
chains: Chain[];
magicSdkConfiguration: MagicSDKAdditionalConfiguration | undefined;
connectedChainId: number | undefined;
constructor(options: MagicConnectorOptions) {
super();
this.magicOptions = options;
this.chains = options.chains ? options.chains : defaultChains;
this.magicSdkConfiguration = options.magicSdkConfiguration;
this.magicSDK = this.initializeMagicSDK({ chainId: options?.chainId || 0 });
}
async connect(options: MagicConnectorOptions): Promise<string> {
if (!this.magicOptions.apiKey) {
throw new Error("Magic API Key is not provided.");
}
// if (options.chainId) {
// this.initializeMagicSDK({ chainId: options.chainId });
// }
await this.getProvider();
this.setupListeners();
this.emit("message", { type: "connecting" });
// Check if there is a user logged in
const isAuthenticated = await this.isConnected();
// Check if we have a chainId, in case of error just assign 0 for legacy
let chainId: number;
try {
chainId = await this.getChainId();
} catch (e) {
chainId = 0;
}
this.connectedChainId = chainId;
// if there is a user logged in, return the user
if (isAuthenticated) {
return await this.getAddress();
}
const magic = this.getMagicSDK();
// LOGIN WITH MAGIC LINK WITH EMAIL
if (options.email) {
await magic.auth.loginWithEmailOTP({
email: options.email,
});
}
// LOGIN WITH MAGIC LINK WITH PHONE NUMBER
if (options.phoneNumber) {
await magic.auth.loginWithSMS({
phoneNumber: options.phoneNumber,
});
}
const signer = await this.getSigner();
let address = await signer.getAddress();
if (!address.startsWith("0x")) {
address = `0x${address}`;
}
return address;
}
async disconnect(): Promise<void> {
const magic = this.getMagicSDK();
await magic.user.logout();
}
async getAddress(): Promise<string> {
const signer = await this.getSigner();
const account = await signer.getAddress();
if (account.startsWith("0x")) {
return account;
}
return `0x${account}`;
}
async getSigner(): Promise<Signer> {
const provider = new ethers.providers.Web3Provider(
(await this.getProvider()) as any, // TODO: fix type mismatch
);
const signer = await provider.getSigner();
return signer;
}
getProvider(): Promise<providers.Provider> {
if (this.provider) {
return this.provider;
}
const magic = this.getMagicSDK();
this.provider = magic.rpcProvider;
return this.provider;
}
switchChain(chainId: number): Promise<void> {
const chain = this.chains.find((c) => c.chainId === chainId);
if (!chain) {
throw new Error("Chain not found");
}
if (this.connectedChainId !== chainId) {
this.initializeMagicSDK({ chainId });
}
return Promise.resolve();
}
isConnected(): Promise<boolean> {
const magic = this.getMagicSDK();
try {
return magic.user.isLoggedIn();
} catch (e) {
return Promise.resolve(false);
}
}
async setupListeners(): Promise<void> {
this.provider?.on("accountsChanged", () => {
throw new Error("Accounts changed not implemented");
});
this.provider?.on("chainChanged", this.onChainChanged);
this.provider?.on("disconnect", this.onDisconnect);
return Promise.resolve();
}
updateChains(chains: Chain[]): void {
this.chains = chains;
}
// my methods
onDisconnect(): void {
this.emit("disconnect");
}
getMagicSDK() {
if (!this.magicSDK) {
return this.initializeMagicSDK();
}
return this.magicSDK;
}
initializeMagicSDK({ chainId }: { chainId?: number } = {}) {
if (chainId) {
const chain = this.chains.find((c) => c.chainId === chainId);
if (chain) {
this.magicSdkConfiguration = this.magicSdkConfiguration || {};
this.magicSdkConfiguration.network = {
rpcUrl: chain.rpc[0],
chainId: chain.chainId,
};
}
}
this.magicSDK = new Magic(
this.magicOptions.apiKey,
this.magicSdkConfiguration,
);
this.provider = this.magicSDK.rpcProvider;
return this.magicSDK;
}
async getChainId(): Promise<number> {
const networkOptions = this.magicSdkConfiguration?.network;
if (typeof networkOptions === "object") {
const chainID = networkOptions.chainId;
if (chainID) {
return normalizeChainId(chainID);
}
}
throw new Error("Chain ID is not defined");
}
protected isChainUnsupported(chainId: number) {
return !this.chains.some((x) => x.chainId === chainId);
}
protected onChainChanged(chainId: string | number): void {
const id = normalizeChainId(chainId);
const unsupported = this.isChainUnsupported(id);
this.emit("change", { chain: { id, unsupported } });
}
}
@@ -1,17 +0,0 @@
import { MagicSDKAdditionalConfiguration } from "@magic-sdk/react-native-bare";
import { Chain } from "@thirdweb-dev/chains";
import { WalletOptions } from "@thirdweb-dev/wallets";
export interface MagicConnectorOptions {
apiKey: string;
magicSdkConfiguration?: MagicSDKAdditionalConfiguration;
chains?: Chain[];
chainId?: number;
email?: string;
phoneNumber?: string;
}
export type MagicLinkOptions = Omit<
WalletOptions<MagicConnectorOptions>,
"clientId"
>;
@@ -1,83 +0,0 @@
import { AbstractClientWallet, walletIds } from "@thirdweb-dev/wallets";
import {
MagicConnectorOptions,
MagicLinkOptions,
} from "../connectors/magic/types";
import type { MagicConnector as MagicConnectorType } from "../connectors/magic/magic-connector";
import { MagicConnector } from "../connectors/magic/magic-connector";
/**
* @deprecated We have deprecated magicLink in favor of our embeddedWallet which adds support for more sign in methods.
* To learn more, please see:
*
* Checkout the [Release Notes](https://portal.thirdweb.com/wallets/embedded-wallet/overview) and [Documentation](https://portal.thirdweb.com/react-native/v0/wallets/embedded-wallet) for more information.
*/
export class MagicLink extends AbstractClientWallet<
MagicLinkOptions,
MagicConnectorOptions
> {
connector?: MagicConnectorType;
options: MagicLinkOptions;
static meta = {
iconURL:
"ipfs://QmUMBFZGXxBpgDmZzZAHhbcCL5nYvZnVaYLTajsNjLcxMU/1-Icon_Magic_Color.svg",
name: "Magic Link",
};
static id = walletIds.magicLink;
constructor(options: MagicLinkOptions) {
super(walletIds.magicLink, options);
this.options = options;
this.initializeConnector();
}
async getConnector(): Promise<MagicConnectorType> {
if (!this.connector) {
return await this.initializeConnector();
}
return this.connector;
}
// my methods
initializeConnector() {
this.connector = new MagicConnector({
...this.options,
chainId: this.options.chainId,
chains: this.chains,
});
return this.connector;
}
getMagicSDK() {
return (this.connector as MagicConnector)?.getMagicSDK();
}
async autoConnect(options?: MagicConnectorOptions) {
this.connector?.initializeMagicSDK(options);
const magic = this.getMagicSDK();
if (await magic.user.isLoggedIn()) {
return super.autoConnect(options);
} else {
throw new Error("Magic user is not logged in");
}
}
async disconnect() {
const magic = this.getMagicSDK();
await magic.user.logout();
return super.disconnect();
}
}
/**
* @deprecated Use `MagicLink` instead
*
* Renamed for consistency with our React package
*/
export class MagicWallet extends MagicLink {}
@@ -1,192 +0,0 @@
import { walletIds } from "@thirdweb-dev/wallets";
import {
ConnectUIProps,
SelectUIProps,
WalletConfig,
WalletOptions,
useCreateWalletInstance,
useSetConnectedWallet,
useSetConnectionStatus,
useWalletContext,
} from "@thirdweb-dev/react-core";
import { MagicLinkOptions } from "../connectors/magic/types";
import { MagicLink } from "./MagicLink";
import { useEffect, useRef } from "react";
import Box from "../../components/base/Box";
import { TextInput } from "../../components/base/TextInput";
import Text from "../../components/base/Text";
import { useMagicLink } from "../../providers/context-provider";
import BaseButton from "../../components/base/BaseButton";
import React from "react";
import { ConnectingWallet } from "../../components/ConnectWalletFlow/ConnectingWallet/ConnectingWallet";
import { useGlobalTheme, useLocale } from "../../providers/ui-context-provider";
/**
*
* @param magicLinkOptions - Options available to create a magic link wallet
* @returns A WalletConfig<MagicLink> object
*
* @deprecated We have deprecated magicLink in favor of our embeddedWallet which adds support for more sign in methods.
* To learn more, please see:
*
* Check out [Release Note](https://portal.thirdweb.com/wallets/embedded-wallet/overview) and [Documentation](https://portal.thirdweb.com/react-native/v0/wallets/embedded-wallet) for more details.
*/
export const magicLink = (
magicLinkOptions: MagicLinkOptions & { recommended?: boolean },
): WalletConfig<MagicLink> => {
return {
id: walletIds.magicLink,
meta: MagicLink.meta,
create: (options: WalletOptions) => {
return new MagicLink({
...options,
...magicLinkOptions,
chainId: options.chain.chainId,
});
},
/**
* UI for connecting wallet
*/
connectUI(props) {
return (
<MagicConnectionUI {...props} magicLinkOptions={magicLinkOptions} />
);
},
/**
* UI for selecting wallet - this UI is rendered in the wallet selection screen
*/
selectUI: MagicSelectionUI,
isInstalled: () => {
return true;
},
recommended: magicLinkOptions?.recommended,
};
};
const MagicSelectionUI: React.FC<SelectUIProps<MagicLink>> = (props) => {
const l = useLocale();
const theme = useGlobalTheme();
const [email, setEmail] = React.useState("");
const onContinuePress = () => {
if (!email) {
return;
}
props.onSelect(email);
};
return (
<Box paddingHorizontal="xl" mt="lg">
<TextInput
textInputProps={{
placeholder: l.embedded_wallet.enter_your_email,
placeholderTextColor: theme.colors.textSecondary,
onChangeText: (text: string) => {
setEmail(text);
},
style: {
fontSize: 14,
color: theme.colors.textPrimary,
fontFamily: theme.textVariants.defaults.fontFamily,
lineHeight: 16,
padding: 0,
},
}}
containerProps={{
paddingHorizontal: "sm",
paddingVertical: "sm",
}}
/>
<BaseButton
mt="md"
paddingVertical="md"
borderRadius="lg"
borderWidth={1}
borderColor="border"
backgroundColor="accentButtonColor"
onPress={onContinuePress}
>
<Text
variant="bodySmall"
color="accentButtonTextColor"
fontWeight="700"
>
{l.common.continue}
</Text>
</BaseButton>
</Box>
);
};
const MagicConnectionUI: React.FC<
ConnectUIProps<MagicLink> & { magicLinkOptions: MagicLinkOptions }
> = ({ selectionData, walletConfig, connected, goBack, magicLinkOptions }) => {
const createWalletInstance = useCreateWalletInstance();
const setConnectedWallet = useSetConnectedWallet();
const chainToConnect = useWalletContext().chainToConnect;
const setConnectionStatus = useSetConnectionStatus();
const { magicLink: ctxMagicLink, setMagicLink } = useMagicLink();
useEffect(() => {
const inst = createWalletInstance(walletConfig);
setMagicLink?.(inst);
}, [createWalletInstance, setMagicLink, walletConfig]);
const connectPrompted = useRef(false);
useEffect(() => {
if (connectPrompted.current || !ctxMagicLink) {
return;
}
connectPrompted.current = true;
const isEmail = (selectionData as string).includes("@");
(async () => {
// close();
try {
setConnectionStatus("connecting");
const connectParams = {
chainId: chainToConnect?.chainId,
...magicLinkOptions,
...(isEmail
? { email: selectionData }
: { phoneNumber: selectionData }),
};
connected();
await ctxMagicLink.connect(connectParams);
await ctxMagicLink.getMagicSDK().user.getMetadata();
setConnectedWallet(ctxMagicLink, connectParams);
setConnectionStatus("connected");
} catch (e) {
setConnectionStatus("disconnected");
console.error("Error connecting to magic", e);
}
})();
}, [
selectionData,
walletConfig,
connected,
ctxMagicLink,
setConnectedWallet,
setConnectionStatus,
chainToConnect?.chainId,
magicLinkOptions,
]);
return (
<ConnectingWallet
subHeaderText=""
wallet={walletConfig}
onClose={connected}
onBackPress={goBack}
/>
);
};
/**
* @deprecated Use `magicLink()` instead
*
* Renamed for consistency with our React package
*/
export const magicWallet = magicLink;
-7
View File
@@ -1,8 +1 @@
import { isGlobalThisPresent } from "./evm/utils/global";
import { appBundleId } from "./evm/utils/version";
export * from "./evm";
if (isGlobalThisPresent()) {
(globalThis as any).APP_BUNDLE_ID = appBundleId;
}
Binary file not shown.
+86
View File
@@ -1,5 +1,91 @@
# @thirdweb-dev/react
## 4.4.8
### Patch Changes
- [#2289](https://github.com/thirdweb-dev/js/pull/2289) [`0155adce`](https://github.com/thirdweb-dev/js/commit/0155adcea4b5379be552962f219853c0a2b1c050) Thanks [@MananTank](https://github.com/MananTank)! - - Show EmbeddedWallet UI instead of the default welcomeScreen in the ConnectWallet wide modal. If a custom welcomeScreen is provided, it will be shown instead of the EmbeddedWallet UI. Same Is done for the deprecated PaperWallet as well
- Stop treating Magic Link as a Social Login and remove the custom Select UI for it
- highlight the wallet for which the Connect UI is shown in the ConnectWallet wide modal
-
- [#2290](https://github.com/thirdweb-dev/js/pull/2290) [`f85806c0`](https://github.com/thirdweb-dev/js/commit/f85806c0674921adc7007eec9f061070eefe1d84) Thanks [@MananTank](https://github.com/MananTank)! - Update EmbeddedWallet name in ConnectWallet UI
- [#2288](https://github.com/thirdweb-dev/js/pull/2288) [`74d76ff5`](https://github.com/thirdweb-dev/js/commit/74d76ff580d78a5b98a2d7180a58457231c1b95a) Thanks [@MananTank](https://github.com/MananTank)! - Add "Powered By Thirdweb" Branding at the bottom of `ConnectEmbed` and `ConnectWallet` Modal
A new prop `showThirdwebBranding` has been added to both `ConnectEmbed` and `ConnectWallet` components to hide this branding.
- Updated dependencies [[`09de55f1`](https://github.com/thirdweb-dev/js/commit/09de55f13cbd29b4e0eb57808e0d30f9c1b3ba94), [`53786fc3`](https://github.com/thirdweb-dev/js/commit/53786fc3068568758f033a1c63975c94a8e407f5), [`a86478bf`](https://github.com/thirdweb-dev/js/commit/a86478bf248786423d03f4a20d9dc7c02270c371), [`23d0e553`](https://github.com/thirdweb-dev/js/commit/23d0e553088321edfe3971950c2e7f27209d9aaf)]:
- @thirdweb-dev/sdk@4.0.35
- @thirdweb-dev/chains@0.1.72
- @thirdweb-dev/react-core@4.4.8
- @thirdweb-dev/wallets@2.4.10
## 4.4.7
### Patch Changes
- Updated dependencies [[`357886e3`](https://github.com/thirdweb-dev/js/commit/357886e31b37aad950731ce8f013a101190ebd07)]:
- @thirdweb-dev/chains@0.1.71
- @thirdweb-dev/react-core@4.4.7
- @thirdweb-dev/sdk@4.0.34
- @thirdweb-dev/wallets@2.4.9
## 4.4.6
### Patch Changes
- [#2260](https://github.com/thirdweb-dev/js/pull/2260) [`6a3cacb6`](https://github.com/thirdweb-dev/js/commit/6a3cacb62257c1774b5bac739b89e17495f42655) Thanks [@MananTank](https://github.com/MananTank)! - Enforce compact modal size in ConnectWallet based on available space instead of just on mobile device
- Updated dependencies [[`433d49e3`](https://github.com/thirdweb-dev/js/commit/433d49e3aba03df33678f429f19f426fd107b7eb)]:
- @thirdweb-dev/react-core@4.4.6
## 4.4.5
### Patch Changes
- Updated dependencies [[`1decd52a`](https://github.com/thirdweb-dev/js/commit/1decd52a36c303e540679ac43d206942ea83fc83), [`1e50caee`](https://github.com/thirdweb-dev/js/commit/1e50caeed1b85f91a6d2efb2e5204f3acf300134)]:
- @thirdweb-dev/sdk@4.0.33
- @thirdweb-dev/chains@0.1.70
- @thirdweb-dev/react-core@4.4.5
- @thirdweb-dev/wallets@2.4.8
## 4.4.4
### Patch Changes
- [#2252](https://github.com/thirdweb-dev/js/pull/2252) [`439a377a`](https://github.com/thirdweb-dev/js/commit/439a377aa77ce86631a78daa4a409e00e48f69be) Thanks [@MananTank](https://github.com/MananTank)! - Add `detailsModalFooter` prop on `<ConnectWallet />` component to allow rendering a custom UI at the bottom of the details modal.
```tsx
<ConnectWallet
detailsModalFooter={(props) => {
const { close } = props;
return <div> .... </div>;
}}
/>
```
- Updated dependencies [[`4f52c296`](https://github.com/thirdweb-dev/js/commit/4f52c2961131636eed323a66568a519246d9f91d), [`374671fd`](https://github.com/thirdweb-dev/js/commit/374671fd9ac97a93263b09c6c0a53cfd129881d7)]:
- @thirdweb-dev/sdk@4.0.32
- @thirdweb-dev/chains@0.1.69
- @thirdweb-dev/react-core@4.4.4
- @thirdweb-dev/wallets@2.4.7
## 4.4.3
### Patch Changes
- [#2224](https://github.com/thirdweb-dev/js/pull/2224) [`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a) Thanks [@0xFirekeeper](https://github.com/0xFirekeeper)! - Adds correct reporing headers
- [#2224](https://github.com/thirdweb-dev/js/pull/2224) [`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a) Thanks [@0xFirekeeper](https://github.com/0xFirekeeper)! - Adds global sdk vars
- Updated dependencies [[`3ba15366`](https://github.com/thirdweb-dev/js/commit/3ba15366be8b57e577b871c44e386978dc9d4a8a), [`771bd1e1`](https://github.com/thirdweb-dev/js/commit/771bd1e1b280681992195103c22aafa1fb98f7e0)]:
- @thirdweb-dev/wallets@2.4.6
- @thirdweb-dev/sdk@4.0.31
- @thirdweb-dev/chains@0.1.68
- @thirdweb-dev/react-core@4.4.3
## 4.4.2
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@thirdweb-dev/react",
"version": "4.4.2",
"version": "4.4.8",
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/react",
"author": "thirdweb eng <[email protected]>",
"license": "Apache-2.0",
@@ -185,6 +185,11 @@ export interface Web3ButtonProps<TActionFn extends ActionFn> {
* Either provide a component to replace the default screen entirely or an object with title, subtitle and imgSrc to change the content of the default screen
*/
welcomeScreen?: WelcomeScreen;
/**
* By default the ConnectWallet Modal shows "Powered by Thirdweb" at the bottom. If you want to hide it, set it to `false`
*/
showThirdwebBranding?: boolean;
};
/**
@@ -16,6 +16,7 @@ import { en } from "../locales/en";
import { ThirdwebLocaleContext } from "./locale-provider";
import { walletIds } from "@thirdweb-dev/wallets";
import { ThirdwebLocale } from "../locales/types";
import { getAnalyticsGlobals } from "../utils/headers";
export interface ThirdwebProviderProps<TChains extends Chain[]>
extends Omit<
@@ -479,6 +480,8 @@ export const ThirdwebProvider = <TChains extends Chain[] = DefaultChains>(
...restProps
} = props;
getAnalyticsGlobals();
const wallets: WalletConfig[] = supportedWallets || defaultWallets;
const theme = _theme || "dark";
@@ -1,8 +1,8 @@
import { useState, createContext, useContext } from "react";
import { isMobile } from "../utils/isMobile";
import { Theme } from "../../design-system";
import { WelcomeScreen } from "../../wallet/ConnectWallet/screens/types";
import { useTWLocale } from "./locale-provider";
import { canFitWideModal } from "../utils/canFitWIdeModal";
type BoolSetter = (value: boolean) => void;
@@ -22,6 +22,7 @@ export type ModalConfig = {
};
isEmbed?: boolean;
onConnect?: () => void;
showThirdwebBranding?: boolean;
};
const WalletModalOpen = /* @__PURE__ */ createContext(false);
@@ -56,17 +57,18 @@ export const WalletUIStatesProvider = (
onLogout?: () => void;
};
onConnect?: () => void;
showThirdwebBranding?: boolean;
}>,
) => {
const [isWalletModalOpen, setIsWalletModalOpen] = useState(false);
const _isMobile = isMobile();
const enforceCompact = !canFitWideModal();
const locale = useTWLocale();
const [modalConfig, setModalConfig] = useState<ModalConfig>({
title: props.title || locale.connectWallet.defaultModalTitle,
theme: props.theme || "dark",
data: undefined,
modalSize: (_isMobile ? "compact" : props.modalSize) || "wide",
modalSize: (enforceCompact ? "compact" : props.modalSize) || "wide",
termsOfServiceUrl: props.termsOfServiceUrl,
privacyPolicyUrl: props.privacyPolicyUrl,
welcomeScreen: props.welcomeScreen,
@@ -74,6 +76,7 @@ export const WalletUIStatesProvider = (
isEmbed: props.isEmbed,
auth: props.auth,
onConnect: props.onConnect,
showThirdwebBranding: props.showThirdwebBranding,
});
return (
@@ -233,6 +236,13 @@ export type ModalConfigOptions = {
* Note that this does not include the sign in, If you want to call a callback after user connects AND signs in with their wallet, use `auth.onLogin` instead
*/
onConnect?: () => void;
/**
* By default the ConnectWallet Modal shows "powered by thirdweb" branding at the bottom of the modal.
*
* If you want to hide the branding, set this to `false`
*/
showThirdwebBranding?: boolean;
};
/**
@@ -405,7 +415,7 @@ export type ModalConfigOptions = {
*/
export const useSetWalletModalConfig = () => {
const context = useContext(SetModalConfigCtx);
const _isMobile = isMobile();
const enforceCompact = !canFitWideModal();
const locale = useTWLocale();
if (context === undefined) {
@@ -419,7 +429,7 @@ export const useSetWalletModalConfig = () => {
title: title || locale.connectWallet.defaultModalTitle,
data: undefined,
theme: theme || "dark",
modalSize: (_isMobile ? "compact" : modalSize) || "wide",
modalSize: (enforceCompact ? "compact" : modalSize) || "wide",
...rest,
});
};
@@ -0,0 +1,12 @@
import { wideModalScreenThreshold } from "../../wallet/ConnectWallet/constants";
/**
* Return true if the current screen size can fit the the wide connect modal
* @internal
*/
export function canFitWideModal(): boolean {
if (typeof window !== "undefined") {
return window.innerWidth >= wideModalScreenThreshold;
}
return false;
}
+30
View File
@@ -0,0 +1,30 @@
import packageJson from "../../../package.json";
import { detectOS } from "./isMobile";
export function getAnalyticsGlobals() {
if (typeof globalThis === "undefined") {
return {
x_sdk_name: packageJson.name,
x_sdk_platform: "browser",
x_sdk_version: packageJson.version,
x_sdk_os: detectOS(),
app_bundle_id: undefined,
};
}
if ((globalThis as any).X_SDK_NAME === undefined) {
(globalThis as any).X_SDK_NAME = packageJson.name;
(globalThis as any).X_SDK_PLATFORM = "browser";
(globalThis as any).X_SDK_VERSION = packageJson.version;
(globalThis as any).X_SDK_OS = detectOS();
(globalThis as any).APP_BUNDLE_ID = undefined;
}
return {
x_sdk_name: (globalThis as any).X_SDK_NAME,
x_sdk_platform: (globalThis as any).X_SDK_PLATFORM,
x_sdk_version: (globalThis as any).X_SDK_VERSION,
x_sdk_os: (globalThis as any).X_SDK_OS,
app_bundle_id: (globalThis as any).APP_BUNDLE_ID,
};
}
+1 -1
View File
@@ -41,7 +41,7 @@ export function isIOS(): boolean {
/**
* @internal
*/
function detectOS() {
export function detectOS() {
const env = detectEnv();
return env?.os ? env.os : undefined;
}

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