UNPKG

conventional-changelog

Version:
118 lines 7.85 kB
function getType(domain) { if (domain.includes('github')) { return 'github'; } if (domain.includes('gitlab')) { return 'gitlab'; } if (domain.includes('bitbucket')) { return 'bitbucket'; } if (domain.includes('git.sr.ht')) { return 'sourcehut'; } return ''; } function getHost(type) { switch (type) { case 'github': return 'https://github.com'; case 'gitlab': return 'https://gitlab.com'; case 'bitbucket': return 'https://bitbucket.org'; case 'sourcehut': return 'https://git.sr.ht'; default: return ''; } } function getRepositoryUrl(type, host, owner, project, branch) { if (!host) { return ''; } let treepath = ''; if (branch) { if (type === 'bitbucket') { treepath = `/src/${encodeURIComponent(branch)}`; } else { treepath = `/tree/${encodeURIComponent(branch)}`; } } return `${host}/${owner}/${project}${treepath}`; } export function parseHostedGitUrl(input) { // github edge case with branch in the url let matches = input.match(/^(?:https:\/\/)?github\.com\/([^/]+)\/([^/.#]+)(?:\/tree\/[^/]+)?$/); if (matches) { return { url: input, type: 'github', host: 'https://github.com', owner: matches[1], project: matches[2] }; } let type; let host; let owner; let project; // git+ssh and ssh urls matches = input.match(/^(?:(?:git\+)?ssh:\/\/(?:[^@]+@)?|[^@]+@)(?:www\.)?([^@:]+):([^/]+(?:\/[^/]+)?)\/([^/.#]+)(?:\.git)?(?:#(.+))?/); if (matches) { type = getType(matches[1]); host = `https://${matches[1]}`; owner = matches[2]; project = matches[3]; return { url: getRepositoryUrl(type, host, owner, project, matches[4]), type, host, owner, project }; } // git+https and https urls matches = input.match(/^(?:(?:git\+)?https|git):\/\/(?:[^@]+@)?(?:www\.)?([^@/]+)\/([^/]+(?:\/[^/]+)?)\/([^/.#]+)(?:\.git)?(?:#(.+))?/); if (matches) { type = getType(matches[1]); host = `http${type || input.includes('https://') ? 's' : ''}://${matches[1]}`; owner = matches[2]; project = matches[3]; return { url: getRepositoryUrl(type, host, owner, project, matches[4]), type, host, owner, project }; } // shortcuts matches = input.match(/^(?:([^@:]+):)?(?:[^@:]+@|[^@:]*:[^@:]+@)?([^/#]+(?:\/[^/]+)?)\/([^/.#]+)(?:\.git)?(?:#(.+))?/); if (matches) { type = matches[1] || 'github'; host = getHost(type); owner = matches[2]; project = matches[3]; return { url: getRepositoryUrl(type, host, owner, project, matches[4]), type, host, owner, project }; } matches = input.match(/^\w+:\/\/([^/]+)(\/[^#]+)?/); if (matches) { type = getType(matches[1]); host = `http${type || input.includes('https://') ? 's' : ''}://${matches[1]}`; return { url: `${host}${matches[2]?.replace(/\/?\.git.*/, '') || ''}`, type, host }; } return null; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9zdGVkR2l0SW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ob3N0ZWRHaXRJbmZvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLFNBQVMsT0FBTyxDQUFDLE1BQWM7SUFDN0IsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzdCLE9BQU8sUUFBUSxDQUFBO0tBQ2hCO0lBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQzdCLE9BQU8sUUFBUSxDQUFBO0tBQ2hCO0lBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sV0FBVyxDQUFBO0tBQ25CO0lBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ2hDLE9BQU8sV0FBVyxDQUFBO0tBQ25CO0lBRUQsT0FBTyxFQUFFLENBQUE7QUFDWCxDQUFDO0FBRUQsU0FBUyxPQUFPLENBQUMsSUFBWTtJQUMzQixRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssUUFBUTtZQUNYLE9BQU8sb0JBQW9CLENBQUE7UUFDN0IsS0FBSyxRQUFRO1lBQ1gsT0FBTyxvQkFBb0IsQ0FBQTtRQUM3QixLQUFLLFdBQVc7WUFDZCxPQUFPLHVCQUF1QixDQUFBO1FBQ2hDLEtBQUssV0FBVztZQUNkLE9BQU8sbUJBQW1CLENBQUE7UUFDNUI7WUFDRSxPQUFPLEVBQUUsQ0FBQTtLQUNaO0FBQ0gsQ0FBQztBQUVELFNBQVMsZ0JBQWdCLENBQ3ZCLElBQWMsRUFDZCxJQUFZLEVBQ1osS0FBYSxFQUNiLE9BQWUsRUFDZixNQUFjO0lBRWQsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNULE9BQU8sRUFBRSxDQUFBO0tBQ1Y7SUFFRCxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUE7SUFFakIsSUFBSSxNQUFNLEVBQUU7UUFDVixJQUFJLElBQUksS0FBSyxXQUFXLEVBQUU7WUFD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