UNPKG

fumadocs-openapi

Version:

Generate MDX docs for your OpenAPI spec

40 lines (37 loc) 1.44 kB
'use client'; import { ident } from "../string-utils.js"; import { resolveMediaAdapter } from "../media/resolve-adapter.js"; import "../media/adapter.js"; //#region src/requests/generators/javascript.ts const generator = (url, data, { mediaAdapters }) => { const s = []; const options = /* @__PURE__ */ new Map(); const headers = {}; options.set("method", JSON.stringify(data.method)); if (data.bodyMediaType) headers["Content-Type"] = data.bodyMediaType; for (const [k, v] of Object.entries(data.header)) headers[k] = v.value; const cookies = Object.entries(data.cookie); if (cookies.length > 0) headers["cookie"] = cookies.map(([key, param]) => `${key}=${param.value}`).join("; "); if (Object.keys(headers).length > 0) options.set("headers", JSON.stringify(headers, null, 2)); let body; if (data.body && data.bodyMediaType) body = resolveMediaAdapter(data.bodyMediaType, mediaAdapters)?.generateExample(data, { lang: "js", addImport(from, name) { s.unshift(`import { ${name} } from "${from}"`); } }); if (body) { s.push(body); options.set("body", "body"); } const params = [JSON.stringify(url)]; if (options.size > 0) { const str = Array.from(options.entries()).map(([k, v]) => ident(k === v ? k : `${k}: ${v}`)).join(",\n"); params.push(`{\n${str}\n}`); } s.push(`fetch(${params.join(", ")})`); return s.join("\n\n"); }; //#endregion export { generator }; //# sourceMappingURL=javascript.js.map