deepAssign.js 1 KB
Newer Older
Felipe Escala Torres committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.deepAssign = deepAssign;

function isObject(x) {
  if (Array.isArray(x)) {
    return false;
  }

  const type = typeof x;
  return type === "object" || type === "function";
}

function assignKey(target, from, key) {
  const value = from[key]; // https://github.com/electron-userland/electron-builder/pull/562

  if (value === undefined) {
    return;
  }

  const prevValue = target[key];

  if (prevValue == null || value == null || !isObject(prevValue) || !isObject(value)) {
    target[key] = value;
  } else {
    target[key] = assign(prevValue, value);
  }
}

function assign(to, from) {
  if (to !== from) {
    for (const key of Object.getOwnPropertyNames(from)) {
      assignKey(to, from, key);
    }
  }

  return to;
}

function deepAssign(target, ...objects) {
  for (const o of objects) {
    if (o != null) {
      assign(target, o);
    }
  }

  return target;
} 
52
// __ts-babel@6.0.4
Felipe Escala Torres committed
53
//# sourceMappingURL=deepAssign.js.map