eslint-plugin-mdx
Version:
ESLint Plugin for MDX
49 lines • 1.8 kB
JavaScript
import { meta } from '../meta.js';
import { getShortLang } from './helpers.js';
import { markdownProcessor } from './markdown.js';
import { processorOptions as defaultProcessorOptions } from './options.js';
export const createRemarkProcessor = ({ languageMapper, lintCodeBlocks, ...syncOptions } = defaultProcessorOptions) => ({
meta: {
name: 'mdx/remark',
version: meta.version,
},
supportsAutofix: true,
preprocess(text, filename) {
if (!lintCodeBlocks) {
return [text];
}
return [
text,
...markdownProcessor
.preprocess(text, filename, syncOptions)
.map(({ text, filename }) => ({
text,
filename: filename.slice(0, filename.lastIndexOf('.')) +
'.' +
getShortLang(filename, languageMapper),
})),
];
},
postprocess([mdxMessages, ...markdownMessages], filename) {
return [
...mdxMessages,
...markdownProcessor.postprocess(markdownMessages, filename),
]
.sort((a, b) => a.line - b.line || a.column - b.column)
.map(lintMessage => {
const { message, ruleId: eslintRuleId, severity: eslintSeverity, } = lintMessage;
if (eslintRuleId !== 'mdx/remark') {
return lintMessage;
}
const { source, ruleId, reason, severity } = JSON.parse(message);
return {
...lintMessage,
ruleId: `${source}-${ruleId}`,
message: reason,
severity: Math.max(eslintSeverity, severity),
};
});
},
});
export const remark = createRemarkProcessor();
//# sourceMappingURL=remark.js.map