"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.readJsonIfExists = exports.log = exports.getTime = exports.getDirname = exports.convertCamelToUpperSnakeCase = void 0; const chalk_1 = __importDefault(require("chalk")); const fs_1 = __importDefault(require("fs")); const json5_1 = __importDefault(require("json5")); const convertCamelToUpperSnakeCase = (str) => str.replace(/[A-Z]/g, (letter) => `_${letter}`).toUpperCase(); exports.convertCamelToUpperSnakeCase = convertCamelToUpperSnakeCase; /** * From: https://www.webmanajemen.com/2022/05/use-import-meta-cjs.html */ const getDirname = () => { // get the stack const { stack } = new Error(); // get the third line (the original invoker) const invokeFileLine = (stack || "").split(`\n`)[2]; // match the file url from file://(.+.(ts|js)) and get the first capturing group const __filename = (invokeFileLine.match(/file:\/\/(.+.(ts|js))/) || [])[1].slice(1); // match the file URL from file://(.+)/ and get the first capturing group // the (.+) is a greedy quantifier and will make the RegExp expand to the largest match const __dirname = (invokeFileLine.match(/file:\/\/(.+)\//) || [])[1].slice(1); return { __dirname, __filename }; }; exports.getDirname = getDirname; const 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(""); }; exports.getTime = getTime; const log = (...msg) => console.log(`${chalk_1.default.grey(`${(0, exports.getTime)()}:`)} ${msg}`); exports.log = log; const readJsonIfExists = (filePath) => { try { return json5_1.default.parse(fs_1.default.readFileSync(filePath, { encoding: "utf8" })); } catch (err) { // if no file, return empty object if (err?.code === "ENOENT") return {}; throw err; } }; exports.readJsonIfExists = readJsonIfExists; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsa0RBQTBCO0FBQzFCLDRDQUFvQjtBQUNwQixrREFBMEI7QUFNbkIsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQzNELEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE1BQU0sRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7QUFEbEQsUUFBQSw0QkFBNEIsZ0NBQ3NCO0FBRS9EOztHQUVHO0FBQ0ksTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFO0lBQzlCLGdCQUFnQjtJQUNoQixNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztJQUM5Qiw0Q0FBNEM7SUFDNUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELGdGQUFnRjtJQUNoRixNQUFNLFVBQVUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUM7UUFDaEUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLHlFQUF5RTtJQUN6RSwyRkFBMkY7SUFDM0YsTUFBTSxTQUFTLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBWlcsUUFBQSxVQUFVLGNBWXJCO0FBRUssTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO0lBQzNCLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLEVBQ3JCLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxFQUM5QixHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQzFCLEdBQUcsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFFO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDLENBQUM7SUFDSCxPQUFPO1FBQ04sR0FBRyxDQUFDLFdBQVcsRUFBRTtRQUNqQixHQUFHO1FBQ0gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDdkIsR0FBRztRQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbEIsR0FBRztRQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkIsR0FBRztRQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDckIsR0FBRztRQUNILEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDckIsR0FBRztRQUNILEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2IsR0FBRztRQUNILEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0tBQ2IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDWixDQUFDLENBQUM7QUF6QlcsUUFBQSxPQUFPLFdBeUJsQjtBQUVLLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFjLEVBQUUsRUFBRSxDQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsZUFBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUEsZUFBTyxHQUFFLEdBQUcsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFEekMsUUFBQSxHQUFHLE9BQ3NDO0FBRS9DLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxRQUFzQixFQUFFLEVBQUU7SUFDMUQsSUFBSSxDQUFDO1FBQ0osT0FBTyxlQUFLLENBQUMsS0FBSyxDQUFDLFlBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNkLGtDQUFrQztRQUNsQyxJQUFLLEdBQXFCLEVBQUUsSUFBSSxLQUFLLFFBQVE7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUN6RCxNQUFNLEdBQUcsQ0FBQztJQUNYLENBQUM7QUFDRixDQUFDLENBQUM7QUFSVyxRQUFBLGdCQUFnQixvQkFRM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSBcImNoYWxrXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQganNvbjUgZnJvbSBcImpzb241XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXJyb3JXaXRoQ29kZSB7XG5cdGNvZGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRDYW1lbFRvVXBwZXJTbmFrZUNhc2UgPSAoc3RyOiBzdHJpbmcpID0+XG5cdHN0ci5yZXBsYWNlKC9bQS1aXS9nLCAobGV0dGVyKSA9PiBgXyR7bGV0dGVyfWApLnRvVXBwZXJDYXNlKCk7XG5cbi8qKlxuICogRnJvbTogaHR0cHM6Ly93d3cud2VibWFuYWplbWVuLmNvbS8yMDIyLzA1L3VzZS1pbXBvcnQtbWV0YS1janMuaHRtbFxuICovXG5leHBvcnQgY29uc3QgZ2V0RGlybmFtZSA9ICgpID0+IHtcblx0Ly8gZ2V0IHRoZSBzdGFja1xuXHRjb25zdCB7IHN0YWNrIH0gPSBuZXcgRXJyb3IoKTtcblx0Ly8gZ2V0IHRoZSB0aGlyZCBsaW5lICh0aGUgb3JpZ2luYWwgaW52b2tlcilcblx0Y29uc3QgaW52b2tlRmlsZUxpbmUgPSAoc3RhY2sgfHwgXCJcIikuc3BsaXQoYFxcbmApWzJdO1xuXHQvLyBtYXRjaCB0aGUgZmlsZSB1cmwgZnJvbSBmaWxlOi8vKC4rLih0c3xqcykpIGFuZCBnZXQgdGhlIGZpcnN0IGNhcHR1cmluZyBncm91cFxuXHRjb25zdCBfX2ZpbGVuYW1lID0gKGludm9rZUZpbGVMaW5lLm1hdGNoKC9maWxlOlxcL1xcLyguKy4odHN8anMpKS8pIHx8XG5cdFx0W10pWzFdLnNsaWNlKDEpO1xuXHQvLyBtYXRjaCB0aGUgZmlsZSBVUkwgZnJvbSBmaWxlOi8vKC4rKS8gYW5kIGdldCB0aGUgZmlyc3QgY2FwdHVyaW5nIGdyb3VwXG5cdC8vICAgICB0aGUgKC4rKSBpcyBhIGdyZWVkeSBxdWFudGlmaWVyIGFuZCB3aWxsIG1ha2UgdGhlIFJlZ0V4cCBleHBhbmQgdG8gdGhlIGxhcmdlc3QgbWF0Y2hcblx0Y29uc3QgX19kaXJuYW1lID0gKGludm9rZUZpbGVMaW5lLm1hdGNoKC9maWxlOlxcL1xcLyguKylcXC8vKSB8fCBbXSlbMV0uc2xpY2UoMSk7XG5cdHJldHVybiB7IF9fZGlybmFtZSwgX19maWxlbmFtZSB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpbWUgPSAoKSA9PiB7XG5cdGNvbnN0IG5vdyA9IG5ldyBEYXRlKCksXG5cdFx0dHpvID0gLW5vdy5nZXRUaW1lem9uZU9mZnNldCgpLFxuXHRcdGRpZiA9IHR6byA+PSAwID8gXCIrXCIgOiBcIi1cIixcblx0XHRwYWQgPSAobnVtOiBudW1iZXIpID0+IHtcblx0XHRcdGNvbnN0IG5vcm0gPSBNYXRoLmZsb29yKE1hdGguYWJzKG51bSkpO1xuXHRcdFx0cmV0dXJuIGAke25vcm0gPCAxMCA/IFwiMFwiIDogXCJcIn0ke25vcm19YDtcblx0XHR9O1xuXHRyZXR1cm4gW1xuXHRcdG5vdy5nZXRGdWxsWWVhcigpLFxuXHRcdFwiLVwiLFxuXHRcdHBhZChub3cuZ2V0TW9udGgoKSArIDEpLFxuXHRcdFwiLVwiLFxuXHRcdHBhZChub3cuZ2V0RGF0ZSgpKSxcblx0XHRcIlRcIixcblx0XHRwYWQobm93LmdldEhvdXJzKCkpLFxuXHRcdFwiOlwiLFxuXHRcdHBhZChub3cuZ2V0TWludXRlcygpKSxcblx0XHRcIjpcIixcblx0XHRwYWQobm93LmdldFNlY29uZHMoKSksXG5cdFx0ZGlmLFxuXHRcdHBhZCh0em8gLyA2MCksXG5cdFx0XCI6XCIsXG5cdFx0cGFkKHR6byAlIDYwKSxcblx0XS5qb2luKFwiXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGxvZyA9ICguLi5tc2c6IHVua25vd25bXSkgPT5cblx0Y29uc29sZS5sb2coYCR7Y2hhbGsuZ3JleShgJHtnZXRUaW1lKCl9OmApfSAke21zZ31gKTtcblxuZXhwb3J0IGNvbnN0IHJlYWRKc29uSWZFeGlzdHMgPSAoZmlsZVBhdGg6IHN0cmluZyB8IFVSTCkgPT4ge1xuXHR0cnkge1xuXHRcdHJldHVybiBqc29uNS5wYXJzZShmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIHsgZW5jb2Rpbmc6IFwidXRmOFwiIH0pKTtcblx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0Ly8gaWYgbm8gZmlsZSwgcmV0dXJuIGVtcHR5IG9iamVjdFxuXHRcdGlmICgoZXJyIGFzIEVycm9yV2l0aENvZGUpPy5jb2RlID09PSBcIkVOT0VOVFwiKSByZXR1cm4ge307XG5cdFx0dGhyb3cgZXJyO1xuXHR9XG59O1xuIl19