| "use strict"; | 
|   | 
| /* | 
|     Deep-clone an object. | 
| */ | 
| function clone(obj) | 
| { | 
|     if (obj instanceof Object) | 
|     { | 
|         var clonedObj = (obj instanceof Array) ? [] : {}; | 
|          | 
|         for (var i in obj) | 
|         { | 
|             if ( obj.hasOwnProperty(i) ) | 
|             { | 
|                 clonedObj[i] = clone( obj[i] ); | 
|             } | 
|         } | 
|          | 
|         return clonedObj; | 
|     } | 
|      | 
|     return obj; | 
| } | 
|   | 
|   | 
|   | 
| /* | 
|     https://github.com/jonschlinkert/is-plain-object | 
| */ | 
| function isPlainObject(obj) | 
| { | 
|     return !!obj && typeof obj==="object" && obj.constructor===Object; | 
| } | 
|   | 
|   | 
|   | 
| /* | 
|     Shallow-merge two objects. | 
| */ | 
| function shallowMerge(target, source) | 
| { | 
|     if (target instanceof Object && source instanceof Object) | 
|     { | 
|         for (var i in source) | 
|         { | 
|             if ( source.hasOwnProperty(i) ) | 
|             { | 
|                 target[i] = source[i]; | 
|             } | 
|         } | 
|     } | 
|      | 
|     return target; | 
| } | 
|   | 
|   | 
|   | 
| module.exports = | 
| { | 
|     clone: clone, | 
|     isPlainObject: isPlainObject, | 
|     shallowMerge: shallowMerge | 
| }; |