UNPKG

1.22 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.dictionary = dictionary;
7
8function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
10var assign = Object.assign,
11 create = Object.create,
12 defineProperties = Object.defineProperties,
13 keys = Object.keys;
14/**
15 * Create a clean Object
16 * - without a prototype
17 * - with immutable properties.
18 *
19 * @param {Object} interfaceObject
20 * @param {Object} options
21 * @return {Object}
22 */
23
24function dictionary(interfaceObject) {
25 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
26 var _options$enumerable = options.enumerable,
27 enumerable = _options$enumerable === void 0 ? true : _options$enumerable;
28
29 var reduceInterface = function reduceInterface(descriptors, propertyName) {
30 return assign(descriptors, _defineProperty({}, propertyName, {
31 enumerable: enumerable,
32 value: interfaceObject[propertyName]
33 }));
34 };
35
36 return defineProperties(create(null), keys(interfaceObject).reduce(reduceInterface, create(null)));
37}
\No newline at end of file