response-iterator
Version:
Creates an async iterator for a variety of inputs in the browser and node. Supports fetch, node-fetch, and cross-fetch
1 lines • 1.56 kB
Source Map (JSON)
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/http/response-iterator/src/iterators/promise.ts"],"sourcesContent":["const hasIterator = typeof Symbol !== 'undefined' && Symbol.asyncIterator;\n\n/* c8 ignore start */\nexport default function promiseIterator<T>(promise): AsyncIterableIterator<T> {\n let resolved = false;\n\n const iterator = {\n next(): Promise<IteratorResult<T, boolean>> {\n if (resolved) return Promise.resolve({ value: undefined, done: true });\n resolved = true;\n return new Promise((resolve, reject) => {\n promise\n .then((value) => {\n resolve({ value, done: false });\n })\n .catch(reject);\n });\n },\n };\n\n if (hasIterator) {\n iterator[Symbol.asyncIterator] = function (): AsyncIterator<T> {\n return this;\n };\n }\n\n return iterator as AsyncIterableIterator<T>;\n}\n/* c8 ignore stop */\n"],"names":["hasIterator","Symbol","asyncIterator","promiseIterator","promise","resolved","iterator","next","Promise","resolve","value","undefined","done","reject","then","catch"],"mappings":"AAAA,MAAMA,cAAc,OAAOC,WAAW,eAAeA,OAAOC,aAAa;AAEzE,mBAAmB,GACnB,eAAe,SAASC,gBAAmBC,OAAO;IAChD,IAAIC,WAAW;IAEf,MAAMC,WAAW;QACfC;YACE,IAAIF,UAAU,OAAOG,QAAQC,OAAO,CAAC;gBAAEC,OAAOC;gBAAWC,MAAM;YAAK;YACpEP,WAAW;YACX,OAAO,IAAIG,QAAQ,CAACC,SAASI;gBAC3BT,QACGU,IAAI,CAAC,CAACJ;oBACLD,QAAQ;wBAAEC;wBAAOE,MAAM;oBAAM;gBAC/B,GACCG,KAAK,CAACF;YACX;QACF;IACF;IAEA,IAAIb,aAAa;QACfM,QAAQ,CAACL,OAAOC,aAAa,CAAC,GAAG;YAC/B,OAAO,IAAI;QACb;IACF;IAEA,OAAOI;AACT,EACA,kBAAkB"}