3d32942ff4b5f07b57216b31f05616a9435cbc9a
[yaffs-website] / node_modules / uncss / node_modules / form-data / node_modules / async / internal / iterator.js
1 'use strict';
2
3 Object.defineProperty(exports, "__esModule", {
4     value: true
5 });
6 exports.default = iterator;
7
8 var _isArrayLike = require('lodash/isArrayLike');
9
10 var _isArrayLike2 = _interopRequireDefault(_isArrayLike);
11
12 var _getIterator = require('./getIterator');
13
14 var _getIterator2 = _interopRequireDefault(_getIterator);
15
16 var _keys = require('lodash/keys');
17
18 var _keys2 = _interopRequireDefault(_keys);
19
20 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
22 function createArrayIterator(coll) {
23     var i = -1;
24     var len = coll.length;
25     return function next() {
26         return ++i < len ? { value: coll[i], key: i } : null;
27     };
28 }
29
30 function createES2015Iterator(iterator) {
31     var i = -1;
32     return function next() {
33         var item = iterator.next();
34         if (item.done) return null;
35         i++;
36         return { value: item.value, key: i };
37     };
38 }
39
40 function createObjectIterator(obj) {
41     var okeys = (0, _keys2.default)(obj);
42     var i = -1;
43     var len = okeys.length;
44     return function next() {
45         var key = okeys[++i];
46         return i < len ? { value: obj[key], key: key } : null;
47     };
48 }
49
50 function iterator(coll) {
51     if ((0, _isArrayLike2.default)(coll)) {
52         return createArrayIterator(coll);
53     }
54
55     var iterator = (0, _getIterator2.default)(coll);
56     return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);
57 }
58 module.exports = exports['default'];