UNPKG

renovate

Version:

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

99 lines 3.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.detectPlatform = detectPlatform; exports.noLeadingAtSymbol = noLeadingAtSymbol; exports.parseJson = parseJson; exports.parseJsonWithFallback = parseJsonWithFallback; exports.parseJsonc = parseJsonc; const tslib_1 = require("tslib"); const json5_1 = tslib_1.__importDefault(require("json5")); const JSONC = tslib_1.__importStar(require("jsonc-parser")); const constants_1 = require("../constants"); const logger_1 = require("../logger"); const hostRules = tslib_1.__importStar(require("./host-rules")); const url_1 = require("./url"); /** * Tries to detect the `platform` from a url. * * @param url the url to detect `platform` from * @returns matched `platform` if found, otherwise `null` */ function detectPlatform(url) { const { hostname } = (0, url_1.parseUrl)(url) ?? {}; if (hostname === 'dev.azure.com' || hostname?.endsWith('.visualstudio.com')) { return 'azure'; } if (hostname === 'bitbucket.org' || hostname === 'bitbucket.com') { return 'bitbucket'; } if (hostname?.includes('bitbucket')) { return 'bitbucket-server'; } if (hostname && (['gitea.com', 'codeberg.org'].includes(hostname) || hostname.includes('gitea') || hostname.includes('forgejo'))) { return 'gitea'; } if (hostname === 'github.com' || hostname?.includes('github')) { return 'github'; } if (hostname === 'gitlab.com' || hostname?.includes('gitlab')) { return 'gitlab'; } const hostType = hostRules.hostType({ url }); if (!hostType) { return null; } if (constants_1.BITBUCKET_SERVER_API_USING_HOST_TYPES.includes(hostType)) { return 'bitbucket-server'; } if (constants_1.BITBUCKET_API_USING_HOST_TYPES.includes(hostType)) { return 'bitbucket'; } if (constants_1.GITEA_API_USING_HOST_TYPES.includes(hostType)) { return 'gitea'; } if (constants_1.GITHUB_API_USING_HOST_TYPES.includes(hostType)) { return 'github'; } if (constants_1.GITLAB_API_USING_HOST_TYPES.includes(hostType)) { return 'gitlab'; } return null; } function noLeadingAtSymbol(input) { return input.startsWith('@') ? input.slice(1) : input; } function parseJson(content, filename) { if (!content) { return null; } if (filename.endsWith('.jsonc')) { return parseJsonc(content); } if (filename.endsWith('.json5')) { return json5_1.default.parse(content); } return parseJsonWithFallback(content, filename); } function parseJsonWithFallback(content, context) { let parsedJson; try { parsedJson = JSON.parse(content); } catch { parsedJson = json5_1.default.parse(content); logger_1.logger.warn({ context }, 'File contents are invalid JSON but parse using JSON5. Support for this will be removed in a future release so please change to a support .json5 file name or ensure correct JSON syntax.'); } return parsedJson; } function parseJsonc(content) { const errors = []; const value = JSONC.parse(content, errors, { allowTrailingComma: true }); if (errors.length === 0) { return value; } throw new Error('Invalid JSONC'); } //# sourceMappingURL=common.js.map