pomljs
Version:
Prompt Orchestration Markup Language
1 lines • 20.3 kB
Source Map (JSON)
{"version":3,"file":"tree.cjs","sources":["../../.build/components/tree.js"],"sourcesContent":["import * as React from 'react';\nimport fs from '../util/fs';\nimport * as path from 'path';\nimport { computeSyntaxContext, List, ListItem, Text, Header, Code, SubContent, Object } from \"../essentials\";\nimport { component, expandRelative } from \"../base\";\n// FIXME: The comment is not in the right format due to the parser limitation\n/*\n * # Project\n *\n * ## Project/src\n *\n * ### Project/src/index.js\n *\n * ```js\n * console.log(\"hello\")\n * ```\n *\n * ### Project/package.json\n *\n * ```json\n * { \"name\": \"project\" }\n * ```\n **/\nfunction treeToHeaderContentTree(items, parentPath = '', showContent = false) {\n return items.map((item, index) => {\n const currentPath = parentPath ? `${parentPath}/${item.name}` : item.name;\n const hasContent = item.value && showContent;\n const elements = [React.createElement(Header, { key: `header-${index}` }, currentPath)];\n if (hasContent) {\n const pathExtension = path.extname(item.name).toLowerCase();\n const lang = pathExtension.length > 0 ? pathExtension.slice(1) : undefined;\n elements.push(React.createElement(Code, { key: `content-${index}`, lang: lang, inline: false, whiteSpace: \"pre\" }, item.value));\n }\n if (item.children && item.children.length > 0) {\n elements.push(React.createElement(SubContent, null, treeToHeaderContentTree(item.children, currentPath, showContent)));\n }\n return elements;\n });\n}\n/*\n * Example:\n * - Project\n * - src\n * - index.js\n * - package.json\n **/\nfunction treeToNestedList(items, depth = 0) {\n return (React.createElement(List, { blankLine: false }, items.map((item, index) => (React.createElement(ListItem, { key: `item-${index}` },\n item.name,\n item.children && item.children.length > 0 && treeToNestedList(item.children, depth + 1))))));\n}\n/*\n * Example:\n * .git/\n * .git/branches/\n * .git/config\n * ==> start .git/config <==\n * [core]\n * repositoryformatversion = 0\n * filemode = true\n * bare = false\n * logallrefupdates = true\n * ==> end .git/config <==\n *\n * Reference: https://askubuntu.com/questions/1095947/show-tree-of-directory-with-files-content\n */\nfunction treeToPureTextContents(items, parentPath = '') {\n return items\n .map(item => {\n const currentPath = parentPath ? `${parentPath}/${item.name}` : item.name;\n const result = [];\n // Always output path\n result.push(currentPath);\n // If the item has content, format with start/end markers\n if (item.value) {\n result.push(`==> start ${currentPath} <==`);\n result.push(item.value);\n result.push(`==> end ${currentPath} <==`);\n result.push(''); // Add an extra blank line after content\n }\n if (item.children && item.children.length > 0) {\n result.push(treeToPureTextContents(item.children, currentPath));\n }\n return result;\n })\n .flat(Infinity)\n .join('\\n');\n}\n/*\n * Example:\n * Project\n * ├── src\n * │ └── index.js\n * └── package.json\n **/\nfunction treeToBoxDrawings(items, prefix = '', isRoot = true) {\n const lines = [];\n items.forEach((item, index) => {\n const isLast = index === items.length - 1;\n if (isRoot && !item.children) {\n // This is a root-level item without children (category header)\n lines.push(`${item.name}`);\n }\n else if (isRoot) {\n // This is a root-level item with children (category header)\n lines.push(`${item.name}`);\n if (item.children && item.children.length > 0) {\n // Process children with box drawing characters\n const childPrefix = '';\n lines.push(treeToBoxDrawings(item.children, childPrefix, false));\n }\n }\n else {\n // This is a non-root item, add box drawing characters\n lines.push(`${prefix}${isLast ? '└── ' : '├── '}${item.name}`);\n if (item.children && item.children.length > 0) {\n // Calculate new prefix for children\n const childPrefix = prefix + (isLast ? ' ' : '│ ');\n lines.push(treeToBoxDrawings(item.children, childPrefix, false));\n }\n }\n });\n return lines.join('\\n');\n}\n// Function to convert tree items to a nested object for JSON/YAML output\nfunction treeItemsToObject(items, showContent = false) {\n return items.reduce((obj, item) => {\n if (item.children && item.children.length > 0) {\n obj[item.name] = treeItemsToObject(item.children, showContent);\n }\n else if (item.value && showContent) {\n obj[item.name] = item.value;\n }\n else {\n obj[item.name] = null;\n }\n return obj;\n }, {});\n}\n/**\n * Renders a tree structure in various formats.\n *\n * @param {'markdown'|'html'|'json'|'yaml'|'text'|'xml'} syntax - The output syntax to use for rendering the tree\n * @param {TreeItemData[]} items - Array of tree items to render\n * @param {boolean} showContent - Whether to show content values of tree items\n *\n * @example\n * ```xml\n * <Tree items={treeData} syntax=\"markdown\" showContent={true} />\n * ```\n */\nexport const Tree = component('Tree')((props) => {\n const presentation = computeSyntaxContext(props);\n const { items, showContent, ...others } = props;\n if (presentation === 'serialize') {\n const object = treeItemsToObject(items, showContent);\n return React.createElement(Object, { data: object, ...others });\n }\n else if (presentation === 'free') {\n if (showContent) {\n const pureText = treeToPureTextContents(items);\n return (React.createElement(Text, { whiteSpace: \"pre\", ...others }, pureText));\n }\n else {\n const boxDrawings = treeToBoxDrawings(items);\n return (React.createElement(Text, { whiteSpace: \"pre\", ...others }, boxDrawings));\n }\n }\n else {\n if (showContent) {\n return React.createElement(Text, { ...others }, treeToHeaderContentTree(items, '', showContent));\n }\n else {\n return React.createElement(List, { ...others }, treeToNestedList(items));\n }\n }\n});\nfunction readDirectoryToTreeItems(dirPath, maxDepth, currentDepth, showContent, filter) {\n const name = path.basename(dirPath);\n if (currentDepth >= maxDepth) {\n return { name };\n }\n try {\n const stats = fs.statSync(dirPath);\n if (!stats.isDirectory()) {\n // For files, apply filter immediately\n if (filter && !filter.test(name)) {\n return null;\n }\n return { name };\n }\n // For directories, process children first\n const children = [];\n const entries = fs.readdirSync(dirPath, { withFileTypes: true }).sort((a, b) => {\n // Directories first, then files\n if (a.isDirectory() && !b.isDirectory()) {\n return -1;\n }\n if (!a.isDirectory() && b.isDirectory()) {\n return 1;\n }\n return a.name.localeCompare(b.name);\n });\n for (const entry of entries) {\n const entryPath = path.join(dirPath, entry.name);\n if (entry.isDirectory()) {\n // For directories, recursively process and check if it has any matching children\n const directoryItem = readDirectoryToTreeItems(entryPath, maxDepth, currentDepth + 1, showContent, filter);\n if (directoryItem && (directoryItem.children || !filter)) {\n children.push(directoryItem);\n }\n }\n else {\n // For files, check if they match the filter\n if (filter && !filter.test(entry.name)) {\n continue;\n }\n if (showContent) {\n // TODO: support other file types.\n const content = fs.readFileSync(entryPath, 'utf-8');\n children.push({ name: entry.name, value: content });\n }\n else {\n children.push({ name: entry.name });\n }\n }\n }\n // If we have a filter and no children matched, return null\n if (filter && children.length === 0) {\n return null;\n }\n return {\n name,\n children: children.length > 0 ? children : undefined\n };\n }\n catch (error) {\n throw new Error(`Error reading directory ${dirPath}: ${error}`);\n }\n}\n/**\n * Displays a directory structure as a tree.\n *\n * @param {'markdown'|'html'|'json'|'yaml'|'text'|'xml'} syntax - The output syntax of the content.\n * @param {string} src - The source directory path to display.\n * @param {TreeItemData[]} data - Alternative to src, directly provide tree data structure.\n * @param {RegExp|string} filter - A regular expression to filter files.\n * The regex is applied to the folder names and file names (not the full path).\n * Directories are included by default unless all of their nested content is filtered out.\n * When filter is on, empty directories will not be shown.\n * @param {number} maxDepth - Maximum depth of directory traversal. Default is 3.\n * @param {boolean} showContent - Whether to show file contents. Default is false.\n *\n * @example\n * To display a directory structure with a filter for Python files:\n * ```xml\n * <folder src=\"project_dir\" filter=\".*\\.py$\" maxDepth=\"3\" />\n * ```\n */\nexport const Folder = component('Folder')((props) => {\n const { src, data, filter, showContent, maxDepth = 3, ...others } = props;\n let treeData = [];\n if (data) {\n treeData = data;\n }\n else if (src) {\n const resolvedPath = expandRelative(src);\n const filterRegex = filter\n ? typeof filter === 'string'\n ? new RegExp(filter)\n : filter\n : undefined;\n try {\n const folderData = readDirectoryToTreeItems(resolvedPath, maxDepth ?? 3, 0, showContent ?? false, filterRegex);\n if (folderData) {\n // If we got results, add them to the tree\n treeData = folderData.children || [];\n // Add the root name as the first item\n treeData = [{ name: path.basename(resolvedPath), children: treeData }];\n }\n else {\n // If we got null result (everything was filtered out), return empty tree\n treeData = [{ name: path.basename(resolvedPath) }];\n }\n }\n catch (error) {\n throw new Error(`Error processing folder ${src}: ${error}`);\n }\n }\n else {\n throw new Error('Either src or data must be provided');\n }\n return React.createElement(Tree, { items: treeData, showContent: showContent, ...others });\n});\n//# sourceMappingURL=tree.js.map"],"names":["React","Header","path","Code","SubContent","List","ListItem","component","computeSyntaxContext","Object","Text","fs","expandRelative"],"mappings":"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"}