@juspay/neurolink
Version:
Universal AI Development Platform with working MCP integration, multi-provider support, voice (TTS/STT/realtime), and professional CLI. 58+ external MCP servers discoverable, multimodal file processing, RAG pipelines. Build, test, and deploy AI applicatio
367 lines (366 loc) • 11.9 kB
JavaScript
/**
* MIME Type Constants
* Centralized MIME type definitions organized by category for file processing
*
* @module processors/config/mimeTypes
*/
// =============================================================================
// IMAGE MIME TYPES
// =============================================================================
/**
* Image format MIME types supported by the platform
*/
export const IMAGE_MIME_TYPES = {
/** JPEG image format */
JPEG: "image/jpeg",
/** PNG image format */
PNG: "image/png",
/** GIF image format */
GIF: "image/gif",
/** WebP image format */
WEBP: "image/webp",
/** SVG vector image format */
SVG: "image/svg+xml",
/** BMP bitmap format */
BMP: "image/bmp",
/** TIFF image format */
TIFF: "image/tiff",
/** AVIF image format */
AVIF: "image/avif",
/** HEIC image format (Apple) */
HEIC: "image/heic",
/** HEIF image format */
HEIF: "image/heif",
/** ICO icon format */
ICO: "image/x-icon",
/** Microsoft ICO format */
ICO_MS: "image/vnd.microsoft.icon",
};
// =============================================================================
// DOCUMENT MIME TYPES
// =============================================================================
/**
* Document format MIME types for office documents and PDFs
*/
export const DOCUMENT_MIME_TYPES = {
/** PDF document format */
PDF: "application/pdf",
/** Microsoft Word (DOCX) */
DOCX: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
/** Legacy Microsoft Word (DOC) */
DOC: "application/msword",
/** Microsoft Excel (XLSX) */
XLSX: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
/** Legacy Microsoft Excel (XLS) */
XLS: "application/vnd.ms-excel",
/** Microsoft PowerPoint (PPTX) */
PPTX: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
/** Legacy Microsoft PowerPoint (PPT) */
PPT: "application/vnd.ms-powerpoint",
/** OpenDocument Text */
ODT: "application/vnd.oasis.opendocument.text",
/** OpenDocument Spreadsheet */
ODS: "application/vnd.oasis.opendocument.spreadsheet",
/** OpenDocument Presentation */
ODP: "application/vnd.oasis.opendocument.presentation",
/** Rich Text Format */
RTF: "application/rtf",
/** RTF as text type */
RTF_TEXT: "text/rtf",
};
// =============================================================================
// DATA FORMAT MIME TYPES
// =============================================================================
/**
* Data interchange format MIME types
*/
export const DATA_MIME_TYPES = {
/** JSON data format */
JSON: "application/json",
/** XML data format */
XML: "application/xml",
/** XML as text type */
XML_TEXT: "text/xml",
/** CSV data format */
CSV: "text/csv",
/** YAML data format */
YAML: "text/yaml",
/** YAML as application type */
YAML_APP: "application/x-yaml",
};
// =============================================================================
// TEXT MIME TYPES
// =============================================================================
/**
* Text format MIME types for plain text and markup
*/
export const TEXT_MIME_TYPES = {
/** Plain text */
PLAIN: "text/plain",
/** HTML markup */
HTML: "text/html",
/** XHTML markup */
XHTML: "application/xhtml+xml",
/** Markdown text */
MARKDOWN: "text/markdown",
/** Markdown text (alternative MIME type) */
MARKDOWN_ALT: "text/x-markdown",
/** CSS stylesheet */
CSS: "text/css",
/** JavaScript code */
JAVASCRIPT: "text/javascript",
/** JavaScript as application type */
JAVASCRIPT_APP: "application/javascript",
};
// =============================================================================
// SOURCE CODE MIME TYPES
// =============================================================================
/**
* Programming language source code MIME types
*/
export const SOURCE_CODE_MIME_TYPES = {
/** TypeScript code */
TYPESCRIPT: "text/typescript",
/** Python code */
PYTHON: "text/x-python",
/** Java code */
JAVA: "text/x-java-source",
/** Go code */
GO: "text/x-go",
/** Rust code */
RUST: "text/x-rustsrc",
/** C code */
C: "text/x-c",
/** C++ code */
CPP: "text/x-c++",
/** C# code */
CSHARP: "text/x-csharp",
/** Ruby code */
RUBY: "text/x-ruby",
/** PHP code */
PHP: "text/x-php",
/** Shell script */
SHELL: "text/x-shellscript",
/** SQL query */
SQL: "text/x-sql",
};
// =============================================================================
// ARCHIVE MIME TYPES
// =============================================================================
/**
* Archive and compressed file MIME types
*/
export const ARCHIVE_MIME_TYPES = {
/** ZIP archive */
ZIP: "application/zip",
/** ZIP compressed variant */
ZIP_COMPRESSED: "application/x-zip-compressed",
/** GZIP compressed */
GZIP: "application/gzip",
/** TAR archive */
TAR: "application/x-tar",
/** RAR archive */
RAR: "application/x-rar-compressed",
/** RAR vendor type */
RAR_VND: "application/vnd.rar",
/** 7-Zip archive */
SEVEN_ZIP: "application/x-7z-compressed",
/** Generic binary stream */
OCTET_STREAM: "application/octet-stream",
};
// =============================================================================
// MULTIMEDIA MIME TYPES
// =============================================================================
/**
* Video format MIME types
*/
export const VIDEO_MIME_TYPES = {
/** MP4 video */
MP4: "video/mp4",
/** AVI video */
AVI: "video/avi",
/** QuickTime video */
MOV: "video/quicktime",
/** Matroska video */
MKV: "video/x-matroska",
/** WebM video */
WEBM: "video/webm",
/** Flash video */
FLV: "video/x-flv",
/** Windows Media Video */
WMV: "video/x-ms-wmv",
};
/**
* Audio format MIME types
*/
export const AUDIO_MIME_TYPES = {
/** MP3 audio */
MP3: "audio/mpeg",
/** WAV audio */
WAV: "audio/wav",
/** AAC audio */
AAC: "audio/aac",
/** FLAC audio */
FLAC: "audio/flac",
/** OGG audio */
OGG: "audio/ogg",
/** M4A audio */
M4A: "audio/mp4",
/** WMA audio */
WMA: "audio/x-ms-wma",
};
// =============================================================================
// COMBINED MIME TYPES
// =============================================================================
/**
* All MIME types combined into a single object for convenience
*/
export const MIME_TYPES = {
// Images
...IMAGE_MIME_TYPES,
// Documents
...DOCUMENT_MIME_TYPES,
// Data formats
...DATA_MIME_TYPES,
// Text formats
...TEXT_MIME_TYPES,
// Source code
...SOURCE_CODE_MIME_TYPES,
// Archives
...ARCHIVE_MIME_TYPES,
// Video
...VIDEO_MIME_TYPES,
// Audio
...AUDIO_MIME_TYPES,
};
// =============================================================================
// EXTENSION TO MIME TYPE MAP
// =============================================================================
/**
* Centralized mapping of file extensions (with leading dot) to MIME types.
*
* This is the single source of truth for extension-to-MIME lookups.
* Derived from the category-specific MIME type constants above so that
* consumers (e.g. CLI helpers, file detectors) do not need to maintain
* their own duplicate mappings.
*
* If you add a new MIME type constant above, also add its extension mapping
* here to keep everything in sync.
*/
export const EXTENSION_MIME_MAP = {
// Documents
".pdf": DOCUMENT_MIME_TYPES.PDF,
".docx": DOCUMENT_MIME_TYPES.DOCX,
".doc": DOCUMENT_MIME_TYPES.DOC,
".xlsx": DOCUMENT_MIME_TYPES.XLSX,
".xls": DOCUMENT_MIME_TYPES.XLS,
".odt": DOCUMENT_MIME_TYPES.ODT,
".ods": DOCUMENT_MIME_TYPES.ODS,
".odp": DOCUMENT_MIME_TYPES.ODP,
".rtf": DOCUMENT_MIME_TYPES.RTF,
".pptx": DOCUMENT_MIME_TYPES.PPTX,
".ppt": DOCUMENT_MIME_TYPES.PPT,
// Data formats
".json": DATA_MIME_TYPES.JSON,
".xml": DATA_MIME_TYPES.XML,
".yaml": DATA_MIME_TYPES.YAML_APP,
".yml": DATA_MIME_TYPES.YAML_APP,
".csv": DATA_MIME_TYPES.CSV,
".tsv": "text/tab-separated-values",
// Text and Markup
".txt": TEXT_MIME_TYPES.PLAIN,
".md": TEXT_MIME_TYPES.MARKDOWN,
".markdown": TEXT_MIME_TYPES.MARKDOWN,
".html": TEXT_MIME_TYPES.HTML,
".htm": TEXT_MIME_TYPES.HTML,
".svg": IMAGE_MIME_TYPES.SVG,
".log": TEXT_MIME_TYPES.PLAIN,
// Images
".png": IMAGE_MIME_TYPES.PNG,
".jpg": IMAGE_MIME_TYPES.JPEG,
".jpeg": IMAGE_MIME_TYPES.JPEG,
".gif": IMAGE_MIME_TYPES.GIF,
".webp": IMAGE_MIME_TYPES.WEBP,
".bmp": IMAGE_MIME_TYPES.BMP,
".ico": IMAGE_MIME_TYPES.ICO,
// Source code
".js": TEXT_MIME_TYPES.JAVASCRIPT,
".mjs": TEXT_MIME_TYPES.JAVASCRIPT,
".cjs": TEXT_MIME_TYPES.JAVASCRIPT,
".ts": SOURCE_CODE_MIME_TYPES.TYPESCRIPT,
".tsx": SOURCE_CODE_MIME_TYPES.TYPESCRIPT,
".jsx": TEXT_MIME_TYPES.JAVASCRIPT,
".py": SOURCE_CODE_MIME_TYPES.PYTHON,
".java": SOURCE_CODE_MIME_TYPES.JAVA,
".go": SOURCE_CODE_MIME_TYPES.GO,
".rs": SOURCE_CODE_MIME_TYPES.RUST,
".rb": SOURCE_CODE_MIME_TYPES.RUBY,
".php": SOURCE_CODE_MIME_TYPES.PHP,
".c": SOURCE_CODE_MIME_TYPES.C,
".cpp": SOURCE_CODE_MIME_TYPES.CPP,
".h": SOURCE_CODE_MIME_TYPES.C,
".hpp": SOURCE_CODE_MIME_TYPES.CPP,
".cs": SOURCE_CODE_MIME_TYPES.CSHARP,
".swift": "text/x-swift",
".kt": "text/x-kotlin",
".scala": "text/x-scala",
".sh": SOURCE_CODE_MIME_TYPES.SHELL,
".bash": SOURCE_CODE_MIME_TYPES.SHELL,
".zsh": SOURCE_CODE_MIME_TYPES.SHELL,
".ps1": "text/x-powershell",
".sql": SOURCE_CODE_MIME_TYPES.SQL,
".r": "text/x-r",
".lua": "text/x-lua",
".perl": "text/x-perl",
".pl": "text/x-perl",
// Video
".mp4": VIDEO_MIME_TYPES.MP4,
".m4v": VIDEO_MIME_TYPES.MP4,
".mkv": VIDEO_MIME_TYPES.MKV,
".mov": VIDEO_MIME_TYPES.MOV,
".avi": VIDEO_MIME_TYPES.AVI,
".webm": VIDEO_MIME_TYPES.WEBM,
".wmv": VIDEO_MIME_TYPES.WMV,
".flv": VIDEO_MIME_TYPES.FLV,
// Audio
".mp3": AUDIO_MIME_TYPES.MP3,
".wav": AUDIO_MIME_TYPES.WAV,
".ogg": AUDIO_MIME_TYPES.OGG,
".flac": AUDIO_MIME_TYPES.FLAC,
".m4a": AUDIO_MIME_TYPES.M4A,
".aac": AUDIO_MIME_TYPES.AAC,
".wma": AUDIO_MIME_TYPES.WMA,
// Archives
".zip": ARCHIVE_MIME_TYPES.ZIP,
".tar": ARCHIVE_MIME_TYPES.TAR,
".gz": ARCHIVE_MIME_TYPES.GZIP,
".tgz": ARCHIVE_MIME_TYPES.GZIP,
".rar": ARCHIVE_MIME_TYPES.RAR,
".7z": ARCHIVE_MIME_TYPES.SEVEN_ZIP,
".jar": "application/java-archive",
// Config files
".env": TEXT_MIME_TYPES.PLAIN,
".ini": TEXT_MIME_TYPES.PLAIN,
".toml": TEXT_MIME_TYPES.PLAIN,
".cfg": TEXT_MIME_TYPES.PLAIN,
".conf": TEXT_MIME_TYPES.PLAIN,
".properties": TEXT_MIME_TYPES.PLAIN,
".gitignore": TEXT_MIME_TYPES.PLAIN,
".dockerignore": TEXT_MIME_TYPES.PLAIN,
".editorconfig": TEXT_MIME_TYPES.PLAIN,
".prettierrc": DATA_MIME_TYPES.JSON,
".eslintrc": DATA_MIME_TYPES.JSON,
".babelrc": DATA_MIME_TYPES.JSON,
};
/**
* Get MIME type from file extension using the centralized map.
*
* @param ext - File extension (with leading dot, e.g. ".pdf")
* @returns MIME type string, or "application/octet-stream" if unknown
*/
export function getMimeTypeForExtension(ext) {
return EXTENSION_MIME_MAP[ext.toLowerCase()] || "application/octet-stream";
}
// =============================================================================
// TYPE EXPORTS
// =============================================================================