UNPKG

@ackee/antonio-core

Version:

A HTTP client built on fetch API with axios-like API.

35 lines 3.25 kB
/** * 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==