@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
414 lines • 11.3 kB
JavaScript
/**
* Language Detection Map
* Maps file extensions and filenames to programming language names
*
* @module processors/config/languageMap
*/
import { basename as pathBasename } from "node:path";
// =============================================================================
// EXTENSION TO LANGUAGE MAP
// =============================================================================
/**
* Maps file extensions to their programming language names
* Used for syntax highlighting, code analysis, and display purposes
*/
export const LANGUAGE_MAP = {
// JavaScript/TypeScript
".js": "JavaScript",
".jsx": "JavaScript (JSX)",
".mjs": "JavaScript (ESM)",
".cjs": "JavaScript (CommonJS)",
".ts": "TypeScript",
".tsx": "TypeScript (TSX)",
// Python
".py": "Python",
".pyw": "Python",
".pyi": "Python (Stub)",
// Java/Kotlin
".java": "Java",
".kt": "Kotlin",
".kts": "Kotlin (Script)",
// Go
".go": "Go",
// Rust
".rs": "Rust",
// C/C++
".c": "C",
".h": "C Header",
".cpp": "C++",
".hpp": "C++ Header",
".cc": "C++",
".cxx": "C++",
".hxx": "C++ Header",
// C#
".cs": "C#",
// Ruby
".rb": "Ruby",
".rake": "Ruby (Rake)",
// PHP
".php": "PHP",
".phtml": "PHP (HTML)",
".php3": "PHP",
".php4": "PHP",
".php5": "PHP",
".phps": "PHP",
// Shell
".sh": "Shell",
".bash": "Bash",
".zsh": "Zsh",
".fish": "Fish",
".ksh": "Ksh",
// SQL
".sql": "SQL",
// Swift
".swift": "Swift",
// Dart
".dart": "Dart",
// Objective-C
".m": "Objective-C",
".mm": "Objective-C++",
// Scala
".scala": "Scala",
".sc": "Scala (Script)",
// Haskell
".hs": "Haskell",
".lhs": "Literate Haskell",
// Lua
".lua": "Lua",
// R
".r": "R",
".R": "R",
".rmd": "R Markdown",
".Rmd": "R Markdown",
// Perl
".pl": "Perl",
".pm": "Perl (Module)",
".pod": "Perl (Documentation)",
".t": "Perl (Test)",
// Elixir/Erlang
".ex": "Elixir",
".exs": "Elixir (Script)",
".erl": "Erlang",
".hrl": "Erlang (Header)",
// Clojure
".clj": "Clojure",
".cljs": "ClojureScript",
".cljc": "Clojure (Common)",
".edn": "Clojure (EDN)",
// F#
".fs": "F#",
".fsx": "F# (Script)",
".fsi": "F# (Signature)",
// OCaml
".ml": "OCaml",
".mli": "OCaml (Interface)",
// Lisp/Scheme
".lisp": "Lisp",
".lsp": "Lisp",
".cl": "Common Lisp",
".scm": "Scheme",
".ss": "Scheme",
// Groovy
".groovy": "Groovy",
".gvy": "Groovy",
".gy": "Groovy",
".gsh": "Groovy (Script)",
// PowerShell
".ps1": "PowerShell",
".psm1": "PowerShell (Module)",
".psd1": "PowerShell (Data)",
// Nim
".nim": "Nim",
".nims": "Nim (Script)",
// Zig
".zig": "Zig",
// V
".v": "V",
// Julia
".jl": "Julia",
// Crystal
".cr": "Crystal",
// D
".d": "D",
// Assembly
".asm": "Assembly",
".s": "Assembly",
".S": "Assembly",
// Fortran
".f": "Fortran",
".f90": "Fortran 90",
".f95": "Fortran 95",
".f03": "Fortran 2003",
".for": "Fortran",
// COBOL
".cob": "COBOL",
".cbl": "COBOL",
".cobol": "COBOL",
// Pascal
".pas": "Pascal",
".pp": "Pascal",
".p": "Pascal",
// Ada
".ada": "Ada",
".adb": "Ada (Body)",
".ads": "Ada (Spec)",
// Web frameworks/templates
".vue": "Vue",
".svelte": "Svelte",
".hbs": "Handlebars",
".handlebars": "Handlebars",
".ejs": "EJS",
".pug": "Pug",
".jade": "Jade",
// Stylesheets
".css": "CSS",
".scss": "SCSS",
".sass": "Sass",
".less": "Less",
".styl": "Stylus",
".stylus": "Stylus",
// Markup/Data
".html": "HTML",
".htm": "HTML",
".xhtml": "XHTML",
".xml": "XML",
".json": "JSON",
".yaml": "YAML",
".yml": "YAML",
".toml": "TOML",
".md": "Markdown",
".markdown": "Markdown",
".rst": "reStructuredText",
".tex": "LaTeX",
".latex": "LaTeX",
// Build/Config
".dockerfile": "Dockerfile",
".mk": "Makefile",
".cmake": "CMake",
".gradle": "Gradle",
".sbt": "SBT",
// Config files
".env": "Environment",
".ini": "INI",
".cfg": "Configuration",
".conf": "Configuration",
".config": "Configuration",
".properties": "Properties",
// Logs
".log": "Log",
// Plain text
".txt": "Plain Text",
};
// =============================================================================
// EXACT FILENAME MAP
// =============================================================================
/**
* Maps exact filenames (without extension) to their language/type
* Used for special files like Dockerfile, Makefile, etc.
*/
export const EXACT_FILENAME_MAP = {
// Docker
Dockerfile: "Dockerfile",
"Dockerfile.dev": "Dockerfile",
"Dockerfile.prod": "Dockerfile",
"docker-compose.yml": "Docker Compose",
"docker-compose.yaml": "Docker Compose",
// Build tools
Makefile: "Makefile",
makefile: "Makefile",
GNUmakefile: "Makefile",
CMakeLists: "CMake",
Rakefile: "Ruby",
Gemfile: "Ruby",
"Gemfile.lock": "Ruby",
Podfile: "Ruby",
"Podfile.lock": "Ruby",
Fastfile: "Ruby",
Appfile: "Ruby",
Matchfile: "Ruby",
Guardfile: "Ruby",
Vagrantfile: "Ruby",
Berksfile: "Ruby",
Thorfile: "Ruby",
Puppetfile: "Ruby",
Brewfile: "Ruby",
Buildfile: "Ruby",
// Node.js
"package.json": "JSON (npm)",
"package-lock.json": "JSON (npm)",
"yarn.lock": "YAML (Yarn)",
"pnpm-lock.yaml": "YAML (pnpm)",
"tsconfig.json": "JSON (TypeScript)",
"jsconfig.json": "JSON (JavaScript)",
".npmrc": "npm Config",
".yarnrc": "Yarn Config",
".nvmrc": "nvm Config",
// Python
Pipfile: "TOML (Pipenv)",
"Pipfile.lock": "JSON (Pipenv)",
"pyproject.toml": "TOML (Python)",
"setup.py": "Python",
"setup.cfg": "INI (Python)",
"requirements.txt": "Plain Text (pip)",
"constraints.txt": "Plain Text (pip)",
"tox.ini": "INI (tox)",
".python-version": "Plain Text",
// CI/CD
Jenkinsfile: "Groovy",
".travis.yml": "YAML (Travis CI)",
".gitlab-ci.yml": "YAML (GitLab CI)",
"azure-pipelines.yml": "YAML (Azure)",
"bitbucket-pipelines.yml": "YAML (Bitbucket)",
"circle.yml": "YAML (CircleCI)",
"appveyor.yml": "YAML (AppVeyor)",
// Git
".gitignore": "Git Ignore",
".gitattributes": "Git Attributes",
".gitmodules": "Git Modules",
".gitkeep": "Git Keep",
// Editors/IDE
".editorconfig": "EditorConfig",
".prettierrc": "JSON (Prettier)",
".prettierignore": "Prettier Ignore",
".eslintrc": "JSON (ESLint)",
".eslintignore": "ESLint Ignore",
".stylelintrc": "JSON (Stylelint)",
".babelrc": "JSON (Babel)",
".browserslistrc": "Browserslist",
// Misc
LICENSE: "License",
"LICENSE.md": "License",
"LICENSE.txt": "License",
CHANGELOG: "Changelog",
"CHANGELOG.md": "Changelog",
README: "Readme",
"README.md": "Readme",
AUTHORS: "Authors",
CONTRIBUTORS: "Contributors",
CODEOWNERS: "GitHub CODEOWNERS",
".env": "Environment",
".env.local": "Environment",
".env.development": "Environment",
".env.production": "Environment",
".env.test": "Environment",
".env.example": "Environment",
Procfile: "Procfile (Heroku)",
};
// =============================================================================
// UTILITY FUNCTIONS
// =============================================================================
/**
* Detects the programming language from a filename
*
* @param filename - The filename to detect language from
* @returns The detected language name or 'Unknown'
*
* @example
* ```typescript
* detectLanguageFromFilename('app.ts') // Returns 'TypeScript'
* detectLanguageFromFilename('Dockerfile') // Returns 'Dockerfile'
* detectLanguageFromFilename('unknown.xyz') // Returns 'Unknown'
* ```
*/
export function detectLanguageFromFilename(filename) {
if (!filename) {
return "Unknown";
}
// Check exact filename matches first (Dockerfile, Makefile, etc.)
const exactMatch = EXACT_FILENAME_MAP[filename];
if (exactMatch) {
return exactMatch;
}
// Also check the basename for exact matches (in case full path is passed)
const basename = pathBasename(filename);
const basenameMatch = EXACT_FILENAME_MAP[basename];
if (basenameMatch) {
return basenameMatch;
}
// Get the file extension
const lastDotIndex = basename.lastIndexOf(".");
if (lastDotIndex === -1) {
return "Unknown";
}
const extension = basename.slice(lastDotIndex).toLowerCase();
// Check extension in language map
const languageMatch = LANGUAGE_MAP[extension];
if (languageMatch) {
return languageMatch;
}
// Handle case-sensitive extensions (like .R)
const originalExtension = basename.slice(lastDotIndex);
const caseSensitiveMatch = LANGUAGE_MAP[originalExtension];
if (caseSensitiveMatch) {
return caseSensitiveMatch;
}
return "Unknown";
}
/**
* Gets the lowercase language identifier for syntax highlighting
*
* @param filename - The filename to get language identifier from
* @returns The lowercase language identifier suitable for syntax highlighting
*
* @example
* ```typescript
* getLanguageIdentifier('app.ts') // Returns 'typescript'
* getLanguageIdentifier('Dockerfile') // Returns 'dockerfile'
* ```
*/
export function getLanguageIdentifier(filename) {
const language = detectLanguageFromFilename(filename);
// Convert display name to identifier
return language
.toLowerCase()
.replace(/\s*\([^)]*\)\s*/g, "") // Remove parenthetical content
.replace(/\s+/g, "-") // Replace spaces with hyphens
.trim();
}
/**
* Checks if a file is a source code file based on its extension
*
* @param filename - The filename to check
* @returns True if the file is a source code file
*/
export function isSourceCodeFile(filename) {
const language = detectLanguageFromFilename(filename);
const nonCodeLanguages = [
"Unknown",
"Plain Text",
"Log",
"Environment",
"Configuration",
"Properties",
"License",
"Changelog",
"Readme",
"Authors",
"Contributors",
"Git Ignore",
"Git Attributes",
"Git Modules",
"Git Keep",
];
return !nonCodeLanguages.includes(language);
}
/**
* Gets all supported file extensions
*
* @returns Array of all supported file extensions
*/
export function getSupportedExtensions() {
return Object.keys(LANGUAGE_MAP);
}
/**
* Gets all supported exact filenames
*
* @returns Array of all supported exact filenames
*/
export function getSupportedFilenames() {
return Object.keys(EXACT_FILENAME_MAP);
}
// =============================================================================
// TYPE EXPORTS
// =============================================================================
//# sourceMappingURL=languageMap.js.map