fumadocs-openapi
Version:
Generate MDX docs for your OpenAPI spec
33 lines (32 loc) • 1.31 kB
JavaScript
//#region src/requests/media/resolve-adapter.ts
const VariantMediaTypeRegex = /^(?<dir>[a-zA-Z0-9._-]+)\/(?<content>[a-zA-Z0-9._-]+)\+(?<variant>[a-zA-Z0-9._-]+)$/;
/**
* Resolve a media adapter for a given media type.
* Supports exact matches and pattern matching (e.g., +json suffix).
*
* @param mediaType - The media type to resolve (e.g., "application/json", "application/json-patch+json")
* @param adapters - Record of media adapters
* @returns The resolved adapter or undefined if not found
*/
function resolveMediaAdapter(mediaType, adapters) {
const normalized = mediaType.split(";", 2)[0].trim().toLowerCase();
if (normalized in adapters) return adapters[normalized];
const match = VariantMediaTypeRegex.exec(normalized);
if (match?.groups) {
const baseType = `${match.groups.dir}/${match.groups.variant}`;
if (baseType in adapters) return adapters[baseType];
}
}
/**
* Check if a media type is supported by the given adapters.
*
* @param mediaType - The media type to check
* @param adapters - Record of media adapters
* @returns true if the media type is supported
*/
function isMediaTypeSupported(mediaType, adapters) {
return resolveMediaAdapter(mediaType, adapters) !== void 0;
}
//#endregion
export { isMediaTypeSupported, resolveMediaAdapter };
//# sourceMappingURL=resolve-adapter.js.map