@ngneat/loadoff
Version:
<p align="center"> <img width="20%" height="20%" src="./logo.svg"> </p>
52 lines • 5.47 kB
JavaScript
import { of, pipe } from 'rxjs';
import { catchError, map, startWith } from 'rxjs/operators';
export class AsyncState {
constructor(state = {}) {
this.res = undefined;
this.error = undefined;
this.loading = true;
this.success = false;
this.complete = false;
Object.assign(this, state);
}
}
export function createAsyncState(state = {}) {
return new AsyncState(state);
}
export function createSyncState(res) {
return new AsyncState({
loading: false,
complete: true,
res,
});
}
export function isSuccess(state) {
return state.success;
}
export function hasError(state) {
return !!state.error;
}
export function isComplete(state) {
return state.complete;
}
export function isLoading(state) {
return state.loading;
}
export function toAsyncState() {
return pipe(map((res) => {
return new AsyncState({
res,
loading: false,
complete: true,
success: true,
});
}), startWith(new AsyncState()), catchError((error) => {
console.error(error);
return of(new AsyncState({
error,
loading: false,
complete: true,
}));
}));
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9Bc3luY1N0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmduZWF0L2xvYWRvZmYvc3JjL2xpYi90b0FzeW5jU3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEVBQUUsRUFBb0IsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTVELE1BQU0sT0FBTyxVQUFVO0lBT3JCLFlBQVksUUFBbUMsRUFBRTtRQU5qRCxRQUFHLEdBQWtCLFNBQVMsQ0FBQztRQUMvQixVQUFLLEdBQWtCLFNBQVMsQ0FBQztRQUNqQyxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBR2YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0IsQ0FBQztDQUNGO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUFhLFFBQW1DLEVBQUU7SUFDaEYsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBYSxHQUFNO0lBQ2hELE9BQU8sSUFBSSxVQUFVLENBQU87UUFDMUIsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsSUFBSTtRQUNkLEdBQUc7S0FDSixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLFNBQVMsQ0FBSSxLQUFvQjtJQUMvQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUM7QUFDdkIsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQUksS0FBb0I7SUFDOUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxLQUEwQjtJQUNuRCxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUMsS0FBMEI7SUFDbEQsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBQ3ZCLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWTtJQUMxQixPQUFPLElBQUksQ0FDVCxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUNWLE9BQU8sSUFBSSxVQUFVLENBQU87WUFDMUIsR0FBRztZQUNILE9BQU8sRUFBRSxLQUFLO1lBQ2QsUUFBUSxFQUFFLElBQUk7WUFDZCxPQUFPLEVBQUUsSUFBSTtTQUNkLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxFQUNGLFNBQVMsQ0FBQyxJQUFJLFVBQVUsRUFBUSxDQUFDLEVBQ2pDLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFckIsT0FBTyxFQUFFLENBQ1AsSUFBSSxVQUFVLENBQU87WUFDbkIsS0FBSztZQUNMLE9BQU8sRUFBRSxLQUFLO1lBQ2QsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUNILENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgb2YsIE9wZXJhdG9yRnVuY3Rpb24sIHBpcGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5leHBvcnQgY2xhc3MgQXN5bmNTdGF0ZTxULCBFID0gYW55PiB7XG4gIHJlczogVCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgZXJyb3I6IEUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gIGxvYWRpbmcgPSB0cnVlO1xuICBzdWNjZXNzID0gZmFsc2U7XG4gIGNvbXBsZXRlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3Ioc3RhdGU6IFBhcnRpYWw8QXN5bmNTdGF0ZTxULCBFPj4gPSB7fSkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgc3RhdGUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBc3luY1N0YXRlPFQsIEUgPSBhbnk+KHN0YXRlOiBQYXJ0aWFsPEFzeW5jU3RhdGU8VCwgRT4+ID0ge30pIHtcbiAgcmV0dXJuIG5ldyBBc3luY1N0YXRlKHN0YXRlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN5bmNTdGF0ZTxULCBFID0gYW55PihyZXM6IFQpIHtcbiAgcmV0dXJuIG5ldyBBc3luY1N0YXRlPFQsIEU+KHtcbiAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICBjb21wbGV0ZTogdHJ1ZSxcbiAgICByZXMsXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdWNjZXNzPFQ+KHN0YXRlOiBBc3luY1N0YXRlPFQ+KTogc3RhdGUgaXMgQXN5bmNTdGF0ZTxUPiAmIHsgcmVzOiBUIH0ge1xuICByZXR1cm4gc3RhdGUuc3VjY2Vzcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0Vycm9yPFQ+KHN0YXRlOiBBc3luY1N0YXRlPFQ+KTogc3RhdGUgaXMgQXN5bmNTdGF0ZTxUPiAmIHsgcmVzOiB1bmRlZmluZWQgfSB7XG4gIHJldHVybiAhIXN0YXRlLmVycm9yO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDb21wbGV0ZShzdGF0ZTogQXN5bmNTdGF0ZTx1bmtub3duPikge1xuICByZXR1cm4gc3RhdGUuY29tcGxldGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xvYWRpbmcoc3RhdGU6IEFzeW5jU3RhdGU8dW5rbm93bj4pIHtcbiAgcmV0dXJuIHN0YXRlLmxvYWRpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0FzeW5jU3RhdGU8VCwgRSA9IGFueT4oKTogT3BlcmF0b3JGdW5jdGlvbjxULCBBc3luY1N0YXRlPFQsIEU+PiB7XG4gIHJldHVybiBwaXBlKFxuICAgIG1hcCgocmVzKSA9PiB7XG4gICAgICByZXR1cm4gbmV3IEFzeW5jU3RhdGU8VCwgRT4oe1xuICAgICAgICByZXMsXG4gICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICBjb21wbGV0ZTogdHJ1ZSxcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH0pLFxuICAgIHN0YXJ0V2l0aChuZXcgQXN5bmNTdGF0ZTxULCBFPigpKSxcbiAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICAgIHJldHVybiBvZihcbiAgICAgICAgbmV3IEFzeW5jU3RhdGU8VCwgRT4oe1xuICAgICAgICAgIGVycm9yLFxuICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgIGNvbXBsZXRlOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KVxuICApO1xufVxuIl19