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.6 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":["promiseIterator","hasIterator","Symbol","asyncIterator","promise","resolved","iterator","next","Promise","resolve","value","undefined","done","reject","then","catch"],"mappings":";;;;+BAEA,mBAAmB,GACnB,UAyBA,kBAAkB;;;eAzBMA;;;AAHxB,IAAMC,cAAc,OAAOC,WAAW,eAAeA,OAAOC,aAAa;AAG1D,SAASH,gBAAmBI,OAAO;IAChD,IAAIC,WAAW;IAEf,IAAMC,WAAW;QACfC,MAAAA,SAAAA;YACE,IAAIF,UAAU,OAAOG,QAAQC,OAAO,CAAC;gBAAEC,OAAOC;gBAAWC,MAAM;YAAK;YACpEP,WAAW;YACX,OAAO,IAAIG,QAAQ,SAACC,SAASI;gBAC3BT,QACGU,IAAI,CAAC,SAACJ;oBACLD,QAAQ;wBAAEC,OAAAA;wBAAOE,MAAM;oBAAM;gBAC/B,GACCG,KAAK,CAACF;YACX;QACF;IACF;IAEA,IAAIZ,aAAa;QACfK,QAAQ,CAACJ,OAAOC,aAAa,CAAC,GAAG;YAC/B,OAAO,IAAI;QACb;IACF;IAEA,OAAOG;AACT"}