Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'embark-utils' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
mnemonicAccount = mnemonicAccount || {};
const simulatorMnemonic = mnemonicAccount.mnemonic || options.simulatorMnemonic;
if (simulatorMnemonic) {
cmds.push("--mnemonic \"" + (simulatorMnemonic) + "\"");
}
cmds.push("-a " + (options.numAccounts || mnemonicAccount.numAddresses || 10));
cmds.push("-e " + (options.defaultBalance || mnemonicAccount.balance || 100));
// as ganache-cli documentation explains, the simulatorAccounts configuration overrides a mnemonic
let simulatorAccounts = this.blockchainConfig.simulatorAccounts || options.simulatorAccounts;
if (simulatorAccounts && simulatorAccounts.length > 0) {
let web3 = new (require('web3'))();
let parsedAccounts;
try {
parsedAccounts = AccountParser.parseAccountsConfig(simulatorAccounts, web3, dappPath(), this.logger);
} catch (e) {
this.logger.error(e.message);
process.exit(1);
}
parsedAccounts.forEach((account) => {
let cmd = '--account="' + account.privateKey + ',' + account.hexBalance + '"';
cmds.push(cmd);
});
}
// adding blocktime only if it is defined in the blockchainConfig or options
let simulatorBlocktime = this.blockchainConfig.simulatorBlocktime || options.simulatorBlocktime;
if (simulatorBlocktime) {
cmds.push("-b \"" + (simulatorBlocktime) + "\"");
}
mnemonicAccount = mnemonicAccount || {};
const simulatorMnemonic = mnemonicAccount.mnemonic || options.simulatorMnemonic;
if (simulatorMnemonic) {
cmds.push("--mnemonic \"" + (simulatorMnemonic) + "\"");
}
cmds.push("-a " + (options.numAccounts || mnemonicAccount.numAddresses || 10));
cmds.push("-e " + (options.defaultBalance || mnemonicAccount.balance || 100));
// as ganache-cli documentation explains, the simulatorAccounts configuration overrides a mnemonic
let simulatorAccounts = this.blockchainConfig.simulatorAccounts || options.simulatorAccounts;
if (simulatorAccounts && simulatorAccounts.length > 0) {
let web3 = new (require('web3'))();
let parsedAccounts;
try {
parsedAccounts = AccountParser.parseAccountsConfig(simulatorAccounts, web3, dappPath(), this.logger);
} catch (e) {
this.logger.error(e.message);
process.exit(1);
}
parsedAccounts.forEach((account) => {
let cmd = '--account="' + account.privateKey + ',' + account.hexBalance + '"';
cmds.push(cmd);
});
}
// adding blocktime only if it is defined in the blockchainConfig or options
let simulatorBlocktime = this.blockchainConfig.simulatorBlocktime || options.simulatorBlocktime;
if (simulatorBlocktime) {
cmds.push("-b \"" + (simulatorBlocktime) + "\"");
}
checkPathLength() {
let _dappPath = dappPath('');
if (_dappPath.length > 66) {
// this.logger.error is captured and sent to the console output regardless of silent setting
this.logger.error("===============================================================================".yellow);
this.logger.error("===========> ".yellow + __('WARNING! ÐApp path length is too long: ').yellow + _dappPath.yellow);
this.logger.error("===========> ".yellow + __('This is known to cause issues with starting geth, please consider reducing your ÐApp path\'s length to 66 characters or less.').yellow);
this.logger.error("===============================================================================".yellow);
}
}
private async parseAndFundAccounts() {
const web3 = await this.web3;
const accounts = await this.accounts;
if (!accounts.length || !this.embark.config.blockchainConfig.isDev) {
return;
}
try {
const coinbase = await web3.eth.getCoinbase();
const acctsFromConfig = AccountParser.parseAccountsConfig(this.embark.config.blockchainConfig.accounts, web3, dappPath(), this.logger, accounts);
const accountsWithBalance = accounts.map((address) => {
const acctFromConfig = acctsFromConfig.find((acctCfg) => acctCfg.address === address);
return {
address,
hexBalance: acctFromConfig ? acctFromConfig.hexBalance : undefined
};
});
async.eachLimit(accountsWithBalance, 1, (acct, eachCb) => {
fundAccount(web3, acct.address, coinbase, acct.hexBalance)
.then(() => {
eachCb();
})
.catch(eachCb);
});
} catch (err) {
_getFileOrObject(object, filePath, property) {
if (typeof object === 'object') {
return object[property] ? dappPath(object[property]) : object[property];
}
return dappPath(object, filePath);
}
_getFileOrObject(object, filePath, property) {
if (typeof object === 'object') {
return object[property] ? dappPath(object[property]) : object[property];
}
return dappPath(object, filePath);
}
constructor(embark, web3, blockchainName) {
this.embark = embark;
this.blockchainName = blockchainName;
this.web3 = web3;
this.requestManager = new Manager(web3.currentProvider);
this.fs = embark.fs;
this.logFile = dappPath(".embark", "contractEvents.json");
}
self.events.request('code-generator:contract', contract.className, (err, contractPath) => {
if (err) {
return eachCb(err);
}
importsList["Embark/contracts/" + contract.className] = dappPath(contractPath);
eachCb();
});
}, next);
private saveFile(contractName: string, code: string) {
const filename = `${contractName}.sol`;
const contractDirs = this.embark.config.embarkConfig.contracts;
const contractDir = Array.isArray(contractDirs) ? contractDirs[0] : contractDirs;
const filePath = dappPath(contractDir.replace(/\*/g, ""), filename);
if (!this.options.overwrite && this.embark.fs.existsSync(filePath)) {
this.embark.logger.error(__(`The contract ${contractName} already exists, skipping.`));
return;
}
this.embark.fs.writeFileSync(filePath, code);
return filePath;
}
private installDependencies() {
let pkgManager = 'npm install';
if (this.embark.fs.existsSync(utils.dappPath('yarn.lock'))) {
pkgManager = 'yarn add';
}
const cmd = `${pkgManager} react react-bootstrap@^0.33.1 react-dom`;
return new Promise((resolve, reject) => {
utils.runCmd(cmd, null, (error: string) => {
if (error) {
return reject(new Error(error));
}
resolve();
});
});
}