var _hasOwnProperty = Object.prototype.hasOwnProperty; var _propertyIsEnumerable = Object.prototype.propertyIsEnumerable; function hasOwnProperty(obj, key) { return _hasOwnProperty.call(obj, key); } function propertyIsEnumerable(obj, key) { return _propertyIsEnumerable.call(obj, key); } function merge(a, b) { if (a && b) { for (var key in b) { a[key] = b[key]; } } return a; } function isIterator(obj) { if (!obj) { return false; } if (obj.__shouldIterator__) { return true; } return typeof obj.next === 'function' && typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' && typeof obj[Symbol.iterator] === 'function' && obj[Symbol.iterator]() === obj; } //TODO find better way function isGeneratorFunction(f) { return typeof f === 'function' && /^function\s*\*\s*/.test(f.toString()); } export { hasOwnProperty, propertyIsEnumerable, merge, isIterator, isGeneratorFunction };