UNPKG

fumadocs-openapi

Version:

Generate MDX docs for your OpenAPI spec

45 lines (43 loc) 1.3 kB
import { dereference, upgrade } from "@scalar/openapi-parser"; import { bundle } from "@scalar/json-magic/bundle"; import { fetchUrls, readFiles } from "@scalar/json-magic/bundle/plugins/node"; //#region src/utils/process-document.ts /** * process & reference input document to a Fumadocs OpenAPI compatible format */ async function processDocument(input) { const document = await bundle(input, { plugins: [fetchUrls(), readFiles()], treeShake: true, urlMap: true, hooks: { onResolveError(node) { throw new Error(`Failed to resolve ${node.$ref}`); } } }).then((v) => upgrade(v).specification).catch((e) => { throw new Error(`[OpenAPI] Failed to resolve input: ${input}`, { cause: e }); }); /** * Dereferenced value and its original `$ref` value */ const dereferenceMap = /* @__PURE__ */ new WeakMap(); const serializable = /* @__PURE__ */ new Map(); return { dereferenced: dereference(document, { throwOnError: true, onDereference({ schema, ref }) { serializable.set(ref, schema); dereferenceMap.set(schema, ref); } }).schema, getRawRef(obj) { return dereferenceMap.get(obj); }, _internal_idToSchema() { return serializable; }, bundled: document }; } //#endregion export { processDocument }; //# sourceMappingURL=process-document.js.map