+++ /dev/null
-'use strict';
-var InternalStateModule = require('../internals/internal-state');
-var createIteratorConstructor = require('../internals/create-iterator-constructor');
-var has = require('../internals/has');
-var objectKeys = require('../internals/object-keys');
-var toObject = require('../internals/to-object');
-
-var OBJECT_ITERATOR = 'Object Iterator';
-var setInternalState = InternalStateModule.set;
-var getInternalState = InternalStateModule.getterFor(OBJECT_ITERATOR);
-
-module.exports = createIteratorConstructor(function ObjectIterator(source, mode) {
- var object = toObject(source);
- setInternalState(this, {
- type: OBJECT_ITERATOR,
- mode: mode,
- object: object,
- keys: objectKeys(object),
- index: 0
- });
-}, 'Object', function next() {
- var state = getInternalState(this);
- var keys = state.keys;
- while (true) {
- if (keys === null || state.index >= keys.length) {
- state.object = state.keys = null;
- return { value: undefined, done: true };
- }
- var key = keys[state.index++];
- var object = state.object;
- if (!has(object, key)) continue;
- switch (state.mode) {
- case 'keys': return { value: key, done: false };
- case 'values': return { value: object[key], done: false };
- } /* entries */ return { value: [key, object[key]], done: false };
- }
-});