Blame view

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