UNPKG

@pkt/utils

Version:

482 lines (469 loc) 12.8 kB
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 };