{"version":3,"sources":["../src/index.ts","../src/lib/pdf.ts","../src/lib/utils/errors.ts","../src/lib/plaintext.ts","../src/lib/utils/index.ts","../src/lib/word.ts","../src/lib/csv.ts","../src/lib/powerpoint.ts"],"sourcesContent":["import { tokenizePDF } from \"./lib/pdf.js\";\nimport { tokenizePlaintextFile } from \"./lib/plaintext.js\";\nimport { removeTempFile, writeTempFile } from \"./lib/utils/index.js\";\nimport { UnrecognizableFileType, UnsupportedFileType } from \"./lib/utils/errors.js\";\nimport { tokenizeWordDocument } from \"./lib/word.js\";\nimport { lookup } from \"mime-types\";\nimport { Document } from \"langchain/document\";\nimport { tokenizeCsvFile } from \"./lib/csv.js\";\nimport { Readable } from \"node:stream\";\nimport { tokenizePowerpointDocument } from \"./lib/powerpoint.js\";\n\nexport interface DocumentChunk {\n    id?: string | undefined;\n    metadata: Record<string, any>;\n    content: string;\n}\n\nexport type TokenizeFunction = (\n    filePath: string,\n    chunkSize: number,\n    chunkOverlap: number,\n    options?: Record<string, any>,\n) => Promise<Document[]>;\n\nconst fileHandlers: Record<string, TokenizeFunction> = {\n    \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": tokenizeWordDocument,\n    \"application/msword\": tokenizeWordDocument,\n    \"application/vnd.ms-powerpoint\": tokenizePowerpointDocument,\n    \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": tokenizePowerpointDocument,\n    \"application/pdf\": tokenizePDF,\n    \"text/csv\": tokenizeCsvFile,\n};\n\nconst defaultHandler: TokenizeFunction = tokenizePlaintextFile;\n\nconst streamToBuffer = async (stream: Readable): Promise<Buffer> => {\n    const chunks = [];\n    for await (const chunk of stream) {\n        chunks.push(chunk);\n    }\n    return Buffer.concat(chunks);\n};\n\nexport async function tokenizeFile(\n    filePath: string,\n    chunkOverlap: number = 200,\n    chunkSize: number = 1000,\n    options?: Record<string, any>,\n): Promise<DocumentChunk[]> {\n    // Determine the mime type of the given filepath:\n    let mimeType = lookup(filePath);\n    if (mimeType === false) {\n        throw new UnrecognizableFileType(`The filetype provided at path ${filePath} is unrecognizable`);\n    }\n\n    const handler = fileHandlers[mimeType] || (mimeType.startsWith(\"text/\") ? defaultHandler : null);\n    if (!handler) {\n        throw new UnsupportedFileType(\n            `The filetype provided at path ${filePath} is not supported (mime type: ${mimeType})`,\n        );\n    }\n    const document = await handler(filePath, chunkSize, chunkOverlap, options);\n\n    // * Convert Langchain dependency to a common structure:\n    return document.map((doc: Document, index: number) => {\n        return {\n            id: doc.id ?? `idx-${index}`,\n            metadata: doc.metadata,\n            content: doc.pageContent,\n        };\n    });\n}\n\nexport async function tokenizeFromBufferOrString(\n    content: Buffer | string | Readable,\n    extension: string,\n    chunkOverlap: number = 200,\n    chunkSize: number = 1000,\n    options?: Record<string, any>,\n): Promise<DocumentChunk[]> {\n    let tempFilePath: string | null = null;\n    try {\n        // Convert streams to buffers:\n        const fileData: Buffer | string = content instanceof Readable ? await streamToBuffer(content) : content;\n        // Create a temporary file\n        tempFilePath = await writeTempFile(fileData, extension);\n        // Tokenize the file using the existing tokenizeFile function\n        return await tokenizeFile(tempFilePath, chunkOverlap, chunkSize, options);\n    } catch (error) {\n        console.error(\"Error during tokenization:\", error);\n        throw error;\n    } finally {\n        // Clean up: delete the temporary file\n        if (tempFilePath) {\n            await removeTempFile(tempFilePath);\n        }\n    }\n}\n","import { PDFLoader } from \"@langchain/community/document_loaders/fs/pdf\";\nimport { RecursiveCharacterTextSplitter } from \"langchain/text_splitter\";\nimport { PdfLoadingError } from \"./utils/errors.js\";\nimport { Document } from \"langchain/document\";\n\nexport async function tokenizePDF(\n    filePath: string,\n    chunkSize: number = 1000,\n    chunkOverlap: number = 200,\n    options?: Record<string, any>,\n): Promise<Document[]> {\n    try {\n        // Load the PDF\n        const pdfLoader = new PDFLoader(filePath, { splitPages: options?.splitByPage || false });\n        const document = await pdfLoader.load();\n        const splitter = new RecursiveCharacterTextSplitter({\n            chunkSize: chunkSize,\n            chunkOverlap: chunkOverlap,\n        });\n        const fullText = document.map((d) => d.pageContent).join(\"\\n\\n\");\n\n        const totalChars = fullText.length;\n        const estimatedChunks = Math.ceil((totalChars - chunkOverlap) / (chunkSize - chunkOverlap));\n        console.log(`Total chars: ${totalChars}`);\n        console.log(`Estimated chunks: ~${estimatedChunks}`);\n\n        return await splitter.createDocuments([fullText]);\n    } catch (error: any) {\n        console.error(\"Error tokenizing PDF:\", error);\n        if (error instanceof Error) {\n            throw new PdfLoadingError(error.message);\n        } else throw new PdfLoadingError(`An error occurred while loading the PDF file at ${filePath}`);\n    }\n}\n\nasync function splitByPage(splitter: RecursiveCharacterTextSplitter, pages: Document<Record<string, any>>[]) {\n    const allChunks = [];\n    for (const page of pages) {\n        const chunks = await splitter.createDocuments([page.pageContent]);\n        chunks.forEach((c) => (c.metadata = { ...c.metadata, pageNumber: page.metadata?.pageNumber }));\n        allChunks.push(...chunks);\n    }\n    return allChunks;\n}\n","export class PdfLoadingError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"PdfLoadingError\";\n  }\n}\n\nexport class TextLoadingError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"TextLoadingError\";\n  }\n}\n\nexport class CsvLoadingError extends Error {\n    constructor(message: string) {\n      super(message);\n      this.name = \"CsvLoadingError\";\n    }\n  }\n\nexport class WordLoadingError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"WordLoadingError\";\n  }\n}\n\nexport class PowerpointLoadingError extends Error {\n    constructor(message: string) {\n      super(message);\n      this.name = \"PowerpointLoadingError\";\n    }\n  }\n\nexport class UnrecognizableFileType extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"UnrecognizableFileType\";\n  }\n}\n\nexport class UnsupportedFileType extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"UnsupportedFileType\";\n  }\n}\n","import { RecursiveCharacterTextSplitter } from \"langchain/text_splitter\";\nimport { TextLoader } from \"langchain/document_loaders/fs/text\";\nimport { TextLoadingError } from \"./utils/errors.js\";\nimport { Document } from \"langchain/document\";\n\nexport async function tokenizePlaintextFile(\n    filePath: string,\n    chunkSize: number = 1000,\n    chunkOverlap: number = 200,\n    options?: Record<string, any>,\n): Promise<Document[]> {\n    try {\n        // Read the file\n        const textLoader = new TextLoader(filePath);\n        const document = await textLoader.load();\n        const splitter = new RecursiveCharacterTextSplitter({\n            chunkSize: chunkSize,\n            chunkOverlap: chunkOverlap,\n        });\n        const fullContent = document.map((d) => d.pageContent).join(\"\\n\");\n        return await splitter.createDocuments([fullContent]);\n    } catch (error: any) {\n        console.error(\"Error tokenizing file:\", error);\n        if (error instanceof Error) {\n            throw new TextLoadingError(error.message);\n        } else throw new TextLoadingError(`An error occurred while loading the file at ${filePath}`);\n    }\n}\n","import * as fs from \"fs\";\nimport os from \"os\";\nimport path from \"path\";\nimport { Readable } from \"stream\";\nimport { v4 as uuidv4 } from \"uuid\";\nimport { pipeline } from 'stream/promises';\n\nexport async function writeTempFile(content: string | Buffer | Readable, extension: string): Promise<string> {\n  const tempDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), \"tokenize-\"));\n  const tempFilePath = path.join(tempDir, `temp-${uuidv4()}.${extension}`);\n\n  // Write the content to the temporary file\n  if (typeof content === \"string\") {\n    await fs.promises.writeFile(tempFilePath, content, \"utf8\");\n  } else if (content instanceof Buffer) {\n    await fs.promises.writeFile(tempFilePath, content);\n  } else if (content instanceof Readable) {\n    const writeStream = fs.createWriteStream(tempFilePath);\n    await pipeline(content, writeStream);\n  }\n  return tempFilePath;\n}\n\nexport async function removeTempFile(filePath: string): Promise<void> {\n  try {\n    await fs.promises.unlink(filePath);\n    await fs.promises.rmdir(path.dirname(filePath));\n  } catch (cleanupError) {\n    console.error(\"Error cleaning up temporary file:\", cleanupError);\n  }\n}\n","import { Document } from \"langchain/document\";\nimport { DocxLoader } from \"@langchain/community/document_loaders/fs/docx\";\nimport { RecursiveCharacterTextSplitter } from \"langchain/text_splitter\";\nimport { WordLoadingError } from \"./utils/errors.js\";\n\nexport async function tokenizeWordDocument(\n    filePath: string,\n    chunkSize: number = 1000,\n    chunkOverlap: number = 200,\n    options?: Record<string, any>,\n): Promise<Document[]> {\n    try {\n        // Step 1: Read the Word document\n        const docxBuffer = new DocxLoader(filePath);\n        const document = await docxBuffer.load();\n        const splitter = new RecursiveCharacterTextSplitter({\n            chunkSize: chunkSize,\n            chunkOverlap: chunkOverlap,\n        });\n        return options?.splitByPage\n            ? await splitter.splitDocuments(document)\n            : await splitter.createDocuments([document.map((d) => d.pageContent).join(\"\\n\\n\")]);\n    } catch (error) {\n        console.error(\"Error tokenizing Word document:\", error);\n        if (error instanceof Error) {\n            throw new WordLoadingError(error.message);\n        } else throw new WordLoadingError(`An error occurred while loading the PDF file at ${filePath}`);\n    }\n}\n","import { RecursiveCharacterTextSplitter } from \"langchain/text_splitter\";\nimport { CSVLoader } from \"@langchain/community/document_loaders/fs/csv\";\nimport { CsvLoadingError } from \"./utils/errors.js\";\nimport { Document } from \"langchain/document\";\n\nexport async function tokenizeCsvFile(\n    filePath: string,\n    chunkSize: number = 1000,\n    chunkOverlap: number = 200,\n    options?: Record<string, any>,\n): Promise<Document[]> {\n    try {\n        // Read the file\n        const textLoader = new CSVLoader(filePath);\n        const document = await textLoader.load();\n        const splitter = new RecursiveCharacterTextSplitter({\n            chunkSize: chunkSize,\n            chunkOverlap: chunkOverlap,\n        });\n        const fullContent = document.map((d) => d.pageContent).join(\"\\n\");\n        return await splitter.createDocuments([fullContent]);\n    } catch (error: any) {\n        console.error(\"Error tokenizing file:\", error);\n        if (error instanceof Error) {\n            throw new CsvLoadingError(error.message);\n        } else throw new CsvLoadingError(`An error occurred while loading the file at ${filePath}`);\n    }\n}\n","import { Document } from \"langchain/document\";\nimport { PPTXLoader } from \"@langchain/community/document_loaders/fs/pptx\";\nimport { RecursiveCharacterTextSplitter } from \"langchain/text_splitter\";\nimport { PowerpointLoadingError } from \"./utils/errors.js\";\n\nexport async function tokenizePowerpointDocument(\n    filePath: string,\n    chunkSize: number = 1000,\n    chunkOverlap: number = 200,\n    options?: Record<string, any>,\n): Promise<Document[]> {\n    try {\n        // Step 1: Read the Word document\n        const pptxBuffer = new PPTXLoader(filePath);\n        const document = await pptxBuffer.load();\n        const splitter = new RecursiveCharacterTextSplitter({\n            chunkSize: chunkSize,\n            chunkOverlap: chunkOverlap,\n        });\n        return options?.splitByPage\n            ? await splitter.splitDocuments(document)\n            : await splitter.createDocuments([document.map((d) => d.pageContent).join(\"\\n\\n\")]);\n    } catch (error) {\n        console.error(\"Error tokenizing Powerpoint document:\", error);\n        if (error instanceof Error) {\n            throw new PowerpointLoadingError(error.message);\n        } else throw new PowerpointLoadingError(`An error occurred while loading the Powerpoint file at ${filePath}`);\n    }\n}\n"],"mappings":"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","names":["import_text_splitter","path","os","uuidv4","import_text_splitter","import_text_splitter","import_text_splitter"]}