Compare commits
41
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
149160bec6 | ||
|
|
55d519b537 | ||
|
|
49d4494008 | ||
|
|
44680c65c1 | ||
|
|
0e19911668 | ||
|
|
ec149f3834 | ||
|
|
b64c8e7b6e | ||
|
|
795a59e436 | ||
|
|
82e89116af | ||
|
|
bdb919f32a | ||
|
|
a692154924 | ||
|
|
1d327b6bb7 | ||
|
|
8e0a3cea1e | ||
|
|
86105c9d91 | ||
|
|
cea736c7e4 | ||
|
|
9f817cf812 | ||
|
|
b3dd90b886 | ||
|
|
bb80b1d758 | ||
|
|
5b0c37a0d9 | ||
|
|
d77b6f67ad | ||
|
|
2c4af9a85d | ||
|
|
47de345b60 | ||
|
|
7485f6bb41 | ||
|
|
c280112bba | ||
|
|
664082e5e6 | ||
|
|
24a3ee49d1 | ||
|
|
5525a0e336 | ||
|
|
35acbcd10e | ||
|
|
83d1d6f397 | ||
|
|
1f3e5c4726 | ||
|
|
6bf1dad28b | ||
|
|
75e66b189d | ||
|
|
d2541e5d2c | ||
|
|
0bce535094 | ||
|
|
88886acd76 | ||
|
|
1d669547fb | ||
|
|
9a031bb19f | ||
|
|
e6fce1f2e6 | ||
|
|
3c13fe4423 | ||
|
|
f916d7a453 | ||
|
|
7882b22306 |
@@ -1,5 +1,26 @@
|
||||
# @thirdweb-dev/auth
|
||||
|
||||
## 4.1.74
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/wallets@2.5.16
|
||||
|
||||
## 4.1.73
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/wallets@2.5.15
|
||||
|
||||
## 4.1.72
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/wallets@2.5.14
|
||||
|
||||
## 4.1.71
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/auth",
|
||||
"version": "4.1.71",
|
||||
"version": "4.1.74",
|
||||
"main": "dist/thirdweb-dev-auth.cjs.js",
|
||||
"module": "dist/thirdweb-dev-auth.esm.js",
|
||||
"browser": {
|
||||
|
||||
@@ -9,16 +9,13 @@ require("dotenv-mono").load();
|
||||
|
||||
describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
"Wallet Authentication - EVM - Smart Wallet",
|
||||
{
|
||||
timeout: 60000,
|
||||
},
|
||||
async () => {
|
||||
let adminWallet: any, signerWallet: any, attackerWallet: any;
|
||||
let auth: ThirdwebAuth;
|
||||
|
||||
beforeAll(async () => {
|
||||
const factoryAddress = "0xbf1C9aA4B1A085f7DA890a44E82B0A1289A40052";
|
||||
const chain = 421614;
|
||||
const factoryAddress = "0x7b5ba9D46b53aae55e2c2E9b38d9AfF9a0b158F8";
|
||||
const chain = 84532;
|
||||
const localWallet = new LocalWallet();
|
||||
await localWallet.generate();
|
||||
const smartWallet = new SmartWallet({
|
||||
@@ -42,7 +39,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
auth.updateWallet(signerWallet);
|
||||
});
|
||||
|
||||
it("Should verify logged in wallet", async () => {
|
||||
it("Should verify logged in wallet", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -51,21 +50,25 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
expect(address).to.equal(await signerWallet.getAddress());
|
||||
});
|
||||
|
||||
it("Should verify logged in wallet with chain ID and expiration", async () => {
|
||||
it("Should verify logged in wallet with chain ID and expiration", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login({
|
||||
expirationTime: new Date(Date.now() + 1000 * 60 * 5),
|
||||
chainId: "421614",
|
||||
chainId: "84532",
|
||||
});
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
const address = await auth.verify(payload, {
|
||||
chainId: "421614",
|
||||
chainId: "84532",
|
||||
});
|
||||
|
||||
expect(address).to.equal(await signerWallet.getAddress());
|
||||
});
|
||||
|
||||
it("Should verify payload with resources", async () => {
|
||||
it("Should verify payload with resources", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login({
|
||||
resources: ["https://example.com", "https://test.com"],
|
||||
});
|
||||
@@ -78,7 +81,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
expect(address).to.equal(await signerWallet.getAddress());
|
||||
});
|
||||
|
||||
it("Should reject payload without necessary resources", async () => {
|
||||
it("Should reject payload without necessary resources", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login({
|
||||
resources: ["https://example.com"],
|
||||
});
|
||||
@@ -96,7 +101,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
}
|
||||
});
|
||||
|
||||
it("Should verify payload with customized statement", async () => {
|
||||
it("Should verify payload with customized statement", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login({
|
||||
statement: "Please sign!",
|
||||
});
|
||||
@@ -109,7 +116,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
expect(address).to.equal(await signerWallet.getAddress());
|
||||
});
|
||||
|
||||
it("Should reject payload with incorrect statement", async () => {
|
||||
it("Should reject payload with incorrect statement", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login({
|
||||
statement: "Please sign!",
|
||||
});
|
||||
@@ -127,7 +136,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
}
|
||||
});
|
||||
|
||||
it("Should reject invalid nonce", async () => {
|
||||
it("Should reject invalid nonce", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -145,7 +156,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
}
|
||||
});
|
||||
|
||||
it("Should accept valid nonce", async () => {
|
||||
it("Should accept valid nonce", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -160,7 +173,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
expect(address).to.equal(await signerWallet.getAddress());
|
||||
});
|
||||
|
||||
it("Should reject payload with incorrect domain", async () => {
|
||||
it("Should reject payload with incorrect domain", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -174,7 +189,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
}
|
||||
});
|
||||
|
||||
it("Should reject expired login payload", async () => {
|
||||
it("Should reject expired login payload", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login({
|
||||
expirationTime: new Date(Date.now() - 1000 * 60 * 5),
|
||||
});
|
||||
@@ -188,7 +205,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
}
|
||||
});
|
||||
|
||||
it("Should reject payload with incorrect chain ID", async () => {
|
||||
it("Should reject payload with incorrect chain ID", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login({
|
||||
chainId: "1",
|
||||
});
|
||||
@@ -206,7 +225,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
}
|
||||
});
|
||||
|
||||
it("Should reject payload with incorrect signer", async () => {
|
||||
it("Should reject payload with incorrect signer", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
payload.payload.address = await attackerWallet.getAddress();
|
||||
|
||||
@@ -219,7 +240,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
}
|
||||
});
|
||||
|
||||
it("Should generate valid authentication token", async () => {
|
||||
it("Should generate valid authentication token", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -229,7 +252,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
expect(user.address).to.equal(await signerWallet.getAddress());
|
||||
});
|
||||
|
||||
it("Should reject token with incorrect domain", async () => {
|
||||
it("Should reject token with incorrect domain", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -245,7 +270,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
}
|
||||
});
|
||||
|
||||
it("Should reject token before invalid before", async () => {
|
||||
it("Should reject token before invalid before", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -261,7 +288,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
}
|
||||
});
|
||||
|
||||
it("Should reject expired authentication token", async () => {
|
||||
it("Should reject expired authentication token", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -277,7 +306,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
}
|
||||
});
|
||||
|
||||
it("Should reject if admin address is not connected wallet address", async () => {
|
||||
it("Should reject if admin address is not connected wallet address", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -294,7 +325,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
}
|
||||
});
|
||||
|
||||
it("Should accept token with valid token ID", async () => {
|
||||
it("Should accept token with valid token ID", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -313,7 +346,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
expect(user.address).to.equal(await signerWallet.getAddress());
|
||||
});
|
||||
|
||||
it("Should reject token with invalid token ID", async () => {
|
||||
it("Should reject token with invalid token ID", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -335,7 +370,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
}
|
||||
});
|
||||
|
||||
it("Should propagate session on token", async () => {
|
||||
it("Should propagate session on token", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -349,7 +386,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
expect(user.session).to.deep.equal({ role: "admin" });
|
||||
});
|
||||
|
||||
it("Should call session callback function", async () => {
|
||||
it("Should call session callback function", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
@@ -368,7 +407,9 @@ describe.runIf(process.env.TW_SECRET_KEY)(
|
||||
});
|
||||
});
|
||||
|
||||
it("Should authenticate with issuer address", async () => {
|
||||
it("Should authenticate with issuer address", {
|
||||
timeout: 240000,
|
||||
}, async () => {
|
||||
const payload = await auth.login();
|
||||
|
||||
auth.updateWallet(adminWallet);
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @thirdweb-dev/chains
|
||||
|
||||
## 0.1.105
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2908](https://github.com/thirdweb-dev/js/pull/2908) [`83d1d6f`](https://github.com/thirdweb-dev/js/commit/83d1d6f397982dfda87a835743a2ef1fecd5d919) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
|
||||
|
||||
## 0.1.104
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2902](https://github.com/thirdweb-dev/js/pull/2902) [`0bce535`](https://github.com/thirdweb-dev/js/commit/0bce5350946d0ce231a65dbad2493d1fbe0c1376) Thanks [@github-actions](https://github.com/apps/github-actions)! - Synced Chains Package
|
||||
|
||||
## 0.1.103
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 10036,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "Innovo Markets Mainnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Innovo Markets Mainnet Token",
|
||||
"symbol": "INN",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 10036,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://10036.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/innovo/mainnet/rpc"
|
||||
],
|
||||
"shortName": "Innovo Markets Mainnet",
|
||||
"slug": "innovo-markets",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,52 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "REBUS",
|
||||
"chainId": 1011,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Rebus EVM Explorer (Blockscout)",
|
||||
"url": "https://evm.rebuschain.com",
|
||||
"standard": "none",
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreifzag46dhp33vb2uldg4htqbqipuqrapjga6ml6pnhn5yibbvb4gq",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Rebus Cosmos Explorer (ping.pub)",
|
||||
"url": "https://cosmos.rebuschain.com",
|
||||
"standard": "none",
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreifzag46dhp33vb2uldg4htqbqipuqrapjga6ml6pnhn5yibbvb4gq",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreifzag46dhp33vb2uldg4htqbqipuqrapjga6ml6pnhn5yibbvb4gq",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.rebuschain.com",
|
||||
"name": "Rebus Mainnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Rebus",
|
||||
"symbol": "REBUS",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1011,
|
||||
"rpc": [
|
||||
"https://1011.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://apievm.rebuschain.com/rpc"
|
||||
],
|
||||
"shortName": "rebus",
|
||||
"slug": "rebus",
|
||||
"testnet": false,
|
||||
"title": "Rebuschain Mainnet"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 10154,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QIM2405023 Interop",
|
||||
"nativeCurrency": {
|
||||
"name": "QIM2405023 Interop Token",
|
||||
"symbol": "UZP",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 10154,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://10154.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QIM2405023 Interop",
|
||||
"slug": "qim2405023-interop",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 10255,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "Coqnet Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Coqnet Testnet Token",
|
||||
"symbol": "COQ",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 10255,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://10255.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/coqnet/testnet/rpc"
|
||||
],
|
||||
"shortName": "Coqnet Testnet",
|
||||
"slug": "coqnet-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -11,7 +11,7 @@ export default {
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://kakarot.org",
|
||||
"name": "Kakarot Sepolia",
|
||||
"name": "Kakarot Sepolia Deprecated",
|
||||
"nativeCurrency": {
|
||||
"name": "Ether",
|
||||
"symbol": "ETH",
|
||||
@@ -24,7 +24,7 @@ export default {
|
||||
"bridges": []
|
||||
},
|
||||
"rpc": [],
|
||||
"shortName": "kkrt-sepolia",
|
||||
"slug": "kakarot-sepolia",
|
||||
"shortName": "kkrt-sepolia-deprecated",
|
||||
"slug": "kakarot-sepolia-deprecated",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,35 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "ETH",
|
||||
"chainId": 1135,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://blockscout.lisk.com",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM",
|
||||
"width": 551,
|
||||
"height": 540,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"infoURL": "https://lisk.com",
|
||||
"name": "Lisk",
|
||||
"nativeCurrency": {
|
||||
"name": "Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1135,
|
||||
"rpc": [
|
||||
"https://1135.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.api.lisk.com"
|
||||
],
|
||||
"shortName": "lisk",
|
||||
"slip44": 134,
|
||||
"slug": "lisk",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -15,6 +15,7 @@ export default {
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmcHdmVr5VRUJq13jnM6tgah5Ge7hn3Dm14eY6vwivJ5ui",
|
||||
"width": 288,
|
||||
@@ -29,8 +30,10 @@ export default {
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 167009,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://167009.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://taiko-hekla.blockpi.network/v1/rpc/public",
|
||||
"https://rpc.hekla.taiko.xyz",
|
||||
"wss://ws.hekla.taiko.xyz"
|
||||
],
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "ETH",
|
||||
"chainId": 1802203764,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Kakarot Scan",
|
||||
"url": "https://sepolia.kakarotscan.org",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmNTZ9nEomAXK6bLxUbMfTS1TvrsN22HU1zTtxHUpMkUhz",
|
||||
"width": 1000,
|
||||
"height": 1000,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://kakarot.org",
|
||||
"name": "Kakarot Sepolia",
|
||||
"nativeCurrency": {
|
||||
"name": "Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1802203764,
|
||||
"parent": {
|
||||
"type": "L2",
|
||||
"chain": "eip155-11155111",
|
||||
"bridges": []
|
||||
},
|
||||
"rpc": [
|
||||
"https://1802203764.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://sepolia-rpc.kakarot.org"
|
||||
],
|
||||
"shortName": "kkrt-sepolia",
|
||||
"slug": "kakarot-sepolia",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 1853,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "HighOctane",
|
||||
"nativeCurrency": {
|
||||
"name": "HighOctane Token",
|
||||
"symbol": "HO",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1853,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://1853.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/highoctane/mainnet/rpc"
|
||||
],
|
||||
"shortName": "HighOctane",
|
||||
"slug": "highoctane",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,54 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "B3 Sepolia",
|
||||
"chainId": 1993,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "blockscout",
|
||||
"url": "https://sepolia.explorer.b3.fun/",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://Qmc6XdDC7FSn2YyBwFXUNVbk9Nmhvn2Bz7iMqCA1ofwhQC/b3-logo-temp-cropped.png",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://faucet.b3.fun/"
|
||||
],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "ipfs://Qmc6XdDC7FSn2YyBwFXUNVbk9Nmhvn2Bz7iMqCA1ofwhQC/b3-logo-temp-cropped.png",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://docs.b3.fun/",
|
||||
"name": "B3 Sepolia",
|
||||
"nativeCurrency": {
|
||||
"name": "ETH",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 1993,
|
||||
"parent": {
|
||||
"type": "L3",
|
||||
"chain": "eip155-1",
|
||||
"bridges": [
|
||||
{
|
||||
"url": "https://bridge.b3.fun/"
|
||||
}
|
||||
]
|
||||
},
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://1993.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://sepolia.b3.fun/http"
|
||||
],
|
||||
"shortName": "b3-sepolia",
|
||||
"slug": "b3-sepolia",
|
||||
"testnet": true,
|
||||
"title": "B3 Sepolia"
|
||||
} as const satisfies Chain;
|
||||
@@ -5,7 +5,7 @@ export default {
|
||||
"explorers": [
|
||||
{
|
||||
"name": "edexa-testnet",
|
||||
"url": "https://explorer.testnet.edexa.com",
|
||||
"url": "https://explorer.testnet.edexa.network",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
@@ -18,7 +18,7 @@ export default {
|
||||
"height": 1042,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://edexa.com/",
|
||||
"infoURL": "https://edexa.network/",
|
||||
"name": "edeXa Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "EDEXA",
|
||||
@@ -28,7 +28,7 @@ export default {
|
||||
"networkId": 1995,
|
||||
"rpc": [
|
||||
"https://1995.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://testnet.edexa.com/rpc",
|
||||
"https://testnet.edexa.network/rpc",
|
||||
"https://io-dataseed1.testnet.edexa.io-market.com/rpc"
|
||||
],
|
||||
"shortName": "edx",
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "TEL",
|
||||
"chainId": 2017,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "telscan",
|
||||
"url": "https://telscan.io",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreih4obvrymfdqohzhiafhvpcy6zwqbgpfm26aahrv3qx2dtcei7hk4",
|
||||
"width": 79,
|
||||
"height": 80,
|
||||
"format": "svg"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [
|
||||
"https://telcoin.network/faucet"
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreih4obvrymfdqohzhiafhvpcy6zwqbgpfm26aahrv3qx2dtcei7hk4",
|
||||
"width": 79,
|
||||
"height": 80,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://telcoin.network",
|
||||
"name": "Adiri",
|
||||
"nativeCurrency": {
|
||||
"name": "Telcoin",
|
||||
"symbol": "TEL",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 2017,
|
||||
"rpc": [
|
||||
"https://2017.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.telcoin.network",
|
||||
"https://adiri.tel",
|
||||
"https://node1.telcoin.network",
|
||||
"https://node2.telcoin.network",
|
||||
"https://node3.telcoin.network",
|
||||
"https://node4.telcoin.network"
|
||||
],
|
||||
"shortName": "tel",
|
||||
"slip44": 1,
|
||||
"slug": "adiri",
|
||||
"testnet": true,
|
||||
"title": "Telcoin Network Testnet"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 21178,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI0430I2",
|
||||
"nativeCurrency": {
|
||||
"name": "QI0430I2 Token",
|
||||
"symbol": "ETI",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 21178,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://21178.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QI0430I2",
|
||||
"slug": "qi0430i2",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,27 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Oneness",
|
||||
"chainId": 2140,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "oneness-mainnet",
|
||||
"url": "https://scan.onenesslabs.io",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"name": "Oneness Network",
|
||||
"nativeCurrency": {
|
||||
"name": "BTC",
|
||||
"symbol": "BTC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 2140,
|
||||
"rpc": [
|
||||
"https://2140.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.onenesslabs.io/"
|
||||
],
|
||||
"shortName": "oneness",
|
||||
"slug": "oneness-network",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,27 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Oneness-Testnet",
|
||||
"chainId": 2141,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "oneness-testnet",
|
||||
"url": "https://scan.testnet.onenesslabs.io",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"name": "Oneness TestNet",
|
||||
"nativeCurrency": {
|
||||
"name": "BTC",
|
||||
"symbol": "BTC",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 2141,
|
||||
"rpc": [
|
||||
"https://2141.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.testnet.onenesslabs.io/"
|
||||
],
|
||||
"shortName": "oneness-testnet",
|
||||
"slug": "oneness-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -25,7 +25,7 @@ export default {
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://atleta.network",
|
||||
"name": "Atleta Testnet",
|
||||
"name": "Atleta Olympia",
|
||||
"nativeCurrency": {
|
||||
"name": "Atla",
|
||||
"symbol": "ATLA",
|
||||
@@ -33,10 +33,12 @@ export default {
|
||||
},
|
||||
"networkId": 2340,
|
||||
"rpc": [
|
||||
"wss://testnet-rpc.atleta.network:9944"
|
||||
"https://2340.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"wss://testnet-rpc.atleta.network:9944",
|
||||
"https://testnet-rpc.atleta.network:9944"
|
||||
],
|
||||
"shortName": "atla",
|
||||
"slip44": 1,
|
||||
"slug": "atleta-testnet",
|
||||
"slug": "atleta-olympia",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -23,8 +23,10 @@ export default {
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 25,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://25.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://cronos.blockpi.network/v1/rpc/public",
|
||||
"https://evm.cronos.org",
|
||||
"https://cronos-evm-rpc.publicnode.com",
|
||||
"wss://cronos-evm-rpc.publicnode.com",
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 25284,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QIM2405021",
|
||||
"nativeCurrency": {
|
||||
"name": "QIM2405021 Token",
|
||||
"symbol": "UZP",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 25284,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://25284.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QIM2405021",
|
||||
"slug": "qim2405021",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -2,9 +2,19 @@ import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 27827,
|
||||
"explorers": [],
|
||||
"explorers": [
|
||||
{
|
||||
"name": "ZEROONEMAI Explorer",
|
||||
"url": "https://subnets.avax.network/zeroonemai",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"features": [
|
||||
{
|
||||
"name": "EIP1559"
|
||||
}
|
||||
],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
|
||||
@@ -0,0 +1,52 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "REBUS",
|
||||
"chainId": 3033,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "Rebus EVM Explorer (Blockscout)",
|
||||
"url": "https://evm.testnet.rebus.money",
|
||||
"standard": "none",
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreifzag46dhp33vb2uldg4htqbqipuqrapjga6ml6pnhn5yibbvb4gq",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Rebus Cosmos Explorer (ping.pub)",
|
||||
"url": "https://testnet.rebus.money/rebustestnet",
|
||||
"standard": "none",
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreifzag46dhp33vb2uldg4htqbqipuqrapjga6ml6pnhn5yibbvb4gq",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreifzag46dhp33vb2uldg4htqbqipuqrapjga6ml6pnhn5yibbvb4gq",
|
||||
"width": 512,
|
||||
"height": 512,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.rebuschain.com",
|
||||
"name": "Rebus Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Rebus",
|
||||
"symbol": "REBUS",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 3033,
|
||||
"rpc": [
|
||||
"https://3033.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://testnet.rebus.money/rpc"
|
||||
],
|
||||
"shortName": "rebus-testnet",
|
||||
"slug": "rebus-testnet",
|
||||
"testnet": true,
|
||||
"title": "Rebuschain Testnet"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,32 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "MOVE",
|
||||
"chainId": 3073,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "mevm explorer",
|
||||
"url": "https://explorer.movementlabs.xyz",
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmWRAor77N6VyjJiQgtsEE7h9Bd1Q7vtRveTYv2A6wZyAT",
|
||||
"width": 1546,
|
||||
"height": 1546,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://movementlabs.xyz",
|
||||
"name": "Movement EVM",
|
||||
"nativeCurrency": {
|
||||
"name": "Move",
|
||||
"symbol": "MOVE",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 3073,
|
||||
"rpc": [],
|
||||
"shortName": "move",
|
||||
"slug": "movement-evm",
|
||||
"status": "incubating",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,32 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "MOVE",
|
||||
"chainId": 30730,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "mevm explorer",
|
||||
"url": "https://explorer.movementlabs.xyz",
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmWRAor77N6VyjJiQgtsEE7h9Bd1Q7vtRveTYv2A6wZyAT",
|
||||
"width": 1546,
|
||||
"height": 1546,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://movementlabs.xyz",
|
||||
"name": "Movement EVM Legacy",
|
||||
"nativeCurrency": {
|
||||
"name": "Move",
|
||||
"symbol": "MOVE",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 30730,
|
||||
"rpc": [],
|
||||
"shortName": "moveleg",
|
||||
"slug": "movement-evm-legacy",
|
||||
"status": "incubating",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,32 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "MOVE",
|
||||
"chainId": 30731,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "mevm explorer",
|
||||
"url": "https://explorer.movementlabs.xyz",
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmWRAor77N6VyjJiQgtsEE7h9Bd1Q7vtRveTYv2A6wZyAT",
|
||||
"width": 1546,
|
||||
"height": 1546,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://movementlabs.xyz",
|
||||
"name": "Movement EVM Devnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Move",
|
||||
"symbol": "MOVE",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 30731,
|
||||
"rpc": [],
|
||||
"shortName": "movedev",
|
||||
"slug": "movement-evm-devnet",
|
||||
"status": "incubating",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,32 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "MOVE",
|
||||
"chainId": 30732,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "mevm explorer",
|
||||
"url": "https://explorer.movementlabs.xyz",
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmWRAor77N6VyjJiQgtsEE7h9Bd1Q7vtRveTYv2A6wZyAT",
|
||||
"width": 1546,
|
||||
"height": 1546,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://movementlabs.xyz",
|
||||
"name": "Movement EVM Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Move",
|
||||
"symbol": "MOVE",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 30732,
|
||||
"rpc": [],
|
||||
"shortName": "movetest",
|
||||
"slug": "movement-evm-testnet",
|
||||
"status": "incubating",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -14,8 +14,8 @@ export default {
|
||||
"networkId": 3100,
|
||||
"rpc": [
|
||||
"https://3100.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://fraa-dancebox-3043-rpc.a.dancebox.tanssi.network",
|
||||
"wss://fraa-dancebox-3043-rpc.a.dancebox.tanssi.network"
|
||||
"https://fraa-flashbox-2800-rpc.a.stagenet.tanssi.network",
|
||||
"wss://fraa-flashbox-2800-rpc.a.stagenet.tanssi.network"
|
||||
],
|
||||
"shortName": "Immu3",
|
||||
"slug": "immu3-evm",
|
||||
|
||||
@@ -1,29 +1,23 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Web3Q",
|
||||
"chain": "EthStorage",
|
||||
"chainId": 3333,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "w3q-testnet",
|
||||
"url": "https://explorer.testnet.web3q.io",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"infoURL": "https://testnet.web3q.io/home.w3q/",
|
||||
"name": "Web3Q Testnet",
|
||||
"infoURL": "https://ethstorage.io/",
|
||||
"name": "EthStorage Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Web3Q",
|
||||
"symbol": "W3Q",
|
||||
"name": "Ether",
|
||||
"symbol": "ETH",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 3333,
|
||||
"rpc": [
|
||||
"https://3333.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://testnet.web3q.io:8545"
|
||||
"http://testnet.ethstorage.io:9540"
|
||||
],
|
||||
"shortName": "w3q-t",
|
||||
"shortName": "es-t",
|
||||
"slip44": 1,
|
||||
"slug": "web3q-testnet",
|
||||
"slug": "ethstorage-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,34 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "GAN",
|
||||
"chainId": 4048,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "ganscan",
|
||||
"url": "https://ganscan.gpu.net",
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmTYgL4PMNJya3XchuRx99ggNzMHL9kWaZvj3wycdEwpQA",
|
||||
"width": 1248,
|
||||
"height": 1197,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://docs.gpu.net/",
|
||||
"name": "GAN Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "GP Token",
|
||||
"symbol": "GP",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 4048,
|
||||
"rpc": [
|
||||
"https://4048.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.gpu.net"
|
||||
],
|
||||
"shortName": "GANTestnet",
|
||||
"slug": "gan-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -19,9 +19,9 @@ export default {
|
||||
}
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreih6nnkha6t3oiy6qkqpgyb46p3ddg5nff5ayizpum2ljexlc3gc54",
|
||||
"width": 128,
|
||||
"height": 128,
|
||||
"url": "ipfs://bafkreidyrvphfojaf7iev57trxk3sxbo6qikg26pdy66ke4n22dgm52wwa",
|
||||
"width": 320,
|
||||
"height": 320,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.verylabs.io/",
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 46565,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI0430s2",
|
||||
"nativeCurrency": {
|
||||
"name": "QI0430s2 Token",
|
||||
"symbol": "SWS",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 46565,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://46565.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QI0430s2",
|
||||
"slug": "qi0430s2",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 51440,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI0430s4",
|
||||
"nativeCurrency": {
|
||||
"name": "QI0430s4 Token",
|
||||
"symbol": "SWS",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 51440,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://51440.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QI0430s4",
|
||||
"slug": "qi0430s4",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -9,7 +9,9 @@ export default {
|
||||
"standard": "none"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"faucets": [
|
||||
"https://dev.reactive.network/docs/kopli-testnet#faucet"
|
||||
],
|
||||
"features": [
|
||||
{
|
||||
"name": "EIP155"
|
||||
@@ -18,19 +20,27 @@ export default {
|
||||
"name": "EIP1559"
|
||||
}
|
||||
],
|
||||
"icon": {
|
||||
"url": "ipfs://QmZewyubd3zC17pmmGbjix6gFsppYpLsP3ntu3aB7rCJmW",
|
||||
"width": 800,
|
||||
"height": 800,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://reactive.network",
|
||||
"name": "Reactive Network Testnet Kopli",
|
||||
"name": "Reactive Kopli",
|
||||
"nativeCurrency": {
|
||||
"name": "React",
|
||||
"name": "Kopli React",
|
||||
"symbol": "REACT",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 5318008,
|
||||
"rpc": [
|
||||
"https://5318008.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://kopli-rpc.reactive.network"
|
||||
"https://kopli-rpc.reactive.network",
|
||||
"http://kopli-rpc.rkt.ink"
|
||||
],
|
||||
"shortName": "react",
|
||||
"slug": "reactive-network-testnet-kopli",
|
||||
"testnet": true
|
||||
"shortName": "kreact",
|
||||
"slug": "reactive-kopli",
|
||||
"testnet": true,
|
||||
"title": "Reactive Network Testnet Kopli"
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,42 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "DODOchain",
|
||||
"chainId": 53457,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "DODOchain Testnet (Sepolia) Explorer",
|
||||
"url": "https://testnet-scan.dodochain.com",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmQDdZQjpKhrVM62479RTzppUG8QHhHd8Bq4RFYAjN1yf4",
|
||||
"width": 160,
|
||||
"height": 160,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmQDdZQjpKhrVM62479RTzppUG8QHhHd8Bq4RFYAjN1yf4",
|
||||
"width": 160,
|
||||
"height": 160,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://www.dodochain.com",
|
||||
"name": "DODOchain testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Berd",
|
||||
"symbol": "BERD",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 53457,
|
||||
"rpc": [
|
||||
"https://53457.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://dodochain-testnet.alt.technology",
|
||||
"wss://dodochain-testnet.alt.technology/ws"
|
||||
],
|
||||
"shortName": "dodochain",
|
||||
"slug": "dodochain-testnet",
|
||||
"testnet": true,
|
||||
"title": "DODOchain testnet"
|
||||
} as const satisfies Chain;
|
||||
@@ -34,6 +34,7 @@ export default {
|
||||
"networkId": 5424,
|
||||
"rpc": [
|
||||
"https://5424.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://mainnet.edexa.network/rpc",
|
||||
"https://mainnet.edexa.com/rpc",
|
||||
"https://io-dataseed1.mainnet.edexa.io-market.com/rpc"
|
||||
],
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 54688,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI0430I1",
|
||||
"nativeCurrency": {
|
||||
"name": "QI0430I1 Token",
|
||||
"symbol": "ILF",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 54688,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://54688.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QI0430I1",
|
||||
"slug": "qi0430i1",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -2,9 +2,19 @@ import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 56400,
|
||||
"explorers": [],
|
||||
"explorers": [
|
||||
{
|
||||
"name": "TESTNETZER Explorer",
|
||||
"url": "https://subnets-test.avax.network/testnetzer",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"features": [
|
||||
{
|
||||
"name": "EIP1559"
|
||||
}
|
||||
],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 58050,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QaUser0417",
|
||||
"nativeCurrency": {
|
||||
"name": "QaUser0417 Token",
|
||||
"symbol": "HAR",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 58050,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://58050.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QaUser0417",
|
||||
"slug": "qauser0417",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -2,8 +2,26 @@ import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "ETH",
|
||||
"chainId": 60808,
|
||||
"explorers": [],
|
||||
"explorers": [
|
||||
{
|
||||
"name": "bobscout",
|
||||
"url": "https://explorer.gobob.xyz",
|
||||
"standard": "EIP3091",
|
||||
"icon": {
|
||||
"url": "ipfs://QmYtUimyqHkkFxYdbXXRbUqNg2VLPUg6Uu2C2nmFWowiZM",
|
||||
"width": 551,
|
||||
"height": 540,
|
||||
"format": "png"
|
||||
}
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://QmaX5iqQTrJD8TBuvoT97xPMG6LYamjPCPnZUUMh12jc99",
|
||||
"width": 297,
|
||||
"height": 378,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://gobob.xyz",
|
||||
"name": "BOB",
|
||||
"nativeCurrency": {
|
||||
@@ -12,9 +30,22 @@ export default {
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 60808,
|
||||
"rpc": [],
|
||||
"parent": {
|
||||
"type": "L2",
|
||||
"chain": "eip155-1",
|
||||
"bridges": [
|
||||
{
|
||||
"url": "https://app.gobob.xyz"
|
||||
}
|
||||
]
|
||||
},
|
||||
"rpc": [
|
||||
"https://60808.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.gobob.xyz",
|
||||
"wss://rpc.gobob.xyz"
|
||||
],
|
||||
"shortName": "bob",
|
||||
"slug": "bob",
|
||||
"status": "incubating",
|
||||
"status": "active",
|
||||
"testnet": false
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 62040,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI0430s1",
|
||||
"nativeCurrency": {
|
||||
"name": "QI0430s1 Token",
|
||||
"symbol": "SWS",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 62040,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://62040.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QI0430s1",
|
||||
"slug": "qi0430s1",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 64943,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QI0430I1",
|
||||
"nativeCurrency": {
|
||||
"name": "QI0430I1 Token",
|
||||
"symbol": "JIQ",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 64943,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://64943.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QI0430I1",
|
||||
"slug": "qi0430i1-qi0430i1",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 70457,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QaUser9604",
|
||||
"nativeCurrency": {
|
||||
"name": "QaUser9604 Token",
|
||||
"symbol": "CEB",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 70457,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://70457.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QaUser9604",
|
||||
"slug": "qauser9604",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 73486,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QIM2405024 NO INTEROP",
|
||||
"nativeCurrency": {
|
||||
"name": "QIM2405024 NO INTEROP Token",
|
||||
"symbol": "UZP",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 73486,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://73486.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"
|
||||
],
|
||||
"shortName": "QIM2405024 NO INTEROP",
|
||||
"slug": "qim2405024-no-interop",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 939359,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "QR0501T1TS",
|
||||
"nativeCurrency": {
|
||||
"name": "QR0501T1TS Token",
|
||||
"symbol": "ZGM",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 939359,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://939359.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/qr0501t1ts/testnet/rpc"
|
||||
],
|
||||
"shortName": "QR0501T1TS",
|
||||
"slug": "qr0501t1ts",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,30 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "Avalanche",
|
||||
"chainId": 96040,
|
||||
"explorers": [],
|
||||
"faucets": [],
|
||||
"features": [],
|
||||
"icon": {
|
||||
"url": "https://images.ctfassets.net/9bazykntljf6/62CceHSYsRS4D9fgDSkLRB/877cb8f26954e1743ff535fd7fdaf78f/avacloud-placeholder.svg",
|
||||
"width": 256,
|
||||
"height": 256,
|
||||
"format": "svg"
|
||||
},
|
||||
"infoURL": "https://avacloud.io",
|
||||
"name": "FIZIT",
|
||||
"nativeCurrency": {
|
||||
"name": "FIZIT Token",
|
||||
"symbol": "FIZIT",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 96040,
|
||||
"redFlags": [],
|
||||
"rpc": [
|
||||
"https://96040.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://subnets.avax.network/fizit/testnet/rpc"
|
||||
],
|
||||
"shortName": "FIZIT",
|
||||
"slug": "fizit",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -0,0 +1,34 @@
|
||||
import type { Chain } from "../src/types";
|
||||
export default {
|
||||
"chain": "EthXY",
|
||||
"chainId": 979,
|
||||
"explorers": [
|
||||
{
|
||||
"name": "EthXY Testnet Network Explorer",
|
||||
"url": "https://explorer.testnet.ethxy.com",
|
||||
"standard": "EIP3091"
|
||||
}
|
||||
],
|
||||
"faucets": [],
|
||||
"icon": {
|
||||
"url": "ipfs://bafkreihq3b3cqbg2ttlp4dfbgmirrwdw6bbpmmbr5wolddd2izbyqay4xq",
|
||||
"width": 480,
|
||||
"height": 480,
|
||||
"format": "png"
|
||||
},
|
||||
"infoURL": "https://ethxy.com",
|
||||
"name": "EthXY Testnet",
|
||||
"nativeCurrency": {
|
||||
"name": "Settled EthXY Token",
|
||||
"symbol": "SEXY",
|
||||
"decimals": 18
|
||||
},
|
||||
"networkId": 979,
|
||||
"rpc": [
|
||||
"https://979.rpc.thirdweb.com/${THIRDWEB_API_KEY}",
|
||||
"https://rpc.testnet.ethxy.com"
|
||||
],
|
||||
"shortName": "sexyTestnet",
|
||||
"slug": "ethxy-testnet",
|
||||
"testnet": true
|
||||
} as const satisfies Chain;
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/chains",
|
||||
"version": "0.1.103",
|
||||
"version": "0.1.105",
|
||||
"main": "dist/thirdweb-dev-chains.cjs.js",
|
||||
"module": "dist/thirdweb-dev-chains.esm.js",
|
||||
"exports": {
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,5 +1,43 @@
|
||||
# thirdweb
|
||||
|
||||
## 0.13.82
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2934](https://github.com/thirdweb-dev/js/pull/2934) [`bdb919f`](https://github.com/thirdweb-dev/js/commit/bdb919f32ae459608b29dd1e4d511afc226470c6) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Updates the CLI `create` command to use the v5 templates for Next.js and Vite
|
||||
|
||||
Other templates will be updated in the future from within their existing repositories
|
||||
|
||||
Removes React Native starters from the CLI menu
|
||||
Removes JS template support from the CLI
|
||||
|
||||
- [#2945](https://github.com/thirdweb-dev/js/pull/2945) [`b64c8e7`](https://github.com/thirdweb-dev/js/commit/b64c8e7b6efaf09be2afc73b92624c5576a4b24e) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Removes deprecated template options from the CLI, specifically PWA Vite, Express, and React
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/sdk@4.0.76
|
||||
- @thirdweb-dev/wallets@2.5.16
|
||||
- @thirdweb-dev/auth@4.1.74
|
||||
|
||||
## 0.13.81
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`83d1d6f`](https://github.com/thirdweb-dev/js/commit/83d1d6f397982dfda87a835743a2ef1fecd5d919)]:
|
||||
- @thirdweb-dev/chains@0.1.105
|
||||
- @thirdweb-dev/sdk@4.0.75
|
||||
- @thirdweb-dev/wallets@2.5.15
|
||||
- @thirdweb-dev/auth@4.1.73
|
||||
|
||||
## 0.13.80
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`0bce535`](https://github.com/thirdweb-dev/js/commit/0bce5350946d0ce231a65dbad2493d1fbe0c1376)]:
|
||||
- @thirdweb-dev/chains@0.1.104
|
||||
- @thirdweb-dev/sdk@4.0.74
|
||||
- @thirdweb-dev/wallets@2.5.14
|
||||
- @thirdweb-dev/auth@4.1.72
|
||||
|
||||
## 0.13.79
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/cli",
|
||||
"main": "dist/cli/index.js",
|
||||
"version": "0.13.79",
|
||||
"version": "0.13.82",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/legacy_packages/cli",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -250,18 +250,12 @@ const main = async () => {
|
||||
)
|
||||
.option("--app", "Create a web3 app.")
|
||||
.option("--contract", "Create a web3 contract project")
|
||||
.option("--ts, --typescript", "Initialize as a TypeScript project.")
|
||||
.option("--js, --javascript", "Initialize as a JavaScript project.")
|
||||
.option("--forge", "Initialize as a Forge project.")
|
||||
.option("--hardhat", "Initialize as a Hardhat project.")
|
||||
.option("--extension", "Create a smart contract extension.")
|
||||
.option("--react", "Initialize as a Create React App project.")
|
||||
.option("--next", "Initialize as a Next.js project.")
|
||||
.option("--vite", "Initialize as a Vite project.")
|
||||
.option("--reactNative", "Initialize as a React Native project.")
|
||||
.option("--express", "Initialize as a Express project.")
|
||||
.option("--node", "Initialize as a Node project.")
|
||||
.option("--pwaVite", "Initialize as a PWA project.")
|
||||
.option(
|
||||
"--use-npm",
|
||||
"Explicitly tell the CLI to bootstrap the app using npm",
|
||||
|
||||
@@ -16,7 +16,6 @@ let contractName: string = "";
|
||||
let projectPath: string = "";
|
||||
let projectType: string = "";
|
||||
let framework: string = "";
|
||||
let language: string = "";
|
||||
let baseContract: string = "";
|
||||
let chain: string = "";
|
||||
let createExtension: boolean = false;
|
||||
@@ -45,78 +44,32 @@ export async function twCreate(
|
||||
|
||||
// case where users use `npx thirdweb create --option` directly
|
||||
if (!projectType && Object.keys(options).length > 0) {
|
||||
if (options.react) {
|
||||
projectType = "app";
|
||||
language = "typescript";
|
||||
framework = "cra";
|
||||
}
|
||||
|
||||
if (options.next) {
|
||||
projectType = "app";
|
||||
language = "typescript";
|
||||
framework = "next";
|
||||
}
|
||||
|
||||
if (options.vite) {
|
||||
projectType = "app";
|
||||
language = "typescript";
|
||||
framework = "vite";
|
||||
}
|
||||
|
||||
if (options.node) {
|
||||
projectType = "app";
|
||||
language = "typescript";
|
||||
framework = "node";
|
||||
}
|
||||
|
||||
if (options.express) {
|
||||
projectType = "app";
|
||||
language = "typescript";
|
||||
framework = "express";
|
||||
}
|
||||
|
||||
if (options.pwaVite) {
|
||||
projectType = "app";
|
||||
language = "typescript";
|
||||
framework = "pwa-vite";
|
||||
}
|
||||
|
||||
if (options.reactNative) {
|
||||
projectType = "app";
|
||||
language = "typescript";
|
||||
framework = "react-native";
|
||||
}
|
||||
}
|
||||
|
||||
if (projectType === "app") {
|
||||
if (options.typescript) {
|
||||
language = "typescript";
|
||||
}
|
||||
if (options.javascript) {
|
||||
language = "javascript";
|
||||
}
|
||||
|
||||
if (options.next) {
|
||||
framework = "next";
|
||||
}
|
||||
if (options.react) {
|
||||
framework = "cra";
|
||||
}
|
||||
if (options.vite) {
|
||||
framework = "vite";
|
||||
}
|
||||
if (options.node) {
|
||||
framework = "node";
|
||||
}
|
||||
if (options.express) {
|
||||
framework = "express";
|
||||
}
|
||||
if (options.reactNative) {
|
||||
framework = "react-native";
|
||||
}
|
||||
if (options.pwaVite) {
|
||||
framework = "pwa-vite";
|
||||
}
|
||||
|
||||
if (options.evm) {
|
||||
chain = "evm";
|
||||
@@ -258,12 +211,7 @@ export async function twCreate(
|
||||
message: CREATE_MESSAGES.framework,
|
||||
choices: [
|
||||
{ title: "Next.js", value: "next" },
|
||||
{ title: "Create React App", value: "cra" },
|
||||
{ title: "Vite", value: "vite" },
|
||||
{ title: "PWA Vite", value: "pwa-vite" },
|
||||
{ title: "React Native", value: "react-native" },
|
||||
{ title: "Node.js", value: "node" },
|
||||
{ title: "Express", value: "express" },
|
||||
],
|
||||
});
|
||||
|
||||
@@ -272,40 +220,6 @@ export async function twCreate(
|
||||
}
|
||||
}
|
||||
|
||||
if (projectType === "app" && !language) {
|
||||
if (framework === "react-native") {
|
||||
const res = await prompts({
|
||||
type: "select",
|
||||
name: "project",
|
||||
message: CREATE_MESSAGES.reactNative,
|
||||
choices: [
|
||||
{ title: "Expo Project", value: "expo" },
|
||||
{ title: "React Native CLI", value: "typescript" },
|
||||
],
|
||||
});
|
||||
|
||||
if (typeof res.project === "string") {
|
||||
language = res.project.trim();
|
||||
}
|
||||
} else if (framework === "pwa-vite" || framework === "pwa-next") {
|
||||
language = "typescript";
|
||||
} else {
|
||||
const res = await prompts({
|
||||
type: "select",
|
||||
name: "language",
|
||||
message: CREATE_MESSAGES.language,
|
||||
choices: [
|
||||
{ title: "JavaScript", value: "javascript" },
|
||||
{ title: "TypeScript", value: "typescript" },
|
||||
],
|
||||
});
|
||||
|
||||
if (typeof res.language === "string") {
|
||||
language = res.language.trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
(projectType === "contract" || projectType === "extension") &&
|
||||
framework !== "forge" &&
|
||||
@@ -330,11 +244,6 @@ export async function twCreate(
|
||||
console.log("Please specify a framework");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (!language) {
|
||||
// Default = JavaScript
|
||||
language = "javascript";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -483,7 +392,6 @@ export async function twCreate(
|
||||
appPath: projectPath,
|
||||
packageManager,
|
||||
framework,
|
||||
language,
|
||||
template,
|
||||
});
|
||||
} else {
|
||||
|
||||
@@ -22,13 +22,11 @@ export async function createApp({
|
||||
appPath,
|
||||
packageManager,
|
||||
framework,
|
||||
language,
|
||||
template,
|
||||
}: {
|
||||
appPath: string;
|
||||
packageManager: PackageManager;
|
||||
framework?: string;
|
||||
language?: string;
|
||||
template?: string;
|
||||
}): Promise<void> {
|
||||
let frameworkPath = "";
|
||||
@@ -45,7 +43,7 @@ export async function createApp({
|
||||
process.exit(1);
|
||||
}
|
||||
} else if (framework) {
|
||||
frameworkPath = `${framework}-${language || "javascript"}-starter`;
|
||||
frameworkPath = `${framework}-starter`;
|
||||
const found = await hasTemplate(frameworkPath);
|
||||
|
||||
if (!found) {
|
||||
@@ -63,7 +61,7 @@ export async function createApp({
|
||||
function isReactNativeCLI() {
|
||||
return (
|
||||
isReactNative &&
|
||||
(language === "typescript" || (template && !template.includes("expo")))
|
||||
(template && !template.includes("expo"))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @thirdweb-dev/contracts-js
|
||||
|
||||
## 1.3.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2904](https://github.com/thirdweb-dev/js/pull/2904) [`1d66954`](https://github.com/thirdweb-dev/js/commit/1d669547fb4f8a873194e0b843a9ca71e7e1504e) Thanks [@kumaryash90](https://github.com/kumaryash90)! - Contracts version 3.15.0
|
||||
|
||||
## 1.3.21
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/contracts-js",
|
||||
"version": "1.3.21",
|
||||
"version": "1.3.22",
|
||||
"main": "dist/thirdweb-dev-contracts-js.cjs.js",
|
||||
"module": "dist/thirdweb-dev-contracts-js.esm.js",
|
||||
"exports": {
|
||||
@@ -147,6 +147,7 @@
|
||||
"./dist/abis/PermissionsLogic.json": "./dist/abis/PermissionsLogic.json",
|
||||
"./dist/abis/Staking20Base.json": "./dist/abis/Staking20Base.json",
|
||||
"./dist/abis/IContext.json": "./dist/abis/IContext.json",
|
||||
"./dist/abis/AccountSeaportBulkSigSupport.json": "./dist/abis/AccountSeaportBulkSigSupport.json",
|
||||
"./dist/abis/Staking20Upgradeable.json": "./dist/abis/Staking20Upgradeable.json",
|
||||
"./dist/abis/Proxy.json": "./dist/abis/Proxy.json",
|
||||
"./dist/abis/ERC1967Proxy.json": "./dist/abis/ERC1967Proxy.json",
|
||||
@@ -194,8 +195,10 @@
|
||||
"./dist/abis/SignatureMintERC20.json": "./dist/abis/SignatureMintERC20.json",
|
||||
"./dist/abis/Staking1155Upgradeable.json": "./dist/abis/Staking1155Upgradeable.json",
|
||||
"./dist/abis/IEntryPoint.json": "./dist/abis/IEntryPoint.json",
|
||||
"./dist/abis/SeaportOrderParser.json": "./dist/abis/SeaportOrderParser.json",
|
||||
"./dist/abis/EnglishAuctionsStorage.json": "./dist/abis/EnglishAuctionsStorage.json",
|
||||
"./dist/abis/IDropERC721_V3.json": "./dist/abis/IDropERC721_V3.json",
|
||||
"./dist/abis/EIP712.json": "./dist/abis/EIP712.json",
|
||||
"./dist/abis/DelayedReveal.json": "./dist/abis/DelayedReveal.json",
|
||||
"./dist/abis/IAccount.json": "./dist/abis/IAccount.json",
|
||||
"./dist/abis/OffersStorage.json": "./dist/abis/OffersStorage.json",
|
||||
@@ -230,6 +233,7 @@
|
||||
"./dist/abis/IAirdropERC1155.json": "./dist/abis/IAirdropERC1155.json",
|
||||
"./dist/abis/OffersLogic.json": "./dist/abis/OffersLogic.json",
|
||||
"./dist/abis/Marketplace.json": "./dist/abis/Marketplace.json",
|
||||
"./dist/abis/Airdrop.json": "./dist/abis/Airdrop.json",
|
||||
"./dist/abis/DirectListingsStorage.json": "./dist/abis/DirectListingsStorage.json",
|
||||
"./dist/abis/TieredDrop.json": "./dist/abis/TieredDrop.json",
|
||||
"./dist/abis/ERC1155Receiver.json": "./dist/abis/ERC1155Receiver.json",
|
||||
@@ -267,6 +271,7 @@
|
||||
"./dist/abis/IERC721Metadata.json": "./dist/abis/IERC721Metadata.json",
|
||||
"./dist/abis/DropSinglePhase_V1.json": "./dist/abis/DropSinglePhase_V1.json",
|
||||
"./dist/abis/PermissionsEnumerable.json": "./dist/abis/PermissionsEnumerable.json",
|
||||
"./dist/abis/SeaportEIP1271.json": "./dist/abis/SeaportEIP1271.json",
|
||||
"./dist/abis/IAccountFactoryCore.json": "./dist/abis/IAccountFactoryCore.json",
|
||||
"./dist/abis/TokenStake.json": "./dist/abis/TokenStake.json",
|
||||
"./dist/abis/AppURI.json": "./dist/abis/AppURI.json",
|
||||
@@ -324,6 +329,7 @@
|
||||
"./dist/abis/IAirdropERC1155Claimable.json": "./dist/abis/IAirdropERC1155Claimable.json",
|
||||
"./dist/abis/IVotes.json": "./dist/abis/IVotes.json",
|
||||
"./dist/abis/PluginMap.json": "./dist/abis/PluginMap.json",
|
||||
"./dist/abis/ECDSA.json": "./dist/abis/ECDSA.json",
|
||||
"./dist/abis/PermissionsEnumerableLogic.json": "./dist/abis/PermissionsEnumerableLogic.json",
|
||||
"./dist/abis/IContractMetadata.json": "./dist/abis/IContractMetadata.json",
|
||||
"./dist/abis/IDropClaimCondition.json": "./dist/abis/IDropClaimCondition.json",
|
||||
@@ -424,7 +430,7 @@
|
||||
"license": "Apache-2.0",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/legacy_packages/contracts-js",
|
||||
"dependencies": {
|
||||
"@thirdweb-dev/contracts": "3.14.0"
|
||||
"@thirdweb-dev/contracts": "3.15.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ethersproject/abi": "^5.7.0",
|
||||
|
||||
@@ -1,5 +1,34 @@
|
||||
# @thirdweb-dev/react-core
|
||||
|
||||
## 4.6.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/sdk@4.0.76
|
||||
- @thirdweb-dev/wallets@2.5.16
|
||||
- @thirdweb-dev/auth@4.1.74
|
||||
|
||||
## 4.6.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`83d1d6f`](https://github.com/thirdweb-dev/js/commit/83d1d6f397982dfda87a835743a2ef1fecd5d919)]:
|
||||
- @thirdweb-dev/chains@0.1.105
|
||||
- @thirdweb-dev/sdk@4.0.75
|
||||
- @thirdweb-dev/wallets@2.5.15
|
||||
- @thirdweb-dev/auth@4.1.73
|
||||
|
||||
## 4.6.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`0bce535`](https://github.com/thirdweb-dev/js/commit/0bce5350946d0ce231a65dbad2493d1fbe0c1376)]:
|
||||
- @thirdweb-dev/chains@0.1.104
|
||||
- @thirdweb-dev/sdk@4.0.74
|
||||
- @thirdweb-dev/wallets@2.5.14
|
||||
- @thirdweb-dev/auth@4.1.72
|
||||
|
||||
## 4.6.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/react-core",
|
||||
"version": "4.6.12",
|
||||
"version": "4.6.15",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/legacy_packages/react-core",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,11 @@
|
||||
# @thirdweb-dev/react-native-compat
|
||||
|
||||
## 0.7.47
|
||||
|
||||
## 0.7.46
|
||||
|
||||
## 0.7.45
|
||||
|
||||
## 0.7.44
|
||||
|
||||
## 0.7.43
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/react-native-compat",
|
||||
"description": "Shims for Thirdweb in React Native Projects",
|
||||
"version": "0.7.44",
|
||||
"version": "0.7.47",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/legacy_packages/react-native-compat",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -1,5 +1,34 @@
|
||||
# @thirdweb-dev/react-native
|
||||
|
||||
## 0.7.47
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/sdk@4.0.76
|
||||
- @thirdweb-dev/react-core@4.6.15
|
||||
- @thirdweb-dev/wallets@2.5.16
|
||||
|
||||
## 0.7.46
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`83d1d6f`](https://github.com/thirdweb-dev/js/commit/83d1d6f397982dfda87a835743a2ef1fecd5d919)]:
|
||||
- @thirdweb-dev/chains@0.1.105
|
||||
- @thirdweb-dev/sdk@4.0.75
|
||||
- @thirdweb-dev/react-core@4.6.14
|
||||
- @thirdweb-dev/wallets@2.5.15
|
||||
|
||||
## 0.7.45
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`0bce535`](https://github.com/thirdweb-dev/js/commit/0bce5350946d0ce231a65dbad2493d1fbe0c1376)]:
|
||||
- @thirdweb-dev/chains@0.1.104
|
||||
- @thirdweb-dev/sdk@4.0.74
|
||||
- @thirdweb-dev/wallets@2.5.14
|
||||
- @thirdweb-dev/react-core@4.6.13
|
||||
|
||||
## 0.7.44
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/react-native",
|
||||
"version": "0.7.44",
|
||||
"version": "0.7.47",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/legacy_packages/react-native",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,36 @@
|
||||
# @thirdweb-dev/react
|
||||
|
||||
## 4.6.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2936](https://github.com/thirdweb-dev/js/pull/2936) [`a692154`](https://github.com/thirdweb-dev/js/commit/a6921549244e3a0a959fa0611f3ab92328c06f4b) Thanks [@MananTank](https://github.com/MananTank)! - Fix OTP input entered by by clicking on “from messages” option in iOS safari
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/sdk@4.0.76
|
||||
- @thirdweb-dev/react-core@4.6.15
|
||||
- @thirdweb-dev/wallets@2.5.16
|
||||
|
||||
## 4.6.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`83d1d6f`](https://github.com/thirdweb-dev/js/commit/83d1d6f397982dfda87a835743a2ef1fecd5d919)]:
|
||||
- @thirdweb-dev/chains@0.1.105
|
||||
- @thirdweb-dev/sdk@4.0.75
|
||||
- @thirdweb-dev/react-core@4.6.14
|
||||
- @thirdweb-dev/wallets@2.5.15
|
||||
|
||||
## 4.6.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`0bce535`](https://github.com/thirdweb-dev/js/commit/0bce5350946d0ce231a65dbad2493d1fbe0c1376)]:
|
||||
- @thirdweb-dev/chains@0.1.104
|
||||
- @thirdweb-dev/sdk@4.0.74
|
||||
- @thirdweb-dev/wallets@2.5.14
|
||||
- @thirdweb-dev/react-core@4.6.13
|
||||
|
||||
## 4.6.12
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/react",
|
||||
"version": "4.6.12",
|
||||
"version": "4.6.15",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/legacy_packages/react",
|
||||
"author": "thirdweb eng <[email protected]>",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -94,13 +94,11 @@ export function OTPInput(props: {
|
||||
}
|
||||
}}
|
||||
onChange={(e) => {
|
||||
let value = e.target.value;
|
||||
const value = e.target.value;
|
||||
|
||||
if (value.length > 1) {
|
||||
const lastValue = value[value.length - 1];
|
||||
if (lastValue) {
|
||||
value = lastValue;
|
||||
}
|
||||
setOTP(value.split("").filter((n) => /\d/.test(n)).map(Number));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!/\d/.test(value) && value !== "") {
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,29 @@
|
||||
# @thirdweb-dev/sdk
|
||||
|
||||
## 4.0.76
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`a692154`](https://github.com/thirdweb-dev/js/commit/a6921549244e3a0a959fa0611f3ab92328c06f4b), [`bdb919f`](https://github.com/thirdweb-dev/js/commit/bdb919f32ae459608b29dd1e4d511afc226470c6), [`795a59e`](https://github.com/thirdweb-dev/js/commit/795a59e436d791fcfef093971d295622951c832c), [`b64c8e7`](https://github.com/thirdweb-dev/js/commit/b64c8e7b6efaf09be2afc73b92624c5576a4b24e), [`49d4494`](https://github.com/thirdweb-dev/js/commit/49d44940084dc43fb48836f9d628b8e36dcb917a), [`44680c6`](https://github.com/thirdweb-dev/js/commit/44680c65c1cb8aeb0643fff5084b3b013460c610), [`86105c9`](https://github.com/thirdweb-dev/js/commit/86105c9d918852da86215ec0806aadbcf8eafdea), [`ec149f3`](https://github.com/thirdweb-dev/js/commit/ec149f383415722d34e0de68b0807c84ad3dc55a), [`cea736c`](https://github.com/thirdweb-dev/js/commit/cea736c7e4031b5eaebcd788488314f24d5cab83), [`0e19911`](https://github.com/thirdweb-dev/js/commit/0e199116682727f72b87b81f027f67b223bccfad), [`82e8911`](https://github.com/thirdweb-dev/js/commit/82e89116af8ef6e8c3c7faef1829e0e323e146ae), [`8e0a3ce`](https://github.com/thirdweb-dev/js/commit/8e0a3cea1e354f45e7aa107851909e7d57604f0d), [`9f817cf`](https://github.com/thirdweb-dev/js/commit/9f817cf812e3fff6f64382778df1f99739fc3379)]:
|
||||
- thirdweb@5.16.1
|
||||
|
||||
## 4.0.75
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`5b0c37a`](https://github.com/thirdweb-dev/js/commit/5b0c37a0d9b7ba3d7f38647bb41463e91cc91a49), [`24a3ee4`](https://github.com/thirdweb-dev/js/commit/24a3ee49d182a840c864a221eee4dd7d05c5c469), [`5525a0e`](https://github.com/thirdweb-dev/js/commit/5525a0e336177407d508da37058ca24a3abfae37), [`35acbcd`](https://github.com/thirdweb-dev/js/commit/35acbcd10e146b886dfe8a83cd485e96b8c70928), [`664082e`](https://github.com/thirdweb-dev/js/commit/664082e5e613b8748713522353585839fe018fc2), [`d77b6f6`](https://github.com/thirdweb-dev/js/commit/d77b6f67adc6eaf7c306ef738714e8d650ed5af3), [`83d1d6f`](https://github.com/thirdweb-dev/js/commit/83d1d6f397982dfda87a835743a2ef1fecd5d919), [`47de345`](https://github.com/thirdweb-dev/js/commit/47de345b604dbd9afbaaa95a76569b9029d69b00)]:
|
||||
- thirdweb@5.16.0
|
||||
- @thirdweb-dev/chains@0.1.105
|
||||
|
||||
## 4.0.74
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`75e66b1`](https://github.com/thirdweb-dev/js/commit/75e66b189d790778358edeacdd71965f248902c2), [`f916d7a`](https://github.com/thirdweb-dev/js/commit/f916d7a453854bcb8c6f0b9c95b49d34eb865882), [`1d66954`](https://github.com/thirdweb-dev/js/commit/1d669547fb4f8a873194e0b843a9ca71e7e1504e), [`9a031bb`](https://github.com/thirdweb-dev/js/commit/9a031bb19fe9b39ff88a02c48c311ba5c3184aab), [`7882b22`](https://github.com/thirdweb-dev/js/commit/7882b22306c1ccd4919fe088dfcd7c68bff954f9), [`0bce535`](https://github.com/thirdweb-dev/js/commit/0bce5350946d0ce231a65dbad2493d1fbe0c1376), [`e6fce1f`](https://github.com/thirdweb-dev/js/commit/e6fce1f2e617c795377ef4de12e2112f1fa03ebb), [`88886ac`](https://github.com/thirdweb-dev/js/commit/88886acd762e637ac130bb7fa0eda12c6e5da4fc)]:
|
||||
- thirdweb@5.15.0
|
||||
- @thirdweb-dev/contracts-js@1.3.22
|
||||
- @thirdweb-dev/chains@0.1.104
|
||||
|
||||
## 4.0.73
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/sdk",
|
||||
"version": "4.0.73",
|
||||
"version": "4.0.76",
|
||||
"description": "The main thirdweb SDK.",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/legacy_packages/sdk",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,34 @@
|
||||
# @thirdweb-dev/unity-js-bridge
|
||||
|
||||
## 0.6.25
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/sdk@4.0.76
|
||||
- @thirdweb-dev/wallets@2.5.16
|
||||
- @thirdweb-dev/auth@4.1.74
|
||||
|
||||
## 0.6.24
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`83d1d6f`](https://github.com/thirdweb-dev/js/commit/83d1d6f397982dfda87a835743a2ef1fecd5d919)]:
|
||||
- @thirdweb-dev/chains@0.1.105
|
||||
- @thirdweb-dev/sdk@4.0.75
|
||||
- @thirdweb-dev/wallets@2.5.15
|
||||
- @thirdweb-dev/auth@4.1.73
|
||||
|
||||
## 0.6.23
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`0bce535`](https://github.com/thirdweb-dev/js/commit/0bce5350946d0ce231a65dbad2493d1fbe0c1376)]:
|
||||
- @thirdweb-dev/chains@0.1.104
|
||||
- @thirdweb-dev/sdk@4.0.74
|
||||
- @thirdweb-dev/wallets@2.5.14
|
||||
- @thirdweb-dev/auth@4.1.72
|
||||
|
||||
## 0.6.22
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/unity-js-bridge",
|
||||
"version": "0.6.22",
|
||||
"version": "0.6.25",
|
||||
"main": "dist/thirdweb-unity-bridge.js",
|
||||
"repository": "https://github.com/thirdweb-dev/js/tree/main/packages/unity-js-bridge",
|
||||
"license": "Apache-2.0",
|
||||
|
||||
@@ -1,5 +1,29 @@
|
||||
# @thirdweb-dev/wallets
|
||||
|
||||
## 2.5.16
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies []:
|
||||
- @thirdweb-dev/sdk@4.0.76
|
||||
|
||||
## 2.5.15
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`83d1d6f`](https://github.com/thirdweb-dev/js/commit/83d1d6f397982dfda87a835743a2ef1fecd5d919)]:
|
||||
- @thirdweb-dev/chains@0.1.105
|
||||
- @thirdweb-dev/sdk@4.0.75
|
||||
|
||||
## 2.5.14
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [[`1d66954`](https://github.com/thirdweb-dev/js/commit/1d669547fb4f8a873194e0b843a9ca71e7e1504e), [`0bce535`](https://github.com/thirdweb-dev/js/commit/0bce5350946d0ce231a65dbad2493d1fbe0c1376)]:
|
||||
- @thirdweb-dev/contracts-js@1.3.22
|
||||
- @thirdweb-dev/chains@0.1.104
|
||||
- @thirdweb-dev/sdk@4.0.74
|
||||
|
||||
## 2.5.13
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@thirdweb-dev/wallets",
|
||||
"version": "2.5.13",
|
||||
"version": "2.5.16",
|
||||
"main": "dist/thirdweb-dev-wallets.cjs.js",
|
||||
"module": "dist/thirdweb-dev-wallets.esm.js",
|
||||
"browser": {
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ export async function checkContractWalletSignature(
|
||||
|
||||
const provider = new providers.StaticJsonRpcProvider(
|
||||
{
|
||||
url: chainIdToThirdwebRpc(chainId),
|
||||
url: rpcUrl,
|
||||
skipFetchSetup: _skipFetchSetup,
|
||||
headers,
|
||||
},
|
||||
|
||||
@@ -227,7 +227,7 @@ Code: ${errorCode}`;
|
||||
try {
|
||||
const provider = new providers.StaticJsonRpcProvider(
|
||||
{
|
||||
url: chainIdToThirdwebRpc(chainId, this.config.clientId),
|
||||
url: rpcUrl,
|
||||
headers,
|
||||
},
|
||||
chainId,
|
||||
|
||||
@@ -17,7 +17,7 @@ import { createErc20 } from "../utils/currency";
|
||||
// TODO improve this
|
||||
export function chainIdToThirdwebRpc(chainId: number, clientId?: string) {
|
||||
return `https://${chainId}.rpc.thirdweb.com${clientId ? `/${clientId}` : ""}${
|
||||
typeof globalThis !== "undefined" && "APP_BUNDLE_ID" in globalThis
|
||||
typeof globalThis !== "undefined" && "APP_BUNDLE_ID" in globalThis && !!(globalThis as any).APP_BUNDLE_ID
|
||||
? `?bundleId=${(globalThis as any).APP_BUNDLE_ID as string}`
|
||||
: ""
|
||||
}`;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* eslint-disable better-tree-shaking/no-top-level-side-effects */
|
||||
import { SmartWallet } from "../src/evm/wallets/smart-wallet";
|
||||
import { LocalWallet } from "../src/evm/wallets/local-wallet";
|
||||
import { ArbitrumSepolia } from "@thirdweb-dev/chains";
|
||||
import { BaseSepoliaTestnet } from "@thirdweb-dev/chains";
|
||||
import { ThirdwebSDK, SmartContract } from "@thirdweb-dev/sdk";
|
||||
import { checkContractWalletSignature } from "../src/evm/connectors/smart-wallet/lib/check-contract-wallet-signature";
|
||||
import { describe, it, expect, beforeAll } from "vitest";
|
||||
@@ -12,9 +12,9 @@ let smartWallet: SmartWallet;
|
||||
let smartWalletAddress: string;
|
||||
let personalWallet: LocalWallet;
|
||||
let contract: SmartContract;
|
||||
const factoryAddress = "0x564cf6453a1b0FF8DB603E92EA4BbD410dea45F3"; // pre 712
|
||||
const factoryAddressV2 = "0xbf1C9aA4B1A085f7DA890a44E82B0A1289A40052"; // post 712
|
||||
const chain = ArbitrumSepolia;
|
||||
const factoryAddress = "0x7b5ba9D46b53aae55e2c2E9b38d9AfF9a0b158F8"; // pre 712
|
||||
const factoryAddressV2 = "0xBCE06A6Dcd4dE8c6D8892E404b0a99A8812352b2"; // post 712
|
||||
const chain = BaseSepoliaTestnet;
|
||||
const SECRET_KEY = process.env.TW_SECRET_KEY;
|
||||
|
||||
const describeIf = (condition: boolean) =>
|
||||
@@ -34,21 +34,20 @@ beforeAll(async () => {
|
||||
secretKey: SECRET_KEY,
|
||||
});
|
||||
contract = await sdk.getContract(
|
||||
"0x6A7a26c9a595E6893C255C9dF0b593e77518e0c3", // arb sep edition drop
|
||||
"0x638263e3eAa3917a53630e61B1fBa685308024fa", // edition drop
|
||||
);
|
||||
});
|
||||
|
||||
describeIf(!!SECRET_KEY)(
|
||||
"SmartWallet core tests",
|
||||
{
|
||||
timeout: 240_000,
|
||||
},
|
||||
() => {
|
||||
it("can connect", async () => {
|
||||
expect(smartWalletAddress).toHaveLength(42);
|
||||
});
|
||||
|
||||
it("can execute a tx via SDK", async () => {
|
||||
it("can execute a tx via SDK", {
|
||||
timeout: 120_000,
|
||||
}, async () => {
|
||||
const tx = await contract.erc1155.claim(0, 1);
|
||||
expect(tx.receipt.transactionHash).toHaveLength(66);
|
||||
const isDeployed = await smartWallet.isDeployed();
|
||||
@@ -57,13 +56,17 @@ describeIf(!!SECRET_KEY)(
|
||||
expect(balance.toNumber()).toEqual(1);
|
||||
});
|
||||
|
||||
it("can estimate a tx", async () => {
|
||||
it("can estimate a tx", {
|
||||
timeout: 120_000,
|
||||
}, async () => {
|
||||
const preparedTx = await contract.erc1155.claim.prepare(0, 1);
|
||||
const estimates = await smartWallet.estimate(preparedTx);
|
||||
expect(estimates.wei.toString()).not.toBe("0");
|
||||
});
|
||||
|
||||
it("can execute a tx", async () => {
|
||||
it("can execute a tx", {
|
||||
timeout: 120_000,
|
||||
}, async () => {
|
||||
const preparedTx = await contract.erc1155.claim.prepare(0, 1);
|
||||
const tx = await smartWallet.execute(preparedTx);
|
||||
expect(tx.receipt.transactionHash).toHaveLength(66);
|
||||
@@ -71,7 +74,9 @@ describeIf(!!SECRET_KEY)(
|
||||
expect(balance.toNumber()).toEqual(2);
|
||||
});
|
||||
|
||||
it("can execute a batched tx", async () => {
|
||||
it("can execute a batched tx", {
|
||||
timeout: 120_000,
|
||||
}, async () => {
|
||||
const preparedTx = await contract.erc1155.claim.prepare(0, 1);
|
||||
const tx = await smartWallet.executeBatch([preparedTx, preparedTx]);
|
||||
expect(tx.receipt.transactionHash).toHaveLength(66);
|
||||
@@ -79,7 +84,9 @@ describeIf(!!SECRET_KEY)(
|
||||
expect(balance.toNumber()).toEqual(4);
|
||||
});
|
||||
|
||||
it("can execute a raw tx", async () => {
|
||||
it("can execute a raw tx", {
|
||||
timeout: 120_000,
|
||||
}, async () => {
|
||||
const preparedTx = await contract.erc1155.claim.prepare(0, 1);
|
||||
const tx = await smartWallet.executeRaw({
|
||||
to: preparedTx.getTarget(),
|
||||
@@ -90,7 +97,9 @@ describeIf(!!SECRET_KEY)(
|
||||
expect(balance.toNumber()).toEqual(5);
|
||||
});
|
||||
|
||||
it("can execute a batched raw tx", async () => {
|
||||
it("can execute a batched raw tx", {
|
||||
timeout: 120_000,
|
||||
}, async () => {
|
||||
const preparedTx = await contract.erc1155.claim.prepare(0, 1);
|
||||
const tx = await smartWallet.executeBatchRaw([
|
||||
{
|
||||
@@ -107,7 +116,10 @@ describeIf(!!SECRET_KEY)(
|
||||
expect(balance.toNumber()).toEqual(7);
|
||||
});
|
||||
|
||||
it("can sign and verify 1271 old factory", async () => {
|
||||
// FIXME flaky test
|
||||
it.todo("can sign and verify 1271 old factory", {
|
||||
timeout: 300_000,
|
||||
}, async () => {
|
||||
const message = "0x1234";
|
||||
const sig = await smartWallet.signMessage(message);
|
||||
const isValidV1 = await smartWallet.verifySignature(
|
||||
@@ -128,7 +140,10 @@ describeIf(!!SECRET_KEY)(
|
||||
expect(isValidV2).toEqual(true);
|
||||
});
|
||||
|
||||
it("can sign and verify 1271 new factory", async () => {
|
||||
// FIXME flaky test
|
||||
it.todo("can sign and verify 1271 new factory", {
|
||||
timeout: 300_000,
|
||||
}, async () => {
|
||||
smartWallet = new SmartWallet({
|
||||
chain,
|
||||
factoryAddress: factoryAddressV2,
|
||||
|
||||
Binary file not shown.
@@ -25,7 +25,7 @@
|
||||
{
|
||||
"name": "thirdweb/react (minimal + tree-shaking)",
|
||||
"path": "./dist/esm/exports/react.js",
|
||||
"limit": "15 kB",
|
||||
"limit": "16 kB",
|
||||
"import": "{ ThirdwebProvider, useConnect }"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,5 +1,154 @@
|
||||
# thirdweb
|
||||
|
||||
## 5.16.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2936](https://github.com/thirdweb-dev/js/pull/2936) [`a692154`](https://github.com/thirdweb-dev/js/commit/a6921549244e3a0a959fa0611f3ab92328c06f4b) Thanks [@MananTank](https://github.com/MananTank)! - Fix OTP input entered by by clicking on “from messages” option in iOS safari
|
||||
|
||||
- [#2934](https://github.com/thirdweb-dev/js/pull/2934) [`bdb919f`](https://github.com/thirdweb-dev/js/commit/bdb919f32ae459608b29dd1e4d511afc226470c6) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Updates the CLI `create` command to use the v5 templates for Next.js and Vite
|
||||
|
||||
Other templates will be updated in the future from within their existing repositories
|
||||
|
||||
Removes React Native starters from the CLI menu
|
||||
Removes JS template support from the CLI
|
||||
|
||||
- [#2941](https://github.com/thirdweb-dev/js/pull/2941) [`795a59e`](https://github.com/thirdweb-dev/js/commit/795a59e436d791fcfef093971d295622951c832c) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Can now optionally specify `blockRange` on `getContractEvents` in combination with `toBlock` and `fromBlock`.
|
||||
|
||||
## Usage
|
||||
|
||||
Specify a `blockRange`, defaulting `toBlock` to the current block number.
|
||||
|
||||
```ts
|
||||
await getContractEvents({
|
||||
contract: myContract,
|
||||
blockRange: 123456n,
|
||||
events: [preparedEvent, preparedEvent2],
|
||||
});
|
||||
```
|
||||
|
||||
Specify a block range with `toBlock`.
|
||||
|
||||
```ts
|
||||
await getContractEvents({
|
||||
contract: myContract,
|
||||
toBlock: endBlock,
|
||||
blockRange: 123456n,
|
||||
events: [preparedEvent, preparedEvent2],
|
||||
});
|
||||
```
|
||||
|
||||
Specify a block range starting from `fromBlock` (great for pagination).
|
||||
|
||||
```ts
|
||||
await getContractEvents({
|
||||
contract: myContract,
|
||||
fromBlock: lastBlockFetched,
|
||||
blockRange: 123456n,
|
||||
events: [preparedEvent, preparedEvent2],
|
||||
});
|
||||
```
|
||||
|
||||
- [#2945](https://github.com/thirdweb-dev/js/pull/2945) [`b64c8e7`](https://github.com/thirdweb-dev/js/commit/b64c8e7b6efaf09be2afc73b92624c5576a4b24e) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Removes deprecated template options from the CLI, specifically PWA Vite, Express, and React
|
||||
|
||||
- [#2951](https://github.com/thirdweb-dev/js/pull/2951) [`49d4494`](https://github.com/thirdweb-dev/js/commit/49d44940084dc43fb48836f9d628b8e36dcb917a) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Increase gas on MarketplaceV3 writes
|
||||
|
||||
- [#2948](https://github.com/thirdweb-dev/js/pull/2948) [`44680c6`](https://github.com/thirdweb-dev/js/commit/44680c65c1cb8aeb0643fff5084b3b013460c610) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Adds extraGas override to transactions. Useful when gas estimates are faulty or to ensure a transaction goes through.
|
||||
|
||||
## Usage
|
||||
|
||||
```ts
|
||||
const transaction = prepareTransaction({
|
||||
to: "0x1234567890123456789012345678901234567890",
|
||||
chain: ethereum,
|
||||
client: thirdwebClient,
|
||||
value: toWei("1.0"),
|
||||
gasPrice: 30n,
|
||||
extraGas: 50_000n,
|
||||
});
|
||||
```
|
||||
|
||||
- [#2932](https://github.com/thirdweb-dev/js/pull/2932) [`86105c9`](https://github.com/thirdweb-dev/js/commit/86105c9d918852da86215ec0806aadbcf8eafdea) Thanks [@gregfromstl](https://github.com/gregfromstl)! - TransactionButton throws error on reverted transaction
|
||||
|
||||
- [#2946](https://github.com/thirdweb-dev/js/pull/2946) [`ec149f3`](https://github.com/thirdweb-dev/js/commit/ec149f383415722d34e0de68b0807c84ad3dc55a) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Read RPC url from viem chain in viem chain adapter
|
||||
|
||||
- [#2928](https://github.com/thirdweb-dev/js/pull/2928) [`cea736c`](https://github.com/thirdweb-dev/js/commit/cea736c7e4031b5eaebcd788488314f24d5cab83) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Filters invalid listings and auctions from marketplace
|
||||
|
||||
- [#2949](https://github.com/thirdweb-dev/js/pull/2949) [`0e19911`](https://github.com/thirdweb-dev/js/commit/0e199116682727f72b87b81f027f67b223bccfad) Thanks [@kien-ngo](https://github.com/kien-ngo)! - Docs update: fix typos and add code snippet
|
||||
|
||||
- [#2944](https://github.com/thirdweb-dev/js/pull/2944) [`82e8911`](https://github.com/thirdweb-dev/js/commit/82e89116af8ef6e8c3c7faef1829e0e323e146ae) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Show auth provider icon in connect UI when connected to in app wallet
|
||||
|
||||
- [#2933](https://github.com/thirdweb-dev/js/pull/2933) [`8e0a3ce`](https://github.com/thirdweb-dev/js/commit/8e0a3cea1e354f45e7aa107851909e7d57604f0d) Thanks [@MananTank](https://github.com/MananTank)! - ### Integrate Pay Modal with TransactionButton
|
||||
|
||||
By default, the Pay Modal is integrated with the `TransactionButton` component. If the user performs a transaction and does not have enough funds to execute it and if [thirdweb pay](https://portal.thirdweb.com/connect/pay/buy-with-crypto) is available for that blockchain, the Pay Modal will be displayed to allow user to buy the required amount of tokens
|
||||
|
||||
A new prop `payModal` is added to the `TransactionButton` component customize the Pay Modal UI or disable it entirely
|
||||
|
||||
Example: Disable Pay Modal
|
||||
|
||||
```tsx
|
||||
<TransactionButton payModal={false}> Example 1 </TransactionButton>
|
||||
```
|
||||
|
||||
Example: Customize Pay Modal UI
|
||||
|
||||
```tsx
|
||||
<TransactionButton
|
||||
payModal={{
|
||||
theme: "light",
|
||||
}}
|
||||
>
|
||||
Example 2
|
||||
</TransactionButton>
|
||||
```
|
||||
|
||||
### Disable Pay Modal for certain configurations in `useSendTransaction` hook
|
||||
|
||||
If `useSendTransaction` hook is passed `gasless: true` configuration or if current active wallet is a smart wallet with `sponsorGas: true` configuration - the Pay Modal will be disabled
|
||||
|
||||
- [#2929](https://github.com/thirdweb-dev/js/pull/2929) [`9f817cf`](https://github.com/thirdweb-dev/js/commit/9f817cf812e3fff6f64382778df1f99739fc3379) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Tweaked connected modal UI layout
|
||||
|
||||
## 5.16.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- [#2917](https://github.com/thirdweb-dev/js/pull/2917) [`5b0c37a`](https://github.com/thirdweb-dev/js/commit/5b0c37a0d9b7ba3d7f38647bb41463e91cc91a49) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Factory address is now optional in `accountAbstraction` and `smartWallet` options.
|
||||
|
||||
- Defaults to a global permissionless factory deployed on all chains.
|
||||
- Also enables switching chains for smart wallets, as long as the factory is deployed
|
||||
|
||||
- [#2915](https://github.com/thirdweb-dev/js/pull/2915) [`664082e`](https://github.com/thirdweb-dev/js/commit/664082e5e613b8748713522353585839fe018fc2) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - New `prepareDeterministicDeployTransaction` extension for deploying published contracts with the same address on multiple chains
|
||||
|
||||
- [#2921](https://github.com/thirdweb-dev/js/pull/2921) [`d77b6f6`](https://github.com/thirdweb-dev/js/commit/d77b6f67adc6eaf7c306ef738714e8d650ed5af3) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Adds the 'use client' directive to all client-only components
|
||||
|
||||
- [#2919](https://github.com/thirdweb-dev/js/pull/2919) [`47de345`](https://github.com/thirdweb-dev/js/commit/47de345b604dbd9afbaaa95a76569b9029d69b00) Thanks [@jnsdls](https://github.com/jnsdls)! - Add support for several additional wallets
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2914](https://github.com/thirdweb-dev/js/pull/2914) [`24a3ee4`](https://github.com/thirdweb-dev/js/commit/24a3ee49d182a840c864a221eee4dd7d05c5c469) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Fix legacy transactions with in-app wallets
|
||||
|
||||
- [#2913](https://github.com/thirdweb-dev/js/pull/2913) [`5525a0e`](https://github.com/thirdweb-dev/js/commit/5525a0e336177407d508da37058ca24a3abfae37) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Filter invalid auctions in getAllAuctions
|
||||
|
||||
- [#2911](https://github.com/thirdweb-dev/js/pull/2911) [`35acbcd`](https://github.com/thirdweb-dev/js/commit/35acbcd10e146b886dfe8a83cd485e96b8c70928) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Updates mintWithSignature return types to properly parse
|
||||
|
||||
## 5.15.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
- [#2875](https://github.com/thirdweb-dev/js/pull/2875) [`7882b22`](https://github.com/thirdweb-dev/js/commit/7882b22306c1ccd4919fe088dfcd7c68bff954f9) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Support for Coinbase Smart Wallet
|
||||
|
||||
- [#2898](https://github.com/thirdweb-dev/js/pull/2898) [`88886ac`](https://github.com/thirdweb-dev/js/commit/88886acd762e637ac130bb7fa0eda12c6e5da4fc) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Adds overrides to extension functions
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- [#2906](https://github.com/thirdweb-dev/js/pull/2906) [`75e66b1`](https://github.com/thirdweb-dev/js/commit/75e66b189d790778358edeacdd71965f248902c2) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Fix signTypedData external verification for smart accounts
|
||||
|
||||
- [#2897](https://github.com/thirdweb-dev/js/pull/2897) [`f916d7a`](https://github.com/thirdweb-dev/js/commit/f916d7a453854bcb8c6f0b9c95b49d34eb865882) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Fixes TransactionButton loading state layout shift
|
||||
|
||||
- [#2905](https://github.com/thirdweb-dev/js/pull/2905) [`9a031bb`](https://github.com/thirdweb-dev/js/commit/9a031bb19fe9b39ff88a02c48c311ba5c3184aab) Thanks [@joaquim-verges](https://github.com/joaquim-verges)! - Bump timeout for userOps receipts to 2mins
|
||||
|
||||
- [#2899](https://github.com/thirdweb-dev/js/pull/2899) [`e6fce1f`](https://github.com/thirdweb-dev/js/commit/e6fce1f2e617c795377ef4de12e2112f1fa03ebb) Thanks [@gregfromstl](https://github.com/gregfromstl)! - Fixes useContractEvents duplicating events
|
||||
|
||||
## 5.14.0
|
||||
|
||||
### Minor Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "thirdweb",
|
||||
"version": "5.14.0",
|
||||
"version": "5.16.1",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/thirdweb-dev/js.git#main"
|
||||
@@ -174,7 +174,7 @@
|
||||
"!tsconfig.build.json"
|
||||
],
|
||||
"dependencies": {
|
||||
"@coinbase/wallet-sdk": "3.7.2",
|
||||
"@coinbase/wallet-sdk": "4.0.0-rc.2",
|
||||
"@emotion/react": "11.11.4",
|
||||
"@emotion/styled": "11.11.0",
|
||||
"@google/model-viewer": "2.1.1",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[
|
||||
"event TokensMintedWithSignature(address indexed signer, address indexed mintedTo, uint256 indexed tokenIdMinted, (address to, address royaltyRecipient, uint256 royaltyBps, address primarySaleRecipient, uint256 tokenId, string uri, uint256 quantity, uint256 pricePerToken, address currency, uint128 validityStartTimestamp, uint128 validityEndTimestamp, bytes32 uid) mintRequest)",
|
||||
"function mintWithSignature((address to, address royaltyRecipient, uint256 royaltyBps, address primarySaleRecipient, uint256 tokenId, string uri, uint256 quantity, uint256 pricePerToken, address currency, uint128 validityStartTimestamp, uint128 validityEndTimestamp, bytes32 uid) payload, bytes signature) payable returns (address signer)",
|
||||
"function mintWithSignature((address to, address royaltyRecipient, uint256 royaltyBps, address primarySaleRecipient, uint256 tokenId, string uri, uint256 quantity, uint256 pricePerToken, address currency, uint128 validityStartTimestamp, uint128 validityEndTimestamp, bytes32 uid) payload, bytes signature) payable",
|
||||
"function verify((address to, address royaltyRecipient, uint256 royaltyBps, address primarySaleRecipient, uint256 tokenId, string uri, uint256 quantity, uint256 pricePerToken, address currency, uint128 validityStartTimestamp, uint128 validityEndTimestamp, bytes32 uid) req, bytes signature) view returns (bool success, address signer)"
|
||||
]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[
|
||||
"event TokensMintedWithSignature(address indexed signer, address indexed mintedTo, (address to, address primarySaleRecipient, uint256 quantity, uint256 price, address currency, uint128 validityStartTimestamp, uint128 validityEndTimestamp, bytes32 uid) mintRequest)",
|
||||
"function mintWithSignature((address to, address primarySaleRecipient, uint256 quantity, uint256 price, address currency, uint128 validityStartTimestamp, uint128 validityEndTimestamp, bytes32 uid) payload, bytes signature) payable returns (address signer)",
|
||||
"function mintWithSignature((address to, address primarySaleRecipient, uint256 quantity, uint256 price, address currency, uint128 validityStartTimestamp, uint128 validityEndTimestamp, bytes32 uid) payload, bytes signature) payable",
|
||||
"function verify((address to, address primarySaleRecipient, uint256 quantity, uint256 price, address currency, uint128 validityStartTimestamp, uint128 validityEndTimestamp, bytes32 uid) req, bytes signature) view returns (bool success, address signer)"
|
||||
]
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[
|
||||
"event TokensMintedWithSignature(address indexed signer, address indexed mintedTo, uint256 indexed tokenIdMinted, (address to,address royaltyRecipient,uint256 royaltyBps,address primarySaleRecipient,string uri,uint256 price,address currency,uint128 validityStartTimestamp,uint128 validityEndTimestamp,bytes32 uid) mintpayload)",
|
||||
"function mintWithSignature((address to,address royaltyRecipient,uint256 royaltyBps,address primarySaleRecipient,string uri,uint256 price,address currency,uint128 validityStartTimestamp,uint128 validityEndTimestamp,bytes32 uid) payload, bytes signature) payable returns (address signer)",
|
||||
"function mintWithSignature((address to,address royaltyRecipient,uint256 royaltyBps,address primarySaleRecipient,string uri,uint256 price,address currency,uint128 validityStartTimestamp,uint128 validityEndTimestamp,bytes32 uid) payload, bytes signature) payable returns (uint256 tokenIdMinted)",
|
||||
"function verify((address to,address royaltyRecipient,uint256 royaltyBps,address primarySaleRecipient,string uri,uint256 price,address currency,uint128 validityStartTimestamp,uint128 validityEndTimestamp,bytes32 uid) payload, bytes signature) view returns (bool success, address signer)"
|
||||
]
|
||||
|
||||
@@ -218,7 +218,7 @@ export function encode${uppercaseFirstLetter(f.name)}(options: ${inputTypeName})
|
||||
: ""
|
||||
}
|
||||
/**
|
||||
* Calls the "${f.name}" function on the contract.
|
||||
* Prepares a transaction to call the "${f.name}" function on the contract.
|
||||
* @param options - The options for the "${f.name}" function.
|
||||
* @returns A prepared transaction object.
|
||||
* @extension ${extensionName.toUpperCase()}
|
||||
@@ -229,8 +229,8 @@ export function encode${uppercaseFirstLetter(f.name)}(options: ${inputTypeName})
|
||||
* const transaction = ${f.name}(${
|
||||
f.inputs.length > 0
|
||||
? `{\n * contract,\n * ${f.inputs
|
||||
.map((x) => ` ${removeLeadingUnderscore(x.name)}: ...,`)
|
||||
.join("\n * ")}\n * }`
|
||||
.map((x) => ` ${removeLeadingUnderscore(x.name)}: ...,`)
|
||||
.join("\n * ")}\n* overrides: {\n* ...\n* }\n * }`
|
||||
: ""
|
||||
});
|
||||
*
|
||||
@@ -269,6 +269,13 @@ export function ${f.name}(
|
||||
.join(", ")}] as const;
|
||||
},
|
||||
value: async () => (await asyncOptions()).overrides?.value,
|
||||
accessList: async () => (await asyncOptions()).overrides?.accessList,
|
||||
gas: async () => (await asyncOptions()).overrides?.gas,
|
||||
gasPrice: async () => (await asyncOptions()).overrides?.gasPrice,
|
||||
maxFeePerGas: async () => (await asyncOptions()).overrides?.maxFeePerGas,
|
||||
maxPriorityFeePerGas: async () => (await asyncOptions()).overrides?.maxPriorityFeePerGas,
|
||||
nonce: async () => (await asyncOptions()).overrides?.nonce,
|
||||
extraGas: async () => (await asyncOptions()).overrides?.extraGas,
|
||||
`
|
||||
: ""
|
||||
}
|
||||
@@ -433,8 +440,8 @@ export function decode${uppercaseFirstLetter(f.name)}Result(result: Hex) {
|
||||
* const result = await ${f.name}(${
|
||||
f.inputs.length > 0
|
||||
? `{\n * ${f.inputs
|
||||
.map((x) => ` ${removeLeadingUnderscore(x.name)}: ...,`)
|
||||
.join("\n * ")}\n * }`
|
||||
.map((x) => ` ${removeLeadingUnderscore(x.name)}: ...,`)
|
||||
.join("\n * ")}\n * }`
|
||||
: ""
|
||||
});
|
||||
*
|
||||
@@ -500,8 +507,8 @@ export type ${uppercaseFirstLetter(e.name)}EventFilters = Partial<{
|
||||
* ${eventNameToPreparedEventName(e.name)}(${
|
||||
indexedInputs.length > 0
|
||||
? `{\n * ${indexedInputs
|
||||
.map((x) => ` ${x.name}: ...,`)
|
||||
.join("\n * ")}\n * }`
|
||||
.map((x) => ` ${x.name}: ...,`)
|
||||
.join("\n * ")}\n * }`
|
||||
: ""
|
||||
})
|
||||
* ],
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
### how to add new wallets that are not included in the wallet connect registry
|
||||
|
||||
1. Add the wallet into the `extra-wallets.json` file
|
||||
2. add an icon for the wallet in the `extra-wallets-icons` folder
|
||||
3. reference that icon's file-name in the `image_id` field in the `extra-wallets.json` file
|
||||
4. then run the generate script
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="38" height="38" viewBox="0 0 38 38" fill="none">
|
||||
<path d="M0 8.44444C0 3.78071 3.78071 0 8.44444 0H29.5556C34.2193 0 38 3.78071 38 8.44444V29.5556C38 34.2193 34.2193 38 29.5556 38H8.44444C3.78071 38 0 34.2193 0 29.5556V8.44444Z" fill="#7331FF"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.44434 8.44446V21.4733C8.44434 22.5931 8.88918 23.6671 9.681 24.4589L13.541 28.3189C14.3328 29.1107 15.4068 29.5556 16.5266 29.5556H29.5554V21.1111H16.8888V8.44446H8.44434Z" fill="white"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 539 B |
@@ -0,0 +1,32 @@
|
||||
[
|
||||
{
|
||||
"id": "com.lootrush",
|
||||
"name": "LootRush",
|
||||
"homepage": "https://www.lootrush.com/lootrush-wallet",
|
||||
"image_id": "lootrush.svg",
|
||||
"order": 9999999,
|
||||
"app": {
|
||||
"browser": null,
|
||||
"ios": null,
|
||||
"android": null,
|
||||
"mac": null,
|
||||
"windows": null,
|
||||
"linux": null,
|
||||
"chrome": "https://chrome.google.com/webstore/detail/lootrush-wallet/lfmmjkfllhmfmkcobchabopkcefjkoip",
|
||||
"firefox": "https://addons.mozilla.org/en-US/firefox/addon/lootrush-wallet/",
|
||||
"safari": null,
|
||||
"edge": null,
|
||||
"opera": null
|
||||
},
|
||||
"injected": [],
|
||||
"rdns": "com.lootrush",
|
||||
"mobile": {
|
||||
"native": null,
|
||||
"universal": null
|
||||
},
|
||||
"desktop": {
|
||||
"native": null,
|
||||
"universal": null
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -1,11 +1,15 @@
|
||||
import { writeFile } from "node:fs/promises";
|
||||
import { rm, mkdir, readFile } from "node:fs/promises";
|
||||
import { mkdir, readFile, rm } from "node:fs/promises";
|
||||
import { join } from "node:path";
|
||||
import { format } from "prettier";
|
||||
import sharp from "sharp";
|
||||
|
||||
const allWalletsJson = JSON.parse(
|
||||
await readFile(join(__dirname, "./all-wallets.json"), "utf-8"),
|
||||
const walletConnectWalletsJson = await fetch(
|
||||
"https://explorer-api.walletconnect.com/w3m/v1/getAllListings?projectId=145769e410f16970a79ff77b2d89a1e0",
|
||||
).then((res) => res.json());
|
||||
|
||||
const extraWalletsJson = JSON.parse(
|
||||
await readFile(join(__dirname, "./extra-wallets.json"), "utf-8"),
|
||||
);
|
||||
|
||||
type Wallet = {
|
||||
@@ -40,9 +44,17 @@ type Wallet = {
|
||||
native: string | null;
|
||||
universal: string | null;
|
||||
};
|
||||
_type: "wc" | "extra";
|
||||
};
|
||||
|
||||
const allWalletsArray = Object.values(allWalletsJson.listings) as Wallet[];
|
||||
const allWalletsArray = Object.values(walletConnectWalletsJson.listings)
|
||||
.map((w) => ({ ...(w as Omit<Wallet, "type">), _type: "wc" }))
|
||||
.concat(
|
||||
extraWalletsJson.map((w) => ({
|
||||
...(w as Omit<Wallet, "type">),
|
||||
_type: "extra",
|
||||
})),
|
||||
) as Wallet[];
|
||||
|
||||
function rdns(wallet: Wallet) {
|
||||
// prefer the rdns if it exists
|
||||
@@ -175,6 +187,13 @@ export default ALL_MINIMAL_WALLET_INFOS;
|
||||
},
|
||||
),
|
||||
);
|
||||
function stripType(wallet: Wallet) {
|
||||
const copy = { ...wallet };
|
||||
// biome-ignore lint/performance/noDelete: aware it's bad but it's OK in generate script
|
||||
// biome-ignore lint/suspicious/noExplicitAny: aware it's bad but it's OK in generate script
|
||||
delete (copy as any)._type;
|
||||
return copy;
|
||||
}
|
||||
|
||||
// for each wallet, generate a folder within the `src/wallets/__generated__` directory
|
||||
// and write a `index.ts` file with the wallet's information
|
||||
@@ -191,7 +210,7 @@ for (const wallet of allSupportedWallets) {
|
||||
`// This file is auto-generated by the \`scripts/wallets/generate.ts\` script.
|
||||
// Do not modify this file manually.
|
||||
|
||||
export const wallet = ${JSON.stringify(wallet, null, 2)} as const;
|
||||
export const wallet = ${JSON.stringify(stripType(wallet), null, 2)} as const;
|
||||
`,
|
||||
{
|
||||
parser: "babel-ts",
|
||||
@@ -200,12 +219,33 @@ export const wallet = ${JSON.stringify(wallet, null, 2)} as const;
|
||||
);
|
||||
|
||||
// download the wallet's image
|
||||
const image = await fetch(
|
||||
`https://explorer-api.walletconnect.com/w3m/v1/getWalletImage/${wallet.image_id}?projectId=145769e410f16970a79ff77b2d89a1e0&`,
|
||||
);
|
||||
const arrBuff = await image.arrayBuffer();
|
||||
let resized: Buffer;
|
||||
if (wallet._type === "extra") {
|
||||
// directly fetch, this will be a URL always
|
||||
|
||||
resized = await sharp(
|
||||
await readFile(
|
||||
join(__dirname, `./extra-wallet-icons/${wallet.image_id}`),
|
||||
),
|
||||
)
|
||||
.resize(128, 128)
|
||||
.webp()
|
||||
.toBuffer();
|
||||
} else {
|
||||
// fetch from the explorer api
|
||||
const imageRes = await fetch(
|
||||
`https://explorer-api.walletconnect.com/w3m/v1/getWalletImage/${wallet.image_id}?projectId=145769e410f16970a79ff77b2d89a1e0&`,
|
||||
);
|
||||
if (!imageRes.ok) {
|
||||
console.error(`Failed to fetch image for ${wallet.id}`);
|
||||
return;
|
||||
}
|
||||
resized = await sharp(await imageRes.arrayBuffer())
|
||||
.resize(128, 128)
|
||||
.webp()
|
||||
.toBuffer();
|
||||
}
|
||||
|
||||
const resized = await sharp(arrBuff).resize(128, 128).webp().toBuffer();
|
||||
// arrayBuffer to base64 webp
|
||||
|
||||
const base64Flag = "data:image/webp;base64,";
|
||||
|
||||
@@ -14,7 +14,7 @@ import { verifyLoginPayload } from "./core/verify-login-payload.js";
|
||||
*
|
||||
* const auth = createAuth({...});
|
||||
*
|
||||
* // 1. genererate a login payload for a client on the server side
|
||||
* // 1. generate a login payload for a client on the server side
|
||||
* const loginPayload = await auth.generatePayload({ address: '0x123...' });
|
||||
*
|
||||
* // 2. send the login payload to the client
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
import { defineChain as viemChain } from "viem";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { defineChain } from "./utils.js";
|
||||
|
||||
describe("defineChain", () => {
|
||||
it("should convert viem chain to thirdweb chain", () => {
|
||||
const zoraViem = viemChain({
|
||||
id: 7777777,
|
||||
name: "Zora",
|
||||
nativeCurrency: {
|
||||
decimals: 18,
|
||||
name: "Ether",
|
||||
symbol: "ETH",
|
||||
},
|
||||
rpcUrls: {
|
||||
default: {
|
||||
http: ["https://rpc.zora.energy"],
|
||||
webSocket: ["wss://rpc.zora.energy"],
|
||||
},
|
||||
},
|
||||
blockExplorers: {
|
||||
default: { name: "Explorer", url: "https://explorer.zora.energy" },
|
||||
},
|
||||
});
|
||||
const thirdwebViem = defineChain(zoraViem);
|
||||
|
||||
expect(thirdwebViem.id).toEqual(zoraViem.id);
|
||||
expect(thirdwebViem.name).toEqual(zoraViem.name);
|
||||
expect(thirdwebViem.nativeCurrency).toEqual(zoraViem.nativeCurrency);
|
||||
expect(thirdwebViem.rpc).toEqual(zoraViem.rpcUrls.default.http[0]);
|
||||
});
|
||||
});
|
||||
@@ -91,6 +91,9 @@ function convertViemChain(viemChain: ViemChain): Chain {
|
||||
symbol: viemChain.nativeCurrency.symbol,
|
||||
decimals: viemChain.nativeCurrency.decimals,
|
||||
},
|
||||
rpc:
|
||||
viemChain.rpcUrls.default.http[0] ??
|
||||
`https://${viemChain.id}.rpc.thirdweb.com`,
|
||||
blockExplorers: viemChain?.blockExplorers
|
||||
? Object.values(viemChain?.blockExplorers).map((explorer) => {
|
||||
return {
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
FORKED_ETHEREUM_CHAIN,
|
||||
FORKED_OPTIMISM_CHAIN,
|
||||
} from "../../../test/src/chains.js";
|
||||
import { TEST_CLIENT } from "../../../test/src/test-clients.js";
|
||||
import { TEST_ACCOUNT_A } from "../../../test/src/test-wallets.js";
|
||||
import { simulateTransaction } from "../../transaction/actions/simulate.js";
|
||||
import { ENTRYPOINT_ADDRESS_v0_6 } from "../../wallets/smart/lib/constants.js";
|
||||
import { prepareDeterministicDeployTransaction } from "./deploy-deterministic.js";
|
||||
|
||||
// skip this test suite if there is no secret key available to test with
|
||||
// TODO: remove reliance on secret key during unit tests entirely
|
||||
describe.runIf(process.env.TW_SECRET_KEY)("deployFromMetadata", () => {
|
||||
it("should deploy contracts at the same address", async () => {
|
||||
const tx1 = prepareDeterministicDeployTransaction({
|
||||
chain: FORKED_ETHEREUM_CHAIN,
|
||||
client: TEST_CLIENT,
|
||||
contractId: "AccountFactory",
|
||||
constructorParams: [TEST_ACCOUNT_A.address, ENTRYPOINT_ADDRESS_v0_6],
|
||||
});
|
||||
const tx2 = prepareDeterministicDeployTransaction({
|
||||
chain: FORKED_OPTIMISM_CHAIN,
|
||||
client: TEST_CLIENT,
|
||||
contractId: "AccountFactory",
|
||||
constructorParams: [TEST_ACCOUNT_A.address, ENTRYPOINT_ADDRESS_v0_6],
|
||||
});
|
||||
const [tx1Result, tx2Result] = await Promise.all([
|
||||
simulateTransaction({ transaction: tx1 }),
|
||||
simulateTransaction({ transaction: tx2 }),
|
||||
]);
|
||||
expect(tx1Result).toEqual(tx2Result);
|
||||
});
|
||||
|
||||
it("should respect salt param", async () => {
|
||||
const tx1 = prepareDeterministicDeployTransaction({
|
||||
chain: FORKED_ETHEREUM_CHAIN,
|
||||
client: TEST_CLIENT,
|
||||
contractId: "AccountFactory",
|
||||
constructorParams: [TEST_ACCOUNT_A.address, ENTRYPOINT_ADDRESS_v0_6],
|
||||
salt: "some-salt",
|
||||
});
|
||||
const tx2 = prepareDeterministicDeployTransaction({
|
||||
chain: FORKED_OPTIMISM_CHAIN,
|
||||
client: TEST_CLIENT,
|
||||
contractId: "AccountFactory",
|
||||
constructorParams: [TEST_ACCOUNT_A.address, ENTRYPOINT_ADDRESS_v0_6],
|
||||
});
|
||||
const [tx1Result, tx2Result] = await Promise.all([
|
||||
simulateTransaction({ transaction: tx1 }),
|
||||
simulateTransaction({ transaction: tx2 }),
|
||||
]);
|
||||
expect(tx1Result !== tx2Result).toBe(true);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,55 @@
|
||||
import { prepareTransaction } from "../../transaction/prepare-transaction.js";
|
||||
import { computeDeploymentInfoFromContractId } from "../../utils/any-evm/compute-published-contract-deploy-info.js";
|
||||
import type { Prettify } from "../../utils/type-utils.js";
|
||||
import type { ClientAndChain } from "../../utils/types.js";
|
||||
import { computeCreate2FactoryAddress } from "./utils/create-2-factory.js";
|
||||
|
||||
export type DeployDetemisiticParams = Prettify<
|
||||
ClientAndChain & {
|
||||
contractId: string;
|
||||
constructorParams: unknown[];
|
||||
publisher?: string;
|
||||
version?: string;
|
||||
salt?: string;
|
||||
}
|
||||
>;
|
||||
|
||||
/**
|
||||
* Deploy a contract deterministically - will maintain the same address across chains.
|
||||
* This is meant to be used with published contracts configured with the 'direct deploy' method.
|
||||
* Under the hood, this uses a keyless transaction with a common create2 factory.
|
||||
* @param options - the options to deploy the contract
|
||||
* @returns - the transaction to deploy the contract
|
||||
* @extension DEPLOY
|
||||
* @example
|
||||
* ```ts
|
||||
* import { prepareDeterministicDeployTransaction } from "thirdweb/deploys";
|
||||
* import { sepolia } from "thirdweb/chains";
|
||||
*
|
||||
* const tx = prepareDeterministicDeployTransaction({
|
||||
* client,
|
||||
* chain: sepolia,
|
||||
* contractId: "AccountFactory",
|
||||
* constructorParams: [123],
|
||||
* });
|
||||
* ```
|
||||
*/
|
||||
export function prepareDeterministicDeployTransaction(
|
||||
options: DeployDetemisiticParams,
|
||||
) {
|
||||
const { client, chain } = options;
|
||||
return prepareTransaction({
|
||||
client,
|
||||
chain,
|
||||
to: () =>
|
||||
computeCreate2FactoryAddress({
|
||||
client,
|
||||
chain,
|
||||
}),
|
||||
data: async () => {
|
||||
const infraContractInfo =
|
||||
await computeDeploymentInfoFromContractId(options);
|
||||
return infraContractInfo.initBytecodeWithsalt;
|
||||
},
|
||||
});
|
||||
}
|
||||
@@ -33,7 +33,7 @@ export type PrepareDirectDeployTransactionOptions<
|
||||
* @returns - The prepared transaction.
|
||||
* @example
|
||||
* ```ts
|
||||
* import { prepareDirectDeployTransaction } from "thirdweb/contract";
|
||||
* import { prepareDirectDeployTransaction } from "thirdweb/deploys";
|
||||
* import { ethereum } from "thirdweb/chains";
|
||||
* const tx = prepareDirectDeployTransaction({
|
||||
* client,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user