1 | "use strict";
|
2 | var isObj = function (x) {
|
3 | var type = typeof x;
|
4 | return x !== null && (type === 'object' || type === 'function');
|
5 | };
|
6 | var hasOwnProperty = Object.prototype.hasOwnProperty;
|
7 | var propIsEnumerable = Object.prototype.propertyIsEnumerable;
|
8 | function toObject(val) {
|
9 | if (val === null || val === undefined) {
|
10 | throw new TypeError('Sources cannot be null or undefined');
|
11 | }
|
12 | return Object(val);
|
13 | }
|
14 | function assignKey(to, from, key) {
|
15 | var val = from[key];
|
16 | if (val === undefined || val === null) {
|
17 | return;
|
18 | }
|
19 | if (hasOwnProperty.call(to, key)) {
|
20 | if (to[key] === undefined || to[key] === null) {
|
21 | throw new TypeError('Cannot convert undefined or null to object (' + key + ')');
|
22 | }
|
23 | }
|
24 | if (!hasOwnProperty.call(to, key) || !isObj(val)) {
|
25 | to[key] = val;
|
26 | }
|
27 | else {
|
28 | to[key] = assign(Object(to[key]), from[key]);
|
29 | }
|
30 | }
|
31 | function assign(to, from) {
|
32 | if (to === from) {
|
33 | return to;
|
34 | }
|
35 | from = Object(from);
|
36 | for (var key in from) {
|
37 | if (hasOwnProperty.call(from, key)) {
|
38 | assignKey(to, from, key);
|
39 | }
|
40 | }
|
41 | return to;
|
42 | }
|
43 | function deepAssign(target) {
|
44 | var args = [];
|
45 | for (var _i = 1; _i < arguments.length; _i++) {
|
46 | args[_i - 1] = arguments[_i];
|
47 | }
|
48 | target = toObject(target);
|
49 | for (var s = 0; s < args.length; s++) {
|
50 | assign(target, args[s]);
|
51 | }
|
52 | return target;
|
53 | }
|
54 | exports.deepAssign = deepAssign;
|
55 |
|
\ | No newline at end of file |