50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
|
'use strict';
|
||
|
|
||
|
Object.defineProperty(exports, '__esModule', { value: true });
|
||
|
|
||
|
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());
|
||
|
}
|
||
|
|
||
|
exports.hasOwnProperty = hasOwnProperty;
|
||
|
exports.propertyIsEnumerable = propertyIsEnumerable;
|
||
|
exports.merge = merge;
|
||
|
exports.isIterator = isIterator;
|
||
|
exports.isGeneratorFunction = isGeneratorFunction;
|