UNPKG

@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
(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; }));