@lopatnov/make-iterable
Version:
How to make object as array? This TypeScript library makes objects as Array like and iterable.
12 lines (8 loc) • 1.53 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
typeof define === 'function' && define.amd ? define(factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.makeIterable = factory());
})(this, (function () { 'use strict';
var objNames=Object.getOwnPropertyNames(Object.prototype),arrNames=Object.getOwnPropertyNames(Array.prototype),iterableNames=arrNames.filter((function(e){return -1===objNames.indexOf(e)}));function attachIterable(e){Symbol&&Symbol.iterator&&Object.defineProperty(e,Symbol.iterator,{writable:!1,enumerable:!1,configurable:!1,value:function(){var e=this;return {next:function(){return e.length&&this._index<e.length?{value:e[this._index++],done:!1}:{done:!0}},_index:0}}});}function attachArrayProperties(e){iterableNames.forEach((function(r){if(Array.prototype[r]instanceof Function)Object.defineProperty(e,r,{value:function(){return Array.prototype[r].apply(this,arguments)},configurable:!0,writable:!0,enumerable:!1}),e[r]=function(){var e=Array.prototype[r];return e.apply(this,arguments)};else if("length"===r){for(var t=0;void 0!==e[t];)t++;Object.defineProperty(e,"length",{value:t,writable:!0,enumerable:!1,configurable:!1});}else e[r]=Array.prototype[r];}));}function makeIterable(e){if(null==e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e)throw new Error("Incorrect argument: "+e);return attachArrayProperties(e),attachIterable(e),e}
return makeIterable;
}));