| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import { isPromise } from './util'
- function noop() {}
- export type Interceptor = (...args: any[]) => Promise<boolean> | boolean | undefined | void
- export function callInterceptor(
- interceptor: Interceptor | undefined,
- {
- args = [],
- done,
- canceled,
- error
- }: {
- args?: unknown[]
- done: () => void
- canceled?: () => void
- error?: () => void
- }
- ) {
- if (interceptor) {
- // eslint-disable-next-line prefer-spread
- 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()
- }
- }
|