pomljs
Version:
Prompt Orchestration Markup Language
1 lines • 19 kB
Source Map (JSON)
{"version":3,"file":"document.cjs","sources":["../../.build/components/document.js"],"sourcesContent":["import * as React from 'react';\nimport fs from '../util/fs';\nimport * as mammoth from 'mammoth';\nimport * as cheerio from 'cheerio';\nimport { Header, Newline, Text, Image, Paragraph, List, ListItem, Bold, Italic } from \"../essentials\";\n// import pdf from 'pdf-parse';\nimport { pdfParse, getNumPages } from \"../util/pdf\";\nimport { component, expandRelative, useWithCatch, BufferCollection } from \"../base\";\nimport { Table } from './table';\nimport { parsePythonStyleSlice } from './utils';\nfunction readBufferCached(filePath) {\n const abs = expandRelative(filePath);\n const key = `content://${abs}`;\n const stat = fs.statSync(abs);\n const cached = BufferCollection.get(key);\n if (cached && cached.mtime === stat.mtimeMs) {\n return cached.value;\n }\n const buf = fs.readFileSync(abs);\n BufferCollection.set(key, { value: buf, mtime: stat.mtimeMs });\n return buf;\n}\nasync function parsePdfWithPageLimit(dataBuffer, startPage, endPage) {\n // This is a workaround for pdf-parse not supporting a range.\n const data = await pdfParse(dataBuffer, endPage + 1);\n if (startPage <= 0) {\n return data;\n }\n const minusData = await pdfParse(dataBuffer, startPage);\n return data.slice(minusData.length);\n}\nexport async function readPdf(dataBuffer, options) {\n const { selectedPages } = options || {};\n const numPages = await getNumPages(dataBuffer);\n if (selectedPages) {\n const [start, end] = parsePythonStyleSlice(selectedPages, numPages);\n const result = await parsePdfWithPageLimit(dataBuffer, start, end);\n return React.createElement(Text, { whiteSpace: 'pre' }, result);\n }\n else {\n return React.createElement(Text, { whiteSpace: 'pre' }, await pdfParse(dataBuffer));\n }\n}\nexport async function readPdfFromPath(filePath, options) {\n const dataBuffer = readBufferCached(filePath);\n return readPdf(dataBuffer, options);\n}\nfunction htmlContentsToPoml(element, $, options) {\n const children = element\n .contents()\n .toArray()\n .map((child, index) => {\n if (child.type === 'text') {\n return React.createElement(React.Fragment, { key: index }, child.data);\n }\n else {\n return React.createElement(React.Fragment, { key: index }, htmlToPoml($(child), $, options));\n }\n });\n return children;\n}\nfunction convertTableFromHtml(element, $, options) {\n const body = element\n .find('tr')\n .toArray()\n .map(tr => $(tr)\n .find('td, th')\n .toArray()\n .map(td => $(td).text()));\n const header = body.shift() || [];\n if (header.length === 0) {\n return React.createElement(React.Fragment, null);\n }\n const maxColumns = Math.max(...body.map(row => row.length), header.length);\n if (header.length < maxColumns) {\n header.push(...Array(maxColumns - header.length).map(i => `Unnamed Column ${i + header.length}`));\n }\n const rows = body.map(row => {\n return Object.fromEntries(header.map((column, index) => {\n return [column, index < row.length ? row[index] : ''];\n }));\n });\n return (React.createElement(Table, { records: rows, columns: header.map(column => ({ field: column, header: column })) }));\n}\nexport function htmlToPoml(element, $, options) {\n if (element.is('style') || element.is('script')) {\n return React.createElement(React.Fragment, null);\n }\n else if (element.is('h1') ||\n element.is('h2') ||\n element.is('h3') ||\n element.is('h4') ||\n element.is('h5') ||\n element.is('h6')) {\n return React.createElement(Header, { whiteSpace: 'pre' }, htmlContentsToPoml(element, $, options));\n }\n else if (element.is('p') || element.is('div')) {\n return React.createElement(Paragraph, { whiteSpace: 'pre' }, htmlContentsToPoml(element, $, options));\n }\n else if (element.is('br')) {\n return React.createElement(Newline, null);\n }\n else if (element.is('ol')) {\n return React.createElement(List, { listStyle: 'decimal' }, htmlContentsToPoml(element, $, options));\n }\n else if (element.is('ul')) {\n return React.createElement(List, null, htmlContentsToPoml(element, $, options));\n }\n else if (element.is('li')) {\n return React.createElement(ListItem, null, htmlContentsToPoml(element, $, options));\n }\n else if (element.is('b')) {\n return React.createElement(Bold, null, htmlContentsToPoml(element, $, options));\n }\n else if (element.is('i')) {\n return React.createElement(Italic, null, htmlContentsToPoml(element, $, options));\n }\n else if (element.is('img')) {\n // src is in the format of data:image/png;base64, so we can't use it directly\n const src = element.attr('src');\n // check whether src is in the format of data:type;base64\n if (src.startsWith('data:') && src.includes(';base64')) {\n const base64 = src.split(',')[1];\n if (options?.multimedia || options?.multimedia === undefined) {\n return React.createElement(Image, { syntax: \"multimedia\", base64: base64, alt: element.attr('alt') });\n }\n else {\n return React.createElement(Image, { base64: base64, alt: element.attr('alt') });\n }\n }\n else {\n // TODO: Probably needs to fetch a file or URL\n return React.createElement(React.Fragment, null);\n }\n }\n else if (element.is('table')) {\n return convertTableFromHtml(element, $, options);\n }\n else {\n return React.createElement(React.Fragment, null, htmlContentsToPoml(element, $, options));\n }\n}\nexport async function readDocx(dataBuffer, options) {\n const result = await mammoth.convertToHtml({ buffer: dataBuffer });\n const $ = cheerio.load(result.value);\n return React.createElement(Text, { syntax: \"markdown\" }, htmlContentsToPoml($('body'), $, options));\n}\nexport async function readDocxFromPath(filePath, options) {\n const dataBuffer = readBufferCached(filePath);\n return readDocx(dataBuffer, options);\n}\nexport async function readTxt(dataBuffer, options) {\n const text = dataBuffer.toString();\n return React.createElement(Text, { whiteSpace: 'pre' }, text);\n}\nexport async function readTxtFromPath(filePath, options) {\n const dataBuffer = readBufferCached(filePath);\n return readTxt(dataBuffer, options);\n}\nfunction determineParser(src) {\n src = src.toLowerCase();\n if (src.endsWith('.docx') || src.endsWith('.doc')) {\n return 'docx';\n }\n else if (src.endsWith('.pdf')) {\n return 'pdf';\n }\n else if (src.endsWith('.txt')) {\n return 'txt';\n }\n else {\n throw new Error('Cannot determine parser for ' + src + '. Please manually specify a parser.');\n }\n}\nasync function autoParseDocument(props) {\n let { parser, src, buffer } = props;\n if (parser === 'auto' || parser === undefined) {\n if (!src) {\n throw new Error('Cannot determine parser without source file provided.');\n }\n parser = determineParser(src);\n }\n if (src) {\n buffer = readBufferCached(src);\n }\n else if (!buffer) {\n throw new Error('Either buffer or src must be provided');\n }\n switch (parser) {\n case 'pdf':\n return await readPdf(buffer, props);\n case 'docx':\n return await readDocx(buffer, props);\n case 'txt':\n return await readTxt(buffer, props);\n default:\n throw new Error('Unsupported parser: ' + parser);\n }\n}\n/**\n * Displaying an external document like PDF, TXT or DOCX.\n *\n * @param {string} src - The source file to read the data from. This must be provided if records is not provided.\n * @param {Buffer|string} buffer - Document data buffer. Recommended to use `src` instead unless you want to use a string.\n * @param {string} base64 - Base64 encoded string of the document data. Mutually exclusive with `src` and `buffer`.\n * @param {'auto'|'pdf'|'docx'|'txt'} parser - The parser to use for reading the data. If not provided, it will be inferred from the file extension.\n * @param {boolean} multimedia - If true, the multimedias will be displayed. If false, the alt strings will be displayed at best effort. Default is `true`.\n * @param {string} selectedPages - The pages to be selected. This is only available **for PDF documents**. If not provided, all pages will be selected.\n * You can use a string like `2` to specify a single page, or slice like `2:4` to specify a range of pages (2 inclusive, 4 exclusive).\n * The pages selected are **0-indexed**. Negative indexes like `-1` is not supported here.\n *\n * @see {@link Inline} for other props available.\n *\n * @example\n * To display a Word document without including the real multimedia:\n * ```xml\n * <Document src=\"sample.docx\" multimedia=\"false\"/>\n * ```\n */\nexport const Document = component('Document', { aliases: ['doc'], asynchorous: true })((props) => {\n let { buffer, parser, base64, ...others } = props;\n let parsedBuffer;\n if (base64) {\n if (buffer !== undefined) {\n throw new Error('Either buffer or base64 should be provided, not both.');\n }\n parsedBuffer = Buffer.from(base64, 'base64');\n }\n else {\n if (typeof buffer === 'string') {\n parsedBuffer = Buffer.from(buffer, 'utf-8');\n if (parser === undefined || parser === 'auto') {\n parser = 'txt';\n }\n }\n else {\n parsedBuffer = buffer;\n }\n }\n const document = useWithCatch(autoParseDocument({ buffer: parsedBuffer, parser, ...others }), others);\n return React.createElement(React.Fragment, null, document ?? null);\n});\n//# sourceMappingURL=document.js.map"],"names":["expandRelative","fs","BufferCollection","pdfParse","getNumPages","parsePythonStyleSlice","React","Text","Table","Header","Paragraph","Newline","List","ListItem","Bold","Italic","Image","mammoth","cheerio","component","useWithCatch"],"mappings":"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"}