@typed/io
Version:
Runtime IO type system
22 lines • 823 B
JavaScript
import { equals } from '@typed/logic';
import { isDoneLoading, isFailure, isLoading, isRefreshing, isRefreshingFailure, isRefreshingSuccess, isSuccess, NoData, } from '@typed/remote-data';
import { Record } from './Record';
import { refinement } from './refinement';
const isNoData = equals(NoData);
const _RemoteData = refinement(Record, (r) => isNoData(r) ||
isLoading(r) ||
isDoneLoading(r) ||
isRefreshing(r));
export { _RemoteData as RemoteData };
export function remoteData(left, right) {
return refinement(_RemoteData, (u) => {
if (isFailure(u) || isRefreshingFailure(u)) {
return left.is(u.value);
}
if (isSuccess(u) || isRefreshingSuccess(u)) {
return right.is(u.value);
}
return true;
});
}
//# sourceMappingURL=RemoteData.js.map