egg-orm-ts
Version:
Simple orm with Typeorm, for egg plugin.
237 lines • 13.8 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getFileType = exports.isType = exports.getValid = exports.isValid = exports.padStart = exports.desensitize = exports.generateChars = exports.getRandomStr = exports.upperCamelize = exports.lowerCamelize = exports.upperFirst = exports.lowerFirst = exports.underlineCase = exports.formatCode = exports.formatPaths = exports.getModelName = void 0;
const tslib_1 = require("tslib");
const path_1 = require("path");
const prettier = tslib_1.__importStar(require("prettier"));
function getModelName(file) {
const filename = file.split(path_1.sep).pop() || '';
return upperFirst(filename.replace(/\.ts$|\.js$/g, ''));
}
exports.getModelName = getModelName;
function formatPaths(files) {
return files.map(file => {
const name = getModelName(file);
file = file.split(path_1.sep).join('/');
const importPath = `../${file}`.replace(/\.ts$|\.js$/g, '');
// .replace('test/fixtures/apps/orm-ts-test/', '');
return {
name,
importPath,
};
});
}
exports.formatPaths = formatPaths;
function formatCode(text) {
return prettier.format(text, {
semi: false,
tabWidth: 2,
singleQuote: true,
parser: 'typescript',
trailingComma: 'all',
});
}
exports.formatCode = formatCode;
/**
* 大/小驼峰式转下划线
* @param str 字符串参数
*/
function underlineCase(str) {
// testTest/TestTest => test_test
let res = str.replace(/[A-Z]/g, s => `_${s[0].toLowerCase()}`);
// 首字母大写
if (res[0] === '_') {
res = res.substring(1);
}
return res;
}
exports.underlineCase = underlineCase;
/**
* 首字母转小写
* @param str 字符串参数
*/
function lowerFirst(str) {
return str[0].toLowerCase() + str.substring(1);
}
exports.lowerFirst = lowerFirst;
/**
* 首字母转大写
* @param str 字符串参数
*/
function upperFirst(str) {
return str[0].toUpperCase() + str.substring(1);
}
exports.upperFirst = upperFirst;
/**
* 小驼峰式
* @param str 字符串参数
*/
function lowerCamelize(str) {
// test-test/test_test => testTest
let res = str.replace(/[_-][a-z]/ig, s => s[1].toUpperCase());
// user2role => user2Role
res = res.replace(/[2][a-z]/ig, s => s[0] + s[1].toUpperCase());
// 保证首字母为小写
return lowerFirst(res);
}
exports.lowerCamelize = lowerCamelize;
/**
* 大驼峰式(即帕斯卡命名法)
* @param str 字符串参数
*/
function upperCamelize(str) {
// 小驼峰式
const res = lowerCamelize(str);
// 保证首字母为大写
return upperFirst(res);
}
exports.upperCamelize = upperCamelize;
/**
* 获取随机字符串
* - 默认大小写字母和数字
* @param len 长度 默认32
* @param extraChr 额外字符串
* @returns string
*/
function getRandomStr(len, extraChr) {
const num = !len ? 32 : len;
let baseChars = 'ABCDEFJHIJKLMNOPQRSTUVWXYZabcdefjhijklmnopqrstuvwxyz0123456789';
if (!extraChr) {
baseChars += extraChr;
}
const bLen = baseChars.length;
let randomStr = '';
for (let i = 0; i < num; i++) {
randomStr += baseChars.charAt(Math.floor(Math.random() * bLen));
}
return randomStr;
}
exports.getRandomStr = getRandomStr;
/**
* 替换指定字符串为等长相同字符
* - 默认用 ’*‘ 替换
* @param str 被替换字符串
* @param replaceChar 替换字符,default '*'
* @returns
*/
function generateChars(str, replaceChar = '*') {
if (!str) {
return str;
}
return new Array(str.length + 1).join(replaceChar);
}
exports.generateChars = generateChars;
/**
* 脱敏字符串
* - 至少脱敏1位
* - charFunc 支持扩展替换规则
* @param str 字符串
* @param start 开始位数,default 1
* @param end 结束位数,default 1
* @param charFunc 脱敏函数,默认用 @function generateChars
* @returns 脱敏后字符串
*/
function desensitize(str, start = 1, end = 1, charFunc = generateChars) {
if (!str) {
return str;
}
if (str.length === 1) {
return charFunc(str);
}
// 至少脱敏一位
let starLen = 1;
let iStart = start;
let iEnd = end;
if (str.length <= iStart) {
iStart = str.length - starLen;
}
if (str.length <= iStart + iEnd) {
iEnd = str.length - iStart - starLen;
}
starLen = str.length - iStart - iEnd;
return str.substring(0, iStart) + charFunc(str.substring(iStart, iStart + starLen)) + str.substring(str.length - iEnd);
}
exports.desensitize = desensitize;
/**
* 左补齐
* @param val 原值,默认为 ''
* @param len 位数,默认 1
* @param chr 补位字符,默认‘0’
* @returns string
*/
function padStart(val, len, chr = '0') {
if (!val || !len) {
return val;
}
return (Array(len).join(chr) + val).slice(-(!len ? 1 : len));
}
exports.padStart = padStart;
/**
* 判断合法值(非空)
* - null, undefined, '', NaN, 0
* @param val 参数
* @returns boolean
*/
function isValid(val) {
// 判断空白字符(fnrtv)
if (typeof val === 'string' && val.replace(/(^\s*)|(\s*$)/g, '').length === 0) {
return false;
}
return !(!val && val !== 0 && typeof val !== 'boolean');
}
exports.isValid = isValid;
/**
* 获取合法值
* @param val 参数
* @param defaultValue 指定默认值
* @returns any
*/
function getValid(val, defaultValue) {
if (isValid(val)) {
return val;
}
return defaultValue;
}
exports.getValid = getValid;
/**
* 判断数据类型
* @param val 参数
* @param type 判断类型
* @returns boolean
*/
function isType(val, type) {
if (typeof val != "object") {
return (typeof val).toString() === type;
}
return Object.prototype.toString.call(val).replace(/^\[object (\S+)\]$/, '$1') === type;
}
exports.isType = isType;
/**
* 获取文件类型
* - 图片(image), 语音(voice), 视频(video), 普通文件(file)
* - 钉钉/企业微信接口使用
* @param fileName 文件名称
* @returns fileType
*/
function getFileType(fileName) {
if (!isValid(fileName) || fileName.indexOf('.') === -1) {
return 'file';
}
// 根据后缀判断类型
let suffix = fileName.substring(fileName.indexOf('.') + 1);
if (suffix) {
suffix = suffix.toLowerCase();
}
if ('_png_jpg_jpeg_gif_'.indexOf(suffix) !== -1) {
return 'image';
}
else if ('_wma_mp3_wav_amr_aud_'.indexOf(suffix) !== -1) {
return 'voice';
}
else if ('_mp4_'.indexOf(suffix) !== -1) {
return 'video';
}
return 'file';
}
exports.getFileType = getFileType;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwrQkFBMkI7QUFDM0IsMkRBQXFDO0FBS3JDLFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDO0lBQzdDLE9BQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUhELG9DQUdDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLEtBQWU7SUFDekMsT0FBTyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RCLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFakMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFELG1EQUFtRDtRQUNyRCxPQUFPO1lBQ0wsSUFBSTtZQUNKLFVBQVU7U0FDWCxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBWkQsa0NBWUM7QUFFRCxTQUFnQixVQUFVLENBQUMsSUFBWTtJQUNyQyxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQzNCLElBQUksRUFBRSxLQUFLO1FBQ1gsUUFBUSxFQUFFLENBQUM7UUFDWCxXQUFXLEVBQUUsSUFBSTtRQUNqQixNQUFNLEVBQUUsWUFBWTtRQUNwQixhQUFhLEVBQUUsS0FBSztLQUNyQixDQUFDLENBQUM7QUFDTCxDQUFDO0FBUkQsZ0NBUUM7QUFF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