diff options
Diffstat (limited to 'node_modules/fbjs/lib/keyMirror.js')
-rw-r--r-- | node_modules/fbjs/lib/keyMirror.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/node_modules/fbjs/lib/keyMirror.js b/node_modules/fbjs/lib/keyMirror.js new file mode 100644 index 000000000..4e46b1f65 --- /dev/null +++ b/node_modules/fbjs/lib/keyMirror.js @@ -0,0 +1,47 @@ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @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;
\ No newline at end of file |