Skip to content

Commit

Permalink
Generate contracts and addresses in typescript file using wagmi + exp…
Browse files Browse the repository at this point in the history
…ort them in bundled package (ourzora#116)

* Use wagmi to generated bundled packages

* remove merkletreejs

* fix types node import and copy configs to the published package

* bundling change configs into built package

Defined formatting rules;  Added better comments around
chain config building
  • Loading branch information
oveddan authored May 12, 2023
1 parent 6ee95f0 commit 9e9ff2d
Show file tree
Hide file tree
Showing 10 changed files with 3,700 additions and 433 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ cache
.env.*
dist/
.idea
broadcast
broadcast
4 changes: 4 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
{
"semi": true,
"trailingComma": "none",
"singleQuote": true,
"printWidth": 80,
"overrides": [
{
"files": "*.sol",
Expand Down
36 changes: 36 additions & 0 deletions js-scripts/bundle-chainConfigs.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { readdirSync, readFileSync, writeFileSync } from 'fs';

// Reads all the chain configs in ./chainConfigs folder, and bundles them into a typescript
// definition that looks like:
// export const chainConfigs = {
// [chainId]: {
// ...chainConfig
// }
//}
function makeConfig() {
// read all files in the chainConfigs folder
const files = readdirSync('chainConfigs');

// combine them into a single mapping
const chainConfigsInner = files
.map((fileName) => {
const chainId = fileName.split('.')[0];

const fileContents = JSON.parse(readFileSync(`chainConfigs/${fileName}`));

return `[${chainId}]: ${JSON.stringify(fileContents, null, 2)}`;
})
.join(', ');

return `export const chainConfigs = {
${chainConfigsInner}
};`;
}

async function bundleChainConfigs() {
const configString = makeConfig();

writeFileSync('./package/chainConfigs.ts', configString);
}

await bundleChainConfigs();
18 changes: 16 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,22 @@
"addresses",
"dist/artifacts/*"
],
"main": "./dist/index.js",
"types": "./dist/index.d.ts",
"scripts": {
"test": "forge test",
"generate-merkle-test-file": "node scripts/merkle-test.mjs",
"clean": "rm -rf ./dist/",
"prepack": "node js-scripts/copy-latest-deployment-addresses.mjs && yarn run wagmi && yarn build-ts && yarn copy-addresses-and-configs",
"deploy": "node scripts/deploy.mjs",
"coverage": "forge coverage --report lcov",
"build": "forge build",
"build-ts": "tsup package/index.ts --format cjs --dts --sourcemap",
"bundle-configs": "node js-scripts/bundle-chainConfigs.mjs && yarn format",
"prettier": "npx prettier \"js-scripts/**/*.mjs\" \"package/**/*.ts\" \"wagmi.config.ts\" --check",
"prettier:fix": "npm run prettier -- --write",
"copy-addresses-and-configs": "cp -r addresses/ dist/addresses && cp -r chainConfigs/ dist/chainConfigs",
"wagmi": "wagmi generate",
"storage-inspect:check": "./script/storage-check.sh check ERC721Drop ERC721DropProxy FactoryUpgradeGate ZoraNFTCreatorProxy ZoraNFTCreatorV1",
"storage-inspect:generate": "./script/storage-check.sh generate ERC721Drop ERC721DropProxy FactoryUpgradeGate ZoraNFTCreatorProxy ZoraNFTCreatorV1"
},
Expand All @@ -26,12 +36,16 @@
"@ethersproject/address": "^5.7.0",
"@ethersproject/bytes": "^5.7.0",
"@ethersproject/units": "^5.7.0",
"@types/node": "^20.1.2",
"@wagmi/cli": "^1.0.1",
"dotenv": "^10.0.0",
"ejs": "^3.1.7",
"es-main": "^1.0.2",
"glob": "^10.2.2",
"glob": "^10.2.3",
"keccak256": "^1.0.6",
"merkletreejs": "0.2.31"
"prettier": "^2.8.8",
"tsup": "^6.7.0",
"typescript": "^5.0.4"
},
"dependencies": {
"@dotenv/cli": "^2.2.2"
Expand Down
68 changes: 68 additions & 0 deletions package/chainConfigs.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
export const chainConfigs = {
[1]: {
FACTORY_OWNER: '0xd1d1D4e36117aB794ec5d4c78cBD3a8904E691D0',
FACTORY_UPGRADE_GATE_OWNER: '0xd1d1D4e36117aB794ec5d4c78cBD3a8904E691D0',
MINT_FEE_AMOUNT: 777000000000000,
MINT_FEE_RECIPIENT: '0xd1d1D4e36117aB794ec5d4c78cBD3a8904E691D0',
SUBSCRIPTION_MARKET_FILTER_ADDRESS:
'0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6',
SUBSCRIPTION_MARKET_FILTER_OWNER:
'0x9AaC739c133074dB445183A95149880a2156541A',
ZORA_ERC721_TRANSFER_HELPER: '0x909e9efE4D87d1a6018C2065aE642b6D0447bc91'
},
[10]: {
FACTORY_OWNER: '0x7A810DCd0f8d83B20212326813Db6EF7E9FD030c',
FACTORY_UPGRADE_GATE_OWNER: '0x7A810DCd0f8d83B20212326813Db6EF7E9FD030c',
MINT_FEE_AMOUNT: 777000000000000,
MINT_FEE_RECIPIENT: '0x7A810DCd0f8d83B20212326813Db6EF7E9FD030c',
SUBSCRIPTION_MARKET_FILTER_ADDRESS:
'0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6',
SUBSCRIPTION_MARKET_FILTER_OWNER:
'0xe3A6CD067a1193b903143C36dA00557c9d95C41e',
ZORA_ERC721_TRANSFER_HELPER: '0x0000000000000000000000000000000000000000'
},
[11155111]: {
FACTORY_OWNER: '0xE51051a204afb2fC071A2406914cdEA5638e5018',
FACTORY_UPGRADE_GATE_OWNER: '0xE51051a204afb2fC071A2406914cdEA5638e5018',
MINT_FEE_AMOUNT: 111000000000000,
MINT_FEE_RECIPIENT: '0xE51051a204afb2fC071A2406914cdEA5638e5018',
SUBSCRIPTION_MARKET_FILTER_ADDRESS:
'0x9B414A3F7872bdd2E6513689214BD2Debbe48340',
SUBSCRIPTION_MARKET_FILTER_OWNER:
'0xE51051a204afb2fC071A2406914cdEA5638e5018',
ZORA_ERC721_TRANSFER_HELPER: '0x0000000000000000000000000000000000000000'
},
[420]: {
FACTORY_OWNER: '0x11cf5F667dC6AD4dEE58CB07e4AAc6a3fc7E1DCb',
FACTORY_UPGRADE_GATE_OWNER: '0x11cf5F667dC6AD4dEE58CB07e4AAc6a3fc7E1DCb',
MINT_FEE_AMOUNT: 777000000000000,
MINT_FEE_RECIPIENT: '0x11cf5F667dC6AD4dEE58CB07e4AAc6a3fc7E1DCb',
SUBSCRIPTION_MARKET_FILTER_ADDRESS:
'0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6',
SUBSCRIPTION_MARKET_FILTER_OWNER:
'0xe3A6CD067a1193b903143C36dA00557c9d95C41e',
ZORA_ERC721_TRANSFER_HELPER: '0x0000000000000000000000000000000000000000'
},
[5]: {
FACTORY_OWNER: '0xDC498668B5e6CC518fD58A2ADBF614Fd3A13D3a0',
FACTORY_UPGRADE_GATE_OWNER: '0xDC498668B5e6CC518fD58A2ADBF614Fd3A13D3a0',
MINT_FEE_AMOUNT: 777000000000000,
MINT_FEE_RECIPIENT: '0xDC498668B5e6CC518fD58A2ADBF614Fd3A13D3a0',
SUBSCRIPTION_MARKET_FILTER_ADDRESS:
'0x3cc6CddA760b79bAfa08dF41ECFA224f810dCeB6',
SUBSCRIPTION_MARKET_FILTER_OWNER:
'0x9AaC739c133074dB445183A95149880a2156541A',
ZORA_ERC721_TRANSFER_HELPER: '0xd1adAF05575295710dE1145c3c9427c364A70a7f'
},
[84531]: {
FACTORY_OWNER: '0x02539E813cA450C2c7334e885423f4A899a063Fe',
FACTORY_UPGRADE_GATE_OWNER: '0x02539E813cA450C2c7334e885423f4A899a063Fe',
MINT_FEE_AMOUNT: 111000000000000,
MINT_FEE_RECIPIENT: '0x02539E813cA450C2c7334e885423f4A899a063Fe',
SUBSCRIPTION_MARKET_FILTER_ADDRESS:
'0x9B414A3F7872bdd2E6513689214BD2Debbe48340',
SUBSCRIPTION_MARKET_FILTER_OWNER:
'0x02539E813cA450C2c7334e885423f4A899a063Fe',
ZORA_ERC721_TRANSFER_HELPER: '0xd1adAF05575295710dE1145c3c9427c364A70a7f'
}
};
2 changes: 2 additions & 0 deletions package/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './wagmiGenerated';
export { chainConfigs } from './chainConfigs';
Loading

0 comments on commit 9e9ff2d

Please sign in to comment.