UNPKG

merge-deep-ts

Version:

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

41 lines (40 loc) 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ERROR_NOT_ARRAY = exports.getCounter = exports.getType = exports.isMergeable = exports.isNullable = exports.isSet = exports.isMap = exports.isArray = exports.isObject = void 0; const types_js_1 = require("./types.js"); const isObject = (obj) => Object.prototype.toString.call(obj) === "[object Object]"; exports.isObject = isObject; const isArray = (obj) => Array.isArray(obj); exports.isArray = isArray; const isMap = (obj) => !!obj && Object.getPrototypeOf(obj) === Map.prototype; exports.isMap = isMap; const isSet = (obj) => !!obj && Object.getPrototypeOf(obj) === Set.prototype; exports.isSet = isSet; const isNullable = (obj) => obj === null || obj === undefined; exports.isNullable = isNullable; const isMergeable = (obj) => (0, exports.isObject)(obj) || (0, exports.isArray)(obj) || (0, exports.isMap)(obj) || (0, exports.isSet)(obj); exports.isMergeable = isMergeable; const getType = (obj) => { if ((0, exports.isObject)(obj)) { return types_js_1.MergeableType.Object; } if ((0, exports.isArray)(obj)) { return types_js_1.MergeableType.Array; } if ((0, exports.isMap)(obj)) { return types_js_1.MergeableType.Map; } if ((0, exports.isSet)(obj)) { return types_js_1.MergeableType.Set; } if ((0, exports.isNullable)(obj)) { return types_js_1.MergeableType.Nullable; } return types_js_1.MergeableType.NonMergeable; }; exports.getType = getType; exports.getCounter = (() => { let counter = -1; return (reset = false) => reset ? counter = 0 : ++counter; })(); exports.ERROR_NOT_ARRAY = "Argument must be an array";