@yoroi/common
Version:
The Common package of Yoroi SDK
40 lines (39 loc) • 930 B
JavaScript
;
import { freeze } from 'immer';
const success = result => Promise.resolve(result);
const loading = () => new Promise(() => {});
const error = rejectWith => Promise.reject(rejectWith ?? new Error('Unknown error'));
const delayed = ({
data,
timeout = 3000
}) => new Promise(resolve => {
setTimeout(() => resolve(data), timeout);
});
const empty = emptyRepresentation => Promise.resolve(emptyRepresentation);
const asyncBehaviorMaker = ({
otherErrors,
data,
timeout,
emptyRepresentation
}) => freeze({
delayed: (..._args) => delayed({
data,
timeout
}),
empty: (..._args) => empty(emptyRepresentation),
error: {
...otherErrors,
unknown: (..._args) => error()
},
loading,
success: (..._args) => success(data)
});
export const asyncBehavior = freeze({
delayed,
empty,
error,
loading,
success,
maker: asyncBehaviorMaker
});
//# sourceMappingURL=async-behavior.js.map