UNPKG

tree-hugger-js

Version:

A friendly tree-sitter wrapper for JavaScript and TypeScript

60 lines 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LANGUAGES = void 0; exports.detectLanguage = detectLanguage; exports.getLanguageByName = getLanguageByName; // Tree-sitter language modules - these don't have ES6 exports const JavaScript = require('tree-sitter-javascript'); const TypeScript = require('tree-sitter-typescript').typescript; const TSX = require('tree-sitter-typescript').tsx; exports.LANGUAGES = [ { name: 'javascript', extensions: ['.js', '.mjs', '.cjs'], parser: JavaScript, }, { name: 'typescript', extensions: ['.ts'], parser: TypeScript, }, { name: 'tsx', extensions: ['.tsx', '.jsx'], parser: TSX, }, ]; function detectLanguage(filenameOrCode) { // Check if it's a filename with extension const ext = filenameOrCode.match(/\.[^.]+$/)?.[0]; if (ext) { const langByExt = exports.LANGUAGES.find(lang => lang.extensions.includes(ext)); if (langByExt) return langByExt; } // Try to detect from code content if (filenameOrCode.includes('import React') || filenameOrCode.includes('jsx')) { return exports.LANGUAGES.find(lang => lang.name === 'tsx') ?? null; } if (filenameOrCode.includes(': ') || filenameOrCode.includes('interface ') || filenameOrCode.includes('type ')) { return exports.LANGUAGES.find(lang => lang.name === 'typescript') ?? null; } // Some basic JavaScript detection if (filenameOrCode.includes('function ') || filenameOrCode.includes('const ') || filenameOrCode.includes('let ') || filenameOrCode.includes('var ') || filenameOrCode.includes('=>') || filenameOrCode.includes('console.') || filenameOrCode.includes('class ')) { return exports.LANGUAGES.find(lang => lang.name === 'javascript') ?? null; } // Return null if we can't detect the language return null; } function getLanguageByName(name) { return exports.LANGUAGES.find(lang => lang.name === name) ?? null; } //# sourceMappingURL=languages.js.map