saij
Version:
A learning engine.
111 lines (89 loc) • 7.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.clear = clear;
exports.getValues = getValues;
exports.isEmpty = isEmpty;
exports.assign = void 0;
/**
* @module saij/core/utils/object
*/
/* eslint guard-for-in: 0 */
/* eslint no-unused-vars: 0 */
/**
* Polyfill for Object.assign(). Assigns enumerable and own properties from
* one or more source objects to a target object.
* See https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign.
*
* @param {!Object} target The target object.
* @param {...Object} var_sources The source object(s).
* @return {!Object} The modified target object.
*/
/* istanbul ignore next */
const assign = typeof Object.assign === 'function' ?
/* istanbul ignore next */
Object.assign :
/* istanbul ignore next */
function (target, var_sources) {
/* istanbul ignore next */
if (target === undefined || target === null) {
throw new TypeError('Cannot convert undefined or null to object');
}
/* istanbul ignore next */
const output = Object(target);
/* istanbul ignore next */
for (let i = 1, ii = arguments.length; i < ii; i += 1) {
// eslint-disable-next-line
const source = arguments[i];
/* istanbul ignore next */
if (source !== undefined && source !== null) {
/* istanbul ignore next */
for (const key in source) {
/* istanbul ignore next */
if (source.hasOwnProperty(key)) {
/* istanbul ignore next */
output[key] = source[key];
}
}
}
}
/* istanbul ignore next */
return output;
};
/**
* Removes all properties from an object.
* @param {Object} object The object to clear.
*/
exports.assign = assign;
function clear(object) {
for (const property in object) {
Reflect.deleteProperty(object, property);
}
}
/**
* Get an array of property values from an object.
* @param {Object<K,V>} object The object from which to get the values.
* @return {!Array<V>} The property values.
* @template K,V
*/
function getValues(object) {
const values = [];
for (const property in object) {
values.push(object[property]);
}
return values;
}
/**
* Determine if an object has any properties.
* @param {Object} object The object to check.
* @return {boolean} The object is empty.
*/
function isEmpty(object) {
let property = false;
for (property in object) {
return false;
}
return !property;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zYWlqL2NvcmUvdXRpbHMvb2JqZWN0LmpzIl0sIm5hbWVzIjpbImFzc2lnbiIsIk9iamVjdCIsInRhcmdldCIsInZhcl9zb3VyY2VzIiwidW5kZWZpbmVkIiwiVHlwZUVycm9yIiwib3V0cHV0IiwiaSIsImlpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwia2V5IiwiaGFzT3duUHJvcGVydHkiLCJjbGVhciIsIm9iamVjdCIsInByb3BlcnR5IiwiUmVmbGVjdCIsImRlbGV0ZVByb3BlcnR5IiwiZ2V0VmFsdWVzIiwidmFsdWVzIiwicHVzaCIsImlzRW1wdHkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTs7OztBQUlBOztBQUNBOztBQUdBOzs7Ozs7Ozs7O0FBU0E7QUFDTyxNQUFNQSxNQUFNLEdBQUksT0FBT0MsTUFBTSxDQUFDRCxNQUFkLEtBQXlCLFVBQTFCO0FBQ3BCO0FBQ0VDLE1BQU0sQ0FBQ0QsTUFGVztBQUVGO0FBQTJCLFVBQVNFLE1BQVQsRUFBaUJDLFdBQWpCLEVBQThCO0FBQ3pFO0FBQ0EsTUFBSUQsTUFBTSxLQUFLRSxTQUFYLElBQXdCRixNQUFNLEtBQUssSUFBdkMsRUFBNkM7QUFDM0MsVUFBTSxJQUFJRyxTQUFKLENBQWMsNENBQWQsQ0FBTjtBQUNEO0FBQ0Q7OztBQUNBLFFBQU1DLE1BQU0sR0FBR0wsTUFBTSxDQUFDQyxNQUFELENBQXJCO0FBQ0E7O0FBQ0EsT0FBSyxJQUFJSyxDQUFDLEdBQUcsQ0FBUixFQUFXQyxFQUFFLEdBQUdDLFNBQVMsQ0FBQ0MsTUFBL0IsRUFBdUNILENBQUMsR0FBR0MsRUFBM0MsRUFBK0NELENBQUMsSUFBSSxDQUFwRCxFQUF1RDtBQUNyRDtBQUNBLFVBQU1JLE1BQU0sR0FBR0YsU0FBUyxDQUFDRixDQUFELENBQXhCO0FBQ0E7O0FBQ0EsUUFBSUksTUFBTSxLQUFLUCxTQUFYLElBQXdCTyxNQUFNLEtBQUssSUFBdkMsRUFBNkM7QUFDM0M7QUFDQSxXQUFLLE1BQU1DLEdBQVgsSUFBa0JELE1BQWxCLEVBQTBCO0FBQ3hCO0FBQ0EsWUFBSUEsTUFBTSxDQUFDRSxjQUFQLENBQXNCRCxHQUF0QixDQUFKLEVBQWdDO0FBQzlCO0FBQ0FOLFVBQUFBLE1BQU0sQ0FBQ00sR0FBRCxDQUFOLEdBQWNELE1BQU0sQ0FBQ0MsR0FBRCxDQUFwQjtBQUNEO0FBQ0Y7QUFDRjtBQUNGO0FBQ0Q7OztBQUNBLFNBQU9OLE1BQVA7QUFDRCxDQTNCSTtBQThCUDs7Ozs7OztBQUlPLFNBQVNRLEtBQVQsQ0FBZUMsTUFBZixFQUF1QjtBQUM1QixPQUFLLE1BQU1DLFFBQVgsSUFBdUJELE1BQXZCLEVBQStCO0FBQzdCRSxJQUFBQSxPQUFPLENBQUNDLGNBQVIsQ0FBdUJILE1BQXZCLEVBQStCQyxRQUEvQjtBQUNEO0FBQ0Y7QUFHRDs7Ozs7Ozs7QUFNTyxTQUFTRyxTQUFULENBQW1CSixNQUFuQixFQUEyQjtBQUNoQyxRQUFNSyxNQUFNLEdBQUcsRUFBZjs7QUFDQSxPQUFLLE1BQU1KLFFBQVgsSUFBdUJELE1BQXZCLEVBQStCO0FBQzdCSyxJQUFBQSxNQUFNLENBQUNDLElBQVAsQ0FBWU4sTUFBTSxDQUFDQyxRQUFELENBQWxCO0FBQ0Q7O0FBQ0QsU0FBT0ksTUFBUDtBQUNEO0FBR0Q7Ozs7Ozs7QUFLTyxTQUFTRSxPQUFULENBQWlCUCxNQUFqQixFQUF5QjtBQUM5QixNQUFJQyxRQUFRLEdBQUcsS0FBZjs7QUFDQSxPQUFLQSxRQUFMLElBQWlCRCxNQUFqQixFQUF5QjtBQUN2QixXQUFPLEtBQVA7QUFDRDs7QUFDRCxTQUFPLENBQUNDLFFBQVI7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBzYWlqL2NvcmUvdXRpbHMvb2JqZWN0XG4gKi9cblxuLyogZXNsaW50IGd1YXJkLWZvci1pbjogMCAqL1xuLyogZXNsaW50IG5vLXVudXNlZC12YXJzOiAwICovXG5cblxuLyoqXG4gKiBQb2x5ZmlsbCBmb3IgT2JqZWN0LmFzc2lnbigpLiAgQXNzaWducyBlbnVtZXJhYmxlIGFuZCBvd24gcHJvcGVydGllcyBmcm9tXG4gKiBvbmUgb3IgbW9yZSBzb3VyY2Ugb2JqZWN0cyB0byBhIHRhcmdldCBvYmplY3QuXG4gKiBTZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2Fzc2lnbi5cbiAqXG4gKiBAcGFyYW0geyFPYmplY3R9IHRhcmdldCBUaGUgdGFyZ2V0IG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSB2YXJfc291cmNlcyBUaGUgc291cmNlIG9iamVjdChzKS5cbiAqIEByZXR1cm4geyFPYmplY3R9IFRoZSBtb2RpZmllZCB0YXJnZXQgb2JqZWN0LlxuICovXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZXhwb3J0IGNvbnN0IGFzc2lnbiA9ICh0eXBlb2YgT2JqZWN0LmFzc2lnbiA9PT0gJ2Z1bmN0aW9uJylcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgPyBPYmplY3QuYXNzaWduIDogLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gZnVuY3Rpb24odGFyZ2V0LCB2YXJfc291cmNlcykge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHRhcmdldCA9PT0gdW5kZWZpbmVkIHx8IHRhcmdldCA9PT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNvbnZlcnQgdW5kZWZpbmVkIG9yIG51bGwgdG8gb2JqZWN0Jyk7XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgY29uc3Qgb3V0cHV0ID0gT2JqZWN0KHRhcmdldCk7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICBmb3IgKGxldCBpID0gMSwgaWkgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWk7IGkgKz0gMSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICBjb25zdCBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgaWYgKHNvdXJjZSAhPT0gdW5kZWZpbmVkICYmIHNvdXJjZSAhPT0gbnVsbCkge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgICAgICAgIG91dHB1dFtrZXldID0gc291cmNlW2tleV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIG91dHB1dDtcbiAgfTtcblxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIHByb3BlcnRpZXMgZnJvbSBhbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2xlYXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhcihvYmplY3QpIHtcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBvYmplY3QpIHtcbiAgICBSZWZsZWN0LmRlbGV0ZVByb3BlcnR5KG9iamVjdCwgcHJvcGVydHkpO1xuICB9XG59XG5cblxuLyoqXG4gKiBHZXQgYW4gYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzIGZyb20gYW4gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3Q8SyxWPn0gb2JqZWN0IFRoZSBvYmplY3QgZnJvbSB3aGljaCB0byBnZXQgdGhlIHZhbHVlcy5cbiAqIEByZXR1cm4geyFBcnJheTxWPn0gVGhlIHByb3BlcnR5IHZhbHVlcy5cbiAqIEB0ZW1wbGF0ZSBLLFZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbHVlcyhvYmplY3QpIHtcbiAgY29uc3QgdmFsdWVzID0gW107XG4gIGZvciAoY29uc3QgcHJvcGVydHkgaW4gb2JqZWN0KSB7XG4gICAgdmFsdWVzLnB1c2gob2JqZWN0W3Byb3BlcnR5XSk7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcztcbn1cblxuXG4vKipcbiAqIERldGVybWluZSBpZiBhbiBvYmplY3QgaGFzIGFueSBwcm9wZXJ0aWVzLlxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVGhlIG9iamVjdCBpcyBlbXB0eS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkob2JqZWN0KSB7XG4gIGxldCBwcm9wZXJ0eSA9IGZhbHNlO1xuICBmb3IgKHByb3BlcnR5IGluIG9iamVjdCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gIXByb3BlcnR5O1xufVxuIl19