File size: 1,429 Bytes
676fc08 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import { readTextFromFile } from "./textParser";
const TextFormatFileMimeTypes = [
"application/json",
"application/ld+json",
"application/vnd.api+json",
"application/xhtml+xml",
"application/xml",
"application/atom+xml",
"application/rss+xml",
"application/x-yaml",
"application/rtf",
"application/x-javascript",
"application/x-typescript",
"application/ecmascript",
"application/x-python",
"application/x-httpd-php",
"application/x-latex",
"application/x-sh",
"application/x-csh",
"image/svg+xml",
];
export async function fileParser(file: File): Promise<string> {
if (
file.type.startsWith("text/") ||
TextFormatFileMimeTypes.includes(file.type)
) {
return await readTextFromFile(file);
} else if (
file.type.startsWith("application/vnd.openxmlformats-officedocument") ||
file.type.startsWith("application/vnd.oasis.opendocument")
) {
const { readTextFromOffice } = await import("./officeParser");
const result = await readTextFromOffice(file);
if (result instanceof File) {
return await readTextFromFile(result);
} else if (typeof result === "string") {
return result;
} else {
return "";
}
} else if (file.type === "application/pdf") {
const { readTextFromPDF } = await import("./pdfParser");
return await readTextFromPDF(file);
} else {
throw new Error(`Unsupported file type: ${file.type}`);
}
}
|