UNPKG

fumadocs-openapi

Version:

Generate MDX docs for your OpenAPI spec

51 lines (50 loc) 1.53 kB
export function joinURL(base, pathname) { if (pathname.startsWith('/')) pathname = pathname.slice(1); if (base.endsWith('/')) base = base.slice(0, -1); if (pathname.length > 0) return base + '/' + pathname; else return base; } /** * @param url - URL (can be relative) * @param base - the base URL (must be absolute) */ export function withBase(url, base) { if (!url.startsWith('https://') && !url.startsWith('http://')) { return joinURL(base, url); } return url; } export function resolveServerUrl(template, variables) { for (const [key, value] of Object.entries(variables)) { template = template.replaceAll(`{${key}}`, value); } return template; } export function resolveRequestData(pathname, { path, query }) { for (const key in path) { const param = path[key]; if (Array.isArray(param.value)) { pathname = pathname.replace(`{${key}}`, param.value.join('/')); } else { pathname = pathname.replace(`{${key}}`, param.value); } } const searchParams = new URLSearchParams(); for (const key in query) { const param = query[key]; if (Array.isArray(param.value)) { for (const item of param.value) { searchParams.append(key, item); } } else { searchParams.append(key, param.value); } } return searchParams.size > 0 ? `${pathname}?${searchParams}` : pathname; }