UNPKG

query-registry

Version:

Query the npm registry for packuments, manifests, packages and download counts

71 lines (58 loc) 1.57 kB
import gitUrlParse from 'git-url-parse'; function normalizeRawRepository({ rawRepository }) { if (isRepository(rawRepository)) { return normalizeRepository({ rawRepository }); } if (typeof rawRepository === 'string') { return normalizeRepository({ rawRepository: { url: rawRepository } }); } return undefined; } function isRepository(rawRepository) { return rawRepository && typeof rawRepository === 'object' && typeof rawRepository['url'] === 'string' && ['string', 'undefined'].includes(typeof rawRepository['type']) && ['string', 'undefined'].includes(typeof rawRepository['directory']); } function normalizeRepository({ rawRepository }) { const { url, directory: repositoryDir } = rawRepository; const info = parseGitURL({ url }); if (!info) { return undefined; } const { source, full_name: repositoryID, filepath } = info; // Add domain to sources derived from npm-style shortcuts const host = source.replace(/^$/, 'github.com').replace(/^github$/, 'github.com').replace(/^gitlab$/, 'gitlab.com').replace(/^bitbucket$/, 'bitbucket.org'); const parsedDir = filepath !== '' ? filepath : undefined; return { type: 'git', url: `https://${host}/${repositoryID}`, directory: repositoryDir != null ? repositoryDir : parsedDir }; } function parseGitURL({ url }) { let info; try { info = gitUrlParse(url); } catch {} return info; } export { normalizeRawRepository }; //# sourceMappingURL=normalize-raw-repository.esm.js.map