Compare commits

...
Author SHA1 Message Date
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
3ad3bf0124 Version Packages (#700)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-03-29 15:46:11 -07:00
iketwandGitHub 6b31a9bcd3 [Wallets] set qrcode prop correctly (#835) 2023-03-29 22:33:50 +00:00
Adam MajmudarandGitHub 085076117b [SDK] Add magical types for thirdweb generate (#820) 2023-03-29 21:51:07 +00:00
Manan TankandGitHub 83e99dbf28 Fix paper auto connect (#833) 2023-03-29 21:31:31 +00:00
Manan TankandGitHub e47ceafeae Wallet enhancements & Fixes (#832) 2023-03-29 20:11:07 +00:00
iketwandGitHub 96b1aa1521 Update changesets (#831) 2023-03-29 19:24:41 +00:00
Manan TankandGitHub 3ff8eecf18 use authConfig in useLogin() (#829) 2023-03-29 18:50:55 +00:00
Adam MajmudarandGitHub 805896c78d [SDK] Make metadata signature 721 output optional (#830) 2023-03-29 18:40:55 +00:00
48ec060267 various wallet improvements (#828)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-29 10:24:23 -07:00
4bdeefe6cb [Wallets, Core, RN, React] Allow wallets to be constructed without params where possible (#825)
Co-authored-by: Manan Tank <[email protected]>
2023-03-29 09:44:37 -07:00
iketwandGitHub 95bcfa6df8 [Wallets] Adds autoConnect capabilities (#824) 2023-03-29 01:19:48 +00:00
Jonas DanielsandGitHub 4ba431f4a4 [chains] - add linea testnet (consensys zkevm) (#823) 2023-03-29 00:36:34 +00:00
e453e3651e allow wallet config (#808)
Co-authored-by: ikethirdweb <[email protected]>
Co-authored-by: iketw <[email protected]>
2023-03-29 00:27:24 +00:00
Jonas DanielsandGitHub e2ec70c492 [chains] - update some chains (#822) 2023-03-28 21:45:41 +00:00
Jonas DanielsandGitHub 02f5766bcb [react] - fix connect wallet modal overlay (#821) 2023-03-28 07:35:44 +00:00
6ea5eea1d8 Optimize build times for foundry and hardhat (#806)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-28 07:30:51 +00:00
Adam MajmudarandGitHub 682f1c673f [SDK] Update contract.call with function types (#819) 2023-03-28 01:00:05 +00:00
4cbbad98b3 [SDK] Add support for transaction on deploy (#758)
Co-authored-by: Adam Majmudar <[email protected]>
Co-authored-by: Jonas Daniels <[email protected]>
Co-authored-by: Adam Majmudar <[email protected]>
Co-authored-by: Joaquim Verges <[email protected]>
2023-03-27 23:11:22 +00:00
Jonas DanielsandGitHub e4893a0821 [chains] - fix zkevm mainnet not being a testnet (#818) 2023-03-27 23:08:18 +00:00
Jonas DanielsandGitHub 766cc75640 [tooling] - attempt to fix versioning (#817) 2023-03-27 22:51:08 +00:00
Jonas DanielsandGitHub f994278a51 [chains] - fix zkevm mainnet beta showing as testnet (#816) 2023-03-27 22:15:29 +00:00
Jonas Daniels 0666fb018b Merge branch 'main' of github.com:thirdweb-dev/js 2023-03-27 14:30:17 -07:00
Jonas Daniels 61e8985149 fix chains build 2023-03-27 14:30:06 -07:00
iketwandGitHub b8b8a7ca07 [ReactNative] remove old device wallet (#815) 2023-03-27 21:21:31 +00:00
iketwandGitHub b97cf2e588 [ReactNative] Fix flicker in react-native-modal in ios (#813) 2023-03-27 20:47:27 +00:00
Jonas DanielsandGitHub 97b5147bde [tooling] fix docs generation (#812) 2023-03-27 20:26:56 +00:00
Manan TankandGitHub 13c1e23757 catch JSON error when connecting to safe (#811) 2023-03-27 20:11:09 +00:00
iketwandGitHub 5ac451da2b [ReactNative] Improve web3button and add more descriptive console.errors (#810) 2023-03-27 18:19:36 +00:00
Jonas DanielsandGitHub 9a4a542ce9 [chains] add polygon zkevm mainnet beta (#809) 2023-03-27 17:23:31 +00:00
iketwandGitHub 79768d4cfa [ReactNative] Update code comments for supportedWallets (#807) 2023-03-27 14:05:12 +00:00
iketwandGitHub 4d07b4b4e7 [ReactCore/Wallets] ReactCore manages all coordination (#802) 2023-03-25 16:46:20 +00:00
Manan TankandGitHub f281e1a080 react: various UI improvements for connect wallet (#805) 2023-03-25 08:57:41 +00:00
Jonas DanielsandGitHub 92936b7ffa [react-core] - update provider props to accept strings and numbers bu… (#803) 2023-03-25 01:48:51 +00:00
Jonas DanielsandGitHub a9618d9bca [CLI] - fix install command (#804) 2023-03-25 01:26:30 +00:00
Jonas DanielsandGitHub 6b145d4b36 [chains] update chains (#801) 2023-03-24 23:53:41 +00:00
iketwandGitHub 49eceaa08e [ReactCore] typescript complains about chains not in defaultChains (#799) 2023-03-24 18:57:02 +00:00
iketwandGitHub d6ae520aaf [ReactCore] fix useActiveChain hook (#800) 2023-03-24 18:44:54 +00:00
Manan TankandGitHub 7a420889f6 Fix Gnosis Safe Connection glitch + UI improvements (#798) 2023-03-24 16:34:05 +00:00
iketwandGitHub de7b619676 [SDK] remove duplicate creation in derived class (#797) 2023-03-24 05:24:32 +00:00
iketwandGitHub b56511e22d [SDK] Dont parse abis on detect features (#796) 2023-03-24 05:24:21 +00:00
a6fce0f691 Install command improvements (#794)
Co-authored-by: Adam Majmudar <[email protected]>
Co-authored-by: adam-maj <[email protected]>
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-23 21:39:05 +00:00
iketwandGitHub 2129c1f8c1 [Wallets] Pass correct static id from the specific wallet (#795) 2023-03-23 20:28:27 +00:00
Manan TankandGitHub 1f49af3d5b Fix Autoconnect not working on prod bundle (#793) 2023-03-23 17:44:44 +00:00
77c5ca1bd5 Connect Wallet v2 UI improvements (#789)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-23 09:07:20 +00:00
Jonas DanielsandGitHub 283fd7db5d [react-core] - no longer requires auth at runtime at all :) (#792) 2023-03-23 05:58:52 +00:00
Jonas DanielsandGitHub c2324bfdc2 [auth, react-core, react] - clean up auth integration (#791) 2023-03-23 04:21:29 +00:00
Joaquim VergesandGitHub 485abd06aa [SDK] Fix getPackContents with ERC20 rewards (#790) 2023-03-23 03:17:25 +00:00
9fa628f894 [SDK, React, CLI] Make generate work with useContract (#767)
Co-authored-by: Adam Majmudar <[email protected]>
Co-authored-by: Adam Majmudar <[email protected]>
Co-authored-by: Joaquim Verges <[email protected]>
2023-03-22 20:23:12 +00:00
Manan TankandGitHub ddc1c33a53 Gnosis Safe (#786) 2023-03-22 14:46:42 +00:00
Jonas DanielsandGitHub 9fdcf3113a [sdk] - more z.input -> z.output changes (#784) 2023-03-21 06:13:43 +00:00
Joaquim VergesandGitHub 6c0c65389f [UnityLib] update wallets SDK (#778) 2023-03-21 06:06:47 +00:00
Jonas DanielsandGitHub 91089a3869 [sdk] - make AbiTypeBaseSchema default name instead of optional as well (#783) 2023-03-21 05:43:49 +00:00
Jonas DanielsandGitHub d8c1c9433e [sdk] - properly parse ABIs (#782) 2023-03-21 05:13:44 +00:00
Jonas DanielsandGitHub d1e2d5f90f [wallets] - fix paper connection args (#781) 2023-03-21 04:15:19 +00:00
Jonas DanielsandGitHub 2a53405dea [wallets] - remove serverside and Pkey wallets from top level export (#780) 2023-03-21 03:21:00 +00:00
Jonas DanielsandGitHub 0f5343a303 [wallets, react, react-core] - clean up lots of wallet logic (#779) 2023-03-21 01:45:17 +00:00
4b77bc9b88 add paper wallet, don't save device wallet connectParams (#764)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-20 23:04:09 +00:00
iketwandGitHub e2ea5a716f [ReactCore] Making supportedChains optional again in the SDK provider (#766) 2023-03-19 05:46:45 +00:00
8463a1761f [SDK] Fix infinite recursion in ENS cache (#773)
Co-authored-by: Adam Majmudar <[email protected]>
2023-03-18 23:54:29 +00:00
iketwandGitHub e3161e5986 [RN] Get wallet meta from wallets (#771) 2023-03-18 20:02:01 +00:00
Joaquim VergesandGitHub 5c7c0923e4 [SDK] Fix NFT metadata failure breaking marketplace v3 getAllListings (#770) 2023-03-18 04:29:29 +00:00
Jonas DanielsandGitHub 6ae9fbf988 [tooling] - add a script to attempt to explain major versions (#769) 2023-03-17 23:51:14 +00:00
923b9ead3d [CLI] thirdweb create should rename contract (#768)
Co-authored-by: Adam Majmudar <[email protected]>
2023-03-17 22:28:51 +00:00
92d190709b [CLI] Handle failed metadata downloads and use cache in generate (#765)
Co-authored-by: Adam Majmudar <[email protected]>
2023-03-17 19:14:42 +00:00
iketwandGitHub 43d8a65e1d [ReactNativeCLI] Add expo option to create app (#763) 2023-03-17 15:15:19 +00:00
Jonas DanielsandGitHub 93eca1de7d [wallets] - coinbase sdk full dependency (#760) 2023-03-17 04:47:49 +00:00
Joaquim VergesandGitHub 52d37f0187 [SDK] fix ABI parsing for inputs without names (#761) 2023-03-17 04:42:58 +00:00
Jonas Daniels c6efc2389f change some versioning in changesets 2023-03-16 20:43:45 -07:00
Jonas DanielsandGitHub 379d4e167a remove duplicate changeset (#759) 2023-03-17 02:43:13 +00:00
8ef5a6f217 [SDK] add marketplace v3 extensions to SmartContract (#753)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-17 02:24:30 +00:00
9ea439692d [Storage] Set new ipfs gateway (#757)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-17 02:20:52 +00:00
Jonas DanielsandGitHub 9e593574f1 [tooling] - switch to pnpm for faster CI (#755) 2023-03-17 02:05:00 +00:00
abf609a401 [SDK] Add multiplyGas function and bump polygon default gas settings (#737)
Co-authored-by: Adam Majmudar <[email protected]>
Co-authored-by: Joaquim Verges <[email protected]>
Co-authored-by: Adam Majmudar <[email protected]>
2023-03-16 20:19:00 +00:00
Manan TankandGitHub 781824ba05 fix wallet connect v2 error (#754) 2023-03-16 19:59:51 +00:00
1baed0b1d8 [SDK, CLI] Add generated ABIs and types (#721)
Co-authored-by: Adam Majmudar <[email protected]>
Co-authored-by: Adam Majmudar <[email protected]>
2023-03-16 20:26:54 +00:00
iketwandGitHub 439d791996 [ReactNative] clear web3button state when user disconnects (#752) 2023-03-16 19:38:47 +00:00
Jonas DanielsandGitHub efff9cfda0 [cli] remove tslog (#751) 2023-03-16 19:27:52 +00:00
f630630b1f react: use wallet.meta for wallet name and icon (#731)
Co-authored-by: iketw <[email protected]>
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-16 17:45:49 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
1a574ef3d8 Bump eslint-config-next from 12.3.1 to 13.2.4 (#743)
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-16 17:25:19 +00:00
2221f97ddc Fix RPC URLs in the chain object (#748)
Co-authored-by: ikethirdweb <[email protected]>
2023-03-16 16:37:04 +00:00
Manan TankandGitHub 34f3d7104c fix hotlink error (#747) 2023-03-16 14:16:12 +00:00
iketwandGitHub a4c9017dd5 [ReactCore] fix timeout and find exact wallet (#746) 2023-03-16 14:06:04 +00:00
Jonas DanielsandGitHub c18738bb34 Create .github/dependabot.yml (#740) 2023-03-16 11:25:23 +00:00
Jonas DanielsandGitHub 4d5fdda907 [wallets, react] - move (gnosis) safe to /wallets package (#739) 2023-03-16 10:54:56 +00:00
Jonas DanielsandGitHub f619249110 fix some changesets (#738) 2023-03-16 08:23:56 +00:00
e4b4a8d287 [React] Move default api key to the React package (#736)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-16 08:21:00 +00:00
1efa22afd3 [React] Fix wrong return on useActiveClaimConditionForWallet (#733)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-16 08:05:38 +00:00
Jonas DanielsandGitHub ba9f593be8 [sdk] - add functions to watch blocks and transactions (#735) 2023-03-16 07:50:33 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ce0b1bf288 Bump next-auth from 4.19.2 to 4.20.1 (#718)
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-16 04:30:12 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
7522320050 Bump webpack from 5.75.0 to 5.76.1 (#727)
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-16 04:29:55 +00:00
iketwandGitHub 4dfe2f6ee6 [ReactCore] re-export all thirdweb/sdk (#734) 2023-03-16 01:10:20 +00:00
iketwandGitHub b17194bd46 [Wallets] separate listeners in tw-connector (#732) 2023-03-15 15:48:11 +00:00
Manan TankandGitHub 1fbc0d061a Cwv2 connection fixes (#730) 2023-03-15 13:39:50 +00:00
Manan TankandGitHub 75bec68d23 Fix useConnect() type (#729) 2023-03-15 11:03:38 +00:00
iketwandGitHub ce48d13cd7 [RNCreateCLI] skip ruby checks for expo (#728) 2023-03-15 05:23:09 +00:00
iketwandGitHub bddb1566f1 [Wallets] Correctly setup listeners (#726) 2023-03-15 02:29:55 +00:00
Nacho IacovinoandGitHub b2d0ffb049 [Chains] Override goerli default faucet (#719) 2023-03-14 22:45:10 +00:00
iketwandGitHub 956ceff3c3 [ReactNativeCLI] Only check ruby version and throw. Attempting to change has a lot of side effects (#725) 2023-03-14 14:25:03 +00:00
Manan TankandGitHub ce1ecb9f9f Connect wallet v2 various improvements (#724) 2023-03-14 13:27:00 +00:00
iketwandGitHub 48bff31f35 [ReactNativeCLI] manage ruby version by setting the project version to the systems version (#723) 2023-03-14 04:42:24 +00:00
iketwandGitHub 0eb0aae29a [ReactNativeSDK] fix WC uri and pass correct default metadata url (#722) 2023-03-14 02:40:36 +00:00
Nacho IacovinoandGitHub 04775954a0 [React] Make tokenId optional on useTotalCirculatingSupply (#717) 2023-03-13 19:56:05 +00:00
bd40bc2ef1 [React] Fix accepted types for some hooks (#712)
Co-authored-by: Nacho Iacovino <[email protected]>
2023-03-13 19:32:33 +00:00
iketwandGitHub 17a03e94d2 [ReactNativeCLI] verify correct ruby version (#716) 2023-03-13 19:29:58 +00:00
iketwandGitHub 4154c6f51a [react-core] fix changeset (#715) 2023-03-13 18:31:04 +00:00
iketwandGitHub c4862425dc [ReactNativeCLI] Added RN specific instructions + installation steps (#714) 2023-03-13 17:43:58 +00:00
Adam MajmudarandGitHub d6913d70b2 [Auth] Only import types in auth from @thirdweb-dev/wallets (#709) 2023-03-11 01:52:01 +00:00
d01b135d26 Connect Wallet v2 (#584)
Co-authored-by: ikethirdweb <[email protected]>
Co-authored-by: Joaquim Verges <[email protected]>
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-11 00:03:44 +00:00
71532e5a9f [SDK] rename to MarketplaceV3 (#701)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-10 18:39:16 +00:00
Ooi Thian HooiandGitHub aad57a566b [REACT] Fix/unable to override chain (#708) 2023-03-10 17:47:31 +00:00
Joaquim VergesandGitHub 2ec2802119 [SDK] Remove hardcoded gasLimits on marketplace/pack (#705) 2023-03-10 05:12:18 +00:00
Joaquim VergesandGitHub 208d97e6a8 [SDK] Export currency Utils (#704) 2023-03-10 05:12:09 +00:00
b3eb309c1e CLI install command (#677)
Co-authored-by: Adam Majmudar <[email protected]>
Co-authored-by: adam-maj <[email protected]>
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-10 01:38:38 +00:00
Jonas DanielsandGitHub 33d1cc7f92 [many] re-enable browser build where feasible (#702) 2023-03-10 00:15:31 +00:00
Adam MajmudarandGitHub 6e9b9dba1d [SDK] Add .prepare() to all other transaction functions except deploys (#703) 2023-03-09 23:45:53 +00:00
5f0493d0fb [SDK] Add ENS support to all functions (#681)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-09 20:03:08 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
e4d41856f2 Version Packages (#699)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-03-09 12:07:00 -08:00
Joaquim VergesandGitHub 713d3187be [SDK] Allow null values for NFT schema (#698) 2023-03-09 19:38:54 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
f6c6a68b97 Version Packages (#690)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-03-09 10:48:42 -08:00
Joaquim VergesandGitHub 2682f5823e [SDK] Fix fetching ABI for legacy contracts (#697) 2023-03-09 18:34:02 +00:00
Joaquim VergesandGitHub d30e3f4db3 [Wallets] Upgrade paper SDK (#696) 2023-03-09 18:02:56 +00:00
Joaquim VergesandGitHub 2efe5be3ad [SDK] Optimize get contract calls (#694) 2023-03-09 05:56:36 +00:00
Joaquim VergesandGitHub 31a252a0ec [Wallets] Cleanup paper wallet integration (#692) 2023-03-09 04:42:23 +00:00
Joaquim VergesandGitHub d5f18b403a [SDK] fix passing slug only as the network (#693) 2023-03-09 04:38:05 +00:00
Nacho IacovinoandGitHub cc0c7fa093 [React] useClaimNFT using correct twfeature (#691) 2023-03-08 21:43:37 +00:00
Nacho IacovinoandGitHub baeb74274e [SDK] New AppURI defaults (#687) 2023-03-08 20:46:21 +00:00
Joaquim VergesandGitHub 5038487e1b Update README.md 2023-03-08 12:06:22 -08:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
c5959fbd52 Version Packages (#689)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-03-07 22:37:23 -08:00
Adam MajmudarandGitHub 68d52f99b3 [SDK] Poll if transaction isn't found yet (#688) 2023-03-08 06:17:23 +00:00
9efeba38f0 [Auth] Include credentials on initial login request, [react] web3button type (#684)
Co-authored-by: Manan Tank <[email protected]>
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-08 06:10:39 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
50346bd9d0 Version Packages (#622)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-03-07 18:03:15 -08:00
Jonas DanielsandGitHub f9cf2bc6ba [chains] - fix windows build? (#686) 2023-03-07 20:11:52 +00:00
Jonas DanielsandGitHub 4355518afe [chains] - update chains (#685) 2023-03-07 18:57:43 +00:00
Jonas DanielsandGitHub 99521129ed quicker timeouts (#682) 2023-03-06 17:49:44 -08:00
c9067681c2 Add CLI command to deploy dynamic smart contracts (#678)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-07 00:22:30 +00:00
2335f000c9 [SDK] - NFT supply is now string instead of number (#679)
Co-authored-by: Joaquim Verges <[email protected]>
2023-03-05 04:46:00 +00:00
Adam MajmudarandGitHub a7e908b5fe [SDK] Add transaction pattern to registry (#676) 2023-03-03 22:18:35 +00:00
Adam MajmudarandGitHub 2a8cc289ac [SDK] Add transaction builder to publisher and registry (#675) 2023-03-03 21:44:45 +00:00
Adam MajmudarandGitHub d8dec9fc19 [SDK] Fix configuring SDK with custom chains (#674) 2023-03-03 08:23:55 +00:00
Adam MajmudarandGitHub 0c88304464 [SDK] Don't use functions in sdk.getContract (#673) 2023-03-03 07:25:22 +00:00
Jonas DanielsandGitHub 2676fc01f4 fix react core (#672) 2023-03-03 07:14:50 +00:00
Furqan RydhanandGitHub 61ef69649f app URI fixes (#671) 2023-03-03 07:07:32 +00:00
Furqan Rydhan 460576fea9 Merge branch 'main' of github.com:thirdweb-dev/js 2023-03-03 06:47:37 +00:00
Furqan Rydhan 87a8ebdb7a fix things 2023-03-03 06:47:01 +00:00
Furqan Rydhan e23ee0526e fix type for prebuilt contracts and app uri 2023-03-03 06:13:09 +00:00
be04ff2775 CLI improvements (#666)
Co-authored-by: Adam Majmudar <[email protected]>
Co-authored-by: adam-maj <[email protected]>
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-03 06:11:48 +00:00
3740a0bf5d app uri (#662)
Co-authored-by: Nacho Iacovino <[email protected]>
Co-authored-by: Nacho Iacovino <[email protected]>
2023-03-03 05:40:00 +00:00
Jonas DanielsandGitHub 6ae39277a1 [react-core] fix signer more (#670) 2023-03-03 05:39:18 +00:00
Jonas DanielsandGitHub 8f46a2eef5 update signer correctly (#668) 2023-03-02 20:04:56 +00:00
Furqan Rydhan 8ac9b03f4a fix code tab for contract metadata 2023-03-02 06:24:17 +00:00
6ef52dc916 Fix spelling (#665)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-02 03:04:05 +00:00
Adam MajmudarandGitHub b6b0855b81 [SDK] Allow setting extra overrides (#667) 2023-03-02 02:20:45 +00:00
Jonas Daniels ac01516ce6 fix it 2023-03-01 17:36:09 -08:00
Jonas Daniels 1aef3bd270 changesets action 2023-03-01 17:29:45 -08:00
Jonas Daniels e9b5031565 more things 2023-03-01 17:23:40 -08:00
Adam MajmudarandGitHub e081075b2c [SDK] Expose get and set functions on transaction and tx.sign() (#663) 2023-03-02 00:28:40 +00:00
Jonas Daniels 3212867de2 just always do it 2023-03-01 16:18:02 -08:00
Jonas Daniels 91e7178295 hasChangesets true value not string 2023-03-01 16:08:28 -08:00
Jonas DanielsandGitHub 3985560942 changeset and workflow changes (#664) 2023-03-01 23:32:43 +00:00
87a101ad56 Fix Wrong Currency symbol in non-default chains (#660)
Co-authored-by: Jonas Daniels <[email protected]>
2023-03-01 21:37:51 +00:00
nkrishangandGitHub 842ed519a3 CLI command to create extensions for dynamic contracts (#641) 2023-03-01 19:04:30 +00:00
Adam MajmudarandGitHub 2f4cd92848 [SDK] Add prepare method to all contracts (#661) 2023-03-01 18:49:55 +00:00
iketwandGitHub 303bf63c1a [ReactCoreSDK] pass default key to the sdkprovider (#658) 2023-03-01 17:44:56 +00:00
Adam MajmudarandGitHub 8845bf960e [SDK] await getGasOverrides (#659) 2023-03-01 08:12:48 +00:00
Jake LooandGitHub b80024c6cc ERC20Permit detect (#655) 2023-03-01 03:39:12 +00:00
Jonas DanielsandGitHub 696c384a34 Jd/fix build app uri (#654) 2023-03-01 01:53:26 +00:00
Jonas DanielsandGitHub bd6be0bae7 [SDK] - add extensions getter (#653) 2023-03-01 01:09:57 +00:00
Nacho IacovinoandGitHub 8d5b418e78 [React] Fix appURI hook invariant (#650) 2023-03-01 00:51:59 +00:00
Adam MajmudarandGitHub 1bdb44d36b [React] Fix onError in Web3Button to work with errors on promise (#651) 2023-03-01 00:51:35 +00:00
Nacho IacovinoandGitHub b83ea5251b [SDK] Detect appURI (#631) 2023-03-01 00:50:03 +00:00
Adam MajmudarandGitHub 537785fed0 [SDK] Add getContract and getContractFromAbi functions (#628) 2023-03-01 00:40:13 +00:00
Adam MajmudarandGitHub fb346ffd45 [Storage] Send progress event if files have already been uploaded (#648) 2023-02-28 23:54:29 +00:00
Adam MajmudarandGitHub 63f552d736 Allow passing gatewayUrls as array and directly (#644) 2023-02-28 23:27:14 +00:00
Adam MajmudarandGitHub cc7ce8b1e8 Allow CID prediction for file type on client (#646) 2023-02-28 23:19:30 +00:00
Jonas DanielsandGitHub 85250cf711 [multi] - various fixes (#643) 2023-02-28 22:50:22 +00:00
Adam MajmudarandGitHub 29c1cf7eff Make checking for CID non-blocking on error (#645) 2023-02-28 22:16:58 +00:00
Adam MajmudarandGitHub 0666f37c13 [SDK] Cleanup signer and provider logic & add exhaustive test cases (#623) 2023-02-28 09:14:14 +00:00
Adam MajmudarandGitHub 8a8a37f6d3 [Storage] Pre-compute IPFS hashes before uploading (#637) 2023-02-28 08:08:15 +00:00
Furqan RydhanandGitHub dc08aa731f contract metadata compatibility (#642) 2023-02-28 03:59:31 +00:00
Adam MajmudarandGitHub 541dfeeaba Fix top-level transaction functions (#640) 2023-02-28 02:27:13 +00:00
1e1a39123b [SDK] Add new transaction pattern (#566)
Co-authored-by: Jonas Daniels <[email protected]>
2023-02-27 23:22:21 +00:00
Jonas DanielsandGitHub 5c7ae694c4 add test for chains (#639) 2023-02-27 22:30:36 +00:00
Jonas DanielsandGitHub e33bd2a856 add getChainByChainId function (#638) 2023-02-27 19:18:04 +00:00
Nacho IacovinoandGitHub b1ee7491c8 [React] Export appURI hooks (#636) 2023-02-27 01:01:05 +00:00
Jonas DanielsandGitHub 7832041c0f add chains (#635) 2023-02-27 00:47:10 +00:00
Joaquim VergesandGitHub 88c78f3b32 [SDK] export marketplace and appUri classes (#634) 2023-02-26 23:16:43 +00:00
Nacho IacovinoandGitHub 78536ba65f [Multi] More docs small changes (#633) 2023-02-26 07:26:22 +00:00
Nacho IacovinoandGitHub b0e8406d1e [Multi] Document marketplace v3 with examples (#632) 2023-02-26 04:00:43 +00:00
Nacho IacovinoandGitHub 9c5dbf1fe6 [Multi] AppURI now works with ContractMetadata feature (#630) 2023-02-25 23:13:09 +00:00
Nacho IacovinoandGitHub ba90c675db [Multi] More docs updates (#629) 2023-02-25 22:51:46 +00:00
Joaquim VergesandGitHub fd9ba94db2 Fix feature snippets SDK script (#627) 2023-02-25 17:10:32 +00:00
Nacho IacovinoandGitHub 91f5a2fd5c Fix documentation for react docs (#626) 2023-02-25 16:30:23 +00:00
Joaquim VergesandGitHub e50911bc06 [Wallet] Email wallet improvements (#612) 2023-02-25 04:02:59 +00:00
Nacho IacovinoandGitHub 23cd88ec3a [React] Add AppURI get/set hooks (#625) 2023-02-25 01:52:20 +00:00
Joaquim VergesandGitHub 1adaf41e41 [SDK] Extension code comments (#624) 2023-02-25 01:16:02 +00:00
YashandGitHub 478780f634 [SDK] Feature for extension router (#621) 2023-02-24 03:59:16 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
521c85c1ba Version Packages (#618)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-23 09:29:36 -08:00
Jonas DanielsandGitHub b7a5b45441 fix base goerli slug (#619) 2023-02-23 17:17:37 +00:00
Jonas DanielsandGitHub d7deaa48f2 [chains] - add support for base goerli (#617) 2023-02-23 16:58:25 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
98fc320a86 Version Packages (#614)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-22 21:48:03 -08:00
Joaquim VergesandGitHub 5712650074 [SDK] Handle custom currencies for any chain (#616) 2023-02-23 05:33:00 +00:00
Jonas DanielsandGitHub 1b0bc87efb [sdk] add code cov (#615) 2023-02-23 01:26:53 +00:00
Jonas DanielsandGitHub a3472a1331 [chains] - DX improvements & chain updates (#613) 2023-02-23 00:01:59 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
7c3f050883 Version Packages (#609)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-22 13:59:28 -08:00
8b68f20678 refactor: Release to Publish (#567)
Co-authored-by: Jonas Daniels <[email protected]>
2023-02-22 21:36:03 +00:00
Jonas DanielsandGitHub 3d644fb8cb [react] - add mediarenderer prop (#608) 2023-02-21 10:30:21 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
690ff925c3 Version Packages (#603)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-20 20:13:14 -08:00
Jonas DanielsandGitHub 4fe6797427 clean up remaining workflows (#605) 2023-02-19 02:12:39 +00:00
Jonas DanielsandGitHub f3408d05d8 [sdk] - fix possible crash in StaticJsonRpcBatchProvider (#604) 2023-02-19 01:47:29 +00:00
Jonas Daniels 845e818c66 CI all in one? 2023-02-18 14:55:51 -08:00
Jonas Daniels 5178256e84 try out new ci action 2023-02-18 14:40:23 -08:00
Jonas DanielsandGitHub 66cf1fb5c2 [various] - upgrade dependencies (#601) 2023-02-18 22:10:45 +00:00
Jonas Daniels df792f0b81 make merge queue work 2023-02-18 14:10:16 -08:00
Jonas Daniels ae0f967356 make platform own everything by default 2023-02-18 13:55:33 -08:00
Jonas Daniels 076718112f devrel should not own changeset markdown files 2023-02-18 13:54:00 -08:00
Jonas Daniels 7c9f86cc44 improve codeowners 2023-02-18 13:51:56 -08:00
Jonas DanielsandGitHub 9c90371426 Jd/add codeowners (#602) 2023-02-18 13:49:09 -08:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
4516487a9a Version Packages (#600)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-17 17:38:12 -08:00
Adam MajmudarandGitHub 300fe4a933 [Storage] Pass through pinata metadata (#597) 2023-02-18 01:32:09 +00:00
Joaquim VergesandGitHub f580b8ac06 [React] fix react provider readonly chain mismatch (#599) 2023-02-18 01:24:16 +00:00
Adam MajmudarandGitHub f0de81d4b1 [Auth] Expose verifyLogin function (#588) 2023-02-17 17:15:08 -08:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
f3a863a3b1 Bump undici from 5.14.0 to 5.19.1 (#594)
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-16 18:11:22 -08:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
128bca9e07 Version Packages (#595)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-16 17:37:38 -08:00
iketwGitHubiketwciaranightingaleJonas Danielsgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>github-actions[bot] <github-actions[bot]@users.noreply.github.com>Nacho Iacovino
18ba6b381e [React Native SDK] init package (#522)
Co-authored-by: iketw <[email protected]>
Co-authored-by: ciaranightingale <[email protected]>
Co-authored-by: Jonas Daniels <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Nacho Iacovino <[email protected]>
2023-02-16 20:04:07 -05:00
Jonas Daniels 18c16101dd release-pr may use cache 2023-02-16 08:49:50 -08:00
Jonas DanielsandGitHub b6b94ca348 smaller workers (#593) 2023-02-16 08:45:38 -08:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
81d2d2185d Version Packages (#560)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-15 21:45:09 -08:00
Joaquim VergesandGitHub 37f58b4e68 [React] fix alignment on web3button (#592) 2023-02-15 21:41:02 -08:00
61d41db769 [React] Fix passing activeChainId prop down (#591)
Co-authored-by: Jonas Daniels <[email protected]>
2023-02-15 21:26:49 -08:00
Jonas DanielsandGitHub 44cce2f2b1 [SDK] - allow passing Chain object to initialize SDK (#590) 2023-02-16 05:16:14 +00:00
Jonas DanielsandGitHub 017b0d56b6 [chains] - update chains & add utils (#589) 2023-02-16 01:06:34 +00:00
Adam MajmudarandGitHub 4d77c185d9 [SDK] Update tiered drop with total price (#585) 2023-02-15 17:26:00 +00:00
44d56e4a91 [SDK] Check how many NFTs a specific wallet has claimed (#577)
Co-authored-by: Adam Majmudar <[email protected]>
Co-authored-by: Jonas Daniels <[email protected]>
2023-02-15 01:41:25 +00:00
Nacho IacovinoandGitHub 03e755f1df [React] Don't have min-width requirement for html types (#583) 2023-02-15 01:10:52 +00:00
Adam MajmudarandGitHub 8694d5a3a1 Add changeset for react (#582) 2023-02-14 20:06:02 +00:00
Adam MajmudarandGitHub 4d9e5c6193 Update next-auth wallet config (#581) 2023-02-14 19:39:46 +00:00
Jonas DanielsandGitHub 27d8db200e [SDK] - mark fromPrivateKey as public (#579) 2023-02-14 08:11:52 +00:00
Adam MajmudarandGitHub 813c4a4a09 [Unity Bridge] Add support for Auth to unity-js-bridge (#575) 2023-02-14 07:16:10 +00:00
Adam MajmudarandGitHub f6ea971854 [Auth] Add support for next-auth (#576) 2023-02-14 01:04:08 -05:00
Jonas DanielsandGitHub f3b96e7120 [react, react-core] - allow number and string types for activeChain prop (#578) 2023-02-14 03:09:32 +00:00
iketwandGitHub cfd2a7c9ec [ReactSDK] remove duplicate and set Dapp url as mandatory (#571) 2023-02-13 21:50:34 +00:00
FirekeeperandGitHub 9670c7aee5 Firekeeper/unity js listeners dyncall (#573) 2023-02-13 13:38:20 -08:00
Joaquim VergesandGitHub 94b120ffd1 [Wallets] Device Wallet (#548) 2023-02-12 21:32:14 -08:00
Jonas DanielsandGitHub d0bcd2c587 [chains] - fix localhost (#570) 2023-02-12 05:04:47 +00:00
Jonas DanielsandGitHub 818048d52f [react, react-core] chain integration (#569) 2023-02-11 16:48:44 -08:00
Jonas DanielsandGitHub 500a0e671b [chains, react] - upgraded rpcs, etc (#568) 2023-02-11 15:05:12 -08:00
Jonas DanielsandGitHub 6a50719486 [chains] - add getChainRPCs (#565) 2023-02-10 05:48:14 +00:00
Joaquim VergesandGitHub 1f89410867 Update README.md 2023-02-09 21:36:42 -08:00
Joaquim VergesandGitHub 363c6799a6 Update README.md 2023-02-09 21:35:50 -08:00
Joaquim VergesandGitHub bddabe0b42 [Wallet] Email wallet integration (#559) 2023-02-09 21:35:07 -08:00
Joaquim VergesandGitHub 2b3e94f90a [React] Fix creating SDKs with signer only (#564) 2023-02-09 17:08:25 -08:00
5d25ee1ab7 [SDK] fix getMultiChainContractList (#562)
Co-authored-by: Joaquim Verges <[email protected]>
2023-02-09 23:20:23 +00:00
Joaquim VergesandGitHub d6abe00c4e Fix marketplace v3 tests (#563) 2023-02-09 13:58:10 -08:00
af8cf40e4e [SDK, react-core, react] Support any EVM chain (#486)
Co-authored-by: Jonas Daniels <[email protected]>
Co-authored-by: iketw <[email protected]>
Co-authored-by: Jarrod Watts <[email protected]>
2023-02-09 01:08:20 +00:00
iketwandGitHub e85ec3e8f0 [ReactSDK] fix comment (#558) 2023-02-08 23:31:48 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
9919026f38 Version Packages (#554)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-08 13:04:43 -08:00
YashandGitHub c349f44d58 [SDK] Fix tests marketplace-v3 (#557) 2023-02-08 11:21:56 -08:00
Joaquim VergesandGitHub fc7c6b6211 [SDK] Extract util test functions (#556) 2023-02-08 10:13:10 -08:00
Joaquim VergesandGitHub 55b00eff26 [SDK] Add gas estimators to marketplace plugins (#555) 2023-02-07 16:22:55 -08:00
Jonas DanielsandGitHub 76d219e6be [contracts-js, storage] - force release (#553) 2023-02-07 20:00:00 +00:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
f13408a33d Version Packages (#552)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-07 11:30:03 -08:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
74b19012c2 Version Packages (#543)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-06 21:02:00 -08:00
Joaquim VergesandGitHub 8f85868324 Fix contracts-js turbo caching issue (#551) 2023-02-07 01:14:11 +00:00
Adam MajmudarandGitHub 448b357ed4 [SDK] Add solidity stack traces to error messages (#550) 2023-02-06 19:21:17 -05:00
YashandGitHub 912738bd0a [CLI] Add staking bases (#549) 2023-02-06 12:01:22 -08:00
f1aecc3049 [SDK] Contracts version update - Marketplace V3 (#544)
Co-authored-by: Joaquim Verges <[email protected]>
2023-02-06 05:40:23 +00:00
Adam MajmudarandGitHub 0b38dac852 [SDK] Add proper error catching for when user has no funds (#547) 2023-02-05 21:28:44 -08:00
Nacho IacovinoandGitHub 440a4ade95 [React] Add more marketplace v3 hooks (#546) 2023-02-04 04:01:35 +00:00
Adam MajmudarandGitHub 29d0c62610 [SDK] Add error info fields to TransactionError (#545) 2023-02-04 03:09:34 +00:00
Adam MajmudarandGitHub f295ec67b4 [SDK] Upgraded error messages on failed transactions (#539) 2023-02-04 00:35:10 +00:00
1686fb4b2c [SDK] marketplace v3 integration (#474)
Co-authored-by: Joaquim Verges <[email protected]>
Co-authored-by: Nacho Iacovino <[email protected]>
Co-authored-by: Nacho Iacovino <[email protected]>
Co-authored-by: Jonas Daniels <[email protected]>
2023-02-03 13:19:09 -08:00
github-actions[bot]GitHubgithub-actions[bot] <github-actions[bot]@users.noreply.github.com>
85dd18e8f0 Version Packages (#541)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-03 10:53:16 -08:00
Joaquim VergesandGitHub ec1f2324c7 [SDK] Solana - Expose getTransaction pagination options + transactions for given wallet (#542) 2023-02-03 10:39:40 -08:00
b59a31c365 Add support for rendering 3D NFTs (#470)
Co-authored-by: Jonas Daniels <[email protected]>
Co-authored-by: Jarrod Watts <[email protected]>
Co-authored-by: Nacho Iacovino <[email protected]>
Co-authored-by: Nacho Iacovino <[email protected]>
2023-02-03 16:38:59 +01:00
Joaquim VergesandGitHub d29f7e78f0 [SDK] expose getMintTransaction() for fine grain control on mint calls (#540) 2023-02-02 19:32:29 -08:00
github-actions[bot]andGitHub 3e2b392b6b Version Packages (#538) 2023-02-02 09:21:36 -08:00
Adam MajmudarandGitHub cf96333fa2 Fix cache error on mkdir (#537) 2023-02-02 17:12:57 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
4213cfee77 Bump http-cache-semantics from 4.1.0 to 4.1.1 (#536)
Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-02 00:26:26 +00:00
1564 changed files with 92622 additions and 34684 deletions
+10 -5
View File
@@ -1,21 +1,26 @@
{
"$schema": "https://unpkg.com/@changesets/[email protected]/schema.json",
"changelog": ["@changesets/changelog-github", { "repo": "thirdweb-dev/js" }],
"changelog": [
"@changesets/changelog-github",
{
"repo": "thirdweb-dev/js"
}
],
"commit": false,
"fixed": [
["@thirdweb-dev/sdk", "@thirdweb-dev/react-core", "@thirdweb-dev/react"]
["@thirdweb-dev/react-core", "@thirdweb-dev/react"],
["@thirdweb-dev/react-native-compat", "@thirdweb-dev/react-native"]
],
"linked": [],
"access": "public",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": ["e2e-cra-5", "e2e-next-12", "e2e-vite-3"],
"ignore": ["e2e-cra-5", "e2e-next-13", "e2e-vite-3"],
"___experimentalUnsafeOptions_WILL_CHANGE_IN_PATCH": {
"updateInternalDependents": "always",
"onlyUpdatePeerDependentsWhenOutOfRange": true
},
"snapshot": {
"useCalculatedVersion": true,
"prereleaseTemplate": "{tag}-{commit}"
"prereleaseTemplate": "{tag}-{commit}-{datetime}"
}
}
+29
View File
@@ -0,0 +1,29 @@
# Order is important; the last matching pattern takes the most precedence.
# Platform team owns everything by default
* @thirdweb-dev/platform
# Devrel owns all markdown files (README etc.)
*.md @thirdweb-dev/devrel
.changeset/
# Shared ownership of the react and react-core packages
packages/react/ @thirdweb-dev/product @thirdweb-dev/platform
packages/react-core/ @thirdweb-dev/product @thirdweb-dev/platform
# Shared ownership of the CLI
packages/cli/ @thirdweb-dev/product @thirdweb-dev/platform
# Chains is owned specifically by jonas for now
packages/chains/ @jnsdls
# .github folder + .changeset + turbo config is owned by joaquim and jonas for now
.github/ @jnsdls @joaquim-verges
.changeset/config.json @jnsdls @joaquim-verges
turbo.json @joaquim-verges @jnsdls
+5 -2
View File
@@ -4,15 +4,18 @@ description: "Sets up Node.js and runs install"
runs:
using: composite
steps:
- uses: pnpm/action-setup@v2
with:
version: 7
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: 16
registry-url: "https://registry.npmjs.org"
cache: "yarn"
cache: "pnpm"
- name: Install dependencies
shell: bash
run: yarn install --frozen-lockfile
run: pnpm install
env:
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD: "1"
+6 -6
View File
@@ -35,7 +35,7 @@ You can see a quick outline of each of the projects within this repo below, each
Let's explore how you can set up the repo on your local machine and start contributing!
This section requires some existing knowledge of [Git](https://git-scm.com/), [Node.js](https://nodejs.org/en/) and [Yarn](https://yarnpkg.com/).
This section requires some existing knowledge of [Git](https://git-scm.com/), [Node.js](https://nodejs.org/en/) and [pnpm](https://pnpm.io/).
<br/>
@@ -57,7 +57,7 @@ To begin:
4. Install the dependencies:
```
yarn
pnpm install
```
Now you have got the repo on your local machine, and you're ready to start making your changes!
@@ -69,7 +69,7 @@ We use [yalc](https://github.com/wclr/yalc) to test changes locally.
Install the yalc CLI globally:
```bash
yarn global add yalc
pnpm add yalc -g
```
First, create a test project where you can experiment with your changes:
@@ -91,10 +91,10 @@ yalc add @thirdweb-dev/sdk # Link the sdk package
From the monorepo, run the following command to publish your local changes to the test project:
```bash
yarn push
pnpm push
```
Now, each time you make a change to the monorepo, you can run `yarn push` to publish your changes to the test project.
Now, each time you make a change to the monorepo, you can run `pnpm push` to publish your changes to the test project.
In your test project, you need to:
@@ -110,7 +110,7 @@ Once you're satisfied with your changes, you are ready to submit them for review
1. Use [changeset](https://github.com/changesets/changesets) to generate a changeset file:
```
yarn changeset
pnpm changeset
```
We follow [semantic versioning](https://semver.org/) for generating versioned releases of our packages (i.e. version = `MAJOR.MINOR.PATCH`)
+11
View File
@@ -0,0 +1,11 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "npm" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
-34
View File
@@ -1,34 +0,0 @@
name: CI
on:
push:
branches: ["main"]
pull_request:
types: [opened, synchronize]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build and Test
timeout-minutes: 30
runs-on: ubuntu-latest-32
# To use Remote Caching, uncomment the next lines and follow the steps below.
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
steps:
- name: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install
uses: ./.github/composite-actions/install
# this already builds anything that changed...
- name: Build & Test
run: yarn test
+133
View File
@@ -0,0 +1,133 @@
name: Build, Lint & Test
on:
push:
branches: ["main"]
pull_request:
types: [opened, synchronize]
# trigger on merge group as well (merge queue)
merge_group:
types: [checks_requested]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# To use Remote Caching, uncomment the next lines and follow the steps below.
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
jobs:
build:
timeout-minutes: 15
name: Build
runs-on: ubuntu-latest-16
steps:
- name: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 25
- name: Install
uses: ./.github/composite-actions/install
- run: pnpm build
# We use week in the turbo cache key to keep the cache from infinitely growing
- id: get-week
run: echo "WEEK=$(date +%U)" >> $GITHUB_OUTPUT
- uses: actions/cache@v3
timeout-minutes: 5
id: cache-build
with:
path: ./*
key: ${{ github.sha }}-${{ github.run_number }}
lint:
timeout-minutes: 15
name: Lint Packages
runs-on: ubuntu-latest
needs: build
steps:
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 16
check-latest: true
- uses: pnpm/action-setup@v2
with:
version: 7
- uses: actions/cache@v3
timeout-minutes: 5
id: restore-build
with:
path: ./*
key: ${{ github.sha }}-${{ github.run_number }}
- run: pnpm lint
test:
timeout-minutes: 15
name: Unit Tests
runs-on: ubuntu-latest-16
needs: build
steps:
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 16
check-latest: true
- uses: pnpm/action-setup@v2
with:
version: 7
- uses: actions/cache@v3
timeout-minutes: 5
id: restore-build
with:
path: ./*
key: ${{ github.sha }}-${{ github.run_number }}
- run: pnpm test
- name: Upload coverage reports to Codecov
uses: codecov/codecov-action@v3
with:
files: ./packages/sdk/coverage/evm/lcov.info,./packages/sdk/coverage/solana/lcov.info,
e2e:
timeout-minutes: 15
name: E2E Tests
runs-on: ubuntu-latest-16
needs: build
steps:
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: 16
check-latest: true
- uses: pnpm/action-setup@v2
with:
version: 7
- uses: actions/cache@v3
timeout-minutes: 5
id: restore-build
with:
path: ./*
key: ${{ github.sha }}-${{ github.run_number }}
- name: Install Playwright
run: npx playwright install --with-deps
- name: Run e2e tests
run: pnpm e2e
env:
NODE_OPTIONS: "--max_old_space_size=4096"
-29
View File
@@ -1,29 +0,0 @@
name: Integration tests
on:
push:
branches: ["main"]
pull_request:
types: [opened, synchronize]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
integration-tests:
timeout-minutes: 30
runs-on: ubuntu-latest-32
steps:
- uses: actions/checkout@v3
- name: Install
uses: ./.github/composite-actions/install
- name: Install Playwright
run: npx playwright install --with-deps
- name: Run e2e tests
run: yarn e2e
env:
NODE_OPTIONS: "--max_old_space_size=4096"
-33
View File
@@ -1,33 +0,0 @@
name: Lint
on:
push:
branches: ["main"]
pull_request:
types: [opened, synchronize]
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Lint
timeout-minutes: 15
runs-on: ubuntu-latest
# To use Remote Caching, uncomment the next lines and follow the steps below.
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
steps:
- name: Check out code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Install
uses: ./.github/composite-actions/install
- name: Lint
run: yarn lint
+10 -4
View File
@@ -6,6 +6,10 @@ on:
issue_comment:
types: [created]
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
jobs:
deploy-check:
# this just checks if ur allowed to do the action so does not need to run on a fast machine
@@ -40,7 +44,7 @@ jobs:
comment_body: ${{ github.event.comment.body }}
deploy:
runs-on: ubuntu-latest-32
runs-on: ubuntu-latest-16
timeout-minutes: 30
needs: deploy-check
if: needs.deploy-check.outputs.triggered == 'true'
@@ -67,7 +71,7 @@ jobs:
uses: ./.github/composite-actions/install
- name: Build
run: yarn build:release
run: pnpm build
- name: Configure npm
run: |
@@ -76,8 +80,10 @@ jobs:
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Deploy pre-release
id: changesets
run: |
yarn changeset version --snapshot dev
yarn changeset publish --tag dev --no-git-tag
pnpm changeset version --snapshot dev
node ./scripts/pre-release.mjs
pnpm changeset publish --tag dev --no-git-tag
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+10 -6
View File
@@ -8,6 +8,10 @@ on:
branches:
- main
env:
TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }}
TURBO_TEAM: ${{ secrets.TURBO_TEAM }}
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -15,7 +19,7 @@ jobs:
release:
name: Release
timeout-minutes: 30
runs-on: ubuntu-latest-32
runs-on: ubuntu-latest-16
steps:
- name: Checkout branch
uses: actions/checkout@v3
@@ -26,14 +30,14 @@ jobs:
uses: ./.github/composite-actions/install
- name: Build
run: yarn build:release
run: pnpm build:release
- name: Create release Pull Request or publish to NPM
id: changesets
uses: changesets/action@v1
with:
publish: yarn release
version: yarn version-packages
publish: pnpm release
version: pnpm version-packages
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -43,8 +47,8 @@ jobs:
if: steps.changesets.outputs.published != 'true'
run: |
git checkout main
yarn version-packages:nightly
yarn release:nightly
pnpm version-packages:nightly
pnpm release:nightly
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-20
View File
@@ -1,20 +0,0 @@
name: Compressed Size
on: [pull_request]
jobs:
build:
runs-on: ubuntu-latest-32
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- uses: preactjs/compressed-size-action@v2
with:
repo-token: "${{ secrets.GITHUB_TOKEN }}"
strip-hash: "\\-(\\w{8})(?:\\.esm|\\.cjs)"
minimum-change-threshold: 100
# exclude source maps, node modules and any test related files
exclude: "{**/*.map,**/node_modules/**,**/test/**}"
-1
View File
@@ -10,7 +10,6 @@ dist-ssr
.cache
server/dist
public/dist
.turbo
./packages/contracts-js/abis
.idea/
.yalc/
+1
View File
@@ -0,0 +1 @@
auto-install-peers=true
+3 -3
View File
@@ -5,11 +5,11 @@
<br />
</p>
<h1 align="center"><a href='http://thirdweb.com/'>thirdweb</a> JavaScript/TypeScript monorepo</h1>
<h1 align="center"><a href='https://thirdweb.com/'>thirdweb</a> JavaScript/TypeScript monorepo</h1>
<p align="center">
<a href="https://github.com/thirdweb-dev/js/actions/workflows/CI.yml">
<img alt="Build Status" src="https://github.com/thirdweb-dev/js/actions/workflows/CI.yml/badge.svg"/>
<a href="https://github.com/thirdweb-dev/js/actions/workflows/build-test-lint.yml">
<img alt="Build Status" src="https://github.com/thirdweb-dev/js/actions/workflows/build-test-lint.yml/badge.svg"/>
</a>
<a href="https://discord.gg/thirdweb">
<img alt="Join our Discord!" src="https://img.shields.io/discord/834227967404146718.svg?color=7289da&label=discord&logo=discord&style=flat"/>
+23 -18
View File
@@ -6,14 +6,12 @@
"author": "thirdweb eng <[email protected]>",
"license": "MIT",
"private": true,
"workspaces": {
"packages": [
"packages/*",
"test/**/*"
]
"engines": {
"node": ">=16.7.0"
},
"scripts": {
"test": "turbo run test test:evm test:solana",
"preinstall": "npx only-allow pnpm",
"test": "turbo run test test:evm test:solana --filter=./packages/*",
"e2e": "turbo run e2e",
"build": "turbo run build --filter=./packages/*",
"build:release": "turbo run build --force --filter=./packages/*",
@@ -26,23 +24,30 @@
"changeset": "changeset",
"version-packages": "changeset version",
"release": "node ./scripts/pre-release.mjs && changeset publish",
"version-packages:nightly": "changeset version --snapshot nightly",
"version-packages:nightly": "node scripts/pre-nightly.mjs && changeset version --snapshot nightly",
"release:nightly": "node ./scripts/pre-release.mjs && changeset publish --tag nightly",
"push": "turbo run push --filter=./packages/*"
"push": "turbo run push --filter=./packages/*",
"hotlink-init": "node ./scripts/hotlink/hotlink-init.mjs",
"hotlink-revert": "node ./scripts/hotlink/hotlink-revert.mjs",
"explain:major": "node ./scripts/changeset-explain-major.mjs"
},
"packageManager": "[email protected]",
"packageManager": "[email protected]",
"dependencies": {
"@changesets/changelog-github": "^0.4.6",
"@changesets/cli": "^2.24.3",
"@manypkg/cli": "^0.19.1",
"@changesets/changelog-github": "^0.4.8",
"@changesets/cli": "^2.26.1",
"@changesets/get-dependents-graph": "^1.3.5",
"@changesets/get-release-plan": "^3.0.16",
"@changesets/parse": "^0.3.16",
"@manypkg/cli": "^0.20.0",
"@manypkg/get-packages": "^1.1.3",
"@trivago/prettier-plugin-sort-imports": "^4.0.0",
"eslint": "^8.21.0",
"@playwright/test": "1.31.2",
"@trivago/prettier-plugin-sort-imports": "^4.1.1",
"@types/node": "^18.15.7",
"eslint": "^8.36.0",
"mocha": "^10.2.0",
"postinstall-postinstall": "^2.1.0",
"prettier": "^2.7.1",
"turbo": "^1.4.6",
"yalc": "^1.0.0-pre.53"
"prettier": "^2.8.7",
"turbo": "^1.8.5",
"yalc": "1.0.0-pre.53"
},
"manypkg": {
"defaultBranch": "main"
+41
View File
@@ -1,5 +1,46 @@
# @thirdweb-dev/auth
## 3.0.8
### Patch Changes
- [#791](https://github.com/thirdweb-dev/js/pull/791) [`c2324bfd`](https://github.com/thirdweb-dev/js/commit/c2324bfdc25e92589a0dcd9736925924f7b7e516) Thanks [@jnsdls](https://github.com/jnsdls)! - now relies on `@thirdweb-dev/wallets` for wallet integrations instead of rolling its own
- [#794](https://github.com/thirdweb-dev/js/pull/794) [`a6fce0f6`](https://github.com/thirdweb-dev/js/commit/a6fce0f691ffeb2b7ec1355b1c55fa7e58700406) Thanks [@shift4id](https://github.com/shift4id)! - Minor copy changes
- [#702](https://github.com/thirdweb-dev/js/pull/702) [`33d1cc7f`](https://github.com/thirdweb-dev/js/commit/33d1cc7f92cd982e9e55130472c0006bb999f682) Thanks [@jnsdls](https://github.com/jnsdls)! - enable `browser` export
- [#709](https://github.com/thirdweb-dev/js/pull/709) [`d6913d70`](https://github.com/thirdweb-dev/js/commit/d6913d70b2d62a40f5e08e5f23f74e1f174887ca) Thanks [@adam-maj](https://github.com/adam-maj)! - Make @thirdweb-dev/wallets actual dev dependency of auth
- Updated dependencies [[`d01b135d`](https://github.com/thirdweb-dev/js/commit/d01b135d26efe6cebd84110b1a8eacee5c1b98db), [`93eca1de`](https://github.com/thirdweb-dev/js/commit/93eca1de7d23d66a129418aee72a41e394cbec16), [`a6fce0f6`](https://github.com/thirdweb-dev/js/commit/a6fce0f691ffeb2b7ec1355b1c55fa7e58700406), [`4bdeefe6`](https://github.com/thirdweb-dev/js/commit/4bdeefe6cb343a979b336dcd99197d895c2ae1fb), [`33d1cc7f`](https://github.com/thirdweb-dev/js/commit/33d1cc7f92cd982e9e55130472c0006bb999f682), [`83e99dbf`](https://github.com/thirdweb-dev/js/commit/83e99dbf289c7b8b8991c58383f8bc2a63f5a702), [`95bcfa6d`](https://github.com/thirdweb-dev/js/commit/95bcfa6df84c48cb5d590f47489f275d22bd660a), [`4d07b4b4`](https://github.com/thirdweb-dev/js/commit/4d07b4b4e7bdc6244d399f287611fd5eb5d39cac), [`4d5fdda9`](https://github.com/thirdweb-dev/js/commit/4d5fdda907af0451507d5e2812ec91fbd513a11c), [`6b31a9bc`](https://github.com/thirdweb-dev/js/commit/6b31a9bcd3898cf56ee3b774a44b7481738c8e60), [`4b77bc9b`](https://github.com/thirdweb-dev/js/commit/4b77bc9b88a218647e6c32c7002880f07347f32a), [`d01b135d`](https://github.com/thirdweb-dev/js/commit/d01b135d26efe6cebd84110b1a8eacee5c1b98db), [`e47ceafe`](https://github.com/thirdweb-dev/js/commit/e47ceafeae950c22860ca4c7dffba7d573e04a94), [`6c0c6538`](https://github.com/thirdweb-dev/js/commit/6c0c65389fb5b990a6e780e7d3f7dbd403fe950d), [`ddc1c33a`](https://github.com/thirdweb-dev/js/commit/ddc1c33a531dd063158ec736f43dd65b423c21e8), [`2221f97d`](https://github.com/thirdweb-dev/js/commit/2221f97ddc997d864db3a5f00e82862ece574922)]:
- @thirdweb-dev/wallets@0.2.9
## 3.0.7
### Patch Changes
- [#665](https://github.com/thirdweb-dev/js/pull/665) [`6ef52dc9`](https://github.com/thirdweb-dev/js/commit/6ef52dc916251d72416ba5a8b63b428770f54e75) Thanks [@shift4id](https://github.com/shift4id)! - Fix spelling throughout all packages
## 3.0.6
### Patch Changes
- [#601](https://github.com/thirdweb-dev/js/pull/601) [`66cf1fb`](https://github.com/thirdweb-dev/js/commit/66cf1fb5c2e8deb486543ee028d786bb8eef6c19) Thanks [@jnsdls](https://github.com/jnsdls)! - upgrade dependencies
## 3.0.5
### Patch Changes
- [#588](https://github.com/thirdweb-dev/js/pull/588) [`f0de81d`](https://github.com/thirdweb-dev/js/commit/f0de81d4b1ba33b2ac73ed16cfdea8fd4eb5da9e) Thanks [@adam-maj](https://github.com/adam-maj)! - Add verify login to auth
## 3.0.4
### Patch Changes
- [#581](https://github.com/thirdweb-dev/js/pull/581) [`4d9e5c6`](https://github.com/thirdweb-dev/js/commit/4d9e5c6193b839fc7f67e7e73e0589dc8c4db90d) Thanks [@adam-maj](https://github.com/adam-maj)! - Remove wallet from next-auth config
- [#576](https://github.com/thirdweb-dev/js/pull/576) [`f6ea971`](https://github.com/thirdweb-dev/js/commit/f6ea97185470f91fc73a117827df51cf8e1c99d1) Thanks [@adam-maj](https://github.com/adam-maj)! - Add support for next-auth to auth and react
## 3.0.3
### Patch Changes
+2
View File
@@ -5,6 +5,8 @@
</p>
<h1 align="center">thirdweb Auth</h1>
<p align="center">
<a href="https://www.npmjs.com/package/@thirdweb-dev/auth"><img src="https://img.shields.io/npm/v/@thirdweb-dev/auth?color=red&label=npm&logo=npm" alt="npm version"/></a>
<a href="https://github.com/thirdweb-dev/js/actions/workflows/build-test-lint.yml"><img alt="Build Status" src="https://github.com/thirdweb-dev/js/actions/workflows/build-test-lint.yml/badge.svg"/></a>
<a href="https://discord.gg/thirdweb"><img alt="Join our Discord!" src="https://img.shields.io/discord/834227967404146718.svg?color=7289da&label=discord&logo=discord&style=flat"/></a>
</p>
+4 -1
View File
@@ -1,4 +1,7 @@
{
"main": "dist/thirdweb-dev-auth-evm.cjs.js",
"module": "dist/thirdweb-dev-auth-evm.esm.js"
"module": "dist/thirdweb-dev-auth-evm.esm.js",
"browser": {
"./dist/thirdweb-dev-auth-evm.esm.js": "./dist/thirdweb-dev-auth-evm.browser.esm.js"
}
}
+4 -1
View File
@@ -1,4 +1,7 @@
{
"main": "dist/thirdweb-dev-auth-express.cjs.js",
"module": "dist/thirdweb-dev-auth-express.esm.js"
"module": "dist/thirdweb-dev-auth-express.esm.js",
"browser": {
"./dist/thirdweb-dev-auth-express.esm.js": "./dist/thirdweb-dev-auth-express.browser.esm.js"
}
}
+4 -1
View File
@@ -1,4 +1,7 @@
{
"main": "dist/thirdweb-dev-auth-next-auth.cjs.js",
"module": "dist/thirdweb-dev-auth-next-auth.esm.js"
"module": "dist/thirdweb-dev-auth-next-auth.esm.js",
"browser": {
"./dist/thirdweb-dev-auth-next-auth.esm.js": "./dist/thirdweb-dev-auth-next-auth.browser.esm.js"
}
}
+4 -1
View File
@@ -1,4 +1,7 @@
{
"main": "dist/thirdweb-dev-auth-next.cjs.js",
"module": "dist/thirdweb-dev-auth-next.esm.js"
"module": "dist/thirdweb-dev-auth-next.esm.js",
"browser": {
"./dist/thirdweb-dev-auth-next.esm.js": "./dist/thirdweb-dev-auth-next.browser.esm.js"
}
}
+46 -36
View File
@@ -1,31 +1,52 @@
{
"name": "@thirdweb-dev/auth",
"version": "3.0.3",
"version": "3.0.8",
"main": "dist/thirdweb-dev-auth.cjs.js",
"module": "dist/thirdweb-dev-auth.esm.js",
"browser": {
"./dist/thirdweb-dev-auth.esm.js": "./dist/thirdweb-dev-auth.browser.esm.js"
},
"exports": {
".": {
"module": "./dist/thirdweb-dev-auth.esm.js",
"module": {
"browser": "./dist/thirdweb-dev-auth.browser.esm.js",
"default": "./dist/thirdweb-dev-auth.esm.js"
},
"default": "./dist/thirdweb-dev-auth.cjs.js"
},
"./evm": {
"module": "./evm/dist/thirdweb-dev-auth-evm.esm.js",
"module": {
"browser": "./evm/dist/thirdweb-dev-auth-evm.browser.esm.js",
"default": "./evm/dist/thirdweb-dev-auth-evm.esm.js"
},
"default": "./evm/dist/thirdweb-dev-auth-evm.cjs.js"
},
"./next": {
"module": "./next/dist/thirdweb-dev-auth-next.esm.js",
"module": {
"browser": "./next/dist/thirdweb-dev-auth-next.browser.esm.js",
"default": "./next/dist/thirdweb-dev-auth-next.esm.js"
},
"default": "./next/dist/thirdweb-dev-auth-next.cjs.js"
},
"./solana": {
"module": "./solana/dist/thirdweb-dev-auth-solana.esm.js",
"module": {
"browser": "./solana/dist/thirdweb-dev-auth-solana.browser.esm.js",
"default": "./solana/dist/thirdweb-dev-auth-solana.esm.js"
},
"default": "./solana/dist/thirdweb-dev-auth-solana.cjs.js"
},
"./express": {
"module": "./express/dist/thirdweb-dev-auth-express.esm.js",
"module": {
"browser": "./express/dist/thirdweb-dev-auth-express.browser.esm.js",
"default": "./express/dist/thirdweb-dev-auth-express.esm.js"
},
"default": "./express/dist/thirdweb-dev-auth-express.cjs.js"
},
"./next-auth": {
"module": "./next-auth/dist/thirdweb-dev-auth-next-auth.esm.js",
"module": {
"browser": "./next-auth/dist/thirdweb-dev-auth-next-auth.browser.esm.js",
"default": "./next-auth/dist/thirdweb-dev-auth-next-auth.esm.js"
},
"default": "./next-auth/dist/thirdweb-dev-auth-next-auth.cjs.js"
},
"./package.json": "./package.json"
@@ -50,10 +71,11 @@
"evm/index.ts",
"solana/index.ts"
],
"___experimentalFlags_WILL_CHANGE_IN_PATCH": {
"exports": true
},
"exports": true
"exports": {
"envConditions": [
"browser"
]
}
},
"devDependencies": {
"@babel/core": "^7.19.3",
@@ -63,22 +85,23 @@
"@microsoft/api-extractor": "^7.29.2",
"@microsoft/tsdoc": "^0.14.1",
"@preconstruct/cli": "^2.2.1",
"@solana/web3.js": "^1.73.0",
"@swc-node/register": "^1.5.4",
"@solana/web3.js": "^1.62.0",
"@swc-node/register": "^1.5.1",
"@swc/core": "^1.3.23",
"@thirdweb-dev/wallets": "*",
"@types/bs58": "^4.0.1",
"@types/chai": "^4.3.4",
"@thirdweb-dev/tsconfig": "workspace:*",
"@types/chai": "^4.3.3",
"@types/cookie": "^0.5.1",
"@types/cookie-parser": "^1.4.3",
"@types/express": "^4.17.13",
"@types/mocha": "^10.0.1",
"@types/mocha": "^10.0.0",
"@types/uuid": "^9.0.0",
"@typescript-eslint/eslint-plugin": "^5.33.0",
"@typescript-eslint/parser": "^5.33.0",
"@wagmi/core": "^0.8.18",
"chai": "^4.3.7",
"chai": "^4.3.6",
"cookie-parser": "^1.4.6",
"eslint": "^8.21.0",
"eslint-config-prettier": "^8.3.0",
"eslint-config-thirdweb": "workspace:*",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-inclusive-language": "^2.2.0",
"eslint-plugin-prettier": "^4.2.1",
@@ -87,39 +110,25 @@
"express": "^4.18.1",
"mocha": "^10.2.0",
"next": "^12.2.0",
"next-auth": "^4.10.3",
"next-auth": "^4.20.1",
"prettier": "^2.7.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"typescript": "^4.7.4"
},
"peerDependencies": {
"@noble/ed25519": "^1.7.1",
"@solana/web3.js": "^1.73.0",
"bs58": "^5.0.0",
"cookie-parser": "^1.4.6",
"ethers": "^5",
"express": "^4",
"next": "^12 || ^13",
"next-auth": "^4",
"tweetnacl": "^1.0.3"
"next-auth": "^4"
},
"peerDependenciesMeta": {
"@noble/ed25519": {
"optional": true
},
"@solana/web3.js": {
"optional": true
},
"bs58": {
"optional": true
},
"cookie-parser": {
"optional": true
},
"tweetnacl": {
"optional": true
},
"ethers": {
"optional": true
},
@@ -134,8 +143,9 @@
}
},
"dependencies": {
"@thirdweb-dev/wallets": "workspace:*",
"cookie": "^0.5.0",
"uuid": "^9.0.0",
"zod": "^3.20.2"
}
}
}
+4 -1
View File
@@ -1,4 +1,7 @@
{
"main": "dist/thirdweb-dev-auth-solana.cjs.js",
"module": "dist/thirdweb-dev-auth-solana.esm.js"
"module": "dist/thirdweb-dev-auth-solana.esm.js",
"browser": {
"./dist/thirdweb-dev-auth-solana.esm.js": "./dist/thirdweb-dev-auth-solana.browser.esm.js"
}
}
+2 -2
View File
@@ -50,7 +50,8 @@ export class ThirdwebAuth {
statement: parsedOptions?.statement,
version: parsedOptions?.version,
uri:
parsedOptions?.uri || (isBrowser() ? window.location.href : undefined),
parsedOptions?.uri ||
(isBrowser() ? window.location.origin : undefined),
chain_id: chainId,
nonce: parsedOptions?.nonce,
expiration_time:
@@ -129,7 +130,6 @@ export class ThirdwebAuth {
try {
await parsedOptions.validateNonce(payload.payload.nonce);
} catch (err) {
console.log(err);
throw new Error(`Login request nonce is invalid`);
}
}
-613
View File
@@ -1,613 +0,0 @@
import type { Chain } from "@wagmi/core";
const arbitrum: Chain = {
id: 42_161,
name: "Arbitrum One",
network: "arbitrum",
nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
rpcUrls: {
alchemy: {
http: ["https://arb-mainnet.g.alchemy.com/v2"],
webSocket: ["wss://arb-mainnet.g.alchemy.com/v2"],
},
infura: {
http: ["https://arbitrum-mainnet.infura.io/v3"],
webSocket: ["wss://arbitrum-mainnet.infura.io/ws/v3"],
},
default: {
http: ["https://arb1.arbitrum.io/rpc"],
},
public: {
http: ["https://arb1.arbitrum.io/rpc"],
},
},
blockExplorers: {
etherscan: { name: "Arbiscan", url: "https://arbiscan.io" },
default: { name: "Arbiscan", url: "https://arbiscan.io" },
},
contracts: {
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 7654707,
},
},
};
const arbitrumGoerli: Chain = {
id: 421_613,
name: "Arbitrum Goerli",
network: "arbitrum-goerli",
nativeCurrency: {
name: "Arbitrum Goerli Ether",
symbol: "ETH",
decimals: 18,
},
rpcUrls: {
alchemy: {
http: ["https://arb-goerli.g.alchemy.com/v2"],
webSocket: ["wss://arb-goerli.g.alchemy.com/v2"],
},
infura: {
http: ["https://arbitrum-goerli.infura.io/v3"],
webSocket: ["wss://arbitrum-goerli.infura.io/ws/v3"],
},
default: {
http: ["https://goerli-rollup.arbitrum.io/rpc"],
},
public: {
http: ["https://goerli-rollup.arbitrum.io/rpc"],
},
},
blockExplorers: {
etherscan: { name: "Arbiscan", url: "https://goerli.arbiscan.io/" },
default: { name: "Arbiscan", url: "https://goerli.arbiscan.io/" },
},
contracts: {
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 88114,
},
},
testnet: true,
};
const avalanche: Chain = {
id: 43_114,
name: "Avalanche",
network: "avalanche",
nativeCurrency: {
decimals: 18,
name: "Avalanche",
symbol: "AVAX",
},
rpcUrls: {
default: { http: ["https://api.avax.network/ext/bc/C/rpc"] },
public: { http: ["https://api.avax.network/ext/bc/C/rpc"] },
},
blockExplorers: {
etherscan: { name: "SnowTrace", url: "https://snowtrace.io" },
default: { name: "SnowTrace", url: "https://snowtrace.io" },
},
contracts: {
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 11907934,
},
},
};
const avalancheFuji: Chain = {
id: 43_113,
name: "Avalanche Fuji",
network: "avalanche-fuji",
nativeCurrency: {
decimals: 18,
name: "Avalanche Fuji",
symbol: "AVAX",
},
rpcUrls: {
default: { http: ["https://api.avax-test.network/ext/bc/C/rpc"] },
public: { http: ["https://api.avax-test.network/ext/bc/C/rpc"] },
},
blockExplorers: {
etherscan: { name: "SnowTrace", url: "https://testnet.snowtrace.io" },
default: { name: "SnowTrace", url: "https://testnet.snowtrace.io" },
},
contracts: {
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 7096959,
},
},
testnet: true,
};
const bsc: Chain = {
id: 56,
name: "BNB Smart Chain",
network: "bsc",
nativeCurrency: {
decimals: 18,
name: "BNB",
symbol: "BNB",
},
rpcUrls: {
default: { http: ["https://rpc.ankr.com/bsc"] },
public: { http: ["https://rpc.ankr.com/bsc"] },
},
blockExplorers: {
etherscan: { name: "BscScan", url: "https://bscscan.com" },
default: { name: "BscScan", url: "https://bscscan.com" },
},
contracts: {
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 15921452,
},
},
};
const bscTestnet: Chain = {
id: 97,
name: "Binance Smart Chain Testnet",
network: "bsc-testnet",
nativeCurrency: {
decimals: 18,
name: "BNB",
symbol: "tBNB",
},
rpcUrls: {
default: { http: ["https://bsc-testnet.public.blastapi.io"] },
public: { http: ["https://bsc-testnet.public.blastapi.io"] },
},
blockExplorers: {
etherscan: { name: "BscScan", url: "https://testnet.bscscan.com" },
default: { name: "BscScan", url: "https://testnet.bscscan.com" },
},
contracts: {
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 17422483,
},
},
testnet: true,
};
const fantom: Chain = {
id: 250,
name: "Fantom",
network: "fantom",
nativeCurrency: {
decimals: 18,
name: "Fantom",
symbol: "FTM",
},
rpcUrls: {
default: { http: ["https://rpc.ankr.com/fantom"] },
public: { http: ["https://rpc.ankr.com/fantom"] },
},
blockExplorers: {
etherscan: { name: "FTMScan", url: "https://ftmscan.com" },
default: { name: "FTMScan", url: "https://ftmscan.com" },
},
contracts: {
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 33001987,
},
},
};
const fantomTestnet: Chain = {
id: 4002,
name: "Fantom Testnet",
network: "fantom-testnet",
nativeCurrency: {
decimals: 18,
name: "Fantom",
symbol: "FTM",
},
rpcUrls: {
default: { http: ["https://rpc.testnet.fantom.network"] },
public: { http: ["https://rpc.testnet.fantom.network"] },
},
blockExplorers: {
etherscan: { name: "FTMScan", url: "https://testnet.ftmscan.com" },
default: { name: "FTMScan", url: "https://testnet.ftmscan.com" },
},
contracts: {
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 8328688,
},
},
};
const goerli: Chain = {
id: 5,
network: "goerli",
name: "Goerli",
nativeCurrency: { name: "Goerli Ether", symbol: "ETH", decimals: 18 },
rpcUrls: {
alchemy: {
http: ["https://eth-goerli.g.alchemy.com/v2"],
webSocket: ["wss://eth-goerli.g.alchemy.com/v2"],
},
infura: {
http: ["https://goerli.infura.io/v3"],
webSocket: ["wss://goerli.infura.io/ws/v3"],
},
default: {
http: ["https://rpc.ankr.com/eth_goerli"],
},
public: {
http: ["https://rpc.ankr.com/eth_goerli"],
},
},
blockExplorers: {
etherscan: {
name: "Etherscan",
url: "https://goerli.etherscan.io",
},
default: {
name: "Etherscan",
url: "https://goerli.etherscan.io",
},
},
contracts: {
ensRegistry: {
address: "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
},
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 6507670,
},
},
testnet: true,
};
const mainnet: Chain = {
id: 1,
network: "homestead",
name: "Ethereum",
nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
rpcUrls: {
alchemy: {
http: ["https://eth-mainnet.g.alchemy.com/v2"],
webSocket: ["wss://eth-mainnet.g.alchemy.com/v2"],
},
infura: {
http: ["https://mainnet.infura.io/v3"],
webSocket: ["wss://mainnet.infura.io/ws/v3"],
},
default: {
http: ["https://cloudflare-eth.com"],
},
public: {
http: ["https://cloudflare-eth.com"],
},
},
blockExplorers: {
etherscan: {
name: "Etherscan",
url: "https://etherscan.io",
},
default: {
name: "Etherscan",
url: "https://etherscan.io",
},
},
contracts: {
ensRegistry: {
address: "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",
},
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 14353601,
},
},
};
const optimism: Chain = {
id: 10,
name: "Optimism",
network: "optimism",
nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
rpcUrls: {
alchemy: {
http: ["https://opt-mainnet.g.alchemy.com/v2"],
webSocket: ["wss://opt-mainnet.g.alchemy.com/v2"],
},
infura: {
http: ["https://optimism-mainnet.infura.io/v3"],
webSocket: ["wss://optimism-mainnet.infura.io/ws/v3"],
},
default: {
http: ["https://mainnet.optimism.io"],
},
public: {
http: ["https://mainnet.optimism.io"],
},
},
blockExplorers: {
etherscan: {
name: "Etherscan",
url: "https://optimistic.etherscan.io",
},
default: {
name: "Etherscan",
url: "https://optimistic.etherscan.io",
},
},
contracts: {
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 4286263,
},
},
};
const optimismGoerli: Chain = {
id: 420,
name: "Optimism Goerli",
network: "optimism-goerli",
nativeCurrency: { name: "Goerli Ether", symbol: "ETH", decimals: 18 },
rpcUrls: {
alchemy: {
http: ["https://opt-goerli.g.alchemy.com/v2"],
webSocket: ["wss://opt-goerli.g.alchemy.com/v2"],
},
infura: {
http: ["https://optimism-goerli.infura.io/v3"],
webSocket: ["wss://optimism-goerli.infura.io/ws/v3"],
},
default: {
http: ["https://goerli.optimism.io"],
},
public: {
http: ["https://goerli.optimism.io"],
},
},
blockExplorers: {
etherscan: {
name: "Etherscan",
url: "https://goerli-optimism.etherscan.io",
},
default: {
name: "Etherscan",
url: "https://goerli-optimism.etherscan.io",
},
},
contracts: {
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 49461,
},
},
testnet: true,
};
const polygon: Chain = {
id: 137,
name: "Polygon",
network: "matic",
nativeCurrency: { name: "MATIC", symbol: "MATIC", decimals: 18 },
rpcUrls: {
alchemy: {
http: ["https://polygon-mainnet.g.alchemy.com/v2"],
webSocket: ["wss://polygon-mainnet.g.alchemy.com/v2"],
},
infura: {
http: ["https://polygon-mainnet.infura.io/v3"],
webSocket: ["wss://polygon-mainnet.infura.io/ws/v3"],
},
default: {
http: ["https://polygon-rpc.com"],
},
public: {
http: ["https://polygon-rpc.com"],
},
},
blockExplorers: {
etherscan: {
name: "PolygonScan",
url: "https://polygonscan.com",
},
default: {
name: "PolygonScan",
url: "https://polygonscan.com",
},
},
contracts: {
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 25770160,
},
},
};
const polygonMumbai: Chain = {
id: 80_001,
name: "Polygon Mumbai",
network: "maticmum",
nativeCurrency: { name: "MATIC", symbol: "MATIC", decimals: 18 },
rpcUrls: {
alchemy: {
http: ["https://polygon-mumbai.g.alchemy.com/v2"],
webSocket: ["wss://polygon-mumbai.g.alchemy.com/v2"],
},
infura: {
http: ["https://polygon-mumbai.infura.io/v3"],
webSocket: ["wss://polygon-mumbai.infura.io/ws/v3"],
},
default: {
http: ["https://matic-mumbai.chainstacklabs.com"],
},
public: {
http: ["https://matic-mumbai.chainstacklabs.com"],
},
},
blockExplorers: {
etherscan: {
name: "PolygonScan",
url: "https://mumbai.polygonscan.com",
},
default: {
name: "PolygonScan",
url: "https://mumbai.polygonscan.com",
},
},
contracts: {
multicall3: {
address: "0xca11bde05977b3631167028862be2a173976ca11",
blockCreated: 25770160,
},
},
testnet: true,
};
/**
* @public
*/
export enum ChainId {
Mainnet = 1,
Goerli = 5,
Polygon = 137,
Mumbai = 80001,
Fantom = 250,
FantomTestnet = 4002,
Avalanche = 43114,
AvalancheFujiTestnet = 43113,
Optimism = 10,
OptimismGoerli = 420,
Arbitrum = 42161,
ArbitrumGoerli = 421613,
BinanceSmartChainMainnet = 56,
BinanceSmartChainTestnet = 97,
}
/**
* @public
*/
export type SUPPORTED_CHAIN_ID =
| ChainId.Mainnet
| ChainId.Goerli
| ChainId.Mumbai
| ChainId.Polygon
| ChainId.Fantom
| ChainId.FantomTestnet
| ChainId.Avalanche
| ChainId.AvalancheFujiTestnet
| ChainId.Optimism
| ChainId.OptimismGoerli
| ChainId.Arbitrum
| ChainId.ArbitrumGoerli
| ChainId.BinanceSmartChainMainnet
| ChainId.BinanceSmartChainTestnet;
/**
* @public
*/
export const SUPPORTED_CHAIN_IDS: SUPPORTED_CHAIN_ID[] = [
ChainId.Mainnet,
ChainId.Goerli,
ChainId.Polygon,
ChainId.Mumbai,
ChainId.Fantom,
ChainId.FantomTestnet,
ChainId.Avalanche,
ChainId.AvalancheFujiTestnet,
ChainId.Optimism,
ChainId.OptimismGoerli,
ChainId.Arbitrum,
ChainId.ArbitrumGoerli,
ChainId.BinanceSmartChainMainnet,
ChainId.BinanceSmartChainTestnet,
];
/**
* @public
*/
export const NATIVE_TOKEN_ADDRESS =
"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee";
export const DEFAULT_API_KEY =
"c6634ad2d97b74baf15ff556016830c251050e6c36b9da508ce3ec80095d3dc1";
function getRpcNameFromChainId(chainId: SUPPORTED_CHAIN_ID): string {
switch (chainId) {
case ChainId.Mainnet:
return "mainnet";
case ChainId.Goerli:
return "goerli";
case ChainId.Polygon:
return "polygon";
case ChainId.Mumbai:
return "mumbai";
case ChainId.Avalanche:
return "avalanche";
case ChainId.AvalancheFujiTestnet:
return "avalanche-fuji";
case ChainId.Fantom:
return "fantom";
case ChainId.FantomTestnet:
return "fantom-testnet";
case ChainId.Arbitrum:
return "arbitrum";
case ChainId.ArbitrumGoerli:
return "arbitrum-goerli";
case ChainId.Optimism:
return "optimism";
case ChainId.OptimismGoerli:
return "optimism-goerli";
case ChainId.BinanceSmartChainMainnet:
return "bsc";
case ChainId.BinanceSmartChainTestnet:
return "bsc-testnet";
default:
throw new Error("Unsupported chain id");
}
}
export function getRpcUrl(chainId: SUPPORTED_CHAIN_ID) {
return `https://${getRpcNameFromChainId(
chainId,
)}.rpc.thirdweb.com/${DEFAULT_API_KEY}`;
}
function enhanceChain<TChain extends Chain>(chain: TChain) {
const twRPC = getRpcUrl(chain.id);
return {
...chain,
rpcUrls: {
...chain.rpcUrls,
default: {
...chain.rpcUrls.default,
http: [twRPC, ...chain.rpcUrls.default.http],
},
public: {
...chain.rpcUrls.public,
http: [twRPC, ...(chain.rpcUrls.public?.http || [])],
},
},
} as TChain;
}
export const supportedChains: Record<SUPPORTED_CHAIN_ID, Chain> = {
[ChainId.Mainnet]: enhanceChain(mainnet),
[ChainId.Goerli]: enhanceChain(goerli),
[ChainId.Polygon]: enhanceChain(polygon),
[ChainId.Mumbai]: enhanceChain(polygonMumbai),
[ChainId.Avalanche]: enhanceChain(avalanche),
[ChainId.AvalancheFujiTestnet]: enhanceChain(avalancheFuji),
[ChainId.Fantom]: enhanceChain(fantom),
[ChainId.FantomTestnet]: enhanceChain(fantomTestnet),
[ChainId.Arbitrum]: enhanceChain(arbitrum),
[ChainId.ArbitrumGoerli]: enhanceChain(arbitrumGoerli),
[ChainId.Optimism]: enhanceChain(optimism),
[ChainId.OptimismGoerli]: enhanceChain(optimismGoerli),
[ChainId.BinanceSmartChainMainnet]: enhanceChain(bsc),
[ChainId.BinanceSmartChainTestnet]: enhanceChain(bscTestnet),
};
export const thirdwebChains: Chain[] = Object.values(supportedChains);
+22 -84
View File
@@ -1,93 +1,31 @@
import { SUPPORTED_CHAIN_ID, supportedChains } from "./evm";
import type { Ecosystem, GenericAuthWallet } from "@thirdweb-dev/wallets";
import { ThirdwebAuth } from "../core";
import { LoginPayload, VerifyOptions } from "../core/schema";
import { EthersWallet } from "@thirdweb-dev/wallets/evm/wallets/ethers";
import { ethers } from "ethers";
const EIP1271_ABI = [
"function isValidSignature(bytes32 _message, bytes _signature) public view returns (bytes4)",
];
const EIP1271_MAGICVALUE = "0x1626ba7e";
const authMap = new Map<string, ThirdwebAuth>();
let wallet: EthersWallet;
export const checkContractWalletSignature = async (
message: string,
signature: string,
address: string,
chainId: number,
): Promise<boolean> => {
const rpcUrl =
supportedChains[chainId as SUPPORTED_CHAIN_ID]?.rpcUrls.default.http[0];
if (!rpcUrl) {
return false;
export async function verifyLogin(
domain: string,
payload: LoginPayload,
options?: Omit<VerifyOptions, "domain">,
) {
wallet = wallet || new EthersWallet(ethers.Wallet.createRandom());
let auth: ThirdwebAuth;
if (!authMap.has(domain)) {
auth = new ThirdwebAuth(wallet, domain);
authMap.set(domain, auth);
} else {
auth = authMap.get(domain) as ThirdwebAuth;
}
const provider = new ethers.providers.JsonRpcProvider(rpcUrl);
const walletContract = new ethers.Contract(address, EIP1271_ABI, provider);
const hashMessage = ethers.utils.hashMessage(message);
try {
const res = await walletContract.isValidSignature(hashMessage, signature);
return res === EIP1271_MAGICVALUE;
} catch {
return false;
}
};
export class SignerWallet implements GenericAuthWallet {
type: Ecosystem = "evm";
#signer: ethers.Signer;
constructor(signer: ethers.Signer) {
this.#signer = signer;
}
public async getAddress(): Promise<string> {
return this.#signer.getAddress();
}
public async getChainId(): Promise<number> {
return this.#signer.getChainId();
}
public async signMessage(message: string): Promise<string> {
return await this.#signer.signMessage(message);
}
public async verifySignature(
message: string,
signature: string,
address: string,
chainId?: number,
): Promise<boolean> {
const messageHash = ethers.utils.hashMessage(message);
const messageHashBytes = ethers.utils.arrayify(messageHash);
const recoveredAddress = ethers.utils.recoverAddress(
messageHashBytes,
signature,
);
if (recoveredAddress === address) {
return true;
}
// Check if the address is a smart contract wallet
if (chainId !== undefined) {
try {
const isValid = await checkContractWalletSignature(
message,
signature,
address,
chainId || 1,
);
return isValid;
} catch {
// no-op
}
}
return false;
const address = await auth.verify(payload, options);
return { address, error: undefined };
} catch (err: any) {
return { address: undefined, error: err.message };
}
}
export class PrivateKeyWallet extends SignerWallet {
constructor(privateKey: string) {
super(new ethers.Wallet(privateKey));
}
}
export { PrivateKeyWallet } from "@thirdweb-dev/wallets/evm/wallets/private-key";
+17 -2
View File
@@ -3,7 +3,11 @@ import { getUser } from "./helpers/user";
import loginHandler from "./routes/login";
import logoutHandler from "./routes/logout";
import userHandler from "./routes/user";
import { ThirdwebAuthConfig, ThirdwebAuthContext } from "./types";
import {
ThirdwebAuthConfig,
ThirdwebAuthContext,
ThirdwebAuthUser,
} from "./types";
import cookieParser from "cookie-parser";
import express, { Request, Response } from "express";
@@ -17,10 +21,21 @@ const asyncHandler =
return Promise.resolve(fnReturn).catch(next);
};
type ThirdwebAuthReturnType<
TData extends Json = Json,
TSession extends Json = Json,
> = {
authRouter: express.Router;
authMiddleware: express.RequestHandler;
getUser: (req: Request) => Promise<ThirdwebAuthUser<TData, TSession> | null>;
};
export function ThirdwebAuth<
TData extends Json = Json,
TSession extends Json = Json,
>(cfg: ThirdwebAuthConfig<TData, TSession>) {
>(
cfg: ThirdwebAuthConfig<TData, TSession>,
): ThirdwebAuthReturnType<TData, TSession> {
const ctx = {
...cfg,
auth: new ThirdwebAuthSDK(cfg.wallet, cfg.domain),
+1 -1
View File
@@ -31,5 +31,5 @@ export default async function handler(
}),
);
return res.status(200).json({ message: "Succesfully logged out" });
return res.status(200).json({ message: "Successfully logged out" });
}
+1 -1
View File
@@ -1,6 +1,6 @@
import { ThirdwebAuth } from "../../core";
import { Json, LoginPayloadOutputSchema, User } from "../../core/schema";
import { GenericAuthWallet } from "@thirdweb-dev/wallets";
import type { GenericAuthWallet } from "@thirdweb-dev/wallets";
import { Request } from "express";
import { z } from "zod";
+53 -138
View File
@@ -1,145 +1,60 @@
import { ThirdwebAuth } from "../core";
import { ThirdwebNextAuthConfig } from "./types";
import { serialize } from "cookie";
import {
GetServerSidePropsContext,
NextApiRequest,
NextApiResponse,
} from "next";
import NextAuth, {
NextAuthOptions,
Session,
unstable_getServerSession,
} from "next-auth";
import { LoginPayload, ThirdwebAuth, VerifyOptions } from "../core";
import { ThirdwebProviderConfig } from "./types";
import { EthersWallet } from "@thirdweb-dev/wallets/evm/wallets/ethers";
import { ethers } from "ethers";
import { Awaitable, Session } from "next-auth/core/types";
import { JWT } from "next-auth/jwt/types";
import CredentialsProvider from "next-auth/providers/credentials";
export function ThirdwebNextAuth(cfg: ThirdwebNextAuthConfig) {
const auth = new ThirdwebAuth(cfg.wallet, cfg.domain);
export function ThirdwebAuthProvider(cfg: ThirdwebProviderConfig) {
const wallet = new EthersWallet(ethers.Wallet.createRandom());
const auth = new ThirdwebAuth(wallet, cfg.domain);
function ThirdwebProvider(res: GetServerSidePropsContext["res"]) {
return CredentialsProvider({
name: "ThirdwebAuth",
credentials: {
payload: {
label: "Payload",
type: "text",
placeholder: "",
},
return CredentialsProvider({
name: "Credentials",
credentials: {
payload: {
label: "Payload",
type: "text",
placeholder: "",
},
async authorize({ payload }: any) {
try {
const parsed = JSON.parse(payload);
const token = await auth.generate(parsed);
const user = await auth.authenticate(token);
// Securely set httpOnly cookie on request to prevent XSS on frontend
// And set path to / to enable thirdweb_auth_token usage on all endpoints
res.setHeader(
"Set-Cookie",
serialize("thirdweb_auth_token", token, {
path: "/",
httpOnly: true,
secure: true,
sameSite: "none",
}),
);
return { id: user.address, address: user.address };
} catch (err) {
return null;
}
},
});
}
function nextOptions(
req: GetServerSidePropsContext["req"],
res: GetServerSidePropsContext["res"],
): NextAuthOptions {
async function session({
session: _session,
}: {
session: Session;
}): Promise<Session> {
const token = req.cookies.thirdweb_auth_token || "";
},
async authorize({ payload }: any) {
try {
const address = await auth.authenticate(token);
_session.user = { ..._session.user, address } as Session["user"];
return _session;
} catch {
return _session;
const parsedPayload: LoginPayload = JSON.parse(payload);
const verifyOptions: VerifyOptions = {
statement: cfg.authOptions?.statement,
uri: cfg.authOptions?.uri,
version: cfg.authOptions?.version,
chainId: cfg.authOptions?.chainId,
resources: cfg.authOptions?.resources,
validateNonce: async (nonce: string) => {
if (cfg.authOptions?.validateNonce) {
await cfg.authOptions?.validateNonce(nonce);
}
},
};
const address = await auth.verify(parsedPayload, verifyOptions);
return { id: address };
} catch (err) {
return null;
}
}
function signOut() {
res.setHeader(
"Set-Cookie",
serialize("thirdweb_auth_token", "", {
path: "/",
expires: new Date(Date.now() + 5 * 1000),
}),
);
}
const providers: NextAuthOptions["providers"] = [
...cfg.nextOptions.providers,
ThirdwebProvider(res),
];
const configSession = cfg.nextOptions.callbacks?.session;
const callbacks: NextAuthOptions["callbacks"] = {
...cfg.nextOptions.callbacks,
session: configSession
? async (params) => {
params.session = await session(params);
return configSession(params);
}
: session,
};
const configSignOut = cfg.nextOptions.events?.signOut;
const events: NextAuthOptions["events"] = {
...cfg.nextOptions.events,
signOut: configSignOut
? async (params) => {
signOut();
return configSignOut(params);
}
: signOut,
};
return {
...cfg.nextOptions,
providers,
callbacks,
events,
};
}
async function getUser(
...args:
| [NextApiRequest, NextApiResponse]
| [GetServerSidePropsContext["req"], GetServerSidePropsContext["res"]]
) {
return unstable_getServerSession(
args[0],
args[1],
nextOptions(args[0], args[1]),
);
}
function NextAuthHandler(...args: [] | [NextApiRequest, NextApiResponse]) {
if (args.length === 0) {
return (req: NextApiRequest, res: NextApiResponse) => {
return NextAuth(req, res, nextOptions(req, res));
};
}
return NextAuth(args[0], args[1], nextOptions(args[0], args[1]));
}
return {
NextAuthHandler,
getUser,
};
},
});
}
export function authSession(params: {
session: Session;
token: JWT;
}): Awaitable<Session> {
if (params.token.sub && ethers.utils.isAddress(params.token.sub)) {
params.session.user = {
...params.session.user,
address: params.token.sub,
};
}
return params.session;
}
+14
View File
@@ -0,0 +1,14 @@
// eslint-disable-next-line @typescript-eslint/no-unused-vars
import NextAuth from "next-auth";
declare module "next-auth" {
interface Session {
user: {
id: string;
username: string;
email: string;
address?: string;
[key: string]: string;
};
}
}
+13
View File
@@ -0,0 +1,13 @@
export type ThirdwebProviderConfig = {
domain: string;
authOptions?: {
statement?: string;
uri?: string;
version?: string;
chainId?: string;
resources?: string[];
validateNonce?:
| ((nonce: string) => void)
| ((nonce: string) => Promise<void>);
};
};
@@ -1,8 +0,0 @@
import { GenericAuthWallet } from "@thirdweb-dev/wallets";
import { NextAuthOptions } from "next-auth";
export type ThirdwebNextAuthConfig = {
domain: string;
wallet: GenericAuthWallet;
nextOptions: NextAuthOptions;
};
+1 -1
View File
@@ -31,5 +31,5 @@ export default async function handler(
}),
);
return res.status(200).json({ message: "Succesfully logged out" });
return res.status(200).json({ message: "Successfully logged out" });
}
+1 -1
View File
@@ -1,6 +1,6 @@
import { ThirdwebAuth } from "../../core";
import { Json, LoginPayloadOutputSchema, User } from "../../core/schema";
import { GenericAuthWallet } from "@thirdweb-dev/wallets";
import type { GenericAuthWallet } from "@thirdweb-dev/wallets";
import { GetServerSidePropsContext, NextApiRequest } from "next";
import { NextRequest } from "next/server";
import { z } from "zod";
+23 -63
View File
@@ -1,69 +1,29 @@
import * as ed25519 from "@noble/ed25519";
import { Signer, Keypair, PublicKey } from "@solana/web3.js";
import type { Ecosystem, GenericAuthWallet } from "@thirdweb-dev/wallets";
import bs58 from "bs58";
import nacl from "tweetnacl";
import { ThirdwebAuth } from "../core";
import { LoginPayload, VerifyOptions } from "../core/schema";
import { Keypair } from "@solana/web3.js";
import { KeypairWallet } from "@thirdweb-dev/wallets/solana/wallets/keypair";
export interface SolanaSigner {
publicKey: PublicKey;
signMessage(message: Uint8Array): Promise<Uint8Array>;
}
const authMap = new Map<string, ThirdwebAuth>();
let wallet: KeypairWallet;
export class SignerWallet implements GenericAuthWallet {
type: Ecosystem = "solana";
private signer: SolanaSigner;
constructor(signer: SolanaSigner) {
this.signer = signer;
export async function verifyLogin(
domain: string,
payload: LoginPayload,
options?: Omit<VerifyOptions, "domain">,
) {
wallet = wallet || new KeypairWallet(Keypair.generate());
let auth: ThirdwebAuth;
if (!authMap.has(domain)) {
auth = new ThirdwebAuth(wallet, domain);
authMap.set(domain, auth);
} else {
auth = authMap.get(domain) as ThirdwebAuth;
}
public async getAddress(): Promise<string> {
return this.signer.publicKey.toBase58();
}
public async signMessage(message: string): Promise<string> {
const encodedMessage = new TextEncoder().encode(message);
const signedMessage = await this.signer.signMessage(encodedMessage);
const signature = bs58.encode(signedMessage);
return signature;
}
public async verifySignature(
message: string,
signature: string,
address: string,
): Promise<boolean> {
return nacl.sign.detached.verify(
new TextEncoder().encode(message),
bs58.decode(signature),
bs58.decode(address),
);
}
}
class KeypairSigner implements SolanaSigner {
private keypair: Signer;
public publicKey: PublicKey;
constructor(keypair: Signer) {
this.keypair = keypair;
this.publicKey = keypair.publicKey;
}
public async signMessage(message: Uint8Array): Promise<Uint8Array> {
return ed25519.sync.sign(message, this.keypair.secretKey.slice(0, 32));
}
}
export class KeypairWallet extends SignerWallet {
constructor(keypair: Keypair) {
super(new KeypairSigner(keypair));
}
}
export class PrivateKeyWallet extends KeypairWallet {
constructor(privateKey: string) {
super(Keypair.fromSecretKey(bs58.decode(privateKey)));
try {
const address = await auth.verify(payload, options);
return { address, error: undefined };
} catch (err: any) {
return { address: undefined, error: err.message };
}
}
+4 -4
View File
@@ -1,5 +1,5 @@
import { ThirdwebAuth } from "../src/core";
import { SignerWallet } from "../src/evm";
import { EthersWallet } from "@thirdweb-dev/wallets/evm/wallets/ethers";
import { expect } from "chai";
import { Wallet } from "ethers";
@@ -14,9 +14,9 @@ describe("Wallet Authentication", async () => {
Wallet.createRandom(),
];
adminWallet = new SignerWallet(adminSigner);
signerWallet = new SignerWallet(signerSigner);
attackerWallet = new SignerWallet(attackerSigner);
adminWallet = new EthersWallet(adminSigner);
signerWallet = new EthersWallet(signerSigner);
attackerWallet = new EthersWallet(attackerSigner);
auth = new ThirdwebAuth(signerWallet, "thirdweb.com");
});
+1 -1
View File
@@ -1,6 +1,6 @@
import { ThirdwebAuth } from "../src/core";
import { KeypairWallet } from "../src/solana";
import { Keypair } from "@solana/web3.js";
import { KeypairWallet } from "@thirdweb-dev/wallets/solana/wallets/keypair";
import { expect } from "chai";
describe("Wallet Authentication", async () => {
+6
View File
@@ -0,0 +1,6 @@
{
"presets": [
"@babel/preset-typescript",
["@babel/preset-env", { "targets": "defaults, not ie 11" }]
]
}
+161
View File
@@ -0,0 +1,161 @@
# @thirdweb-dev/chains
## 0.1.7
### Patch Changes
- [#584](https://github.com/thirdweb-dev/js/pull/584) [`d01b135d`](https://github.com/thirdweb-dev/js/commit/d01b135d26efe6cebd84110b1a8eacee5c1b98db) Thanks [@MananTank](https://github.com/MananTank)! - [Wallets, RN, React, ReactCore] New Wallets SDK implementation
#### Breaking changes:
### React and React Native
1. Replaced `walletConnectors` with `supportedWallets` in the ThirdwebProvider.
```diff
import { coinbaseWallet, metamaskWallet, ThirdwebProvider } from "@thirdweb-dev/react";
const App = () => {
- return <ThirdwebProvider walletConnectors={["metamask", "coinbaseWallet"]}>{...}</ThirdwebProvider>
+ return <ThirdwebProvider supportedWallets={[metamaskWallet(), coinbaseWallet()]}>{...}</ThirdwebProvider>
}
```
2. `magicLinkConnector` not yet implemented in this version
3. Removed `desiredChainId`, use `activeChain` instead
4. `DAppMetaData` type now requires the `url` field to be passed in
5. Removed `chainRpc` prop from the ThirdwebProvider. You can pass custom rpcs in the Chain object through the `activeChain` and `supportedChains` props.
6. Replaced the `useNetwork` hook for `useChain` and `useSwitchChain`
7. Updated `ConnectWallet` button in React:
- Removed `accentColor` and `colorMode`
- Added a `theme` prop with `dark` and `light` values
8. Updated the `Web3Button` button in React:
- Removed `accentColor` and `colorMode`
- Added a `theme` prop with `dark` and `light` values
### Patch Changes
- You can now pass a `theme` prop to the ThirdwebProvider. Values are `light` and `dark`
```
import { ThirdwebProvider } from "@thirdweb-dev/react";
const App = () => {
return <ThirdwebProvider theme='light'>{...}</ThirdwebProvider>
}
```
- New wallet hooks added
- useWallet()
- useConenct()
- useConnectionStatus()
- useSwitchChain()
- Removed `wagmi` dependency from the `react-native-compat` package and updated shims
- New `ConnectWallet` and `Web3Button` components in React Native
- New wallets package with support for the most common wallets. MetaMask, Coinbase, WalletConnect V1 and V2 and PaperWallet
- Added `autoSwitch` prop to the ThirdwebProvider to control whether or not to automatically switch to wallet's network to active chain
```
import { ThirdwebProvider } from "@thirdweb-dev/react";
const App = () => {
return <ThirdwebProvider autoSwitch>{...}</ThirdwebProvider>
}
```
- [#771](https://github.com/thirdweb-dev/js/pull/771) [`e3161e59`](https://github.com/thirdweb-dev/js/commit/e3161e5986e1831c6dae517889b6a6ba181ccd36) Thanks [@iketw](https://github.com/iketw)! - [ReactNativeSDK] Use wallet metadata from the wallet class
- [#702](https://github.com/thirdweb-dev/js/pull/702) [`33d1cc7f`](https://github.com/thirdweb-dev/js/commit/33d1cc7f92cd982e9e55130472c0006bb999f682) Thanks [@jnsdls](https://github.com/jnsdls)! - enable `browser` export
- [#801](https://github.com/thirdweb-dev/js/pull/801) [`6b145d4b`](https://github.com/thirdweb-dev/js/commit/6b145d4b36d2706f8a2dcad4b8f680c41606a556) Thanks [@jnsdls](https://github.com/jnsdls)! - updated chains
- [#822](https://github.com/thirdweb-dev/js/pull/822) [`e2ec70c4`](https://github.com/thirdweb-dev/js/commit/e2ec70c49264737fbd2afb1cacabded82262bc6c) Thanks [@jnsdls](https://github.com/jnsdls)! - update chains again
- [#721](https://github.com/thirdweb-dev/js/pull/721) [`1baed0b1`](https://github.com/thirdweb-dev/js/commit/1baed0b1d83b4c92dac44430af5436d04727d92f) Thanks [@adam-maj](https://github.com/adam-maj)! - Update chains
- [#748](https://github.com/thirdweb-dev/js/pull/748) [`2221f97d`](https://github.com/thirdweb-dev/js/commit/2221f97ddc997d864db3a5f00e82862ece574922) Thanks [@MananTank](https://github.com/MananTank)! - [ReactCore] Inject api key to chains
- [#770](https://github.com/thirdweb-dev/js/pull/770) [`5c7c0923`](https://github.com/thirdweb-dev/js/commit/5c7c0923e45b3f0ee27c83a9c4c691ce9bbb8539) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - update chains
- [#809](https://github.com/thirdweb-dev/js/pull/809) [`9a4a542c`](https://github.com/thirdweb-dev/js/commit/9a4a542ce9650605d48745a40126ca6b52a16722) Thanks [@jnsdls](https://github.com/jnsdls)! - add new chains
- [#719](https://github.com/thirdweb-dev/js/pull/719) [`b2d0ffb0`](https://github.com/thirdweb-dev/js/commit/b2d0ffb049208de9f9212eae7059212aed74fec4) Thanks [@nachoiacovino](https://github.com/nachoiacovino)! - Replace Goerli default faucet
## 0.1.6
### Patch Changes
- [#635](https://github.com/thirdweb-dev/js/pull/635) [`7832041c`](https://github.com/thirdweb-dev/js/commit/7832041c0fb25852489c73453c2b26e844d94582) Thanks [@jnsdls](https://github.com/jnsdls)! - Add additional chains
- [#643](https://github.com/thirdweb-dev/js/pull/643) [`85250cf7`](https://github.com/thirdweb-dev/js/commit/85250cf71190092b61023d56d1e786d395a008a6) Thanks [@jnsdls](https://github.com/jnsdls)! - expose `getChainBySlug` and `ChainSlug` and `ChainId` type
- [#638](https://github.com/thirdweb-dev/js/pull/638) [`e33bd2a8`](https://github.com/thirdweb-dev/js/commit/e33bd2a856bbc2e2f6b0c90b46be5166281875ae) Thanks [@jnsdls](https://github.com/jnsdls)! - Add `getChainByChainId()` to retrieve chain by chainId
- [#685](https://github.com/thirdweb-dev/js/pull/685) [`4355518a`](https://github.com/thirdweb-dev/js/commit/4355518afea68cd8026d3ab8a0144c15d66b9e24) Thanks [@jnsdls](https://github.com/jnsdls)! - update chains
## 0.1.5
### Patch Changes
- [#617](https://github.com/thirdweb-dev/js/pull/617) [`d7deaa4`](https://github.com/thirdweb-dev/js/commit/d7deaa48f2f943deb8f2ad7459d17de930c00517) Thanks [@jnsdls](https://github.com/jnsdls)! - Add Base Goerli
- [#619](https://github.com/thirdweb-dev/js/pull/619) [`b7a5b45`](https://github.com/thirdweb-dev/js/commit/b7a5b454415596316f58a75f14472631242cc115) Thanks [@jnsdls](https://github.com/jnsdls)! - fix the slug for base-goerli
## 0.1.4
### Patch Changes
- [#613](https://github.com/thirdweb-dev/js/pull/613) [`a3472a1`](https://github.com/thirdweb-dev/js/commit/a3472a133175826d052ee986907de014e3cf3ad9) Thanks [@jnsdls](https://github.com/jnsdls)! - Update Chains
- [#616](https://github.com/thirdweb-dev/js/pull/616) [`5712650`](https://github.com/thirdweb-dev/js/commit/5712650074e2415bbea4173a0bb68d727ff2db90) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - new chains
## 0.1.3
### Patch Changes
- [#608](https://github.com/thirdweb-dev/js/pull/608) [`3d644fb`](https://github.com/thirdweb-dev/js/commit/3d644fb8cbae8bc3ee624505831b9f5c6996898a) Thanks [@jnsdls](https://github.com/jnsdls)! - update chains
## 0.1.2
### Patch Changes
- [#601](https://github.com/thirdweb-dev/js/pull/601) [`66cf1fb`](https://github.com/thirdweb-dev/js/commit/66cf1fb5c2e8deb486543ee028d786bb8eef6c19) Thanks [@jnsdls](https://github.com/jnsdls)! - upgrade dependencies
## 0.1.1
### Patch Changes
- [#599](https://github.com/thirdweb-dev/js/pull/599) [`f580b8a`](https://github.com/thirdweb-dev/js/commit/f580b8ac06534df24b0194cbc632b4a8fd447611) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - New chains added
## 0.1.0
### Minor Changes
- [`af8cf40`](https://github.com/thirdweb-dev/js/commit/af8cf40e4e1dab6afcc7622f7f9bbcfc6e8534d8) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Initial release for `@thirdweb-dev/chains`.
Use this package to easily configure chains with `@thirdweb-dev/sdk` and `@thirdweb-dev/react`.
### Patch Changes
- [`6a50719`](https://github.com/thirdweb-dev/js/commit/6a507194861b0712fd753c49ac63a8af68eb21d5) Thanks [@jnsdls](https://github.com/jnsdls)! - add `getChainRPCs` export to get a list of RPCs instead of a single RPC via `getChainRPC`
- [`5d25ee1`](https://github.com/thirdweb-dev/js/commit/5d25ee1ab7abb4bfbded283a18f2d7740bb6995d) Thanks [@jnsdls](https://github.com/jnsdls)! - fix `getChainRPC()` utility function logic
- [`d0bcd2c`](https://github.com/thirdweb-dev/js/commit/d0bcd2c5871ca9480efc8d97e27e337eb9bbf830) Thanks [@jnsdls](https://github.com/jnsdls)! - add new chains + localhost special case
- [#589](https://github.com/thirdweb-dev/js/pull/589) [`017b0d5`](https://github.com/thirdweb-dev/js/commit/017b0d56b64651b290440b60789e058afba9f9a5) Thanks [@jnsdls](https://github.com/jnsdls)! - add `minimizeChain` and `configureChain` util functions
- [`500a0e6`](https://github.com/thirdweb-dev/js/commit/500a0e671b3feb01aedd2c34443b682d0934f389) Thanks [@jnsdls](https://github.com/jnsdls)! - add thirdweb rpc to all available chains
+36
View File
@@ -0,0 +1,36 @@
<p align="center">
<br />
<a href="https://thirdweb.com"><img src="https://github.com/thirdweb-dev/js/blob/main/packages/sdk/logo.svg?raw=true" width="200" alt=""/></a>
<br />
</p>
<h1 align="center">thirdweb chains</h1>
<p align="center">
<a href="https://www.npmjs.com/package/@thirdweb-dev/chains"><img src="https://img.shields.io/npm/v/@thirdweb-dev/chains?color=red&label=npm&logo=npm" alt="npm version"/></a>
<a href="https://github.com/thirdweb-dev/js/actions/workflows/build-test-lint.yml"><img alt="Build Status" src="https://github.com/thirdweb-dev/js/actions/workflows/build-test-lint.yml/badge.svg"/></a>
<a href="https://discord.gg/thirdweb"><img alt="Join our Discord!" src="https://img.shields.io/discord/834227967404146718.svg?color=7289da&label=discord&logo=discord&style=flat"/></a>
</p>
<!-- <p align="center"><strong>Best in class Web3 SDK for Browser, Node and Mobile apps</strong></p> -->
<br />
## Installation
```bash
yarn add @thirdweb-dev/chains
```
## Contributing
### Adding / Overriding Chain Data
Chain data is automatically pulled in from [ethereum-lists/chains](https://github.com/ethereum-lists/chains) on every build.
#### Overriding Chain Data
Chain data can be overridden by running `yarn override-chain` and following the prompts.
#### Adding A New Chain
In cases where a chain is not listed in the [ethereum-lists/chains](https://github.com/ethereum-lists/chains) repo, you can add it manually by running `yarn add-chain` and following the prompts.
> Prefer adding chains to the ethereum-lists/chains repo instead of manually adding them here.
+58
View File
@@ -0,0 +1,58 @@
export default {
"name": "Ethereum Mainnet",
"chain": "ETH",
"icon": {
"url": "ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/ethereum/512.png",
"height": 512,
"width": 512,
"format": "png",
"sizes": [
512,
256,
128,
64,
32,
16
]
},
"rpc": [
"https://ethereum.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://eth-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}",
"https://mainnet.infura.io/v3/${INFURA_API_KEY}",
"wss://mainnet.infura.io/ws/v3/${INFURA_API_KEY}",
"https://api.mycryptoapi.com/eth",
"https://cloudflare-eth.com",
"https://ethereum.publicnode.com"
],
"features": [
{
"name": "EIP1559"
},
{
"name": "EIP155"
}
],
"faucets": [],
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"infoURL": "https://ethereum.org",
"shortName": "eth",
"chainId": 1,
"networkId": 1,
"slip44": 60,
"ens": {
"registry": "0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"
},
"explorers": [
{
"name": "etherscan",
"url": "https://etherscan.io",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "ethereum"
} as const;
+43
View File
@@ -0,0 +1,43 @@
export default {
"name": "Optimism",
"chain": "ETH",
"rpc": [
"https://optimism.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://opt-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}",
"https://optimism-mainnet.infura.io/v3/${INFURA_API_KEY}",
"https://mainnet.optimism.io/"
],
"faucets": [],
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"infoURL": "https://optimism.io",
"shortName": "oeth",
"chainId": 10,
"networkId": 10,
"explorers": [
{
"name": "etherscan",
"url": "https://optimistic.etherscan.io",
"standard": "EIP3091"
}
],
"icon": {
"url": "ipfs://QmcxZHpyJa8T4i63xqjPYrZ6tKrt55tZJpbXcjSDKuKaf9/optimism/512.png",
"height": 512,
"width": 512,
"format": "png",
"sizes": [
512,
256,
128,
64,
32,
16
]
},
"testnet": false,
"slug": "optimism"
} as const;
+49
View File
@@ -0,0 +1,49 @@
export default {
"name": "Gnosis",
"chain": "GNO",
"icon": {
"url": "ipfs://bafybeidk4swpgdyqmpz6shd5onvpaujvwiwthrhypufnwr6xh3dausz2dm",
"width": 1800,
"height": 1800,
"format": "png"
},
"rpc": [
"https://gnosis.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.gnosischain.com",
"https://rpc.ankr.com/gnosis",
"https://gnosischain-rpc.gateway.pokt.network",
"https://gnosis-mainnet.public.blastapi.io",
"wss://rpc.gnosischain.com/wss"
],
"faucets": [
"https://gnosisfaucet.com",
"https://faucet.gimlu.com/gnosis",
"https://stakely.io/faucet/gnosis-chain-xdai",
"https://faucet.prussia.dev/xdai"
],
"nativeCurrency": {
"name": "xDAI",
"symbol": "xDAI",
"decimals": 18
},
"infoURL": "https://docs.gnosischain.com",
"shortName": "gno",
"chainId": 100,
"networkId": 100,
"slip44": 700,
"explorers": [
{
"name": "gnosisscan",
"url": "https://gnosisscan.io",
"standard": "EIP3091"
},
{
"name": "blockscout",
"url": "https://blockscout.com/xdai/mainnet",
"icon": "blockscout",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "gnosis"
} as const;
+31
View File
@@ -0,0 +1,31 @@
export default {
"name": "GTON Mainnet",
"chain": "GTON",
"rpc": [
"https://gton.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.gton.network/"
],
"faucets": [],
"nativeCurrency": {
"name": "GCD",
"symbol": "GCD",
"decimals": 18
},
"infoURL": "https://gton.capital",
"shortName": "gton",
"chainId": 1000,
"networkId": 1000,
"explorers": [
{
"name": "GTON Network Explorer",
"url": "https://explorer.gton.network",
"standard": "EIP3091"
}
],
"parent": {
"type": "L2",
"chain": "eip155-1"
},
"testnet": false,
"slug": "gton"
} as const;
+23
View File
@@ -0,0 +1,23 @@
export default {
"name": "Smart Bitcoin Cash",
"chain": "smartBCH",
"rpc": [
"https://smart-bitcoin-cash.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://smartbch.greyh.at",
"https://rpc-mainnet.smartbch.org",
"https://smartbch.fountainhead.cash/mainnet",
"https://smartbch.devops.cash/mainnet"
],
"faucets": [],
"nativeCurrency": {
"name": "Bitcoin Cash",
"symbol": "BCH",
"decimals": 18
},
"infoURL": "https://smartbch.org/",
"shortName": "smartbch",
"chainId": 10000,
"networkId": 10000,
"testnet": false,
"slug": "smart-bitcoin-cash"
} as const;
+20
View File
@@ -0,0 +1,20 @@
export default {
"name": "QuarkChain Mainnet Root",
"chain": "QuarkChain",
"rpc": [
"https://quarkchain-root.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"http://jrpc.mainnet.quarkchain.io:38391"
],
"faucets": [],
"nativeCurrency": {
"name": "QKC",
"symbol": "QKC",
"decimals": 18
},
"infoURL": "https://www.quarkchain.io",
"shortName": "qkc-r",
"chainId": 100000,
"networkId": 100000,
"testnet": false,
"slug": "quarkchain-root"
} as const;
+32
View File
@@ -0,0 +1,32 @@
export default {
"name": "QuarkChain Mainnet Shard 0",
"chain": "QuarkChain",
"rpc": [
"https://quarkchain-shard-0.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-s0-ethapi.quarkchain.io",
"http://eth-jrpc.mainnet.quarkchain.io:39000"
],
"faucets": [],
"nativeCurrency": {
"name": "QKC",
"symbol": "QKC",
"decimals": 18
},
"infoURL": "https://www.quarkchain.io",
"shortName": "qkc-s0",
"chainId": 100001,
"networkId": 100001,
"parent": {
"chain": "eip155-100000",
"type": "shard"
},
"explorers": [
{
"name": "quarkchain-mainnet",
"url": "https://mainnet.quarkchain.io/0",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "quarkchain-shard-0"
} as const;
+32
View File
@@ -0,0 +1,32 @@
export default {
"name": "QuarkChain Mainnet Shard 1",
"chain": "QuarkChain",
"rpc": [
"https://quarkchain-shard-1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-s1-ethapi.quarkchain.io",
"http://eth-jrpc.mainnet.quarkchain.io:39001"
],
"faucets": [],
"nativeCurrency": {
"name": "QKC",
"symbol": "QKC",
"decimals": 18
},
"infoURL": "https://www.quarkchain.io",
"shortName": "qkc-s1",
"chainId": 100002,
"networkId": 100002,
"parent": {
"chain": "eip155-100000",
"type": "shard"
},
"explorers": [
{
"name": "quarkchain-mainnet",
"url": "https://mainnet.quarkchain.io/1",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "quarkchain-shard-1"
} as const;
+32
View File
@@ -0,0 +1,32 @@
export default {
"name": "QuarkChain Mainnet Shard 2",
"chain": "QuarkChain",
"rpc": [
"https://quarkchain-shard-2.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-s2-ethapi.quarkchain.io",
"http://eth-jrpc.mainnet.quarkchain.io:39002"
],
"faucets": [],
"nativeCurrency": {
"name": "QKC",
"symbol": "QKC",
"decimals": 18
},
"infoURL": "https://www.quarkchain.io",
"shortName": "qkc-s2",
"chainId": 100003,
"networkId": 100003,
"parent": {
"chain": "eip155-100000",
"type": "shard"
},
"explorers": [
{
"name": "quarkchain-mainnet",
"url": "https://mainnet.quarkchain.io/2",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "quarkchain-shard-2"
} as const;
+32
View File
@@ -0,0 +1,32 @@
export default {
"name": "QuarkChain Mainnet Shard 3",
"chain": "QuarkChain",
"rpc": [
"https://quarkchain-shard-3.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-s3-ethapi.quarkchain.io",
"http://eth-jrpc.mainnet.quarkchain.io:39003"
],
"faucets": [],
"nativeCurrency": {
"name": "QKC",
"symbol": "QKC",
"decimals": 18
},
"infoURL": "https://www.quarkchain.io",
"shortName": "qkc-s3",
"chainId": 100004,
"networkId": 100004,
"parent": {
"chain": "eip155-100000",
"type": "shard"
},
"explorers": [
{
"name": "quarkchain-mainnet",
"url": "https://mainnet.quarkchain.io/3",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "quarkchain-shard-3"
} as const;
+32
View File
@@ -0,0 +1,32 @@
export default {
"name": "QuarkChain Mainnet Shard 4",
"chain": "QuarkChain",
"rpc": [
"https://quarkchain-shard-4.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-s4-ethapi.quarkchain.io",
"http://eth-jrpc.mainnet.quarkchain.io:39004"
],
"faucets": [],
"nativeCurrency": {
"name": "QKC",
"symbol": "QKC",
"decimals": 18
},
"infoURL": "https://www.quarkchain.io",
"shortName": "qkc-s4",
"chainId": 100005,
"networkId": 100005,
"parent": {
"chain": "eip155-100000",
"type": "shard"
},
"explorers": [
{
"name": "quarkchain-mainnet",
"url": "https://mainnet.quarkchain.io/4",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "quarkchain-shard-4"
} as const;
+32
View File
@@ -0,0 +1,32 @@
export default {
"name": "QuarkChain Mainnet Shard 5",
"chain": "QuarkChain",
"rpc": [
"https://quarkchain-shard-5.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-s5-ethapi.quarkchain.io",
"http://eth-jrpc.mainnet.quarkchain.io:39005"
],
"faucets": [],
"nativeCurrency": {
"name": "QKC",
"symbol": "QKC",
"decimals": 18
},
"infoURL": "https://www.quarkchain.io",
"shortName": "qkc-s5",
"chainId": 100006,
"networkId": 100006,
"parent": {
"chain": "eip155-100000",
"type": "shard"
},
"explorers": [
{
"name": "quarkchain-mainnet",
"url": "https://mainnet.quarkchain.io/5",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "quarkchain-shard-5"
} as const;
+32
View File
@@ -0,0 +1,32 @@
export default {
"name": "QuarkChain Mainnet Shard 6",
"chain": "QuarkChain",
"rpc": [
"https://quarkchain-shard-6.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-s6-ethapi.quarkchain.io",
"http://eth-jrpc.mainnet.quarkchain.io:39006"
],
"faucets": [],
"nativeCurrency": {
"name": "QKC",
"symbol": "QKC",
"decimals": 18
},
"infoURL": "https://www.quarkchain.io",
"shortName": "qkc-s6",
"chainId": 100007,
"networkId": 100007,
"parent": {
"chain": "eip155-100000",
"type": "shard"
},
"explorers": [
{
"name": "quarkchain-mainnet",
"url": "https://mainnet.quarkchain.io/6",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "quarkchain-shard-6"
} as const;
+32
View File
@@ -0,0 +1,32 @@
export default {
"name": "QuarkChain Mainnet Shard 7",
"chain": "QuarkChain",
"rpc": [
"https://quarkchain-shard-7.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-s7-ethapi.quarkchain.io",
"http://eth-jrpc.mainnet.quarkchain.io:39007"
],
"faucets": [],
"nativeCurrency": {
"name": "QKC",
"symbol": "QKC",
"decimals": 18
},
"infoURL": "https://www.quarkchain.io",
"shortName": "qkc-s7",
"chainId": 100008,
"networkId": 100008,
"parent": {
"chain": "eip155-100000",
"type": "shard"
},
"explorers": [
{
"name": "quarkchain-mainnet",
"url": "https://mainnet.quarkchain.io/7",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "quarkchain-shard-7"
} as const;
+29
View File
@@ -0,0 +1,29 @@
export default {
"name": "VeChain",
"chain": "VeChain",
"rpc": [],
"faucets": [],
"nativeCurrency": {
"name": "VeChain",
"symbol": "VET",
"decimals": 18
},
"infoURL": "https://vechain.org",
"shortName": "vechain",
"chainId": 100009,
"networkId": 100009,
"explorers": [
{
"name": "VeChain Stats",
"url": "https://vechainstats.com",
"standard": "none"
},
{
"name": "VeChain Explorer",
"url": "https://explore.vechain.org",
"standard": "none"
}
],
"testnet": false,
"slug": "vechain"
} as const;
+21
View File
@@ -0,0 +1,21 @@
export default {
"name": "Smart Bitcoin Cash Testnet",
"chain": "smartBCHTest",
"rpc": [
"https://smart-bitcoin-cash-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc-testnet.smartbch.org",
"https://smartbch.devops.cash/testnet"
],
"faucets": [],
"nativeCurrency": {
"name": "Bitcoin Cash Test Token",
"symbol": "BCHT",
"decimals": 18
},
"infoURL": "http://smartbch.org/",
"shortName": "smartbchtest",
"chainId": 10001,
"networkId": 10001,
"testnet": true,
"slug": "smart-bitcoin-cash-testnet"
} as const;
+26
View File
@@ -0,0 +1,26 @@
export default {
"name": "VeChain Testnet",
"chain": "VeChain",
"rpc": [],
"faucets": [
"https://faucet.vecha.in"
],
"nativeCurrency": {
"name": "VeChain",
"symbol": "VET",
"decimals": 18
},
"infoURL": "https://vechain.org",
"shortName": "vechain-testnet",
"chainId": 100010,
"networkId": 100010,
"explorers": [
{
"name": "VeChain Explorer",
"url": "https://explore-testnet.vechain.org",
"standard": "none"
}
],
"testnet": true,
"slug": "vechain-testnet"
} as const;
+22
View File
@@ -0,0 +1,22 @@
export default {
"name": "Klaytn Testnet Baobab",
"chain": "KLAY",
"rpc": [
"https://klaytn-testnet-baobab.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://api.baobab.klaytn.net:8651"
],
"faucets": [
"https://baobab.wallet.klaytn.com/access?next=faucet"
],
"nativeCurrency": {
"name": "KLAY",
"symbol": "KLAY",
"decimals": 18
},
"infoURL": "https://www.klaytn.com/",
"shortName": "Baobab",
"chainId": 1001,
"networkId": 1001,
"testnet": true,
"slug": "klaytn-testnet-baobab"
} as const;
+34
View File
@@ -0,0 +1,34 @@
export default {
"name": "Gon Chain",
"chain": "GonChain",
"icon": {
"url": "ipfs://QmPtiJGaApbW3ATZhPW3pKJpw3iGVrRGsZLWhrDKF9ZK18",
"width": 1024,
"height": 1024,
"format": "png"
},
"rpc": [
"https://gon-chain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://node1.testnet.gaiaopen.network",
"http://database1.gaiaopen.network"
],
"faucets": [],
"nativeCurrency": {
"name": "Gon Token",
"symbol": "GT",
"decimals": 18
},
"infoURL": "",
"shortName": "gon",
"chainId": 10024,
"networkId": 10024,
"explorers": [
{
"name": "Gon Explorer",
"url": "https://gonscan.com",
"standard": "none"
}
],
"testnet": true,
"slug": "gon-chain"
} as const;
+35
View File
@@ -0,0 +1,35 @@
export default {
"name": "T-EKTA",
"title": "EKTA Testnet T-EKTA",
"chain": "T-EKTA",
"rpc": [
"https://t-ekta.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://test.ekta.io:8545"
],
"faucets": [],
"nativeCurrency": {
"name": "T-EKTA",
"symbol": "T-EKTA",
"decimals": 18
},
"infoURL": "https://www.ekta.io",
"shortName": "t-ekta",
"chainId": 1004,
"networkId": 1004,
"icon": {
"url": "ipfs://QmfMd564KUPK8eKZDwGCT71ZC2jMnUZqP6LCtLpup3rHH1",
"width": 2100,
"height": 2100,
"format": "png"
},
"explorers": [
{
"name": "test-ektascan",
"url": "https://test.ektascan.io",
"icon": "ekta",
"standard": "EIP3091"
}
],
"testnet": true,
"slug": "t-ekta"
} as const;
+31
View File
@@ -0,0 +1,31 @@
export default {
"name": "Plian Testnet Subchain 1",
"chain": "Plian",
"rpc": [
"https://plian-testnet-subchain-1.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet.plian.io/child_test"
],
"faucets": [],
"nativeCurrency": {
"name": "Plian Token",
"symbol": "TPI",
"decimals": 18
},
"infoURL": "https://plian.org/",
"shortName": "plian-testnet-l2",
"chainId": 10067275,
"networkId": 10067275,
"explorers": [
{
"name": "piscan",
"url": "https://testnet.plian.org/child_test",
"standard": "EIP3091"
}
],
"parent": {
"chain": "eip155-16658437",
"type": "L2"
},
"testnet": true,
"slug": "plian-testnet-subchain-1"
} as const;
+20
View File
@@ -0,0 +1,20 @@
export default {
"name": "Newton Testnet",
"chain": "NEW",
"rpc": [
"https://newton-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc1.newchain.newtonproject.org"
],
"faucets": [],
"nativeCurrency": {
"name": "Newton",
"symbol": "NEW",
"decimals": 18
},
"infoURL": "https://www.newtonproject.org/",
"shortName": "tnew",
"chainId": 1007,
"networkId": 1007,
"testnet": true,
"slug": "newton-testnet"
} as const;
+34
View File
@@ -0,0 +1,34 @@
export default {
"name": "Eurus Mainnet",
"chain": "EUN",
"rpc": [
"https://eurus.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet.eurus.network/"
],
"faucets": [],
"nativeCurrency": {
"name": "Eurus",
"symbol": "EUN",
"decimals": 18
},
"infoURL": "https://eurus.network",
"shortName": "eun",
"chainId": 1008,
"networkId": 1008,
"icon": {
"url": "ipfs://QmaGd5L9jGPbfyGXBFhu9gjinWJ66YtNrXq8x6Q98Eep9e",
"width": 471,
"height": 471,
"format": "svg"
},
"explorers": [
{
"name": "eurusexplorer",
"url": "https://explorer.eurus.network",
"icon": "eurus",
"standard": "none"
}
],
"testnet": false,
"slug": "eurus"
} as const;
+20
View File
@@ -0,0 +1,20 @@
export default {
"name": "SJATSH",
"chain": "ETH",
"rpc": [
"https://sjatsh.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"http://geth.free.idcfengye.com"
],
"faucets": [],
"nativeCurrency": {
"name": "Ether",
"symbol": "ETH",
"decimals": 18
},
"infoURL": "https://sjis.me",
"shortName": "SJ",
"chainId": 10086,
"networkId": 10086,
"testnet": false,
"slug": "sjatsh"
} as const;
+21
View File
@@ -0,0 +1,21 @@
export default {
"name": "EtherInc",
"chain": "ETI",
"rpc": [
"https://etherinc.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://api.einc.io/jsonrpc/mainnet"
],
"faucets": [],
"nativeCurrency": {
"name": "EtherInc Ether",
"symbol": "ETI",
"decimals": 18
},
"infoURL": "https://einc.io",
"shortName": "eti",
"chainId": 101,
"networkId": 1,
"slip44": 464,
"testnet": false,
"slug": "etherinc"
} as const;
+21
View File
@@ -0,0 +1,21 @@
export default {
"name": "Evrice Network",
"chain": "EVC",
"rpc": [
"https://evrice-network.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://meta.evrice.com"
],
"faucets": [],
"nativeCurrency": {
"name": "Evrice",
"symbol": "EVC",
"decimals": 18
},
"infoURL": "https://evrice.com",
"shortName": "EVC",
"chainId": 1010,
"networkId": 1010,
"slip44": 1020,
"testnet": false,
"slug": "evrice-network"
} as const;
+22
View File
@@ -0,0 +1,22 @@
export default {
"name": "Blockchain Genesis Mainnet",
"chain": "GEN",
"rpc": [
"https://blockchain-genesis.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://eu.mainnet.xixoio.com",
"https://us.mainnet.xixoio.com",
"https://asia.mainnet.xixoio.com"
],
"faucets": [],
"nativeCurrency": {
"name": "GEN",
"symbol": "GEN",
"decimals": 18
},
"infoURL": "https://www.xixoio.com/",
"shortName": "GEN",
"chainId": 10101,
"networkId": 10101,
"testnet": false,
"slug": "blockchain-genesis"
} as const;
+35
View File
@@ -0,0 +1,35 @@
export default {
"name": "Soverun Testnet",
"chain": "SVRN",
"icon": {
"url": "ipfs://QmTYazUzgY9Nn2mCjWwFUSLy3dG6i2PvALpwCNQvx1zXyi",
"width": 1154,
"height": 1154,
"format": "png"
},
"rpc": [
"https://soverun-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc.soverun.com"
],
"faucets": [
"https://faucet.soverun.com"
],
"nativeCurrency": {
"name": "Soverun",
"symbol": "SVRN",
"decimals": 18
},
"infoURL": "https://soverun.com",
"shortName": "SVRNt",
"chainId": 101010,
"networkId": 101010,
"explorers": [
{
"name": "Soverun",
"url": "https://testnet.soverun.com",
"standard": "EIP3091"
}
],
"testnet": true,
"slug": "soverun-testnet"
} as const;
+35
View File
@@ -0,0 +1,35 @@
export default {
"name": "Soverun Mainnet",
"chain": "SVRN",
"icon": {
"url": "ipfs://QmTYazUzgY9Nn2mCjWwFUSLy3dG6i2PvALpwCNQvx1zXyi",
"width": 1154,
"height": 1154,
"format": "png"
},
"rpc": [
"https://soverun.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-rpc.soverun.com"
],
"faucets": [
"https://faucet.soverun.com"
],
"nativeCurrency": {
"name": "Soverun",
"symbol": "SVRN",
"decimals": 18
},
"infoURL": "https://soverun.com",
"shortName": "SVRNm",
"chainId": 10101010,
"networkId": 10101010,
"explorers": [
{
"name": "Soverun",
"url": "https://explorer.soverun.com",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "soverun"
} as const;
+20
View File
@@ -0,0 +1,20 @@
export default {
"name": "Newton",
"chain": "NEW",
"rpc": [
"https://newton.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://global.rpc.mainnet.newtonproject.org"
],
"faucets": [],
"nativeCurrency": {
"name": "Newton",
"symbol": "NEW",
"decimals": 18
},
"infoURL": "https://www.newtonproject.org/",
"shortName": "new",
"chainId": 1012,
"networkId": 1012,
"testnet": false,
"slug": "newton"
} as const;
+28
View File
@@ -0,0 +1,28 @@
export default {
"name": "Web3Games Testnet",
"chain": "Web3Games",
"icon": {
"url": "ipfs://QmUc57w3UTHiWapNW9oQb1dP57ymtdemTTbpvGkjVHBRCo",
"width": 192,
"height": 192,
"format": "png"
},
"rpc": [
"https://web3games-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet-rpc-0.web3games.org/evm",
"https://testnet-rpc-1.web3games.org/evm",
"https://testnet-rpc-2.web3games.org/evm"
],
"faucets": [],
"nativeCurrency": {
"name": "Web3Games",
"symbol": "W3G",
"decimals": 18
},
"infoURL": "https://web3games.org/",
"shortName": "tw3g",
"chainId": 102,
"networkId": 102,
"testnet": true,
"slug": "web3games-testnet"
} as const;
+37
View File
@@ -0,0 +1,37 @@
export default {
"name": "Chiado Testnet",
"chain": "CHI",
"icon": {
"url": "ipfs://bafybeidk4swpgdyqmpz6shd5onvpaujvwiwthrhypufnwr6xh3dausz2dm",
"width": 1800,
"height": 1800,
"format": "png"
},
"rpc": [
"https://chiado-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.chiadochain.net",
"https://rpc.eu-central-2.gateway.fm/v3/gnosis/archival/chiado"
],
"faucets": [
"https://gnosisfaucet.com"
],
"nativeCurrency": {
"name": "Chiado xDAI",
"symbol": "xDAI",
"decimals": 18
},
"infoURL": "https://docs.gnosischain.com",
"shortName": "chi",
"chainId": 10200,
"networkId": 10200,
"explorers": [
{
"name": "blockscout",
"url": "https://blockscout.chiadochain.net",
"icon": "blockscout",
"standard": "EIP3091"
}
],
"testnet": true,
"slug": "chiado-testnet"
} as const;
+17
View File
@@ -0,0 +1,17 @@
export default {
"name": "Sakura",
"chain": "Sakura",
"rpc": [],
"faucets": [],
"nativeCurrency": {
"name": "Sakura",
"symbol": "SKU",
"decimals": 18
},
"infoURL": "https://clover.finance/sakura",
"shortName": "sku",
"chainId": 1022,
"networkId": 1022,
"testnet": false,
"slug": "sakura"
} as const;
+17
View File
@@ -0,0 +1,17 @@
export default {
"name": "Clover Testnet",
"chain": "Clover",
"rpc": [],
"faucets": [],
"nativeCurrency": {
"name": "Clover",
"symbol": "CLV",
"decimals": 18
},
"infoURL": "https://clover.finance",
"shortName": "tclv",
"chainId": 1023,
"networkId": 1023,
"testnet": true,
"slug": "clover-testnet"
} as const;
+20
View File
@@ -0,0 +1,20 @@
export default {
"name": "CLV Parachain",
"chain": "CLV",
"rpc": [
"https://clv-parachain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://api-para.clover.finance"
],
"faucets": [],
"nativeCurrency": {
"name": "CLV",
"symbol": "CLV",
"decimals": 18
},
"infoURL": "https://clv.org",
"shortName": "clv",
"chainId": 1024,
"networkId": 1024,
"testnet": false,
"slug": "clv-parachain"
} as const;
+27
View File
@@ -0,0 +1,27 @@
export default {
"name": "0XTade",
"chain": "0XTade Chain",
"rpc": [
"https://0xtade.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://node.0xtchain.com"
],
"faucets": [],
"nativeCurrency": {
"name": "0XT",
"symbol": "0XT",
"decimals": 18
},
"infoURL": "https://www.0xtrade.finance/",
"shortName": "0xt",
"chainId": 10248,
"networkId": 10248,
"explorers": [
{
"name": "0xtrade Scan",
"url": "https://www.0xtscan.com",
"standard": "none"
}
],
"testnet": false,
"slug": "0xtade"
} as const;
+27
View File
@@ -0,0 +1,27 @@
export default {
"name": "BitTorrent Chain Testnet",
"chain": "BTTC",
"rpc": [
"https://bittorrent-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testrpc.bittorrentchain.io/"
],
"faucets": [],
"nativeCurrency": {
"name": "BitTorrent",
"symbol": "BTT",
"decimals": 18
},
"infoURL": "https://bittorrentchain.io/",
"shortName": "tbtt",
"chainId": 1028,
"networkId": 1028,
"explorers": [
{
"name": "testbttcscan",
"url": "https://testscan.bittorrentchain.io",
"standard": "none"
}
],
"testnet": true,
"slug": "bittorrent-chain-testnet"
} as const;
+33
View File
@@ -0,0 +1,33 @@
export default {
"name": "Conflux eSpace",
"chain": "Conflux",
"rpc": [
"https://conflux-espace.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://evm.confluxrpc.com"
],
"faucets": [],
"nativeCurrency": {
"name": "CFX",
"symbol": "CFX",
"decimals": 18
},
"infoURL": "https://confluxnetwork.org",
"shortName": "cfx",
"chainId": 1030,
"networkId": 1030,
"icon": {
"url": "ipfs://bafkreifj7n24u2dslfijfihwqvpdeigt5aj3k3sxv6s35lv75sxsfr3ojy",
"width": 460,
"height": 576,
"format": "png"
},
"explorers": [
{
"name": "Conflux Scan",
"url": "https://evm.confluxscan.net",
"standard": "none"
}
],
"testnet": false,
"slug": "conflux-espace"
} as const;
+35
View File
@@ -0,0 +1,35 @@
export default {
"name": "Crystaleum",
"chain": "crystal",
"rpc": [
"https://crystaleum.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://evm.cryptocurrencydevs.org",
"https://rpc.crystaleum.org"
],
"faucets": [],
"nativeCurrency": {
"name": "CRFI",
"symbol": "◈",
"decimals": 18
},
"infoURL": "https://crystaleum.org",
"shortName": "CRFI",
"chainId": 103090,
"networkId": 1,
"icon": {
"url": "ipfs://Qmbry1Uc6HnXmqFNXW5dFJ7To8EezCCjNr4TqqvAyzXS4h",
"width": 150,
"height": 150,
"format": "png"
},
"explorers": [
{
"name": "blockscout",
"url": "https://scan.crystaleum.org",
"icon": "crystal",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "crystaleum"
} as const;
+27
View File
@@ -0,0 +1,27 @@
export default {
"name": "Proxy Network Testnet",
"chain": "Proxy Network",
"rpc": [
"https://proxy-network-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"http://128.199.94.183:8041"
],
"faucets": [],
"nativeCurrency": {
"name": "PRX",
"symbol": "PRX",
"decimals": 18
},
"infoURL": "https://theproxy.network",
"shortName": "prx",
"chainId": 1031,
"networkId": 1031,
"explorers": [
{
"name": "proxy network testnet",
"url": "http://testnet-explorer.theproxy.network",
"standard": "EIP3091"
}
],
"testnet": true,
"slug": "proxy-network-testnet"
} as const;
+36
View File
@@ -0,0 +1,36 @@
export default {
"name": "Bronos Testnet",
"chain": "Bronos",
"rpc": [
"https://bronos-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://evm-testnet.bronos.org"
],
"faucets": [
"https://faucet.bronos.org"
],
"nativeCurrency": {
"name": "tBRO",
"symbol": "tBRO",
"decimals": 18
},
"infoURL": "https://bronos.org",
"shortName": "bronos-testnet",
"chainId": 1038,
"networkId": 1038,
"icon": {
"url": "ipfs://bafybeifkgtmhnq4sxu6jn22i7ass7aih6ubodr77k6ygtu4tjbvpmkw2ga",
"width": 500,
"height": 500,
"format": "png"
},
"explorers": [
{
"name": "Bronos Testnet Explorer",
"url": "https://tbroscan.bronos.org",
"standard": "none",
"icon": "bronos"
}
],
"testnet": true,
"slug": "bronos-testnet"
} as const;
+31
View File
@@ -0,0 +1,31 @@
export default {
"name": "Bronos Mainnet",
"chain": "Bronos",
"rpc": [],
"faucets": [],
"nativeCurrency": {
"name": "BRO",
"symbol": "BRO",
"decimals": 18
},
"infoURL": "https://bronos.org",
"shortName": "bronos-mainnet",
"chainId": 1039,
"networkId": 1039,
"icon": {
"url": "ipfs://bafybeifkgtmhnq4sxu6jn22i7ass7aih6ubodr77k6ygtu4tjbvpmkw2ga",
"width": 500,
"height": 500,
"format": "png"
},
"explorers": [
{
"name": "Bronos Explorer",
"url": "https://broscan.bronos.org",
"standard": "none",
"icon": "bronos"
}
],
"testnet": false,
"slug": "bronos"
} as const;
+34
View File
@@ -0,0 +1,34 @@
export default {
"name": "Kaiba Lightning Chain Testnet",
"chain": "tKLC",
"rpc": [
"https://kaiba-lightning-chain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://klc.live/"
],
"faucets": [],
"nativeCurrency": {
"name": "Kaiba Testnet Token",
"symbol": "tKAIBA",
"decimals": 18
},
"infoURL": "https://kaibadefi.com",
"shortName": "tklc",
"chainId": 104,
"networkId": 104,
"icon": {
"url": "ipfs://bafybeihbsw3ky7yf6llpww6fabo4dicotcgwjpefscoxrppstjx25dvtea",
"width": 932,
"height": 932,
"format": "png"
},
"explorers": [
{
"name": "kaibascan",
"url": "https://kaibascan.io",
"icon": "kaibascan",
"standard": "EIP3091"
}
],
"testnet": true,
"slug": "kaiba-lightning-chain-testnet"
} as const;
+33
View File
@@ -0,0 +1,33 @@
export default {
"name": "Web3Games Devnet",
"chain": "Web3Games",
"icon": {
"url": "ipfs://QmUc57w3UTHiWapNW9oQb1dP57ymtdemTTbpvGkjVHBRCo",
"width": 192,
"height": 192,
"format": "png"
},
"rpc": [
"https://web3games-devnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://devnet.web3games.org/evm"
],
"faucets": [],
"nativeCurrency": {
"name": "Web3Games",
"symbol": "W3G",
"decimals": 18
},
"infoURL": "https://web3games.org/",
"shortName": "dw3g",
"chainId": 105,
"networkId": 105,
"explorers": [
{
"name": "Web3Games Explorer",
"url": "https://explorer-devnet.web3games.org",
"standard": "none"
}
],
"testnet": false,
"slug": "web3games-devnet"
} as const;
+33
View File
@@ -0,0 +1,33 @@
export default {
"name": "Numbers Mainnet",
"chain": "NUM",
"icon": {
"url": "ipfs://bafkreie3ba6ofosjqqiya6empkyw6u5xdrtcfzi2evvyt4u6utzeiezyhi",
"width": 1500,
"height": 1500,
"format": "png"
},
"rpc": [
"https://numbers.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnetrpc.num.network"
],
"faucets": [],
"nativeCurrency": {
"name": "NUM Token",
"symbol": "NUM",
"decimals": 18
},
"infoURL": "https://numbersprotocol.io",
"shortName": "Jade",
"chainId": 10507,
"networkId": 10507,
"explorers": [
{
"name": "ethernal",
"url": "https://mainnet.num.network",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "numbers"
} as const;
+36
View File
@@ -0,0 +1,36 @@
export default {
"name": "Numbers Testnet",
"chain": "NUM",
"icon": {
"url": "ipfs://bafkreie3ba6ofosjqqiya6empkyw6u5xdrtcfzi2evvyt4u6utzeiezyhi",
"width": 1500,
"height": 1500,
"format": "png"
},
"rpc": [
"https://numbers-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnetrpc.num.network"
],
"faucets": [
"https://faucet.avax.network/?subnet=num",
"https://faucet.num.network"
],
"nativeCurrency": {
"name": "NUM Token",
"symbol": "NUM",
"decimals": 18
},
"infoURL": "https://numbersprotocol.io",
"shortName": "Snow",
"chainId": 10508,
"networkId": 10508,
"explorers": [
{
"name": "ethernal",
"url": "https://testnet.num.network",
"standard": "EIP3091"
}
],
"testnet": true,
"slug": "numbers-testnet"
} as const;
+34
View File
@@ -0,0 +1,34 @@
export default {
"name": "Velas EVM Mainnet",
"chain": "Velas",
"icon": {
"url": "ipfs://QmNXiCXJxEeBd7ZYGYjPSMTSdbDd2nfodLC677gUfk9ku5",
"width": 924,
"height": 800,
"format": "png"
},
"rpc": [
"https://velas-evm.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://evmexplorer.velas.com/rpc",
"https://explorer.velas.com/rpc"
],
"faucets": [],
"nativeCurrency": {
"name": "Velas",
"symbol": "VLX",
"decimals": 18
},
"infoURL": "https://velas.com",
"shortName": "vlx",
"chainId": 106,
"networkId": 106,
"explorers": [
{
"name": "Velas Explorer",
"url": "https://evmexplorer.velas.com",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "velas-evm"
} as const;
+35
View File
@@ -0,0 +1,35 @@
export default {
"name": "Nebula Testnet",
"chain": "NTN",
"icon": {
"url": "ipfs://QmeFaJtQqTKKuXQR7ysS53bLFPasFBcZw445cvYJ2HGeTo",
"width": 512,
"height": 512,
"format": "png"
},
"rpc": [
"https://nebula-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://testnet.rpc.novanetwork.io:9070"
],
"faucets": [
"https://faucet.novanetwork.io"
],
"nativeCurrency": {
"name": "Nebula X",
"symbol": "NBX",
"decimals": 18
},
"infoURL": "https://novanetwork.io",
"shortName": "ntn",
"chainId": 107,
"networkId": 107,
"explorers": [
{
"name": "nebulatestnet",
"url": "https://explorer.novanetwork.io",
"standard": "EIP3091"
}
],
"testnet": true,
"slug": "nebula-testnet"
} as const;
+32
View File
@@ -0,0 +1,32 @@
export default {
"name": "ThunderCore Mainnet",
"chain": "TT",
"rpc": [
"https://thundercore.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://mainnet-rpc.thundercore.com",
"https://mainnet-rpc.thundertoken.net",
"https://mainnet-rpc.thundercore.io"
],
"faucets": [
"https://faucet.thundercore.com"
],
"nativeCurrency": {
"name": "ThunderCore Token",
"symbol": "TT",
"decimals": 18
},
"infoURL": "https://thundercore.com",
"shortName": "TT",
"chainId": 108,
"networkId": 108,
"slip44": 1001,
"explorers": [
{
"name": "thundercore-viewblock",
"url": "https://viewblock.io/thundercore",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "thundercore"
} as const;
+34
View File
@@ -0,0 +1,34 @@
export default {
"name": "CryptoCoinPay",
"chain": "CCP",
"rpc": [
"https://cryptocoinpay.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"http://node106.cryptocoinpay.info:8545",
"ws://node106.cryptocoinpay.info:8546"
],
"faucets": [],
"icon": {
"url": "ipfs://QmPw1ixYYeXvTiRWoCt2jWe4YMd3B5o7TzL18SBEHXvhXX",
"width": 200,
"height": 200,
"format": "png"
},
"nativeCurrency": {
"name": "CryptoCoinPay",
"symbol": "CCP",
"decimals": 18
},
"infoURL": "https://www.cryptocoinpay.co",
"shortName": "CCP",
"chainId": 10823,
"networkId": 10823,
"explorers": [
{
"name": "CCP Explorer",
"url": "https://cryptocoinpay.info",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "cryptocoinpay"
} as const;
+42
View File
@@ -0,0 +1,42 @@
export default {
"name": "Metis Andromeda Mainnet",
"chain": "ETH",
"rpc": [
"https://metis-andromeda.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://andromeda.metis.io/?owner=1088"
],
"faucets": [],
"nativeCurrency": {
"name": "Metis",
"symbol": "METIS",
"decimals": 18
},
"infoURL": "https://www.metis.io",
"shortName": "metis-andromeda",
"chainId": 1088,
"networkId": 1088,
"explorers": [
{
"name": "blockscout",
"url": "https://andromeda-explorer.metis.io",
"standard": "EIP3091"
}
],
"parent": {
"type": "L2",
"chain": "eip155-1",
"bridges": [
{
"url": "https://bridge.metis.io"
}
]
},
"icon": {
"url": "ipfs://QmbWKNucbMtrMPPkHG5ZmVmvNUo8CzqHHcrpk1C2BVQsEG/2022_H-Brand_Stacked_WhiteGreen.svg",
"format": "svg",
"height": 512,
"width": 512
},
"testnet": false,
"slug": "metis-andromeda"
} as const;
+30
View File
@@ -0,0 +1,30 @@
export default {
"name": "BROChain Mainnet",
"chain": "BRO",
"rpc": [
"https://brochain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.brochain.org",
"http://rpc.brochain.org",
"https://rpc.brochain.org/mainnet",
"http://rpc.brochain.org/mainnet"
],
"faucets": [],
"nativeCurrency": {
"name": "Brother",
"symbol": "BRO",
"decimals": 18
},
"infoURL": "https://brochain.org",
"shortName": "bro",
"chainId": 108801,
"networkId": 108801,
"explorers": [
{
"name": "BROChain Explorer",
"url": "https://explorer.brochain.org",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "brochain"
} as const;
+36
View File
@@ -0,0 +1,36 @@
export default {
"name": "Quadrans Blockchain",
"chain": "QDC",
"icon": {
"url": "ipfs://QmZFiYHnE4TrezPz8wSap9nMxG6m98w4fv7ataj2TfLNck",
"width": 1024,
"height": 1024,
"format": "png"
},
"rpc": [
"https://quadrans-blockchain.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpc.quadrans.io",
"https://rpcna.quadrans.io",
"https://rpceu.quadrans.io"
],
"faucets": [],
"nativeCurrency": {
"name": "Quadrans Coin",
"symbol": "QDC",
"decimals": 18
},
"infoURL": "https://quadrans.io",
"shortName": "quadrans",
"chainId": 10946,
"networkId": 10946,
"explorers": [
{
"name": "explorer",
"url": "https://explorer.quadrans.io",
"icon": "quadrans",
"standard": "EIP3091"
}
],
"testnet": false,
"slug": "quadrans-blockchain"
} as const;
+37
View File
@@ -0,0 +1,37 @@
export default {
"name": "Quadrans Blockchain Testnet",
"chain": "tQDC",
"icon": {
"url": "ipfs://QmZFiYHnE4TrezPz8wSap9nMxG6m98w4fv7ataj2TfLNck",
"width": 1024,
"height": 1024,
"format": "png"
},
"rpc": [
"https://quadrans-blockchain-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://rpctest.quadrans.io",
"https://rpctest2.quadrans.io"
],
"faucets": [
"https://faucetpage.quadrans.io"
],
"nativeCurrency": {
"name": "Quadrans Testnet Coin",
"symbol": "tQDC",
"decimals": 18
},
"infoURL": "https://quadrans.io",
"shortName": "quadranstestnet",
"chainId": 10947,
"networkId": 10947,
"explorers": [
{
"name": "explorer",
"url": "https://explorer.testnet.quadrans.io",
"icon": "quadrans",
"standard": "EIP3091"
}
],
"testnet": true,
"slug": "quadrans-blockchain-testnet"
} as const;
+25
View File
@@ -0,0 +1,25 @@
export default {
"name": "MOAC mainnet",
"chain": "MOAC",
"rpc": [],
"faucets": [],
"nativeCurrency": {
"name": "MOAC",
"symbol": "mc",
"decimals": 18
},
"infoURL": "https://moac.io",
"shortName": "moac",
"chainId": 1099,
"networkId": 1099,
"slip44": 314,
"explorers": [
{
"name": "moac explorer",
"url": "https://explorer.moac.io",
"standard": "none"
}
],
"testnet": false,
"slug": "moac"
} as const;
+21
View File
@@ -0,0 +1,21 @@
export default {
"name": "Metadium Mainnet",
"chain": "META",
"rpc": [
"https://metadium.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://api.metadium.com/prod"
],
"faucets": [],
"nativeCurrency": {
"name": "Metadium Mainnet Ether",
"symbol": "META",
"decimals": 18
},
"infoURL": "https://metadium.com",
"shortName": "meta",
"chainId": 11,
"networkId": 11,
"slip44": 916,
"testnet": false,
"slug": "metadium"
} as const;
+20
View File
@@ -0,0 +1,20 @@
export default {
"name": "Proton Testnet",
"chain": "XPR",
"rpc": [
"https://proton-testnet.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"https://protontestnet.greymass.com/"
],
"faucets": [],
"nativeCurrency": {
"name": "Proton",
"symbol": "XPR",
"decimals": 4
},
"infoURL": "https://protonchain.com",
"shortName": "xpr",
"chainId": 110,
"networkId": 110,
"testnet": true,
"slug": "proton-testnet"
} as const;
+20
View File
@@ -0,0 +1,20 @@
export default {
"name": "QuarkChain Devnet Root",
"chain": "QuarkChain",
"rpc": [
"https://quarkchain-devnet-root.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
"http://jrpc.devnet.quarkchain.io:38391"
],
"faucets": [],
"nativeCurrency": {
"name": "QKC",
"symbol": "QKC",
"decimals": 18
},
"infoURL": "https://www.quarkchain.io",
"shortName": "qkc-d-r",
"chainId": 110000,
"networkId": 110000,
"testnet": false,
"slug": "quarkchain-devnet-root"
} as const;

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