UNPKG

document-extraction-service

Version:
80 lines (69 loc) 2.32 kB
class ChunkData { static validateResponse(chunksData) { if (!chunksData || typeof chunksData !== 'object') { throw new Error('Invalid chunks data format'); } if (Array.isArray(chunksData)) { throw new Error('Invalid chunks data format'); } if (!chunksData.docId || !chunksData.traceId) { throw new Error('Missing required fields in chunks data'); } if (!Array.isArray(chunksData.chunkData)) { throw new Error('Invalid chunk_data format'); } } static validateChunk(chunk) { // Basic object validation if (!chunk || typeof chunk !== 'object' || Array.isArray(chunk)) { throw new Error('Invalid chunk format'); } // Required fields validation const requiredFields = ['chunkText', 'chunkTitle']; for (const field of requiredFields) { if (!(field in chunk)) { throw new Error(`Missing required field: ${field}`); } if (typeof chunk[field] !== 'string') { throw new Error(`Invalid type for ${field}: expected string`); } } // Optional fields type validation const stringFields = [ 'sourceId', 'recordTitle', 'docId', 'recordUrl', 'searchIndexId', 'chunkType', 'chunkId', 'createdOn', 'sourceUrl', 'sourceType', 'sourceName', 'extractionStrategy', 'fileType' ]; // Validate string fields if they exist for (const field of stringFields) { if (field in chunk && chunk[field] !== null && typeof chunk[field] !== 'string') { throw new Error(`Invalid type for ${field}: expected string`); } } // Validate sourceAcl as array if ('sourceAcl' in chunk && chunk.sourceAcl !== null) { if (!Array.isArray(chunk.sourceAcl)) { throw new Error('sourceAcl must be an array'); } } // Validate pageNumber as number if ('pageNumber' in chunk && chunk.pageNumber !== null && typeof chunk.pageNumber !== 'number') { throw new Error('pageNumber must be a number'); } // Validate chunkMeta as object if ('chunkMeta' in chunk && chunk.chunkMeta !== null && (typeof chunk.chunkMeta !== 'object' || Array.isArray(chunk.chunkMeta))) { throw new Error('chunkMeta must be an object'); } } } module.exports = ChunkData;