document-extraction-service
Version:
A service for handling document extraction and processing
80 lines (69 loc) • 2.32 kB
JavaScript
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;