in src/main.ts [559:608]
async function doValidate(document: TextDocument) {
let report = null;
let documentWasClosed = false; // track whether the document was closed while getInstalledModules/'npm ls' runs
const listener = workspace.onDidCloseTextDocument(doc => {
if (doc.uri === document.uri) {
documentWasClosed = true;
}
});
try {
report = await getInstalledModules(path.dirname(document.fileName));
} catch (e) {
listener.dispose();
return;
}
try {
clearDiagnosticCollection();
if (report.invalid && report.invalid === true) {
return;
}
if (!anyModuleErrors(report)) {
return;
}
if (documentWasClosed || !document.getText()) {
return;
}
const sourceRanges = parseSourceRanges(document.getText());
const dependencies = report.dependencies;
if (!dependencies) {
return;
}
const diagnostics: Diagnostic[] = [];
for (const moduleName in dependencies) {
if (dependencies.hasOwnProperty(moduleName)) {
const diagnostic = getDiagnostic(document, report, moduleName, sourceRanges);
if (diagnostic) {
diagnostic.source = 'npm';
diagnostics.push(diagnostic);
}
}
}
//console.log("diagnostic count ", diagnostics.length, " ", document.uri.fsPath);
diagnosticCollection!.set(document.uri, diagnostics);
} catch (e) {
window.showInformationMessage(`[npm-script-runner] Cannot validate the package.json ` + e);
console.log(`npm-script-runner: 'error while validating package.json stacktrace: ${e.stack}`);
}
}