UNPKG

vne

Version:
97 lines (96 loc) 3.01 kB
"use strict"; /// I M P O R T var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.messageDeveloper = exports.deepmerge = void 0; var console_1 = __importDefault(require("@webb/console")); /// E X P O R T function deepmerge(target, source, options) { if (options === void 0) { options = {}; } options.arrayMerge = defaultArrayMerge; options.clone = true; options.isMergeableObject = isMergeableObject; var sourceIsArray = Array.isArray(source); var targetIsArray = Array.isArray(target); var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray; if (!sourceAndTargetTypesMatch) { return clone(source, options); } else if (sourceIsArray) { return options.arrayMerge(target, source, options); } else { return mergeObject(target, source, options); } } exports.deepmerge = deepmerge; function messageDeveloper(message) { process.stdout.write( console_1.default.magentaLine(console_1.default.black(" [vne] ")) + console_1.default.invert(" ".concat(message, " ")) + "\n" ); } exports.messageDeveloper = messageDeveloper; /// H E L P E R function clone(value, options) { return options.clone !== false && options.isMergeableObject(value) ? deepmerge(Array.isArray(value) ? [] : {}, value, options) : value; } function defaultArrayMerge(target, source, options) { return target.concat(source).map(function (element) { return clone(element, options); }); } function isMergeableObject(value) { function isNonNullObject(value) { return !!value && typeof value === "object"; } function isSpecial(value) { var stringValue = Object.prototype.toString.call(value); return stringValue === "[object RegExp]" || stringValue === "[object Date]"; } return isNonNullObject(value) && !isSpecial(value); } function mergeObject(target, source, options) { var destination = {}; if (options.isMergeableObject(target)) { Object.keys(target).forEach(function (key) { destination[key] = clone(target[key], options); }); } Object.keys(source).forEach(function (key) { if (propertyIsUnsafe(target, key)) return; if ( propertyIsOnObject(target, key) && options.isMergeableObject(source[key]) ) destination[key] = deepmerge(target[key], source[key], options); else destination[key] = clone(source[key], options); }); return destination; } function propertyIsOnObject(object, property) { try { return property in object; } catch (_) { return false; } } function propertyIsUnsafe(target, key) { return ( propertyIsOnObject(target, key) && !( Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key) ) ); } /// via https://github.com/TehShrike/deepmerge /// via https://github.com/TehShrike/is-mergeable-object //# sourceMappingURL=helper.js.map