UNPKG

cross-env-plugins

Version:

A cross-environment JavaScript utility library with common tools and validation functions for Web and Node.js

643 lines (582 loc) 18.9 kB
/** * 精确加法(解决浮点数精度问题) * @param a - 加数1 * @param b - 加数2 * @param ...args - 更多加数(可选) * @returns 精确的加法结果 * 使用示例: * add(0.1, 0.2); // 0.3 * add(0.1, 0.2, 0.3); // 0.6 */ declare function add(a: number, b: number, ...args: number[]): number; /** * Base64解码 * @param str - Base64编码的字符串 * @returns 解码后的字符串 * 使用示例: * base64Decode('aGVsbG8='); // 'hello' */ declare function base64Decode(str: string): string; /** * Base64编码 * @param str - 要编码的字符串 * @returns Base64编码后的字符串 * 使用示例: * base64Encode('hello'); // 'aGVsbG8=' */ declare function base64Encode(str: string): string; /** * 驼峰命名转换(下划线转驼峰) * @param str - 下划线命名的字符串 * @returns 驼峰命名的字符串 * 使用示例: * camelCase('user_name'); // 'userName' */ declare function camelCase(str: string): string; /** * 首字母大写 * @param str - 字符串 * @returns 首字母大写的字符串 * 使用示例: * capitalize('hello'); // 'Hello' */ declare function capitalize(str: string): string; /** * 校验身份证最后一位校验码是否正确 * @param idCard - 18位身份证号 * @returns 返回校验结果 */ declare function checkCode(idCard: string): boolean; /** * 检测密码强度等级 * @param str 密码字符串 * @returns 1:密码弱 2:密码中等 3:密码强 4:密码很强 */ declare function checkPwd(str: string): number; /** * 将15位身份证号转换为18位 * @param idCard15 - 15位身份证号 * @returns 18位身份证号 */ declare function convertTo18Digits(idCard15: string): string; /** * 金额转换为中文大写 * @param num - 要转换的金额 * @returns 中文大写金额 * 使用示例: * convertToChinese(12345.67); // '壹万贰仟叁佰肆拾伍元陆角柒分' */ declare function convertToChinese(num: number): string; /** * 防抖函数 * @param fn - 要执行的函数 * @param delay - 等待时间(毫秒) * @returns 返回防抖处理后的函数 * 使用示例: * const handleClick = debounce((e) => { * console.log('按钮点击'); * }, 1000); */ declare function debounce<T extends (...args: any[]) => any>(fn: T, delay: number): (...args: Parameters<T>) => void; /** * 深拷贝 * @param obj - 要拷贝的对象 * @returns 拷贝后的新对象 * 使用示例: * const newObj = deepClone(originalObj); */ declare function deepClone<T>(obj: T): T; /** * 对象深度比较 * @param obj1 - 对象1 * @param obj2 - 对象2 * @returns 是否相等 * 使用示例: * deepEqual({a: 1, b: {c: 2}}, {a: 1, b: {c: 2}}); // true */ declare function deepEqual(obj1: any, obj2: any): boolean; /** * 精确除法(解决浮点数精度问题) * @param a - 被除数 * @param b - 除数 * @param ...args - 更多除数(可选) * @returns 精确的除法结果 * @throws {Error} 当除数为0时抛出错误 * 使用示例: * divide(0.3, 0.1); // 3 * divide(0.6, 0.2, 0.3); // 10 */ declare function divide(a: number, b: number, ...args: number[]): number; /** * 数组扁平化 * @param arr - 要扁平化的数组 * @param depth - 扁平化深度,默认为 Infinity * @returns 扁平化后的数组 * 使用示例: * flattenArray([1, [2, [3, 4]]]); // [1, 2, 3, 4] */ declare function flattenArray<T>(arr: T[], depth?: number): T[]; /** * 金额格式化 * @param amount - 金额 * @param decimals - 保留的小数位数,默认为 2 * @returns 格式化后的金额字符串 * 使用示例: * formatCurrency(12345.678); // '12,345.68' */ declare function formatCurrency(amount: number | string, decimals?: number): string; /** * 格式化文件大小 * @param bytes - 字节数 * @param decimals - 小数位数,默认为 2 * @returns 格式化后的文件大小 * 使用示例: * formatFileSize(1024); // '1.00 KB' */ declare function formatFileSize(bytes: number, decimals?: number): string; /** * 格式化数字(添加千分位) * @param num - 数字 * @returns 格式化后的数字字符串 * 使用示例: * formatNumber(1234567); // '1,234,567' */ declare function formatNumber(num: number | string): string; /** * 生成随机验证码 * @param length - 验证码长度,默认为 6 * @returns 随机验证码 * 使用示例: * generateRandomCode(6); // 'aB1cD2' */ declare function generateRandomCode(length?: number): string; /** * 生成UUID * @returns UUID字符串 * 使用示例: * generateUUID(); // '550e8400-e29b-41d4-a716-446655440000' */ declare function generateUUID(): string; /** * 获取日期对应的星期几 * @param date - 日期字符串或对象 * @returns 星期几 * 使用示例: * getDayOfWeek('2023-08-09'); // 'Wednesday' */ declare function getDayOfWeek(date: string | Date): string; /** * 计算两个日期的差值(天数) * @param date1 - 日期1 * @param date2 - 日期2 * @returns 相差的天数 * 使用示例: * getDaysDiff('2024-01-01', '2024-01-10'); // 9 */ declare function getDaysDiff(date1: string | Date, date2?: string | Date): number; /** * 获取相对时间(如:3分钟前、2小时前) * @param date - 日期 * @returns 相对时间字符串 * 使用示例: * getRelativeTime(new Date(Date.now() - 3600000)); // '1小时前' */ declare function getRelativeTime(date: string | Date): string; /** * 计算当前时间距离结束时间的时间戳 * @param endTime - 结束时间字符串或Date对象,支持多种格式 * @param startTime - 开始时间字符串或Date对象,支持多种格式,默认为当前时间 * @returns 距离结束时间的时间戳(毫秒),如果已过期则返回 0 * 使用示例: * getTimeUntilEnd('2024-9-30 18:00:00'); // 返回距离结束时间的毫秒数 * getTimeUntilEnd('2024-9-30 18:00:00', '2024-9-1 00:00:00'); // 从指定开始时间计算 */ declare function getTimeUntilEnd(endTime: string | Date, startTime?: string | Date): number; /** * 获取值的精确类型(使用 Object.prototype.toString.call) * @param value - 要检查的值 * @returns 类型字符串(如:'Object', 'Array', 'String', 'Number', 'Boolean', 'Function', 'Date', 'RegExp', 'Null', 'Undefined' 等) * 使用示例: * getType([]); // 'Array' * getType({}); // 'Object' * getType('hello'); // 'String' * getType(123); // 'Number' * getType(true); // 'Boolean' * getType(null); // 'Null' * getType(undefined); // 'Undefined' * getType(new Date()); // 'Date' * getType(/test/); // 'RegExp' */ declare function getType(value: any): string; /** * 数组分组 * @param arr - 要分组的数组 * @param key - 分组键(函数或属性名) * @returns 分组后的对象 * 使用示例: * groupBy([{type: 'a', value: 1}, {type: 'b', value: 2}], 'type'); */ declare function groupBy<T>(arr: T[], key: string | ((item: T) => string | number)): Record<string | number, T[]>; /** * 校验银行卡号(Luhn算法) * @param cardNo - 银行卡号 * @returns 返回校验结果 * 使用示例: * isBankCard('6228480402637874213'); // true */ declare function isBankCard(cardNo: string): boolean; /** * 校验是否为中文 * @param str - 要校验的字符串 * @returns 返回校验结果 * 使用示例: * isChinese('你好'); // true */ declare function isChinese(str: string): boolean; /** * 校验中文姓名 * @param name - 姓名 * @returns 返回校验结果 * 使用示例: * isChineseName('张三'); // true */ declare function isChineseName(name: string): boolean; /** * 校验是否为小数 * @param value - 要校验的值 * @returns 返回校验结果 * 使用示例: * isDecimal('123.45'); // true * isDecimal(123); // false */ declare function isDecimal(value: string | number): boolean; /** * 校验邮箱格式 * @param email - 要校验的邮箱 * @returns 返回校验结果 * 使用示例: * isEmail('example@example.com'); // true */ declare function isEmail(email: string): boolean; /** * 校验是否为空(null、undefined、空字符串、空数组、空对象) * @param value - 要校验的值 * @returns 返回校验结果 * 使用示例: * isEmpty(''); // true * isEmpty([]); // true * isEmpty({}); // true */ declare function isEmpty(value: any): boolean; /** * 校验是否为英文 * @param str - 要校验的字符串 * @returns 返回校验结果 * 使用示例: * isEnglish('hello'); // true */ declare function isEnglish(str: string): boolean; /** * 校验是否为整数 * @param value - 要校验的值 * @returns 返回校验结果 * 使用示例: * isInteger('123'); // true * isInteger(123.5); // false */ declare function isInteger(value: string | number): boolean; /** * 校验IP地址格式 * @param ip - 要校验的IP地址 * @returns 返回校验结果 * 使用示例: * isIP('192.168.1.1'); // true */ declare function isIP(ip: string): boolean; /** * 校验字符串长度 * @param str - 字符串 * @param min - 最小长度 * @param max - 最大长度 * @returns 返回校验结果 * 使用示例: * isLength('hello', 3, 10); // true */ declare function isLength(str: string, min: number, max: number): boolean; /** * 校验车牌号(中国) * @param plate - 车牌号 * @returns 返回校验结果 * 使用示例: * isLicensePlate('京A12345'); // true */ declare function isLicensePlate(plate: string): boolean; /** * 校验手机号格式(中国手机号) * @param mobile - 要校验的手机号 * @returns 返回校验结果 * 使用示例: * isMobile('13800138000'); // true */ declare function isMobile(mobile: string): boolean; /** * 校验是否为非负整数(包括0) * @param value - 要校验的值 * @returns 返回校验结果 * 使用示例: * isNonNegativeInteger('0'); // true */ declare function isNonNegativeInteger(value: string | number): boolean; /** * 校验是否为数字 * @param value - 要校验的值 * @returns 返回校验结果 * 使用示例: * isNumber('123'); // true * isNumber(123); // true */ declare function isNumber(value: string | number): boolean; /** * 校验是否为正整数 * @param value - 要校验的值 * @returns 返回校验结果 * 使用示例: * isPositiveInteger('123'); // true */ declare function isPositiveInteger(value: string | number): boolean; /** * 校验邮政编码(中国) * @param code - 邮政编码 * @returns 返回校验结果 * 使用示例: * isPostalCode('100000'); // true */ declare function isPostalCode(code: string): boolean; /** * 判断是否为同一天 * @param date1 - 日期1 * @param date2 - 日期2 * @returns 是否为同一天 * 使用示例: * isSameDay('2024-01-01', '2024-01-01 12:00:00'); // true */ declare function isSameDay(date1: string | Date, date2?: string | Date): boolean; /** * 验证值是否为指定类型(使用 Object.prototype.toString.call) * 支持不区分大小写和简写形式 * @param value - 要验证的值 * @param type - 类型名称(支持:'object', 'array', 'string', 'number', 'boolean', 'function', 'date', 'regexp', 'null', 'undefined', 'symbol', 'promise', 'error' 等,不区分大小写) * @returns 是否为指定类型 * 使用示例: * isType('a', 'string'); // true * isType('a', 'String'); // true * isType([], 'array'); // true * isType({}, 'object'); // true * isType(123, 'number'); // true * isType(true, 'boolean'); // true * isType(null, 'null'); // true * isType(undefined, 'undefined'); // true * isType(new Date(), 'date'); // true * isType(/test/, 'regexp'); // true * isType(() => {}, 'function'); // true */ declare function isType(value: any, type: string): boolean; /** * 校验统一社会信用代码 * @param code - 统一社会信用代码 * @returns 返回校验结果 * 使用示例: * isUnifiedSocialCreditCode('911100001000000000'); // true */ declare function isUnifiedSocialCreditCode(code: string): boolean; /** * 校验URL格式 * @param url - 要校验的URL * @returns 返回校验结果 * 使用示例: * isURL('https://www.example.com'); // true */ declare function isURL(url: string): boolean; /** * 验证日期格式是否正确 * @param date - 日期字符串(格式:YYYYMMDD) * @returns 返回校验结果 */ declare function isValidDate(date: string): boolean; /** * 对象合并 * @param target - 目标对象 * @param source - 源对象 * @param overwrite - 是否覆盖目标对象中已有的属性,默认为 true * @returns 合并后的对象 * 使用示例: * const mergedObj = mergeObjects(targetObj, sourceObj, false); */ declare function mergeObjects<T extends Record<string, any>>(target: T, source: Partial<T>, overwrite?: boolean): T; /** * 精确乘法(解决浮点数精度问题) * @param a - 乘数1 * @param b - 乘数2 * @param ...args - 更多乘数(可选) * @returns 精确的乘法结果 * 使用示例: * multiply(0.1, 3); // 0.3 * multiply(0.1, 0.2, 0.3); // 0.006 */ declare function multiply(a: number, b: number, ...args: number[]): number; /** * 数组分页 * @param arr - 要分页的数组 * @param page - 页码(从1开始) * @param pageSize - 每页数量 * @returns 分页后的数组 * 使用示例: * paginate([1, 2, 3, 4, 5], 1, 2); // [1, 2] */ declare function paginate<T>(arr: T[], page?: number, pageSize?: number): T[]; /** * 下划线命名转换(驼峰转下划线) * @param str - 驼峰命名的字符串 * @returns 下划线命名的字符串 * 使用示例: * snakeCase('userName'); // 'user_name' */ declare function snakeCase(str: string): string; /** * 精确减法(解决浮点数精度问题) * @param a - 被减数 * @param b - 减数 * @param ...args - 更多减数(可选) * @returns 精确的减法结果 * 使用示例: * subtract(0.3, 0.1); // 0.2 * subtract(1.0, 0.1, 0.2); // 0.7 */ declare function subtract(a: number, b: number, ...args: number[]): number; /** * 节流函数 * @param fn - 要执行的函数 * @param delay - 限制时间间隔(毫秒) * @returns 返回节流处理后的函数 * 使用示例: * const handleScroll = throttle(() => console.log('Scroll Event'), 200); */ declare function throttle<T extends (...args: any[]) => any>(fn: T, delay: number): (...args: Parameters<T>) => void; /** * 百分比转换 * @param num - 数字 * @param decimals - 小数位数,默认为 2 * @returns 百分比字符串 * 使用示例: * toPercent(0.1234); // '12.34%' */ declare function toPercent(num: number, decimals?: number): string; /** * 字符串截取(支持中文) * @param str - 字符串 * @param length - 截取长度 * @param suffix - 后缀,默认为 '...' * @returns 截取后的字符串 * 使用示例: * truncate('这是一段很长的文字', 5); // '这是一段很...' */ declare function truncate(str: string, length: number, suffix?: string): string; /** * 数组去重 * @param arr - 要去重的数组 * @returns 去重后的数组 * 使用示例: * const uniqueArr = uniqueArray([1, 2, 2, 3, 4, 4, 5]); // [1, 2, 3, 4, 5] */ declare function uniqueArray<T>(arr: T[]): T[]; /** * URL解码 * @param str - URL编码的字符串 * @returns 解码后的字符串 * 使用示例: * urlDecode('hello%20world'); // 'hello world' */ declare function urlDecode(str: string): string; /** * URL编码 * @param str - 要编码的字符串 * @returns URL编码后的字符串 * 使用示例: * urlEncode('hello world'); // 'hello%20world' */ declare function urlEncode(str: string): string; export declare const utils: { random: (min: number, max: number) => number; formatTime: (date?: string | Date, format?: string) => string; getDayOfWeek: typeof getDayOfWeek; getTimeUntilEnd: typeof getTimeUntilEnd; formatCurrency: typeof formatCurrency; convertToChinese: typeof convertToChinese; generateRandomCode: typeof generateRandomCode; debounce: typeof debounce; throttle: typeof throttle; getUrlParam: (name?: string) => string | Record<string, string>; deepClone: typeof deepClone; mergeObjects: typeof mergeObjects; uniqueArray: typeof uniqueArray; checkPwd: typeof checkPwd; randomStr: (length?: number) => string; generateUUID: typeof generateUUID; capitalize: typeof capitalize; camelCase: typeof camelCase; snakeCase: typeof snakeCase; flattenArray: typeof flattenArray; groupBy: typeof groupBy; paginate: typeof paginate; getRelativeTime: typeof getRelativeTime; getDaysDiff: typeof getDaysDiff; isSameDay: typeof isSameDay; formatFileSize: typeof formatFileSize; formatNumber: typeof formatNumber; toPercent: typeof toPercent; base64Encode: typeof base64Encode; base64Decode: typeof base64Decode; urlEncode: typeof urlEncode; urlDecode: typeof urlDecode; truncate: typeof truncate; deepEqual: typeof deepEqual; getType: typeof getType; isType: typeof isType; add: typeof add; subtract: typeof subtract; multiply: typeof multiply; divide: typeof divide; }; /** * 身份证校验 * @param idCard - 身份证号(支持15位和18位) * @returns 返回校验结果 * 使用示例: * validateIDCard('110101199003075131'); // true */ declare function validateIDCard(idCard: string): boolean; export declare const valids: { isEmail: typeof isEmail; isMobile: typeof isMobile; validateIDCard: typeof validateIDCard; checkCode: typeof checkCode; isValidDate: typeof isValidDate; convertTo18Digits: typeof convertTo18Digits; isURL: typeof isURL; isIP: typeof isIP; isBankCard: typeof isBankCard; isChineseName: typeof isChineseName; isPostalCode: typeof isPostalCode; isLicensePlate: typeof isLicensePlate; isUnifiedSocialCreditCode: typeof isUnifiedSocialCreditCode; isNumber: typeof isNumber; isInteger: typeof isInteger; isDecimal: typeof isDecimal; isEmpty: typeof isEmpty; isLength: typeof isLength; isPositiveInteger: typeof isPositiveInteger; isNonNegativeInteger: typeof isNonNegativeInteger; isChinese: typeof isChinese; isEnglish: typeof isEnglish; }; export { }