@ackee/antonio-core
Version:
A HTTP client built on fetch API with axios-like API.
35 lines • 3.25 kB
JavaScript
/**
* Converts async generator to sync generator.
* Use it to handle `iterableStream` response data type.
*
* @example
* ```ts
* import { runIterableStream } from `@ackee/antonio-core`;
*
* function* fetchPosts() {
* const { data } = yield* api.get('/posts', {
* responseDataType: 'iterableStream',
* });
*
* yield runIterableStream(data, function*(slice) {
* console.log(slice) // -> [{ title: '1' }, { title: '2' }, ...]
* });
* }
* ```
*/
export function* runIterableStream(it, onProgress) {
if (!it[Symbol.asyncIterator]) {
throw new TypeError(`The 1st arg must be async generator. Check you have set the 'responseDataType' to 'iterableStream'.`);
}
while (true) {
const {
done,
value
} = yield it.next();
if (done) {
break;
}
yield* onProgress(value);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJydW5JdGVyYWJsZVN0cmVhbSIsIml0Iiwib25Qcm9ncmVzcyIsIlN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJUeXBlRXJyb3IiLCJkb25lIiwidmFsdWUiLCJuZXh0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvcmVzcG9uc2UvdXRpbHMvcnVuSXRlcmFibGVTdHJlYW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW50ZXJmYWNlIE9uUHJvZ3Jlc3M8VD4ge1xuICAgICh2YWx1ZTogVCk6IEdlbmVyYXRvcjxULCB2b2lkLCBhbnk+O1xufVxuXG4vKipcbiAqIENvbnZlcnRzIGFzeW5jIGdlbmVyYXRvciB0byBzeW5jIGdlbmVyYXRvci5cbiAqIFVzZSBpdCB0byBoYW5kbGUgYGl0ZXJhYmxlU3RyZWFtYCByZXNwb25zZSBkYXRhIHR5cGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBydW5JdGVyYWJsZVN0cmVhbSB9IGZyb20gYEBhY2tlZS9hbnRvbmlvLWNvcmVgO1xuICpcbiAqIGZ1bmN0aW9uKiBmZXRjaFBvc3RzKCkge1xuICogICBjb25zdCB7IGRhdGEgfSA9IHlpZWxkKiBhcGkuZ2V0KCcvcG9zdHMnLCB7XG4gKiAgICAgICByZXNwb25zZURhdGFUeXBlOiAnaXRlcmFibGVTdHJlYW0nLFxuICogICB9KTtcbiAqXG4gKiAgIHlpZWxkIHJ1bkl0ZXJhYmxlU3RyZWFtKGRhdGEsIGZ1bmN0aW9uKihzbGljZSkge1xuICogICAgICBjb25zb2xlLmxvZyhzbGljZSkgLy8gLT4gW3sgdGl0bGU6ICcxJyB9LCB7IHRpdGxlOiAnMicgfSwgLi4uXVxuICogICB9KTtcbiAqICB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uKiBydW5JdGVyYWJsZVN0cmVhbTxUID0gc3RyaW5nIHwgYW55W10+KFxuICAgIGl0OiBBc3luY0dlbmVyYXRvcjxULCB2b2lkLCB1bmtub3duPixcbiAgICBvblByb2dyZXNzOiBPblByb2dyZXNzPFQ+LFxuKSB7XG4gICAgaWYgKCFpdFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0pIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgIGBUaGUgMXN0IGFyZyBtdXN0IGJlIGFzeW5jIGdlbmVyYXRvci4gQ2hlY2sgeW91IGhhdmUgc2V0IHRoZSAncmVzcG9uc2VEYXRhVHlwZScgdG8gJ2l0ZXJhYmxlU3RyZWFtJy5gLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IHlpZWxkIGl0Lm5leHQoKTtcblxuICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB5aWVsZCogb25Qcm9ncmVzcyh2YWx1ZSk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sVUFBVUEsaUJBQWlCQSxDQUM5QkMsRUFBb0MsRUFDcENDLFVBQXlCLEVBQzNCO0VBQ0UsSUFBSSxDQUFDRCxFQUFFLENBQUNFLE1BQU0sQ0FBQ0MsYUFBYSxDQUFDLEVBQUU7SUFDM0IsTUFBTSxJQUFJQyxTQUFTLENBQ2YscUdBQ0osQ0FBQztFQUNMO0VBRUEsT0FBTyxJQUFJLEVBQUU7SUFDVCxNQUFNO01BQUVDLElBQUk7TUFBRUM7SUFBTSxDQUFDLEdBQUcsTUFBTU4sRUFBRSxDQUFDTyxJQUFJLENBQUMsQ0FBQztJQUV2QyxJQUFJRixJQUFJLEVBQUU7TUFDTjtJQUNKO0lBRUEsT0FBT0osVUFBVSxDQUFDSyxLQUFLLENBQUM7RUFDNUI7QUFDSiIsImlnbm9yZUxpc3QiOltdfQ==