UNPKG

merge-deep-ts

Version:

Deep fast merge JavaScript objects with circular references handling and TypeScript support

31 lines (30 loc) 1.12 kB
import { MergeableType, } from "./types.js"; export const isObject = (obj) => Object.prototype.toString.call(obj) === "[object Object]"; export const isArray = (obj) => Array.isArray(obj); export const isMap = (obj) => !!obj && Object.getPrototypeOf(obj) === Map.prototype; export const isSet = (obj) => !!obj && Object.getPrototypeOf(obj) === Set.prototype; export const isNullable = (obj) => obj === null || obj === undefined; export const isMergeable = (obj) => isObject(obj) || isArray(obj) || isMap(obj) || isSet(obj); export const getType = (obj) => { if (isObject(obj)) { return MergeableType.Object; } if (isArray(obj)) { return MergeableType.Array; } if (isMap(obj)) { return MergeableType.Map; } if (isSet(obj)) { return MergeableType.Set; } if (isNullable(obj)) { return MergeableType.Nullable; } return MergeableType.NonMergeable; }; export const getCounter = (() => { let counter = -1; return (reset = false) => reset ? counter = 0 : ++counter; })(); export const ERROR_NOT_ARRAY = "Argument must be an array";