in src/parsers/parsePackageJson.ts [16:44]
export async function parsePackageJson(dir: string): Promise<PackageJson> {
try {
const filePath = path.join(dir, 'package.json');
if (!(await pathExists(filePath))) {
throw new AzFuncSystemError('file does not exist');
}
const data: unknown = await readJson(filePath);
if (typeof data !== 'object' || data === null || Array.isArray(data)) {
throw new AzFuncSystemError('file content is not an object');
}
const stringFields = ['main', 'type'];
for (const field of stringFields) {
if (field in data && typeof data[field] !== 'string') {
// ignore fields with an unexpected type
delete data[field];
}
}
return data;
} catch (err) {
const error: Error = ensureErrorType(err);
if (error.name === 'SyntaxError') {
const message = `file content is not valid JSON: ${error.message}`;
trySetErrorMessage(error, message);
}
throw error;
}
}