@ngneat/loadoff
Version:
<p align="center"> <img width="20%" height="20%" src="./logo.svg"> </p>
38 lines • 4.2 kB
JavaScript
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=