// Dependencies: import { IneedaInterceptor, IneedaInterceptorFunction, IneedaInterceptorToken } from './ineeda-types'; // Constants: let INTERCEPTORS: Array> = []; let INTERCEPTORS_WITH_TOKEN: Map>> = new Map(); export function getGlobalInterceptors (): Array> { return >>INTERCEPTORS; } export function getInterceptors (interceptor: IneedaInterceptor): Array> { let interceptors: Array> = []; if (interceptor instanceof Function) { interceptors.push(interceptor); } else { Object.keys(interceptor).forEach((interceptorKey: keyof T) => { interceptors.push((value, key) => { if (key === interceptorKey) { return interceptor[interceptorKey]; } return value; }); }); } return interceptors; } export function getInterceptorsForToken (token: IneedaInterceptorToken): Array> { return >>INTERCEPTORS_WITH_TOKEN.get(token); } export function resetInterceptors (): void { INTERCEPTORS.length = 0; INTERCEPTORS_WITH_TOKEN.clear(); } export function setInterceptors (interceptor: IneedaInterceptor): void { INTERCEPTORS = INTERCEPTORS.concat(getInterceptors(interceptor)); } export function setInterceptorsForToken (token: IneedaInterceptorToken, interceptor: IneedaInterceptor): void { INTERCEPTORS_WITH_TOKEN.set(token, getInterceptors(interceptor)); }