diff options
Diffstat (limited to 'webapp/non_npm_dependencies')
-rw-r--r-- | webapp/non_npm_dependencies/key-mirror/keyMirror.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/webapp/non_npm_dependencies/key-mirror/keyMirror.js b/webapp/non_npm_dependencies/key-mirror/keyMirror.js new file mode 100644 index 000000000..3bd4cff33 --- /dev/null +++ b/webapp/non_npm_dependencies/key-mirror/keyMirror.js @@ -0,0 +1,51 @@ +/** + * 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. + * + * @providesModule keyMirror + * @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(obj) { + var ret = {}; + var key; + invariant( + obj instanceof Object && !Array.isArray(obj), + 'keyMirror(...): Argument must be an object.' + ); + for (key in obj) { + if (!obj.hasOwnProperty(key)) { + continue; + } + ret[key] = key; + } + return ret; +}; + +module.exports = keyMirror;
\ No newline at end of file |