asyncerator
Version:
Provide supporting types for AsyncIterable/AsyncIterableIterators, promisified stream.pipeline implementation, and Array-like utility operators, sources and sinks.
29 lines (28 loc) • 1.75 kB
JavaScript
// src/asyncerator.ts
function asyncerator_default(source) {
let iterator;
if (typeof source[Symbol.asyncIterator] === "function") {
iterator = source[Symbol.asyncIterator]();
if (typeof iterator[Symbol.asyncIterator] === "function") {
return iterator;
}
} else if (typeof source[Symbol.iterator] === "function") {
const synchronousIterator = source[Symbol.iterator]();
return async function* () {
for (let item = synchronousIterator.next(); item.done !== true; item = synchronousIterator.next()) {
yield item.value;
}
}();
} else {
iterator = source;
}
return async function* () {
for (let item = await iterator.next(); item.done !== true; item = await iterator.next()) {
yield item.value;
}
}();
}
export {
asyncerator_default as default
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2FzeW5jZXJhdG9yLnRzIl0sCiAgIm1hcHBpbmdzIjogIjtBQXdDZSxTQUFSLG9CQUFxQixRQUErRDtBQUN6RixNQUFJO0FBRUosTUFBSSxPQUFRLE9BQTBCLE9BQU8sYUFBYSxNQUFNLFlBQVk7QUFDMUUsZUFBWSxPQUEwQixPQUFPLGFBQWEsRUFBRTtBQUM1RCxRQUFJLE9BQVEsU0FBc0MsT0FBTyxhQUFhLE1BQU0sWUFBWTtBQUV0RixhQUFPO0FBQUEsSUFDVDtBQUFBLEVBQ0YsV0FBVyxPQUFRLE9BQStCLE9BQU8sUUFBUSxNQUFNLFlBQVk7QUFFakYsVUFBTSxzQkFBdUIsT0FBK0IsT0FBTyxRQUFRLEVBQUU7QUFDN0UsV0FBUSxtQkFBbUI7QUFDekIsZUFBUyxPQUFPLG9CQUFvQixLQUFLLEdBQUcsS0FBSyxTQUFTLE1BQU0sT0FBTyxvQkFBb0IsS0FBSyxHQUFHO0FBQ2pHLGNBQU0sS0FBSztBQUFBLE1BQ2I7QUFBQSxJQUNGLEVBQUc7QUFBQSxFQUNMLE9BQU87QUFFTCxlQUFXO0FBQUEsRUFDYjtBQUVBLFNBQVEsbUJBQW1CO0FBRXpCLGFBQVMsT0FBTyxNQUFNLFNBQVMsS0FBSyxHQUFHLEtBQUssU0FBUyxNQUFNLE9BQU8sTUFBTSxTQUFTLEtBQUssR0FBRztBQUN2RixZQUFNLEtBQUs7QUFBQSxJQUNiO0FBQUEsRUFDRixFQUFHO0FBQ0w7IiwKICAibmFtZXMiOiBbXQp9Cg==