30 lines
558 B
JavaScript
30 lines
558 B
JavaScript
import { noop, isPromise } from "./basic.mjs";
|
|
function callInterceptor(interceptor, {
|
|
args = [],
|
|
done,
|
|
canceled,
|
|
error
|
|
}) {
|
|
if (interceptor) {
|
|
const returnVal = interceptor.apply(null, args);
|
|
if (isPromise(returnVal)) {
|
|
returnVal.then((value) => {
|
|
if (value) {
|
|
done();
|
|
} else if (canceled) {
|
|
canceled();
|
|
}
|
|
}).catch(error || noop);
|
|
} else if (returnVal) {
|
|
done();
|
|
} else if (canceled) {
|
|
canceled();
|
|
}
|
|
} else {
|
|
done();
|
|
}
|
|
}
|
|
export {
|
|
callInterceptor
|
|
};
|