UNPKG

eslint-rule-benchmark

Version:

Benchmark ESLint rules with detailed performance metrics for CI and plugin development

58 lines (57 loc) 1.59 kB
const LANGUAGE_PARSER_MAP = { 'typescript-react': '@typescript-eslint/parser', typescript: '@typescript-eslint/parser', svelte: 'svelte-eslint-parser', astro: 'astro-eslint-parser', vue: 'vue-eslint-parser', 'javascript-react': null, javascript: null, } async function loadLanguageParser(jiti, language) { let result = {} let parserName = LANGUAGE_PARSER_MAP[language] if (!parserName) { return { parser: null } } try { let moduleExport = await jiti.import(parserName) result.parser = extractParser(moduleExport) if (!result.parser) { result.error = `Parser not found in module: ${parserName}` } } catch (error) { let errorValue = error result.error = errorValue.message } return result } function extractParser(moduleExport) { if ( moduleExport && typeof moduleExport === 'object' && (('parse' in moduleExport && typeof moduleExport.parse === 'function') || ('parseForESLint' in moduleExport && typeof moduleExport.parseForESLint === 'function')) ) { return moduleExport } if ( moduleExport && typeof moduleExport === 'object' && 'default' in moduleExport ) { let defaultExport = moduleExport.default if ( defaultExport && typeof defaultExport === 'object' && (('parse' in defaultExport && typeof defaultExport.parse === 'function') || ('parseForESLint' in defaultExport && typeof defaultExport.parseForESLint === 'function')) ) { return defaultExport } } return void 0 } export { loadLanguageParser }