2017-05-03 15:35:00 +02:00
/ * *
* Copyright ( c ) 2013 - present , Facebook , Inc .
*
2017-10-14 18:40:54 +02:00
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree .
2017-05-03 15:35:00 +02:00
*
* @ typechecks static - only
* /
'use strict' ;
var invariant = require ( './invariant' ) ;
/ * *
* Constructs an enumeration with keys equal to their value .
*
* For example :
*
* var COLORS = keyMirror ( { blue : null , red : null } ) ;
* var myColor = COLORS . blue ;
* var isColorValid = ! ! COLORS [ myColor ] ;
*
* The last line could not be performed if the values of the generated enum were
* not equal to their keys .
*
* Input : { key1 : val1 , key2 : val2 }
* Output : { key1 : key1 , key2 : key2 }
*
* @ param { object } obj
* @ return { object }
* /
var keyMirror = function keyMirror ( obj ) {
var ret = { } ;
var key ;
! ( obj instanceof Object && ! Array . isArray ( obj ) ) ? process . env . NODE _ENV !== 'production' ? invariant ( false , 'keyMirror(...): Argument must be an object.' ) : invariant ( false ) : void 0 ;
for ( key in obj ) {
if ( ! obj . hasOwnProperty ( key ) ) {
continue ;
}
ret [ key ] = key ;
}
return ret ;
} ;
module . exports = keyMirror ;