Browse Source

Added deep merge instead of Object.assign

master
Harish.K 8 years ago
parent
commit
c8aae33840
  1. 25
      index.js

25
index.js

@ -40,6 +40,25 @@ function loadConfig( name ){
return out; return out;
} }
function assignDeep( src, dest1, dest2 ){
var key, val;
for( key in dest1 ){
val = dest1[ key ];
if( val.constructor.name === 'Object' ){
if( ( !src.hasOwnProperty(key) ) || ( src[ key ].constructor.name !== 'Object' ) ){
src[ key ] = {};
}
assignDeep( src[ key ], val );
} else {
src[ key ] = val;
}
}
if( dest2 ){
assignDeep( src, dest2 );
}
return src;
}
/* Implementation of lodash.set function */ /* Implementation of lodash.set function */
function setProp( object, keys, val ){ function setProp( object, keys, val ){
keys = Array.isArray( keys )? keys : keys.split('.'); keys = Array.isArray( keys )? keys : keys.split('.');
@ -50,12 +69,12 @@ function setProp( object, keys, val ){
object[keys[0]] = val; object[keys[0]] = val;
} }
Object.assign( finalConfig, loadConfig('default'), loadConfig( env ) );
assignDeep( finalConfig, loadConfig('default'), loadConfig( env ) );
var envList = Object.keys( process.env ).filter( function(v){
Object.keys( process.env ).filter( function(v){
var match = v.match( envRegex ); var match = v.match( envRegex );
if( match ){ if( match ){
setProp( finalConfig, match[1].toLowerCase(), process.env[v] );
setProp( finalConfig, match[1], process.env[v] );
} }
}); });

Loading…
Cancel
Save