@pkt/utils
Version:
482 lines (469 loc) • 12.8 kB
TypeScript
import { SafeAny } from '@pkt/utils/types';
/**
* 数组转Json {'':''}
* @param arr 数组
* @param key 字段
*/
declare function arrToJson(arr: SafeAny[], key?: string): SafeAny;
/**
* 数组转Json(json嵌套数组) {'':[]}
* @param arr 数组
* @param key 字段
*/
declare function arrToJsonArr(arr: SafeAny[], key?: string): SafeAny;
/**
* json转数组
* @param value object数组
*/
declare function jsonToArr(value: SafeAny): SafeAny[];
/**
* Convert value to a string.
*/
declare function toString(value: SafeAny): string;
declare function toBoolean(value: unknown, defaultValue?: boolean | null | undefined): boolean | null | undefined;
declare function toNumber(value: unknown): number;
declare function toNumber<D>(value: unknown, fallback: D): number | D;
/**
* Returns the number of elements in the array by returning `value.length`.
*
* toLength([]); //=> 0
* toLength([1, 2, 3]); //=> 3
*
* toLength(null); //=> NaN
* toLength(undefined); //=> NaN
*/
declare function toLength(value: SafeAny): number;
/**
* Convert value to a Hash.
* return string of length 5
*/
declare function toHash(value: SafeAny): string;
/**
* 复选框(全选/多选)
* @param id 唯一标识(默认ID)
*/
declare function checkBox(id?: string): CheckResult;
interface CheckResult {
isSelectAll: boolean;
/**
* 选中数量
*/
selectCount: number;
/**
* 选中
*/
select: {
value: SafeAny;
change(data: SafeAny): void;
};
/**
* 全选
*/
selectAll: {
change(data: SafeAny): void;
};
/**
* 获取已选中的ID数据
*/
getIDS(): Array<SafeAny>;
/**
* 清空所有选择
*/
clear(): void;
}
/**
* A no-operation function.
*/
declare function noop(): void;
/**
*
* 获取浏览器的语言
*
* @returns 例如 `"zh"`
*/
declare function getBrowserLang(): string | undefined;
/**
*
* 获取浏览器的语言
*
* @returns 例如 `"zh-CN"`
*/
declare function getBrowserCultureLang(): string | undefined;
/**
* 列表转树结构
* @param arr 数组
* @param id 条件id
* @param pid 父级id
* @param childName 子节点集合属性名
* @returns T[]
*/
declare function arrToTree<T = SafeAny>(arr: SafeAny[], id?: string, pid?: string, childName?: string): T[];
/**
* 树结构转列表
* @param tree 树结构数据
* @param childName 子节点集合属性名
* @returns T[]
*/
declare function treeToArr<T = SafeAny>(tree: SafeAny[], childName?: string): T[];
/**
* 查找符合条件的单个节点
* @param tree 树结构数据
* @param func 条件
* @param childName 子节点集合属性名
* @returns T or null
*/
declare function findTreeNode<T = SafeAny>(tree: SafeAny[], func: (n: T) => boolean, childName?: string): T | null;
/**
* 查找符合条件的所有节点
* @param tree 树结构数据
* @param func 条件
* @param childName 子节点集合属性名
* @returns T[]
*/
declare function findTreeNodeAll<T = SafeAny>(tree: SafeAny[], func: (n: T) => boolean, childName?: string): T[];
/**
* 树结构遍历.
* 对于所有节点node调用callback(node),深度优先.
* @param tree 树结构数据
* @param func 条件
* @param childName 子节点集合属性名
*/
declare function forEachTreeNode<T = SafeAny>(tree: SafeAny[], func: (n: T) => void, childName?: string): void;
/**
* 删除符合条件的所有节点及其子节点.
* @param tree 树结构数据
* @param func 条件
* @param childName 子节点集合属性名
*/
declare function removeTreeNode<T = SafeAny>(tree: SafeAny[], func: (n: T) => boolean, childName?: string): void;
/**
* 在指定oldNode前插入newNode.
* 如果树中没有oldNode,则不会改变原数组.
* @param tree 树结构数据
* @param newNode 新节点
* @param oldNode 指定节点
* @param childName 子节点集合属性名
*/
declare function insertTreeNodeBefore<T = SafeAny>(tree: SafeAny[], newNode: T, oldNode: T, childName?: string): void;
/**
* 在指定oldNode后插入newNode.
* 如果树中没有oldNode,则不会改变原数组.
* @param tree 树结构数据
* @param oldNode 指定节点
* @param newNode 新节点
* @param childName 子节点集合属性名
*/
declare function insertTreeNodeAfter<T = SafeAny>(tree: SafeAny[], oldNode: T, newNode: T, childName?: string): void;
/**
* 剔除字符串中所有空格及换行
*
* @param str 字符串
*/
declare function trimAll(str?: string): string;
/**
*
* 字符串插入变量值
*
* interpolate('Hello {0}',['World']); // -> Hello World
*
* interpolate('Hello{0}',['World']); // -> HelloWorld
*
* @param text 文本
* @param params 参数
* @returns string
*/
declare function interpolate(text: string, params: string[]): string;
/**
*
* 查找并替换一个字符串
*
* Example
*
* replaceAll('This is a test string', 'is', 'X') = 'ThX X a test string'
*
* @returns
*/
declare function replaceAll(str: string, search: string, replacement: string): string;
/**
*
* 截断字符串
*
* @param str 字符串
* @param maxLength 最大长度
* @returns string
*/
declare function truncateString(str: string, maxLength: number): string;
/**
*
* 截断字符串带后缀
*
* @param str 字符串
* @param maxLength 最大长度
* @param postfix 后缀(默认...)
* @returns
*/
declare function truncateStringWithPostfix(str: string, maxLength: number, postfix?: string): string;
/** 字符串翻转 */
declare function reverseStr(str: string): string;
/**
* 生成uuid
* @returns string
*/
declare function uuid(a?: SafeAny): string;
/**
* 生成哈希值
* @returns number
*/
declare function generateHash(value: string): number;
/**
* 随机密码
* @param length 长度
* @returns string
*/
declare function generatePassword(length?: number): string;
/**
*
* 复制/拷贝
*
* @returns
*/
declare function copy(source: SafeAny): SafeAny;
/**
* 根据 object对象的path路径获取值
*
* const obj = {a: {aa: {aaa: 2}}, b: 4};
*
* get(obj, 'a.aa.aaa'); // 2
* get(obj, ['a', 'aa', 'aaa']); // 2
*
* get(obj, 'b.bb.bbb'); // undefined
* get(obj, ['b', 'bb', 'bbb']); // undefined
*
* get(obj.a, 'aa.aaa'); // 2
* get(obj.a, ['aa', 'aaa']); // 2
*
* get(obj.b, 'bb.bbb'); // undefined
* get(obj.b, ['bb', 'bbb']); // undefined
*
* get(obj.b, 'bb.bbb', 42); // 42
* get(obj.b, ['bb', 'bbb'], 42); // 42
*
* get(null, 'a'); // undefined
* get(undefined, ['a']); // undefined
*
* get(null, 'a', 42); // 42
* get(undefined, ['a'], 42); // 42
*
* const obj = {a: {}};
* const sym = Symbol();
* obj.a[sym] = 4;
* get(obj.a, sym); // 4
* @param obj 对象
* @param path 路径
* @param defaultValue 默认值
* @returns SafeAny
*/
declare function deepGet(obj: SafeAny, path: string | string[], defaultValue?: unknown): SafeAny;
/**
* 根据 object对象的path路径设置值
*
* const obj1 = {};
* set(obj1, 'a.aa.aaa', 4); // true
* set(obj1, 'a.aa.aaa', 4); // true
*
* const obj2 = {};
* set(obj2, ['a', 'aa', 'aaa'], 4); // true
* obj2; // {a: {aa: {aaa: 4}}}
*
* const obj3 = {a: {aa: {aaa: 2}}};
* set(obj3, 'a.aa.aaa', 3); // true
* obj3; // {a: {aa: {aaa: 3}}}
*
* const obj4 = {a: {aa: {aaa: 2}}};
* set(obj4, 'a.aa', {bbb: 7}); // false
*
* const obj5 = {a: {}};
* const sym = Symbol();
* set(obj5.a, sym, 7); // true
* obj5; // {a: {Symbol(): 7}}
*
* @param obj 对象
* @param path 路径
* @param value 值
* @returns boolean
*/
declare function deepSet(obj: SafeAny, path: string | string[], value: unknown): boolean;
/**
*
* 深度合并
*
* @returns
*/
declare function deepMerge(target: SafeAny, source: SafeAny): SafeAny;
/**
*
* 映射枚举到选项
*
* @param _enum 枚举
* @returns []
*/
declare function mapEnumToOptions<T>(_enum: T): Options<T>[];
interface Options<T> {
key: Extract<keyof T, string>;
value: T[Extract<keyof T, string>];
}
/**
* 浏览器内置uri解码`decodeURI()`函数的增强版,可以解码任何uri
*
* @param uri 地址
* @returns uri
*/
declare function superDecodeURI(uri: string): string;
/**
*
* 将url中的参数解析为一个对象
*
* @param rawParam 格式为`var1=value1&var2=value2`
* @returns 返回类似`{var1: "value1", var2: "value2"}`的对象
*/
declare function parseUrlParam(rawParam: string): Record<string, unknown>;
/**
*
* 比较
*
* @description
* primitives: value1 === value
*
* functions: value1.toString == value2.toString
*
* arrays: if length, sequence and values of properties are identical
*
* objects: if length, names and values of properties are identical
*
* @example
* compare([[1, [2, 3]], [[1, [2, 3]]);=> true
*
* compare([[1, [2, 3], 4], [[1, [2, 3]]);=> false
*
* compare({a: 2, b: 3}, {a: 2, b: 3});=> true
*
* compare({a: 2, b: 3}, {b: 3, a: 2});=> true
*
* compare({a: 2, b: 3, c: 4}, {a: 2, b: 3});=> false
*
* compare({a: 2, b: 3}, {a: 2, b: 3, c: 4});=> false
*
* compare([[1, [2, {a: 4}], 4], [[1, [2, {a: 4}]]);=> true
*
* @returns boolean
*/
declare function compare(value1: SafeAny, value2: SafeAny): boolean;
/**
*
* 比较数组
*
* @returns boolean
*/
declare function compareArrays(value1: Array<SafeAny>, value2: Array<SafeAny>): boolean;
/**
*
* 比较Obj
*
* @returns boolean
*/
declare function compareObjects(value1: SafeAny, value2: SafeAny): boolean;
/**
* Check if value is a function.
*/
declare function isFunction(value: SafeAny): boolean;
/**
* Check if value is a valid JSON.
*/
declare function isJson(value: SafeAny): boolean;
/**
* Check if value is a string primitive.
*/
declare function isString(value: SafeAny): boolean;
/**
* Check if value is a type primitive
*/
declare function is(value: SafeAny, type: string): boolean;
/**
* Check if value is a string primitive.
*
* isNonEmptyString(''); // -> false
*/
declare function isNonEmptyString(value: string | null | undefined | SafeAny): boolean;
/**
* Check if value is undefined.
*
* isUndefined(void 0); // -> true
*/
declare function isUndefined(value: undefined | SafeAny): boolean;
declare function isUndefinedOrEmptyString(value: undefined | string | SafeAny): boolean;
/**
* Check if value is an Null.
*/
declare function isNull(value: null | SafeAny): boolean;
/**
* Check if value is null or undefined, the same as value == null.
*
* isNullOrUndefined(null); // -> true
* isNullOrUndefined(undefined); // -> true
* isNullOrUndefined(void 0); // -> true
*/
declare function isNullOrUndefined(obj: null | undefined | SafeAny): boolean;
/**
* Check if value is the language type of Object.
*
* isObject({}); // -> true
* isObject([]); // -> true
*/
declare function isObject(value: SafeAny): boolean;
declare function isObjectAndNotArray(value: SafeAny): boolean;
declare function isObjectAndNotArrayNotNode(value: SafeAny): boolean;
declare function isNode(value: SafeAny): value is Node;
/**
* exists
* @param obj
* @returns boolean
*/
declare function exists(obj: SafeAny): boolean;
/**
* Check if value is classified as a Number primitive or object.
*/
declare function isNum(value: string | SafeAny): boolean;
/**
* Checks if value is classified as a Integer.
*/
declare function isInt(value: number | SafeAny): boolean;
/**
* Checks if value is classified as a Decimal.
*/
declare function isDecimal(value: number | SafeAny): boolean;
/**
* Check if number is odd.
*/
declare function isOdd(value: number | SafeAny): boolean;
/**
* Check if value is an IdCard.
*/
declare function isIdCard(value: string): boolean;
/**
* Check if value is an Mobile.
*/
declare function isMobile(value: string): boolean;
/**
* Check if value is an url address.
*/
declare function isUrl(value: string): boolean;
/**
* Check if value is an IP address.
*/
declare function isIp(value: string): boolean;
/**
* Loosely validate an email address.
*/
declare function isEmail(value: string): boolean;
export { arrToJson, arrToJsonArr, arrToTree, checkBox, compare, compareArrays, compareObjects, copy, deepGet, deepMerge, deepSet, exists, findTreeNode, findTreeNodeAll, forEachTreeNode, generateHash, generatePassword, getBrowserCultureLang, getBrowserLang, insertTreeNodeAfter, insertTreeNodeBefore, interpolate, is, isDecimal, isEmail, isFunction, isIdCard, isInt, isIp, isJson, isMobile, isNode, isNonEmptyString, isNull, isNullOrUndefined, isNum, isObject, isObjectAndNotArray, isObjectAndNotArrayNotNode, isOdd, isString, isUndefined, isUndefinedOrEmptyString, isUrl, jsonToArr, mapEnumToOptions, noop, parseUrlParam, removeTreeNode, replaceAll, reverseStr, superDecodeURI, toBoolean, toHash, toLength, toNumber, toString, treeToArr, trimAll, truncateString, truncateStringWithPostfix, uuid };
export type { CheckResult, Options };