interceptor.mjs 573 B

1234567891011121314151617181920212223242526272829
  1. import { noop } from "./basic.mjs";
  2. import { isPromise } from "./validate.mjs";
  3. function callInterceptor(interceptor, {
  4. args = [],
  5. done,
  6. canceled
  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(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. };