diff --git a/collector/utils/extensions/RepoLoader/GitlabRepo/RepoLoader/index.js b/collector/utils/extensions/RepoLoader/GitlabRepo/RepoLoader/index.js index 79afd5a9678a9efa961bbb6a697ca5f9747a0397..e22dd690ad5f0ec1078a01da6f308f2951283610 100644 --- a/collector/utils/extensions/RepoLoader/GitlabRepo/RepoLoader/index.js +++ b/collector/utils/extensions/RepoLoader/GitlabRepo/RepoLoader/index.js @@ -45,30 +45,20 @@ class GitLabRepoLoader { } #validGitlabUrl() { - const UrlPattern = require("url-pattern"); const validPatterns = [ - new UrlPattern("https\\://gitlab.com/(:author*)/(:project(*))", { - segmentValueCharset: "a-zA-Z0-9-._~%+", - }), + /https:\/\/gitlab\.com\/(?<author>[^\/]+)\/(?<project>.*)/, // This should even match the regular hosted URL, but we may want to know // if this was a hosted GitLab (above) or a self-hosted (below) instance // since the API interface could be different. - new UrlPattern( - "(:protocol(http|https))\\://(:hostname*)/(:author*)/(:project(*))", - { - segmentValueCharset: "a-zA-Z0-9-._~%+", - } - ), + /(http|https):\/\/[^\/]+\/(?<author>[^\/]+)\/(?<project>.*)/, ]; - let match = null; - for (const pattern of validPatterns) { - if (match !== null) continue; - match = pattern.match(this.repo); - } - if (!match) return false; - const { author, project } = match; + const match = validPatterns + .find((pattern) => this.repo.match(pattern)?.groups) + ?.exec(this.repo); + if (!match?.groups) return false; + const { author, project } = match.groups; this.projectId = encodeURIComponent(`${author}/${project}`); this.apiBase = new URL(this.repo).origin; this.author = author;