vne
Version:
A smarter .env
97 lines (96 loc) • 3.01 kB
JavaScript
;
/// 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