diff --git a/packages/operators/src/request/autoPagination.ts b/packages/operators/src/request/autoPagination.ts index fd35974..b1634b5 100644 --- a/packages/operators/src/request/autoPagination.ts +++ b/packages/operators/src/request/autoPagination.ts @@ -1,18 +1,29 @@ import type { Observable } from 'rxjs'; -import { concatMap, expand, filter, from, map } from 'rxjs'; +import { concatMap, expand, filter, from, map, of, throwError } from 'rxjs'; import { request } from '../request'; export type ResolveRoute = ( reqResp: Request | Response, response?: Response -) => Observable; +) => Observable; export function autoPagination({ resolveRoute }: { resolveRoute: ResolveRoute }) { return (source: Observable) => source.pipe( - concatMap(req => from(resolveRoute(req)).pipe(request(), getNext(resolveRoute, req))), + concatMap(req => + from(resolveRoute(req)).pipe( + concatMap(req => { + if (req === null) { + return throwError(() => new Error('Request is empty!')); + } + return of(req); + }), + request(), + getNext(resolveRoute, req) + ) + ), map(resp => resp.clone()) ); }