const path = require("path"); const fs = require("fs"); const { WATCH_DIRECTORY, SUPPORTED_FILETYPE_CONVERTERS, } = require("../utils/constants"); const { trashFile } = require("../utils/files"); const RESERVED_FILES = ["__HOTDIR__.md"]; async function processSingleFile(targetFilename) { const fullFilePath = path.resolve(WATCH_DIRECTORY, targetFilename); if (RESERVED_FILES.includes(targetFilename)) return { success: false, reason: "Filename is a reserved filename and cannot be processed.", documents: [], }; if (!fs.existsSync(fullFilePath)) return { success: false, reason: "File does not exist in upload directory.", documents: [], }; const fileExtension = path.extname(fullFilePath).toLowerCase(); if (!fileExtension) { return { success: false, reason: `No file extension found. This file cannot be processed.`, documents: [], }; } if (!Object.keys(SUPPORTED_FILETYPE_CONVERTERS).includes(fileExtension)) { trashFile(fullFilePath); return { success: false, reason: `File extension ${fileExtension} not supported for parsing.`, documents: [], }; } const FileTypeProcessor = require(SUPPORTED_FILETYPE_CONVERTERS[ fileExtension ]); return await FileTypeProcessor({ fullFilePath, filename: targetFilename, }); } module.exports = { processSingleFile, };