rawi
Version:
Rawi (راوي) is the developer-friendly AI CLI that brings the power of 12 major AI providers directly to your terminal. With seamless shell integration, persistent conversations, and 200+ specialized prompt templates, Rawi transforms your command line into
1 lines • 13.5 kB
Source Map (JSON)
{"version":3,"sources":["/home/mkabumattar/withrawi/rawi/dist/chunk-A3AM4C5J.cjs","../src/core/file-readers/utils/file-type.detector.ts"],"names":["EXTENSION_MAP","MIME_TYPE_MAP","detectFileTypeByExtension","filePath","extension","extname","filename","basename","fileType","detectFileTypeByMime","fileTypeResult","fileTypeFromFile","detectFileType","forceMethod","extensionResult","mimeResult","isSupportedFileType","getFileTypeDescription"],"mappings":"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","file":"/home/mkabumattar/withrawi/rawi/dist/chunk-A3AM4C5J.cjs","sourcesContent":[null,"import {basename, extname} from 'node:path';\nimport {fileTypeFromFile} from 'file-type';\nimport {SupportedFileType} from '../interfaces/types.js';\n\nexport interface DetectionResult {\n fileType: SupportedFileType;\n mimeType?: string;\n confidence: 'high' | 'medium' | 'low';\n detectionMethod: 'extension' | 'mime' | 'fallback';\n}\n\nconst EXTENSION_MAP: Record<string, SupportedFileType> = {\n '.pdf': SupportedFileType.PDF,\n '.docx': SupportedFileType.DOCX,\n '.pptx': SupportedFileType.PPTX,\n '.xlsx': SupportedFileType.XLSX,\n '.xls': SupportedFileType.XLSX,\n '.odt': SupportedFileType.ODT,\n '.odp': SupportedFileType.ODP,\n '.ods': SupportedFileType.ODS,\n '.txt': SupportedFileType.TXT,\n '.js': SupportedFileType.JS,\n '.jsx': SupportedFileType.JSX,\n '.ts': SupportedFileType.TS,\n '.tsx': SupportedFileType.TSX,\n '.py': SupportedFileType.PY,\n '.java': SupportedFileType.JAVA,\n '.cpp': SupportedFileType.CPP,\n '.cc': SupportedFileType.CPP,\n '.cxx': SupportedFileType.CPP,\n '.c': SupportedFileType.C,\n '.h': SupportedFileType.H,\n '.hpp': SupportedFileType.H,\n '.hxx': SupportedFileType.H,\n '.go': SupportedFileType.GO,\n '.rs': SupportedFileType.RS,\n '.rb': SupportedFileType.RB,\n '.kt': SupportedFileType.KT,\n '.swift': SupportedFileType.SWIFT,\n '.dart': SupportedFileType.DART,\n '.scala': SupportedFileType.SCALA,\n '.r': SupportedFileType.R,\n '.m': SupportedFileType.M,\n '.pl': SupportedFileType.PL,\n '.lua': SupportedFileType.LUA,\n '.php': SupportedFileType.PHP,\n '.json': SupportedFileType.JSON,\n '.md': SupportedFileType.MD,\n '.yml': SupportedFileType.YML,\n '.yaml': SupportedFileType.YAML,\n '.toml': SupportedFileType.TOML,\n '.env': SupportedFileType.ENV,\n '.ini': SupportedFileType.INI,\n '.conf': SupportedFileType.CONF,\n '.cfg': SupportedFileType.CFG,\n '.xml': SupportedFileType.XML,\n '.html': SupportedFileType.HTML,\n '.htm': SupportedFileType.HTM,\n '.css': SupportedFileType.CSS,\n '.sql': SupportedFileType.SQL,\n '.sh': SupportedFileType.SH,\n '.bash': SupportedFileType.BASH,\n '.vim': SupportedFileType.VIM,\n '.dockerfile': SupportedFileType.DOCKERFILE,\n Dockerfile: SupportedFileType.DOCKERFILE,\n '.makefile': SupportedFileType.MAKEFILE,\n Makefile: SupportedFileType.MAKEFILE,\n '.gitignore': SupportedFileType.GITIGNORE,\n '.log': SupportedFileType.LOG,\n};\n\nconst MIME_TYPE_MAP: Record<string, SupportedFileType> = {\n 'application/pdf': SupportedFileType.PDF,\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\n SupportedFileType.DOCX,\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation':\n SupportedFileType.PPTX,\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\n SupportedFileType.XLSX,\n 'application/vnd.ms-excel': SupportedFileType.XLSX,\n 'application/excel': SupportedFileType.XLSX,\n 'application/vnd.oasis.opendocument.text': SupportedFileType.ODT,\n 'application/vnd.oasis.opendocument.presentation': SupportedFileType.ODP,\n 'application/vnd.oasis.opendocument.spreadsheet': SupportedFileType.ODS,\n 'text/plain': SupportedFileType.TXT,\n 'application/javascript': SupportedFileType.JS,\n 'text/javascript': SupportedFileType.JS,\n 'application/x-typescript': SupportedFileType.TS,\n 'text/x-python': SupportedFileType.PY,\n 'application/json': SupportedFileType.JSON,\n 'text/markdown': SupportedFileType.MD,\n 'application/x-yaml': SupportedFileType.YML,\n 'text/yaml': SupportedFileType.YML,\n 'application/xml': SupportedFileType.XML,\n 'text/xml': SupportedFileType.XML,\n 'text/html': SupportedFileType.HTML,\n 'text/css': SupportedFileType.CSS,\n 'application/sql': SupportedFileType.SQL,\n};\n\nexport function detectFileTypeByExtension(\n filePath: string,\n): DetectionResult | null {\n const extension = extname(filePath).toLowerCase();\n const filename = basename(filePath);\n\n let fileType = EXTENSION_MAP[extension];\n\n if (!fileType) {\n fileType = EXTENSION_MAP[filename];\n }\n\n if (fileType) {\n return {\n fileType,\n confidence: 'high',\n detectionMethod: 'extension',\n };\n }\n\n return null;\n}\n\nexport async function detectFileTypeByMime(\n filePath: string,\n): Promise<DetectionResult | null> {\n try {\n const fileTypeResult = await fileTypeFromFile(filePath);\n\n if (fileTypeResult?.mime) {\n const fileType = MIME_TYPE_MAP[fileTypeResult.mime];\n\n if (fileType) {\n return {\n fileType,\n mimeType: fileTypeResult.mime,\n confidence: 'high',\n detectionMethod: 'mime',\n };\n }\n\n return {\n fileType: SupportedFileType.UNKNOWN,\n mimeType: fileTypeResult.mime,\n confidence: 'medium',\n detectionMethod: 'mime',\n };\n }\n } catch {}\n\n return null;\n}\n\nexport async function detectFileType(\n filePath: string,\n forceMethod?: 'extension' | 'mime',\n): Promise<DetectionResult> {\n if (forceMethod === 'extension') {\n const result = detectFileTypeByExtension(filePath);\n return (\n result || {\n fileType: SupportedFileType.UNKNOWN,\n confidence: 'low',\n detectionMethod: 'fallback',\n }\n );\n }\n\n if (forceMethod === 'mime') {\n const result = await detectFileTypeByMime(filePath);\n return (\n result || {\n fileType: SupportedFileType.UNKNOWN,\n confidence: 'low',\n detectionMethod: 'fallback',\n }\n );\n }\n\n const extensionResult = detectFileTypeByExtension(filePath);\n if (extensionResult) {\n return extensionResult;\n }\n\n const mimeResult = await detectFileTypeByMime(filePath);\n if (mimeResult) {\n return mimeResult;\n }\n\n return {\n fileType: SupportedFileType.UNKNOWN,\n confidence: 'low',\n detectionMethod: 'fallback',\n };\n}\n\nexport function isSupportedFileType(fileType: SupportedFileType): boolean {\n return fileType !== SupportedFileType.UNKNOWN;\n}\n\nexport function getFileTypeDescription(fileType: SupportedFileType): string {\n const descriptions: Record<SupportedFileType, string> = {\n [SupportedFileType.PDF]: 'PDF document',\n [SupportedFileType.DOCX]: 'Word document',\n [SupportedFileType.PPTX]: 'PowerPoint presentation',\n [SupportedFileType.XLSX]: 'Excel spreadsheet',\n [SupportedFileType.ODT]: 'OpenDocument Text',\n [SupportedFileType.ODP]: 'OpenDocument Presentation',\n [SupportedFileType.ODS]: 'OpenDocument Spreadsheet',\n [SupportedFileType.TXT]: 'Text file',\n [SupportedFileType.JS]: 'JavaScript file',\n [SupportedFileType.JSX]: 'React JSX file',\n [SupportedFileType.TS]: 'TypeScript file',\n [SupportedFileType.TSX]: 'React TypeScript file',\n [SupportedFileType.PY]: 'Python file',\n [SupportedFileType.JAVA]: 'Java file',\n [SupportedFileType.CPP]: 'C++ file',\n [SupportedFileType.C]: 'C file',\n [SupportedFileType.H]: 'C/C++ header file',\n [SupportedFileType.GO]: 'Go file',\n [SupportedFileType.RS]: 'Rust file',\n [SupportedFileType.RB]: 'Ruby file',\n [SupportedFileType.KT]: 'Kotlin file',\n [SupportedFileType.SWIFT]: 'Swift file',\n [SupportedFileType.DART]: 'Dart file',\n [SupportedFileType.SCALA]: 'Scala file',\n [SupportedFileType.R]: 'R file',\n [SupportedFileType.M]: 'MATLAB/Objective-C file',\n [SupportedFileType.PL]: 'Perl file',\n [SupportedFileType.LUA]: 'Lua file',\n [SupportedFileType.PHP]: 'PHP file',\n [SupportedFileType.JSON]: 'JSON file',\n [SupportedFileType.MD]: 'Markdown file',\n [SupportedFileType.YML]: 'YAML file',\n [SupportedFileType.YAML]: 'YAML file',\n [SupportedFileType.TOML]: 'TOML file',\n [SupportedFileType.ENV]: 'Environment file',\n [SupportedFileType.INI]: 'INI file',\n [SupportedFileType.CONF]: 'Configuration file',\n [SupportedFileType.CFG]: 'Configuration file',\n [SupportedFileType.XML]: 'XML file',\n [SupportedFileType.HTML]: 'HTML file',\n [SupportedFileType.HTM]: 'HTML file',\n [SupportedFileType.CSS]: 'CSS file',\n [SupportedFileType.SQL]: 'SQL file',\n [SupportedFileType.SH]: 'Shell script',\n [SupportedFileType.BASH]: 'Bash script',\n [SupportedFileType.VIM]: 'Vim configuration',\n [SupportedFileType.DOCKERFILE]: 'Dockerfile',\n [SupportedFileType.MAKEFILE]: 'Makefile',\n [SupportedFileType.GITIGNORE]: 'Git ignore file',\n [SupportedFileType.LOG]: 'Log file',\n [SupportedFileType.UNKNOWN]: 'Unknown file type',\n };\n\n return descriptions[fileType] || 'Unknown File Type';\n}\n"]}