{"version":3,"sources":["/home/mkabumattar/work/withrawi/rawi/dist/chunk-YSXMNCFW.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/work/withrawi/rawi/dist/chunk-YSXMNCFW.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  '.csv': SupportedFileType.CSV,\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  'text/csv': SupportedFileType.CSV,\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.CSV]: 'CSV 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"]}