UNPKG

deep-iterator

Version:

Deep iteration of any object or iterable collection.

70 lines (55 loc) 5.87 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _create = require('babel-runtime/core-js/object/create'); var _create2 = _interopRequireDefault(_create); var _iterator = require('babel-runtime/core-js/symbol/iterator'); var _iterator2 = _interopRequireDefault(_iterator); exports.getTypeFromTag = getTypeFromTag; exports.getTag = getTag; exports.getTagMap = getTagMap; var _generators = require('./generators'); var gen = _interopRequireWildcard(_generators); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var TYPE_POSITION_IN_TAG = 8; var tagMap = { '[object Null]': gen.LEAF, '[object Undefined]': gen.LEAF, '[object Boolean]': gen.LEAF, '[object Number]': gen.LEAF, '[object String]': gen.LEAF, // strings are excluded although they are iterable '[object Symbol]': gen.LEAF, '[object Date]': gen.LEAF, '[object RegExp]': gen.LEAF, '[object Function]': gen.LEAF, '[object GeneratorFunction]': gen.LEAF, '[object Promise]': gen.LEAF, '[object Array]': gen.arrayIterator, '[object Set]': gen.genericIterator, '[object Map]': gen.mapIterator, '[object UserDefinedIterable]': gen.genericIterator, '[object NonIterableObject]': gen.objectIterator }; function getTypeFromTag(tag) { return tag.slice(TYPE_POSITION_IN_TAG, tag.length - 1); } function getTag(element) { var stringTag = Object.prototype.toString.call(element); if (stringTag in tagMap) { return stringTag; } if (typeof element[_iterator2.default] === 'function') { return '[object UserDefinedIterable]'; } return '[object NonIterableObject]'; } function getTagMap(config) { var myTagMap = (0, _create2.default)(tagMap); if (!config.iterateOverObject) { myTagMap['[object NonIterableObject]'] = gen.LEAF; } return myTagMap; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy90YWcuanMiXSwibmFtZXMiOlsiZ2V0VHlwZUZyb21UYWciLCJnZXRUYWciLCJnZXRUYWdNYXAiLCJnZW4iLCJUWVBFX1BPU0lUSU9OX0lOX1RBRyIsInRhZ01hcCIsIkxFQUYiLCJhcnJheUl0ZXJhdG9yIiwiZ2VuZXJpY0l0ZXJhdG9yIiwibWFwSXRlcmF0b3IiLCJvYmplY3RJdGVyYXRvciIsInRhZyIsInNsaWNlIiwibGVuZ3RoIiwiZWxlbWVudCIsInN0cmluZ1RhZyIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwiY2FsbCIsImNvbmZpZyIsIm15VGFnTWFwIiwiaXRlcmF0ZU92ZXJPYmplY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O1FBdUJnQkEsYyxHQUFBQSxjO1FBSUFDLE0sR0FBQUEsTTtRQVdBQyxTLEdBQUFBLFM7O0FBdENoQjs7SUFBWUMsRzs7Ozs7O0FBRVosSUFBTUMsdUJBQXVCLENBQTdCOztBQUVBLElBQU1DLFNBQVM7QUFDYixtQkFBaUJGLElBQUlHLElBRFI7QUFFYix3QkFBc0JILElBQUlHLElBRmI7QUFHYixzQkFBb0JILElBQUlHLElBSFg7QUFJYixxQkFBbUJILElBQUlHLElBSlY7QUFLYixxQkFBbUJILElBQUlHLElBTFYsRUFLZ0I7QUFDN0IscUJBQW1CSCxJQUFJRyxJQU5WO0FBT2IsbUJBQWlCSCxJQUFJRyxJQVBSO0FBUWIscUJBQW1CSCxJQUFJRyxJQVJWO0FBU2IsdUJBQXFCSCxJQUFJRyxJQVRaO0FBVWIsZ0NBQThCSCxJQUFJRyxJQVZyQjtBQVdiLHNCQUFvQkgsSUFBSUcsSUFYWDtBQVliLG9CQUFrQkgsSUFBSUksYUFaVDtBQWFiLGtCQUFnQkosSUFBSUssZUFiUDtBQWNiLGtCQUFnQkwsSUFBSU0sV0FkUDtBQWViLGtDQUFnQ04sSUFBSUssZUFmdkI7QUFnQmIsZ0NBQThCTCxJQUFJTztBQWhCckIsQ0FBZjs7QUFtQk8sU0FBU1YsY0FBVCxDQUF3QlcsR0FBeEIsRUFBNkI7QUFDbEMsU0FBT0EsSUFBSUMsS0FBSixDQUFVUixvQkFBVixFQUFnQ08sSUFBSUUsTUFBSixHQUFhLENBQTdDLENBQVA7QUFDRDs7QUFFTSxTQUFTWixNQUFULENBQWdCYSxPQUFoQixFQUF5QjtBQUM5QixNQUFNQyxZQUFZQyxPQUFPQyxTQUFQLENBQWlCQyxRQUFqQixDQUEwQkMsSUFBMUIsQ0FBK0JMLE9BQS9CLENBQWxCO0FBQ0EsTUFBSUMsYUFBYVYsTUFBakIsRUFBeUI7QUFDdkIsV0FBT1UsU0FBUDtBQUNEO0FBQ0QsTUFBSSxPQUFPRCwyQkFBUCxLQUFvQyxVQUF4QyxFQUFvRDtBQUNsRCxXQUFPLDhCQUFQO0FBQ0Q7QUFDRCxTQUFPLDRCQUFQO0FBQ0Q7O0FBRU0sU0FBU1osU0FBVCxDQUFtQmtCLE1BQW5CLEVBQTJCO0FBQ2hDLE1BQU1DLFdBQVcsc0JBQWNoQixNQUFkLENBQWpCO0FBQ0EsTUFBSSxDQUFDZSxPQUFPRSxpQkFBWixFQUErQjtBQUM3QkQsYUFBUyw0QkFBVCxJQUF5Q2xCLElBQUlHLElBQTdDO0FBQ0Q7QUFDRCxTQUFPZSxRQUFQO0FBQ0QiLCJmaWxlIjoidGFnLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZ2VuIGZyb20gJy4vZ2VuZXJhdG9ycyc7XG5cbmNvbnN0IFRZUEVfUE9TSVRJT05fSU5fVEFHID0gODtcblxuY29uc3QgdGFnTWFwID0ge1xuICAnW29iamVjdCBOdWxsXSc6IGdlbi5MRUFGLFxuICAnW29iamVjdCBVbmRlZmluZWRdJzogZ2VuLkxFQUYsXG4gICdbb2JqZWN0IEJvb2xlYW5dJzogZ2VuLkxFQUYsXG4gICdbb2JqZWN0IE51bWJlcl0nOiBnZW4uTEVBRixcbiAgJ1tvYmplY3QgU3RyaW5nXSc6IGdlbi5MRUFGLCAvLyBzdHJpbmdzIGFyZSBleGNsdWRlZCBhbHRob3VnaCB0aGV5IGFyZSBpdGVyYWJsZVxuICAnW29iamVjdCBTeW1ib2xdJzogZ2VuLkxFQUYsXG4gICdbb2JqZWN0IERhdGVdJzogZ2VuLkxFQUYsXG4gICdbb2JqZWN0IFJlZ0V4cF0nOiBnZW4uTEVBRixcbiAgJ1tvYmplY3QgRnVuY3Rpb25dJzogZ2VuLkxFQUYsXG4gICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSc6IGdlbi5MRUFGLFxuICAnW29iamVjdCBQcm9taXNlXSc6IGdlbi5MRUFGLFxuICAnW29iamVjdCBBcnJheV0nOiBnZW4uYXJyYXlJdGVyYXRvcixcbiAgJ1tvYmplY3QgU2V0XSc6IGdlbi5nZW5lcmljSXRlcmF0b3IsXG4gICdbb2JqZWN0IE1hcF0nOiBnZW4ubWFwSXRlcmF0b3IsXG4gICdbb2JqZWN0IFVzZXJEZWZpbmVkSXRlcmFibGVdJzogZ2VuLmdlbmVyaWNJdGVyYXRvcixcbiAgJ1tvYmplY3QgTm9uSXRlcmFibGVPYmplY3RdJzogZ2VuLm9iamVjdEl0ZXJhdG9yXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VHlwZUZyb21UYWcodGFnKSB7XG4gIHJldHVybiB0YWcuc2xpY2UoVFlQRV9QT1NJVElPTl9JTl9UQUcsIHRhZy5sZW5ndGggLSAxKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhZyhlbGVtZW50KSB7XG4gIGNvbnN0IHN0cmluZ1RhZyA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlbGVtZW50KTtcbiAgaWYgKHN0cmluZ1RhZyBpbiB0YWdNYXApIHtcbiAgICByZXR1cm4gc3RyaW5nVGFnO1xuICB9XG4gIGlmICh0eXBlb2YgZWxlbWVudFtTeW1ib2wuaXRlcmF0b3JdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuICdbb2JqZWN0IFVzZXJEZWZpbmVkSXRlcmFibGVdJztcbiAgfVxuICByZXR1cm4gJ1tvYmplY3QgTm9uSXRlcmFibGVPYmplY3RdJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFRhZ01hcChjb25maWcpIHtcbiAgY29uc3QgbXlUYWdNYXAgPSBPYmplY3QuY3JlYXRlKHRhZ01hcCk7XG4gIGlmICghY29uZmlnLml0ZXJhdGVPdmVyT2JqZWN0KSB7XG4gICAgbXlUYWdNYXBbJ1tvYmplY3QgTm9uSXRlcmFibGVPYmplY3RdJ10gPSBnZW4uTEVBRjtcbiAgfVxuICByZXR1cm4gbXlUYWdNYXA7XG59XG4iXX0=