ut-tools
Version:
Build and Release management automation package.
58 lines • 2.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatResolverErrors = exports.formatParserDiagnostics = exports.prettyPrintResolverErrorMessage = exports.getDiagnosticErrorMessage = void 0;
const types_1 = require("@stoplight/types");
const lodash_1 = require("lodash");
const document_1 = require("./document");
const toUpperCase = (word) => word.toUpperCase();
const splitWord = (word, end, start) => `${end} ${start.toLowerCase()}`;
function getDiagnosticErrorMessage(diagnostic) {
const key = getPropertyKey(diagnostic.path);
let prettifiedMessage = diagnostic.message.replace(/^[a-z]/, toUpperCase);
if (diagnostic.code !== 'YAMLException') {
prettifiedMessage = prettifiedMessage.replace(/([a-z])([A-Z])/g, splitWord);
}
if (key !== undefined) {
prettifiedMessage = prettifiedMessage.replace(/(Duplicate key)/, `$1: ${key}`);
}
return prettifiedMessage;
}
exports.getDiagnosticErrorMessage = getDiagnosticErrorMessage;
const prettyPrintResolverErrorMessage = (message) => message.replace(/^Error\s*:\s*/, '');
exports.prettyPrintResolverErrorMessage = prettyPrintResolverErrorMessage;
const getPropertyKey = (path) => {
if (path !== undefined && path.length > 0) {
return path[path.length - 1];
}
};
function formatParserDiagnostics(diagnostics, source) {
return diagnostics.map(diagnostic => {
var _a;
return ({
...diagnostic,
code: 'parser',
message: getDiagnosticErrorMessage(diagnostic),
path: (_a = diagnostic.path) !== null && _a !== void 0 ? _a : [],
...(source !== null ? { source } : null),
});
});
}
exports.formatParserDiagnostics = formatParserDiagnostics;
const formatResolverErrors = (document, diagnostics) => {
return (0, lodash_1.uniqBy)(diagnostics, 'message').map(error => {
var _a;
const path = [...error.path, '$ref'];
const range = (_a = document.getRangeForJsonPath(path, true)) !== null && _a !== void 0 ? _a : document_1.Document.DEFAULT_RANGE;
const source = error.uriStack.length > 0 ? error.uriStack[error.uriStack.length - 1] : document.source;
return {
code: 'invalid-ref',
path,
message: (0, exports.prettyPrintResolverErrorMessage)(error.message),
severity: types_1.DiagnosticSeverity.Error,
range,
...(source !== null ? { source } : null),
};
});
};
exports.formatResolverErrors = formatResolverErrors;
//# sourceMappingURL=errorMessages.js.map