Use empty object for invalid package json contents instead of undefined (#34906)

* Use empty object for invalid package json contents instead of undefined
Fixes #34726

* Behave as if package json doesnt exist in case of invalid json in package json
This commit is contained in:
Sheetal Nandi
2019-11-04 14:31:45 -08:00
committed by GitHub
parent 9a3ec5f229
commit 47ec514cf4
6 changed files with 116 additions and 9 deletions

View File

@@ -2210,7 +2210,7 @@ namespace ts {
return packageJsons;
}
export function createPackageJsonInfo(fileName: string, host: LanguageServiceHost): PackageJsonInfo | undefined {
export function createPackageJsonInfo(fileName: string, host: LanguageServiceHost): PackageJsonInfo | false | undefined {
if (!host.readFile) {
return undefined;
}
@@ -2218,11 +2218,10 @@ namespace ts {
type PackageJsonRaw = Record<typeof dependencyKeys[number], Record<string, string> | undefined>;
const dependencyKeys = ["dependencies", "devDependencies", "optionalDependencies", "peerDependencies"] as const;
const stringContent = host.readFile(fileName);
const content = stringContent && tryParseJson(stringContent) as PackageJsonRaw;
if (!content) {
return undefined;
}
if (!stringContent) return undefined;
const content = tryParseJson(stringContent) as PackageJsonRaw;
if (!content) return false;
const info: Pick<PackageJsonInfo, typeof dependencyKeys[number]> = {};
for (const key of dependencyKeys) {
const dependencies = content[key];