UNPKG

syncpack

Version:

Consistent dependency versions in large JavaScript Monorepos

41 lines (40 loc) 1.24 kB
export function formatRepositoryUrl(input) { if (!input) { return undefined; } const extractedUrl = input.match(/https?:\/\/[^\s]+/)?.[0]; if (extractedUrl) { const withoutSuffix = removeSuffix(extractedUrl); return withoutSuffix; } const isSshProtocol = input.startsWith('git@'); if (isSshProtocol) { const withoutAffix = removeSuffix(removePrefix(input, 'git@')); const [origin, path] = withoutAffix.split(':'); if (!(origin && path)) { return undefined; } return `https://${origin}/${path}`; } const isShortcut = input.split('/').length === 2; if (isShortcut) { return `https://github.com/${input}`; } const isGitProtocol = input.startsWith('git://'); if (isGitProtocol) { const withoutAffix = removeSuffix(removePrefix(input)); return `https://${withoutAffix}`; } } function removeSuffix(url, suffix = '.git') { if (url.endsWith(suffix)) { return url.slice(0, url.length - suffix.length); } return url; } function removePrefix(url, prefix = 'git://') { if (url.startsWith(prefix)) { return url.slice(prefix.length, url.length); } return url; }