@mintlify/validation
Version:
Validates mint.json files
33 lines (32 loc) • 1.35 kB
JavaScript
import hash from 'object-hash';
import { v4 as uuidv4 } from 'uuid';
import { mapMedia } from './mapMedia.js';
export const mapRequestBody = ({ requestBody, refUuidMap, uuidObjectHashMap, hashedNodeMap, uuid, }) => {
// hash the raw object
const objectHash = hash(requestBody);
// map uuid and hash to uuidObjectHashMap
uuidObjectHashMap[uuid] = objectHash;
// if we've seen this exact object before, skip processing
if (objectHash in hashedNodeMap) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
requestBody = objectHash;
return;
}
// if ref, replace with uuid
if ('$ref' in requestBody && requestBody.$ref) {
const refId = requestBody.$ref;
const refUuid = refUuidMap[refId] || uuidv4();
requestBody.$ref = refUuid;
}
// for each content in request body, create Media node
if ('content' in requestBody) {
Object.entries(requestBody.content).forEach(([contentType, content]) => {
const uuid = uuidv4();
mapMedia({ content, refUuidMap, uuidObjectHashMap, hashedNodeMap, uuid });
// eslint-disable-next-line @typescript-eslint/no-explicit-any
requestBody.content[contentType] = uuid;
});
}
// add to hashedNodeMap
hashedNodeMap[objectHash] = requestBody;
};