harsta
Version:
Harsta is a contract development tool based on Hardhat, designed to streamline the development, testing, and referencing of contracts, addresses, ABIs, and contract instances.
2 lines (1 loc) • 4.07 kB
JavaScript
import r from"pathe";import u from"pathe";import{resolveImport as l}from"resolve-import-path";var a=process.env.userRoot||process.cwd().replace(/\\/g,"/"),d=l("@harsta/client/package.json",!1,{basedir:a}),m=process.env.clientRoot||(d?u.dirname(d):void 0),g=process.env.packRoot||u.dirname(l("harsta/package.json",!0)),n=u.resolve(g,"./generated");var e={userConfig:"./config",userFragments:"",userAddresses:"",userTest:"./test",userSources:"./contracts",harstaCache:"./.harsta/cache",harstaArtifacts:"./.harsta/artifacts",harstaDeployments:"./.harsta/deployments",harstaExports:"./.harsta/exports",packDeploy:"./deploy",packSources:"./contracts",generateFactories:"./factories",generateContracts:"./contracts",generateFactoriesTypechain:"./typechains/factories",generateContractsTypechain:"./typechains/contracts",generateFactoriesTypechainIndexTS:"./typechains/factories/index.ts",generateContractsTypechainIndexTS:"./typechains/contracts/index.ts",generateFactoriesFragments:"./fragments/factories",generateContractsFragments:"./fragments/contracts",generateChains:"./chains",generateChainsIndexTS:"./chains/index.ts",generateAddresses:"./addresses",generateAddressesIndexTS:"./addresses/index.ts"},o={get userConfig(){return r.resolve(a,e.userConfig)},get userFragments(){return e.userFragments?r.resolve(a,e.userFragments):r.resolve(a,`${e.userConfig}/fragments`)},get userAddresses(){return e.userAddresses?r.resolve(a,e.userAddresses):r.resolve(a,`${e.userConfig}/addresses`)},get userTest(){return r.resolve(a,e.userTest)},get userSources(){return r.resolve(a,e.userSources)},get harstaCache(){return r.resolve(a,e.harstaCache)},get harstaArtifacts(){return r.resolve(a,e.harstaArtifacts)},get harstaDeployments(){return r.resolve(a,e.harstaDeployments)},get harstaExports(){return r.resolve(a,e.harstaExports)},get packDeploy(){return r.resolve(g,e.packDeploy)},get packSources(){return r.resolve(g,e.packSources)},get generateFactories(){return r.resolve(n,e.generateFactories)},get generateContracts(){return r.resolve(n,e.generateContracts)},get generateFactoriesTypechain(){return r.resolve(n,e.generateFactoriesTypechain)},get generateContractsTypechain(){return r.resolve(n,e.generateContractsTypechain)},get generateFactoriesTypechainIndexTS(){return r.resolve(n,e.generateFactoriesTypechainIndexTS)},get generateContractsTypechainIndexTS(){return r.resolve(n,e.generateContractsTypechainIndexTS)},get generateFactoriesFragments(){return r.resolve(n,e.generateFactoriesFragments)},get generateContractsFragments(){return r.resolve(n,e.generateContractsFragments)},get generateChains(){return r.resolve(n,e.generateChains)},get generateChainsIndexTS(){return r.resolve(n,e.generateChainsIndexTS)},get generateAddresses(){return r.resolve(n,e.generateAddresses)},get generateAddressesIndexTS(){return r.resolve(n,e.generateAddressesIndexTS)}};function S(t){let c={};e.userSources=t.paths?.sources||e.userSources,e.userConfig=t.paths?.config||e.userConfig,e.harstaExports=t.paths?.exports||e.harstaExports;let p={apiKey:{},customChains:[]};for(let i in t.networks){let s=t.networks[i];c[i]={url:s.rpc,chainId:s.id,...s.deploy},s.verify&&(p.apiKey[i]=s.verify.key||" ",c[i].verify={etherscan:{apiUrl:s.verify.api||`${s.verify.uri}/api`,apiKey:s.verify.key||""}},p.customChains.push({chainId:s.id,network:i,urls:{apiURL:s.verify.api||`${s.verify.uri}/api`,browserURL:s.explorer?.url||s.verify.uri||""}}))}let h={sourcify:{enabled:!1},...t,etherscan:p,networks:c,paths:{sources:o.packSources,deploy:o.packDeploy,tests:o.userTest,cache:o.harstaCache,artifacts:o.harstaArtifacts,deployments:o.harstaDeployments},typechain:{outDir:o.generateFactoriesTypechain},abiExporter:{path:o.generateFactoriesFragments}};return h.harsta=t,h}function k(t,c){return{id:t.id,name:t.name,nativeCurrency:t.currency,rpcUrls:{default:{http:[t.rpc].filter(Boolean)},public:{http:[t.rpc].filter(Boolean)}},...t.explorer?{blockExplorers:{default:t.explorer}}:{},iconUrl:t?.icon,testnet:t.testnet,addresses:c||{}}}export{a,d as b,m as c,g as d,n as e,e as f,o as g,S as h,k as i};