@beenotung/tslib
Version:
utils library in Typescript
40 lines (39 loc) • 2.2 kB
TypeScript
import type { ApplyUndefinedType } from './assert';
export declare function isObject(o: any): boolean;
export declare function hasFunction(o: object | any[], name: PropertyKey): boolean;
export declare function deepClone<A extends object>(o: A): A;
export declare function deepEqual(a: any, b: any): boolean;
export declare function replaceObject<A extends object>(dest: A, src: A): A;
export declare const SafeObjectOptions: {
throwError: boolean;
};
/**
* make a loss object, very forgiving
* */
export declare function createSafeObject(target?: object): any;
export declare const updateObject: <T extends object, U extends object>(dest: T) => (x: U) => T & U;
export declare const isNull: (x: any) => boolean;
export declare function removeNull<A>(o: A): A;
/**
* @param {any} o : value to be checked
* @param {boolean} skip : true will remove duplicated value silently;
* false will throw an error upon duplication
* @param {any} placeholder : custom value to replace duplicated object
* @param {function} mapper : optional map function
* @param {Set} visited : internal book keeping seen objects
* */
export declare function ensureNonCyclic<A>(o: A, skip?: boolean, placeholder?: any, mapper?: (a: any) => any, visited?: Set<unknown>): A;
export declare function deleteUndefined(o: ApplyUndefinedType): void;
/**
* to encode json data in csv-style
* i.e. only need to store the keys once for a large collection (e.g. Array / Set)
* */
export declare function objectToValues<T extends object>(o: T, keys?: Array<keyof T>): Array<T[keyof T]>;
/**
* to decode json data from csv-style
* i.e. populate values and keys to a collection (e.g. Array / Set)
* */
export declare function valuesToObject<T>(values: Array<T[keyof T]>, keys: Array<keyof T>): T;
export declare function objectGetOrSetDefault<V = any, K extends PropertyKey = string>(object: Record<K, V>, key: K, f: () => V): V;
export declare function objectPick<T extends object, K extends keyof T = keyof T>(object: T, keys: K[]): Pick<T, K>;
export declare function incObject<K extends PropertyKey>(object: Record<K, number>, key: K): void;