prettylint
Version:
Run Prettier as a linter
51 lines (50 loc) • 1.59 kB
JavaScript
import { diagnose } from "./diagnose.js";
export function lint(result) {
const nodeType = "Unknown";
const ruleId = "prettier/prettier";
if (result.type === "success") {
const { input, output } = result;
const diagnostics = diagnose(input, output);
const messages = diagnostics.map(({ message, start: { line, column } }) => ({
ruleId,
severity: 1 /* LintSeverity.Warning */,
line,
column,
message,
nodeType,
}));
return {
filePath: result.filename,
source: input,
...(messages.length === 0 ? {} : { output }),
messages,
errorCount: 0,
warningCount: messages.length,
};
}
const { input, error } = result;
const message = {
ruleId,
severity: 2 /* LintSeverity.Error */,
nodeType,
...(error.loc
? // SyntaxError from parser in prettier
{
line: error.loc.start.line,
column: error.loc.start.column,
message: error.message.split("\n", 1)[0], // cut the code-frame
} /* c8 ignore start */
: {
line: 0,
column: 0,
message: typeof error?.message === "string" ? error.message : error,
}) /* c8 ignore stop */,
};
return {
filePath: result.filename,
source: input,
messages: [message],
errorCount: 1,
warningCount: 0,
};
}