fumadocs-openapi
Version:
Generate MDX docs for your OpenAPI spec
45 lines (43 loc) • 1.3 kB
JavaScript
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