UNPKG

@cch137/format-utils

Version:

A collection of utility modules for formatting and processing data

35 lines 2.29 kB
type KeysWithOptional<T> = { [K in keyof T]-?: {} extends { [P in K]: T[K]; } ? K : never; }[keyof T]; type MergedProperties<A, B, K extends keyof A & keyof B> = { [P in K]: A[P] | Exclude<B[P], undefined>; }; type Identity<T> = T extends infer U ? { [K in keyof U]: U[K]; } : never; type MergeImplement<A, B> = Identity<Pick<B, Exclude<keyof B, keyof A>> & Pick<A, Exclude<keyof A, KeysWithOptional<A>>> & Pick<A, Exclude<KeysWithOptional<A>, keyof B>> & MergedProperties<B, A, KeysWithOptional<A> & keyof B>>; export type Merge<L extends readonly [...any]> = L extends [infer A, ...infer B] ? MergeImplement<A, Merge<B>> : unknown; export declare function merge<T extends object[]>(...objs: [...T]): Merge<T>; export declare const nullPrototype: object | null; export declare function getPrototypesOf(obj: object): object[]; export declare function getAllKeys(obj: object): (string | symbol)[]; export declare function getAllDescriptors<T extends object>(obj: T): { [P in keyof T]: TypedPropertyDescriptor<T[P]>; } & { [x: string]: PropertyDescriptor; }; export declare const isObject: (value: any) => value is object; type CircularPointer = { o: number | `${number}`; }; export declare function decircular(obj: object): object[]; export declare function decircular(obj: object, level: number, objectLevels: object[][], objectIds: Map<object, CircularPointer>, encodedObjects: Map<object, object>): CircularPointer; export declare function encircular<T extends object = object>(series: object[]): T; export type PickKeys<T, K extends Array<keyof T> | undefined = undefined> = K extends undefined ? T : Pick<T, K extends Array<infer U> ? U : never>; export type OmitKeys<T, K extends Array<keyof T> | undefined = undefined> = K extends undefined ? T : Omit<T, K extends Array<infer U> ? U : never>; export declare function pick<T extends object, K extends Array<keyof T>>(obj: T, keys: K): PickKeys<T, K>; export declare function omit<T extends object, K extends Array<keyof T>>(obj: T, keys: K): OmitKeys<T, K>; export declare function readOnly<T extends object, K extends Array<keyof T>>(obj: T, keys?: K): T; export declare function writeOnly<T extends object, K extends Array<keyof T>>(obj: T, keys?: K): T; export {}; //# sourceMappingURL=index.d.ts.map