UNPKG

@ts-dev-tools/core

Version:
58 lines (57 loc) 2.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PackageJsonMerge = void 0; var PackageJsonMerge = /** @class */ (function () { function PackageJsonMerge() { } PackageJsonMerge.merge = function (source, update) { return PackageJsonMerge.mergeObjects(source, update); }; PackageJsonMerge.mergeValues = function (source, update) { if (source === undefined) { return update; } if (!PackageJsonMerge.typesEqual(source, update)) { throw new Error("Unable to merge package json value because types are different"); } // Deal with arrays if (Array.isArray(update)) { return PackageJsonMerge.mergeArrays(source, update); } // Deal with objects if (typeof update === "object") { return PackageJsonMerge.mergeObjects(source, update); } return update; }; PackageJsonMerge.mergeObjects = function (source, update) { for (var updateKey in update) { if (!Object.prototype.hasOwnProperty.call(update, updateKey)) { continue; } var updateValue = update[updateKey]; var sourceValue = Object.prototype.hasOwnProperty.call(source, updateKey) ? source[updateKey] : undefined; source[updateKey] = PackageJsonMerge.mergeValues(sourceValue, updateValue); } return source; }; PackageJsonMerge.mergeArrays = function (source, update) { for (var _i = 0, update_1 = update; _i < update_1.length; _i++) { var item = update_1[_i]; if (!source.includes(item)) { source.push(item); } } return source; }; PackageJsonMerge.typesEqual = function (sourceValue, updateValue) { if (Array.isArray(sourceValue) && !Array.isArray(updateValue)) { return false; } return typeof sourceValue === typeof updateValue; }; return PackageJsonMerge; }()); exports.PackageJsonMerge = PackageJsonMerge;