Wanaku MCP Server

Official
const getBody = <T>(c: Response | Request): Promise<T> => { const contentType = c.headers.get('content-type'); if (contentType && contentType.includes('application/json')) { return c.json(); } return c.text() as Promise<T>; }; // NOTE: Update just base url const getUrl = (contextUrl: string): string => { const baseUrl = VITE_API_URL; const url = new URL(baseUrl + contextUrl); const pathname = url.pathname; const search = url.search; const requestUrl = new URL(`${baseUrl}${pathname}${search}`); return requestUrl.toString(); }; // NOTE: Add headers const getHeaders = (headers?: HeadersInit): HeadersInit => { return { ...headers }; }; export const customFetch = async <T>( url: string, options: RequestInit, ): Promise<T> => { const requestUrl = getUrl(url); const requestHeaders = getHeaders(options.headers); const requestInit: RequestInit = { ...options, headers: requestHeaders, }; const request = new Request(requestUrl, requestInit); const response = await fetch(request); const data = await getBody<T>(response); return { status: response.status, data, headers: response.headers } as T; };