UNPKG

renovate

Version:

Automated dependency updates. Flexible so you don't need to be.

59 lines (58 loc) 1.78 kB
import { logger } from "../logger/index.js"; import { parseJson } from "../util/common.js"; import JSON5 from "json5"; import upath from "upath"; import stripJsonComments from "strip-json-comments"; import jsonValidator from "json-dup-key-validator"; //#region lib/config/parse.ts function parseFileConfig(fileName, fileContents) { if (upath.extname(fileName) === ".json5") try { return { success: true, parsedContents: JSON5.parse(fileContents) }; } catch (err) { logger.debug({ fileName, fileContents }, "Error parsing JSON5 file"); return { success: false, validationError: "Invalid JSON5 (parsing failed)", validationMessage: `JSON5.parse error: \`${err.message.replaceAll("`", "'")}\`` }; } else { const jsonString = stripJsonComments(fileContents); let allowDuplicateKeys = true; let jsonValidationError = jsonValidator.validate(jsonString, allowDuplicateKeys); if (jsonValidationError) return { success: false, validationError: "Invalid JSON (parsing failed)", validationMessage: jsonValidationError }; allowDuplicateKeys = false; jsonValidationError = jsonValidator.validate(jsonString, allowDuplicateKeys); if (jsonValidationError) return { success: false, validationError: "Duplicate keys in JSON", validationMessage: JSON.stringify(jsonValidationError) }; try { return { success: true, parsedContents: parseJson(fileContents, fileName) }; } catch (err) { logger.debug({ fileContents }, "Error parsing renovate config"); return { success: false, validationError: "Invalid JSON (parsing failed)", validationMessage: `JSON.parse error: \`${err.message.replaceAll("`", "'")}\`` }; } } } //#endregion export { parseFileConfig }; //# sourceMappingURL=parse.js.map