UNPKG

search-optimizer

Version:

An optimized, framework-agnostic solution for handling search-as-you-type functionality

37 lines (36 loc) 1.17 kB
export function createAxiosExecutor(options) { const { axios, baseUrl, queryParam = 'q', axiosOptions = {} } = options; let cancelFn = null; return { execute: async (query, signal) => { if (signal) { signal.addEventListener('abort', () => { if (cancelFn) cancelFn('Request was canceled'); }); } let cancelToken; if (axios.CancelToken) { const source = axios.CancelToken.source(); cancelToken = source.token; cancelFn = source.cancel; } const params = {}; params[queryParam] = query; try { const response = await axios.get(baseUrl, { ...axiosOptions, params, cancelToken, }); return response.data; } catch (error) { if (error instanceof Error) { throw error; } throw new Error(String(error)); } }, }; }