leasot
Version:
Parse and output TODOs and FIXMEs from comments in your files
41 lines (40 loc) • 1.24 kB
JavaScript
import { BuiltinReporters } from '../definitions.js';
/**
* Load the given reporter
*/
export const loadReporter = async (reporter) => {
if (typeof reporter === 'function') {
return reporter;
}
if (typeof reporter !== 'string') {
return;
}
if (reporter in BuiltinReporters) {
const { reporter: reporterFunc } = await import(`./reporters/${reporter}.js`);
return await loadReporter(reporterFunc);
}
try {
// external reporter
const { reporter: reporterFunc } = await import(reporter);
return await loadReporter(reporterFunc);
}
catch (err) {
// eslint-disable-next-line no-empty
}
};
/**
* Report the provided items
* @param items The items to report
* @param reporter The reporter to use
* @param config Reporter configuration
*/
export const report = async (items, reporter = BuiltinReporters.raw, config = {}) => {
const reporterFn = await loadReporter(reporter);
if (typeof reporterFn !== 'function') {
throw new Error(`Cannot find or load reporter: ${reporter}`);
}
if (!Array.isArray(items)) {
throw new TypeError('Todos must be an array');
}
return reporterFn(items, config);
};