module.exports = (() => { const chalk = require('chalk'), getTime = () => { const now = new Date(), tzo = -now.getTimezoneOffset(), dif = tzo >= 0 ? '+' : '-', pad = (num) => { const norm = Math.floor(Math.abs(num)); return `${norm < 10 ? '0' : ''}${norm}`; }; return [ now.getFullYear(), '-', pad(now.getMonth() + 1), '-', pad(now.getDate()), 'T', pad(now.getHours()), ':', pad(now.getMinutes()), ':', pad(now.getSeconds()), dif, pad(tzo / 60), ':', pad(tzo % 60) ].join(''); }; return { convertCamelToUpperSnakeCase: str => str.replace(/[A-Z]/g, letter => `_${letter}`).toUpperCase(), getTime, log: (msg) => console.log(`${chalk.grey(`${getTime()}:`)} ${msg}`), readJsonIfExists: (filePath) => { const fs = require('fs'), json5 = require('json5'); try { return json5.parse(fs.readFileSync(filePath, {encoding: 'utf8'})); } catch (err) { if (err.code === 'ENOENT') return {}; throw err; } }, }; })();