UNPKG

@woogie0303/easyfetch

Version:

#### [한국어 버전](./README_KO.md)

53 lines (40 loc) 1.33 kB
import { EasyFetchRequestType, EasyFetchResponse, } from './types/easyFetch.type'; import type { InterceptorArgs, InterceptorCallbackType, } from './types/interceptor.type'; class Interceptor { requestCbArr: InterceptorArgs<'request'>[]; responseCbArr: InterceptorArgs<'response'>[]; constructor() { this.requestCbArr = []; this.responseCbArr = []; } request: InterceptorCallbackType<'request'> = (onFulfilled, onRejected) => { this.requestCbArr.unshift([onFulfilled, onRejected]); }; response: InterceptorCallbackType<'response'> = (onFulfilled, onRejected) => { this.responseCbArr.push([onFulfilled, onRejected]); }; async flushRequestInterceptors(initVal: Promise<EasyFetchRequestType>) { const flushArr = this.requestCbArr; let promiseInit = initVal; for (let i = 0; i < flushArr.length; i++) { promiseInit = promiseInit.then(...flushArr[i]); } return promiseInit; } // eslint-disable-next-line @typescript-eslint/no-explicit-any async flushResPonseInterceptors(initVal: Promise<EasyFetchResponse<any>>) { const flushArr = this.responseCbArr; let promiseInit = initVal; for (let i = 0; i < flushArr.length; i++) { promiseInit = promiseInit.then(...flushArr[i]); } return promiseInit; } } export default Interceptor;