eslint-rule-benchmark
Version:
Benchmark ESLint rules with detailed performance metrics for CI and plugin development
36 lines (35 loc) • 1.02 kB
JavaScript
import path from 'node:path'
async function loadRuleFromFile(jiti, options) {
let result = {}
let { configDirectory, rulePath, ruleId } = options
try {
let absolutePath = path.isAbsolute(rulePath)
? rulePath
: path.resolve(configDirectory, rulePath)
let moduleExport = await jiti.import(absolutePath)
result.rule = extractRule(moduleExport, ruleId)
} catch (error) {
let errorValue = error
result.error = errorValue.message
}
return result
}
function extractRule(moduleExport, ruleId) {
if (moduleExport.meta && moduleExport.create) {
return moduleExport
}
if (moduleExport.rules?.[ruleId]) {
return moduleExport.rules[ruleId]
}
let defaultExport = moduleExport.default
if (defaultExport) {
if ('meta' in defaultExport && 'create' in defaultExport) {
return defaultExport
}
if ('rules' in defaultExport && defaultExport.rules?.[ruleId]) {
return defaultExport.rules[ruleId]
}
}
return void 0
}
export { loadRuleFromFile }