@dimplesyj/util
Version:
[](https://www.npmjs.com/package/@dimplesyj/util) [](https://www.paka.dev/npm/@dimplesyj/util)
647 lines (630 loc) • 14.2 kB
TypeScript
export { debounce, throttle } from 'throttle-debounce';
/**
* 移除数组中的某个元素
*
* @category Array
*/
declare const removeAt: <T>(arr: T[], el: T) => void;
/**
* 将值插入到指定索引之后
*
* @category Array
*
* @example
* ```
* let otherArray = [2, 10];
* insertAt(otherArray, 0, 4, 6, 8); // otherArray = [2, 4, 6, 8, 10]
* ```
*
*/
declare const insertAt: <T>(arr: T[], index: number, ...v: T[]) => T[];
/**
* 返回数组中的最后一个元素
*
* @category Array
*
* @example
* ```
* last([1, 2, 3]); // 3
* last([]); // undefined
* last(null); // undefined
* last(undefined); // undefined
* ```
*/
declare const last: <T>(arr: T[]) => T | undefined;
/**
* 返回数组中的最后 n 个元素
*
* @category Array
*
* @example lastN(['a', 'b', 'c', 'd'], 2); // ['c', 'd']
*/
declare const lastN: <T>(arr: T[], n: number) => T[];
/**
* 布尔全等判断
*
* @category Array
*
* @example all([4, 2, 3], x => x > 1) => true
*/
declare function all(arr: unknown[], fn?: BooleanConstructor): boolean;
/**
* 检查数组各项相等
*
* @category Array
*
* @example
* ```
* allEqual([4, 4, 4]) => true
* allEqual([4, 2, 3]) => false
* ```
*/
declare function allEqual(arr: unknown[]): boolean;
/**
* @category Object
*
* 深度拷贝对象
*/
declare function clone(obj: object): object;
/**
* @category Object
*
* 清除对象中 undefined,null,[]空数组
*/
declare function clearNull(obj: any): any;
declare const hasOwn: (val: object, key: string | symbol) => key is never;
declare const objectToString: () => string;
/**
* @category Object
*
* 对象类型
*/
declare const toTypeString: (value: unknown) => string;
/**
* @category Object
*
* 比较一个值是否改变
*/
declare const hasChanged: (value: any, oldValue: any) => boolean;
/**
* Function
*/
type Fn<T = void> = (...args: any[]) => T;
/**
* @category Promise
*
* 睡眠
* @param ms - 毫秒数
* @param callback - 回调函数
*/
declare function sleep(ms: number, callback?: Fn<any>): Promise<void>;
/**
* @category String
*
* 驼峰化
* @param str - 字符串
* @example user-info => userInfo
*/
declare const camelize: (str: string) => string;
/**
* @category String
*
* 将字符串转换为 pascal
*
* @param str - 字符串
* @example user-info => UserInfo
* @example some_database_field_name => SomeDatabaseFieldName
* @example Some label that needs to be pascalized => SomeLabelThatNeedsToBePascalized
* @example some-mixed_string with spaces_underscores-and-hyphens => SomeMixedStringWithSpacesUnderscoresAndHyphens
*/
declare const toPascalCase: (str: string) => string;
/**
* @category String
*
* 将字符串转换为 camel
* @param str
* @example hello-world => helloWorld
* @example hello_world => helloWorld
* @example hello world => helloWorld
*/
declare const toCamelCase: (str: string) => string;
/**
* @category String
* 将字符串转换为 kebab
*
* @param str
*
* @example helloWorld => hello-world
* @example hello_world => hello-world
* @example hello world => hello-world
*/
declare const toKebabCase: (str: string) => string;
/**
* @category String
*
* 将字符串转换为 snake
*
* @param str
*
* @example helloWorld => hello_world
* @example hello_world => hello_world
* @example hello world => hello_world
*/
declare const toSnakeCase: (str: string) => string;
/**
* @category String
*
* 字符数组
*
* @param s
* @example hello => ['h', 'e', 'l', 'l', 'o']
*/
declare const toCharArray: (s: string) => string[];
/**
* @category String
*
* 首字母大写
*
* @param str - 字符串
* @example userInfo => UserInfo
*/
declare const capitalize: (str: string) => string;
/**
* @category String
*
* 大写字母 转为 小写-连接
*
* @param str - 字符串
* @example UserInfo => user-info
*/
declare const hyphenate: (str: string) => string;
/**
* @category String
*
* 替换所有相同字符串
*
* @param text - 需要处理的字符串
* @param repstr - 被替换的字符
* @param newstr - 替换后的字符
*/
declare function replaceAll(text: string, repstr: string, newstr: string): string;
/**
* @category String
*
* 去左右空格
* @param value - 需要处理的字符串
*/
declare function trim(value: string): string;
/**
* @category String
*
* 去所有空格
* @param value - 需要处理的字符串
*/
declare function trimAll(value: string): string;
/**
* @category String
*
* 根据数字获取对应的汉字
* @param num - 数字(0-10)
*/
declare function getHanByNumber(num: number): string;
/**
* @category String
*
* 插入字符串
* @param str - 原字符串
* @param start - 插入位置
* @param insertStr - 插入字符串
*/
declare function insertStr(str: string, start: number, insertStr: string): string;
/**
* @category String
*
* 转义HTML字符
* @param str - 字符串
* @example '<a href="#">Me & you</a>' => '<a href="#">Me & you</a>'
*/
declare function escapeHTML(str: string): string;
/**
* @category String
*
* 移除空格
* @param str - 字符串
* @example ' Hello \nWorld ' => 'Hello World'
*/
declare const removeWhitespace: (str: string) => string;
/**
* @category Version
*
* 对比 version 的版本号
* @param v1 - 版本号1
* @param v2 - 版本号2
* @returns -1: v1 < v2; 0: v1 = v2; 1: v1 > v2
*/
declare function compareVersion(v1: string, v2: string): number;
declare enum FormatType {
toMinute = "YYYY-MM-DD HH:mm",
toHour = "YYYY-MM-DD HH",
toDay = "YYYY-MM-DD",
toMonth = "YYYY-MM",
toYear = "YYYY",
toSecond = "YYYY-MM-DD HH:mm:ss"
}
type DateFormat = FormatType | string;
type IDate = Date | string;
/**
* 格式化日期
*
* @category Date
*
*/
declare function formatDate(date?: IDate, format?: DateFormat): string;
/**
* 获取当前时间
*
* @category Date
*/
declare function getNow(format?: DateFormat): string;
/**
* 获取月第一天
*
* @category Date
*/
declare function getFirstDayOfMonth(date?: IDate, format?: DateFormat): string;
/**
* 获取月最后一天
*
* @category Date
*/
declare function getLastDayOfMonth(date?: IDate, format?: DateFormat): string;
/**
* 获取整月
*
* @category Date
*/
declare function getDaysOfMonth(date?: IDate, format?: DateFormat): string[];
/**
* 获取上个月
*
* @category Date
*/
declare function getDaysOfLastMonth(format?: FormatType): string[];
/**
* 获取月第一天 到 现在
*
* @category Date
*/
declare function getDaysToNowOfMonth(date?: IDate, format?: FormatType): string[];
/**
* 获取年第一天
*
* @category Date
*/
declare function getFirstDayOfYear(date?: IDate, format?: FormatType): string;
/**
* 本周
*
* @category Date
*/
declare function getDaysOfWeek(format?: FormatType): string[];
/**
* d2是否在d1之后
*
* @category Date
*/
declare function isAfter(d1: IDate, d2?: IDate): boolean;
/**
* d2是否在d1之前
*
* @category Date
*/
declare function isBefore(d1: IDate, d2?: IDate): boolean;
/**
* d3是否在d1与d2之间
*
* @category Date
*/
declare function isBetween(d1: IDate, d2: IDate, d3?: IDate): boolean;
/**
* 加几天
*
* @category Date
*/
declare function addDays(days?: number, d?: IDate, format?: FormatType): IDate;
/**
* 减几天
*
* @category Date
*/
declare function subDays(days?: number, d?: IDate, format?: FormatType): IDate;
/**
* 转换成 Date
*
* @category Date
*/
declare function toDate(date: string | string[]): Date | Date[];
/**
* @category RegExp
*
* 转义字符串以在正则表达式中使用
* @param string - 要转义的字符串
*/
declare function escapeRegExp(string: string): string;
/**
* @category Number
*
* 转为数字
*/
declare const toNumber: (val: any) => any;
/**
* @category Number
* 保留小数点后面n位数字,四舍五入
*
* @returns {string}
*/
declare const toFix: (value: string, n: number) => string;
/**
* @category Is
*
* 是否为数组
*/
declare function isArray(obj: any): boolean;
/**
* @category Is
*
*/
declare const isMap: (val: unknown) => val is Map<any, any>;
/**
* @category Is
*
*/
declare const isSet: (val: unknown) => val is Set<any>;
/**
* @category Is
*
*/
declare const isString: (val: unknown) => val is string;
/**
* @category Is
*
*/
declare const isDate: (val: unknown) => val is Date;
/**
* @category Is
*
*/
declare const isFunction: (val: unknown) => val is Fn;
/**
* @category Is
*
*/
declare const isSymbol: (val: unknown) => val is symbol;
/**
* @category Is
*
*/
declare const isObject: (val: unknown) => val is Record<any, any>;
/**
* @category Is
*
*/
declare const isPromise: <T = any>(val: unknown) => val is Promise<T>;
/**
* @category Is
*
*/
declare const isNumber: (val: any) => val is number;
/**
* @category Is
*
*/
declare const isNull: (val: unknown) => val is null;
/**
* @category Is
*
*/
declare const isUndefined: (val: unknown) => val is undefined;
/**
* @category Is
*
*/
declare const isRegExp: (val: unknown) => val is RegExp;
/**
* @category Is
*
*/
declare const isFile: (val: unknown) => val is File;
/**
* @category Is
*
* 是否为纯粹的对象
*
* @example ```
* isObject([]) 是 true ,因为 type [] 为 'object'
* isPlainObject([]) 则是false
* ```
*/
declare const isPlainObject: (val: unknown) => val is object;
/**
* @category Is
*
*/
declare function isUndef(v: unknown): boolean;
/**
* 是否为空字符串
*/
declare function isEmptyString(v: unknown): boolean;
/**
* @category Is
*
* 是否为空
* @example ```
* isEmpty(null) // true
* isEmpty(undefined) // true
* isEmpty('') // true
* isEmpty([]) // true
* isEmpty({}) // true
* isEmpty(' ') // false
* isEmpty(123) // true
* ```
*/
declare function isEmpty(val: any): boolean;
/**
* @category Misc
*
* 执行数组里的函数
*/
declare const invokeArrayFns: (fns: Fn[], arg?: any) => void;
/**
* @category Misc
*
* 字符串哈希
*/
declare const stringHash: (str: string) => number;
/**
* @category Misc
*
* uuid
*/
declare const uuid: () => string;
/**
* @category Misc
*
* nanoid
*/
declare const nanoid: (defaultSize?: number, alphabet?: string) => string;
/**
* @category Misc
*
* 手机号码中间4位隐藏星号
*/
declare function hideMobile(mobile: string): string;
/**
* @category Misc
*
* 键值对拼接成URL参数
*/
declare const params2Url: (obj: Record<string, any>) => string;
/**
* @category Misc
*
* 将总秒数转换成 时:分:秒
*/
declare const seconds2Time: (seconds: number) => string;
/**
* @category Misc
*
* 将总秒数转换成 日:时:分:秒
*/
declare const seconds2DayTime: (seconds: number) => string;
/**
* @category Misc
*
* 下载文件
*
* @example downloadFile('http://www.baidu.com/img/bd_logo1.png', 'logo.png')
*/
declare function download(link: string, name?: string): void;
/**
* @category Misc
*
* 浏览器下载静态文件
*
* @example downloadFile('1.json',JSON.stringify({name:'hahahha'}))
* @example downloadFile('1.json',new Blob([ data ]))
*/
declare function downloadFile(name: string, content: any): void;
interface IImageVerifyOptions {
/**
* canvas dom 对象
*/
dom: HTMLCanvasElement;
/**
* canvas宽度
*/
width: number;
/**
* canvas高度
*/
height: number;
}
/**
* 绘制图形验证码
*
* @category Image
*
*/
declare function drawImageVerify({ dom, width, height }: IImageVerifyOptions): string;
/**
* rgb转hex
*
* @category Color
*
*/
declare function rgbToHex(r: string | number, g: string | number, b: string | number): string;
/**
* 数字转16进制
*
* @category Color
*/
declare function toHex(n: string | number): string;
/**
* 十六进制颜色转RGB颜色
*
* @category Color
*/
declare function hexToRGB(hex: string): {
r: number;
g: number;
b: number;
} | null;
/**
* @category Random
*
* 随机十六进制颜色
*/
declare function randomHexColorCode(): string;
/**
* @category Random
*
* 随机 rgb 颜色
* @param min - 最小值
* @param max - 最大值
*/
declare function randomRgbColor(min?: number, max?: number): string;
/**
* @category Random
*
* 随机布尔值
*/
declare function randomBoolean(): boolean;
/**
* @category Random
*
* 生成指定范围的随机整数
* @param min - 最小值
* @param max - 最大值
*/
declare function randomIntegerInRange(min: number, max: number): number;
/**
* @category Random
*
* 生成指定范围的随机小数
* @param min - 最小值
* @param max - 最大值
*
* @example (0,5) => 3.0211363285087005
*/
declare function randomNumberInRange(min: number, max: number): number;
/**
* @category Vendor
*
* @see https://github.com/scopsy/await-to-js/blob/master/src/await-to-js.ts
*
* @param { Readonly<Promise<T>> } promise
* @param { Object } errorExt - Additional Information you can pass to the err object
* @return { Promise }
*/
declare function to<T, U = Error>(promise: Readonly<Promise<T>>, errorExt?: object): Promise<[U, undefined] | [null, T]>;
export { FormatType, addDays, all, allEqual, camelize, capitalize, clearNull, clone, compareVersion, download, downloadFile, drawImageVerify, escapeHTML, escapeRegExp, formatDate, getDaysOfLastMonth, getDaysOfMonth, getDaysOfWeek, getDaysToNowOfMonth, getFirstDayOfMonth, getFirstDayOfYear, getHanByNumber, getLastDayOfMonth, getNow, hasChanged, hasOwn, hexToRGB, hideMobile, hyphenate, insertAt, insertStr, invokeArrayFns, isAfter, isArray, isBefore, isBetween, isDate, isEmpty, isEmptyString, isFile, isFunction, isMap, isNull, isNumber, isObject, isPlainObject, isPromise, isRegExp, isSet, isString, isSymbol, isUndef, isUndefined, last, lastN, nanoid, objectToString, params2Url, randomBoolean, randomHexColorCode, randomIntegerInRange, randomNumberInRange, randomRgbColor, removeAt, removeWhitespace, replaceAll, rgbToHex, seconds2DayTime, seconds2Time, sleep, stringHash, subDays, to, toCamelCase, toCharArray, toDate, toFix, toHex, toKebabCase, toNumber, toPascalCase, toSnakeCase, toTypeString, trim, trimAll, uuid };