@liangskyli/utils
Version:
@liangskyli/utils
132 lines (126 loc) • 3.52 kB
JavaScript
export { ip } from 'address';
export { default as colors } from 'colors';
export { default as createDebug } from 'debug';
export { default as lodash } from 'lodash';
export { default as signale } from 'signale';
import { createRequire } from 'node:module';
import { register as register$2 } from 'esbuild-register/dist/node';
import fs from 'fs-extra';
import path from 'node:path';
import prettier from 'prettier';
let revertList = [];
const register = (opts) => {
const { key, ...otherOpts } = opts;
if (revertList.filter((item) => item.key === key).length > 0) {
throw Error('register key have exist!');
}
const revert = register$2({
target: `node${process.version.slice(1)}`,
...otherOpts,
}).unregister;
revertList.push({ key, revert });
const unregister = () => {
revert();
revertList = revertList.filter((item) => item.key !== key);
};
return {
unregister,
};
};
const restore = () => {
revertList.forEach(({ revert }) => {
revert();
});
revertList = [];
};
const unregister = (key) => {
revertList = revertList
.map((item) => {
if (item.key === key) {
item.revert();
return true;
}
else {
return item;
}
})
.filter((item) => item !== true);
};
var register$1 = /*#__PURE__*/Object.freeze({
__proto__: null,
register: register,
restore: restore,
unregister: unregister
});
const require = createRequire(import.meta.url);
const getConfig = (configFile) => {
let config = null;
const { unregister } = register({ key: 'utils-getConfig' });
let errInfo = null;
try {
config = require(configFile).default;
}
catch (err) {
errInfo = err;
}
finally {
unregister();
}
if (errInfo !== null) {
throw errInfo;
}
return config;
};
const getAbsolutePath = (pathName) => {
return path.isAbsolute(pathName)
? pathName
: path.join(process.cwd(), pathName);
};
const getRelativePath = (absolutePath1, absolutePath2) => {
return path.relative(absolutePath1, absolutePath2);
};
const prettierData = async (fileContent, options) => {
const configFile = await prettier.resolveConfigFile();
let configFileOptions = null;
if (configFile !== null) {
configFileOptions = await prettier.resolveConfig(configFile);
}
if (options === undefined) {
options = { parser: 'typescript' };
}
if (!options.parser) {
options.parser = 'typescript';
}
if (configFileOptions !== null) {
options = Object.assign({}, configFileOptions, options);
}
return prettier.format(fileContent, options);
};
const copyOptions = (options) => {
if (options !== undefined) {
options = Object.assign({}, options);
}
return options;
};
const winPath = (pathStr) => {
const isExtendedLengthPath = /^\\\\\?\\/.test(pathStr);
if (isExtendedLengthPath) {
return pathStr;
}
return pathStr.replace(/\\/g, '/');
};
const removeFilesSync = (dir) => {
let items = [];
try {
items = fs.readdirSync(dir);
}
catch {
fs.mkdirsSync(dir);
}
items.forEach((item) => {
if (item !== 'custom-data') {
fs.removeSync(path.join(dir, item));
}
});
};
export { copyOptions, getAbsolutePath, getConfig, getRelativePath, prettierData, register$1 as register, removeFilesSync, winPath };