UNPKG

search-optimizer

Version:

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

27 lines (26 loc) 942 B
export function createFetchExecutor(options) { const { baseUrl, queryParam = 'q', fetchOptions = {}, responseTransformer = response => response.json() } = options; return { execute: async (query, signal) => { const url = new URL(baseUrl); url.searchParams.append(queryParam, query); const requestOptions = { ...fetchOptions, signal, }; try { const response = await fetch(url.toString(), requestOptions); if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } return await responseTransformer(response); } catch (error) { if (error instanceof Error) { throw error; } throw new Error(String(error)); } }, }; }