{"version":3,"file":"interceptor.mjs","sources":["../../../../src/utils/interceptor.ts"],"sourcesContent":["import { isPromise } from './validate';\r\n\r\nexport type Interceptor = (...args: any[]) => Promise<boolean> | boolean;\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-function\r\nexport function noop() {}\r\n\r\nexport function callInterceptor(options: {\r\n  // 拦截器\r\n  interceptor?: Interceptor;\r\n  // 需要返回的数据\r\n  args?: any[];\r\n  // 事件\r\n  done: () => void;\r\n  canceled?: () => void;\r\n}) {\r\n  const { interceptor, args, done, canceled } = options;\r\n\r\n  // 是否有拦截器\r\n  if (interceptor) {\r\n    // eslint-disable-next-line prefer-spread\r\n    const returnVal = interceptor.apply(null, args || []);\r\n\r\n    if (isPromise(returnVal)) {\r\n      returnVal\r\n        .then((value) => {\r\n          if (value) {\r\n            done();\r\n          } else if (canceled) {\r\n            canceled();\r\n          }\r\n        })\r\n        .catch(noop);\r\n    } else if (returnVal) {\r\n      done();\r\n    } else if (canceled) {\r\n      canceled();\r\n    }\r\n  }\r\n  // 没有直接返回事件\r\n  else {\r\n    done();\r\n  }\r\n}\r\n"],"names":[],"mappings":";;AAKO,SAAS,IAAO,GAAA;AAAC,CAAA;AAEjB,SAAS,gBAAgB,OAQ7B,EAAA;AACD,EAAA,MAAM,EAAE,WAAA,EAAa,IAAM,EAAA,IAAA,EAAM,UAAa,GAAA,OAAA,CAAA;AAG9C,EAAA,IAAI,WAAa,EAAA;AAEf,IAAA,MAAM,YAAY,WAAY,CAAA,KAAA,CAAM,IAAM,EAAA,IAAA,IAAQ,EAAE,CAAA,CAAA;AAEpD,IAAI,IAAA,SAAA,CAAU,SAAS,CAAG,EAAA;AACxB,MACG,SAAA,CAAA,IAAA,CAAK,CAAC,KAAU,KAAA;AACf,QAAA,IAAI,KAAO,EAAA;AACT,UAAK,IAAA,EAAA,CAAA;AAAA,mBACI,QAAU,EAAA;AACnB,UAAS,QAAA,EAAA,CAAA;AAAA,SACX;AAAA,OACD,CACA,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA,eACJ,SAAW,EAAA;AACpB,MAAK,IAAA,EAAA,CAAA;AAAA,eACI,QAAU,EAAA;AACnB,MAAS,QAAA,EAAA,CAAA;AAAA,KACX;AAAA,GAGG,MAAA;AACH,IAAK,IAAA,EAAA,CAAA;AAAA,GACP;AACF;;;;"}