UNPKG

@mintlify/validation

Version:

Validates mint.json files

33 lines (32 loc) 1.35 kB
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; };