utils/lib/esm/utils.js

67 lines
8.1 KiB
JavaScript
Raw Normal View History

2024-01-27 21:29:33 +00:00
"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+IHtcblx0Ly8gZ2V0IHRoZSBzdGFja1xuXHRjb25zdCB7IHN0YWNrIH0gPSBuZXcgRXJyb3IoKTtcblx0Ly8gZ2V0IHRoZSB0aGlyZCBsaW5lICh0aGUgb3JpZ2luYWwgaW52b2tlcilcblx0Y29uc3QgaW52b2tlRmlsZUxpbmUgPSAoc3RhY2sgfHwgXCJcIikuc3BsaXQoYFxcbmApWzJdO1xuXHQvLyBtYXRjaCB0aGUgZmlsZSB1cmwgZnJvbSBmaWxlOi8vKC4rLih0c3xqcykpIGFuZCBnZXQgdGhlIGZpcnN0IGNhcHR1cmluZyBncm91cFxuXHRjb25zdCBfX2ZpbGVuYW1lID0gKGludm9rZUZpbGVMaW5lLm1hdGNoKC9maWxlOlxcL1xcLyguKy4odHN8anMpKS8pIHx8XG5cdFx0W10pWzFdLnNsaWNlKDEpO1xuXHQvLyBtYXRjaCB0aGUgZmlsZSBVUkwgZnJvb