fumadocs-openapi
Version:
Generate MDX docs for your OpenAPI spec
41 lines (40 loc) • 1.46 kB
JavaScript
//#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