UNPKG

@ngneat/loadoff

Version:

<p align="center"> <img width="20%" height="20%" src="./logo.svg"> </p>

38 lines 4.2 kB
import { BehaviorSubject, pipe } from 'rxjs'; import { tap } from 'rxjs/operators'; import { AsyncState } from './toAsyncState'; export function createAsyncStore() { const store = new BehaviorSubject(new AsyncState()); function update(data) { let resolved = data; if (typeof data === 'function') { resolved = data(store.getValue().res); } store.next(new AsyncState({ res: resolved, loading: false, complete: true, success: true, })); } return { value$: store.asObservable(), getValue: store.getValue(), update, track() { return pipe(tap({ next(data) { update(data); }, error(err) { store.next(new AsyncState({ error: err, loading: false, complete: true, })); }, })); }, }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmNTdG9yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nbmVhdC9sb2Fkb2ZmL3NyYy9saWIvYXN5bmNTdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUE0QixJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkUsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxNQUFNLFVBQVUsZ0JBQWdCO0lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksZUFBZSxDQUEwQixJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFFN0UsU0FBUyxNQUFNLENBQUMsSUFBOEM7UUFDNUQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBRXBCLElBQUksT0FBTyxJQUFJLEtBQUssVUFBVSxFQUFFO1lBQzlCLFFBQVEsR0FBSSxJQUFpQixDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNyRDtRQUVELEtBQUssQ0FBQyxJQUFJLENBQ1IsSUFBSSxVQUFVLENBQUM7WUFDYixHQUFHLEVBQUUsUUFBb0I7WUFDekIsT0FBTyxFQUFFLEtBQUs7WUFDZCxRQUFRLEVBQUUsSUFBSTtZQUNkLE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFO1FBQzVCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFO1FBQzFCLE1BQU07UUFDTixLQUFLO1lBQ0gsT0FBTyxJQUFJLENBQ1QsR0FBRyxDQUFDO2dCQUNGLElBQUksQ0FBQyxJQUFJO29CQUNQLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDZixDQUFDO2dCQUNELEtBQUssQ0FBQyxHQUFHO29CQUNQLEtBQUssQ0FBQyxJQUFJLENBQ1IsSUFBSSxVQUFVLENBQUk7d0JBQ2hCLEtBQUssRUFBRSxHQUFHO3dCQUNWLE9BQU8sRUFBRSxLQUFLO3dCQUNkLFFBQVEsRUFBRSxJQUFJO3FCQUNmLENBQUMsQ0FDSCxDQUFDO2dCQUNKLENBQUM7YUFDRixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgTW9ub1R5cGVPcGVyYXRvckZ1bmN0aW9uLCBwaXBlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBc3luY1N0YXRlIH0gZnJvbSAnLi90b0FzeW5jU3RhdGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXN5bmNTdG9yZTxSZXNwb25zZSwgRSA9IGFueT4oKSB7XG4gIGNvbnN0IHN0b3JlID0gbmV3IEJlaGF2aW9yU3ViamVjdDxBc3luY1N0YXRlPFJlc3BvbnNlLCBFPj4obmV3IEFzeW5jU3RhdGUoKSk7XG5cbiAgZnVuY3Rpb24gdXBkYXRlKGRhdGE6IFJlc3BvbnNlIHwgKChyZXM6IFJlc3BvbnNlKSA9PiBSZXNwb25zZSkpIHtcbiAgICBsZXQgcmVzb2x2ZWQgPSBkYXRhO1xuXG4gICAgaWYgKHR5cGVvZiBkYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXNvbHZlZCA9IChkYXRhIGFzIEZ1bmN0aW9uKShzdG9yZS5nZXRWYWx1ZSgpLnJlcyk7XG4gICAgfVxuXG4gICAgc3RvcmUubmV4dChcbiAgICAgIG5ldyBBc3luY1N0YXRlKHtcbiAgICAgICAgcmVzOiByZXNvbHZlZCBhcyBSZXNwb25zZSxcbiAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgIGNvbXBsZXRlOiB0cnVlLFxuICAgICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB2YWx1ZSQ6IHN0b3JlLmFzT2JzZXJ2YWJsZSgpLFxuICAgIGdldFZhbHVlOiBzdG9yZS5nZXRWYWx1ZSgpLFxuICAgIHVwZGF0ZSxcbiAgICB0cmFjazxUIGV4dGVuZHMgUmVzcG9uc2U+KCk6IE1vbm9UeXBlT3BlcmF0b3JGdW5jdGlvbjxUPiB7XG4gICAgICByZXR1cm4gcGlwZShcbiAgICAgICAgdGFwKHtcbiAgICAgICAgICBuZXh0KGRhdGEpIHtcbiAgICAgICAgICAgIHVwZGF0ZShkYXRhKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yKGVycikge1xuICAgICAgICAgICAgc3RvcmUubmV4dChcbiAgICAgICAgICAgICAgbmV3IEFzeW5jU3RhdGU8VD4oe1xuICAgICAgICAgICAgICAgIGVycm9yOiBlcnIsXG4gICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29tcGxldGU6IHRydWUsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICApO1xuICAgIH0sXG4gIH07XG59XG4iXX0=