diff --git a/web/src/cde-gitness/components/CDEAnyGitImport/CDEAnyGitImport.tsx b/web/src/cde-gitness/components/CDEAnyGitImport/CDEAnyGitImport.tsx index 908026c39..84504034a 100644 --- a/web/src/cde-gitness/components/CDEAnyGitImport/CDEAnyGitImport.tsx +++ b/web/src/cde-gitness/components/CDEAnyGitImport/CDEAnyGitImport.tsx @@ -27,7 +27,7 @@ import { useListRepos, useListBranches, useRepoLookupForGitspace } from 'service import { useGetCDEAPIParams } from 'cde-gitness/hooks/useGetCDEAPIParams' import { scmOptions, SCMType, type RepoQueryParams } from 'cde-gitness/pages/GitspaceCreate/CDECreateGitspace' import { useQueryParams } from 'hooks/useQueryParams' -import { getRepoIdFromURL, getRepoNameFromURL, isValidUrl } from './CDEAnyGitImport.utils' +import { getRepoIdFromURL, getRepoNameFromURL, isValidUrl } from 'cde-gitness/utils/SelectRepository.utils' import { GitspaceSelect } from '../GitspaceSelect/GitspaceSelect' import css from './CDEAnyGitImport.module.scss' diff --git a/web/src/cde-gitness/components/CDEAnyGitImport/CDEAnyGitImport.utils.ts b/web/src/cde-gitness/components/CDEAnyGitImport/CDEAnyGitImport.utils.ts deleted file mode 100644 index 98d7d9689..000000000 --- a/web/src/cde-gitness/components/CDEAnyGitImport/CDEAnyGitImport.utils.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2024 Harness, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export const isValidUrl = (url: string) => { - const urlPattern = new RegExp( - '^(https?:\\/\\/)?' + // validate protocol - '((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|' + // validate domain name - '((\\d{1,3}\\.){3}\\d{1,3}))' + // validate OR ip (v4) address - '(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*' + // validate port and path - '(\\?[;&a-z\\d%_.~+=-]*)?' + // validate query string - '(\\#[-a-z\\d_]*)?$', - 'i' - ) // validate fragment locator - return !!urlPattern.test(url) -} - -export const getRepoIdFromURL = (repoURL?: string) => { - const repoURLSplit = repoURL?.split('/') - return repoURLSplit?.[repoURLSplit?.length - 1] - ?.replace(/-/g, '') - ?.replace(/_/g, '') - .replace(/\./g, '') - ?.toLowerCase() -} - -export const getRepoNameFromURL = (repoURL?: string) => { - const repoURLSplit = repoURL?.split('/') - return repoURLSplit?.[repoURLSplit?.length - 1] -} diff --git a/web/src/cde-gitness/components/CDEAnyGitImport/CDEUnknownSCM.tsx b/web/src/cde-gitness/components/CDEAnyGitImport/CDEUnknownSCM.tsx index 2486ed5bc..e2ab1b3d2 100644 --- a/web/src/cde-gitness/components/CDEAnyGitImport/CDEUnknownSCM.tsx +++ b/web/src/cde-gitness/components/CDEAnyGitImport/CDEUnknownSCM.tsx @@ -29,7 +29,7 @@ import { useRepoLookupForGitspace } from 'services/cde' import { useGetCDEAPIParams } from 'cde-gitness/hooks/useGetCDEAPIParams' import type { RepoQueryParams } from 'cde-gitness/pages/GitspaceCreate/CDECreateGitspace' import { useQueryParams } from 'hooks/useQueryParams' -import { getRepoIdFromURL, getRepoNameFromURL, isValidUrl } from './CDEAnyGitImport.utils' +import { getRepoIdFromURL, getRepoNameFromURL, isValidUrl } from 'cde-gitness/utils/SelectRepository.utils' import css from './CDEAnyGitImport.module.scss' enum RepoCheckStatus { diff --git a/web/src/cde-gitness/pages/GitspaceCreate/CDECreateGitspace.tsx b/web/src/cde-gitness/pages/GitspaceCreate/CDECreateGitspace.tsx index c781aa94f..5fe272e5d 100644 --- a/web/src/cde-gitness/pages/GitspaceCreate/CDECreateGitspace.tsx +++ b/web/src/cde-gitness/pages/GitspaceCreate/CDECreateGitspace.tsx @@ -19,6 +19,7 @@ import { useHistory } from 'react-router-dom' import { Color, FontVariation } from '@harnessio/design-system' import { Menu, MenuItem } from '@blueprintjs/core' import { defaultTo, omit } from 'lodash-es' +import { getRepoIdFromURL, getRepoNameFromURL } from 'cde-gitness/utils/SelectRepository.utils' import { useGetSpaceParam } from 'hooks/useGetSpaceParam' import { useStrings } from 'framework/strings' import { useAppContext } from 'AppContext' @@ -38,7 +39,6 @@ import { useGetCDEAPIParams } from 'cde-gitness/hooks/useGetCDEAPIParams' import { EnumGitspaceCodeRepoType, IDEType } from 'cde-gitness/constants' import { CDESSHSelect } from 'cde-gitness/components/CDESSHSelect/CDESSHSelect' import { useQueryParams } from 'hooks/useQueryParams' -import { getRepoIdFromURL, getRepoNameFromURL } from 'cde-gitness/components/CDEAnyGitImport/CDEAnyGitImport.utils' import { CDEUnknownSCM } from 'cde-gitness/components/CDEAnyGitImport/CDEUnknownSCM' import { gitnessFormInitialValues } from './GitspaceCreate.constants' import { validateGitnessForm } from './GitspaceCreate.utils' diff --git a/web/src/cde-gitness/utils/SelectRepository.utils.tsx b/web/src/cde-gitness/utils/SelectRepository.utils.tsx index 1e78a2833..eb8ba9a0c 100644 --- a/web/src/cde-gitness/utils/SelectRepository.utils.tsx +++ b/web/src/cde-gitness/utils/SelectRepository.utils.tsx @@ -35,16 +35,14 @@ export const isValidUrl = (url: string) => { export const getRepoIdFromURL = (repoURL?: string) => { const repoURLSplit = repoURL?.split('/') - return repoURLSplit?.[repoURLSplit?.length - 1] - ?.replace(/-/g, '') - ?.replace(/_/g, '') - .replace(/\./g, '') - ?.toLowerCase() + const filtered = repoURLSplit?.filter(i => !!i) + return filtered?.[filtered?.length - 1]?.replace(/-/g, '')?.replace(/_/g, '').replace(/\./g, '')?.toLowerCase() } export const getRepoNameFromURL = (repoURL?: string) => { const repoURLSplit = repoURL?.split('/') - return repoURLSplit?.[repoURLSplit?.length - 1] + const filtered = repoURLSplit?.filter(i => !!i) + return filtered?.[filtered?.length - 1] } export enum CodeRepoType {