'use strict';
var iterator = function (next) {
var it = { next: next };
it['@@iterator'] = function () {
return it;
};
return it;
};
var arrayValuesNext = function (array) {
var i = 0;
return function () {
return i === array.length ? {
value: void 0,
done: true
} : {
value: array[i++],
done: false
};
};
};
var arrayKeysNext = function (array) {
var i = 0;
return function () {
return i === array.length ? {
value: void 0,
done: true
} : {
value: i++,
done: false
};
};
};
var arrayEntriesNext = function (array) {
var i = 0;
return function () {
return i === array.length ? {
value: void 0,
done: true
} : {
value: [
i,
array[i++]
],
done: false
};
};
};
var objectValuesNext = function (object) {
var keys = Object.keys(object), i = 0;
return function () {
return i === keys.length ? {
value: void 0,
done: true
} : {
value: object[keys[i++]],
done: false
};
};
};
var objectKeysNext = function (object) {
var keys = Object.keys(object), i = 0;
return function () {
return i === keys.length ? {
value: void 0,
done: true
} : {
value: keys[i++],
done: false
};
};
};
var objectEntriesNext = function (object) {
var keys = Object.keys(object), i = 0;
return function () {
if (i === keys.length) {
return {
value: void 0,
done: true
};
}
var key = keys[i++], value = object[key];
return {
value: [
key,
value
],
done: false
};
};
};
exports.iterator = iterator;
exports.values = function values(object) {
return iterator(object instanceof Array ? arrayValuesNext(object) : objectValuesNext(object));
};
exports.keys = function keys(object) {
return iterator(object instanceof Array ? arrayKeysNext(object) : objectKeysNext(object));
};
exports.entries = function entries(object) {
return iterator(object instanceof Array ? arrayEntriesNext(object) : objectEntriesNext(object));
}; |