react-async-iterators
Version:
The magic of JavaScript async iterators in React ⛓️ 🧬 🔃
33 lines • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.iterateFormatted = iterateFormatted;
const ReactAsyncIterable_js_1 = require("../common/ReactAsyncIterable.js");
const asyncIterSyncMap_js_1 = require("../common/asyncIterSyncMap.js");
const isAsyncIter_js_1 = require("../common/isAsyncIter.js");
function iterateFormatted(source, formatFn) {
if (!(0, isAsyncIter_js_1.isAsyncIter)(source)) {
return formatFn(source, 0);
}
const { baseIter, formatFn: precedingFormatFn } = (0, ReactAsyncIterable_js_1.parseReactAsyncIterable)(source);
return {
[Symbol.asyncIterator]: () => (0, asyncIterSyncMap_js_1.asyncIterSyncMap)(source, formatFn)[Symbol.asyncIterator](),
get value() {
return !source.value
? undefined
: {
get current() {
const result = precedingFormatFn(source.value.current, 0);
return formatFn(result, 0);
},
};
},
[ReactAsyncIterable_js_1.reactAsyncIterSpecialInfoSymbol]: {
origSource: baseIter,
formatFn: (value, i) => {
const result = precedingFormatFn(value, i);
return formatFn(result, i);
},
},
};
}
//# sourceMappingURL=index.js.map