in src/main.ts [639:673]
function getDiagnostic(document: TextDocument, report: NpmListReport, moduleName: string, ranges: SourceRanges): Diagnostic | null {
let diagnostic = null;
// npm list only reports errors against 'dependencies' and not against 'devDependencies'
if (report.dependencies && report.dependencies[moduleName]) {
if (report.dependencies[moduleName]['missing'] === true) {
if (ranges.dependencies[moduleName]) {
const source = ranges.dependencies[moduleName].name;
const range = new Range(document.positionAt(source.offset), document.positionAt(source.offset + source.length));
diagnostic = new Diagnostic(range, `Module '${moduleName}' is not installed`, DiagnosticSeverity.Warning);
} else {
console.log(`[npm-script] Could not locate "missing" dependency '${moduleName}' in package.json`);
}
}
else if (report.dependencies[moduleName]['invalid'] === true) {
if (ranges.dependencies[moduleName]) {
const source = ranges.dependencies[moduleName].version;
const installedVersion = report.dependencies[moduleName]['version'];
const range = new Range(document.positionAt(source.offset), document.positionAt(source.offset + source.length));
const message = installedVersion ?
`Module '${moduleName}' the installed version '${installedVersion}' is invalid` :
`Module '${moduleName}' the installed version is invalid or has errors`;
diagnostic = new Diagnostic(range, message, DiagnosticSeverity.Warning);
} else {
console.log(`[npm-script] Could not locate "invalid" dependency '${moduleName}' in package.json`);
}
}
else if (report.dependencies[moduleName]['extraneous'] === true) {
const source = findAttributeRange(ranges);
const range = new Range(document.positionAt(source.offset), document.positionAt(source.offset + source.length));
diagnostic = new Diagnostic(range, `Module '${moduleName}' is extraneous`, DiagnosticSeverity.Warning);
}
}
return diagnostic;
}