tronbox
Version:
TronBox - Simple development framework for Tron
1 lines • 8.45 kB
JavaScript
;var _=require("lodash");var path=require("path");var _require=require("./TronWrap"),constants=_require.constants,TronWeb=_require.TronWeb;var Provider=require("./Provider");var TruffleError=require("@truffle/error");var Module=require("module");var findUp=require("find-up");var originalrequire=require("original-require");var DEFAULT_CONFIG_FILENAME="tronbox.js";var BACKUP_CONFIG_FILENAME="tronbox-config.js";var EVM_CONFIG_FILENAME="tronbox-evm-config.js";function Config(truffle_directory,working_directory,network){var self=this;var default_tx_values=constants.deployParameters;this._values={truffle_directory:truffle_directory||path.resolve(path.join(__dirname,"../")),working_directory:working_directory||process.cwd(),network:network,networks:{},verboseRpc:false,privateKey:null,fullHost:null,fullNode:null,solidityNode:null,eventServer:null,feeLimit:null,userFeePercentage:null,originEnergyLimit:null,tokenValue:null,tokenId:null,callValue:null,from:null,build:null,resolver:null,artifactor:null,ethpm:{ipfs_host:"ipfs.infura.io",ipfs_protocol:"https",registry:"0x8011df4830b4f696cd81393997e5371b93338878",install_provider_uri:"https://ropsten.infura.io/truffle"},solc:{},logger:{log:function log(){}}};var props={truffle_directory:function truffle_directory(){},working_directory:function working_directory(){},network:function network(){},networks:function networks(){},verboseRpc:function verboseRpc(){},build:function build(){},resolver:function resolver(){},artifactor:function artifactor(){},ethpm:function ethpm(){},solc:function solc(){},logger:function logger(){},build_directory:function build_directory(){return path.join(self.working_directory,"build")},contracts_directory:function contracts_directory(){return path.join(self.working_directory,"contracts")},contracts_build_directory:function contracts_build_directory(){return path.join(self.build_directory,"contracts")},migrations_directory:function migrations_directory(){return path.join(self.working_directory,"migrations")},test_directory:function test_directory(){return path.join(self.working_directory,"test")},test_file_extension_regexp:function test_file_extension_regexp(){return /.*\.(js|es|es6|jsx|sol)$/},example_project_directory:function example_project_directory(){return path.join(self.truffle_directory,"example")},network_id:{get:function get(){try{return self.network_config.network_id}catch(e){return null}},set:function set(){throw new Error("Do not set config.network_id. Instead, set config.networks and then config.networks[<network name>].network_id")}},network_config:{get:function get(){var network=self.network;if(!network){throw new Error("Network not set. Cannot determine network to use.")}return _.extend({},default_tx_values,self.networks[network]||{})},set:function set(){throw new Error("Don't set config.network_config. Instead, set config.networks with the desired values.")}},from:{get:function get(){try{return self.network_config.from}catch(e){return default_tx_values.from}},set:function set(){throw new Error("Don't set config.from directly. Instead, set config.networks and then config.networks[<network name>].from")}},privateKey:{get:function(){var _privateKey_cached=null;return function(){try{var network_config=self.network_config;if(network_config.mnemonic){if(_privateKey_cached===null){var mnemonic=network_config.mnemonic,_path=network_config.path;_privateKey_cached=TronWeb.fromMnemonic(mnemonic,_path).privateKey.slice(2);network_config.privateKey=_privateKey_cached}}return network_config.privateKey}catch(e){return default_tx_values.privateKey}}}(),set:function set(){throw new Error("Don't set config.privateKey directly. Instead, set config.networks and then config.networks[<network name>].privateKey")}},fullNode:{get:function get(){try{return self.network_config.fullNode}catch(e){return default_tx_values.fullNode}},set:function set(){throw new Error("Don't set config.fullNode directly. Instead, set config.networks and then config.networks[<network name>].fullNode")}},fullHost:{get:function get(){try{return self.network_config.fullHost}catch(e){return default_tx_values.fullHost}},set:function set(){throw new Error("Don't set config.fullHost directly. Instead, set config.networks and then config.networks[<network name>].fullHost")}},solidityNode:{get:function get(){try{return self.network_config.solidityNode}catch(e){return default_tx_values.solidityNode}},set:function set(){throw new Error("Don't set config.solidityNode directly. Instead, set config.networks and then config.networks[<network name>].solidityNode")}},eventServer:{get:function get(){try{return self.network_config.eventServer}catch(e){return default_tx_values.eventServer}},set:function set(){throw new Error("Don't set config.eventServer directly. Instead, set config.networks and then config.networks[<network name>].eventServer")}},userFeePercentage:{get:function get(){try{return self.network_config.userFeePercentage||self.network_config.consume_user_resource_percent}catch(e){return default_tx_values.userFeePercentage}},set:function set(){throw new Error("Don't set config.userFeePercentage directly. Instead, set config.networks and then config.networks[<network name>].userFeePercentage")}},feeLimit:{get:function get(){try{return self.network_config.feeLimit||self.network_config.fee_limit}catch(e){return default_tx_values.feeLimit}},set:function set(){throw new Error("Don't set config.feeLimit directly. Instead, set config.networks and then config.networks[<network name>].feeLimit")}},originEnergyLimit:{get:function get(){try{return self.network_config.originEnergyLimit}catch(e){return default_tx_values.originEnergyLimit}},set:function set(){throw new Error("Don't set config.originEnergyLimit directly. Instead, set config.networks and then config.networks[<network name>].originEnergyLimit")}},tokenValue:{get:function get(){try{return self.network_config.tokenValue}catch(e){}},set:function set(){throw new Error("Don't set config.tokenValue directly. Instead, set config.networks and then config.networks[<network name>].tokenValue")}},tokenId:{get:function get(){try{return self.network_config.tokenId}catch(e){}},set:function set(){throw new Error("Don't set config.tokenId directly. Instead, set config.networks and then config.networks[<network name>].tokenId")}},provider:{get:function get(){if(!self.network){return null}var options=self.network_config;options.verboseRpc=self.verboseRpc;return Provider.create(options)},set:function set(){throw new Error("Don't set config.provider directly. Instead, set config.networks and then set config.networks[<network name>].provider")}},callValue:{get:function get(){try{return self.network_config.callValue||self.network_config.call_value}catch(e){return default_tx_values.callValue}},set:function set(){throw new Error("Don't set config.callValue directly. Instead, set config.networks and then config.networks[<network name>].callValue")}}};Object.keys(props).forEach(function(prop){self.addProp(prop,props[prop])})}Config.prototype.addProp=function(key,obj){Object.defineProperty(this,key,{get:obj.get||function(){return this._values[key]||obj()},set:obj.set||function(val){this._values[key]=val},configurable:true,enumerable:true})};Config.prototype.normalize=function(obj){var clone={};Object.keys(obj).forEach(function(key){try{clone[key]=obj[key]}catch(e){}});return clone};Config.prototype["with"]=function(obj){var normalized=this.normalize(obj);var current=this.normalize(this);return _.extend({},current,normalized)};Config.prototype.merge=function(obj){var self=this;var clone=this.normalize(obj);Object.keys(obj).forEach(function(key){try{self[key]=clone[key]}catch(e){}});return this};Config["default"]=function(){return new Config};Config.detect=function(options,filename){var search;!filename?search=[DEFAULT_CONFIG_FILENAME,BACKUP_CONFIG_FILENAME]:search=filename;if(options.evm){!filename?search=[EVM_CONFIG_FILENAME]:search=filename}var file=findUp.sync(search,{cwd:options.working_directory||options.workingDirectory});if(!file){throw new TruffleError("Could not find suitable configuration file.")}return this.load(file,options)};Config.load=function(file,options){var config=new Config;config.working_directory=path.dirname(path.resolve(file));delete require.cache[Module._resolveFilename(file,module)];var static_config=originalrequire(file);config.merge(static_config);config.merge(options);return config};module.exports=Config;