UNPKG

fumadocs-openapi

Version:

Generate MDX docs for your OpenAPI spec

41 lines (40 loc) 1.46 kB
//#region src/utils/url.ts function isUrl(schemaId) { return schemaId.startsWith("https://") || schemaId.startsWith("http://"); } 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) */ function withBase(url, base) { if (!url.startsWith("https://") && !url.startsWith("http://")) return joinURL(base, url); return url; } function resolveServerUrl(template, variables) { for (const [key, value] of Object.entries(variables)) template = template.replaceAll(`{${key}}`, value); return template; } function resolveRequestData(pathname, { path, query }) { for (const key in path) { const param = path[key]; pathname = pathname.replace(`{${key}}`, param.value); } const [pathPart, existingQueryString] = pathname.split("?", 2); const searchParams = new URLSearchParams(existingQueryString || ""); for (const key in query) { const param = query[key]; if (param.values.length === 0) continue; searchParams.delete(key); for (const item of param.values) searchParams.append(key, item); } return searchParams.size > 0 ? `${pathPart}?${searchParams}` : pathPart; } //#endregion export { isUrl, joinURL, resolveRequestData, resolveServerUrl, withBase }; //# sourceMappingURL=url.js.map