interceptor.mjs 558 B

1234567891011121314151617181920212223242526272829
  1. import { noop, isPromise } from "./basic.mjs";
  2. function callInterceptor(interceptor, {
  3. args = [],
  4. done,
  5. canceled,
  6. error
  7. }) {
  8. if (interceptor) {
  9. const returnVal = interceptor.apply(null, args);
  10. if (isPromise(returnVal)) {
  11. returnVal.then((value) => {
  12. if (value) {
  13. done();
  14. } else if (canceled) {
  15. canceled();
  16. }
  17. }).catch(error || noop);
  18. } else if (returnVal) {
  19. done();
  20. } else if (canceled) {
  21. canceled();
  22. }
  23. } else {
  24. done();
  25. }
  26. }
  27. export {
  28. callInterceptor
  29. };