@oada/media-types
Version:
OADA formats media type resolution
25 lines • 859 B
JavaScript
import { parse } from 'content-type';
const root = 'https://formats.openag.io';
const regex = /^application\/vnd\.([^.]+)\.(.*)\+json$/;
export function getSchema(mediaType) {
const matches = regex.exec(mediaType.toLowerCase());
if (!matches) {
return;
}
const [, domain, type] = matches;
const types = type?.split('.') ?? [];
const version = types.pop() ?? Number.NaN;
if (!Number(version)) {
return;
}
return `${domain}/${types.join('/')}/v${version}.schema.json`;
}
function resolveSchema(type) {
const schema = getSchema(type);
return schema && `${root}/${schema}`;
}
export default function mediaType2schema(...parameters) {
const { type, parameters: { schema = resolveSchema(type) }, } = parse(...parameters);
return schema ? schema.split(' ') : [];
}
//# sourceMappingURL=index.js.map