UNPKG

@qaflag/core

Version:

Base requirements for the QA Flag library

27 lines (24 loc) 902 B
import { HttpRequest } from '../models/http-request'; import { fetchWithAxios } from '../utils/axios'; import { HttpRequestOptions } from '../types/http-request.interface'; export const BeforeSymbol = Symbol('AuthenticatePersona'); export function Before(requestOpts?: HttpRequestOptions) { return function ( target: any, methodName: string | symbol, descriptor: PropertyDescriptor, ) { const originalMethod = descriptor.value; target[BeforeSymbol] = target[BeforeSymbol] || {}; target[BeforeSymbol][methodName] = async ( me: any, overrideOpts: Partial<HttpRequestOptions>, ) => { if (!requestOpts) return originalMethod.apply(me); const request = new HttpRequest({ ...requestOpts, ...overrideOpts }); const response = await fetchWithAxios(request); return originalMethod.apply(me, [response]); }; return descriptor; }; }