{"version":3,"file":"bundles/main.05a8cc66.js","mappings":"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","sources":["webpack://teams-ui/./src/config.ts","webpack://teams-ui/./src/inventory/services/graphql/index.js","webpack://teams-ui/./src/services/queryClient/index.ts","webpack://teams-ui/./src/routes/routes.ts","webpack://teams-ui/./src/utils/api/helpers.js","webpack://teams-ui/./src/utils/api/cd4pe/config.ts","webpack://teams-ui/./src/codeDelivery/utils/arrayOfAll.ts","webpack://teams-ui/./src/utils/api/cd4pe/errors.ts","webpack://teams-ui/./src/utils/api/cd4pe/requests.ts","webpack://teams-ui/./src/utils/constants.ts","webpack://teams-ui/./src/services/cd4pe/ajax.ts","webpack://teams-ui/./src/services/cd4pe/auth.ts","webpack://teams-ui/./src/state/session/selectors.ts","webpack://teams-ui/./src/state/session/session.ts","webpack://teams-ui/./src/components/AccessError/AccessError.tsx","webpack://teams-ui/./src/components/AccessError/index.tsx","webpack://teams-ui/./src/views/ErrorBoundary/ErrorBoundary.jsx","webpack://teams-ui/./src/views/ErrorBoundary/index.js","webpack://teams-ui/./src/state/session/index.ts","webpack://teams-ui/./src/state/ui/alerts.ts","webpack://teams-ui/./src/state/ui/index.ts","webpack://teams-ui/./src/state/index.ts","webpack://teams-ui/./src/state/store.ts","webpack://teams-ui/./src/components/Cd4peError/CommonDetails.tsx","webpack://teams-ui/./src/components/Cd4peError/ErrorWrapper.tsx","webpack://teams-ui/./src/components/Cd4peError/ErrorTitle.tsx","webpack://teams-ui/./src/components/Cd4peError/index.ts","webpack://teams-ui/./src/components/Cd4peError/Cd4peError.tsx","webpack://teams-ui/./src/codeDelivery/utils/docsLinks.ts","webpack://teams-ui/./src/components/CopyrightFooter/index.ts","webpack://teams-ui/./src/components/CopyrightFooter/CopyrightFooter.tsx","webpack://teams-ui/./src/components/FormError/index.ts","webpack://teams-ui/./src/components/FormError/FormError.tsx","webpack://teams-ui/./src/views/Login/Forms/Form.tsx","webpack://teams-ui/./src/views/Login/Forms/RootForm.tsx","webpack://teams-ui/./src/views/Login/Forms/StandardForm.tsx","webpack://teams-ui/./src/views/Login/Forms/LdapForm.tsx","webpack://teams-ui/./src/views/Login/Forms/SamlForm.tsx","webpack://teams-ui/./src/views/Login/Login.tsx","webpack://teams-ui/./src/views/Login/index.ts","webpack://teams-ui/./src/services/cd4pe/users.ts","webpack://teams-ui/./src/views/SignUp/components/SignUpForm.tsx","webpack://teams-ui/./src/views/SignUp/SignUp.tsx","webpack://teams-ui/./src/views/SignUp/index.ts","webpack://teams-ui/./src/hooks/redux.ts","webpack://teams-ui/./src/components/Alerts/Alert.tsx","webpack://teams-ui/./src/components/Alerts/Alerts.tsx","webpack://teams-ui/./src/components/Alerts/index.ts","webpack://teams-ui/./src/components/PageLoader/index.ts","webpack://teams-ui/./src/components/PageLoader/PageLoader.tsx","webpack://teams-ui/./src/hooks/useAuth.ts","webpack://teams-ui/./src/components/ProtectedRoute/index.tsx","webpack://teams-ui/./src/components/ProtectedRoute/ProtectedRoute.tsx","webpack://teams-ui/./src/utils/getDefaultRoute.js","webpack://teams-ui/./src/components/WorkspaceRedirect/index.ts","webpack://teams-ui/./src/components/WorkspaceRedirect/WorkspaceRedirect.tsx","webpack://teams-ui/./src/inventory/components/ConditionalRender/ConditionalRender.jsx","webpack://teams-ui/./src/inventory/components/ConditionalRender/index.js","webpack://teams-ui/./src/views/ForgotPassword/index.ts","webpack://teams-ui/./src/views/ForgotPassword/ForgotPassword.tsx","webpack://teams-ui/./src/views/ResetPassword/index.ts","webpack://teams-ui/./src/views/ResetPassword/ResetPassword.tsx","webpack://teams-ui/./src/components/ConditionalRender/ConditionalRender.jsx","webpack://teams-ui/./src/components/ConditionalRender/index.js","webpack://teams-ui/./src/components/LandingPage/LandingPage.tsx","webpack://teams-ui/./src/components/LandingPage/index.ts","webpack://teams-ui/./src/services/cd4pe/workspaces.ts","webpack://teams-ui/./src/views/ChooseWorkspace/components/ChooseWorkspaceForm.tsx","webpack://teams-ui/./src/views/ChooseWorkspace/components/ChooseWorkspaceInfo.tsx","webpack://teams-ui/./src/views/ChooseWorkspace/ChooseWorkspace.tsx","webpack://teams-ui/./src/views/ChooseWorkspace/index.ts","webpack://teams-ui/./src/components/PageLayout/PageLayoutBreadcrumbs.tsx","webpack://teams-ui/./src/components/PageLayout/PageLayoutContent.tsx","webpack://teams-ui/./src/components/PageLayout/PageLayoutHeader.tsx","webpack://teams-ui/./src/components/PageLayout/PageLayout.tsx","webpack://teams-ui/./src/components/PageLayout/index.ts","webpack://teams-ui/./src/codeDelivery/components/ChangeEmailDialog/ChangeEmailDialog.tsx","webpack://teams-ui/./src/codeDelivery/components/ChangePasswordDialog/ChangePasswordDialog.tsx","webpack://teams-ui/./src/codeDelivery/components/UserDetailsCard/index.ts","webpack://teams-ui/./src/codeDelivery/components/UserDetailsCard/UserDetailsCard.tsx","webpack://teams-ui/./src/components/Breadcrumbs/Breadcrumbs.tsx","webpack://teams-ui/./src/views/Profile/components/TokenCreatedDialog/TokenCreatedDialog.tsx","webpack://teams-ui/./src/views/Profile/components/TokenCreatedDialog/index.tsx","webpack://teams-ui/./src/views/Profile/components/AccessTokenForm/AccessTokenForm.tsx","webpack://teams-ui/./src/views/Profile/components/AccessTokenForm/index.ts","webpack://teams-ui/./src/components/Table/Table.tsx","webpack://teams-ui/./src/components/Table/index.ts","webpack://teams-ui/./src/utils/compare.js","webpack://teams-ui/./src/views/Profile/components/AccessTokenTable/AccessTokenTable.tsx","webpack://teams-ui/./src/views/Profile/components/AccessTokenTable/index.ts","webpack://teams-ui/./src/views/Profile/components/RevokeTokenDialog/RevokeTokenDialog.tsx","webpack://teams-ui/./src/views/Profile/components/RevokeTokenDialog/index.ts","webpack://teams-ui/./src/views/Profile/index.ts","webpack://teams-ui/./src/views/Profile/Profile.tsx","webpack://teams-ui/./src/views/RootViewProfile/RootViewProfile.tsx","webpack://teams-ui/./src/components/Breadcrumbs/index.ts","webpack://teams-ui/./src/hooks/useWorkspaceName.ts","webpack://teams-ui/./src/hooks/useWorkspaceDomain.ts","webpack://teams-ui/./src/views/Activity/components/ValueCard/ValueCard.tsx","webpack://teams-ui/./src/views/Activity/components/ValueChart/CustomTooltip.tsx","webpack://teams-ui/./src/views/Activity/components/ValueChart/ValueChart.tsx","webpack://teams-ui/./src/views/Activity/components/ValueChart/index.ts","webpack://teams-ui/./src/views/Activity/components/InfoPopup/index.ts","webpack://teams-ui/./src/views/Activity/components/InfoPopup/InfoPopup.tsx","webpack://teams-ui/./src/views/Activity/Activity.tsx","webpack://teams-ui/./src/views/Activity/index.ts","webpack://teams-ui/./src/services/cd4pe/valueReporting.ts","webpack://teams-ui/./src/services/cd4pe/license.ts","webpack://teams-ui/./src/hooks/useDebouncedSearch.ts","webpack://teams-ui/./src/views/RootAccounts/components/RootAccountsTable/DeleteUserModal.tsx","webpack://teams-ui/./src/views/RootAccounts/components/RootAccountsTable/RootAccountsTable.tsx","webpack://teams-ui/./src/utils/sort.ts","webpack://teams-ui/./src/views/RootAccounts/components/RootAccountsTable/index.ts","webpack://teams-ui/./src/views/RootAccounts/index.ts","webpack://teams-ui/./src/views/RootAccounts/RootAccounts.tsx","webpack://teams-ui/./src/components/PublicRoute/index.ts","webpack://teams-ui/./src/components/PublicRoute/PublicRoute.tsx","webpack://teams-ui/./src/components/Sidebar/Sidebar.jsx","webpack://teams-ui/./src/components/Sidebar/index.js","webpack://teams-ui/./src/views/LeftNav/LeftNav.jsx","webpack://teams-ui/./src/views/LeftNav/index.js","webpack://teams-ui/./src/components/Layout/index.ts","webpack://teams-ui/./src/components/Layout/Layout.tsx","webpack://teams-ui/./src/utils/cd4pePageLoader.js","webpack://teams-ui/./src/views/Cd4pe/Cd4pe.jsx","webpack://teams-ui/./src/views/Cd4pe/index.js","webpack://teams-ui/./src/cd4pe/cd4pe.tsx","webpack://teams-ui/./src/cd4pe/index.ts","webpack://teams-ui/./src/hooks/useRefList.ts","webpack://teams-ui/./src/utils/date.js","webpack://teams-ui/./src/services/cd4pe/jobs.ts","webpack://teams-ui/./src/utils/actionCreator.ts","webpack://teams-ui/./src/codeDelivery/views/JobTemplateList/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/views/JobTemplateList/actions.ts","webpack://teams-ui/./src/codeDelivery/views/JobTemplateList/reducer.ts","webpack://teams-ui/./src/codeDelivery/views/JobTemplateList/JobTemplateList.tsx","webpack://teams-ui/./src/codeDelivery/views/JobTemplateList/index.ts","webpack://teams-ui/./src/components/CommonForm/CommonFormSectionMain.tsx","webpack://teams-ui/./src/components/CommonForm/CommonFormSectionSidebar.tsx","webpack://teams-ui/./src/components/CommonForm/CommonFormSection.tsx","webpack://teams-ui/./src/components/CommonForm/CommonForm.tsx","webpack://teams-ui/./src/components/CommonForm/index.ts","webpack://teams-ui/./src/components/Definitions/DefinitionsEntryTitle.tsx","webpack://teams-ui/./src/components/Definitions/DefinitionsEntryContent.tsx","webpack://teams-ui/./src/components/Definitions/DefinitionsEntry.tsx","webpack://teams-ui/./src/components/Definitions/Definitions.tsx","webpack://teams-ui/./src/components/Definitions/index.ts","webpack://teams-ui/./src/codeDelivery/components/ShellEditor/ShellEditor.tsx","webpack://teams-ui/./src/codeDelivery/components/ShellEditor/index.ts","webpack://teams-ui/./src/codeDelivery/components/JobTemplate/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/components/JobTemplate/reducer.ts","webpack://teams-ui/./src/codeDelivery/components/JobTemplate/actions.ts","webpack://teams-ui/./src/codeDelivery/components/JobTemplate/JobTemplate.tsx","webpack://teams-ui/./src/codeDelivery/components/JobTemplate/index.ts","webpack://teams-ui/./src/services/cd4pe/hardware.ts","webpack://teams-ui/./src/services/cd4pe/docker.ts","webpack://teams-ui/./src/codeDelivery/views/NewJobTemplate/NewJobTemplate.tsx","webpack://teams-ui/./src/codeDelivery/views/NewJobTemplate/index.ts","webpack://teams-ui/./src/codeDelivery/utils/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/utils/actions.ts","webpack://teams-ui/./src/codeDelivery/utils/secrets.ts","webpack://teams-ui/./src/codeDelivery/components/JobTemplateSecretForm/JobTemplateSecretForm.tsx","webpack://teams-ui/./src/codeDelivery/components/JobTemplateSecretForm/index.ts","webpack://teams-ui/./src/codeDelivery/components/JobTemplateSecretDetails/JobTemplateSecretDetails.tsx","webpack://teams-ui/./src/codeDelivery/components/JobTemplateSecretDetails/index.ts","webpack://teams-ui/./src/codeDelivery/views/EditJobTemplate/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/views/EditJobTemplate/actions.ts","webpack://teams-ui/./src/codeDelivery/views/EditJobTemplate/reducer.ts","webpack://teams-ui/./src/codeDelivery/views/EditJobTemplate/EditJobTemplate.tsx","webpack://teams-ui/./src/codeDelivery/views/EditJobTemplate/index.ts","webpack://teams-ui/./src/utils/boltProjects/errorTypesConsts.js","webpack://teams-ui/./src/codeDelivery/components/GenericErrorAlert/GenericErrorAlert.tsx","webpack://teams-ui/./src/codeDelivery/components/GenericErrorAlert/index.ts","webpack://teams-ui/./src/codeDelivery/components/AddCodeProjectForm/AddCodeProjectForm.tsx","webpack://teams-ui/./src/codeDelivery/components/AddCodeProjectForm/index.ts","webpack://teams-ui/./src/utils/vcs/providerConsts.js","webpack://teams-ui/./src/utils/vcs/displayNameHelper.js","webpack://teams-ui/./src/utils/vcs/iconHelper.ts","webpack://teams-ui/./src/utils/api/cd4pe/vcs/actionTypes.ts","webpack://teams-ui/./src/utils/api/cd4pe/vcs/actions.ts","webpack://teams-ui/./src/utils/debounce.js","webpack://teams-ui/./src/codeDelivery/views/NewModule/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/views/NewModule/actions.ts","webpack://teams-ui/./src/codeDelivery/views/NewModule/reducer.ts","webpack://teams-ui/./src/codeDelivery/views/NewModule/NewModule.tsx","webpack://teams-ui/./src/codeDelivery/views/NewModule/index.ts","webpack://teams-ui/./src/codeDelivery/views/NewControlRepo/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/views/NewControlRepo/reducer.ts","webpack://teams-ui/./src/codeDelivery/views/NewControlRepo/actions.ts","webpack://teams-ui/./src/codeDelivery/views/NewControlRepo/NewControlRepo.tsx","webpack://teams-ui/./src/codeDelivery/views/NewControlRepo/index.ts","webpack://teams-ui/./src/codeDelivery/views/GroupList/components/GroupLink.tsx","webpack://teams-ui/./src/codeDelivery/views/GroupList/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/views/GroupList/actions.ts","webpack://teams-ui/./src/codeDelivery/views/GroupList/reducer.ts","webpack://teams-ui/./src/codeDelivery/views/GroupList/GroupList.tsx","webpack://teams-ui/./src/codeDelivery/views/GroupList/index.ts","webpack://teams-ui/./src/codeDelivery/views/UserList/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/views/UserList/reducer.ts","webpack://teams-ui/./src/codeDelivery/views/UserList/actions.ts","webpack://teams-ui/./src/codeDelivery/views/UserList/UserList.tsx","webpack://teams-ui/./src/codeDelivery/views/UserList/index.ts","webpack://teams-ui/./src/codeDelivery/views/AddUser/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/views/AddUser/actions.ts","webpack://teams-ui/./src/codeDelivery/views/AddUser/reducer.ts","webpack://teams-ui/./src/codeDelivery/views/AddUser/AddUser.tsx","webpack://teams-ui/./src/codeDelivery/views/AddUser/index.ts","webpack://teams-ui/./src/codeDelivery/views/SshKey/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/views/SshKey/reducer.ts","webpack://teams-ui/./src/codeDelivery/views/SshKey/actions.ts","webpack://teams-ui/./src/codeDelivery/views/SshKey/SshKey.tsx","webpack://teams-ui/./src/codeDelivery/views/SshKey/index.ts","webpack://teams-ui/./src/services/cd4pe/peIntegrations.ts","webpack://teams-ui/./src/codeDelivery/views/PeIntegrationList/components/NoPeIntegrations/index.ts","webpack://teams-ui/./src/codeDelivery/views/PeIntegrationList/components/NoPeIntegrations/NoPeIntegrations.tsx","webpack://teams-ui/./src/components/ConfirmDeleteModal/ConfirmDeleteModal.tsx","webpack://teams-ui/./src/components/ConfirmDeleteModal/index.ts","webpack://teams-ui/./src/codeDelivery/views/PeIntegrationList/components/ProtectedEnvironmentsTable/ProtectedEnvironmentsTable.tsx","webpack://teams-ui/./src/codeDelivery/views/PeIntegrationList/components/ProtectedEnvironmentsTable/index.ts","webpack://teams-ui/./src/codeDelivery/views/PeIntegrationList/components/PeIntegrations/PeIntegrations.tsx","webpack://teams-ui/./src/codeDelivery/views/PeIntegrationList/components/PeIntegrations/index.ts","webpack://teams-ui/./src/codeDelivery/views/PeIntegrationList/components/PeHeading/index.ts","webpack://teams-ui/./src/codeDelivery/views/PeIntegrationList/components/PeHeading/PeHeading.tsx","webpack://teams-ui/./src/codeDelivery/views/PeIntegrationList/index.tsx","webpack://teams-ui/./src/codeDelivery/views/PeIntegrationList/PeIntegrationList.tsx","webpack://teams-ui/./src/codeDelivery/components/AutoIntegrationForm/AutoIntegrationForm.tsx","webpack://teams-ui/./src/codeDelivery/components/AutoIntegrationForm/index.ts","webpack://teams-ui/./src/codeDelivery/components/AddPeIntegrationForm/components/CompileBatch/CompileBatch.tsx","webpack://teams-ui/./src/codeDelivery/components/AddPeIntegrationForm/components/CompileBatch/index.ts","webpack://teams-ui/./src/codeDelivery/components/AddPeIntegrationForm/components/ManualIntegrationForm/ManualIntegrationForm.tsx","webpack://teams-ui/./src/codeDelivery/components/AddPeIntegrationForm/components/ManualIntegrationForm/index.ts","webpack://teams-ui/./src/codeDelivery/components/AddPeIntegrationForm/components/IaConfigForm/IaConfigForm.tsx","webpack://teams-ui/./src/codeDelivery/components/AddPeIntegrationForm/components/IaConfigForm/index.ts","webpack://teams-ui/./src/codeDelivery/components/AddPeIntegrationForm/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/components/AddPeIntegrationForm/actions.ts","webpack://teams-ui/./src/codeDelivery/components/AddPeIntegrationForm/reducer.ts","webpack://teams-ui/./src/codeDelivery/components/AddPeIntegrationForm/AddPeIntegrationForm.tsx","webpack://teams-ui/./src/codeDelivery/components/AddPeIntegrationForm/index.ts","webpack://teams-ui/./src/codeDelivery/views/AddPeIntegration/index.ts","webpack://teams-ui/./src/codeDelivery/views/AddPeIntegration/AddPeIntegration.tsx","webpack://teams-ui/./src/codeDelivery/views/EditPeIntegration/EditPeIntegration.tsx","webpack://teams-ui/./src/codeDelivery/views/EditPeIntegration/index.ts","webpack://teams-ui/./src/codeDelivery/components/AddProtectedEnvironmentsSelect/AddProtectedEnvironmentsSelect.tsx","webpack://teams-ui/./src/codeDelivery/components/AddProtectedEnvironmentsSelect/index.tsx","webpack://teams-ui/./src/codeDelivery/components/AddProtectedEnvironmentsTable/AddProtectedEnvironmentsTable.tsx","webpack://teams-ui/./src/codeDelivery/components/AddProtectedEnvironmentsTable/index.ts","webpack://teams-ui/./src/codeDelivery/components/ProtectedEnvironmentsForm/ProtectedEnvironmentsForm.tsx","webpack://teams-ui/./src/codeDelivery/components/ProtectedEnvironmentsForm/index.ts","webpack://teams-ui/./src/services/cd4pe/groups.ts","webpack://teams-ui/./src/codeDelivery/views/AddProtectedEnvironment/AddProtectedEnvironment.tsx","webpack://teams-ui/./src/codeDelivery/views/AddProtectedEnvironment/index.tsx","webpack://teams-ui/./src/codeDelivery/views/EditProtectedEnvironment/EditProtectedEnvironment.tsx","webpack://teams-ui/./src/codeDelivery/views/EditProtectedEnvironment/index.tsx","webpack://teams-ui/./src/codeDelivery/views/RegenerateAuthToken/RegenerateAuthToken.tsx","webpack://teams-ui/./src/codeDelivery/views/RegenerateAuthToken/index.ts","webpack://teams-ui/./src/services/cd4pe/vcs.ts","webpack://teams-ui/./src/codeDelivery/views/AddSourceControl/components/forms/OAuthForm.tsx","webpack://teams-ui/./src/codeDelivery/views/AddSourceControl/components/forms/AzureDevOpsForm.tsx","webpack://teams-ui/./src/codeDelivery/views/AddSourceControl/components/forms/GitlabForm.tsx","webpack://teams-ui/./src/codeDelivery/views/AddSourceControl/components/forms/AddSourceControlBlankForm.tsx","webpack://teams-ui/./src/codeDelivery/views/AddSourceControl/components/forms/GitHubEnterpriseForm.tsx","webpack://teams-ui/./src/codeDelivery/views/AddSourceControl/components/forms/BitBucketServerForm.tsx","webpack://teams-ui/./src/codeDelivery/views/AddSourceControl/components/AddSourceControlForm.tsx","webpack://teams-ui/./src/codeDelivery/views/AddSourceControl/components/AddSourceControlHeader.tsx","webpack://teams-ui/./src/codeDelivery/views/AddSourceControl/index.ts","webpack://teams-ui/./src/codeDelivery/views/AddSourceControl/AddSourceControl.tsx","webpack://teams-ui/./src/codeDelivery/views/SourceControl/components/SourceControlIntegration/index.ts","webpack://teams-ui/./src/codeDelivery/views/SourceControl/components/SourceControlIntegration/SourceControlIntegration.tsx","webpack://teams-ui/./src/codeDelivery/views/SourceControl/components/statusNotificationPrefix/StatusNotificationPrefix.tsx","webpack://teams-ui/./src/codeDelivery/views/SourceControl/components/statusNotificationPrefix/index.ts","webpack://teams-ui/./src/codeDelivery/views/SourceControl/components/SourceControlEmptyState/index.ts","webpack://teams-ui/./src/codeDelivery/views/SourceControl/components/SourceControlEmptyState/SourceControlEmptyState.tsx","webpack://teams-ui/./src/codeDelivery/views/SourceControl/index.ts","webpack://teams-ui/./src/codeDelivery/views/SourceControl/SourceControl.tsx","webpack://teams-ui/./src/codeDelivery/components/GroupPrivilegesForm/utils/constants.ts","webpack://teams-ui/./src/codeDelivery/components/GroupPrivilegesForm/utils/utils.ts","webpack://teams-ui/./src/services/cd4pe/pipelinesAsCode.ts","webpack://teams-ui/./src/services/cd4pe/controlRepos.ts","webpack://teams-ui/./src/services/cd4pe/events.ts","webpack://teams-ui/./src/services/cd4pe/pipelines.ts","webpack://teams-ui/./src/services/cd4pe/modules.ts","webpack://teams-ui/./src/codeDelivery/components/CursorPagination/index.ts","webpack://teams-ui/./src/codeDelivery/components/CursorPagination/CursorPagination.tsx","webpack://teams-ui/./src/codeDelivery/components/GroupPrivilegesForm/components/PrivilegeSubsetModal.tsx","webpack://teams-ui/./src/codeDelivery/components/GroupPrivilegesForm/components/ModulePrivilegesSubsetModal.tsx","webpack://teams-ui/./src/codeDelivery/components/GroupPrivilegesForm/components/ControlReposPrivilegesSubsetModal.tsx","webpack://teams-ui/./src/codeDelivery/components/GroupPrivilegesForm/components/PrivilegeCategory.tsx","webpack://teams-ui/./src/codeDelivery/components/GroupPrivilegesForm/components/PrivilegeAction.tsx","webpack://teams-ui/./src/codeDelivery/components/GroupPrivilegesForm/useGroupPrivilegesState.ts","webpack://teams-ui/./src/codeDelivery/components/GroupPrivilegesForm/GroupPrivilegesForm.tsx","webpack://teams-ui/./src/codeDelivery/components/GroupPrivilegesForm/index.ts","webpack://teams-ui/./src/codeDelivery/views/AddGroup/components/AddGroupForm.tsx","webpack://teams-ui/./src/codeDelivery/views/AddGroup/index.ts","webpack://teams-ui/./src/codeDelivery/views/AddGroup/AddGroup.tsx","webpack://teams-ui/./src/codeDelivery/views/WorkspaceSettings/index.ts","webpack://teams-ui/./src/codeDelivery/views/WorkspaceSettings/WorkspaceSettings.tsx","webpack://teams-ui/./src/codeDelivery/components/SettingsSideNav/index.ts","webpack://teams-ui/./src/codeDelivery/components/SettingsSideNav/SettingsSideNav.tsx","webpack://teams-ui/./src/codeDelivery/components/SettingsPage/SettingsPage.tsx","webpack://teams-ui/./src/codeDelivery/components/SettingsPage/index.ts","webpack://teams-ui/./src/codeDelivery/components/OAuthRedirect/OAuthRedirect.tsx","webpack://teams-ui/./src/codeDelivery/components/OAuthRedirect/index.ts","webpack://teams-ui/./src/codeDelivery/views/AddUserToGroup/components/AddUserForm.tsx","webpack://teams-ui/./src/codeDelivery/views/AddUserToGroup/AddUserToGroup.tsx","webpack://teams-ui/./src/codeDelivery/components/JobHardwareCapabilityForm/FormSidebar.tsx","webpack://teams-ui/./src/codeDelivery/components/JobHardwareCapabilityForm/PeServerSelect.tsx","webpack://teams-ui/./src/codeDelivery/components/JobHardwareCapabilityForm/utils.ts","webpack://teams-ui/./src/codeDelivery/components/JobHardwareCapabilityForm/NodeTable.tsx","webpack://teams-ui/./src/codeDelivery/components/JobHardwareCapabilityForm/JobHardwareCapabilityForm.tsx","webpack://teams-ui/./src/codeDelivery/components/JobHardwareCapabilityForm/index.ts","webpack://teams-ui/./src/codeDelivery/views/EditCapability/EditCapability.tsx","webpack://teams-ui/./src/codeDelivery/views/EditCapability/index.ts","webpack://teams-ui/./src/codeDelivery/utils/vcsLinkHelper.ts","webpack://teams-ui/./src/hooks/useVcsLinks.ts","webpack://teams-ui/./src/codeDelivery/components/ListCodeProjects/components/DeleteProjectButton.tsx","webpack://teams-ui/./src/codeDelivery/components/ListCodeProjects/components/EventDetails.tsx","webpack://teams-ui/./src/codeDelivery/components/ListCodeProjects/index.ts","webpack://teams-ui/./src/codeDelivery/components/ListCodeProjects/ListCodeProjects.tsx","webpack://teams-ui/./src/hooks/useDebounce.ts","webpack://teams-ui/./src/codeDelivery/views/ListModules/ListModules.tsx","webpack://teams-ui/./src/codeDelivery/views/ListModules/index.ts","webpack://teams-ui/./src/codeDelivery/components/EditCodeProjectForm/EditCodeProjectForm.tsx","webpack://teams-ui/./src/codeDelivery/components/EditCodeProjectForm/index.ts","webpack://teams-ui/./src/codeDelivery/views/EditControlRepo/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/views/EditControlRepo/reducer.ts","webpack://teams-ui/./src/codeDelivery/views/EditControlRepo/actions.ts","webpack://teams-ui/./src/codeDelivery/views/EditControlRepo/EditControlRepo.tsx","webpack://teams-ui/./src/codeDelivery/views/EditControlRepo/index.ts","webpack://teams-ui/./src/codeDelivery/views/EditModule/actionTypes.ts","webpack://teams-ui/./src/codeDelivery/views/EditModule/reducer.ts","webpack://teams-ui/./src/codeDelivery/views/EditModule/actions.ts","webpack://teams-ui/./src/codeDelivery/views/EditModule/EditModule.tsx","webpack://teams-ui/./src/codeDelivery/views/EditModule/index.ts","webpack://teams-ui/./src/codeDelivery/views/ViewGroup/components/UserTab/UserTab.tsx","webpack://teams-ui/./src/codeDelivery/views/ViewGroup/components/UserTab/index.ts","webpack://teams-ui/./src/codeDelivery/views/ViewGroup/index.ts","webpack://teams-ui/./src/codeDelivery/views/ViewGroup/ViewGroup.tsx","webpack://teams-ui/./src/codeDelivery/views/JobHardware/Components/JobHardwareCapabilityNodes.tsx","webpack://teams-ui/./src/codeDelivery/views/JobHardware/Components/JobHardwareCapability.tsx","webpack://teams-ui/./src/codeDelivery/views/JobHardware/JobHardware.tsx","webpack://teams-ui/./src/codeDelivery/views/JobHardware/index.ts","webpack://teams-ui/./src/codeDelivery/views/AddCapability/AddCapability.tsx","webpack://teams-ui/./src/codeDelivery/views/AddCapability/index.ts","webpack://teams-ui/./src/components/BannerDropdown/BannerDropdown.tsx","webpack://teams-ui/./src/components/BannerDropdown/index.ts","webpack://teams-ui/./src/codeDelivery/views/JobDetails/components/JobDetailsTab.tsx","webpack://teams-ui/./src/codeDelivery/views/JobDetails/components/JobDetailsCommand.tsx","webpack://teams-ui/./src/components/StatusBar/StatusBar.tsx","webpack://teams-ui/./src/codeDelivery/views/JobDetails/components/JobDetailsStatusBar.tsx","webpack://teams-ui/./src/codeDelivery/views/JobDetails/JobDetails.tsx","webpack://teams-ui/./src/codeDelivery/views/JobDetails/index.ts","webpack://teams-ui/./src/codeDelivery/views/ListControlRepos/ListControlRepos.tsx","webpack://teams-ui/./src/codeDelivery/views/ListControlRepos/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/utils.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/formHelpers.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/ImpactAnalysisForm/ImpactAnalysisForm.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/ImpactAnalysisDialog/ImpactAnalysisDialog.tsx","webpack://teams-ui/./src/services/cd4pe/impactAnalysis.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/components/EventDetails/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/components/EventDetails/EventDetails.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/components/Event/Event.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/components/Event/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/components/StageBadge/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/components/StageBadge/StageBadge.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/components/RerunJobModal/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/components/RerunJobModal/RerunJobModal.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/components/StageEvent/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/components/StageEvent/StageEvent.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/components/PipelineEvent/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/components/PipelineEvent/PipelineEvent.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/WebhookDialog/WebhookDialog.tsx","webpack://teams-ui/./src/services/cd4pe/webhooks.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/WebhookDialog/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/EventsTable.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/EventsTable/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/DeploymentForm/utils.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/DeploymentForm/DeploymentForm.tsx","webpack://teams-ui/./src/services/cd4pe/deployments.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/DeploymentForm/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/JobForm/JobForm.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/JobForm/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/ImpactAnalysisForm/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/AddPRGateForm/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/AddPRGateForm/AddPRGateForm.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/AddStageDialog/AddStageDialog.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/AddStageDialog/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/EditImpactAnalysisDialog/EditImpactAnalysisDialog.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/EditImpactAnalysisDialog/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/PipelinesAsCodePrompt/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/PipelinesAsCodePrompt/PipelinesAsCodePrompt.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/StageCardItem/StageCardItem.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/StageCardItem/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/StageCard/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/StageCard/StageCard.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/PromoteStage/index.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/PromoteStage/PromoteStage.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/ReorderStagesDialog/ReorderStagesDialog.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/ReorderStagesDialog/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/DefaultPipelineCard/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/DefaultPipelineCard/DefaultPipelineCard.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/DeletePipeline/DeletePipeline.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/DeletePipeline/index.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/AddPipelineDialog/AddPipelineDialog.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/DeleteStage/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/DeleteStage/DeleteStage.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/TriggerPipelineDialog/TriggerPipelineDialog.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/TriggerPipelineDialog/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/EditDeploymentDialog/EditDeploymentDialog.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/components/EditDeploymentDialog/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/ManagePipelinesDialog/ManagePipelinesDialog.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/ManagePipelinesDialog/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/Stages.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/Stages/index.ts","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/components/DeploymentDialog/DeploymentDialog.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/ViewPipeline.tsx","webpack://teams-ui/./src/codeDelivery/components/ViewPipeline/index.ts","webpack://teams-ui/./src/codeDelivery/views/ViewControlRepo/index.ts","webpack://teams-ui/./src/codeDelivery/views/ViewControlRepo/ViewControlRepo.tsx","webpack://teams-ui/./src/codeDelivery/views/ViewModule/index.ts","webpack://teams-ui/./src/codeDelivery/views/ViewModule/ViewModule.tsx","webpack://teams-ui/./src/codeDelivery/index.ts","webpack://teams-ui/./src/codeDelivery/CodeDelivery.tsx","webpack://teams-ui/./src/utils/en.propTypes.js","webpack://teams-ui/./src/inventory/components/FactPicker/FactPicker.jsx","webpack://teams-ui/./src/inventory/components/FactPicker/index.js","webpack://teams-ui/./src/inventory/components/ColumnPicker/FactListItem.jsx","webpack://teams-ui/./src/inventory/components/ColumnPicker/FactList.jsx","webpack://teams-ui/./src/inventory/components/ColumnPicker/ColumnPicker.jsx","webpack://teams-ui/./src/inventory/components/ColumnPicker/index.js","webpack://teams-ui/./src/components/TablePager/TablePager.jsx","webpack://teams-ui/./src/components/TablePager/index.js","webpack://teams-ui/./src/inventory/components/QueryError/QueryError.jsx","webpack://teams-ui/./src/inventory/components/QueryError/index.js","webpack://teams-ui/./src/inventory/components/ActiveFilterList/ActiveFilterList.jsx","webpack://teams-ui/./src/inventory/components/ActiveFilterList/index.js","webpack://teams-ui/./src/inventory/components/NodeTableFilter/NodeTableFilter.jsx","webpack://teams-ui/./src/inventory/components/NodeTableFilter/index.js","webpack://teams-ui/./src/inventory/utils/changeStatusText.js","webpack://teams-ui/./src/utils/api/query/index.js","webpack://teams-ui/./src/utils/api/apiClient.js","webpack://teams-ui/./src/inventory/utils/filters/definitions/puppetFilter/index.js","webpack://teams-ui/./src/inventory/utils/filters/index.js","webpack://teams-ui/./src/inventory/components/NodeTableFilter/SingleSelectFilter.jsx","webpack://teams-ui/./src/inventory/components/NodeTable/filters/changeStatus.js","webpack://teams-ui/./src/inventory/components/NodeTable/filters/noopStatus.js","webpack://teams-ui/./src/inventory/components/NodeTableFilter/NodeGroupFilter.jsx","webpack://teams-ui/./src/inventory/components/NodeTable/filters/nodeGroup.js","webpack://teams-ui/./src/inventory/components/NodeTableFilter/ComplexOperatorFilter.jsx","webpack://teams-ui/./src/inventory/components/NodeTable/filters/commonOptions/operator.js","webpack://teams-ui/./src/inventory/components/NodeTable/filters/operatingSystem.js","webpack://teams-ui/./src/inventory/components/NodeTable/filters/peMasterServer.js","webpack://teams-ui/./src/inventory/components/NodeTable/filters/factValue.js","webpack://teams-ui/./src/inventory/components/NodeTable/filters/index.js","webpack://teams-ui/./src/inventory/components/NodeTable/NodeTable.jsx","webpack://teams-ui/./src/inventory/components/NodeTable/index.js","webpack://teams-ui/./src/inventory/components/action-select/action-menu-list/ActionMenuListItem.jsx","webpack://teams-ui/./src/inventory/components/action-select/action-menu-list/ActionMenuList.jsx","webpack://teams-ui/./src/inventory/components/action-select/action-menu-list/index.js","webpack://teams-ui/./src/inventory/components/action-select/withId.jsx","webpack://teams-ui/./src/inventory/components/action-select/ActionSelect.jsx","webpack://teams-ui/./src/inventory/components/action-select/index.js","webpack://teams-ui/./src/inventory/views/StoredViews/SaveViewModal/SaveViewModal.jsx","webpack://teams-ui/./src/inventory/views/StoredViews/SaveViewModal/index.js","webpack://teams-ui/./src/inventory/components/Select/option-menu-list/OptionMenuListItem.jsx","webpack://teams-ui/./src/inventory/components/Select/option-menu-list/OptionMenuList.jsx","webpack://teams-ui/./src/inventory/components/Select/option-menu-list/index.js","webpack://teams-ui/./src/inventory/components/Select/SelectTarget.jsx","webpack://teams-ui/./src/inventory/components/Select/Select.jsx","webpack://teams-ui/./src/inventory/components/Select/index.js","webpack://teams-ui/./src/inventory/components/Chart/Chart.jsx","webpack://teams-ui/./src/inventory/components/Chart/index.js","webpack://teams-ui/./src/inventory/components/ChartCard/ChartCardAlternate.jsx","webpack://teams-ui/./src/inventory/components/ChartCard/ChartCard.jsx","webpack://teams-ui/./src/inventory/components/ChartCard/index.js","webpack://teams-ui/./src/inventory/utils/en.propTypes.js","webpack://teams-ui/./src/inventory/utils/hooks/useListQuery.js","webpack://teams-ui/./src/inventory/components/ChartModal/FactModalView/FactModalView.jsx","webpack://teams-ui/./src/inventory/components/ChartModal/FactModalView/index.js","webpack://teams-ui/./src/inventory/components/ChartModal/ChartModal.jsx","webpack://teams-ui/./src/inventory/components/ChartModal/index.js","webpack://teams-ui/./src/inventory/components/CardBoard/CardGrid.jsx","webpack://teams-ui/./src/inventory/components/CardBoard/CardBoardToolbar.jsx","webpack://teams-ui/./src/inventory/components/CardBoard/CardBoardEmptyCard.jsx","webpack://teams-ui/./src/inventory/components/CardBoard/CardBoard.jsx","webpack://teams-ui/./src/inventory/components/CardBoard/index.js","webpack://teams-ui/./src/inventory/components/FilterTag/FilterTag.jsx","webpack://teams-ui/./src/inventory/components/FilterTag/index.js","webpack://teams-ui/./src/inventory/components/FilterGroup/FilterGroup.jsx","webpack://teams-ui/./src/inventory/components/FilterGroup/index.js","webpack://teams-ui/./src/components/RenderAfterTimeout/RenderAfterTimeout.jsx","webpack://teams-ui/./src/components/RenderAfterTimeout/index.js","webpack://teams-ui/./src/components/LoadingBar/index.js","webpack://teams-ui/./src/components/LoadingBar/LoadingBar.jsx","webpack://teams-ui/./src/inventory/components/FilterBar/FilterBar.jsx","webpack://teams-ui/./src/inventory/components/FilterBar/index.js","webpack://teams-ui/./src/inventory/components/FilterDetails/FilterDetails.jsx","webpack://teams-ui/./src/inventory/components/FilterDetails/index.js","webpack://teams-ui/./src/inventory/utils/index.js","webpack://teams-ui/./src/inventory/utils/getPercentages.js","webpack://teams-ui/./src/i18n.ts","webpack://teams-ui/./src/inventory/utils/cards/definitions/puppetFact/index.js","webpack://teams-ui/./src/inventory/utils/cards/index.js","webpack://teams-ui/./src/inventory/views/NodeExplorer/actionTypes.ts","webpack://teams-ui/./src/inventory/views/NodeExplorer/reducer.ts","webpack://teams-ui/./src/inventory/views/NodeExplorer/actions.ts","webpack://teams-ui/./src/inventory/views/NodeExplorer/NodeExplorer.jsx","webpack://teams-ui/./src/inventory/views/NodeExplorer/index.js","webpack://teams-ui/./src/components/PageHeader/PageHeader.jsx","webpack://teams-ui/./src/components/PageHeader/index.js","webpack://teams-ui/./src/inventory/utils/context/error-context.jsx","webpack://teams-ui/./src/inventory/utils/generateReportURL.js","webpack://teams-ui/./src/inventory/components/NodeStatus/NodeStatus.jsx","webpack://teams-ui/./src/inventory/components/NodeStatus/index.js","webpack://teams-ui/./src/inventory/views/NodeDetails/NodeDetailsHeader/NodeDetailsHeader.jsx","webpack://teams-ui/./src/inventory/views/NodeDetails/NodeDetailsHeader/index.js","webpack://teams-ui/./src/inventory/utils/hooks.js","webpack://teams-ui/./src/inventory/components/FactsTable/FactsTable.jsx","webpack://teams-ui/./src/inventory/components/FactsTable/index.js","webpack://teams-ui/./src/inventory/views/NodeDetails/FactTab/FactTab.jsx","webpack://teams-ui/./src/inventory/views/NodeDetails/FactTab/index.js","webpack://teams-ui/./src/inventory/components/ReportsTable/ReportsTable.jsx","webpack://teams-ui/./src/inventory/components/ReportsTable/index.js","webpack://teams-ui/./src/inventory/views/NodeDetails/ReportsTab/ReportsTab.jsx","webpack://teams-ui/./src/inventory/views/NodeDetails/ReportsTab/index.js","webpack://teams-ui/./src/inventory/views/NodeDetails/NodeDetails.jsx","webpack://teams-ui/./src/inventory/views/NodeDetails/index.js","webpack://teams-ui/./src/inventory/views/StoredViews/DeleteViewModal/DeleteViewModal.jsx","webpack://teams-ui/./src/inventory/views/StoredViews/DeleteViewModal/index.js","webpack://teams-ui/./src/inventory/views/StoredViews/PinViewModal/PinViewModal.jsx","webpack://teams-ui/./src/inventory/views/StoredViews/PinViewModal/index.js","webpack://teams-ui/./src/inventory/views/StoredViews/StoredViews.jsx","webpack://teams-ui/./src/inventory/views/StoredViews/index.js","webpack://teams-ui/./src/inventory/index.ts","webpack://teams-ui/./src/inventory/Inventory.tsx","webpack://teams-ui/./src/App.tsx","webpack://teams-ui/./src/utils/initializeLogging.js","webpack://teams-ui/./src/index.tsx","webpack://teams-ui/./src/inventory/services/graphql/queries/mutationAddView.gql","webpack://teams-ui/./src/inventory/services/graphql/queries/mutationDeleteView.gql","webpack://teams-ui/./src/inventory/services/graphql/queries/mutationEditView.gql","webpack://teams-ui/./src/inventory/services/graphql/queries/mutationSetFavourite.gql","webpack://teams-ui/./src/inventory/services/graphql/queries/queryFactData.gql","webpack://teams-ui/./src/inventory/services/graphql/queries/queryFactPaths.gql","webpack://teams-ui/./src/inventory/services/graphql/queries/queryFullSavedViews.gql","webpack://teams-ui/./src/inventory/services/graphql/queries/queryLatestReport.gql","webpack://teams-ui/./src/inventory/services/graphql/queries/queryNodeGroup.gql","webpack://teams-ui/./src/inventory/services/graphql/queries/queryPeMasterServer.gql","webpack://teams-ui/./src/inventory/services/graphql/queries/queryReportData.gql","webpack://teams-ui/./src/inventory/services/graphql/queries/querySavedView.gql","webpack://teams-ui/./src/inventory/services/graphql/queries/querySavedViews.gql","webpack://teams-ui/./src/inventory/utils/cards/definitions/puppetFact/factQuery.gql","webpack://teams-ui/./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["const requiredConfigurationOptionsValues = [\n 'LOGGING',\n 'TEAMS_UI_VERSION',\n] as const;\n\ntype RequiredConfig = Record<\n typeof requiredConfigurationOptionsValues[number],\n string\n>;\n\ntype AppConfig = RequiredConfig;\n\ninterface LoadingConfig {\n config: RequiredConfig;\n errors: string[];\n}\n\nconst getConfig = (): AppConfig => {\n const { config, errors } = requiredConfigurationOptionsValues.reduce(\n (prev, current) => {\n const value = window.appConfig[current];\n if (!value) {\n return {\n ...prev,\n errors: [...prev.errors, current],\n };\n }\n\n return {\n ...prev,\n config: { ...prev.config, [current]: value },\n };\n },\n { config: {}, errors: [] as string[] } as LoadingConfig,\n );\n\n if (errors.length > 0) {\n throw Error(`Required ${errors.join(', ')} must be defined in appConfig`);\n }\n\n return config;\n};\n\nconst config = getConfig();\n\nexport default config;\n","import { ApolloClient, InMemoryCache } from '@apollo/client';\n\nconst client = new ApolloClient({\n uri: '/query',\n cache: new InMemoryCache({\n dataIdFromObject: (o) => (o._id ? `${o.__typename}:${o._id}` : null),\n }),\n credentials: 'include',\n fetchPolicy: 'no-cache',\n});\n\nexport default client;\n","import { QueryClient } from '@tanstack/react-query';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n retry: false,\n refetchOnWindowFocus: false,\n },\n mutations: {\n retry: false,\n },\n },\n});\n\nexport default queryClient;\n","import { generatePath } from 'react-router-dom';\n\nexport const ROUTES = {\n cd4pe: {\n base: 'cd4pe',\n ssoLogout: 'sso-logout',\n logout: 'logout',\n samlStatus: 'saml-status',\n root: {\n base: 'root',\n settings: {\n base: 'settings',\n puppetEnterprise: 'puppet-enterprise',\n },\n workspaces: 'workspaces',\n jobHardware: 'job-hardware',\n jobHardwareCapability: 'job-hardware-capability',\n },\n workspace: {\n base: ':workspace',\n repositories: {\n base: 'repositories',\n name: ':name',\n },\n modules: {\n base: 'modules',\n name: ':name',\n },\n deployments: {\n base: 'deployments',\n id: ':id',\n },\n moduleDeployments: {\n base: 'module-deployments',\n id: ':id',\n },\n analysis: {\n base: 'analysis',\n id: {\n base: ':id',\n environmentResultId: ':environmentResultId',\n },\n },\n },\n username: {\n base: ':username',\n profile: 'profile',\n messages: 'messages',\n manageWorkspaces: 'manage-workspaces',\n },\n },\n workspace: {\n base: ':workspace',\n codeDelivery: {\n base: 'code-delivery',\n jobs: {\n base: 'jobs',\n jobInstanceId: {\n base: ':jobInstanceId',\n },\n templates: {\n base: 'templates',\n new: 'new',\n templateId: {\n base: ':templateId',\n edit: 'edit',\n },\n },\n },\n modules: {\n base: 'modules',\n new: 'new',\n name: {\n base: ':name',\n edit: 'edit',\n },\n },\n repositories: {\n base: 'repositories',\n new: 'new',\n name: {\n base: ':name',\n edit: 'edit',\n },\n },\n jobHardware: {\n base: 'job-hardware',\n new: 'new',\n capabilityId: {\n base: ':capabilityId',\n },\n },\n },\n settings: {\n base: 'settings',\n workspaces: 'workspaces',\n workspace: 'workspace',\n groups: {\n base: 'groups',\n add: 'add',\n groupId: {\n base: ':groupId',\n addUsers: 'add-users',\n },\n },\n users: {\n base: 'users',\n add: 'add',\n },\n ssh: 'ssh',\n puppetEnterprise: {\n base: 'puppet-enterprise',\n new: 'new',\n peId: {\n base: ':peId',\n environments: {\n base: 'environments',\n envName: ':envName',\n },\n regenerate: 'regenerate',\n },\n },\n sourceControl: {\n base: 'source-control',\n new: 'new',\n },\n },\n inventory: {\n base: 'inventory',\n nodes: {\n base: 'nodes',\n savedViews: 'saved-views',\n view: ':view',\n source: {\n base: ':source',\n id: ':id',\n },\n },\n },\n activity: {\n base: 'activity',\n },\n },\n oauth: {\n base: 'oauth',\n github: 'github',\n bitbucket: 'bitbucket',\n },\n oauth2: {\n base: 'oauth2',\n azureDevOps: 'azureDevOps',\n },\n root: {\n base: 'root',\n accounts: {\n base: 'accounts',\n id: ':id',\n },\n login: 'login',\n forgotPassword: 'forgot-password',\n resetPassword: 'reset-password',\n },\n username: {\n base: ':username',\n chooseWorkspace: 'choose-workspace',\n profile: 'profile',\n },\n login: 'login',\n forgotPassword: 'forgot-password',\n resetPassword: 'reset-password',\n signup: 'signup',\n forbidden: '403',\n notFound: '404',\n};\n\ntype ConcatStrings = `${string & A}.${string & B}`;\n\ntype OrElseConcat = NextValue extends IgnoreKeys\n ? Value\n : ConcatStrings;\n\ntype ObjectPath<\n T extends Record,\n ObjectValues = string | boolean | number | null,\n IgnoreKeys extends string | never = never,\n> = keyof {\n [Property in keyof T as T[Property] extends ObjectValues\n ? Property\n : OrElseConcat<\n Property,\n IgnoreKeys,\n ObjectPath\n >]: never;\n};\n\ntype RoutePath = ObjectPath;\n\ninterface RoutesShape {\n base: string;\n [key: string]: string | RoutesShape;\n}\n\ntype Routes = Record;\n\nexport const getSegment = (routePath: RoutePath) => {\n const segments = routePath.split('.');\n\n const getValue = (path: string[]) =>\n path.reduce((value, key) => {\n if (typeof value === 'string') {\n return value;\n }\n\n return value[key];\n }, ROUTES as unknown as Routes[string] | Routes[string][string]);\n\n const value = getValue(segments);\n\n if (typeof value === 'string') {\n return value;\n }\n\n return value.base;\n};\n\nconst getRoute = (routePath: RoutePath) => {\n const segments = routePath.split('.');\n\n return segments.reduce(\n ({ objPath, path }, key) => {\n const newPath = (objPath ? `${objPath}.${key}` : key) as RoutePath;\n\n return {\n objPath: newPath,\n path: `${path}/${getSegment(newPath)}`,\n };\n },\n { objPath: '', path: '' },\n ).path;\n};\n\ntype ParamType =\n | string\n | Record\n | null;\n\ntype AsRecord> = K extends string\n ? Record\n : K;\n\ntype RequiredOrOptional<\n Key extends string,\n Values extends ParamType,\n> = Values extends null\n ? Partial>>>\n : Record>>;\n\ntype LinkGeneratorArgs<\n PathParams extends ParamType,\n QueryParams extends ParamType,\n> = RequiredOrOptional<'path', PathParams> &\n RequiredOrOptional<'query', QueryParams>;\n\ntype ParamOptions = undefined | string | number | boolean;\n\ntype QueryParamMap =\n | Record\n | Record>;\n\nconst getQueryParamsString = (queryParams: QueryParamMap) => {\n const encodedParams: string[] = Object.entries(queryParams)\n .filter(([value]) => value !== null && value !== undefined)\n .map(\n ([param, value]) =>\n `${encodeURIComponent(param)}=${encodeURIComponent(`${value}`)}`,\n );\n\n if (encodedParams.length <= 0) {\n return '';\n }\n\n return `?${encodedParams.join('&')}`;\n};\n\nconst getLinkFn = (\n routePath: RoutePath,\n): ((linkArgs: LinkGeneratorArgs) => string) => {\n const path = getRoute(routePath);\n return ({ path: pathParams, query }) => {\n return !query\n ? generatePath(path, pathParams || {})\n : `${generatePath(path, pathParams)}${getQueryParamsString(query)}`;\n };\n};\n\nexport const LINKS = {\n cd4pe: {\n ssoLogout: getRoute('cd4pe.ssoLogout'),\n logout: getRoute('cd4pe.logout'),\n samlStatus: getRoute('cd4pe.samlStatus'),\n root: getRoute('cd4pe.root'),\n rootSettings: getRoute('cd4pe.root.settings'),\n rootPuppetEnterprise: getRoute('cd4pe.root.settings.puppetEnterprise'),\n rootWorkspaces: getRoute('cd4pe.root.workspaces'),\n rootJobHardware: getRoute('cd4pe.root.jobHardware'),\n workspace: getLinkFn<'workspace'>('cd4pe.workspace'),\n manageWorkspaces: getLinkFn<'username'>('cd4pe.username.manageWorkspaces'),\n profile: getLinkFn<'username'>('cd4pe.username.profile'),\n messages: getLinkFn<'username'>('cd4pe.username.messages'),\n viewDeployment: getLinkFn<{ workspace: string; id: number }>(\n 'cd4pe.workspace.deployments.id',\n ),\n viewImpactAnalysis: getLinkFn<{ workspace: string; id: number }>(\n 'cd4pe.workspace.analysis.id',\n ),\n viewImpactAnalysisEnvironmentResult: getLinkFn<{\n workspace: string;\n id: number;\n environmentResultId: number;\n }>('cd4pe.workspace.analysis.id.environmentResultId'),\n },\n workspace: getLinkFn<'workspace'>('workspace'),\n login: getLinkFn('login'),\n forgotPassword: getRoute('forgotPassword'),\n resetPassword: getRoute('resetPassword'),\n signup: getRoute('signup'),\n forbidden: getLinkFn('forbidden'),\n notFound: getRoute('notFound'),\n username: {\n chooseWorkspace: getLinkFn<'username'>('username.chooseWorkspace'),\n profile: getLinkFn<'username'>('username.profile'),\n },\n root: {\n root: getRoute('root'),\n accounts: getRoute('root.accounts'),\n userAccount: getLinkFn<{ id: number }>('root.accounts.id'),\n login: getLinkFn('root.login'),\n },\n codeDelivery: {\n root: getLinkFn<'workspace'>('workspace.codeDelivery'),\n jobs: getLinkFn<'workspace'>('workspace.codeDelivery.jobs'),\n jobDetails: getLinkFn<{ workspace: string; jobInstanceId: number }>(\n 'workspace.codeDelivery.jobs.jobInstanceId',\n ),\n listJobTemplates: getLinkFn<'workspace'>(\n 'workspace.codeDelivery.jobs.templates',\n ),\n newJobTemplate: getLinkFn<'workspace'>(\n 'workspace.codeDelivery.jobs.templates.new',\n ),\n editJobTemplate: getLinkFn<{ workspace: string; templateId: number }>(\n 'workspace.codeDelivery.jobs.templates.templateId.edit',\n ),\n listModules: getLinkFn<'workspace'>('workspace.codeDelivery.modules'),\n newModule: getLinkFn<'workspace'>('workspace.codeDelivery.modules.new'),\n listRepositories: getLinkFn<'workspace'>(\n 'workspace.codeDelivery.repositories',\n ),\n newRepository: getLinkFn<'workspace'>(\n 'workspace.codeDelivery.repositories.new',\n ),\n jobHardware: getLinkFn<'workspace'>('workspace.codeDelivery.jobHardware'),\n newCapability: getLinkFn<'workspace'>(\n 'workspace.codeDelivery.jobHardware.new',\n ),\n editCapability: getLinkFn<{\n workspace: string;\n capabilityId: number;\n }>('workspace.codeDelivery.jobHardware.capabilityId'),\n viewRepository: getLinkFn<\n 'workspace' | 'name',\n { pipelineId: string; eventId: string } | null\n >('workspace.codeDelivery.repositories.name'),\n editRepository: getLinkFn<'workspace' | 'name'>(\n 'workspace.codeDelivery.repositories.name.edit',\n ),\n viewModule: getLinkFn<\n 'workspace' | 'name',\n { pipelineId: string; eventId: string } | null\n >('workspace.codeDelivery.modules.name'),\n editModule: getLinkFn<'workspace' | 'name'>(\n 'workspace.codeDelivery.modules.name.edit',\n ),\n },\n settings: {\n root: getLinkFn<'workspace'>('workspace.settings'),\n workspace: getLinkFn<'workspace'>('workspace.settings.workspace'),\n listGroups: getLinkFn<'workspace', { newGroupName: string } | null>(\n 'workspace.settings.groups',\n ),\n addGroup: getLinkFn<\n 'workspace',\n {\n groupId: string;\n groupName: string;\n stepperIndex: number;\n } | null\n >('workspace.settings.groups.add'),\n viewGroup: getLinkFn<'workspace' | 'groupId'>(\n 'workspace.settings.groups.groupId',\n ),\n addGroupUsers: getLinkFn<'workspace' | 'groupId'>(\n 'workspace.settings.groups.groupId.addUsers',\n ),\n ssh: getLinkFn<'workspace'>('workspace.settings.ssh'),\n listUsers: getLinkFn<'workspace'>('workspace.settings.users'),\n addUser: getLinkFn<'workspace'>('workspace.settings.users.add'),\n listPuppetEnterprise: getLinkFn<'workspace'>(\n 'workspace.settings.puppetEnterprise',\n ),\n newPuppetEnterprise: getLinkFn<'workspace'>(\n 'workspace.settings.puppetEnterprise.new',\n ),\n editPuppetEnterprise: getLinkFn<'workspace' | 'peId'>(\n 'workspace.settings.puppetEnterprise.peId',\n ),\n addProtectedEnvironment: getLinkFn<'workspace' | 'peId'>(\n 'workspace.settings.puppetEnterprise.peId.environments',\n ),\n editProtectedEnvironment: getLinkFn<'workspace' | 'peId' | 'envName'>(\n 'workspace.settings.puppetEnterprise.peId.environments.envName',\n ),\n regeneratePuppetEnterpriseToken: getLinkFn<'workspace' | 'peId'>(\n 'workspace.settings.puppetEnterprise.peId.regenerate',\n ),\n listSourceControl: getLinkFn<'workspace'>(\n 'workspace.settings.sourceControl',\n ),\n newSourceControl: getLinkFn<'workspace'>(\n 'workspace.settings.sourceControl.new',\n ),\n },\n inventory: {\n root: getLinkFn<'workspace'>('workspace.inventory'),\n view: getLinkFn<'workspace' | 'view'>('workspace.inventory'),\n listNodes: getLinkFn<'workspace'>('workspace.inventory.nodes'),\n savedViews: getLinkFn<'workspace'>('workspace.inventory.nodes.savedViews'),\n source: getLinkFn<'workspace'>('workspace.inventory.nodes.source'),\n viewSource: getLinkFn<'workspace' | 'source' | 'id'>(\n 'workspace.inventory.nodes.source.id',\n ),\n },\n activity: {\n root: getLinkFn<'workspace'>('workspace.activity'),\n },\n};\n","export const getQueryURL = (queryParams) => {\n const query = Object.keys(queryParams)\n .map(\n (param) =>\n `${encodeURIComponent(param)}=${encodeURIComponent(\n queryParams[param],\n )}`,\n )\n .join('&');\n return query;\n};\n\nexport const getAuthCookie = () => {\n if (!document.cookie) {\n return null;\n }\n const cookies = document.cookie.split(';');\n if (!cookies || cookies.length === 0) {\n return null;\n }\n\n const authCookie = cookies.find((cookie) =>\n cookie.trim().startsWith('com.puppet.pipelines.pfi.sid'),\n );\n\n if (!authCookie) {\n return null;\n }\n\n // Split only on the first occurrence of =\n const keyval = authCookie.split(/=(.+)/);\n if (keyval.length < 2) {\n return null;\n }\n\n return keyval[1];\n};\n\nexport const generateBaseCorsConfig = (method, body, headers = {}) => {\n const corsHeaders = {\n 'Content-Type': 'application/json',\n 'Accept-Language': 'en',\n ...headers,\n };\n const defaultConfig = {\n method,\n headers: corsHeaders,\n mode: 'cors',\n credentials: 'include',\n };\n if (body) {\n defaultConfig.body = body;\n }\n return defaultConfig;\n};\n\nexport const generateAuthConfig = (method, body) => {\n return generateBaseCorsConfig(method, body, {\n Authorization: getAuthCookie(),\n });\n};\n","import 'regenerator-runtime/runtime';\nimport { OpenAPI } from '@puppet/cd4pe-client-ts';\nimport { getAuthCookie } from '../helpers';\n\nconst authCookie = getAuthCookie();\n\nif (authCookie) {\n OpenAPI.HEADERS = {\n authorization: authCookie,\n Accept: '*/*',\n };\n}\nOpenAPI.BASE = '/cd4pe/api';\n","/**\n * Helper function for making sure array contains all string from string union\n * Example:\n * type Test = 'hello' | 'world';\n * const some = arrayOfAll()(['hello']) // this throws error\n * const all = arrayOfAll()(['hello', 'world']) // this is good\n */\nconst arrayOfAll =\n () =>\n (array: U & ([T] extends [U[number]] ? unknown : 'Invalid')) =>\n array;\n\nexport default arrayOfAll;\n","import arrayOfAll from '@codeDelivery/utils/arrayOfAll';\nimport {\n ApiError,\n AuthenticationErrorV1,\n AuthorizationErrorV1,\n BadRequestErrorV1,\n BaseErrorV1,\n ConflictErrorV1,\n ErrorV1,\n InternalErrorV1,\n NotFoundErrorV1,\n UnprocessableEntityErrorV1,\n} from '@puppet/cd4pe-client-ts';\n\nexport type KnownCd4peError =\n | AuthenticationErrorV1\n | AuthorizationErrorV1\n | BadRequestErrorV1\n | BaseErrorV1\n | ConflictErrorV1\n | InternalErrorV1\n | NotFoundErrorV1\n | UnprocessableEntityErrorV1;\n\nexport class Cd4peError<\n T extends KnownCd4peError = KnownCd4peError,\n> extends Error {\n readonly body: T;\n\n readonly status: number;\n\n constructor(body: T, status: number, message: string) {\n super(message);\n this.body = body;\n this.status = status;\n }\n}\n\nexport type Cd4peApiError =\n | Cd4peError\n | Cd4peError\n | Cd4peError\n | Cd4peError\n | Cd4peError\n | Cd4peError\n | Cd4peError\n | Cd4peError\n | ApiError;\n\nexport const isKnownCd4peError = (\n response: Response | Cd4peError | ApiError,\n): response is Cd4peError => response instanceof Cd4peError;\n\nexport const isUnknownCd4peError = (\n response: Response | Cd4peError | ApiError,\n): response is ApiError => response instanceof ApiError;\n\nexport const isCd4peApiError = (\n response: Response | Cd4peError | ApiError,\n): response is Cd4peError | ApiError =>\n isKnownCd4peError(response) || isUnknownCd4peError(response);\n\nconst extendsBaseError = (\n error: Response | Cd4peApiError,\n): error is Cd4peError => {\n if (!isKnownCd4peError(error)) {\n return false;\n }\n\n const e: BaseErrorV1 = error.body;\n const keys = arrayOfAll()([\n 'message',\n 'traceId',\n 'uriPath',\n ]);\n\n return !!e && keys.every((k) => typeof e[k] === 'string');\n};\n\nexport const isBadRequestError = (\n error: Response | Cd4peApiError,\n): error is Cd4peError => {\n if (!extendsBaseError(error)) {\n return false;\n }\n\n const e = error.body as BadRequestErrorV1;\n\n return Array.isArray(e.errors) && e.errors.every((v) => !!v.message);\n};\n\nexport const isInternalError = (\n error: Response | Cd4peApiError,\n): error is Cd4peError => {\n if (!extendsBaseError(error)) {\n return false;\n }\n\n const e = error.body as InternalErrorV1;\n\n return typeof e.code === 'string';\n};\n\n/**\n * All methods below are depecrated and should not be used in new components\n */\n\nexport const isApiError = >(\n response: K | ErrorV1,\n): response is ErrorV1 => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const r = response as any;\n\n if (!r) {\n return false;\n }\n\n if (r.traceId && r.message) {\n return true;\n }\n\n return false;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const getApiError = (errorResponse: any) => {\n if (!errorResponse || !errorResponse.body) {\n return null;\n }\n\n const errorBody = errorResponse.body;\n\n if (isApiError(errorBody)) {\n return errorBody;\n }\n\n return null;\n};\n\nexport const isGenericError = >(\n response: K | ApiError,\n): response is ApiError => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const r = response as any;\n\n if (!r) {\n return false;\n }\n\n if (r.url && typeof r.status === 'number') {\n return true;\n }\n\n return false;\n};\n\nexport const isErrorResponse = >(\n response: K | ApiError | ErrorV1,\n): response is ApiError | ErrorV1 =>\n isGenericError(response) || isApiError(response);\n\n// This function should not be used anymore. New components should use the\n// Cd4peError component instead. This function will be removed in the future.\nexport const formatError = (\n error: Cd4peError | ErrorV1 | ApiError | null,\n fallback = 'Error',\n) => {\n const finalError = isKnownCd4peError(error) ? error.body : error;\n\n if (!finalError || !isErrorResponse(finalError)) {\n return fallback;\n }\n\n if (isApiError(finalError)) {\n const { message, details = {} } = finalError;\n const { cause } = details;\n\n if (!message && !cause) {\n return fallback;\n }\n\n if (message && cause) {\n return `${message}. ${cause}`.trim();\n }\n\n if (message) {\n return `${message}.`;\n }\n\n return `${cause}`;\n }\n if (\n isGenericError(finalError) &&\n finalError.body &&\n finalError.body.uriPath\n ) {\n // Temporary way to determine that the error data is one of our models we can make other assumptions about it.\n // These '\\n' characters aren't currently respected by callers because the string is passed into an Alert component in most cases.\n // I've left them to indicate the intent of formatting whenever we create a common error component instead of just using a string\n let formattedMessage = `${finalError.body.message}`;\n if (finalError.status === 400 && finalError.body.errors) {\n formattedMessage = `${formattedMessage}\\n ${finalError.body.errors.join(\n '\\n',\n )}`;\n }\n return `HTTP Status:\\n ${finalError.status}\\n Message: ${formattedMessage}\\n URI path: ${finalError.body.uriPath}\\n Trace ID: ${finalError.body.traceId}\\n`;\n }\n\n return `${finalError.status}: ${fallback}`;\n};\n","import { ApiError, BaseErrorV1, ErrorV1 } from '@utils/api/cd4pe';\nimport {\n UseMutationResult,\n UseQueryResult,\n UseInfiniteQueryResult,\n UseQueryOptions,\n UseInfiniteQueryOptions,\n} from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n Cd4peError,\n formatError,\n getApiError,\n isApiError,\n isCd4peApiError,\n isGenericError,\n KnownCd4peError,\n} from './errors';\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type ApiReturnValue = T[K] extends (\n ...args: any[]\n) => any\n ? Awaited>\n : never;\n\nexport type ApiPayload = T[K] extends (\n ...args: any[]\n) => any\n ? Parameters[0]\n : never;\n\n// TODO revisit & consider making payload param optional for requests with no payload, ie useGetSharedDockerImageSettingsV1\nexport type QueryHook<\n T,\n K extends keyof T,\n E = ApiError | ErrorV1,\n> = T[K] extends (...args: any[]) => any\n ? (\n payload: ApiPayload,\n options?: UseQueryOptions,\n ) => UseQueryResult, E>\n : never;\n\nexport type QueryHookNoPayload<\n T,\n K extends keyof T,\n E = ApiError | ErrorV1,\n> = T[K] extends (...args: any[]) => any\n ? (\n options?: UseQueryOptions,\n ) => UseQueryResult, E>\n : never;\n\nexport type InfiniteQueryHook<\n T,\n K extends keyof T,\n E = ApiError | ErrorV1,\n> = T[K] extends (...args: any[]) => any\n ? (\n payload: ApiPayload,\n options?: UseInfiniteQueryOptions,\n ) => UseInfiniteQueryResult, E>\n : never;\n\nexport type MutationHook<\n T,\n K extends keyof T,\n E = ApiError | ErrorV1,\n> = T[K] extends (...args: any[]) => any\n ? () => UseMutationResult, E, ApiPayload>\n : never;\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nconst isKnownCd4peErrorBody = (\n response: Response | KnownCd4peError | ApiError,\n): response is KnownCd4peError => {\n if (!response || Object.keys(response).length <= 0) {\n return false;\n }\n\n const baseError = response as BaseErrorV1;\n\n return (\n typeof baseError.message === 'string' &&\n typeof baseError.traceId === 'string' &&\n typeof baseError.uriPath === 'string'\n );\n};\n\nconst toError = (error: ErrorResponse): Cd4peApiError => {\n if (!(error instanceof ApiError)) {\n return new ApiError(\n {\n body: null,\n ok: false,\n status: 1,\n statusText: 'Unknown error',\n url: 'unknown',\n },\n 'An unknown error occurred.',\n );\n }\n\n if (isKnownCd4peErrorBody(error.body)) {\n return new Cd4peError(error.body, error.status, error.message);\n }\n\n return error;\n};\n\nexport const isOkResponse = (\n response: Response | Cd4peError | ApiError,\n): response is Exclude =>\n !isCd4peApiError(response);\n\nexport const handleQueryRequest = async (\n apiCall: Promise,\n): Promise => {\n try {\n const response = await apiCall;\n return response as Response;\n } catch (e) {\n throw toError(e);\n }\n};\n\nexport const handleApiRequest = async (\n apiCall: Promise,\n): Promise => {\n try {\n const response = await apiCall;\n return response as Response;\n } catch (e) {\n return toError(e);\n }\n};\n\n/**\n * All methods below are depecrated and should not be used in new components\n */\n\nexport const isSuccessResponse = >(\n response: K | ApiError | ErrorV1,\n): response is K => !isGenericError(response) && !isApiError(response);\n\n// This should not be used anymore and should be replaced with\n// handleQueryRequest\nexport const unwrapApiResponseWithThrow = async >(\n apiCall: Promise,\n) => {\n try {\n const response = await apiCall;\n return response as K;\n } catch (e) {\n throw formatError(e as ApiError);\n }\n};\n\n// This should not be used anymore and should be replaced with\n// handleQueryRequest\nexport const toUseQueryResponse = async >(\n apiCall: Promise,\n) => {\n try {\n const response = await apiCall;\n return response as K;\n } catch (e) {\n const apiError = getApiError(e);\n\n if (apiError) {\n throw apiError;\n }\n\n // eslint-disable-next-line no-throw-literal\n throw e as ApiError;\n }\n};\n\n// This should not be used anymore and should be replaced with\n// handleApiRequest\nexport const unwrapApiResponse = async >(\n apiCall: Promise,\n) => {\n try {\n const response = await apiCall;\n return response as K;\n } catch (e) {\n const apiError = getApiError(e);\n\n if (apiError) {\n return apiError;\n }\n return e as ApiError;\n }\n};\n","import { TaskStateV1 } from '@puppet/cd4pe-client-ts';\n\nconst TABLE_LIMIT = 30;\nconst INITIAL_TABLE_LIMIT = 10;\nconst TABLE_PAGE_OPTIONS = [\n {\n value: '10',\n label: '10',\n },\n {\n value: '20',\n label: '20',\n },\n {\n value: '30',\n label: '30',\n },\n];\n\nconst API_POLLING_FREQUENCY = 10000;\n\nconst DOCS_URL =\n 'https://puppet.com/docs/continuous-delivery/latest/node_inventory.html';\n\nconst ROUTE_TYPES = {\n cd4pe: 'cd4pe',\n codeDelivery: 'codeDelivery',\n inventory: 'inventory',\n root: 'root.accounts',\n};\n\nconst PUPPET_DEPLOY = 'deploy';\nconst OUTPUT_MESSAGE = 'out_message';\n\nconst RESULT_STATUS = {\n NEW: 'new',\n READY: 'ready',\n RUNNING: 'running',\n STOPPING: 'stopping',\n STOPPED: 'stopped',\n FAILED: 'failed',\n SUCCEEDED: 'succeeded',\n DONE: 'done',\n ERROR: 'error',\n UNKNOWN: 'unknown',\n QUEUED: 'queued',\n};\n\nconst FILTER_OPERATORS = {\n equals: { symbol: '=', label: 'Equals', value: 'equals' },\n notEqual: {\n symbol: '!=',\n label: 'Not equal to',\n value: 'notEqual',\n },\n contains: { symbol: '=~', label: 'Contains', value: 'contains' },\n notContain: {\n symbol: '!~',\n label: 'Does not contain',\n value: 'notContain',\n },\n};\n\nconst FORM_FIELD_TYPES = {\n STRING: 'String',\n VARIANT: 'Variant',\n HASH: 'Hash',\n ARRAY: 'Array',\n PATTERN: 'Pattern',\n BOOLEAN: 'Boolean',\n ENUM: 'Enum',\n INTEGER: 'Integer',\n TARGETSPEC: 'TargetSpec',\n};\n\nconst ACTION_DETAILS_TABS = {\n FAILED: 'failed',\n SUCCEEDED: 'finished',\n SKIPPED: 'stopped',\n IN_PROGRESS: 'running',\n QUEUED: 'ready',\n};\n\n// This is used to differentiate requests that should reach\n// the cd4pe service, via the teams node service proxy.\nconst PROXY_HEADER = {\n key: 'X-Node-Proxy',\n value: 'enable',\n};\n\nconst KEYBOARD_KEYS = {\n enter: 13,\n space: 32,\n};\n\nconst CARDTYPES = {\n chart: {\n donut: 'donut',\n },\n data: {\n fact: 'fact',\n },\n empty: {\n donut: {\n categories: [],\n series: [{ data: [] }],\n },\n },\n};\n\nconst VALUE_LIMIT = 6;\n\nconst PUPPET_FACT = 'puppetFact';\n\nconst CHART_LEGEND_LABEL_MAX_LENGTH = 11;\nconst CHART_LEGEND_LABEL_ELLIPSE_POSITION = 9;\n\nconst PUPPETN400 = '#CCD4D9';\n\nconst COMPOUND_FILTER_AND = 'AND';\nconst COMPOUND_FILTER_OR = 'OR';\n\nconst ESTATE_REPORTING_FILTER_OPERATORS = {\n equals: { symbol: '=', label: 'Equals', value: 'equals' },\n 'not equal to': {\n symbol: '!=',\n label: 'Not equal to',\n value: 'notEqual',\n },\n contains: { symbol: '=~', label: 'Contains', value: 'contains' },\n 'does not contain': {\n symbol: '!~',\n label: 'Does not contain',\n value: 'notContain',\n },\n};\n\nconst TARGET_TYPE_OPTIONS = {\n selectByName: 'Select nodes by name',\n filterByFact: 'Filter nodes by fact value',\n};\n\nconst FILTER_UNION_OPTIONS = [\n { value: COMPOUND_FILTER_AND, label: COMPOUND_FILTER_AND },\n { value: COMPOUND_FILTER_OR, label: COMPOUND_FILTER_OR },\n];\n\nconst PERMISSION_OBJECTS = {\n GROUP: 'GROUP',\n SERVER: 'SERVER',\n PROJECT: 'PROJECT',\n SETTING: 'SETTING',\n ENVIRONMENT: 'ENVIRONMENT',\n WORKFLOW: 'WORKFLOW',\n DASHBOARD: 'DASHBOARD',\n VM_JOB_TEMPLATE: 'VM_JOB_TEMPLATE',\n MODULE: 'MODULE',\n CONTROL_REPO: 'CONTROL_REPO',\n};\nconst PERMISSION_ACTIONS = {\n CREATE: 'CREATE',\n READ: 'READ',\n WRITE: 'WRITE',\n DELETE: 'DELETE',\n ADMIN: 'ADMIN',\n BUILD: 'BUILD',\n RUN: 'RUN',\n DEPLOY: 'DEPLOY',\n PROMOTE: 'PROMOTE',\n MANAGE: 'MANAGE',\n EDIT: 'EDIT',\n};\nconst PERMISSION_INSTANCES = { INVENTORY: 'INVENTORY', ALL: '*' };\n\nconst ALERT_TYPES = {\n SUCCESS: 'success',\n DANGER: 'danger',\n INFO: 'info',\n WARNING: 'warning',\n};\n\nconst QUERY_NAMES = {\n PE_INTEGRATION_LIST: 'peIntegrationList',\n PE_PROTECTED_ENVIRONMENTS: 'peIntegrationProtectedEnvironments',\n PE_INTEGRATION: 'peIntegration',\n};\n\nexport {\n CHART_LEGEND_LABEL_MAX_LENGTH,\n CHART_LEGEND_LABEL_ELLIPSE_POSITION,\n TABLE_LIMIT,\n INITIAL_TABLE_LIMIT,\n TABLE_PAGE_OPTIONS,\n API_POLLING_FREQUENCY,\n DOCS_URL,\n RESULT_STATUS,\n PUPPET_DEPLOY,\n OUTPUT_MESSAGE,\n CARDTYPES,\n FILTER_OPERATORS,\n FORM_FIELD_TYPES,\n ACTION_DETAILS_TABS,\n ROUTE_TYPES,\n PROXY_HEADER,\n PUPPET_FACT,\n PUPPETN400,\n KEYBOARD_KEYS,\n VALUE_LIMIT,\n COMPOUND_FILTER_AND,\n COMPOUND_FILTER_OR,\n ESTATE_REPORTING_FILTER_OPERATORS,\n TARGET_TYPE_OPTIONS,\n FILTER_UNION_OPTIONS,\n ALERT_TYPES,\n QUERY_NAMES,\n PERMISSION_OBJECTS,\n PERMISSION_ACTIONS,\n PERMISSION_INSTANCES,\n};\n\nexport const IN_PROGRESS_STATES: TaskStateV1[] = [\n 'WAITING',\n 'QUEUED',\n 'RUNNING',\n];\n\nexport const FAILED_STATES: TaskStateV1[] = [\n 'FAILED',\n 'ABORTED',\n 'DECLINED',\n 'TIMED_OUT',\n];\n\nexport const NEUTRAL_STATES: TaskStateV1[] = [\n 'PENDING_APPROVAL',\n 'APPROVED',\n 'CANCELLED',\n];\n\nexport const WEB_API_TOKEN_DEFAULT_AGE_IN_DAYS = 90;\n","/**\n *\n * Non-OpenAPI Ajax endpoints\n *\n */\n\nimport { PROXY_HEADER } from '@utils/constants';\nimport { ApiError, OpenAPI } from '@utils/api/cd4pe';\nimport log from 'loglevel';\nimport { LINKS } from '../../routes';\n\n/**\n * Login API\n */\n\nexport type LoginPayload = {\n email: string;\n passwd: string;\n};\n\nexport type LoginResponse = {\n domain: string;\n redirectTo: string;\n success: boolean;\n username: string;\n};\n\nexport type AjaxError = {\n error: {\n message: string;\n code: string;\n };\n};\n\nexport type SignUpPayload = {\n email: string;\n username: string;\n firstName: string;\n lastName: string;\n passwd: string;\n passwd2: string;\n companyName?: string;\n};\n\nexport type SignUpResponse = {\n domain: string;\n redirectTo: string;\n success: boolean;\n username: string;\n};\n\nexport type DeleteUserPayload = {\n usernameToDelete: string;\n};\n\nexport type SetSuperUserPayload = {\n username: string;\n superUser: 'true' | 'false';\n};\n\nexport const login = async (\n path: string,\n payload: LoginPayload,\n): Promise => {\n const response = await fetch(path, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n op: 'PfiLogin',\n content: payload,\n }),\n });\n\n const body: LoginResponse | AjaxError = await response.json();\n\n if (response.ok) {\n return body as LoginResponse;\n }\n\n return 'error' in body\n ? Promise.reject(new Error(body.error?.message))\n : Promise.reject(new Error('Unknown error'));\n};\n\nexport const performLogin = async (\n payload: LoginPayload,\n): Promise => login('/cd4pe/login', payload);\n\nexport const performRootLogin = async (\n payload: LoginPayload,\n): Promise => login('/cd4pe/root/login', payload);\n\nexport const signUp = async (\n payload: SignUpPayload,\n): Promise => {\n const response = await fetch('/cd4pe/signup', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n op: 'PfiSignup',\n content: payload,\n }),\n });\n\n const body: SignUpResponse | AjaxError = await response.json();\n\n if (response.ok) {\n return body as SignUpResponse;\n }\n\n return 'error' in body\n ? Promise.reject(new Error(body.error.message))\n : Promise.reject(new Error('Unknown error'));\n};\n\nexport const signOut = async (): Promise => {\n try {\n const response = await fetch(LINKS.cd4pe.logout, {\n method: 'post',\n headers: new Headers({\n 'content-type': 'application/json',\n [PROXY_HEADER.key]: PROXY_HEADER.value,\n }),\n credentials: 'include',\n mode: 'cors',\n body: JSON.stringify({\n op: 'PfiLogout',\n content: null,\n }),\n });\n\n OpenAPI.HEADERS = {};\n // ok is true if a successful status code was returned\n return response.ok;\n } catch (e) {\n log.error(e);\n }\n\n return false;\n};\n\nexport const deleteUser = async (\n payload: DeleteUserPayload,\n loggedInUsername: string,\n): Promise => {\n const { usernameToDelete } = payload;\n const query = new URLSearchParams(\n Object.entries({ userName: usernameToDelete, op: 'DeleteUserAccount' }),\n );\n\n const response = await fetch(\n `/${loggedInUsername}/ajax?${query.toString()}`,\n {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n );\n\n if (response.ok) {\n return undefined;\n }\n\n const body: AjaxError = await response.json();\n\n return 'error' in body\n ? Promise.reject(new ApiError(response, body.error.message))\n : Promise.reject(new ApiError(response, 'Unknown error'));\n};\n\nexport const setSuperUser = async (\n loggedInUsername: string,\n payload: SetSuperUserPayload,\n): Promise => {\n const query = new URLSearchParams(\n Object.entries({ ...payload, op: 'SetSuperUser' }),\n );\n\n const response = await fetch(\n `/${loggedInUsername}/ajax?${query.toString()}`,\n {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n );\n\n if (response.ok) {\n return undefined;\n }\n\n const body: AjaxError = await response.json();\n\n return 'error' in body\n ? Promise.reject(new ApiError(response, body.error.message))\n : Promise.reject(new ApiError(response, 'Unknown error'));\n};\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport {\n AuthTokensV1Service,\n Cd4peApiError,\n handleQueryRequest,\n MutationHook,\n QueryHook,\n} from '@utils/api/cd4pe';\nimport {\n AjaxError,\n LoginPayload,\n LoginResponse,\n performLogin,\n performRootLogin,\n signOut,\n} from './ajax';\n\nconst AUTH_GET_METHOD_TAG = 'getAuthMethod';\nconst AUTH_LIST_TOKENS_TAG = 'listAuthTokens';\n\n/**\n * useRevokeToken\n */\n\ntype UseRevokeToken = MutationHook<\n typeof AuthTokensV1Service,\n 'revokeTokenV1',\n Cd4peApiError\n>;\n\nexport type UseRevokeTokenResult = ReturnType;\n\nexport const useRevokeToken: UseRevokeToken = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) => handleQueryRequest(AuthTokensV1Service.revokeTokenV1(payload)),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([AUTH_LIST_TOKENS_TAG]);\n },\n },\n );\n};\n\n/**\n * useGetAuthMethod\n */\n\ntype UseGetAuthMethod = QueryHook<\n typeof AuthTokensV1Service,\n 'getAuthMethodV1',\n Cd4peApiError\n>;\n\n// eslint-disable-next-line import/prefer-default-export\nexport const useGetAuthMethod: UseGetAuthMethod = () =>\n useQuery([AUTH_GET_METHOD_TAG], async () =>\n handleQueryRequest(AuthTokensV1Service.getAuthMethodV1()),\n );\n\n/**\n *\n * Non-OpenAPI endpoints below\n *\n */\n\n/**\n * useLogin\n */\n\nexport const useLogin = () =>\n useMutation(performLogin);\n\n/**\n * useRootLogin\n */\n\nexport const useRootLogin = () =>\n useMutation(performRootLogin);\n\n/**\n * useSignOut\n */\n\nexport const useSignOut = () => {\n const queryClient = useQueryClient();\n return useMutation(signOut, {\n onSuccess: () => queryClient.removeQueries(),\n });\n};\n\n/**\n * useListTokensV1\n */\n\ntype UseListTokensV1 = QueryHook<\n typeof AuthTokensV1Service,\n 'listTokensV1',\n Cd4peApiError\n>;\n\nexport const useListTokensV1: UseListTokensV1 = (payload, options) =>\n useQuery(\n [AUTH_LIST_TOKENS_TAG, payload.userId],\n () => handleQueryRequest(AuthTokensV1Service.listTokensV1(payload)),\n options,\n );\n\n/**\n * useCreateTokenV1\n */\ntype UseCreateTokenV1 = MutationHook<\n typeof AuthTokensV1Service,\n 'createTokenV1',\n Cd4peApiError\n>;\n\nexport type UseCreateTokenV1Result = ReturnType;\n\nexport const useCreateTokenV1: UseCreateTokenV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) => handleQueryRequest(AuthTokensV1Service.createTokenV1(payload)),\n {\n onSuccess() {\n queryClient.invalidateQueries([AUTH_LIST_TOKENS_TAG]);\n },\n },\n );\n};\n","import { RootState } from '@state/store';\nimport { pathOr } from 'ramda';\n\nexport const isInitialized = (state: RootState) => state.session.initialized;\n// TODO: selectUser should return null instead of {}\nexport const selectUser = (\n state: RootState,\n): NonNullable | {} => state.session.user || {};\nexport const isCurrentWorkspacePending = (state: RootState) =>\n state.session.currentWorkspacePending;\nexport const selectWorkspaceName = (\n state: RootState,\n): NonNullable['name'] | null =>\n pathOr(null, ['session', 'currentWorkspace', 'name'])(state);\nexport const selectWorkspaceDomain = (\n state: RootState,\n): NonNullable['domain'] | null =>\n pathOr(null, ['session', 'currentWorkspace', 'domain'])(state);\n// TODO: selectWorkspace should return null instead of {}\nexport const selectWorkspace = (\n state: RootState,\n): NonNullable | {} =>\n state.session.currentWorkspace || {};\nexport const selectWorkspaces = (state: RootState) => state.session.workspaces;\n// TODO: selectFeatures should return null instead of {}\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\nimport { AppThunk } from '@state/store';\nimport { UserV1, WorkspaceV1 } from '@utils/api/cd4pe';\nimport { selectWorkspaces } from './selectors';\n\ninterface SessionState {\n user: UserV1 | null;\n workspaces: WorkspaceV1[];\n currentWorkspace: WorkspaceV1 | null;\n initialized: boolean;\n currentWorkspacePending: boolean;\n}\n\nconst initialState: SessionState = {\n user: null,\n workspaces: [],\n initialized: false,\n currentWorkspacePending: true,\n currentWorkspace: null,\n};\n\nconst slice = createSlice({\n name: 'session',\n initialState,\n reducers: {\n resetSession: () => initialState,\n setInitialized: (state, action: PayloadAction) => {\n state.initialized = action.payload;\n },\n setUser: (state, action: PayloadAction) => {\n state.user = action.payload;\n },\n setWorkspaces: (state, action: PayloadAction) => {\n state.workspaces = action.payload;\n },\n setCurrentWorkspace: (state, action: PayloadAction) => {\n state.currentWorkspace = action.payload;\n state.currentWorkspacePending = false;\n },\n renameWorkspace: (\n state,\n actions: PayloadAction<{ id: string; name: string }>,\n ) => {\n state.workspaces = state.workspaces.map((w) => ({\n ...w,\n name: w.domain === actions.payload.id ? actions.payload.name : w.name,\n }));\n },\n removeWorkspace(state, action: PayloadAction) {\n state.workspaces = state.workspaces.filter(\n (w) => w.domain !== action.payload,\n );\n },\n createWorkspace(state, action: PayloadAction) {\n state.workspaces = [...state.workspaces, action.payload];\n state.currentWorkspace = action.payload;\n state.currentWorkspacePending = false;\n },\n },\n});\n\nexport const sessionReducer = slice.reducer;\n\nconst { actions } = slice;\n\nexport const initializeApp =\n (\n user: UserV1,\n workspaces: Array = [],\n ): AppThunk> =>\n async (dispatch) => {\n dispatch(actions.setUser(user));\n dispatch(actions.setWorkspaces(workspaces));\n dispatch(actions.setInitialized(true));\n };\n\nexport const setCurrentWorkspace =\n (workspaceName: WorkspaceV1['name']): AppThunk =>\n (dispatch, getState) => {\n const workspaces = selectWorkspaces(getState());\n const workspace =\n workspaces.find(\n (w) =>\n w.name &&\n workspaceName &&\n w.name.toLowerCase() === workspaceName.toLowerCase(),\n ) || workspaces[0];\n\n dispatch(actions.setCurrentWorkspace(workspace || null));\n };\n\nexport default {\n actions,\n setCurrentWorkspace,\n initializeApp,\n};\n","import React from 'react';\nimport { Link, useNavigate, useSearchParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Heading, Link as PdsLink, Text } from '@puppet/react-components';\nimport { LINKS } from 'src/routes';\nimport { useSignOut } from '@services/cd4pe/auth';\nimport session from '@state/session/session';\nimport { useDispatch } from 'react-redux';\n\ninterface Props {\n code: '404' | '403' | 'generic';\n}\n\nconst AccessError = ({ code }: Props) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const [params] = useSearchParams();\n const signOut = useSignOut();\n const dispatch = useDispatch();\n\n const logout = async () => {\n const didSignOut = await signOut.mutateAsync();\n\n if (didSignOut) {\n dispatch(session.actions.resetSession());\n navigate(LINKS.login({}));\n }\n };\n\n return (\n
\n
\n \"Error\n
\n \n {params.get('msg') ?? t(`accessError.messages.${code}`)}\n \n {code === '404' && (\n {t(`accessError.messages.description.${code}`)}\n )}\n
\n {code !== 'generic' && (\n navigate(-1)}>\n {t('accessError.buttons.back')}\n \n )}\n {code === '403' && (\n \n {t('accessError.buttons.login')}\n \n )}\n \n {t('accessError.buttons.home')}\n \n
\n
\n );\n};\n\nexport default AccessError;\n","import AccessError from './AccessError';\n\nexport default AccessError;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport AccessError from '@components/AccessError';\n\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n this.state = { hasError: false };\n }\n\n static getDerivedStateFromError(error) {\n return { hasError: error };\n }\n\n componentDidCatch(error, errorInfo) {\n log.error(error, errorInfo);\n }\n\n render() {\n const { hasError } = this.state;\n const { children } = this.props;\n\n if (hasError) {\n return ;\n }\n\n return children;\n }\n}\n\nErrorBoundary.propTypes = {\n children: PropTypes.node.isRequired,\n};\n\nexport default ErrorBoundary;\n","import ErrorBoundary from './ErrorBoundary';\n\nexport default ErrorBoundary;\n","import { sessionReducer } from './session';\n\nexport default sessionReducer;\n","import { createSlice, nanoid, PayloadAction } from '@reduxjs/toolkit';\nimport { RootState } from '@state/store';\n\nexport type AlertType = 'Error' | 'Success' | 'Info' | 'Warning';\n\nexport interface AlertOptions {\n dismissAfter?: number | null;\n message: string;\n type: AlertType;\n closeable?: boolean;\n}\n\nexport interface ManagedAlertOptions extends AlertOptions {\n dismissAfter: number | null;\n closeable: boolean;\n id: string;\n}\n\nexport interface AlertsState {\n data: ManagedAlertOptions[];\n}\n\nconst initialState: AlertsState = {\n data: [],\n};\n\nconst slice = createSlice({\n name: 'ui/alerts',\n initialState,\n reducers: {\n createAlert: (state, action: PayloadAction) => {\n state.data = [\n ...state.data,\n {\n ...action.payload,\n closeable: action.payload.closeable ?? true,\n dismissAfter:\n action.payload.dismissAfter === undefined\n ? 5000\n : action.payload.dismissAfter,\n id: nanoid(),\n },\n ];\n },\n dismissAlert: (state, action: PayloadAction) => {\n state.data = state.data.filter((a) => a.id !== action.payload);\n },\n },\n});\n\nexport const uiAlertsReducer = slice.reducer;\n\nconst { actions } = slice;\n\nconst selector = (state: RootState) => state.ui.alerts.data;\n\nexport default {\n selector,\n actions,\n};\n","import { combineReducers } from 'redux';\nimport { uiAlertsReducer } from './alerts';\n\nexport default combineReducers({ alerts: uiAlertsReducer });\n","import { combineReducers } from 'redux';\nimport session from './session';\nimport ui from './ui';\n\nexport default combineReducers({ session, ui });\n","import { Action, configureStore } from '@reduxjs/toolkit';\nimport { ThunkAction } from 'redux-thunk';\nimport createDebounce from 'redux-debounced';\nimport reducer from '@state/.';\n\nconst store = configureStore({\n reducer,\n middleware: (getDefaultMiddleware) =>\n getDefaultMiddleware().concat(createDebounce()),\n devTools: process.env.NODE_ENV !== 'production',\n});\n\nexport type AppDispatch = typeof store.dispatch;\nexport type RootState = ReturnType;\nexport type AppThunk = ThunkAction<\n ReturnType,\n RootState,\n unknown,\n Action\n>;\n\nexport default store;\n","import React from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\n\ninterface Props {\n path: string;\n traceId?: string;\n}\n\nexport const DEFAULT_TRACE_ID = '00000000000000000000000000000000';\n\nconst CommonDetails = ({ path, traceId = undefined }: Props) => {\n const { t } = useTranslation('common');\n\n return (\n
\n

\n ]}\n />\n

\n {traceId && traceId !== DEFAULT_TRACE_ID && (\n

\n ]}\n />\n

\n )}\n
\n );\n};\n\nexport default CommonDetails;\n","import React, { PropsWithChildren } from 'react';\nimport { Icon } from '@puppet/react-components';\n\ninterface Props {\n icon: string;\n className?: string;\n}\n\nconst ErrorWrapper = ({\n icon,\n children,\n className = '',\n}: PropsWithChildren) => (\n
\n \n
{children}
\n
\n);\n\nexport default ErrorWrapper;\n","import React, { PropsWithChildren } from 'react';\n\ninterface Props {\n status: number;\n}\n\nconst ErrorTitle = ({ status, children }: PropsWithChildren) => (\n
\n {status}: {children}\n
\n);\n\nexport default ErrorTitle;\n","import Cd4peError from './Cd4peError';\n\nexport default Cd4peError;\n","import React from 'react';\nimport {\n Cd4peApiError,\n isBadRequestError,\n isInternalError,\n isUnknownCd4peError,\n} from '@utils/api/cd4pe';\nimport { Trans, useTranslation } from 'react-i18next';\nimport CommonDetails from './CommonDetails';\nimport ErrorWrapper from './ErrorWrapper';\nimport ErrorTitle from './ErrorTitle';\n\ninterface Props {\n error?: Cd4peApiError | null;\n}\n\nconst Cd4peError = ({ error = null }: Props) => {\n const { t } = useTranslation('common');\n\n if (error === undefined || error === null) {\n return null;\n }\n\n if (isUnknownCd4peError(error)) {\n return (\n \n {error.message}\n \n \n );\n }\n\n if (isBadRequestError(error)) {\n return (\n \n {error.body.message}\n
    \n {error.body.errors.map((e) => (\n
  • {e.message}
  • \n ))}\n
\n \n
\n );\n }\n\n if (isInternalError(error)) {\n return (\n \n {error.body.message}\n
    \n
  • \n ]}\n />\n
  • \n
\n \n
\n );\n }\n\n return (\n \n {error.body.message}\n \n \n );\n};\n\nexport default Cd4peError;\n","const getPathVersion = () => {\n const version = process.env.TEAMS_UI_VERSION || 'latest';\n\n const versionMatch4x = version.match(/^4.*/);\n if (versionMatch4x) {\n return '4.x';\n }\n const versionMatch5x = version.match(/^5.*/);\n if (versionMatch5x) {\n return '5.x';\n }\n return version;\n};\n\nconst docsLinks = () => {\n const pathVersion = getPathVersion();\n return {\n sidebarDocumentation: `https://puppet.com/docs/continuous-delivery/${pathVersion}/cd_user_guide.html`,\n preBuiltJobsReference: `https://puppet.com/docs/continuous-delivery/${pathVersion}/example_jobs.html#pre_built_jobs_reference`,\n webhookTroubleshooting: `https://puppet.com/docs/continuous-delivery/${pathVersion}/cd_troubleshooting.html#webhook`,\n jobTemplateSecrets: `https://puppet.com/docs/continuous-delivery/${pathVersion}/example_jobs.html`,\n impactAnalysis: `https://www.puppet.com/docs/continuous-delivery/${pathVersion}/impact_analysis.html`,\n impactAnalysisProduct: `https://www.puppet.com/products/impact-analysis?utm_source=puppet&utm_medium=in-app&utm_campaign=pup-glb-2024-products-impact-analysis`,\n configureImpactAnalysis: `https://puppet.com/docs/continuous-delivery/${pathVersion}/configure_impact_analysis.html#configure_impact_analysis`,\n addIntegration: `https://puppet.com/docs/continuous-delivery/${pathVersion}/integrations.html#integrations`,\n learnAboutPrefix: `https://www.puppet.com/docs/continuous-delivery/${pathVersion}/integrations.html#integrations-status-notification-prefix`,\n integrateBitbucketCloud: `https://puppet.com/docs/continuous-delivery/${pathVersion}/integrations.html#integrate_bitbucket_cloud`,\n integrateGithub: `https://puppet.com/docs/continuous-delivery/${pathVersion}/integrations.html#integrate_github`,\n integrateAzureDevOps: `https://puppet.com/docs/continuous-delivery/${pathVersion}/integrations.html#integrate_azure_devops`,\n permissionsReference: `https://puppet.com/docs/continuous-delivery/${pathVersion}/permissions_reference.html`,\n addHardware: `https://www.puppet.com/docs/continuous-delivery/${pathVersion}/hardware_puppet_agent.html`,\n pipelinesAsCode: `https://www.puppet.com/docs/continuous-delivery/${pathVersion}/pipelines_code.html`,\n puppetLandingPage: `https://www.puppet.com`,\n };\n};\n\nexport default docsLinks;\n","import CopyrightFooter from './CopyrightFooter';\n\nexport default CopyrightFooter;\n","import React from 'react';\nimport { Logo, Text, Link as PdsLink } from '@puppet/react-components';\nimport { Trans, useTranslation } from 'react-i18next';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\n\nconst CopyrightFooter = () => {\n const { t } = useTranslation('codeDelivery');\n return (\n
\n \n \n ,\n ]}\n />\n \n
\n );\n};\n\nexport default CopyrightFooter;\n","import FormError from './FormError';\n\nexport default FormError;\n","import React from 'react';\nimport { Icon } from '@puppet/react-components';\n\ntype Props = {\n message: string;\n};\n\nconst FormError = ({ message }: Props) => {\n return (\n
\n \n
{message}
\n
\n );\n};\n\nexport default FormError;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Form as PdsForm } from '@puppet/react-components';\nimport FormError from '@components/FormError';\n\ntype Props = {\n type: 'standard' | 'ldap' | 'root';\n submitting: boolean;\n onSubmit: Function;\n isError: boolean;\n};\n\nconst Form = ({ type, onSubmit, submitting, isError }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const [showPassword, setShowPassword] = useState(false);\n\n return (\n <>\n \n \n setShowPassword(!showPassword)}\n data-testid=\"login-form-password-field\"\n />\n \n {isError && (\n \n )}\n \n );\n};\n\nexport default Form;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Link as PdsLink } from '@puppet/react-components';\nimport Form from './Form';\n\ntype Props = {\n submitting: boolean;\n onSubmit: Function;\n onChangeMethod: Function;\n isError: boolean;\n method: 'STANDARD' | 'LDAP' | 'SAML';\n};\n\nconst RootForm = ({\n onSubmit,\n submitting,\n isError,\n onChangeMethod,\n method,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n return (\n <>\n \n
\n \n {t(`login.form.root.links.${method.toLowerCase()}`)}\n \n
\n \n );\n};\n\nexport default RootForm;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { useTranslation, Trans } from 'react-i18next';\nimport { Link as PdsLink, Text } from '@puppet/react-components';\nimport { LINKS } from 'src/routes';\nimport Form from './Form';\n\ntype Props = {\n submitting: boolean;\n onSubmit: Function;\n isError: boolean;\n};\n\nconst StandardForm = ({ onSubmit, submitting, isError }: Props) => {\n const { t } = useTranslation('codeDelivery');\n\n return (\n <>\n \n
\n \n {t('login.form.standard.links.forgotPassword')}\n \n
\n ,\n ,\n ]}\n />\n
\n
\n \n );\n};\n\nexport default StandardForm;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Link as PdsLink } from '@puppet/react-components';\nimport Form from './Form';\n\ntype Props = {\n submitting: boolean;\n onSubmit: Function;\n onChangeMethod: Function;\n isError: boolean;\n};\n\nconst LdapForm = ({ onSubmit, submitting, isError, onChangeMethod }: Props) => {\n const { t } = useTranslation('codeDelivery');\n return (\n <>\n \n
\n \n {t('login.form.ldap.links.root')}\n \n
\n \n );\n};\n\nexport default LdapForm;\n","import React from 'react';\nimport { Link } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Button, Link as PdsLink } from '@puppet/react-components';\n\ntype Props = {\n ssoUrl: string;\n onChangeMethod: Function;\n};\n\nconst SamlForm = ({ ssoUrl, onChangeMethod }: Props) => {\n const { t } = useTranslation('codeDelivery');\n\n return (\n <>\n \n {t('login.form.saml.button')}\n \n
\n \n {t('login.form.saml.links.root')}\n \n
\n \n );\n};\n\nexport default SamlForm;\n","import React, { useEffect, useState } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Loading } from '@puppet/react-components';\nimport { Authentication } from '@puppet/react-layouts';\nimport Cd4peError from '@components/Cd4peError';\nimport { useGetAuthMethod, useLogin, useRootLogin } from '@services/cd4pe/auth';\nimport CopyrightFooter from '@components/CopyrightFooter';\nimport RootForm from './Forms/RootForm';\nimport StandardForm from './Forms/StandardForm';\nimport LdapForm from './Forms/LdapForm';\nimport SamlForm from './Forms/SamlForm';\n\nconst Login = () => {\n const { search } = useLocation();\n const { t } = useTranslation('codeDelivery');\n const { data: auth, error, isLoading } = useGetAuthMethod(undefined);\n const login = useLogin();\n const rootLogin = useRootLogin();\n const [loginMethod, setLoginMethod] = useState('');\n const navigate = useNavigate();\n\n useEffect(() => {\n const params = new URLSearchParams(search);\n const success = login.data?.success || rootLogin?.data?.success;\n const redirectURL =\n params.get('url') ||\n login?.data?.redirectTo ||\n rootLogin?.data?.redirectTo;\n\n if (success && redirectURL) {\n navigate(redirectURL);\n }\n }, [search, login.data, rootLogin?.data, navigate]);\n\n useEffect(() => {\n if (auth?.method) {\n setLoginMethod(auth.method);\n return;\n }\n\n if (error) {\n setLoginMethod('STANDARD');\n }\n }, [auth?.method, error]);\n\n const handleChangeMethod = (e: Event) => {\n e.preventDefault();\n setLoginMethod(auth?.method ?? 'STANDARD');\n };\n\n const handleChangeToRoot = (e: Event) => {\n e.preventDefault();\n setLoginMethod('ROOT');\n };\n\n return (\n }\n >\n {isLoading && }\n {loginMethod === 'STANDARD' && (\n \n )}\n {loginMethod === 'LDAP' && (\n \n )}\n {loginMethod === 'SAML' && (\n \n )}\n {loginMethod === 'ROOT' && (\n \n )}\n \n \n );\n};\n\nexport default Login;\n","import Login from './Login';\n\nexport default Login;\n","import { useMutation, useQuery } from '@tanstack/react-query';\nimport {\n ApiError,\n Cd4peApiError,\n handleQueryRequest,\n ListUsersResponseV1,\n MutationHook,\n QueryHook,\n QueryHookNoPayload,\n UserScopeV1,\n UserV1Service,\n} from '@utils/api/cd4pe';\nimport {\n deleteUser,\n DeleteUserPayload,\n setSuperUser,\n SetSuperUserPayload,\n signUp,\n SignUpPayload,\n SignUpResponse,\n AjaxError,\n} from '@services/cd4pe/ajax';\nimport queryClient from '@services/queryClient';\n\nexport const GET_USER_QUERY_TAG = 'getUserV1';\nexport const LIST_USERS_QUERY_TAG = 'listUsersByPrefix';\n\n/**\n * useForgotPasswordV1\n */\ntype UseForgotPasswordV1 = MutationHook<\n typeof UserV1Service,\n 'forgotPasswordV1',\n Cd4peApiError\n>;\n\nexport const useForgotPasswordV1: UseForgotPasswordV1 = () => {\n return useMutation((payload) =>\n handleQueryRequest(UserV1Service.forgotPasswordV1(payload)),\n );\n};\n\n/**\n * useResetPasswordV1\n */\ntype UseResetPasswordV1 = MutationHook<\n typeof UserV1Service,\n 'resetPasswordV1',\n Cd4peApiError\n>;\n\nexport const useResetPasswordV1: UseResetPasswordV1 = () => {\n return useMutation((payload) =>\n handleQueryRequest(UserV1Service.resetPasswordV1(payload)),\n );\n};\n\n/**\n * useGetUserV1\n */\ntype UseGetUserV1 = QueryHookNoPayload<\n typeof UserV1Service,\n 'getUserV1',\n Cd4peApiError\n>;\n\nexport const useGetUserV1: UseGetUserV1 = (options) =>\n useQuery(\n [GET_USER_QUERY_TAG],\n async () => handleQueryRequest(UserV1Service.getUserV1()),\n options,\n );\n\nexport const useSignUpV1 = () =>\n useMutation(signUp);\n\n/**\n * useUpdateUserV1\n */\ntype UseUpdateUserV1 = MutationHook<\n typeof UserV1Service,\n 'updateUserV1',\n Cd4peApiError\n>;\n\nexport const useUpdateUserV1: UseUpdateUserV1 = () => {\n return useMutation(\n (payload) => handleQueryRequest(UserV1Service.updateUserV1(payload)),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([GET_USER_QUERY_TAG]);\n queryClient.invalidateQueries([LIST_USERS_QUERY_TAG, '', 'GLOBAL']);\n },\n },\n );\n};\n\n/**\n * useListUsersByPrefixV1\n */\ntype UseListUsersV1 = QueryHook<\n typeof UserV1Service,\n 'listUsersV1',\n Cd4peApiError\n>;\n\nexport const useListUsersByPrefix: UseListUsersV1 = (payload: {\n workspaceId: string;\n pageSize?: number;\n prefix?: string;\n scope?: UserScopeV1;\n}) => {\n return useQuery(\n [LIST_USERS_QUERY_TAG, payload.prefix, payload.scope],\n () => handleQueryRequest(UserV1Service.listUsersV1(payload)),\n );\n};\n\nexport const useDeleteUser = (loggedInUsername: string) => {\n return useMutation(\n (payload) => handleQueryRequest(deleteUser(payload, loggedInUsername)),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([LIST_USERS_QUERY_TAG]);\n },\n },\n );\n};\n\nexport const useSetSuperUser = (loggedInUsername: string) => {\n return useMutation(\n (payload) => handleQueryRequest(setSuperUser(loggedInUsername, payload)),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([LIST_USERS_QUERY_TAG]);\n },\n },\n );\n};\n","import { Form } from '@puppet/react-components';\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SignupRequestV1 } from '@puppet/cd4pe-client-ts';\n\nexport type SignUpFormValues = {\n confirmPassword: string;\n} & SignupRequestV1;\n\nconst SignUpForm = ({\n isLoading,\n onSubmit,\n error,\n}: {\n isLoading: boolean;\n onSubmit: (values: SignUpFormValues) => void;\n error: string;\n}) => {\n const { t } = useTranslation('codeDelivery');\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n\n return (\n \n \n \n \n \n
\n \n setShowPassword(!showPassword)}\n error={error}\n requiredFieldMessage={t('signup.form.fields.password.required')}\n data-testid=\"signup-form-password-field\"\n />\n \n setShowConfirmPassword(!showConfirmPassword)\n }\n error={error}\n requiredFieldMessage={t('signup.form.fields.confirmPassword.required')}\n data-testid=\"signup-form-confirm-password-field\"\n />\n \n );\n};\n\nexport default SignUpForm;\n","import React, { useState } from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Link as PdsLink, Text } from '@puppet/react-components';\nimport { Authentication } from '@puppet/react-layouts';\nimport CopyrightFooter from '@components/CopyrightFooter';\nimport FormError from '@components/FormError';\nimport { useSignUpV1 } from '@services/cd4pe/users';\nimport { LINKS } from 'src/routes';\nimport SignUpForm, { SignUpFormValues } from './components/SignUpForm';\n\nconst SignUp = () => {\n const { t } = useTranslation('codeDelivery');\n const [error, setError] = useState('');\n const navigate = useNavigate();\n const signUp = useSignUpV1();\n\n const onSubmit = ({\n firstName,\n lastName,\n companyName,\n username,\n email,\n password,\n confirmPassword,\n }: SignUpFormValues) => {\n if (password !== confirmPassword) {\n setError(t('signup.form.field.password.error'));\n return;\n }\n\n signUp.mutate(\n {\n firstName: firstName!,\n lastName: lastName!,\n username,\n email,\n passwd: password,\n passwd2: confirmPassword,\n ...(companyName && { companyName }),\n },\n {\n onSuccess: () => {\n navigate(\n LINKS.username.chooseWorkspace({\n path: { username },\n }),\n );\n },\n },\n );\n };\n\n return (\n }\n >\n \n {t('signup.description')}\n \n \n {signUp.error && }\n
\n ,\n ,\n ]}\n />\n
\n \n );\n};\n\nexport default SignUp;\n","import SignUp from './SignUp';\n\nexport default SignUp;\n","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\nimport { AppDispatch, RootState } from '@state/store';\n\nexport const useAppDispatch = () => useDispatch();\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Alert as DsAlert } from '@puppet/react-components';\nimport alerts, { AlertType } from '@state/ui/alerts';\nimport { useAppDispatch } from '@hooks/redux';\n\ninterface Props {\n dismissAfter: number | null;\n type: AlertType;\n uuid: string;\n closeable: boolean;\n}\n\nconst getAlertType = (alertType: AlertType) => {\n switch (alertType) {\n case 'Success':\n return 'success';\n case 'Error':\n return 'danger';\n case 'Info':\n return 'info';\n case 'Warning':\n return 'warning';\n default:\n throw new Error(`${alertType} is not a valid alert type.`);\n }\n};\n\nconst Alert = ({\n dismissAfter,\n type,\n uuid,\n closeable,\n children,\n}: PropsWithChildren) => {\n const [timer, setTimer] = useState>();\n const dispatch = useAppDispatch();\n\n useEffect(() => {\n if (timer) {\n clearTimeout(timer);\n }\n\n if (dismissAfter !== null) {\n setTimer(\n setTimeout(\n () => dispatch(alerts.actions.dismissAlert(uuid)),\n dismissAfter,\n ),\n );\n }\n\n return () => {\n if (timer) {\n clearTimeout(timer);\n }\n };\n }, [uuid, dismissAfter]);\n\n return (\n dispatch(alerts.actions.dismissAlert(uuid))}\n >\n {children}\n \n );\n};\n\nexport default Alert;\n","import React, { useEffect, useRef } from 'react';\nimport ReactDOM from 'react-dom';\nimport { Alerts as DsAlerts } from '@puppet/react-components';\nimport uiAlerts, { ManagedAlertOptions } from '@state/ui/alerts';\nimport { useAppSelector } from '@hooks/redux';\nimport Alert from './Alert';\n\nconst ALERTS_ROOT_ID = 'alerts-root';\n\nconst generateAlerts = (alert: ManagedAlertOptions) => (\n \n {alert.message}\n \n);\n\nconst Alerts = () => {\n const alerts = useAppSelector(uiAlerts.selector);\n const element = useRef(document.createElement('div'));\n\n element.current.setAttribute('id', ALERTS_ROOT_ID);\n\n useEffect(() => {\n document.body.appendChild(element.current);\n\n const mountedElement = element.current;\n\n return () => {\n if (mountedElement) {\n mountedElement.remove();\n }\n };\n }, []);\n\n const renderAlerts = () => {alerts.map(generateAlerts)};\n\n return ReactDOM.createPortal(renderAlerts(), element.current);\n};\n\nexport default Alerts;\n","import Alerts from './Alerts';\n\nexport default Alerts;\n","import PageLoader, { PAGE_LOADER_TEST_ID } from './PageLoader';\n\nexport { PAGE_LOADER_TEST_ID };\nexport default PageLoader;\n","import React from 'react';\nimport { Loading } from '@puppet/react-components';\n\nexport const PAGE_LOADER_TEST_ID = 'page-loader-testid';\n\nconst PageLoader = () => (\n
\n \n
\n);\n\nexport default PageLoader;\n","import { getAuthCookie } from '@utils/api/helpers';\nimport { OpenAPI } from '@puppet/cd4pe-client-ts';\nimport { useGetUserV1 } from '@services/cd4pe/users';\n\nconst useAuth = () => {\n const authCookie = getAuthCookie();\n\n if (authCookie) {\n OpenAPI.HEADERS = {\n ...OpenAPI.HEADERS,\n authorization: authCookie,\n Accept: '*/*',\n };\n }\n\n const queryEnabled = !!authCookie;\n const { isLoading, isError, data } = useGetUserV1({\n enabled: queryEnabled,\n });\n\n return {\n user: data?.user,\n workspaces: data?.workspaces,\n isLoading,\n isQueryEnabled: queryEnabled,\n isError,\n };\n};\n\nexport default useAuth;\n","import ProtectedRoute from './ProtectedRoute';\n\nexport default ProtectedRoute;\n","import { isInitialized as isInitializedSelector } from '@state/session/selectors';\nimport { Navigate, Outlet, useLocation, useParams } from 'react-router-dom';\nimport React from 'react';\nimport { useAppSelector } from '@hooks/redux';\nimport { useDispatch } from 'react-redux';\nimport { initializeApp } from '@state/session/session';\nimport PageLoader from '@components/PageLoader';\nimport { LINKS } from 'src/routes';\nimport AccessError from '@components/AccessError';\nimport useAuth from '@hooks/useAuth';\n\nconst getLoginRoute = (locationPathname: string) => {\n if (\n locationPathname !== '' &&\n locationPathname !== '/' &&\n locationPathname !== LINKS.login({})\n ) {\n return LINKS.login({ query: { url: locationPathname } });\n }\n\n return LINKS.login({});\n};\n\ninterface ProtectedRouteProps {\n onlyAllowSuperuser?: boolean;\n}\n\nconst ProtectedRoute = ({ onlyAllowSuperuser }: ProtectedRouteProps) => {\n const { user, workspaces, isLoading, isQueryEnabled, isError } = useAuth();\n const { workspace, username } = useParams<'workspace' | 'username'>();\n const isInitialized = useAppSelector(isInitializedSelector);\n const { pathname } = useLocation();\n const dispatch = useDispatch();\n\n if (isError || !isQueryEnabled) {\n return ;\n }\n\n if (isLoading) {\n return ;\n }\n\n if (\n (username && username !== user?.userName) ||\n (workspace && !workspaces?.find((w) => w.name === workspace))\n ) {\n return ;\n }\n\n if (onlyAllowSuperuser && user?.superUser === false) {\n return ;\n }\n\n if (!isInitialized && user) {\n dispatch(initializeApp(user, workspaces));\n }\n\n return ;\n};\n\nexport default ProtectedRoute;\n","import { LINKS } from 'src/routes';\n\nexport default ({ workspaceName, userName }) => {\n if (workspaceName) {\n return LINKS.codeDelivery.listRepositories({\n path: { workspace: workspaceName },\n });\n }\n\n if (userName) {\n return LINKS.username.profile({ path: { username: userName } });\n }\n\n return '/';\n};\n","import WorkspaceRedirect from './WorkspaceRedirect';\n\nexport default WorkspaceRedirect;\n","import React, { useEffect, useMemo } from 'react';\nimport {\n Location,\n Navigate,\n Outlet,\n useLocation,\n useParams,\n} from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n isCurrentWorkspacePending,\n selectUser,\n selectWorkspaces,\n selectWorkspaceName,\n} from '@state/session/selectors';\nimport getDefaultRoute from '@utils/getDefaultRoute';\nimport session from '@state/session/session';\nimport { WorkspaceV1 } from '@utils/api/cd4pe';\nimport { UserV1 } from '@puppet/cd4pe-client-ts';\nimport { LINKS } from '../../routes';\n\ninterface CheckForRedirect {\n location: Location;\n workspaces: WorkspaceV1[];\n workspaceUrlParam?: string;\n user: UserV1;\n}\n\nconst userRequiresWorkspace = (user: UserV1, workspaces: WorkspaceV1[]) =>\n !user.rootUser && workspaces.length <= 0;\n\nconst checkForRedirect = ({\n location,\n workspaces,\n workspaceUrlParam,\n user,\n}: CheckForRedirect) => {\n if (workspaces?.length > 0) {\n let workspaceName;\n // Check if we have workspaces in state and the location is at the root.\n // We need to redirect to the default view of the first workspace.\n if (location.pathname === '/') {\n workspaceName = workspaces?.[0]?.name;\n }\n\n // Check if we have a workspace param that is available in state, and the location is at the root of the workspace.\n // We need to redirect to the default view of this workspace param.\n if (\n workspaceUrlParam &&\n workspaces.some(({ name }) => workspaceUrlParam === name) &&\n location.pathname === `/${workspaceUrlParam}`\n ) {\n workspaceName = workspaceUrlParam;\n }\n\n if (workspaceName) {\n return getDefaultRoute({\n workspaceName,\n userName: user.userName,\n });\n }\n }\n\n const chooseWorkspaceLink = LINKS.username.chooseWorkspace({\n path: { username: user.userName! },\n });\n\n if (\n userRequiresWorkspace(user, workspaces) &&\n location.pathname !== chooseWorkspaceLink\n ) {\n return chooseWorkspaceLink;\n }\n\n // root user has deleted last workspace\n if (\n user.rootUser &&\n workspaces.length <= 0 &&\n (location.pathname === '/' || location.pathname.endsWith('/workspace'))\n ) {\n return LINKS.cd4pe.root;\n }\n\n return null;\n};\n\nconst WorkspaceRedirect = () => {\n const { workspace: workspaceUrlParam } = useParams();\n const location = useLocation();\n const dispatch = useDispatch();\n const workspaces = useSelector(selectWorkspaces);\n const currentWorkspace = useSelector(selectWorkspaceName);\n const workspaceStatePending = useSelector(isCurrentWorkspacePending);\n const user = useSelector(selectUser);\n\n useEffect(() => {\n if (workspaceUrlParam && currentWorkspace !== workspaceUrlParam) {\n dispatch(session.setCurrentWorkspace(workspaceUrlParam));\n }\n }, [dispatch, workspaceUrlParam, currentWorkspace]);\n\n /*\n Here we want to prevent rendering views until we have first tried to set the current workspace in state. This will stop cases\n where views will render empty or incorrect data on screen before the workspace state is set.\n\n This solution is overly simplistic based on the number of cases where the workspace can be valid or not and we will need to revisit.\n There are multiple scenarios we may want to explicitly check in the future which result in no valid workspace name being set in state:\n\n - Non workspace path: e.g /login.\n - User path: e.g /userName/manage-workspaces\n - Root path: e.g /root/settings.\n - Incorrect workspace name: e.g /wrongWorkspace/nodes. CD4PE allows this case, but we may want to use a redirect to 404 for this scenario.\n */\n\n const redirect = useMemo(\n () =>\n checkForRedirect({\n location,\n workspaces,\n workspaceUrlParam,\n user,\n }),\n [location, workspaces, workspaceUrlParam, user],\n );\n\n if (workspaceUrlParam && workspaceStatePending) {\n return null;\n }\n\n if (redirect) {\n return ;\n }\n\n return ;\n};\n\nexport default WorkspaceRedirect;\n","import PropTypes from 'prop-types';\n\nconst propTypes = {\n enable: PropTypes.bool.isRequired,\n children: PropTypes.node.isRequired,\n};\n\nconst ConditionalRender = ({ enable, children }) => {\n if (enable) {\n return children;\n }\n\n return null;\n};\n\nConditionalRender.propTypes = propTypes;\n\nexport default ConditionalRender;\n","import ConditionalRender from './ConditionalRender';\n\nexport default ConditionalRender;\n","import ForgotPassword from './ForgotPassword';\n\nexport default ForgotPassword;\n","import React, { useState } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Text, Form, Link as PdsLink } from '@puppet/react-components';\nimport { Authentication } from '@puppet/react-layouts';\nimport CopyrightFooter from '@components/CopyrightFooter';\nimport { useForgotPasswordV1 } from '@services/cd4pe/users';\nimport ConditionalRender from '@inventory/components/ConditionalRender';\nimport { LINKS } from 'src/routes';\nimport { Link } from 'react-router-dom';\nimport FormError from '@components/FormError';\n\nconst ForgotPassword = () => {\n const { t } = useTranslation('codeDelivery');\n const submitForgotPassword = useForgotPasswordV1();\n const [formSubmitted, setFormSubmitted] = useState(false);\n\n const onSubmit = async (formData: { email: string }) => {\n submitForgotPassword.mutate(\n {\n requestBody: { email: formData.email },\n },\n {\n onSuccess: () => {\n setFormSubmitted(true);\n },\n },\n );\n };\n\n return (\n }\n >\n \n \n {t('forgotPassword.submitted.description')}\n \n \n \n \n {t('forgotPassword.description')}\n \n {\n onSubmit(values);\n }}\n submitting={submitForgotPassword.isLoading}\n >\n \n \n {submitForgotPassword.error && (\n \n )}\n \n
\n ,\n ,\n ]}\n />\n
\n \n );\n};\n\nexport default ForgotPassword;\n","import ResetPassword from './ResetPassword';\n\nexport default ResetPassword;\n","import React, { useState } from 'react';\nimport { Link, useSearchParams } from 'react-router-dom';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Text, Form, Link as PdsLink } from '@puppet/react-components';\nimport { Authentication } from '@puppet/react-layouts';\nimport { useResetPasswordV1 } from '@services/cd4pe/users';\nimport ConditionalRender from '@inventory/components/ConditionalRender';\nimport CopyrightFooter from '@components/CopyrightFooter';\nimport FormError from '@components/FormError';\nimport { LINKS } from 'src/routes';\n\nconst ResetPassword = () => {\n const { t } = useTranslation('codeDelivery');\n const submitResetPassword = useResetPasswordV1();\n const [formSubmitted, setFormSubmitted] = useState(false);\n const [errorValue, setErrorValue] = useState('');\n const [urlParams] = useSearchParams();\n const token = urlParams.get('token');\n const [showPassword, setShowPassword] = useState(false);\n\n const onSubmit = async (formData: {\n newPassword: string;\n confirmPassword: string;\n }) => {\n if (formData.newPassword === formData.confirmPassword) {\n setErrorValue('');\n submitResetPassword.mutate(\n {\n requestBody: {\n newPassword: formData.newPassword,\n confirmPassword: formData.confirmPassword,\n token: String(token),\n },\n },\n {\n onSuccess: () => {\n setFormSubmitted(true);\n },\n },\n );\n } else {\n setErrorValue(t('resetPassword.form.error.password.mismatch'));\n }\n };\n\n return (\n }\n >\n \n \n {t('resetPassword.submitted.description')}\n \n
\n ,\n ,\n ]}\n />\n
\n
\n \n \n {t('resetPassword.description')}\n \n {\n onSubmit(values);\n }}\n >\n setShowPassword(!showPassword)}\n data-testid=\"reset-password-password-field\"\n />\n setShowPassword(!showPassword)}\n data-testid=\"reset-password-confirm-password-field\"\n />\n \n {submitResetPassword.error && !errorValue && (\n \n )}\n {errorValue && }\n
\n ,\n ,\n ]}\n />\n
\n
\n \n );\n};\n\nexport default ResetPassword;\n","import PropTypes from 'prop-types';\n\nconst propTypes = {\n enable: PropTypes.bool.isRequired,\n children: PropTypes.node.isRequired,\n};\n\nconst ConditionalRender = ({ enable, children }) => {\n if (enable) {\n return children;\n }\n\n return null;\n};\n\nConditionalRender.propTypes = propTypes;\n\nexport default ConditionalRender;\n","import ConditionalRender from './ConditionalRender';\n\nexport default ConditionalRender;\n","import React, { PropsWithChildren } from 'react';\nimport classnames from 'classnames';\nimport { Card } from '@puppet/react-components';\n\ntype Props = {\n className?: string;\n footer?: React.ComponentPropsWithRef<'div'>;\n} & PropsWithChildren>;\n\nconst LandingPage = ({ children, className = '', footer, ...props }: Props) => (\n
\n {children}\n {footer}\n
\n);\n\nexport default LandingPage;\n","import LandingPage from './LandingPage';\n\nexport default LandingPage;\n","import { useMutation, useQueryClient } from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n handleQueryRequest,\n MutationHook,\n WorkspacesV1Service,\n} from '@utils/api/cd4pe';\n\n/**\n * useUpdateWorkspaceV1\n */\n\ntype UseUpdateWorkspaceV1 = MutationHook<\n typeof WorkspacesV1Service,\n 'updateWorkspaceV1',\n Cd4peApiError\n>;\n\nconst useInvalidateUserQuery = () => {\n const queryClient = useQueryClient();\n return () => queryClient.invalidateQueries({ queryKey: ['getUserV1'] });\n};\n\nexport const useUpdateWorkspaceV1: UseUpdateWorkspaceV1 = () =>\n useMutation(\n (payload) =>\n handleQueryRequest(WorkspacesV1Service.updateWorkspaceV1(payload)),\n {\n onSuccess: useInvalidateUserQuery(),\n },\n );\n\n/**\n * useDeleteWorkspaceV1\n */\n\ntype UseDeleteWorkspaceV1 = MutationHook<\n typeof WorkspacesV1Service,\n 'deleteWorkspaceV1',\n Cd4peApiError\n>;\n\nexport const useDeleteWorkspaceV1: UseDeleteWorkspaceV1 = () =>\n useMutation(\n (payload) =>\n handleQueryRequest(WorkspacesV1Service.deleteWorkspaceV1(payload)),\n {\n onSuccess: useInvalidateUserQuery(),\n },\n );\n\n/**\n * useCreateWorkspaceV1\n */\n\ntype UseCreateWorkspaceV1 = MutationHook<\n typeof WorkspacesV1Service,\n 'createWorkspaceV1',\n Cd4peApiError\n>;\n\nexport const useCreateWorkspaceV1: UseCreateWorkspaceV1 = () =>\n useMutation(\n (payload) =>\n handleQueryRequest(WorkspacesV1Service.createWorkspaceV1(payload)),\n {\n onSuccess: useInvalidateUserQuery(),\n },\n );\n","import React from 'react';\nimport { Heading, Text, Form } from '@puppet/react-components';\nimport Cd4peError from '@components/Cd4peError';\nimport ConditionalRender from '@components/ConditionalRender';\nimport { useAppDispatch } from '@hooks/redux';\nimport { useNavigate } from 'react-router-dom';\nimport { useCreateWorkspaceV1 } from '@services/cd4pe/workspaces';\nimport session from '@state/session/session';\nimport { LINKS } from 'src/routes';\nimport { useTranslation } from 'react-i18next';\n\ninterface FormValues {\n newWorkspaceName: string;\n}\n\nconst ChooseWorkspaceForm = () => {\n const { t } = useTranslation('codeDelivery');\n const [newName, setNewName] = React.useState('');\n const appDispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const { mutate, isLoading, isError, error } = useCreateWorkspaceV1();\n\n const onSubmit = (values: FormValues) => {\n mutate(\n {\n requestBody: { name: values.newWorkspaceName },\n },\n {\n onSuccess: (response) => {\n appDispatch(session.actions.createWorkspace(response));\n\n navigate(\n LINKS.settings.workspace({\n path: { workspace: response.name },\n }),\n );\n },\n },\n );\n };\n\n return (\n <>\n {t('chooseWorkspace.new.header')}\n \n {t('chooseWorkspace.new.description')}\n \n {\n setNewName(values.newWorkspaceName?.replaceAll(' ', '-'));\n }}\n submitLabel={t('chooseWorkspace.new.createWorkspace')}\n submitting={isLoading}\n >\n \n \n \n
\n \n
\n
\n \n );\n};\n\nexport default ChooseWorkspaceForm;\n","import React from 'react';\nimport { Heading, Text } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\n\nconst ChooseWorkspaceInfo = () => {\n const { t } = useTranslation('codeDelivery');\n\n return (\n <>\n \n {t('chooseWorkspace.choose.description')}\n \n
\n
\n \n {t('chooseWorkspace.choose.join.title')}\n \n {t('chooseWorkspace.choose.join.description')}\n
\n
\n \n {t('chooseWorkspace.choose.create.title')}\n \n {t('chooseWorkspace.choose.create.description')}\n
\n \n );\n};\n\nexport default ChooseWorkspaceInfo;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router-dom';\nimport ConditionalRender from '@components/ConditionalRender';\nimport LandingPage from '@components/LandingPage';\nimport { Heading, Link as PdsLink, Button } from '@puppet/react-components';\nimport session from '@state/session/session';\nimport { useAppDispatch } from '@hooks/redux';\nimport { useSignOut } from '@services/cd4pe/auth';\nimport { LINKS } from 'src/routes';\nimport ChooseWorkspaceForm from './components/ChooseWorkspaceForm';\nimport ChooseWorkspaceInfo from './components/ChooseWorkspaceInfo';\n\nconst ChooseWorkspace = () => {\n const { t } = useTranslation('codeDelivery');\n const [view, setView] = useState<'choose' | 'new'>('choose');\n const appDispatch = useAppDispatch();\n const navigate = useNavigate();\n const signOut = useSignOut();\n\n const handleSignOut = async () => {\n const signedOut = await signOut.mutateAsync();\n\n if (signedOut) {\n appDispatch(session.actions.resetSession());\n navigate(LINKS.login({}));\n }\n };\n\n const header = () => {\n return (\n
\n \n {t('chooseWorkspace.choose.header')}\n \n \n setView('choose')}\n >\n {t('chooseWorkspace.new.backToChoose')}\n \n \n
\n );\n };\n\n const footer = () => (\n
\n \n setView('new')}\n data-testid=\"add-new-workspace-button\"\n >\n {t('chooseWorkspace.choose.addNewWorkspace')}\n \n \n \n {t('chooseWorkspace.signout')}\n \n
\n );\n\n return (\n \n {header()}\n \n \n \n \n \n \n {footer()}\n \n );\n};\n\nexport default ChooseWorkspace;\n","import ChooseWorkspace from './ChooseWorkspace';\n\nexport default ChooseWorkspace;\n","import React, { PropsWithChildren } from 'react';\n\nconst PageLayoutBreadcrumbs = ({\n children,\n // eslint-disable-next-line react/prop-types\n className = '',\n ...props\n}: PropsWithChildren>) => (\n
\n {children}\n
\n);\n\nexport default PageLayoutBreadcrumbs;\n","import React, { PropsWithChildren } from 'react';\n\nconst PageLayoutContent = ({\n children,\n // eslint-disable-next-line react/prop-types\n className = '',\n ...props\n}: PropsWithChildren>) => (\n
\n {children}\n
\n);\n\nexport default PageLayoutContent;\n","import React, { PropsWithChildren } from 'react';\n\nconst PageLayoutHeader = ({\n children,\n // eslint-disable-next-line react/prop-types\n className = '',\n ...props\n}: PropsWithChildren>) => (\n
\n {children}\n
\n);\n\nexport default PageLayoutHeader;\n","import React, { PropsWithChildren } from 'react';\nimport PageLayoutBreadcrumbs from './PageLayoutBreadcrumbs';\nimport PageLayoutContent from './PageLayoutContent';\nimport PageLayoutHeader from './PageLayoutHeader';\n\nconst PageLayout = ({\n children,\n // eslint-disable-next-line react/prop-types\n className = '',\n ...props\n}: PropsWithChildren>) => (\n
\n {children}\n
\n);\n\nPageLayout.Header = PageLayoutHeader;\nPageLayout.Content = PageLayoutContent;\nPageLayout.Breadcrumbs = PageLayoutBreadcrumbs;\n\nexport default PageLayout;\n","import PageLayout from './PageLayout';\n\nexport default PageLayout;\n","import React from 'react';\nimport { Modal, Form } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\nimport { useUpdateUserV1 } from '@services/cd4pe/users';\nimport { UserV1 } from '@puppet/cd4pe-client-ts';\nimport Cd4peError from '@components/Cd4peError';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport session from '@state/session/session';\n\ntype Props = {\n isOpen: boolean;\n onClose: (open: boolean) => void;\n user: UserV1;\n isViewingPersonalProfile?: boolean;\n};\n\ntype FormValues = {\n email: string;\n};\n\nconst ChangeEmailDialog = ({\n isOpen,\n onClose,\n user,\n isViewingPersonalProfile = false,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const appDispatch = useAppDispatch();\n const updateUserEmail = useUpdateUserV1();\n\n const onSubmitHandler = ({ email }: FormValues) => {\n updateUserEmail.mutate(\n {\n userId: user.id!,\n requestBody: {\n email,\n },\n },\n {\n onSuccess: () => {\n if (isViewingPersonalProfile) {\n appDispatch(session.actions.setUser({ ...user, email }));\n }\n\n onClose(!isOpen);\n\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('profile.change.email.dialog.success'),\n }),\n );\n },\n },\n );\n };\n\n return (\n onClose(!isOpen)}>\n {t('profile.change.email.dialog.title')}\n {\n onSubmitHandler(newEmail);\n }}\n submitting={updateUserEmail.isLoading}\n onCancel={() => onClose(!isOpen)}\n submitLabel={t('profile.change.email.dialog.save.changes.button')}\n cancelLabel={t('profile.change.email.dialog.cancel.button')}\n data-testid=\"profile-change-email-form\"\n >\n \n \n \n \n );\n};\n\nexport default ChangeEmailDialog;\n","import React, { useState } from 'react';\nimport { Modal, Form } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\nimport { UserV1 } from '@puppet/cd4pe-client-ts';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport { useUpdateUserV1 } from '@services/cd4pe/users';\nimport Cd4peError from '@components/Cd4peError';\n\ntype Props = {\n isOpen: boolean;\n onClose: (open: boolean) => void;\n user: UserV1;\n};\n\ntype FormValues = {\n password: string;\n confirmPassword: string;\n};\n\nconst ChangePasswordDialog = ({ isOpen, onClose, user }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const appDispatch = useAppDispatch();\n const updateUserPassword = useUpdateUserV1();\n const [showPassword, setShowPassword] = useState(false);\n const [showConfirmPassword, setShowConfirmPassword] = useState(false);\n const [error, setError] = useState('');\n\n const onSubmitHandler = ({ password, confirmPassword }: FormValues) => {\n if (password !== confirmPassword) {\n setError(t('profile.change.password.dialog.nomatch.error'));\n return;\n }\n updateUserPassword.mutate(\n {\n userId: user.id!,\n requestBody: {\n password,\n },\n },\n {\n onSuccess: () => {\n onClose(!isOpen);\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('profile.change.password.dialog.success'),\n }),\n );\n },\n },\n );\n };\n\n return (\n onClose(!isOpen)}>\n {t('profile.change.password.dialog.title')}\n {\n onSubmitHandler(newPassword);\n }}\n submitting={updateUserPassword.isLoading}\n onCancel={() => onClose(!isOpen)}\n submitLabel={t('profile.change.password.dialog.save.changes.button')}\n cancelLabel={t('profile.change.password.dialog.cancel.button')}\n data-testid=\"profile-change-password-form\"\n >\n setShowPassword(!showPassword)}\n error={error}\n />\n \n setShowConfirmPassword(!showConfirmPassword)\n }\n error={error}\n />\n \n \n \n );\n};\n\nexport default ChangePasswordDialog;\n","import UserDetailsCard from './UserDetailsCard';\n\nexport default UserDetailsCard;\n","import React, { useState } from 'react';\nimport {\n Card,\n Heading,\n Text,\n Button,\n TooltipHoverArea,\n} from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\nimport { UserV1 } from '@puppet/cd4pe-client-ts';\nimport ConditionalRender from '@components/ConditionalRender';\nimport ChangeEmailDialog from '../ChangeEmailDialog/ChangeEmailDialog';\nimport ChangePasswordDialog from '../ChangePasswordDialog/ChangePasswordDialog';\n\ntype Props = {\n userToView: UserV1;\n loggedInUser: UserV1;\n};\n\nconst UserDetailsCard = ({ userToView, loggedInUser }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const [isChangeEmailOpen, setIsChangeEmailOpen] = useState(false);\n const [isChangePasswordOpen, setIsChangePasswordOpen] = useState(false);\n\n const isLoggedInRootOrSuperUser =\n loggedInUser.rootUser || loggedInUser.superUser;\n\n return (\n \n
\n
\n \n {t('profile.details.name')}\n \n {`${userToView?.firstName} ${userToView?.lastName}`}\n
\n
\n \n {t('profile.details.username')}\n \n \n {userToView?.userName}\n \n
\n
\n \n {t('profile.details.email')}\n \n {userToView?.email}\n
\n
\n \n {t('profile.details.accountId')}\n \n {userToView?.id}\n
\n
\n
\n {isLoggedInRootOrSuperUser && (\n
\n {\n setIsChangePasswordOpen(!isChangePasswordOpen);\n }}\n data-testid=\"profile-change-password-button\"\n >\n {t('profile.details.change.password.button')}\n \n \n \n \n
\n )}\n
\n \n {\n setIsChangeEmailOpen(!isChangeEmailOpen);\n }}\n data-testid=\"profile-change-email-button\"\n >\n {t('profile.details.change.email.button')}\n \n \n \n \n \n
\n
\n
\n );\n};\n\nexport default UserDetailsCard;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Breadcrumb as PdsBreadcrumb } from '@puppet/react-components';\nimport { NavLink } from 'react-router-dom';\n\ninterface Breadcrumb {\n displayName: string;\n linkDestination?: string | null;\n dataTestId?: string;\n}\n\nexport type BreadcrumbsType = Breadcrumb[];\n\nconst Breadcrumbs = ({ breadcrumbs }: { breadcrumbs: BreadcrumbsType }) => {\n const sections = breadcrumbs.map((breadcrumb) => {\n if (breadcrumb.linkDestination) {\n return (\n \n {breadcrumb.displayName}\n \n );\n }\n return (\n \n {breadcrumb.displayName}\n \n );\n });\n\n return {sections};\n};\n\nBreadcrumbs.propTypes = {\n breadcrumbs: PropTypes.arrayOf(\n PropTypes.shape({\n displayName: PropTypes.string.isRequired,\n linkDestination: PropTypes.string,\n dataTestId: PropTypes.string,\n }),\n ).isRequired,\n};\n\nexport default Breadcrumbs;\n","import React, { useState } from 'react';\nimport { Modal, Button, Code, Copy, Alert } from '@puppet/react-components';\nimport { useTranslation, Trans } from 'react-i18next';\n\ntype TokenCreatedDialogProps = {\n onClose: () => void;\n token: string;\n};\n\nconst TokenCreatedDialog = ({ onClose, token }: TokenCreatedDialogProps) => {\n const { t } = useTranslation('codeDelivery');\n const [openCopiedAlert, setOpenCopiedAlert] = useState(false);\n\n const onCloseAlert = () => {\n setOpenCopiedAlert(false);\n };\n\n const onTokenCopy = () => {\n setOpenCopiedAlert(true);\n };\n\n return (\n \n {t('profile.tokens.created.dialog.title')}\n \n
\n ]}\n />\n
\n \n \n {token}\n \n \n {openCopiedAlert && (\n \n {t('profile.tokens.created.dialog.copied')}\n \n )}\n \n \n \n
\n \n );\n};\n\nexport default TokenCreatedDialog;\n","import TokenCreatedDialog from './TokenCreatedDialog';\n\nexport default TokenCreatedDialog;\n","/* eslint-disable dot-notation */\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Form } from '@puppet/react-components';\nimport addDays from 'date-fns/addDays';\nimport isBefore from 'date-fns/isBefore';\nimport startOfDay from 'date-fns/startOfDay';\nimport format from 'date-fns/format';\nimport { WEB_API_TOKEN_DEFAULT_AGE_IN_DAYS } from '@utils/constants';\nimport { add, isAfter } from 'date-fns';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport { useCreateTokenV1 } from '@services/cd4pe/auth';\nimport Cd4peError from '@components/Cd4peError';\nimport TokenCreatedDialog from '../TokenCreatedDialog';\n\ntype FormValues = {\n name: string;\n expiresOn: string;\n};\n\nconst getDefaultExpires = () =>\n format(\n add(new Date(), {\n days: WEB_API_TOKEN_DEFAULT_AGE_IN_DAYS,\n }),\n 'yyyy-MM-dd',\n );\n\nconst AccessTokenForm = () => {\n const { t } = useTranslation('codeDelivery');\n const [expiresError, setExpiresError] = useState(undefined);\n const [formValues, setFormValues] = useState({\n name: '',\n expiresOn: getDefaultExpires(),\n });\n const [token, setToken] = useState('');\n const [formKey, setFormKey] = useState(1);\n const appDispatch = useAppDispatch();\n\n const createToken = useCreateTokenV1();\n\n const isDateValid = (chosenDate: string | number | Date) => {\n if (isBefore(startOfDay(new Date(chosenDate)), startOfDay(new Date()))) {\n setExpiresError(t('profile.tokens.form.field.expires.error'));\n return false;\n }\n\n if (isAfter(new Date(chosenDate), add(new Date(), { years: 1 }))) {\n setExpiresError(\n t('profile.tokens.form.field.expires.max.error', { days: 365 }),\n );\n return false;\n }\n\n setExpiresError(undefined);\n return true;\n };\n\n const onFormChange = (_: keyof FormValues, values: FormValues) => {\n if (values.expiresOn !== '') {\n isDateValid(values.expiresOn);\n }\n setFormValues(values);\n };\n\n const onTokenCreatedDialogClose = () => {\n setToken('');\n setFormKey(formKey + 1);\n setFormValues({\n name: '',\n expiresOn: getDefaultExpires(),\n });\n };\n\n const onSubmit = (values: FormValues) => {\n if (!isDateValid(values.expiresOn)) {\n // eslint-disable-next-line no-useless-return\n return;\n }\n\n createToken.mutate(\n {\n requestBody: {\n name: formValues.name,\n expiresOn: formValues.expiresOn,\n },\n },\n {\n onSuccess: (newToken) => {\n setToken(newToken);\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('profile.tokens.created.alerts.success', {\n name: values.name,\n }),\n }),\n );\n },\n },\n );\n };\n\n return (\n <>\n \n \n \n \n {token !== '' && (\n \n )}\n \n \n );\n};\n\nexport default AccessTokenForm;\n","import AccessTokenForm from './AccessTokenForm';\n\nexport default AccessTokenForm;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React from 'react';\nimport { Table as PDSTable } from '@puppet/data-grid';\nimport classnames from 'classnames';\n\ntype ColumnsItem = {\n label: string;\n dataKey: string;\n cellDataGetter?: (data: Data) => unknown;\n cellRenderer?: (data: { rowData: DataItem }) => unknown;\n columnData?: unknown;\n sortable?: boolean;\n className?: string;\n style?: React.CSSProperties;\n};\nexport type Columns = ColumnsItem[];\n\nexport type DataItem = {\n [key: string]: unknown;\n selected?: boolean;\n disabled?: boolean;\n};\nexport type Data = DataItem[] | [];\n\ntype Sort = {\n direction: 'asc' | 'desc';\n sortDataKey: string;\n};\n\n// These types will eventually be moved into the PDS data-grid package.\ntype Props = {\n data: Data;\n columns: Columns;\n rowKey?: string | (() => string);\n rowClassName?: () => string;\n onRowClick?: (rowKey: string, rowIndex: number, rowData: unknown) => void;\n fixed?: boolean;\n className?: string;\n sortedColumn?: Sort;\n loading?: boolean;\n loadingMessage?: string;\n onSort?: (\n direction: Sort['direction'],\n sortDataKey: Sort['sortDataKey'],\n ) => void;\n horizontalScroll?: boolean;\n fixedColumn?: boolean;\n fixedLastColumn?: boolean;\n emptyStateHeader?: string;\n emptyStateMessage?: string;\n selectable?: boolean;\n onRowChecked?: (checked: boolean, rowData: any) => void;\n onHeaderChecked?: (checked: boolean) => void;\n headerCheckState?: boolean;\n headerIndeterminateState?: boolean;\n};\n\nconst Table = ({ className, ...rest }: Props) => {\n return (\n
\n \n
\n );\n};\n\nTable.TableHeader = PDSTable.TableHeader;\n\nexport default Table;\n","import Table from './Table';\n\nexport default Table;\nexport * from './Table';\n","export const stringCompare = (s1, s2) => {\n const a = (s1 || '').toLowerCase();\n const b = (s2 || '').toLowerCase();\n if (a === b) {\n return 0;\n }\n return a < b ? -1 : 1;\n};\n\nexport const numberCompare = (n1, n2) => n2 - n1;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@puppet/react-components';\nimport Table, { DataItem } from '@components/Table';\nimport Cd4peError from '@components/Cd4peError';\nimport { AuthTokenV1, UserV1 } from '@utils/api/cd4pe';\nimport { useListTokensV1 } from '@services/cd4pe/auth';\nimport { stringCompare } from '@utils/compare';\nimport compareAsc from 'date-fns/compareAsc';\nimport compareDesc from 'date-fns/compareDesc';\nimport parseISO from 'date-fns/parseISO';\nimport format from 'date-fns/format';\n\ntype RowData = DataItem & AuthTokenV1;\n\ntype SortUsers = {\n direction: 'asc' | 'desc';\n sortDataKey: string;\n};\n\ntype Props = {\n user: UserV1;\n onRevokeToken: (token: AuthTokenV1) => void;\n};\n\nconst TABLE_DATE_FORMAT = 'MMM dd, yyyy';\n\nconst AccessTokenTable = ({ user, onRevokeToken }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const [sort, setSort] = useState({\n direction: 'asc',\n sortDataKey: 'name',\n });\n\n const sortName = (a: AuthTokenV1, b: AuthTokenV1) =>\n (sort.direction === 'asc' ? 1 : -1) * stringCompare(a.name, b.name);\n\n const sortDate = (\n a: AuthTokenV1,\n b: AuthTokenV1,\n key: keyof Pick,\n ) => {\n const aDate = parseISO(a[key]!);\n const bDate = parseISO(b[key]!);\n return sort.direction === 'asc'\n ? compareAsc(aDate, bDate)\n : compareDesc(aDate, bDate);\n };\n\n const { data, isLoading, error } = useListTokensV1(\n { userId: user.id! },\n {\n select(d) {\n switch (sort.sortDataKey) {\n case 'name':\n d.authTokens?.sort(sortName);\n break;\n case 'createdOn':\n d.authTokens?.sort((a: AuthTokenV1, b: AuthTokenV1) =>\n sortDate(a, b, 'createdOn'),\n );\n break;\n case 'expiresOn':\n d.authTokens?.sort((a: AuthTokenV1, b: AuthTokenV1) =>\n sortDate(a, b, 'expiresOn'),\n );\n break;\n default:\n break;\n }\n\n return d;\n },\n },\n );\n\n const columns = [\n {\n label: t('profile.tokens.table.column.name'),\n dataKey: 'name',\n\n sortable: true,\n },\n {\n label: t('profile.tokens.table.column.created'),\n dataKey: 'createdOn',\n cellRenderer: (row: { rowData: RowData }) =>\n format(parseISO(row.rowData.createdOn!), TABLE_DATE_FORMAT),\n sortable: true,\n },\n {\n label: t('profile.tokens.table.column.expires'),\n dataKey: 'expiresOn',\n cellRenderer: (row: { rowData: RowData }) =>\n format(parseISO(row.rowData.expiresOn!), TABLE_DATE_FORMAT),\n sortable: true,\n },\n {\n label: t('profile.tokens.table.column.actions'),\n dataKey: 'actions',\n cellRenderer: (row: { rowData: RowData }) => (\n onRevokeToken(row.rowData)}\n data-testid={`revoke-token-${row.rowData.name}`}\n >\n {t('profile.tokens.table.buttons.revoke')}\n \n ),\n },\n ];\n\n const onSortHandler = (\n direction: SortUsers['direction'],\n sortDataKey: SortUsers['sortDataKey'],\n ) => {\n setSort({ direction, sortDataKey });\n };\n\n return (\n <>\n \n \n \n );\n};\n\nexport default AccessTokenTable;\n","import AccessTokenTable from './AccessTokenTable';\n\nexport default AccessTokenTable;\n","import React, { useState } from 'react';\nimport { useTranslation, Trans } from 'react-i18next';\nimport { Text, Modal, Icon, Checkbox, Button } from '@puppet/react-components';\nimport { useAppDispatch } from '@hooks/redux';\nimport { AuthTokenV1 } from '@puppet/cd4pe-client-ts';\nimport { useRevokeToken } from '@services/cd4pe/auth';\nimport alerts from '@state/ui/alerts';\nimport Cd4peError from '@components/Cd4peError';\n\ntype RevokeTokenDialogProps = {\n token: AuthTokenV1;\n onClose: () => void;\n};\n\nconst RevokeTokenDialog = ({ token, onClose }: RevokeTokenDialogProps) => {\n const { t } = useTranslation('codeDelivery');\n const [isConfirmedRevoke, setIsConfirmedRevoke] = useState(false);\n const { mutate: revokeToken, isLoading, error } = useRevokeToken();\n const appDispatch = useAppDispatch();\n\n const onCheckboxChange = (checked: boolean) => {\n setIsConfirmedRevoke(checked);\n };\n\n const CheckboxLabel = (\n ]}\n />\n );\n\n const onConfirm = async () => {\n revokeToken(\n { tokenId: token.id! },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n message: t('profile.tokens.revoke.dialog.alert.success'),\n type: 'Success',\n }),\n );\n onClose();\n },\n },\n );\n };\n\n return (\n \n {t('profile.tokens.revoke.dialog.title')}\n \n
\n \n {t('profile.tokens.revoke.dialog.warning')}\n
\n \n {error && }\n \n \n {t('profile.tokens.revoke.dialog.button.confirm')}\n \n \n \n
\n \n );\n};\n\nexport default RevokeTokenDialog;\n","import RevokeTokenDialog from './RevokeTokenDialog';\n\nexport default RevokeTokenDialog;\n","import Profile from './Profile';\n\nexport default Profile;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Heading, Card, Text } from '@puppet/react-components';\nimport { useSelector } from 'react-redux';\nimport { selectUser } from '@state/session/selectors';\nimport PageLayout from '@components/PageLayout';\nimport { AuthTokenV1 } from '@utils/api/cd4pe';\nimport UserDetailsCard from '@codeDelivery/components/UserDetailsCard';\nimport { UserV1 } from '@puppet/cd4pe-client-ts';\nimport Breadcrumbs, {\n BreadcrumbsType,\n} from '@components/Breadcrumbs/Breadcrumbs';\nimport AccessTokenForm from './components/AccessTokenForm';\nimport AccessTokenTable from './components/AccessTokenTable';\nimport RevokeTokenDialog from './components/RevokeTokenDialog';\n\ninterface ProfileProps {\n user?: UserV1;\n breadcrumbs?: BreadcrumbsType;\n}\n\nconst Profile = ({ user, breadcrumbs }: ProfileProps) => {\n const { t } = useTranslation('codeDelivery');\n const loggedInUser = useSelector(selectUser) as UserV1;\n const userToView = user ?? loggedInUser;\n const [tokenToRevoke, setTokenToRevoke] = React.useState(\n null,\n );\n\n const onRevokeDialogClose = () => {\n setTokenToRevoke(null);\n };\n\n const onRevokeTokenHandler = (token: AuthTokenV1) => {\n setTokenToRevoke(token);\n };\n\n return (\n <>\n \n \n {breadcrumbs && (\n \n \n \n )}\n {t('profile.header')}\n \n \n \n {userToView.id === loggedInUser.id ? (\n \n
\n \n {t('profile.tokens.description.title')}\n \n {t('profile.tokens.description.content')}\n
\n
\n
\n {t('profile.tokens.form.title')}\n {t('profile.tokens.form.description')}\n
\n \n
\n
\n
\n {t('profile.tokens.table.title')}\n \n
\n \n ) : (\n \n {t('profile.tokens.table.title')}\n \n \n )}\n \n \n {tokenToRevoke && (\n \n )}\n \n );\n};\n\nexport default Profile;\n","import Profile from '@views/Profile';\nimport { useListUsersByPrefix } from '@services/cd4pe/users';\nimport PageLoader from '@components/PageLoader';\nimport React from 'react';\nimport { useAppSelector } from '@hooks/redux';\nimport { Alert } from '@puppet/react-components';\nimport { selectUser } from '@state/session/selectors';\nimport { useParams } from 'react-router-dom';\nimport { BreadcrumbsType } from '@components/Breadcrumbs/Breadcrumbs';\nimport { useTranslation } from 'react-i18next';\nimport Cd4peError from '@components/Cd4peError';\nimport { UserV1 } from '@puppet/cd4pe-client-ts';\nimport { LINKS } from '../../routes';\n\nconst RootViewProfile = () => {\n const { domain } = useAppSelector(selectUser) as UserV1;\n const { id: userId } = useParams<{ id: string }>();\n const { t } = useTranslation('codeDelivery');\n\n const listUsers = useListUsersByPrefix({\n workspaceId: domain!,\n prefix: '',\n scope: 'GLOBAL',\n });\n\n if (listUsers.isLoading) {\n return ;\n }\n\n const selectedUser = listUsers.data?.users?.find(\n (user) => user.id === Number(userId)!,\n );\n\n if (listUsers.error) {\n return ;\n }\n\n if (!selectedUser) {\n return (\n
\n {t('root.accounts.profile.error')}\n
\n );\n }\n\n const breadcrumbs: BreadcrumbsType = [\n {\n displayName: t('root.accounts.breadcrumbs.root.console'),\n },\n {\n displayName: t('root.accounts.breadcrumbs.root.accounts'),\n linkDestination: LINKS.root.accounts,\n },\n {\n displayName: selectedUser.userName ?? '',\n },\n ];\n\n return ;\n};\n\nexport default RootViewProfile;\n","import Breadcrumbs from './Breadcrumbs';\n\nexport default Breadcrumbs;\n","import { useSelector } from 'react-redux';\nimport { selectWorkspaceName } from '@state/session/selectors';\n\nconst useWorkspaceName = () => {\n const workspaceName = useSelector(selectWorkspaceName);\n\n if (!workspaceName) {\n throw new Error('Expected workspace name to be set but was not defined.');\n }\n\n return workspaceName as string;\n};\n\nexport default useWorkspaceName;\n","import { useSelector } from 'react-redux';\nimport { selectWorkspaceDomain } from '@state/session/selectors';\n\nconst useWorkspaceDomain = () => {\n const workspaceDomain = useSelector(selectWorkspaceDomain);\n\n if (!workspaceDomain) {\n throw new Error('Expected workspace domain to be set but was not defined.');\n }\n\n return workspaceDomain as string;\n};\n\nexport default useWorkspaceDomain;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n Heading,\n Card,\n TooltipHoverArea,\n Icon,\n Text,\n} from '@puppet/react-components';\nimport classnames from 'classnames';\n\ninterface Props {\n title: string;\n value: string | number | boolean;\n 'data-testid'?: string;\n isFeatureLocked?: boolean;\n onClick?: () => void;\n}\n\nconst ValueCard = ({\n title,\n value,\n 'data-testid': dataTestId,\n isFeatureLocked = false,\n onClick = () => {},\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n return (\n
\n \n \n {title}\n \n {isFeatureLocked ? (\n
\n \n \n {t('activity.valuesOverTime.card.locked')}\n \n
\n ) : (\n \n \n {value}\n \n \n )}\n \n
\n );\n};\n\nexport default ValueCard;\n","import React from 'react';\nimport { TooltipProps } from 'recharts';\nimport {\n ValueType,\n NameType,\n} from 'recharts/types/component/DefaultTooltipContent';\nimport { Card } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\n\nconst CustomTooltip = ({\n active,\n payload,\n label,\n}: TooltipProps) => {\n const { t } = useTranslation('codeDelivery');\n\n if (!active) {\n return null;\n }\n\n return (\n \n {label}\n {t('activity.chart.tooltip.timeSaved', { value: payload?.[0]?.value })}\n \n );\n};\n\nexport default CustomTooltip;\n","import React from 'react';\nimport {\n BarChart,\n Bar,\n XAxis,\n YAxis,\n Tooltip,\n Label,\n ResponsiveContainer,\n} from 'recharts';\nimport { Card } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\nimport CustomTooltip from './CustomTooltip';\n\nexport interface Props {\n data: { name: string; value: number }[];\n}\n\nconst axisStyle = {\n fontFamily: 'Calibre',\n fontWeight: 600,\n color: '#5D6F7A',\n};\n\nconst ValueChart = ({ data }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const yAxisLabel = t('activity.chart.yaxis.label');\n\n return (\n \n \n \n \n \n \n \n } />\n \n \n \n \n );\n};\n\nexport default ValueChart;\n","import ValueChart from './ValueChart';\n\nexport default ValueChart;\n","import InfoPopup from './InfoPopup';\n\nexport default InfoPopup;\n","import React from 'react';\nimport {\n Icon,\n Link as PdsLink,\n Popover,\n Text,\n Heading,\n} from '@puppet/react-components';\nimport { Trans, useTranslation } from 'react-i18next';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\n\ninterface Props {\n onClose: () => void;\n}\n\nconst InfoPopup = ({ onClose }: Props) => {\n const { t } = useTranslation('codeDelivery');\n\n return (\n \n
\n
\n \n \n {t('activity.unlockImpactAnalysis.popup.header')}\n \n
\n
\n {t('activity.unlockImpactAnalysis.popup.body1')}\n
\n \n \n {t('activity.unlockImpactAnalysis.popup.body2')}\n \n \n
\n
\n
\n \n );\n};\n\nexport default InfoPopup;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Heading, Text, Form, Loading } from '@puppet/react-components';\nimport format from 'date-fns/format';\nimport subDays from 'date-fns/subDays';\nimport isAfter from 'date-fns/isAfter';\nimport isValid from 'date-fns/isValid';\nimport PageLayout from '@components/PageLayout';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { LINKS } from 'src/routes';\nimport { useGenerateValueReportV1 } from '@services/cd4pe/valueReporting';\nimport { useGetLicenseV1 } from '@services/cd4pe/license';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport Cd4peError from '@components/Cd4peError';\nimport ConditionalRender from '@components/ConditionalRender';\nimport { ValueReportV1 } from '@puppet/cd4pe-client-ts';\nimport ValueCard from './components/ValueCard/ValueCard';\nimport ValueChart from './components/ValueChart';\nimport InfoPopup from './components/InfoPopup';\n\nconst dateFormat = 'yyyy-MM-dd';\nconst getDefaultStart = () => format(subDays(new Date(), 7), dateFormat);\nconst getDefaultEnd = () => format(new Date(), dateFormat);\n\ntype FormValues = {\n startDate: string;\n endDate: string;\n};\n\nconst VALUES_OVER_TIME_KEYS: (keyof ValueReportV1)[] = [\n 'nodesPatched',\n 'tasksRan',\n 'plansRan',\n 'correctiveChanges',\n 'intentionalChanges',\n 'impactAnalysisResourceChanges',\n];\n\nconst AUTOMATED_KEYS: (keyof ValueReportV1)[] = [\n 'avgModulesDeployed',\n 'avgResourcesManaged',\n 'avgNodesCheckedForPatches',\n];\n\nconst CHART_KEYS: (keyof ValueReportV1)[] = [\n 'patchingSavedTimeHours',\n 'tasksSavedTimeHours',\n 'plansSavedTimeHours',\n 'correctiveChangesSavedTimeHours',\n 'intentionalChangesSavedTimeHours',\n];\n\nconst Activity = () => {\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const [startDateError, setStartDateError] = useState('');\n const [endDateError, setEndDateError] = useState('');\n const [formValues, setFormValues] = useState({\n startDate: getDefaultStart(),\n endDate: getDefaultEnd(),\n });\n const [impactAnalysisPopover, setImpactAnalysisPopover] = useState(false);\n\n const { data, isLoading, error, fetchStatus } = useGenerateValueReportV1(\n {\n workspaceId,\n startDate: formValues.startDate,\n endDate: formValues.endDate,\n },\n {\n enabled: !startDateError && !endDateError,\n },\n );\n\n const license = useGetLicenseV1(undefined);\n\n const breadcrumbs = [\n {\n displayName: workspaceName,\n },\n {\n displayName: t('activity.breadcrumb.report'),\n linkDestination: LINKS.activity.root({\n path: { workspace: workspaceName },\n }),\n },\n ];\n\n const onFormChange = (key: keyof FormValues, values: FormValues) => {\n let startError = '';\n let endError = '';\n\n const isStartDateValid = isValid(new Date(values.startDate));\n const isEndDateValid = isValid(new Date(values.endDate));\n\n if (!isStartDateValid) {\n startError = t('activity.filters.error.invalidDate');\n } else if (isAfter(new Date(values.startDate), new Date())) {\n startError = t('activity.filters.error.afterToday');\n } else if (\n isAfter(new Date(values.startDate), new Date(values.endDate)) &&\n key === 'startDate'\n ) {\n startError = t('activity.filters.error.startAfterEnd');\n }\n\n if (!isEndDateValid) {\n endError = t('activity.filters.error.invalidDate');\n } else if (isAfter(new Date(values.endDate), new Date())) {\n endError = t('activity.filters.error.afterToday');\n } else if (\n isAfter(new Date(values.startDate), new Date(values.endDate)) &&\n key === 'endDate'\n ) {\n endError = t('activity.filters.error.endBeforeStart');\n }\n\n setStartDateError(startError);\n setEndDateError(endError);\n setFormValues(values);\n };\n\n const chartValues = CHART_KEYS.map((key: keyof ValueReportV1) => {\n return {\n name: t(`activity.chart.xaxis.${key}`),\n value: data?.[key] ?? 0,\n };\n });\n\n const isLoadingData = isLoading && fetchStatus !== 'idle';\n\n const isFeatureLocked = (key: keyof ValueReportV1) => {\n switch (key) {\n case 'impactAnalysisResourceChanges':\n return (\n !license.isLoading &&\n (license.error?.status === 404 ||\n !license.data?.included?.some(\n (included) => included.attributes?.code === 'IMPACT_ANALYSIS',\n ))\n );\n default:\n return false;\n }\n };\n\n const onValueClickHandler = (key: keyof ValueReportV1) => {\n if (key === 'impactAnalysisResourceChanges' && isFeatureLocked(key)) {\n setImpactAnalysisPopover(true);\n }\n };\n\n const renderIAPopover = (key: keyof ValueReportV1) => {\n if (key === 'impactAnalysisResourceChanges' && impactAnalysisPopover) {\n return (\n
\n setImpactAnalysisPopover(false)} />\n
\n );\n }\n\n return null;\n };\n\n const getDataValue = (\n valueData: ValueReportV1 | undefined,\n key: keyof ValueReportV1,\n ) => {\n // Its possible that the values are returned before the license check is finished. When we are loading the license,\n // we should continue showing the initial character instead of 0 to indicate its still in an indeterminate state.\n if (key === 'impactAnalysisResourceChanges' && license.isLoading) {\n return '-';\n }\n\n return valueData?.[key] ?? '-';\n };\n\n return (\n \n \n \n \n \n {t('activity.header')}\n {t('activity.description')}\n \n \n \n
\n \n \n \n \n \n \n \n
\n
\n {t('activity.valuesOverTime.heading')}\n
\n {VALUES_OVER_TIME_KEYS.map((key) => (\n
\n onValueClickHandler(key)}\n />\n {renderIAPopover(key)}\n
\n ))}\n
\n
\n
\n {t('activity.timeSaved.heading')}\n \n
\n
\n {t('activity.automating.heading')}\n
\n {AUTOMATED_KEYS.map((key) => (\n \n ))}\n
\n
\n
\n
\n );\n};\n\nexport default Activity;\n","import Activity from './Activity';\n\nexport default Activity;\n","import { useQuery } from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n handleQueryRequest,\n QueryHook,\n ValueReportingV1Service,\n} from '@utils/api/cd4pe';\n\nexport const GENERATE_VALUE_REPORT = 'generateValueReportV1';\n\n/**\n * UseGenerateValueReportV1\n */\ntype UseGenerateValueReportV1 = QueryHook<\n typeof ValueReportingV1Service,\n 'generateValueReportV1',\n Cd4peApiError\n>;\n\nexport const useGenerateValueReportV1: UseGenerateValueReportV1 = (\n payload,\n options,\n) => {\n return useQuery(\n [GENERATE_VALUE_REPORT, payload.startDate, payload.endDate],\n () =>\n handleQueryRequest(\n ValueReportingV1Service.generateValueReportV1(payload),\n ),\n options,\n );\n};\n","/* eslint-disable import/prefer-default-export */\nimport { useQuery } from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n handleQueryRequest,\n LicenseV1Service,\n QueryHook,\n} from '@utils/api/cd4pe';\n\nconst GET_LICENSE_QUERY_TAG = 'jobInstancesLog';\n\ntype UseGetLicenseV1 = QueryHook<\n typeof LicenseV1Service,\n 'getLicenseV1',\n Cd4peApiError\n>;\n\nexport const useGetLicenseV1: UseGetLicenseV1 = () =>\n useQuery([GET_LICENSE_QUERY_TAG], () =>\n handleQueryRequest(LicenseV1Service.getLicenseV1()),\n );\n","import { useRef, useState } from 'react';\nimport debounce from 'lodash.debounce';\n\nconst useDebouncedSearch = (timeout = 500) => {\n const [searchTerm, setSearchTerm] = useState('');\n const [appliedSearchTerm, setAppliedSearchTerm] = useState('');\n const debouncedSearchHandler = useRef(\n debounce((value: string) => setAppliedSearchTerm(value), timeout),\n ).current;\n\n const handleSearch = (newSearchTerm: string) => {\n setSearchTerm(newSearchTerm);\n debouncedSearchHandler(newSearchTerm);\n };\n\n return { searchTerm, appliedSearchTerm, handleSearch };\n};\n\nexport default useDebouncedSearch;\n","import React, { useState } from 'react';\nimport {\n Modal,\n Link as PdsLink,\n Form,\n Alert,\n Text,\n} from '@puppet/react-components';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport Cd4peError from '@components/Cd4peError';\nimport { useDeleteUser } from '@services/cd4pe/users';\nimport { useAppDispatch, useAppSelector } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport { selectUser } from '@state/session/selectors';\nimport { UserV1 } from '@puppet/cd4pe-client-ts';\nimport { LINKS } from '../../../../routes';\n\ninterface DeleteUserModalProps {\n onClose: () => void;\n username: string;\n}\n\ntype InputConfirmationForm = {\n confirmationInput: string;\n};\n\nconst DeleteUserModal = ({ username, onClose }: DeleteUserModalProps) => {\n const [formValue, setFormValue] = useState({\n confirmationInput: '',\n });\n const appDispatch = useAppDispatch();\n const { userName } = useAppSelector(selectUser) as UserV1;\n const deleteUser = useDeleteUser(userName!);\n\n const { t } = useTranslation('codeDelivery');\n\n const onSubmitHandler = () => {\n if (formValue.confirmationInput !== username) {\n return;\n }\n deleteUser.mutate(\n { usernameToDelete: username },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('root.accounts.alert.deleteUser.success', {\n username,\n }),\n }),\n );\n onClose();\n },\n },\n );\n };\n\n const onChangeHandler = (\n nameChanged: keyof InputConfirmationForm,\n newValues: InputConfirmationForm,\n ) => {\n setFormValue(newValues);\n };\n\n return (\n \n {t('root.accounts.modal.deleteUser.title')}\n \n \n {t('root.accounts.modal.deleteUser.form.alert')}\n \n \n ]}\n values={{ username }}\n />\n \n \n ,\n ,\n ]}\n values={{ username }}\n />\n \n
\n \n
\n \n
\n \n \n
\n
\n \n );\n};\n\nexport default DeleteUserModal;\n","import React, { useEffect, useState } from 'react';\nimport {\n Switch,\n Button,\n Input,\n Checkbox,\n ConfirmationModal,\n TooltipHoverArea,\n} from '@puppet/react-components';\nimport { useListUsersByPrefix, useSetSuperUser } from '@services/cd4pe/users';\nimport { Table } from '@puppet/data-grid';\nimport Cd4peError from '@components/Cd4peError';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { UserScopeV1, UserV1 } from '@puppet/cd4pe-client-ts';\nimport { selectUser } from '@state/session/selectors';\nimport useDebouncedSearch from '@hooks/useDebouncedSearch';\nimport alerts from '@state/ui/alerts';\nimport { useAppDispatch, useAppSelector } from '@hooks/redux';\nimport { sortTableData } from '@utils/sort';\nimport { NavLink } from 'react-router-dom';\nimport DeleteUserModal from './DeleteUserModal';\nimport { LINKS } from '../../../../routes';\n\ninterface Column {\n label: string;\n dataKey?: keyof UserV1;\n sortable?: boolean;\n cellRenderer?: (params: { cellData: UserV1 }) => React.ReactNode;\n cellDataGetter?: (params: { rowData: UserV1 }) => UserV1;\n}\n\nconst RootAccountsTable = () => {\n const { userName: loggedInUser, domain } = useAppSelector(\n selectUser,\n ) as UserV1;\n const { searchTerm, appliedSearchTerm, handleSearch } = useDebouncedSearch();\n const [listUsersScope, setListUsersScope] = useState('GLOBAL');\n const listUsers = useListUsersByPrefix({\n workspaceId: domain!,\n prefix: appliedSearchTerm,\n scope: listUsersScope,\n });\n const setSuperUser = useSetSuperUser(loggedInUser!);\n const { t } = useTranslation('codeDelivery');\n const appDispatch = useAppDispatch();\n\n const [tableData, setTableData] = useState([]);\n const [sortedColumn, setSortedColumn] = useState<{\n sortDataKey: keyof UserV1;\n direction: boolean | 'asc' | 'desc';\n }>();\n const [userToDelete, setUserToDelete] = useState(\n undefined,\n );\n const [userToConvertToSuperUser, setUserToConvertToSuperUser] = useState<\n string | undefined\n >(undefined);\n const [userToRemoveSuperUser, setUserToRemoveSuperUser] = useState<\n string | undefined\n >(undefined);\n const [scopeCheckboxState, setScopeCheckboxState] = useState(false);\n\n useEffect(() => {\n setTableData(listUsers.data?.users ?? []);\n }, [listUsers.data]);\n\n const onChangeIsSuperUser = (username: string, newSuperUserVal: boolean) => {\n setSuperUser.mutate(\n {\n username,\n superUser: newSuperUserVal ? 'true' : 'false',\n },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t(\n `root.accounts.alert.${\n newSuperUserVal ? 'addToSuperUser' : 'removeFromSuperUser'\n }.success`,\n {\n username,\n },\n ),\n }),\n );\n setUserToConvertToSuperUser(undefined);\n setUserToRemoveSuperUser(undefined);\n },\n },\n );\n };\n\n const onSortHandler = (\n newDirection: 'asc' | 'desc',\n newDataKey: keyof UserV1,\n ) => {\n const sortedData = [...tableData!];\n sortTableData(sortedData, newDataKey, newDirection);\n\n setTableData(sortedData);\n setSortedColumn({\n direction: newDirection,\n sortDataKey: newDataKey,\n });\n };\n\n const columns: Column[] = [\n {\n label: t('root.accounts.table.columnHeader.username'),\n dataKey: 'userName',\n sortable: true,\n },\n {\n label: t('root.accounts.table.columnHeader.email'),\n dataKey: 'email',\n sortable: true,\n },\n {\n label: t('root.accounts.table.columnHeader.id'),\n dataKey: 'id',\n sortable: true,\n },\n {\n label: t('root.accounts.table.columnHeader.isSuperUser'),\n dataKey: 'superUser',\n sortable: true,\n cellDataGetter: ({ rowData }) => rowData,\n cellRenderer: ({ cellData }) => {\n const { superUser, id, userName } = cellData;\n return (\n \n (superUser\n ? setUserToRemoveSuperUser\n : setUserToConvertToSuperUser)(userName)\n }\n label={\n superUser\n ? t('root.accounts.table.superUser.switch.true')\n : t('root.accounts.table.superUser.switch.false')\n }\n disabled={id === 1} // ID of root user is always 1, disables superuser toggle for root user\n />\n );\n },\n },\n {\n label: t('root.accounts.table.columnHeader.actions'),\n cellDataGetter: ({ rowData }) => rowData,\n cellRenderer: ({ cellData }) => {\n const user = cellData;\n const isRootUser = user.id === 1;\n const deleteUserToolTip = isRootUser\n ? t('root.accounts.table.columnHeader.actions.deleteUser.disabled')\n : t('root.accounts.table.columnHeader.actions.deleteUser');\n\n return (\n
\n \n \n \n \n setUserToDelete(user)}\n icon=\"trash\"\n type=\"transparent\"\n data-testid={`delete-user-button-${user.userName}`}\n disabled={isRootUser}\n />\n \n
\n );\n },\n },\n ];\n\n const onChangeScopeCheckbox = (superUserFilter: boolean) => {\n setListUsersScope(superUserFilter ? 'SUPERUSERS' : 'GLOBAL');\n setScopeCheckboxState(superUserFilter);\n };\n\n return (\n
\n
\n \n \n
\n
\n \n
\n \n \n {userToDelete && (\n setUserToDelete(undefined)}\n />\n )}\n {userToConvertToSuperUser && (\n ]}\n values={{ username: userToConvertToSuperUser }}\n />\n }\n onCancel={() => setUserToConvertToSuperUser(undefined)}\n onConfirm={() => onChangeIsSuperUser(userToConvertToSuperUser, true)}\n confirmLabel={t('root.accounts.modal.addToSuperUser.confirm')}\n cancelLabel={t('root.accounts.modal.addToSuperUser.cancel')}\n confirmButtonLoading={setSuperUser.isLoading}\n />\n )}\n {userToRemoveSuperUser && (\n ]}\n values={{ username: userToRemoveSuperUser }}\n />\n }\n onConfirm={() => onChangeIsSuperUser(userToRemoveSuperUser, false)}\n onCancel={() => setUserToRemoveSuperUser(undefined)}\n confirmButtonType=\"danger\"\n confirmLabel={t('root.accounts.modal.removeFromSuperUser.confirm')}\n cancelLabel={t('root.accounts.modal.removeFromSuperUser.cancel')}\n confirmButtonLoading={setSuperUser.isLoading}\n />\n )}\n
\n );\n};\n\nexport default RootAccountsTable;\n","export const formattedSort = (a: T, b: T, direction: 'asc' | 'desc') => {\n const [arg1, arg2] = [\n typeof a === 'string' ? (a as string).toLowerCase() : a,\n typeof b === 'string' ? (b as string).toLowerCase() : b,\n ];\n if (arg1 > arg2) {\n return direction === 'asc' ? 1 : -1;\n }\n return direction === 'asc' ? -1 : 1;\n};\n\nexport const sortTableData = (\n data: T[],\n sortKey: keyof T,\n direction: 'asc' | 'desc',\n) => {\n return data.sort((a, b) => formattedSort(a[sortKey], b[sortKey], direction));\n};\n","import RootAccountsTable from './RootAccountsTable';\n\nexport default RootAccountsTable;\n","import RootAccounts from './RootAccounts';\n\nexport default RootAccounts;\n","import PageLayout from '@components/PageLayout';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Heading } from '@puppet/react-components';\nimport Breadcrumbs, {\n BreadcrumbsType,\n} from '@components/Breadcrumbs/Breadcrumbs';\nimport RootAccountsTable from '@views/RootAccounts/components/RootAccountsTable';\n\nconst RootAccounts = () => {\n const { t } = useTranslation('codeDelivery');\n\n const breadcrumbs: BreadcrumbsType = [\n {\n displayName: t('root.accounts.breadcrumbs.root.console'),\n },\n {\n displayName: t('root.accounts.breadcrumbs.root.accounts'),\n },\n ];\n\n return (\n \n \n \n \n \n {t('root.accounts.header')}\n \n \n \n \n \n );\n};\n\nexport default RootAccounts;\n","import PublicRoute from './PublicRoute';\n\nexport default PublicRoute;\n","import PageLoader from '@components/PageLoader';\nimport React from 'react';\nimport { useGetUserV1 } from '@services/cd4pe/users';\nimport { Navigate, Outlet } from 'react-router-dom';\nimport { getAuthCookie } from '@utils/api/helpers';\n\nconst PublicRoute = () => {\n const {\n data: user,\n isLoading,\n isFetching,\n } = useGetUserV1({ enabled: !!getAuthCookie() });\n\n if (isLoading && isFetching) {\n return ;\n }\n\n return user ? : ;\n};\n\nexport default PublicRoute;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { NavLink, useLocation, useNavigate } from 'react-router-dom';\nimport {\n Sidebar,\n ActionSelect,\n TooltipHoverArea,\n} from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport { LINKS } from 'src/routes';\nimport getDefaultRoute from '@utils/getDefaultRoute';\n\nconst AppSidebar = ({\n workspaceName,\n userName,\n version,\n workspaceActions,\n handleSignOut,\n rootConsolePage,\n}) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const location = useLocation();\n\n const getWorkspaceSelectionSection = () => {\n if (workspaceActions.length === 0) {\n return (\n \n \n \n );\n }\n\n const profilePaths = [\n userName\n ? LINKS.username.profile({ path: { username: userName } })\n : null,\n userName ? LINKS.cd4pe.messages({ path: { username: userName } }) : null,\n LINKS.cd4pe.root,\n LINKS.cd4pe.rootSettings,\n LINKS.cd4pe.rootWorkspaces,\n ].filter((l) => l !== null);\n\n const label =\n rootConsolePage || profilePaths.includes(location.pathname)\n ? userName\n : workspaceName;\n\n return (\n \n \n \n );\n };\n\n const getInventorySection = () => {\n if (!workspaceName || rootConsolePage) return null;\n\n return (\n \n \n \n \n );\n };\n\n const getRootConsoleSection = () => {\n if (!rootConsolePage) return null;\n\n return (\n \n \n \n \n \n \n \n );\n };\n\n const getCodeDeliverySection = () => {\n if (!workspaceName) return null;\n if (rootConsolePage) return null;\n\n return (\n \n \n \n \n \n \n );\n };\n\n const getWorkspaceSection = () => {\n const items = [];\n if (workspaceName && !rootConsolePage) {\n items.push(\n ,\n );\n }\n\n if (userName || workspaceName) {\n items.push(\n ,\n );\n }\n\n items.push(\n ,\n );\n\n return (\n \n {items}\n \n );\n };\n\n const sections = [\n getWorkspaceSelectionSection(),\n getRootConsoleSection(),\n getInventorySection(),\n getCodeDeliverySection(),\n getWorkspaceSection(),\n ].filter(Boolean);\n\n const renderFooter = () => {\n const sidebarFooter = (\n {\n navigate(LINKS.username.profile({ path: { username: userName } }));\n }}\n username={userName}\n version={version}\n enableSignout\n onSignout={handleSignOut}\n tooltip={t('sidebar.section.user.item.signOut')}\n />\n );\n\n const usernameTooLong = userName && userName.length >= 18;\n const versionTooLong = version && version.length >= 11;\n const displayTooltip = usernameTooLong || versionTooLong;\n if (displayTooltip) {\n return (\n \n
\n {t('sidebar.section.footer.item.username', {\n userName,\n })}\n
\n
\n {t('sidebar.section.footer.item.version', {\n version,\n })}\n
\n \n }\n anchor=\"top\"\n style={{ textAlign: 'left' }}\n >\n {sidebarFooter}\n \n );\n }\n return sidebarFooter;\n };\n\n return (\n \n \n {sections}\n {renderFooter()}\n \n );\n};\n\nAppSidebar.propTypes = {\n workspaceName: PropTypes.string,\n userName: PropTypes.string,\n version: PropTypes.string.isRequired,\n workspaceActions: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string,\n label: PropTypes.string,\n onClick: PropTypes.func,\n }),\n ).isRequired,\n handleSignOut: PropTypes.func.isRequired,\n rootConsolePage: PropTypes.bool.isRequired,\n};\n\nAppSidebar.defaultProps = {\n workspaceName: '',\n userName: '',\n};\n\nexport default AppSidebar;\n","import Sidebar from './Sidebar';\n\nexport default Sidebar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useNavigate } from 'react-router-dom';\nimport Sidebar from '@components/Sidebar';\nimport { useDispatch, useSelector } from 'react-redux';\nimport {\n isInitialized,\n selectUser,\n selectWorkspaceName,\n selectWorkspaces,\n} from '@state/session/selectors';\nimport { useTranslation } from 'react-i18next';\nimport getDefaultRoute from '@utils/getDefaultRoute';\nimport session from '@state/session/session';\nimport { LINKS } from 'src/routes';\nimport { useSignOut } from '@services/cd4pe/auth';\n\nconst ROOT_USERNAME = 'root';\n\nconst LeftNav = ({ visible, version }) => {\n const dispatch = useDispatch();\n const navigate = useNavigate();\n const workspaceName = useSelector((state) => selectWorkspaceName(state));\n const initialized = useSelector((state) => isInitialized(state));\n const workspaces = useSelector((state) => selectWorkspaces(state));\n const { userName, superUser } = useSelector((state) => selectUser(state));\n const { t } = useTranslation();\n const signOut = useSignOut();\n\n if (!initialized || !visible) {\n return null;\n }\n const handleSelectWorkspace = (workspace, rootConsolePage) => {\n try {\n if (rootConsolePage) {\n // TODO: use `history.push` once root and workspace pages are natively in teams UI\n window.location.href = LINKS.codeDelivery.listRepositories({\n path: { workspace },\n });\n } else {\n const newUrl = getDefaultRoute({\n workspaceName: workspace,\n userName,\n });\n window.location.href = newUrl; // This is a temp work around to reload the same cd4pe web component with a new workspace.\n }\n } catch (e) {\n log.error(e);\n navigate('/');\n }\n };\n\n const handleManageWorkspaces = () => {\n try {\n navigate(LINKS.cd4pe.manageWorkspaces({ path: { username: userName } }));\n } catch (e) {\n log.error(e);\n }\n };\n\n const handleRootConsole = () => {\n try {\n // TODO: use `history.push` once root and workspace pages are natively in teams UI\n window.location.href = LINKS.cd4pe.root;\n } catch (e) {\n log.error(e);\n }\n };\n\n const handleSignOut = async () => {\n const signedOut = await signOut.mutateAsync();\n if (signedOut) {\n dispatch(session.actions.resetSession());\n navigate(LINKS.login({}));\n }\n };\n\n // Note: the exact check CD4PE use is window.location.pathname.contains('root')\n // we're avoiding this because any other apps including that word in a url would break this\n\n const rootConsolePage =\n window.location.pathname.startsWith(LINKS.cd4pe.root) ||\n window.location.pathname.startsWith(LINKS.root.root);\n\n const workspaceActions = [];\n if (userName !== ROOT_USERNAME) {\n workspaceActions.push({\n id: 'manageWorkspaces',\n label: t('leftnav.workspaces.options.manage'),\n onClick: () => handleManageWorkspaces(),\n });\n }\n if (superUser && !(rootConsolePage && userName === ROOT_USERNAME)) {\n workspaceActions.push({\n id: 'rootConsole',\n label: t('leftnav.workspaces.options.root'),\n onClick: () => handleRootConsole(),\n });\n }\n if (userName) {\n workspaceActions.push({\n id: userName,\n label: userName,\n onClick: () =>\n navigate(LINKS.username.profile({ path: { username: userName } })),\n });\n }\n\n workspaceActions.push(\n ...workspaces.map((w) => ({\n id: w.name,\n label: w.name,\n onClick: () => handleSelectWorkspace(w.name, rootConsolePage),\n })),\n );\n\n return (\n \n );\n};\n\nLeftNav.propTypes = {\n version: PropTypes.string.isRequired,\n visible: PropTypes.bool,\n};\n\nLeftNav.defaultProps = {\n visible: true,\n};\n\nexport default LeftNav;\n","import LeftNav from './LeftNav';\n\nexport default LeftNav;\n","import Layout from './Layout';\n\nexport default Layout;\n","import React, { PropsWithChildren } from 'react';\nimport classnames from 'classnames';\nimport { Outlet } from 'react-router-dom';\nimport LeftNav from '@views/LeftNav';\nimport { ROUTE_TYPES } from '@utils/constants';\nimport config from '../../config';\n\ninterface Props {\n routeType: string;\n}\n\nconst renderContent = (routeType: string, content: React.ReactNode) => {\n if (routeType === ROUTE_TYPES.codeDelivery) {\n return (\n
\n \n
\n );\n }\n if (routeType === ROUTE_TYPES.inventory) {\n return ;\n }\n\n return content;\n};\n\nconst Layout = ({ routeType, children }: PropsWithChildren) => {\n return (\n <>\n \n
\n \n {renderContent(routeType, children)}\n \n
\n \n );\n};\n\nexport default Layout;\n","export const loadScript = ({\n src,\n scriptId,\n onLoadHandler,\n onErrorHandler,\n}) => {\n if (!src) return;\n\n const bundleUrl = new URL(src);\n const bundlePath = `${bundleUrl.pathname}${bundleUrl.search}`;\n const script = document.createElement('script');\n script.id = scriptId;\n script.src = bundlePath;\n script.onload = onLoadHandler;\n script.onerror = onErrorHandler;\n\n try {\n document.head.appendChild(script);\n } catch (e) {\n log.error(e);\n }\n};\n\nexport const unloadScript = (scriptId) => {\n const jsScript = document.getElementById(scriptId);\n if (jsScript === null) return;\n\n try {\n document.head.removeChild(jsScript);\n } catch (e) {\n log.error(e);\n }\n};\n\nexport const getPageStyles = () => {\n const htmlCollection = document.head.getElementsByTagName('style');\n return [...htmlCollection];\n};\n\nexport const restorePageStyles = (oldStyles) => {\n const currentStyles = getPageStyles();\n currentStyles.forEach((style) => {\n if (style !== null && !oldStyles.includes(style)) {\n try {\n document.head.removeChild(style);\n } catch (e) {\n log.error(e);\n }\n }\n });\n};\n","import React, { useEffect, useState, useMemo, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { useLocation, useParams, useNavigate } from 'react-router-dom';\nimport { useDispatch } from 'react-redux';\nimport { PROXY_HEADER } from 'utils/constants';\nimport {\n loadScript,\n getPageStyles,\n unloadScript,\n restorePageStyles,\n} from 'utils/cd4pePageLoader';\n\nconst Cd4pe = ({ pageTitle }) => {\n const scriptId = `cd4pe-script-${pageTitle}`;\n const [error, setError] = useState(null);\n const [scriptLoaded, setScriptLoaded] = useState(false);\n const location = useLocation();\n const navigate = useNavigate();\n const { workspace: urlWorkspace } = useParams();\n const dispatch = useDispatch();\n\n const [preLoadStyles, setPreLoadStyles] = useState([]);\n const preLoadStylesRef = useRef();\n\n useEffect(() => {\n preLoadStylesRef.current = preLoadStyles;\n }, [preLoadStyles]);\n\n useEffect(() => {\n setPreLoadStyles(getPageStyles());\n return () => {\n if (pageTitle) {\n // A handful of routes in CD4PE are just pass-through routes and don't actually render a page. Do not attempt to unload page styles in this case.\n unloadScript(scriptId);\n }\n restorePageStyles(preLoadStylesRef.current);\n };\n }, [scriptId, pageTitle]);\n\n useEffect(() => {\n const parseCd4peHtml = async (response) => {\n const html = await response.text();\n const parser = new DOMParser();\n const doc = parser.parseFromString(html, 'text/html');\n const pagePropsScript = doc.scripts.namedItem('cd4pe-page-props');\n const bundleScript = doc.scripts.namedItem('cd4pe-js-bundle');\n let pageProps = {};\n\n // Apply cd4pe PAGE_PROPS hydrating state object\n if (pagePropsScript?.text) {\n pageProps = JSON.parse(\n pagePropsScript.text\n .replace('window.PAGE_PROPS = {', '{')\n .replace(/};([^};]*)$/, '}$1'), // replace last instance of '};' with '}'\n );\n\n // Allows CD4PE's frontend to continue as normal as it relies on this object being present in the window scope.\n window.PAGE_PROPS = pageProps;\n }\n\n return bundleScript;\n };\n\n const fetchCd4e = async () => {\n try {\n setError(false);\n const response = await fetch(`${location.pathname}${location.search}`, {\n method: 'GET',\n headers: new Headers({ [PROXY_HEADER.key]: PROXY_HEADER.value }),\n credentials: 'include',\n mode: 'cors',\n });\n\n if (response.redirected) {\n log.info('CD4PE has performed a redirect');\n const url = new URL(response.url);\n navigate(`${url.pathname}${url.search}`, { replace: true });\n return;\n }\n\n const bundleScript = await parseCd4peHtml(response);\n\n loadScript({\n src: bundleScript?.src,\n scriptId,\n onErrorHandler: (err) => {\n setError(err.message);\n },\n onLoadHandler: () => {\n setScriptLoaded(true);\n },\n });\n } catch (e) {\n log.error('Error fetching cd4pe route', e);\n }\n };\n\n fetchCd4e();\n }, [pageTitle, location, navigate, dispatch, urlWorkspace, scriptId]);\n\n const WebComponent = useMemo(\n () => React.createElement(`cd4pe-${pageTitle}`),\n [pageTitle],\n );\n\n return (\n
\n {error &&
{error}
}\n {scriptLoaded && WebComponent}\n
\n );\n};\n\nCd4pe.propTypes = {\n pageTitle: PropTypes.string.isRequired,\n};\n\nexport default Cd4pe;\n","import Cd4pe from './Cd4pe';\n\nexport default Cd4pe;\n","import React from 'react';\nimport { Route } from 'react-router-dom';\nimport Layout from '@components/Layout';\nimport Cd4pePage from '@views/Cd4pe';\nimport { ROUTE_TYPES } from '@utils/constants';\nimport { getSegment } from 'src/routes';\n\nconst getElement = (pageTitle: string, isPublic = false) =>\n isPublic ? (\n
\n \n
\n ) : (\n \n \n \n );\n\nconst Cd4pe = (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n);\n\nexport default Cd4pe;\n","import Cd4pe from './cd4pe';\n\nexport default Cd4pe;\n","import React, { useRef } from 'react';\n\nexport type RefListGetter = (\n id?: K | null,\n) => React.RefObject | null;\n\nexport type RefListSetter = (\n id: K,\n) => React.RefObject | null;\n\nconst setRefById =\n (allRefs: Map>): RefListSetter =>\n (id) => {\n if (id === null || id === undefined) {\n return null;\n }\n\n if (allRefs.has(id)) {\n return allRefs.get(id) || null;\n }\n\n const newRef = React.createRef();\n allRefs.set(id, newRef);\n\n return newRef;\n };\n\nconst getRefById =\n (allRefs: Map>): RefListGetter =>\n (id) => {\n if (id === null || id === undefined) {\n return null;\n }\n\n return allRefs.get(id) || null;\n };\n\n/**\n * Lets you keep a dynamic list of ref objects. Returns an array of functions\n * for getting and setting a ref by id ([getter, setter]).\n *\n * Example:\n *\n * const [getRef, setRef] = useRefList();\n *\n * const buttonList = [1, 2, 3, 4];\n *\n * return (\n * {buttonList.map((b) => )}\n * );\n */\nconst useRefList = (): [\n RefListGetter,\n RefListSetter,\n] => {\n const allRefs = useRef(new Map>());\n\n return [getRefById(allRefs.current), setRefById(allRefs.current)];\n};\n\nexport default useRefList;\n","import {\n formatDistanceToNow as fnsFormatDistanceToNow,\n format,\n isValid,\n intervalToDuration,\n toDate,\n} from 'date-fns';\nimport { enUS, enGB } from 'date-fns/locale';\n\nconst SECONDS_IN_A_DAY = 86400;\nconst DEFAULT_LABELS = {\n years: 'y',\n months: 'M',\n days: 'd',\n hours: 'h',\n minutes: 'm',\n seconds: 's',\n};\nconst fnsLocales = { enUS, enGB };\n\nexport const formatDistanceToNow = (date, locale, options = {}) => {\n return fnsFormatDistanceToNow(date, {\n locale: fnsLocales[locale],\n ...options,\n });\n};\n\nexport const getFormattedDate = (rawDate) => {\n const date = new Date(rawDate);\n return isValid(date) ? format(date, 'yyyy-MM-dd HH:mm:ss') : null;\n};\n\n// returns seconds formatted as hh:mm:ss\n// if seconds amount to greater than a day return 23:59:59\nexport const getFormattedSeconds = (seconds) => {\n const secondsToFormat = seconds ?? 0;\n\n let date;\n if (secondsToFormat >= SECONDS_IN_A_DAY) {\n date = new Date((SECONDS_IN_A_DAY - 1) * 1000);\n } else {\n date = new Date(secondsToFormat * 1000);\n }\n\n return isValid(date) ? date.toISOString().substr(11, 8) : '00:00:00';\n};\n\nexport const monthDayYearTime = (millis) => {\n const date = new Date(millis);\n\n return new Intl.DateTimeFormat('en', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n }).format(date);\n};\n\nconst isTooLong = (duration, errorAt) => {\n if (!duration || !errorAt) {\n return true;\n }\n return duration[errorAt] !== 0;\n};\n\nconst durationLabels = (labelOverrides) =>\n !labelOverrides\n ? { ...DEFAULT_LABELS }\n : { ...DEFAULT_LABELS, ...labelOverrides };\n\nconst removeZeroValues = (duration) =>\n Object.keys(duration).filter((k) => duration[k] !== 0);\n\nconst buildDurationString = (duration, labels) =>\n removeZeroValues(duration).reduce(\n (durationStr, k) => `${durationStr} ${duration[k]}${labels[k]}`,\n '',\n ) || `0${labels.seconds}`;\n\n/**\n *\n * @typedef {Object} DurationLabels Structure of a object for overriding duration labels\n * @property {string} [years] Label to be used for years\n * @property {string} [months] Label to be used for months\n * @property {string} [days] Label to be used for days\n * @property {string} [hours] Label to be used for hours\n * @property {string} [minutes] Label to be used for minutes\n * @property {string} [seconds] Label to be used for seconds\n */\n\n/**\n * Generates a string representing the time between two dates.\n * @param {number} start Interval start time in milliseconds\n * @param {?number} end Interval end time in milliseconds. If null then current time is used.\n * @param {Object} [options] Additional options for formatting.\n * @param {string} [options.errorAt=months] ditional options for formatting.\n * @param {DurationLabels} [options.labels] Object containing labels that should override the default labels.\n *\n * @return {string} String representation of time between dates.\n */\nexport const getFormattedDuration = (\n start,\n end,\n options = { errorAt: 'months' },\n) => {\n if (!isValid(start) || (end !== null && !isValid(end))) {\n return 'ERROR';\n }\n\n const duration = intervalToDuration({\n start: toDate(start),\n end: end === null ? new Date() : toDate(end),\n });\n\n if (isTooLong(duration, options.errorAt)) {\n return 'TOO_LONG';\n }\n\n return buildDurationString(duration, durationLabels(options.labels));\n};\n","import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n handleQueryRequest,\n JobsV1Service,\n MutationHook,\n QueryHook,\n} from '@utils/api/cd4pe';\n\nconst JOB_TEMPLATES_QUERY_TAG = 'jobTemplates';\nconst JOB_INSTANCES_QUERY_TAG = 'jobInstances';\nconst JOB_INSTANCES_LOG_QUERY_TAG = 'jobInstancesLog';\n\ntype UseListTemplatesV1 = QueryHook<\n typeof JobsV1Service,\n 'listTemplatesV1',\n Cd4peApiError\n>;\n\nexport type UseListTemplatesV1Result = ReturnType;\n\nexport const useListTemplatesV1: UseListTemplatesV1 = (payload) =>\n useQuery(\n [JOB_TEMPLATES_QUERY_TAG],\n () => handleQueryRequest(JobsV1Service.listTemplatesV1(payload)),\n { staleTime: 300000 },\n );\n\ntype UseDeleteTemplateV1 = MutationHook<\n typeof JobsV1Service,\n 'deleteTemplateV1',\n Cd4peApiError\n>;\n\nexport type UseDeleteTemplateV1Result = ReturnType;\n\nexport const useDeleteTemplateV1: UseDeleteTemplateV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (p) => handleQueryRequest(JobsV1Service.deleteTemplateV1(p)),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([JOB_TEMPLATES_QUERY_TAG]);\n },\n },\n );\n};\n\ntype UseCreateTemplateV1 = MutationHook<\n typeof JobsV1Service,\n 'createTemplateV1',\n Cd4peApiError\n>;\n\nexport type UseCreateTemplateV1Result = ReturnType;\n\nexport const useCreateTemplateV1: UseCreateTemplateV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (p) => handleQueryRequest(JobsV1Service.createTemplateV1(p)),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([JOB_TEMPLATES_QUERY_TAG]);\n },\n },\n );\n};\n\ntype UseReplaceTemplateV1 = MutationHook<\n typeof JobsV1Service,\n 'replaceTemplateV1',\n Cd4peApiError\n>;\n\nexport type UseReplaceTemplateV1Result = ReturnType;\n\nexport const useReplaceTemplateV1: UseReplaceTemplateV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (p) => handleQueryRequest(JobsV1Service.replaceTemplateV1(p)),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([JOB_TEMPLATES_QUERY_TAG, payload.id]);\n queryClient.invalidateQueries([JOB_TEMPLATES_QUERY_TAG]);\n },\n },\n );\n};\n\ntype UseGetTemplateV1 = QueryHook<\n typeof JobsV1Service,\n 'getTemplateV1',\n Cd4peApiError\n>;\n\nexport type UseGetTemplateV1Result = ReturnType;\n\nexport const useGetTemplateV1: UseGetTemplateV1 = (payload) =>\n useQuery(\n [JOB_TEMPLATES_QUERY_TAG, payload.id],\n () => handleQueryRequest(JobsV1Service.getTemplateV1(payload)),\n { staleTime: 300000 },\n );\n\ntype UseGetJobInstanceV1 = QueryHook<\n typeof JobsV1Service,\n 'getJobInstanceV1',\n Cd4peApiError\n>;\n\nexport const useGetJobInstanceV1: UseGetJobInstanceV1 = (payload, options) => {\n const queryClient = useQueryClient();\n return useQuery(\n [JOB_INSTANCES_QUERY_TAG, payload.instanceId],\n () => handleQueryRequest(JobsV1Service.getJobInstanceV1(payload)),\n {\n onSuccess: () =>\n queryClient.invalidateQueries([\n JOB_INSTANCES_LOG_QUERY_TAG,\n payload.instanceId,\n ]),\n ...options,\n },\n );\n};\n\ntype UseRerunJobInstanceV1 = MutationHook<\n typeof JobsV1Service,\n 'rerunJobInstanceV1',\n Cd4peApiError\n>;\n\nexport const useRerunJobInstanceV1: UseRerunJobInstanceV1 = () => {\n return useMutation((p) =>\n handleQueryRequest(JobsV1Service.rerunJobInstanceV1(p)),\n );\n};\n\ntype UseGetJobInstanceLogV1 = QueryHook<\n typeof JobsV1Service,\n 'getJobInstanceLogV1',\n Cd4peApiError\n>;\n\nexport const useGetJobInstanceLogV1: UseGetJobInstanceLogV1 = (payload) =>\n useQuery([JOB_INSTANCES_LOG_QUERY_TAG, payload.instanceId], () =>\n handleQueryRequest(JobsV1Service.getJobInstanceLogV1(payload)),\n );\n","import { ActionCreatorsMapObject } from 'redux';\n\nexport interface Action {\n type: T;\n}\n\nexport interface ActionWithPayload extends Action {\n payload: P;\n}\n\ntype ActionCreator = {\n (type: T): Action;\n (type: T, payload: P): ActionWithPayload;\n};\n\nconst actionCreator: ActionCreator = (\n type: T,\n payload?: P,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): any => (payload !== undefined ? { type, payload } : { type });\n\nexport type Actions = ReturnType;\n\nexport default actionCreator;\n","export const TOGGLE_CONFIRM_JOB_TEMPLATE_DELETE =\n 'TOGGLE_CONFIRM_JOB_TEMPLATE_DELETE';\nexport const SORT_JOB_TEMPLATES = 'SORT_JOB_TEMPLATES';\nexport const FILTER_JOB_TEMPLATES = 'FILTER_JOB_TEMPLATES';\n","import { Dispatch } from 'react';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport { JobTemplateSummaryV1 } from '@utils/api/cd4pe';\nimport { numberCompare, stringCompare } from '@utils/compare';\nimport * as at from './actionTypes';\n\ntype SortDirection = 'desc' | 'asc';\ntype SortKey = keyof Omit;\nexport interface SortData {\n sortDataKey: SortKey;\n direction: SortDirection;\n}\n\nexport const listJobTemplateActions = {\n toggleConfirmJobTemplateDelete: (jobTemplateId: number | null) =>\n actionCreator(at.TOGGLE_CONFIRM_JOB_TEMPLATE_DELETE, jobTemplateId),\n setSort: (payload: SortData) => actionCreator(at.SORT_JOB_TEMPLATES, payload),\n setQuery: (payload: string) =>\n actionCreator(at.FILTER_JOB_TEMPLATES, payload),\n};\n\nexport type JobTemplateListActions = Actions;\n\nexport const JOB_TEMPLATE_SORTS: {\n [K in SortKey]: (\n direction: SortDirection,\n ) => (a: JobTemplateSummaryV1, b: JobTemplateSummaryV1) => number;\n} = {\n name:\n (direction: SortDirection) =>\n ({ name: a }: JobTemplateSummaryV1, { name: b }: JobTemplateSummaryV1) =>\n (direction === 'asc' ? 1 : -1) * stringCompare(a, b),\n description:\n (direction: SortDirection) =>\n (\n { description: a }: JobTemplateSummaryV1,\n { description: b }: JobTemplateSummaryV1,\n ) =>\n (direction === 'asc' ? 1 : -1) * stringCompare(a, b),\n lastRunTime:\n (direction: SortDirection) =>\n (\n { lastRunTime: a }: JobTemplateSummaryV1,\n { lastRunTime: b }: JobTemplateSummaryV1,\n ) =>\n (direction === 'asc' ? 1 : -1) * numberCompare(a || 0, b || 0),\n};\n\nexport const toggleConfirmJobTemplateDelete = (\n dispatch: Dispatch,\n jobTemplateId: number | null = null,\n) => {\n dispatch(\n listJobTemplateActions.toggleConfirmJobTemplateDelete(jobTemplateId),\n );\n};\n","import { JobTemplateListActions, SortData } from './actions';\nimport * as at from './actionTypes';\n\nexport interface JobTemplateListState {\n query: string;\n confirmDeleteId: null | number;\n buttonRefs: object;\n sort: SortData;\n}\n\nexport const JobTemplateListDefaultState: JobTemplateListState = {\n query: '',\n confirmDeleteId: null,\n buttonRefs: {},\n sort: {\n direction: 'asc',\n sortDataKey: 'name',\n },\n};\n\nexport const reducer = (\n state: JobTemplateListState,\n action: JobTemplateListActions,\n): JobTemplateListState => {\n switch (action.type) {\n case at.TOGGLE_CONFIRM_JOB_TEMPLATE_DELETE:\n return {\n ...state,\n confirmDeleteId: action.payload ?? null,\n };\n case at.FILTER_JOB_TEMPLATES:\n return {\n ...state,\n query: action.payload,\n };\n case at.SORT_JOB_TEMPLATES:\n return {\n ...state,\n sort: action.payload,\n };\n default:\n return state;\n }\n};\n","import React, { useReducer, Dispatch, useMemo } from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { Trans, TFunction, useTranslation } from 'react-i18next';\nimport {\n Button,\n Heading,\n Input,\n Link,\n Loading,\n Overlay,\n Text,\n TooltipHoverArea,\n} from '@puppet/react-components';\nimport { Table } from '@puppet/data-grid';\nimport useRefList, { RefListSetter } from '@hooks/useRefList';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { JobTemplateSummaryV1 } from '@utils/api/cd4pe';\nimport { formatDistanceToNow } from '@utils/date';\nimport {\n useDeleteTemplateV1,\n useListTemplatesV1,\n UseListTemplatesV1Result,\n} from '@services/cd4pe/jobs';\nimport Cd4peError from '@components/Cd4peError';\nimport { LINKS } from 'src/routes';\nimport {\n JobTemplateListActions,\n toggleConfirmJobTemplateDelete,\n listJobTemplateActions,\n SortData,\n JOB_TEMPLATE_SORTS,\n} from './actions';\nimport {\n JobTemplateListDefaultState,\n JobTemplateListState,\n reducer,\n} from './reducer';\n\nconst jobTemplateActions = (\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n id: number,\n workspace: string,\n confirmDeleteId: null | number,\n setRef: RefListSetter,\n) => (\n <>\n \n \n \n \n toggleConfirmJobTemplateDelete(dispatch, id)}\n disabled={confirmDeleteId === id}\n />\n \n \n);\n\nconst jobTemplateToRow = (\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n workspace: string,\n jobTemplate: JobTemplateSummaryV1,\n confirmDeleteId: null | number,\n setRef: RefListSetter,\n locale: string,\n) => ({\n id: jobTemplate.id,\n name: jobTemplate.name,\n description: jobTemplate.description,\n lastRunTime: jobTemplate.lastRunTime\n ? formatDistanceToNow(jobTemplate.lastRunTime, locale, {\n addSuffix: true,\n })\n : t('jobTemplateList.table.latestRun.noRuns'),\n actions: jobTemplateActions(\n t,\n dispatch,\n jobTemplate.id,\n workspace,\n confirmDeleteId,\n setRef,\n ),\n});\n\nconst tableColumns = (t: TFunction<'codeDelivery'>) => {\n return [\n {\n label: t('jobTemplateList.table.header.name'),\n dataKey: 'name',\n sortable: true,\n className: 'job-template-list-table__cell--truncate',\n },\n {\n label: t('jobTemplateList.table.header.description'),\n dataKey: 'description',\n sortable: true,\n className: 'job-template-list-table__cell--truncate',\n },\n {\n label: t('jobTemplateList.table.header.latestRun'),\n dataKey: 'lastRunTime',\n sortable: true,\n className:\n 'job-template-list-table__cell--truncate job-template-list-table__cell-latest-run',\n },\n {\n label: t('jobTemplateList.table.header.actions'),\n dataKey: 'actions',\n className: 'job-template-list-table__cell-actions',\n style: { textAlign: 'right' },\n },\n ];\n};\n\nconst jobTemplatesTable = (\n t: TFunction<'codeDelivery'>,\n state: JobTemplateListState,\n dispatch: Dispatch,\n workspace: string,\n setRef: RefListSetter,\n locale: string,\n templates: JobTemplateSummaryV1[],\n) => {\n const rows = templates.map((template) =>\n jobTemplateToRow(\n t,\n dispatch,\n workspace,\n template,\n state.confirmDeleteId,\n setRef,\n locale,\n ),\n );\n const columns = tableColumns(t);\n const onSort = (\n direction: SortData['direction'],\n sortDataKey: SortData['sortDataKey'],\n ) => dispatch(listJobTemplateActions.setSort({ direction, sortDataKey }));\n\n const createJobCta = (\n ,\n ]}\n >\n {t('jobTemplateList.table.empty.messageBody')}\n \n );\n\n return (\n \n );\n};\n\nconst body = (\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n state: JobTemplateListState,\n workspace: string,\n setRef: RefListSetter,\n locale: string,\n templateState: UseListTemplatesV1Result,\n templates: JobTemplateSummaryV1[],\n) => {\n if (templateState.error) {\n return ;\n }\n\n if (templateState.isLoading) {\n return ;\n }\n\n return (\n
\n dispatch(listJobTemplateActions.setQuery(v))}\n name=\"searchByJobName\"\n icon=\"search\"\n />\n {jobTemplatesTable(\n t,\n state,\n dispatch,\n workspace,\n setRef,\n locale,\n templates,\n )}\n
\n );\n};\n\nconst JobTemplateList = () => {\n const { t, i18n } = useTranslation('codeDelivery');\n const workspace = useWorkspaceName();\n const domain = useWorkspaceDomain();\n const [state, dispatch] = useReducer(reducer, JobTemplateListDefaultState);\n const [getRef, setRef] = useRefList();\n const templateState = useListTemplatesV1({ workspaceId: domain });\n const deleteTemplate = useDeleteTemplateV1();\n\n const templates = useMemo(() => {\n if (!templateState.data) {\n return [];\n }\n\n const allTemplates = [...templateState.data.jobTemplates].sort(\n JOB_TEMPLATE_SORTS[state.sort.sortDataKey](state.sort.direction),\n );\n\n if (!state.query) {\n return allTemplates;\n }\n\n return allTemplates.filter(({ name }) =>\n name.toLowerCase().includes(state.query),\n );\n }, [state.query, state.sort, templateState.data]);\n\n const breadcrumbs = [\n { displayName: workspace },\n { displayName: t('jobTemplateList.breadcrumbs.jobs') },\n ];\n\n const deleteError = deleteTemplate.error ? deleteTemplate.error.message : '';\n\n const showConfirmDelete =\n state.confirmDeleteId !== null\n ? `${templates.map(({ id }) => `${id}`).join()}${deleteError}`\n : false;\n\n const maybeDelete = () => {\n if (state.confirmDeleteId || state.confirmDeleteId === 0) {\n deleteTemplate.mutate({ id: state.confirmDeleteId, workspaceId: domain });\n }\n };\n\n return (\n
\n
\n \n\n
\n {t('jobTemplateList.page.title')}\n \n {t('jobTemplateList.buttons.newJob.label')}\n \n
\n\n {t('jobTemplateList.page.subtitle')}\n
\n
\n \n {body(\n t,\n dispatch,\n state,\n workspace,\n setRef,\n i18n.language,\n templateState,\n templates,\n )}\n
\n \n
\n maybeDelete()}\n loading={deleteTemplate.isLoading}\n >\n {t('jobTemplateList.buttons.delete.label')}\n \n toggleConfirmJobTemplateDelete(dispatch)}\n aria-label={t('jobTemplateList.buttons.cancel.ariaLabel')}\n >\n {t('jobTemplateList.buttons.cancel.label')}\n \n
\n \n
\n );\n};\n\nexport default JobTemplateList;\n","import JobTemplateList from './JobTemplateList';\n\nexport default JobTemplateList;\n","import React from 'react';\n\ninterface Props\n extends React.PropsWithChildren> {\n fullWidth?: boolean;\n}\n\nconst CommonFormSectionMain = ({\n children,\n className,\n fullWidth,\n ...props\n}: Props) => {\n return (\n
\n {fullWidth ? (\n children\n ) : (\n
{children}
\n )}\n
\n );\n};\n\nCommonFormSectionMain.defaultProps = {\n className: '',\n fullWidth: false,\n} as Partial;\n\nexport default CommonFormSectionMain;\n","import React from 'react';\nimport classNames from 'classnames';\n\ninterface Props\n extends React.PropsWithChildren> {\n size?: 'small' | 'medium' | 'large';\n}\n\nconst CommonFormSectionSidebar = ({\n children,\n className,\n size,\n ...props\n}: Props) => {\n return (\n \n {children}\n \n );\n};\n\nCommonFormSectionSidebar.defaultProps = {\n className: '',\n size: 'small',\n} as Partial;\n\nexport default CommonFormSectionSidebar;\n","import React from 'react';\nimport CommonFormSectionMain from './CommonFormSectionMain';\nimport CommonFormSectionSidebar from './CommonFormSectionSidebar';\n\ninterface Props\n extends React.PropsWithChildren> {}\n\nconst CommonFormSection = ({ children, className, ...props }: Props) => {\n return (\n
\n {children}\n
\n );\n};\n\nCommonFormSection.defaultProps = {\n className: '',\n} as Partial;\n\nCommonFormSection.Main = CommonFormSectionMain;\nCommonFormSection.Sidebar = CommonFormSectionSidebar;\n\nexport default CommonFormSection;\n","import React, { forwardRef, ReactElement } from 'react';\nimport { Form } from '@puppet/react-components';\nimport CommonFormSection from './CommonFormSection';\n\ntype FormValues = {\n [K in keyof T]: T[K] | undefined;\n};\n\nexport type CommonFormChangeFunction = (\n field: keyof FormState,\n values: FormValues,\n) => void;\n\ninterface Props\n extends Omit, 'onChange'> {\n className?: string;\n onChange?: CommonFormChangeFunction;\n submittable?: boolean;\n cancellable?: boolean;\n submitLabel?: string;\n cancelLabel?: string;\n onCancel?: () => void;\n values?: FormState;\n submitting?: boolean;\n error?: string | Error | null;\n submitDisabled?: boolean;\n}\n\nconst CommonFormComponent = (\n props: Props,\n ref: React.Ref,\n) => {\n const { className = '', children, ...rest } = props;\n\n return (\n
\n {children}\n
\n );\n};\n\nconst CommonForm = forwardRef(CommonFormComponent) as unknown as {\n (\n p: Props & { ref?: React.Ref },\n ): ReactElement;\n Section: typeof CommonFormSection;\n};\n\nCommonForm.Section = CommonFormSection;\n\nexport default CommonForm;\n","import CommonForm from './CommonForm';\n\nexport default CommonForm;\n","import React from 'react';\n\ninterface Props\n extends React.PropsWithChildren> {}\n\nconst DefinitionsEntryTitle = ({ children, className, ...props }: Props) => {\n return (\n
\n {children}\n
\n );\n};\n\nDefinitionsEntryTitle.defaultProps = {\n className: '',\n} as Partial;\n\nexport default DefinitionsEntryTitle;\n","import React from 'react';\n\ninterface Props\n extends React.PropsWithChildren> {}\n\nconst DefinitionsEntryContent = ({ children, className, ...props }: Props) => {\n return (\n
\n {children}\n
\n );\n};\n\nDefinitionsEntryContent.defaultProps = {\n className: '',\n} as Partial;\n\nexport default DefinitionsEntryContent;\n","import React from 'react';\nimport { Icon } from '@puppet/react-components';\nimport DefinitionsEntryTitle from './DefinitionsEntryTitle';\nimport DefinitionsEntryContent from './DefinitionsEntryContent';\n\ninterface Props\n extends React.PropsWithChildren> {\n icon?: string | null;\n}\n\nconst DefinitionsEntry = ({ children, className, icon, ...props }: Props) => {\n const modifierClass = icon === null ? 'definitions-definition--no-icon' : '';\n\n return (\n
\n {icon === null ? null : (\n \n )}\n\n
{children}
\n
\n );\n};\n\nDefinitionsEntry.Title = DefinitionsEntryTitle;\nDefinitionsEntry.Content = DefinitionsEntryContent;\n\nDefinitionsEntry.defaultProps = {\n icon: null,\n className: '',\n} as Partial;\n\nexport default DefinitionsEntry;\n","import React from 'react';\nimport DefinitionsEntry from './DefinitionsEntry';\n\ninterface Props\n extends React.PropsWithChildren> {}\n\nconst hasIcons = (children: React.ReactNode) => {\n let result = false;\n React.Children.forEach(children, (c) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n result = result || (c as any).props.icon !== null;\n });\n return result;\n};\n\nconst Definitions = ({ children, className, ...props }: Props) => {\n const modifierClass = hasIcons(children) ? '' : 'definitions--no-icons';\n\n return (\n
\n {children}\n
\n );\n};\n\nDefinitions.Entry = DefinitionsEntry;\n\nDefinitions.defaultProps = {\n className: '',\n} as Partial;\n\nexport default Definitions;\n","import Definitions from './Definitions';\n\nexport default Definitions;\n","import React, { useRef, useEffect } from 'react';\nimport { Controlled as CodeMirror } from 'react-codemirror2';\nimport classnames from 'classnames';\nimport { Icon } from '@puppet/react-components';\nimport 'codemirror/mode/shell/shell';\nimport 'codemirror/addon/comment/comment';\n\nconst codeMirrorConfig: CodeMirror.EditorConfiguration = {\n mode: 'shell',\n theme: 'dracula',\n lineNumbers: true,\n tabSize: 2,\n indentWithTabs: false,\n lineWrapping: true,\n extraKeys: {\n // For some reason, the default behavior was to use hard tabs (tab character). This fixes that:\n Tab: (cm) => {\n if (cm.somethingSelected()) {\n cm.execCommand('indentMore');\n } else {\n cm.execCommand('insertSoftTab');\n }\n },\n 'Shift-Tab': (cm) => cm.execCommand('indentLess'),\n // turns on line-block commenting / uncommenting\n 'Ctrl-/': (cm) => {\n cm.execCommand('toggleComment');\n },\n 'Cmd-/': (cm) => {\n cm.execCommand('toggleComment');\n },\n },\n autofocus: false,\n};\n\nconst defaultProps = {\n active: true,\n className: '',\n error: null,\n label: null,\n readOnly: false,\n};\n\ninterface Props {\n active?: boolean;\n className?: string;\n error?: string | null;\n label?: string | React.ReactElement;\n name: string;\n onChange: (v: string) => void;\n value: string;\n readOnly?: boolean;\n}\n\nconst renderError = (error: Props['error']) => {\n if (!error) {\n return null;\n }\n\n return (\n
\n \n {error}\n
\n );\n};\n\nconst ShellEditor = ({\n active,\n className,\n error,\n label,\n name,\n onChange,\n value,\n readOnly,\n}: Props) => {\n // If the user loads a page in which the editor is hidden by css, for example\n // if it is in a hidden tab, codemiror won't render properly. This effect hook\n // allows the consumer to pass a flag that will force a refresh when the editor becomes active\n const editorRef = useRef(null);\n useEffect(() => {\n if (editorRef.current) {\n editorRef.current.refresh();\n }\n }, [active]);\n\n // This allows the label to focus the CodeMirror editor\n useEffect(() => {\n if (!editorRef.current) {\n return;\n }\n\n const editorTextarea = editorRef.current.getInputField();\n if (editorTextarea) {\n editorTextarea.id = name;\n }\n }, [editorRef, name]);\n\n // The `shell-editor-${name} class is added to simplify finding the correct\n // CodeMirror instance during testing\n return (\n \n {label && }\n {\n editorRef.current = editor;\n }}\n autoScroll={false}\n options={{ ...codeMirrorConfig, readOnly }}\n onBeforeChange={(_editor, _data, newValue) => {\n onChange(newValue);\n }}\n />\n {renderError(error)}\n \n );\n};\n\nShellEditor.defaultProps = defaultProps;\n\nexport default ShellEditor;\n","import ShellEditor from './ShellEditor';\n\nexport default ShellEditor;\n","export const EDIT_FORM = 'EDIT_FORM';\nexport const TOGGLE_COMMANDS_VIEW = 'TOGGLE_COMMANDS_VIEW';\nexport const INITIALIZE_FORM_STATE = 'INITIALIZE_FORM_STATE';\nexport const SUBMIT_ATTEMPTED = 'SUBMIT_ATTEMPTED';\nexport const SET_RUN_IN_DOCKER = 'SET_RUN_IN_DOCKER';\nexport const SET_RUN_ON_SHARED_HARDWARE = 'SET_RUN_ON_SHARED_HARDWARE';\nexport const SET_COMMANDS = 'SET_COMMANDS';\n","import { JobTemplateActions, JobTemplateFormValues } from './actions';\nimport * as at from './actionTypes';\n\nexport interface JobTemplateState {\n formState: JobTemplateFormValues;\n isExpanded: boolean;\n commandsMissing: boolean;\n submitAttempted: boolean;\n}\n\nexport const defaultJobTemplateState: JobTemplateState = {\n formState: {\n name: '',\n description: '',\n commands: '',\n commandsSuccess: '',\n commandsError: '',\n runOnSharedHardware: true,\n runOnDefaultImage: true,\n hardwareCapabilities: [],\n runInDocker: true,\n imageName: '',\n dockerArgs: '',\n envVars: '',\n },\n isExpanded: false,\n commandsMissing: false,\n submitAttempted: false,\n};\n\nexport const reducer = (\n state: JobTemplateState,\n action: JobTemplateActions,\n): JobTemplateState => {\n switch (action.type) {\n case at.EDIT_FORM:\n return {\n ...state,\n formState: {\n ...state.formState,\n ...action.payload,\n },\n };\n case at.SET_RUN_ON_SHARED_HARDWARE:\n if (!action.payload) {\n return {\n ...state,\n formState: {\n ...state.formState,\n runInDocker: false,\n runOnSharedHardware: false,\n runOnDefaultImage: false,\n imageName: '',\n },\n };\n }\n return {\n ...state,\n formState: {\n ...state.formState,\n runOnSharedHardware: true,\n hardwareCapabilities: [],\n runInDocker: true,\n runOnDefaultImage: true,\n imageName: '',\n dockerArgs: '',\n },\n };\n case at.SET_RUN_IN_DOCKER:\n if (action.payload) {\n return {\n ...state,\n formState: {\n ...state.formState,\n runInDocker: action.payload,\n runOnDefaultImage: true,\n imageName: '',\n },\n };\n }\n return {\n ...state,\n formState: {\n ...state.formState,\n runInDocker: action.payload,\n runOnDefaultImage: false,\n imageName: '',\n dockerArgs: '',\n },\n };\n case at.SET_COMMANDS:\n return {\n ...state,\n formState: {\n ...state.formState,\n commands: action.payload,\n },\n commandsMissing: state.submitAttempted && !action.payload,\n };\n case at.SUBMIT_ATTEMPTED:\n return {\n ...state,\n submitAttempted: true,\n commandsMissing: !state.formState.commands,\n };\n case at.TOGGLE_COMMANDS_VIEW:\n return {\n ...state,\n isExpanded: !state.isExpanded,\n };\n case at.INITIALIZE_FORM_STATE:\n return {\n ...state,\n formState: action.payload,\n };\n default:\n return state;\n }\n};\n","import actionCreator, { Actions } from '@utils/actionCreator';\nimport { JobTemplateV1 } from '@utils/api/cd4pe';\nimport { Dispatch } from 'react';\nimport * as at from './actionTypes';\n\nexport interface JobTemplateFormValues {\n name: string;\n description: string;\n commands: string;\n commandsSuccess: string;\n commandsError: string;\n envVars: string;\n runOnSharedHardware: boolean;\n runOnDefaultImage: boolean;\n hardwareCapabilities: string[];\n runInDocker: boolean;\n imageName: string;\n dockerArgs: string;\n}\n\nexport const jobTemplateActions = {\n editForm: (payload: Partial) =>\n actionCreator(at.EDIT_FORM, payload),\n toggleCommandsView: () => actionCreator(at.TOGGLE_COMMANDS_VIEW),\n initializeFormState: (payload: JobTemplateFormValues) =>\n actionCreator(at.INITIALIZE_FORM_STATE, payload),\n submitAttempted: () => actionCreator(at.SUBMIT_ATTEMPTED),\n setRunOnSharedHardware: (state: boolean) =>\n actionCreator(at.SET_RUN_ON_SHARED_HARDWARE, state),\n setRunInDocker: (state: boolean) =>\n actionCreator(at.SET_RUN_IN_DOCKER, state),\n setCommands: (commands: string) => actionCreator(at.SET_COMMANDS, commands),\n};\n\nexport type JobTemplateActions = Actions;\n\nconst getDockerConfig = (jobTemplate: JobTemplateV1 | null) => {\n if (!jobTemplate) {\n return {\n runInDocker: true,\n imageName: '',\n dockerArgs: '',\n runOnDefaultImage: true,\n };\n }\n\n if (!jobTemplate.config.vmImage) {\n return {\n runInDocker: jobTemplate.config.useDefaultImage,\n imageName: '',\n dockerArgs: jobTemplate.config.vmArgs || '',\n runOnDefaultImage: jobTemplate.config.useDefaultImage,\n };\n }\n\n return {\n runInDocker: true,\n imageName: jobTemplate.config.vmImage || '',\n dockerArgs: jobTemplate.config.vmArgs || '',\n runOnDefaultImage: false,\n };\n};\n\nconst getHardwareConfig = (jobTemplate: JobTemplateV1) => {\n if (!jobTemplate || jobTemplate.config.sharedHardware) {\n return {\n runOnSharedHardware: true,\n hardwareCapabilities: [],\n ...getDockerConfig(null),\n };\n }\n\n return {\n runOnSharedHardware: false,\n hardwareCapabilities: jobTemplate.config.buildCapabilities,\n ...getDockerConfig(jobTemplate),\n };\n};\n\nexport const initializeFormState = (\n jobTemplate: JobTemplateV1 | null,\n dispatch: Dispatch,\n) => {\n if (!jobTemplate) {\n return;\n }\n\n const formState = {\n name: jobTemplate.name,\n description: jobTemplate.description || '',\n commands: jobTemplate.manifest.build,\n commandsSuccess: jobTemplate.manifest.onSuccess || '',\n commandsError: jobTemplate.manifest.onError || '',\n envVars: jobTemplate.config.buildVars || '',\n ...getHardwareConfig(jobTemplate),\n };\n\n dispatch(jobTemplateActions.initializeFormState(formState));\n};\n","import React, { Dispatch, useEffect, useReducer, useRef } from 'react';\nimport {\n Button,\n Form,\n Heading,\n Link,\n Loading,\n RadioButton,\n Text,\n TooltipHoverArea,\n} from '@puppet/react-components';\nimport { Table } from '@puppet/data-grid';\nimport { TFunction, Trans, useTranslation } from 'react-i18next';\nimport classnames from 'classnames';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { CommonFormChangeFunction } from '@components/CommonForm/CommonForm';\nimport CommonForm from '@components/CommonForm';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport Definitions from '@components/Definitions';\nimport ShellEditor from '@codeDelivery/components/ShellEditor';\nimport {\n Cd4peApiError,\n JobTemplateV1,\n ListJobHardwareCapabilitiesResponseV1,\n SecretDetailsV1,\n SharedDockerImageSettingsV1,\n} from '@utils/api/cd4pe';\nimport Cd4peError from '@components/Cd4peError';\nimport { defaultJobTemplateState, JobTemplateState, reducer } from './reducer';\nimport {\n initializeFormState,\n JobTemplateActions,\n jobTemplateActions,\n JobTemplateFormValues,\n} from './actions';\n\n/* eslint-disable react/no-unused-prop-types */\ninterface Props {\n breadcrumbs: {\n translationKey: string;\n linkDestination?: string | null;\n }[];\n titleTranslationKey: string;\n subtitleTranslationKey: string;\n // eslint-disable-next-line react/no-unused-prop-types\n defaultContainer: SharedDockerImageSettingsV1 | null;\n jobTemplate?: JobTemplateV1 | null;\n onSubmit: (formValues: JobTemplateFormValues) => void;\n onCancel: () => void;\n submitting: boolean;\n hardwareCapabilities:\n | ListJobHardwareCapabilitiesResponseV1['jobHardwareCapabilities']\n | null;\n submitTranslationKey: string;\n loading: boolean;\n loadError?: Cd4peApiError | null;\n formError?: Cd4peApiError | null;\n secrets?: SecretDetailsV1[];\n secretsError?: Cd4peApiError | null;\n onViewSecret?: (secretName: string) => void;\n onEditSecret?: (secretName: string) => void;\n onAddSecret?: () => void;\n onDeleteSecret?: (secretName: string) => void;\n}\n\n/* eslint-enable react/no-unused-prop-types */\n\nconst CLASS_PREFIX = 'job-template';\n\nconst FIELD_NAMES = {\n name: 'name',\n description: 'description',\n commands: 'commands',\n commandsSuccess: 'commandsSuccess',\n commandsError: 'commandsError',\n runOnSharedHardware: 'runOnSharedHardware',\n hardwareCapabilities: 'hardwareCapabilities',\n runInDocker: 'runInDocker',\n imageName: 'imageName',\n dockerArgs: 'dockerArgs',\n envVars: 'envVars',\n};\n\nconst transformBreadcrumbs = (\n breadcrumbs: Props['breadcrumbs'],\n workspace: string,\n t: TFunction<'codeDelivery'>,\n) => {\n const crumbs = breadcrumbs.map((b) => {\n const { translationKey, ...rest } = b;\n return {\n displayName: t(translationKey),\n ...rest,\n };\n });\n return [{ displayName: workspace }, ...crumbs];\n};\n\nconst nameSection = (t: TFunction<'codeDelivery'>) => {\n return (\n \n \n

\n {t('jobTemplate.section.name.header')}\n

\n \n {t('jobTemplate.section.name.subtitle')}\n \n \n \n
\n
\n );\n};\n\nconst expandedCommands = (\n t: TFunction<'codeDelivery'>,\n formState: JobTemplateFormValues,\n dispatch: Dispatch,\n) => {\n const successCommandsLabel = (\n \n {t('jobTemplate.fields.commandsSuccess.label')}\n \n );\n const errorCommandsLabel = (\n \n {t('jobTemplate.fields.commandsError.label')}\n \n );\n\n return (\n <>\n

\n {t('jobTemplate.section.jobCommandsSuccess.header')}\n

\n \n dispatch(jobTemplateActions.editForm({ commandsSuccess: v }))\n }\n name={FIELD_NAMES.commandsSuccess}\n label={successCommandsLabel}\n />\n

\n {t('jobTemplate.section.jobCommandsError.header')}\n

\n \n dispatch(jobTemplateActions.editForm({ commandsError: v }))\n }\n name={FIELD_NAMES.commandsError}\n label={errorCommandsLabel}\n />\n \n );\n};\n\nconst jobSecretsSection = (\n t: TFunction<'codeDelivery'>,\n {\n onAddSecret,\n onViewSecret,\n onEditSecret,\n onDeleteSecret,\n jobTemplate,\n secrets,\n secretsError,\n }: Props,\n) => {\n const columns = [\n {\n label: t('jobTemplate.section.secrets.table.header.name'),\n dataKey: 'name',\n },\n {\n label: t('jobTemplate.section.secrets.table.header.actions'),\n dataKey: 'actions',\n className: 'job-template-secrets-table__cell--actions',\n style: { textAlign: 'right' },\n },\n ];\n\n const secretDocsLink = (\n \n );\n\n if (!jobTemplate) {\n return (\n
\n

{t('jobTemplate.section.secrets.header')}

\n \n \n \n \n
\n );\n }\n\n if (!onViewSecret || !onAddSecret || !onEditSecret || !onDeleteSecret) {\n return (\n
\n

{t('jobTemplate.section.secrets.header')}

\n \n \n \n \n
\n );\n }\n\n const rows = (secrets || []).map((s) => ({\n name: (\n // eslint-disable-next-line jsx-a11y/anchor-is-valid\n onViewSecret(s.name)}\n size=\"small\"\n aria-label={s.name}\n >\n {s.name}\n \n ),\n actions: (\n <>\n \n onEditSecret(s.name)}\n />\n \n \n onDeleteSecret(s.name)}\n />\n \n \n ),\n }));\n\n const secretsTable =\n !secrets || secrets.length <= 0 ? null : (\n
\n \n \n );\n\n return (\n
\n

{t('jobTemplate.section.secrets.header')}

\n \n \n \n \n {secretsTable}\n \n
\n );\n};\n\nconst jobCommandsSection = (\n t: TFunction<'codeDelivery'>,\n state: JobTemplateState,\n props: Props,\n dispatch: Dispatch,\n) => {\n const commandsLabel = (\n \n {t('jobTemplate.fields.commands.label')}\n \n );\n\n const secretsSidebar = (\n \n {jobSecretsSection(t, props)}\n \n );\n\n const commandsHelp = (\n \n \n {t('jobTemplate.commandsSidebar.needHelp.title')}\n \n \n \n {t('jobTemplate.commandsSidebar.needHelp.link')}\n \n \n \n );\n\n return (\n \n \n \n {t('jobTemplate.section.jobCommands.header')}\n \n\n {commandsHelp}\n\n
\n
\n dispatch(jobTemplateActions.setCommands(v))}\n error={\n state.commandsMissing\n ? t('jobTemplate.error.requiredField')\n : null\n }\n name={FIELD_NAMES.commands}\n label={commandsLabel}\n />\n\n dispatch(jobTemplateActions.toggleCommandsView())}\n >\n {t('jobTemplate.button.expandCommands')}\n \n {state.isExpanded && expandedCommands(t, state.formState, dispatch)}\n
\n
\n
\n {secretsSidebar}\n
\n );\n};\n\nconst hardwareCapabilitiesSection = (\n t: TFunction<'codeDelivery'>,\n hardwareCapabilities: ListJobHardwareCapabilitiesResponseV1['jobHardwareCapabilities'],\n) => {\n const hardwareCapabilitiesLabel = (\n \n {t('jobTemplate.fields.hardwareCapabilities.label')}\n \n );\n\n const options = hardwareCapabilities.map((h) => ({\n label: h.displayName,\n value: h.displayName.toLowerCase(),\n }));\n\n return (\n \n

\n {t('jobTemplate.section.hardwareCapabilities.header')}\n

\n \n \n );\n};\n\nconst defaultDockerImage = (\n t: TFunction<'codeDelivery'>,\n imageName: string,\n) => (\n
\n \n {t('jobTemplate.section.runLocation.defaultContainer')}\n \n \n {imageName}\n \n
\n);\n\nconst dockerConfig = (\n t: TFunction<'codeDelivery'>,\n workspaceName: string,\n dispatch: Dispatch,\n imageName: string,\n formState: JobTemplateFormValues,\n) => {\n const imageNameLabel = (\n \n ]}\n />\n \n );\n\n const dockerArgsLabel = (\n \n ]}\n />\n \n );\n\n return (\n <>\n \n \n dispatch(\n jobTemplateActions.editForm({\n runOnDefaultImage: true,\n imageName: '',\n }),\n )\n }\n />\n \n dispatch(jobTemplateActions.editForm({ runOnDefaultImage: false }))\n }\n />\n \n {formState.runOnDefaultImage ? (\n defaultDockerImage(t, imageName)\n ) : (\n \n )}\n\n \n \n );\n};\nconst runInDocker = (\n t: TFunction<'codeDelivery'>,\n formState: JobTemplateFormValues,\n workspaceName: string,\n dispatch: Dispatch,\n imageName: string,\n) => {\n return (\n <>\n \n {t('jobTemplate.section.optionalConfig.subtitle')}\n \n\n \n {formState.runInDocker &&\n dockerConfig(t, workspaceName, dispatch, imageName, formState)}\n \n );\n};\n\nconst optionalConfigSection = (\n t: TFunction<'codeDelivery'>,\n formState: JobTemplateFormValues,\n workspaceName: string,\n dispatch: Dispatch,\n imageName: string,\n) => {\n const envVarsLabel = (\n \n {t('jobTemplate.fields.envVars.label')}\n \n );\n\n return (\n \n \n {t('jobTemplate.section.optionalConfig.header')}\n \n\n {!formState.runOnSharedHardware &&\n runInDocker(t, formState, workspaceName, dispatch, imageName)}\n\n \n \n );\n};\n\nconst runSection = (\n t: TFunction<'codeDelivery'>,\n formState: JobTemplateFormValues,\n props: Props,\n workspaceName: string,\n dispatch: Dispatch,\n) => {\n const imageName = props.defaultContainer?.imageName || '';\n return (\n \n \n

\n {t('jobTemplate.section.runLocation.header')}\n

\n\n \n {t('jobTemplate.section.runLocation.subtitle')}\n \n\n \n \n dispatch(jobTemplateActions.setRunOnSharedHardware(true))\n }\n />\n \n dispatch(jobTemplateActions.setRunOnSharedHardware(false))\n }\n />\n \n\n {formState.runOnSharedHardware && defaultDockerImage(t, imageName)}\n \n {!formState.runOnSharedHardware &&\n hardwareCapabilitiesSection(t, props.hardwareCapabilities || [])}\n {optionalConfigSection(t, formState, workspaceName, dispatch, imageName)}\n
\n );\n};\n\nconst pageBody = (\n t: TFunction<'codeDelivery'>,\n state: JobTemplateState,\n props: Props,\n workspaceName: string,\n dispatch: Dispatch,\n formRef: React.RefObject,\n) => {\n const { defaultContainer, hardwareCapabilities } = props;\n if (props.loading || !defaultContainer || !hardwareCapabilities) {\n return ;\n }\n\n const onChange: CommonFormChangeFunction = (\n fieldName,\n values,\n ) => {\n if (fieldName === 'runInDocker') {\n dispatch(jobTemplateActions.setRunInDocker(values.runInDocker || false));\n return;\n }\n dispatch(jobTemplateActions.editForm({ [fieldName]: values[fieldName] }));\n };\n\n const onSubmit = () => {\n if (state.formState.commands) {\n props.onSubmit(state.formState);\n }\n };\n\n return (\n \n {nameSection(t)}\n {jobCommandsSection(t, state, props, dispatch)}\n {runSection(t, state.formState, props, workspaceName, dispatch)}\n \n \n );\n};\n\nconst JobTemplate = (props: Props) => {\n const { t } = useTranslation('codeDelivery');\n const [state, dispatch] = useReducer(reducer, defaultJobTemplateState);\n const workspaceName = useWorkspaceName();\n const formRef = useRef(null);\n\n const {\n breadcrumbs,\n titleTranslationKey,\n subtitleTranslationKey,\n jobTemplate,\n loadError,\n } = props;\n\n // Since the onSubmit function for the Form component does not get called if\n // there are errors in the form, the errors for the ShellEditor cannot be correctly\n // set. This listener allows the JobTemplate component to track if the submit button\n // was clicked even if the onSubmit function isn't called.\n useEffect(() => {\n const submitInterceptor = () => {\n dispatch(jobTemplateActions.submitAttempted());\n };\n\n if (formRef.current) {\n formRef.current.addEventListener('submit', submitInterceptor, false);\n }\n });\n\n useEffect(() => {\n initializeFormState(jobTemplate || null, dispatch);\n }, [jobTemplate]);\n\n const body = loadError ? (\n \n ) : (\n pageBody(t, state, props, workspaceName, dispatch, formRef)\n );\n\n return (\n <>\n
\n \n {t(titleTranslationKey)}\n {t(subtitleTranslationKey)}\n
\n
{body}
\n \n );\n};\n\nJobTemplate.defaultProps = {\n jobTemplate: null,\n formError: null,\n} as Partial;\n\nexport default JobTemplate;\n","import JobTemplate from './JobTemplate';\n\nexport default JobTemplate;\n","import {\n Cd4peApiError,\n handleQueryRequest,\n InfiniteQueryHook,\n MutationHook,\n QueryHook,\n} from '@utils/api/cd4pe';\nimport { useMutation, useQuery, useInfiniteQuery } from '@tanstack/react-query';\nimport { JobHardwareCapabilitiesV1Service } from '@puppet/cd4pe-client-ts';\nimport queryClient from '@services/queryClient';\n\nconst CAPABILITIES_LIST_QUERY_TAG = 'listCapabilities';\nconst CAPABILITIES_NODE_LIST_QUERY_TAG = 'listCapabilitiesNodes';\nconst CAPABILITIES_GET_QUERY_TAG = 'getCapability';\n\n/**\n * useListCapabilitiesV1\n */\n\ntype UseListCapabilitiesV1 = QueryHook<\n typeof JobHardwareCapabilitiesV1Service,\n 'listCapabilitiesV1',\n Cd4peApiError\n>;\n\nexport const useListCapabilitiesV1: UseListCapabilitiesV1 = (payload) =>\n useQuery([CAPABILITIES_LIST_QUERY_TAG, payload.workspaceId], async () =>\n handleQueryRequest(\n JobHardwareCapabilitiesV1Service.listCapabilitiesV1(payload),\n ),\n );\n\n/**\n * useDeleteCapabilitiesV1\n */\n\ntype UseDeleteCapabilitiesV1 = MutationHook<\n typeof JobHardwareCapabilitiesV1Service,\n 'deleteCapabilitiesV1',\n Cd4peApiError\n>;\n\nexport const useDeleteCapabilitiesV1: UseDeleteCapabilitiesV1 = () => {\n return useMutation(\n (payload) =>\n handleQueryRequest(\n JobHardwareCapabilitiesV1Service.deleteCapabilitiesV1(payload),\n ),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n CAPABILITIES_LIST_QUERY_TAG,\n payload.workspaceId,\n ]);\n },\n },\n );\n};\n\n/**\n * useDeleteNodeFromCapabilityV1\n */\n\ntype UseDeleteNodeFromCapabilityV1 = MutationHook<\n typeof JobHardwareCapabilitiesV1Service,\n 'deleteNodeFromCapabilityV1',\n Cd4peApiError\n>;\n\nexport const useDeleteNodeFromCapabilityV1: UseDeleteNodeFromCapabilityV1 =\n () => {\n return useMutation(\n (payload) =>\n handleQueryRequest(\n JobHardwareCapabilitiesV1Service.deleteNodeFromCapabilityV1(payload),\n ),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n CAPABILITIES_LIST_QUERY_TAG,\n payload.workspaceId,\n ]);\n },\n },\n );\n };\n\n/**\n * useGetJobHardwareCapabilityV1\n */\n\ntype UseGetJobHardwareCapabilityV1 = QueryHook<\n typeof JobHardwareCapabilitiesV1Service,\n 'getJobHardwareCapabilityV1',\n Cd4peApiError\n>;\n\nexport const useGetJobHardwareCapabilityV1: UseGetJobHardwareCapabilityV1 = (\n payload,\n options = {},\n) =>\n useQuery(\n [CAPABILITIES_GET_QUERY_TAG, payload.workspaceId, payload.id],\n async () =>\n handleQueryRequest(\n JobHardwareCapabilitiesV1Service.getJobHardwareCapabilityV1(payload),\n ),\n options,\n );\n\n/**\n * useListAvailableNodesV1\n */\n\ntype UseListAvailableNodesV1 = InfiniteQueryHook<\n typeof JobHardwareCapabilitiesV1Service,\n 'listAvailableNodesV1',\n Cd4peApiError\n>;\n\nexport type UseListAvailableNodesV1Result = ReturnType;\n\nexport const useListAvailableNodesV1: UseListAvailableNodesV1 = (\n payload,\n options = {},\n) =>\n useInfiniteQuery(\n [\n CAPABILITIES_NODE_LIST_QUERY_TAG,\n payload.workspaceId,\n payload.peIntegrationName,\n payload.prefix ?? '',\n ],\n async ({ pageParam }) =>\n handleQueryRequest(\n JobHardwareCapabilitiesV1Service.listAvailableNodesV1({\n offset: pageParam,\n ...payload,\n }),\n ),\n {\n getNextPageParam: (lastPage) => lastPage.nextOffset,\n ...options,\n },\n );\n\n/*\n * useCreateHardwareCapabilityV1\n */\n\ntype UseCreateHardwareCapabilityV1 = MutationHook<\n typeof JobHardwareCapabilitiesV1Service,\n 'createCapabilitiesV1',\n Cd4peApiError\n>;\n\nexport const useCreateHardwareCapabilityV1: UseCreateHardwareCapabilityV1 =\n () =>\n useMutation((payload) =>\n handleQueryRequest(\n JobHardwareCapabilitiesV1Service.createCapabilitiesV1(payload),\n ),\n );\n\n/**\n * useUpdateHardwareCapabilityV1\n */\n\ntype UseUpdateHardwareCapabilityV1 = MutationHook<\n typeof JobHardwareCapabilitiesV1Service,\n 'updateCapabilitiesV1',\n Cd4peApiError\n>;\n\nexport const useUpdateHardwareCapabilityV1: UseUpdateHardwareCapabilityV1 =\n () =>\n useMutation(\n (payload) =>\n handleQueryRequest(\n JobHardwareCapabilitiesV1Service.updateCapabilitiesV1(payload),\n ),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n CAPABILITIES_GET_QUERY_TAG,\n payload.workspaceId,\n payload.id,\n ]);\n },\n },\n );\n","import {\n Cd4peApiError,\n handleQueryRequest,\n QueryHook,\n SharedDockerImageSettingsV1Service,\n} from '@utils/api/cd4pe';\nimport { useQuery } from '@tanstack/react-query';\n\nconst GET_SHARED_DOCKER_IMAGE_SETTINGS_QUERY_TAG =\n 'getSharedDockerImageSettings';\n\n/**\n * useGetSharedDockerImageSettingsV1\n */\ntype UseGetSharedDockerImageSettingsV1 = QueryHook<\n typeof SharedDockerImageSettingsV1Service,\n 'getSharedDockerImageSettingsV1',\n Cd4peApiError\n>;\n\nconst useGetSharedDockerImageSettingsV1: UseGetSharedDockerImageSettingsV1 =\n () =>\n useQuery([GET_SHARED_DOCKER_IMAGE_SETTINGS_QUERY_TAG], async () =>\n handleQueryRequest(\n SharedDockerImageSettingsV1Service.getSharedDockerImageSettingsV1(),\n ),\n );\n\nexport default useGetSharedDockerImageSettingsV1;\n","import React, { useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport JobTemplate from '@codeDelivery/components/JobTemplate';\nimport { JobTemplateFormValues } from '@codeDelivery/components/JobTemplate/actions';\nimport { useCreateTemplateV1 } from '@services/cd4pe/jobs';\nimport { LINKS } from 'src/routes';\nimport { useListCapabilitiesV1 } from '@services/cd4pe/hardware';\nimport useGetSharedDockerImageSettingsV1 from '@services/cd4pe/docker';\n\nconst NewJobTemplate = () => {\n const workspaceId = useWorkspaceDomain();\n const workspace = useWorkspaceName();\n const navigate = useNavigate();\n const createTemplate = useCreateTemplateV1();\n const capabilities = useListCapabilitiesV1({ workspaceId });\n const dockerContainer = useGetSharedDockerImageSettingsV1(undefined);\n\n const jobsPageUrl = LINKS.codeDelivery.listJobTemplates({\n path: { workspace },\n });\n\n useEffect(() => {\n if (createTemplate.isSuccess) {\n navigate(jobsPageUrl);\n }\n }, [createTemplate.isSuccess, jobsPageUrl, navigate]);\n\n const breadcrumbs = [\n {\n translationKey: 'newJobTemplate.breadcrumbs.jobs',\n linkDestination: jobsPageUrl,\n },\n { translationKey: 'newJobTemplate.breadcrumbs.editJob' },\n ];\n\n const onSave = (formValues: JobTemplateFormValues) => {\n if (!workspaceId || !dockerContainer.data) {\n return;\n }\n\n createTemplate.mutate({\n workspaceId,\n requestBody: {\n workspaceId,\n description: formValues.description,\n name: formValues.name,\n manifest: {\n build: formValues.commands,\n onSuccess: formValues.commandsSuccess,\n onError: formValues.commandsError,\n },\n config: {\n sharedHardware: formValues.runOnSharedHardware,\n buildCapabilities: formValues.hardwareCapabilities,\n buildVars: formValues.envVars,\n vmArgs: formValues.dockerArgs,\n vmImage: formValues.imageName,\n useDefaultImage: formValues.runOnDefaultImage,\n },\n },\n });\n };\n\n return (\n navigate(jobsPageUrl)}\n onSubmit={onSave}\n loadError={dockerContainer.error || capabilities.error}\n submitTranslationKey=\"newJobTemplate.form.submit\"\n />\n );\n};\n\nexport default NewJobTemplate;\n","import NewJobTemplate from './NewJobTemplate';\n\nexport default NewJobTemplate;\n","export const GET_JOB_SECRETS_LOADING = 'GET_JOB_SECRETS_LOADING';\nexport const GET_JOB_SECRETS_COMPLETE = 'GET_JOB_SECRETS_COMPLETE';\nexport const GET_JOB_SECRETS_ERROR = 'GET_JOB_SECRETS_ERROR';\n\nexport const CREATE_JOB_SECRET_LOADING = 'CREATE_JOB_SECRET_LOADING';\nexport const CREATE_JOB_SECRET_COMPLETE = 'CREATE_JOB_SECRET_COMPLETE';\nexport const CREATE_JOB_SECRET_ERROR = 'CREATE_JOB_SECRET_ERROR';\n\nexport const EDIT_JOB_SECRET_LOADING = 'EDIT_JOB_SECRET_LOADING';\nexport const EDIT_JOB_SECRET_COMPLETE = 'EDIT_JOB_SECRET_COMPLETE';\nexport const EDIT_JOB_SECRET_ERROR = 'EDIT_JOB_SECRET_ERROR';\n\nexport const DELETE_JOB_SECRET_LOADING = 'DELETE_JOB_SECRET_LOADING';\nexport const DELETE_JOB_SECRET_COMPLETE = 'DELETE_JOB_SECRET_COMPLETE';\nexport const DELETE_JOB_SECRET_ERROR = 'DELETE_JOB_SECRET_ERROR';\n","import actionCreator, { Actions } from '@utils/actionCreator';\nimport {\n Cd4peApiError,\n CreateSecretRequestV1,\n EditSecretRequestV1,\n handleApiRequest,\n isCd4peApiError,\n JobsV1Service,\n JobTemplateV1,\n SecretDetailsV1,\n SecretNameV1,\n SecretsV1Service,\n} from '@utils/api/cd4pe';\nimport { Dispatch } from 'react';\nimport * as at from './actionTypes';\n\nconst codeDeliveryActions = {\n createJobSecretLoading: () => actionCreator(at.CREATE_JOB_SECRET_LOADING),\n createJobSecretComplete: (secretDetails: SecretDetailsV1) =>\n actionCreator(at.CREATE_JOB_SECRET_COMPLETE, secretDetails),\n createJobSecretError: (error: Cd4peApiError) =>\n actionCreator(at.CREATE_JOB_SECRET_ERROR, error),\n getJobSecretsLoading: () => actionCreator(at.GET_JOB_SECRETS_LOADING),\n getJobSecretsComplete: (secrets: SecretDetailsV1[]) =>\n actionCreator(at.GET_JOB_SECRETS_COMPLETE, secrets),\n getJobSecretsError: (error: Cd4peApiError) =>\n actionCreator(at.GET_JOB_SECRETS_ERROR, error),\n editJobSecretLoading: () => actionCreator(at.EDIT_JOB_SECRET_LOADING),\n editJobSecretComplete: (secretDetails: SecretDetailsV1) =>\n actionCreator(at.EDIT_JOB_SECRET_COMPLETE, secretDetails),\n editJobSecretError: (error: Cd4peApiError) =>\n actionCreator(at.EDIT_JOB_SECRET_ERROR, error),\n deletJobSecretLoading: () => actionCreator(at.DELETE_JOB_SECRET_LOADING),\n deleteJobSecretComplete: (secretName: string) =>\n actionCreator(at.DELETE_JOB_SECRET_COMPLETE, secretName),\n deleteJobSecretError: (error: Cd4peApiError) =>\n actionCreator(at.DELETE_JOB_SECRET_ERROR, error),\n};\n\nexport type CodeDeliveryActions = Actions;\n\nexport const createJobSecret = async (\n { workspaceId, id }: JobTemplateV1,\n formValues: CreateSecretRequestV1,\n dispatch: Dispatch,\n) => {\n dispatch(codeDeliveryActions.createJobSecretLoading());\n\n const createResponse = await handleApiRequest(\n SecretsV1Service.createSecretV1({\n workspaceId,\n requestBody: formValues,\n }),\n );\n\n if (isCd4peApiError(createResponse)) {\n dispatch(codeDeliveryActions.createJobSecretError(createResponse));\n return;\n }\n\n const accessResponse = await handleApiRequest(\n JobsV1Service.addJobTemplateSecretAccessV1({\n workspaceId,\n id,\n requestBody: { secretName: formValues.name },\n }),\n );\n\n if (isCd4peApiError(accessResponse)) {\n dispatch(codeDeliveryActions.createJobSecretError(accessResponse));\n return;\n }\n\n dispatch(codeDeliveryActions.createJobSecretComplete(createResponse));\n};\n\nexport const listJobSecrets = async (\n { workspaceId, id }: JobTemplateV1,\n dispatch: Dispatch,\n) => {\n dispatch(codeDeliveryActions.getJobSecretsLoading());\n\n const response = await handleApiRequest(\n JobsV1Service.listJobTemplateSecretsV1({\n workspaceId,\n id,\n }),\n );\n\n if (isCd4peApiError(response)) {\n dispatch(codeDeliveryActions.getJobSecretsError(response));\n return;\n }\n\n dispatch(\n codeDeliveryActions.getJobSecretsComplete(response.jobTemplateSecrets),\n );\n};\n\nexport const editJobSecret = async (\n workspaceId: string,\n secretName: SecretNameV1,\n formValues: EditSecretRequestV1,\n dispatch: Dispatch,\n) => {\n dispatch(codeDeliveryActions.editJobSecretLoading());\n\n const editResponse = await handleApiRequest(\n SecretsV1Service.replaceSecretV1({\n workspaceId,\n secretName,\n requestBody: formValues,\n }),\n );\n\n if (isCd4peApiError(editResponse)) {\n dispatch(codeDeliveryActions.editJobSecretError(editResponse));\n return;\n }\n\n dispatch(codeDeliveryActions.editJobSecretComplete(editResponse));\n};\n\nexport const deleteJobSecret = async (\n { workspaceId }: JobTemplateV1,\n secretName: SecretNameV1,\n dispatch: Dispatch,\n) => {\n dispatch(codeDeliveryActions.deletJobSecretLoading());\n\n const deleteResponse = await handleApiRequest(\n SecretsV1Service.deleteSecretV1({ workspaceId, secretName }),\n );\n\n if (isCd4peApiError(deleteResponse)) {\n dispatch(codeDeliveryActions.deleteJobSecretError(deleteResponse));\n return;\n }\n\n dispatch(codeDeliveryActions.deleteJobSecretComplete(secretName));\n};\n","import { SecretTypeV1 } from '@utils/api/cd4pe';\n\ntype SecretDisplayType = 'password' | 'multiline' | 'usernamePassword';\n\nexport interface SecretOption {\n value: SecretTypeV1;\n type: SecretDisplayType;\n name: string;\n}\n\nexport const SECRET_TYPES: SecretOption[] = [\n {\n value: 'SSH_PRIVATE_KEY',\n type: 'multiline',\n name: 'sshPrivateKey',\n },\n {\n value: 'TLS_CERTIFICATE',\n type: 'multiline',\n name: 'tlsCertificate',\n },\n {\n value: 'TOKEN',\n type: 'password',\n name: 'token',\n },\n {\n value: 'USERNAME_PASSWORD',\n type: 'usernamePassword',\n name: 'usernamePassword',\n },\n {\n value: 'PLAIN_TEXT',\n type: 'password',\n name: 'plainText',\n },\n];\n","import React, { useEffect, useState } from 'react';\nimport { Form, Modal } from '@puppet/react-components';\nimport { TFunction, useTranslation } from 'react-i18next';\nimport { Cd4peApiError, SecretDetailsV1, SecretTypeV1 } from '@utils/api/cd4pe';\nimport { SECRET_TYPES } from '@codeDelivery/utils/secrets';\nimport { CommonFormChangeFunction } from '@components/CommonForm/CommonForm';\nimport Cd4peError from '@components/Cd4peError';\n\ninterface BaseSecretsForm {\n secretName: string;\n secretDescription: string;\n}\n\ninterface StringSecretsForm extends BaseSecretsForm {\n type: Exclude;\n secret: string;\n}\n\ninterface UsernamePasswordSecretsForm extends BaseSecretsForm {\n type: Extract;\n username: string;\n password: string;\n}\n\nexport type SecretsForm = StringSecretsForm | UsernamePasswordSecretsForm;\n\ninterface Props {\n secretDetails?: SecretDetailsV1 | null;\n onSubmit: (formValues: SecretsForm) => void;\n loading: boolean;\n error: Cd4peApiError | null;\n onCancel: () => void;\n onClose: () => void;\n}\n\nconst defaultState: SecretsForm = {\n secretName: '',\n secretDescription: '',\n type: 'SSH_PRIVATE_KEY',\n secret: '',\n};\n\nconst secretTypeToDisplayName = (secretType: SecretTypeV1) => {\n switch (secretType) {\n case 'PLAIN_TEXT':\n return 'jobTemplateSecretForm.secretTypes.plainText';\n case 'USERNAME_PASSWORD':\n return 'jobTemplateSecretForm.secretTypes.usernamePassword';\n case 'SSH_PRIVATE_KEY':\n return 'jobTemplateSecretForm.secretTypes.sshPrivateKey';\n case 'TLS_CERTIFICATE':\n return 'jobTemplateSecretForm.secretTypes.tlsCertificate';\n case 'TOKEN':\n return 'jobTemplateSecretForm.secretTypes.token';\n default:\n throw new Error(`Secret type \"${secretType}\" is not supported`);\n }\n};\n\nconst resetSecretFields = (\n secretName: string,\n secretDescription: string,\n type: SecretTypeV1,\n): SecretsForm => {\n if (type === 'USERNAME_PASSWORD') {\n return {\n secretName,\n secretDescription,\n type,\n username: '',\n password: '',\n };\n }\n\n return {\n secretName,\n secretDescription,\n type,\n secret: '',\n };\n};\n\nconst secretOptions = (t: TFunction<'codeDelivery'>) =>\n SECRET_TYPES.map((o) => ({\n value: o.value,\n label: t(secretTypeToDisplayName(o.value)),\n }));\n\nconst generateSecretFields = (\n t: TFunction<'codeDelivery'>,\n secretType: SecretTypeV1,\n viewSecret: boolean,\n setViewSecret: React.Dispatch>,\n) => {\n const trailingIcon = viewSecret ? 'private' : 'eye';\n\n if (secretType === 'USERNAME_PASSWORD') {\n return (\n <>\n \n setViewSecret(!viewSecret)}\n label={t('jobTemplateSecretForm.fields.password.label')}\n placeholder={t('jobTemplateSecretForm.fields.password.placeholder')}\n required\n />\n \n );\n }\n\n const details = SECRET_TYPES.find((o) => o.value === secretType);\n\n if (!details) {\n return null;\n }\n\n if (details.type === 'multiline') {\n const label = (\n \n {t(`jobTemplateSecretForm.fields.${details.name}.label`)}\n \n );\n\n return (\n \n );\n }\n\n return (\n setViewSecret(!viewSecret)}\n trailingButtonProps={{\n 'aria-label': t(`jobTemplateSecretForm.buttons.view.${details.name}`),\n }}\n label={t(`jobTemplateSecretForm.fields.${details.name}.label`)}\n placeholder={t(\n `jobTemplateSecretForm.fields.${details.name}.placeholder`,\n )}\n required\n />\n );\n};\n\nconst JobTemplateSecretForm = ({\n secretDetails = null,\n loading,\n error,\n onCancel,\n onClose,\n onSubmit,\n}: Props) => {\n const [state, setState] = useState(defaultState);\n const [viewSecret, setViewSecret] = useState(false);\n\n useEffect(() => {\n if (!secretDetails) {\n return;\n }\n\n setState(\n resetSecretFields(\n secretDetails.name,\n secretDetails.description || '',\n secretDetails.type,\n ),\n );\n }, [secretDetails]);\n\n const { t } = useTranslation('codeDelivery');\n\n const onFormChange: CommonFormChangeFunction = (\n field,\n values,\n ) => {\n if (field === 'secretName') {\n setState({\n ...state,\n secretName: (values[field] || '').replaceAll(/[-\\s]/g, '_'),\n });\n return;\n }\n\n if (field !== 'type') {\n setState({\n ...state,\n [field]: values[field] || '',\n });\n return;\n }\n\n setViewSecret(false);\n setState(\n resetSecretFields(\n state.secretName,\n state.secretDescription,\n values.type || 'SSH_PRIVATE_KEY',\n ),\n );\n };\n\n return (\n \n {t('jobTemplateSecretForm.page.title')}\n

{t('jobTemplateSecretForm.page.subtitle')}

\n \n \n \n \n {generateSecretFields(t, state.type, viewSecret, setViewSecret)}\n \n \n
\n );\n};\n\nexport default JobTemplateSecretForm;\n","import JobTemplateSecretForm from './JobTemplateSecretForm';\n\nexport * from './JobTemplateSecretForm';\n\nexport default JobTemplateSecretForm;\n","import React from 'react';\nimport {\n Alert,\n Button,\n Code,\n Copy,\n Modal,\n Text,\n TooltipHoverArea,\n} from '@puppet/react-components';\nimport { SecretDetailsV1, SecretEnvironmentVariableV1 } from '@utils/api/cd4pe';\nimport { useTranslation } from 'react-i18next';\nimport { stringCompare } from '@utils/compare';\n\ninterface Props {\n secretDetails: SecretDetailsV1;\n onClose: () => void;\n successSaveAlert: boolean;\n onEdit: (secretName: string) => void;\n onDelete: (secretName: string) => void;\n}\n\nconst generateSecretInfo = (variableName: SecretEnvironmentVariableV1) => (\n
\n
\n {variableName.name}\n
\n \n \n ${variableName.environmentVariable}\n \n \n
\n);\n\nconst JobTemplateSecretDetails = ({\n secretDetails,\n onClose,\n successSaveAlert,\n onEdit,\n onDelete,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n\n const successAlert = successSaveAlert ? (\n \n {t('jobTemplateSecretDetails.alerts.successSave')}\n \n ) : null;\n\n return (\n \n {successAlert}\n\n
\n {secretDetails.name}\n\n
\n \n onEdit(secretDetails.name)}\n />\n \n \n onDelete(secretDetails.name)}\n />\n \n
\n
\n \n {t('jobTemplateSecretDetails.page.subtitle')}\n \n
\n {secretDetails.environmentVariables\n .sort(({ name: s1 }, { name: s2 }) => stringCompare(s2, s1))\n .map(generateSecretInfo)}\n
\n\n \n
\n );\n};\n\nexport default JobTemplateSecretDetails;\n","import JobTemplateSecretDetails from './JobTemplateSecretDetails';\n\nexport default JobTemplateSecretDetails;\n","export const TOGGLE_MODAL = 'TOGGLE_MODAL';\nexport const TOGGLE_SELECTED_SECRET = 'TOGGLE_SELECTED_SECRET';\n","import { Dispatch } from 'react';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport { SecretDetailsV1 } from '@utils/api/cd4pe';\nimport { CodeDeliveryActions } from '@codeDelivery/utils/actions';\nimport * as at from './actionTypes';\n\nexport type JobTemplateModal =\n | 'SECRET_FORM_MODAL'\n | 'VIEW_SECRET_MODAL'\n | 'DELETE_SECRET_MODAL'\n | null;\n\nexport const editJobTemplateActions = {\n toggleModal: (modal: JobTemplateModal) =>\n actionCreator(at.TOGGLE_MODAL, modal),\n toggleSelectedSecret: (secretDetails: SecretDetailsV1 | null) =>\n actionCreator(at.TOGGLE_SELECTED_SECRET, secretDetails),\n};\n\nexport type EditJobTemplateActions =\n | Actions\n | CodeDeliveryActions;\n\nexport const viewSecretDetails = (\n secrets: SecretDetailsV1[],\n secretName: string | null,\n dispatch: Dispatch,\n) => {\n const targetSecret = secrets.find((s) => s.name === secretName);\n\n if (!targetSecret) {\n return;\n }\n\n dispatch(editJobTemplateActions.toggleSelectedSecret(targetSecret));\n dispatch(editJobTemplateActions.toggleModal('VIEW_SECRET_MODAL'));\n};\n\nexport const editSecretDetails = (\n secrets: SecretDetailsV1[],\n secretName: string | null,\n dispatch: Dispatch,\n) => {\n const targetSecret = secrets.find((s) => s.name === secretName);\n\n if (!targetSecret) {\n return;\n }\n\n dispatch(editJobTemplateActions.toggleSelectedSecret(targetSecret));\n dispatch(editJobTemplateActions.toggleModal('SECRET_FORM_MODAL'));\n};\n\nexport const deleteSecretDetails = (\n secrets: SecretDetailsV1[],\n secretName: string | null,\n dispatch: Dispatch,\n) => {\n const targetSecret = secrets.find((s) => s.name === secretName);\n\n if (!targetSecret) {\n return;\n }\n\n dispatch(editJobTemplateActions.toggleSelectedSecret(targetSecret));\n dispatch(editJobTemplateActions.toggleModal('DELETE_SECRET_MODAL'));\n};\n","import { Cd4peApiError, SecretDetailsV1 } from '@utils/api/cd4pe';\nimport * as sharedAt from '@codeDelivery/utils/actionTypes';\nimport { EditJobTemplateActions, JobTemplateModal } from './actions';\nimport * as at from './actionTypes';\n\nexport interface EditJobTemplateState {\n jobSecrets: SecretDetailsV1[];\n createJobSecretLoading: boolean;\n createJobSecretError: Cd4peApiError | null;\n createJobSecretSuccess: boolean;\n modal: JobTemplateModal;\n getJobSecretsLoading: boolean;\n getJobSecretsError: Cd4peApiError | null;\n selectedSecret: SecretDetailsV1 | null;\n editJobSecretLoading: boolean;\n editJobSecretSuccess: boolean;\n editJobSecretError: Cd4peApiError | null;\n deleteJobSecretLoading: boolean;\n deleteJobSecretError: Cd4peApiError | null;\n}\n\nexport const defaultState: EditJobTemplateState = {\n createJobSecretLoading: false,\n createJobSecretError: null,\n createJobSecretSuccess: false,\n getJobSecretsLoading: false,\n getJobSecretsError: null,\n jobSecrets: [],\n modal: null,\n selectedSecret: null,\n editJobSecretLoading: false,\n editJobSecretSuccess: false,\n editJobSecretError: null,\n deleteJobSecretLoading: false,\n deleteJobSecretError: null,\n};\n\nexport const reducer = (\n state: EditJobTemplateState,\n action: EditJobTemplateActions,\n): EditJobTemplateState => {\n switch (action.type) {\n case sharedAt.CREATE_JOB_SECRET_LOADING:\n return {\n ...state,\n createJobSecretLoading: true,\n };\n case sharedAt.CREATE_JOB_SECRET_COMPLETE:\n return {\n ...state,\n createJobSecretLoading: false,\n createJobSecretError: null,\n createJobSecretSuccess: true,\n jobSecrets: [...state.jobSecrets, action.payload],\n selectedSecret: action.payload,\n };\n case sharedAt.CREATE_JOB_SECRET_ERROR:\n return {\n ...state,\n createJobSecretLoading: false,\n createJobSecretError: action.payload,\n createJobSecretSuccess: false,\n };\n case sharedAt.GET_JOB_SECRETS_LOADING:\n return {\n ...state,\n getJobSecretsLoading: true,\n };\n case sharedAt.GET_JOB_SECRETS_COMPLETE:\n return {\n ...state,\n jobSecrets: action.payload,\n getJobSecretsError: null,\n };\n case sharedAt.GET_JOB_SECRETS_ERROR:\n return {\n ...state,\n jobSecrets: [],\n getJobSecretsError: action.payload,\n };\n case sharedAt.EDIT_JOB_SECRET_LOADING:\n return {\n ...state,\n editJobSecretLoading: true,\n };\n case sharedAt.EDIT_JOB_SECRET_COMPLETE:\n return {\n ...state,\n editJobSecretLoading: false,\n editJobSecretError: null,\n editJobSecretSuccess: true,\n jobSecrets: state.jobSecrets.map((s) =>\n s.name === action.payload.name ? action.payload : s,\n ),\n selectedSecret: action.payload,\n };\n case sharedAt.EDIT_JOB_SECRET_ERROR:\n return {\n ...state,\n editJobSecretLoading: false,\n editJobSecretError: action.payload,\n editJobSecretSuccess: false,\n };\n case sharedAt.DELETE_JOB_SECRET_LOADING:\n return {\n ...state,\n deleteJobSecretLoading: true,\n };\n case sharedAt.DELETE_JOB_SECRET_COMPLETE:\n return {\n ...state,\n deleteJobSecretLoading: false,\n deleteJobSecretError: null,\n selectedSecret: null,\n modal: null,\n jobSecrets: state.jobSecrets.filter((s) => s.name !== action.payload),\n };\n case sharedAt.DELETE_JOB_SECRET_ERROR:\n return {\n ...state,\n deleteJobSecretLoading: false,\n deleteJobSecretError: action.payload,\n modal: null,\n selectedSecret: null,\n };\n case at.TOGGLE_MODAL:\n return action.payload === null\n ? {\n ...state,\n modal: null,\n selectedSecret: null,\n createJobSecretSuccess: false,\n createJobSecretError: null,\n editJobSecretSuccess: false,\n editJobSecretError: null,\n }\n : {\n ...state,\n modal: action.payload,\n };\n case at.TOGGLE_SELECTED_SECRET:\n return {\n ...state,\n selectedSecret: action.payload,\n };\n default:\n return state;\n }\n};\n","import React, { Dispatch, useEffect, useReducer } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { TFunction, useTranslation } from 'react-i18next';\nimport { ConfirmationModal } from '@puppet/react-components';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport {\n createJobSecret,\n deleteJobSecret,\n editJobSecret,\n listJobSecrets,\n} from '@codeDelivery/utils/actions';\nimport JobTemplate from '@codeDelivery/components/JobTemplate';\nimport JobTemplateSecretForm, {\n SecretsForm,\n} from '@codeDelivery/components/JobTemplateSecretForm';\nimport JobTemplateSecretDetails from '@codeDelivery/components/JobTemplateSecretDetails';\nimport { JobTemplateFormValues } from '@codeDelivery/components/JobTemplate/actions';\nimport {\n CreateSecretRequestV1,\n EditSecretRequestV1,\n JobTemplateV1,\n} from '@utils/api/cd4pe';\nimport {\n useGetTemplateV1,\n UseGetTemplateV1Result,\n useReplaceTemplateV1,\n} from '@services/cd4pe/jobs';\nimport { LINKS } from 'src/routes';\nimport { useListCapabilitiesV1 } from '@services/cd4pe/hardware';\nimport useGetSharedDockerImageSettingsV1 from '@services/cd4pe/docker';\nimport {\n deleteSecretDetails,\n editJobTemplateActions,\n EditJobTemplateActions,\n editSecretDetails,\n viewSecretDetails,\n} from './actions';\nimport { defaultState, EditJobTemplateState, reducer } from './reducer';\n\nconst renderSecretsFormModal = (\n state: EditJobTemplateState,\n dispatch: Dispatch,\n jobTemplate: JobTemplateV1 | null,\n) => {\n if (state.modal !== 'SECRET_FORM_MODAL') {\n return null;\n }\n\n const onSecretSubmit = (values: SecretsForm) => {\n if (!jobTemplate) {\n return;\n }\n\n const {\n secretName: name,\n secretDescription: description,\n type,\n ...rest\n } = values;\n\n if (state.selectedSecret) {\n // This is needed because the backend does not currently support sending null\n // or missing values even if they're option. As a result, this request needs to\n // include secret, username, password properties regardless of the secret type.\n const editBody =\n values.type === 'USERNAME_PASSWORD'\n ? ({\n description,\n secret: '',\n ...rest,\n } as unknown as EditSecretRequestV1)\n : ({\n description,\n username: '',\n password: '',\n ...rest,\n } as unknown as EditSecretRequestV1);\n editJobSecret(jobTemplate.workspaceId, name, editBody, dispatch);\n return;\n }\n\n // This is needed because the backend does not currently support sending null\n // or missing values even if they're option. As a result, this request needs to\n // include secret, username, password properties regardless of the secret type.\n const createBody =\n values.type === 'USERNAME_PASSWORD'\n ? ({\n name,\n description,\n secret: '',\n type,\n ...rest,\n } as unknown as CreateSecretRequestV1)\n : ({\n name,\n description,\n type,\n username: '',\n password: '',\n ...rest,\n } as unknown as CreateSecretRequestV1);\n\n createJobSecret(jobTemplate, createBody, dispatch);\n };\n\n return (\n dispatch(editJobTemplateActions.toggleModal(null))}\n onCancel={() => dispatch(editJobTemplateActions.toggleModal(null))}\n loading={state.createJobSecretLoading || state.editJobSecretLoading}\n onSubmit={onSecretSubmit}\n error={state.createJobSecretError || state.editJobSecretError}\n />\n );\n};\n\nconst renderSecretDetailsModal = (\n state: EditJobTemplateState,\n dispatch: Dispatch,\n) => {\n if (state.modal !== 'VIEW_SECRET_MODAL' || state.selectedSecret === null) {\n return null;\n }\n\n return (\n dispatch(editJobTemplateActions.toggleModal(null))}\n successSaveAlert={state.createJobSecretSuccess}\n onEdit={(s) => editSecretDetails(state.jobSecrets, s, dispatch)}\n onDelete={(s) => deleteSecretDetails(state.jobSecrets, s, dispatch)}\n />\n );\n};\n\nconst renderDeleteSecretModal = (\n t: TFunction<'codeDelivery'>,\n state: EditJobTemplateState,\n dispatch: Dispatch,\n templateState: UseGetTemplateV1Result,\n) => {\n if (\n state.modal !== 'DELETE_SECRET_MODAL' ||\n state.selectedSecret === null ||\n !templateState.isSuccess\n ) {\n return null;\n }\n\n const onDelete = () => {\n if (!templateState.isSuccess || !state.selectedSecret) {\n return;\n }\n deleteJobSecret(templateState.data, state.selectedSecret.name, dispatch);\n };\n\n return (\n dispatch(editJobTemplateActions.toggleModal(null))}\n onConfirm={onDelete}\n />\n );\n};\n\nconst EditJobTemplate = () => {\n const { templateId } = useParams<{ templateId: string }>();\n const { t } = useTranslation('codeDelivery');\n const [state, dispatch] = useReducer(reducer, defaultState);\n const workspaceId = useWorkspaceDomain();\n const workspace = useWorkspaceName();\n const navigate = useNavigate();\n const templateState = useGetTemplateV1({\n id: Number(templateId),\n workspaceId,\n });\n const editTemplate = useReplaceTemplateV1();\n const capabilities = useListCapabilitiesV1({ workspaceId });\n const dockerContainer = useGetSharedDockerImageSettingsV1(undefined);\n\n useEffect(() => {\n if (templateState.isSuccess) {\n listJobSecrets(templateState.data, dispatch);\n }\n }, [templateState.data, templateState.isSuccess]);\n\n useEffect(() => {\n if (state.createJobSecretSuccess || state.editJobSecretSuccess) {\n dispatch(editJobTemplateActions.toggleModal('VIEW_SECRET_MODAL'));\n }\n }, [state.createJobSecretSuccess, state.editJobSecretSuccess]);\n\n const jobsPageUrl = LINKS.codeDelivery.listJobTemplates({\n path: { workspace },\n });\n\n useEffect(() => {\n if (editTemplate.isSuccess) {\n navigate(jobsPageUrl);\n }\n }, [editTemplate.isSuccess, jobsPageUrl, navigate]);\n\n const breadcrumbs = [\n {\n translationKey: 'editJobTemplate.breadcrumbs.jobs',\n linkDestination: jobsPageUrl,\n },\n { translationKey: 'editJobTemplate.breadcrumbs.editJob' },\n ];\n\n const onSave = (formValues: JobTemplateFormValues) => {\n if (!templateState.isSuccess || !dockerContainer.data) {\n return;\n }\n\n editTemplate.mutate({\n workspaceId: templateState.data.workspaceId,\n id: Number(templateState.data.id),\n requestBody: {\n workspaceId: templateState.data.workspaceId,\n description: formValues.description,\n name: formValues.name,\n manifest: {\n build: formValues.commands,\n onSuccess: formValues.commandsSuccess,\n onError: formValues.commandsError,\n },\n config: {\n sharedHardware: formValues.runOnSharedHardware,\n buildCapabilities: formValues.hardwareCapabilities,\n buildVars: formValues.envVars,\n vmArgs: formValues.dockerArgs,\n vmImage: formValues.imageName,\n useDefaultImage: formValues.runOnDefaultImage,\n },\n },\n });\n };\n\n return (\n <>\n navigate(jobsPageUrl)}\n onSubmit={onSave}\n loadError={\n templateState.error || dockerContainer.error || capabilities.error\n }\n submitTranslationKey=\"editJobTemplate.form.submit\"\n secretsError={state.getJobSecretsError || state.deleteJobSecretError}\n secrets={state.jobSecrets}\n onAddSecret={() =>\n dispatch(editJobTemplateActions.toggleModal('SECRET_FORM_MODAL'))\n }\n onEditSecret={(s) => editSecretDetails(state.jobSecrets, s, dispatch)}\n onDeleteSecret={(s) =>\n deleteSecretDetails(state.jobSecrets, s, dispatch)\n }\n onViewSecret={(s) => viewSecretDetails(state.jobSecrets, s, dispatch)}\n />\n {renderSecretsFormModal(state, dispatch, templateState.data ?? null)}\n {renderSecretDetailsModal(state, dispatch)}\n {renderDeleteSecretModal(t, state, dispatch, templateState)}\n \n );\n};\n\nexport default EditJobTemplate;\n","import EditJobTemplate from './EditJobTemplate';\n\nexport default EditJobTemplate;\n","export const NO_SOURCES_FOUND = 'NO_SOURCES_FOUND';\nexport const NO_REPOS_FOUND = 'NO_REPOS_FOUND';\nexport const NO_BRANCHES_FOUND = 'NO_BRANCHES_FOUND';\n// This is the exact error message surfaced by the cd4pe client\nexport const NO_TAGS_FOUND = 'NO_TAGS_FOUND';\n","import React from 'react';\nimport { Alert } from '@puppet/react-components';\n\ninterface Props {\n title: string;\n description: string;\n className?: string;\n}\nconst GenericErrorAlert = ({ title, description, className }: Props) => (\n \n {title}\n {description}\n \n);\n\nexport default GenericErrorAlert;\n\nGenericErrorAlert.defaultProps = {\n className: '',\n} as Partial;\n","import GenericErrorAlert from './GenericErrorAlert';\n\nexport default GenericErrorAlert;\nexport * from './GenericErrorAlert';\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport {\n Alert,\n Button,\n Form,\n Icon,\n Link,\n Modal,\n RadioButton,\n Text,\n Loading,\n} from '@puppet/react-components';\nimport CommonForm from '@components/CommonForm';\nimport Definitions from '@components/Definitions';\nimport { Trans, useTranslation } from 'react-i18next';\nimport {\n StdVcsBranch,\n StdVcsRepo,\n StdVcsSource,\n} from '@utils/api/cd4pe/vcs/actions';\nimport * as ERRORS from '@utils/boltProjects/errorTypesConsts';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport { CommonFormChangeFunction } from '@components/CommonForm/CommonForm';\nimport { Cd4peApiError } from '@utils/api/cd4pe';\nimport Cd4peError from '@components/Cd4peError';\nimport { LINKS } from 'src/routes';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport GenericErrorAlert from '../GenericErrorAlert';\n\ninterface AddCodeProjectFormActionTypes {\n SELECTED_SOURCE: 'SELECTED_SOURCE';\n SELECTED_REPOSITORY: 'SELECTED_REPOSITORY';\n SELECTED_BRANCH: 'SELECTED_BRANCH';\n NAME: 'NAME';\n}\n\nexport const ADD_CODE_PROJECT_FORM_ACTION_TYPES: AddCodeProjectFormActionTypes =\n {\n SELECTED_SOURCE: 'SELECTED_SOURCE',\n SELECTED_REPOSITORY: 'SELECTED_REPOSITORY',\n SELECTED_BRANCH: 'SELECTED_BRANCH',\n NAME: 'NAME',\n };\n\nexport const addCodeProjectFormActions = {\n name: (name: string) =>\n actionCreator(ADD_CODE_PROJECT_FORM_ACTION_TYPES.NAME, name),\n selectedSource: (source: string) =>\n actionCreator(ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_SOURCE, source),\n selectedBranch: (branch: string) =>\n actionCreator(ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_BRANCH, branch),\n selectedRepository: (repository: string) =>\n actionCreator(\n ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_REPOSITORY,\n repository,\n ),\n};\n\nexport type AddCodeProjectFormActions = Actions<\n typeof addCodeProjectFormActions\n>;\n\ntype FormFieldValues = {\n [K in keyof AddCodeProjectFormActionTypes]: string | null | undefined;\n};\n\nexport type AddCodeProjectFormOnChange =\n CommonFormChangeFunction;\n\ninterface Props {\n workspaceName: string;\n type: 'module' | 'controlRepo';\n sources?: StdVcsSource[] | null;\n selectedSource?: string | null;\n getSourcesLoading?: boolean | null;\n getSourcesError?: string | null;\n repositories?: StdVcsRepo[] | null;\n repoFilterCallback: (v: string) => void;\n selectedRepository?: string | null;\n getReposLoading?: boolean | null;\n getReposError?: string | null;\n branches?: StdVcsBranch[] | null;\n selectedBranch?: string | null;\n mainBranch?: StdVcsBranch | null;\n getBranchesLoading?: boolean;\n getBranchesError?: string | null;\n createMainBranch?: boolean | null;\n name?: string | null;\n saveLoading?: boolean;\n saveError?: Cd4peApiError | string | null;\n onFormChange: AddCodeProjectFormOnChange;\n createMainBranchChange: (payload: boolean) => void;\n submitCallback: () => Promise;\n cancelCallback: () => void;\n webhookError?: boolean;\n closeModal: () => void;\n currentModalClosed?: boolean;\n}\n\nconst AddCodeProjectForm = ({\n sources,\n selectedSource,\n getSourcesLoading,\n getSourcesError,\n repositories,\n selectedRepository,\n getReposLoading,\n getReposError,\n branches,\n selectedBranch,\n mainBranch,\n getBranchesLoading,\n getBranchesError,\n createMainBranch,\n name,\n saveLoading,\n saveError,\n webhookError,\n currentModalClosed,\n workspaceName,\n type,\n repoFilterCallback,\n onFormChange,\n createMainBranchChange,\n submitCallback,\n cancelCallback,\n closeModal,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n\n const formVals = {\n SELECTED_SOURCE: selectedSource,\n SELECTED_REPOSITORY: selectedRepository,\n SELECTED_BRANCH: selectedBranch,\n NAME: name,\n };\n\n const renderLoader = (condition?: boolean | null) => {\n return condition ? (\n \n \n \n ) : null;\n };\n\n const sourceOrRepoEmpty = !selectedSource || !selectedRepository;\n\n const renderSourcesAlert = () => {\n if (getSourcesError === ERRORS.NO_SOURCES_FOUND) {\n return (\n \n {t('addCodeProject.sourceSection.noSourcesFound.title')}\n \n ,\n ]}\n />\n \n \n );\n }\n\n if (getSourcesError) {\n return (\n \n );\n }\n return null;\n };\n\n const renderRepositorySelect = () => {\n if (getReposError === ERRORS.NO_REPOS_FOUND) {\n return (\n
\n \n {t('addCodeProject.sourceSection.noReposFound')}\n \n {t(\n `addCodeProject.sourceSection.noReposFoundDescription.${type}`,\n )}\n \n \n
\n );\n }\n\n if (getReposError) {\n return (\n
\n \n
\n );\n }\n\n return (\n \n repoFilterCallback(value)}\n name={ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_REPOSITORY}\n label={t('addCodeProject.sourceSection.repoLabel')}\n placeholder={t('addCodeProject.sourceSection.repoPlaceholder')}\n required\n options={repositories}\n disabled={selectedSource === ''}\n footer={\n repositories?.length! >= 10\n ? t('addCodeProject.sourceSection.repoDisplayCountWarning', {\n count: repositories?.length,\n })\n : null\n }\n />\n {renderLoader(getReposLoading)}\n \n );\n };\n\n const renderBranchSelect = () => {\n const getBranchSelectLabel = () => {\n if (mainBranch || !selectedRepository) {\n return t('addCodeProject.sourceSection.branchSelectLabel');\n }\n return createMainBranch\n ? t('addCodeProject.sourceSection.branchSelectLabel.createMain')\n : t('addCodeProject.sourceSection.branchSelectLabel');\n };\n\n if (getBranchesError === ERRORS.NO_BRANCHES_FOUND) {\n return (\n
\n

\n {t('addCodeProject.sourceSection.branchSubheader')}\n

\n \n {t('addCodeProject.sourceSection.noBranchesFound')}\n \n
\n );\n }\n\n if (getBranchesError) {\n return (\n
\n

\n {t('addCodeProject.sourceSection.branchSubheader')}\n

\n \n
\n );\n }\n\n if (sourceOrRepoEmpty) {\n return (\n
\n

\n {t('addCodeProject.sourceSection.branchSubheader')}\n

\n \n \n {renderLoader(getBranchesLoading)}\n
\n \n );\n }\n\n if (mainBranch) {\n return (\n
\n

\n {t('addCodeProject.sourceSection.branchSubheader')}\n

\n \n {t('addCodeProject.sourceSection.mainBranchAlert')}\n \n {t(`addCodeProject.sourceSection.mainBranchAlertMessage.${type}`)}\n \n \n \n \n {renderLoader(getBranchesLoading)}\n
\n \n );\n }\n\n return (\n
\n

\n {t('addCodeProject.sourceSection.branchSubheader')}\n

\n \n {t('addCodeProject.sourceSection.noMainBranchAlert')}\n \n {t(`addCodeProject.sourceSection.noMainBranchAlertMessage.${type}`)}\n \n \n
\n \n \n
\n \n \n {renderLoader(getBranchesLoading)}\n
\n \n );\n };\n\n const renderWebhookModal = () => {\n const newlyAddedUrl = () => {\n if (type === 'module' && name) {\n return LINKS.codeDelivery.viewModule({\n path: { workspace: workspaceName, name },\n });\n }\n if (type === 'controlRepo' && name) {\n return LINKS.codeDelivery.viewRepository({\n path: { workspace: workspaceName, name },\n });\n }\n return null;\n };\n\n if (!currentModalClosed && webhookError) {\n return (\n \n \n {t(`addCodeProject.webhookErrorModal.title.${type}`)}\n \n \n {t(`addCodeProject.webhookErrorModal.warning`)}\n \n {t(`addCodeProject.webhookErrorModal.text.${type}`)}\n \n \n {t(`addCodeProject.webhookErrorModal.docsButton`)}\n \n \n {t(`addCodeProject.webhookErrorModal.goToButton.${type}`)}\n \n \n \n );\n }\n return null;\n };\n\n return (\n \n {renderSourcesAlert()}\n \n \n

\n {t('addCodeProject.sourceSection.header')}\n

\n \n \n {renderLoader(getSourcesLoading)}\n \n {renderRepositorySelect()}\n {renderBranchSelect()}\n
\n \n \n \n ,\n ]}\n />\n \n \n \n
\n\n \n \n

\n {t('addCodeProject.nameSection.header')}\n

\n \n {\n if (!value.match('^[A-Za-z0-9-_ ]+$')) {\n return t('addCodeProject.nameSection.validationError');\n }\n return false;\n }}\n required\n disabled={sourceOrRepoEmpty}\n />\n \n \n \n {t('addCodeProject.nameSection.nameInfoText')}\n \n \n \n
\n
\n {renderWebhookModal()}\n \n \n );\n};\n\nexport default AddCodeProjectForm;\n\nAddCodeProjectForm.defaultProps = {\n sources: null,\n selectedSource: null,\n getSourcesLoading: false,\n getSourcesError: null,\n repositories: null,\n selectedRepository: null,\n getReposLoading: null,\n getReposError: null,\n branches: null,\n selectedBranch: null,\n mainBranch: null,\n getBranchesLoading: false,\n getBranchesError: null,\n createMainBranch: null,\n name: null,\n saveLoading: false,\n saveError: null,\n formError: null,\n webhookError: false,\n currentModalClosed: false,\n} as Partial;\n","import AddCodeProjectForm from './AddCodeProjectForm';\n\nexport default AddCodeProjectForm;\nexport * from './AddCodeProjectForm';\n","export const BITBUCKET = 'BITBUCKET';\nexport const BITBUCKET_SERVER = 'BITBUCKET_SERVER';\nexport const GITHUB_ENTERPRISE = 'GITHUB_ENTERPRISE';\nexport const GITHUB = 'GITHUB';\nexport const AZURE_DEV_OPS = 'AZURE_DEVOPS';\nexport const GITLAB = 'GITLAB';\n","import * as Provider from './providerConsts';\n\nexport default function getProviderDisplayName(providerName) {\n switch (providerName) {\n case Provider.BITBUCKET:\n return 'Bitbucket';\n case Provider.BITBUCKET_SERVER:\n return 'Bitbucket Server';\n case Provider.GITHUB:\n return 'GitHub';\n case Provider.GITHUB_ENTERPRISE:\n return 'GitHub Enterprise';\n case Provider.AZURE_DEV_OPS:\n return 'Azure DevOps';\n case Provider.GITLAB:\n return 'GitLab';\n default:\n return 'unknown';\n }\n}\n","import { VcsProviderV1 } from '@utils/api/cd4pe';\n\nexport type VcsProviderIconKey = 'bitbucket' | 'github' | 'azure' | 'gitlab';\n\nconst getIconType = (\n providerName: VcsProviderV1,\n): VcsProviderIconKey | 'alert' => {\n switch (providerName) {\n case 'BITBUCKET':\n case 'BITBUCKET_SERVER':\n return 'bitbucket';\n case 'GITHUB':\n case 'GITHUB_ENTERPRISE':\n return 'github';\n case 'AZURE_DEVOPS':\n return 'azure';\n case 'GITLAB':\n return 'gitlab';\n default:\n return 'alert';\n }\n};\n\nexport default getIconType;\n","export const GET_SOURCES_START = 'GET_SOURCES_START';\nexport const GET_SOURCES_COMPLETE = 'GET_SOURCES_COMPLETE';\nexport const GET_SOURCES_ERROR = 'GET_SOURCES_ERROR';\nexport const GET_REPOS_START = 'GET_REPOS_START';\nexport const GET_REPOS_COMPLETE = 'GET_REPOS_COMPLETE';\nexport const GET_REPOS_ERROR = 'GET_REPOS_ERROR';\nexport const GET_BRANCHES_START = 'GET_BRANCHES_START';\nexport const GET_BRANCHES_COMPLETE = 'GET_BRANCHES_COMPLETE';\nexport const GET_BRANCHES_ERROR = 'GET_BRANCHES_ERROR';\n","import { Dispatch } from 'react';\nimport getProviderDisplayName from '@utils/vcs/displayNameHelper';\nimport getIconType, { VcsProviderIconKey } from '@utils/vcs/iconHelper';\nimport * as ERRORS from '@utils/boltProjects/errorTypesConsts';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport {\n ApiError,\n ErrorV1,\n formatError,\n isErrorResponse,\n isSuccessResponse,\n ListVcsOrganizationsResponseV1,\n unwrapApiResponse,\n VcsBranchV1,\n VcsOrganizationV1,\n VcsRepositoryV1,\n VcsV1Service,\n} from '@utils/api/cd4pe';\nimport * as at from './actionTypes';\n\nexport interface StdVcsSource {\n label: string;\n value: string;\n actualValue: VcsOrganizationV1;\n icon: VcsProviderIconKey | 'alert';\n}\n\nexport interface StdVcsRepo {\n label: string;\n value: string;\n actualValue: VcsRepositoryV1;\n}\n\nexport interface StdVcsBranch {\n label: string;\n value: string;\n actualValue: VcsBranchV1;\n}\n\nconst actions = {\n getSourcesStart: () => actionCreator(at.GET_SOURCES_START),\n getSourcesComplete: (sources: StdVcsSource[]) =>\n actionCreator(at.GET_SOURCES_COMPLETE, sources),\n getSourcesError: (error: string) =>\n actionCreator(at.GET_SOURCES_ERROR, error),\n getReposStart: () => actionCreator(at.GET_REPOS_START),\n getReposComplete: (repos: StdVcsRepo[]) =>\n actionCreator(at.GET_REPOS_COMPLETE, repos),\n getReposError: (error: string) => actionCreator(at.GET_REPOS_ERROR, error),\n getBranchesStart: () => actionCreator(at.GET_BRANCHES_START),\n getBranchesComplete: (branches: StdVcsBranch[]) =>\n actionCreator(at.GET_BRANCHES_COMPLETE, branches),\n getBranchesError: (error: string) =>\n actionCreator(at.GET_BRANCHES_ERROR, error),\n};\n\nexport type VcsActions = Actions;\n\nexport const getSources = async (\n workspaceId: string,\n dispatch: Dispatch,\n) => {\n dispatch(actions.getSourcesStart());\n const providersRes = await unwrapApiResponse(\n VcsV1Service.listIntegrationsV1({ workspaceId }),\n );\n\n if (isErrorResponse(providersRes)) {\n dispatch(actions.getSourcesError(formatError(providersRes)));\n return;\n }\n\n const providers = providersRes.vcsIntegrations.filter((p) => p.connected);\n const orgPromises = providers.map((p) =>\n unwrapApiResponse(\n VcsV1Service.listOrganizationsV1({\n workspaceId,\n provider: p.provider,\n }),\n ),\n );\n const orgResponses = await Promise.all(orgPromises);\n const organizations = (\n orgResponses.filter((o) =>\n isSuccessResponse(o),\n ) as ListVcsOrganizationsResponseV1[]\n ).map((r) => r.vcsOrganizations);\n\n if (organizations.length !== orgResponses.length) {\n const error = orgResponses.find((o) => isErrorResponse(o)) as\n | ErrorV1\n | ApiError;\n dispatch(actions.getSourcesError(formatError(error)));\n return;\n }\n\n if (organizations.length === 0) {\n dispatch(actions.getSourcesError(ERRORS.NO_SOURCES_FOUND));\n return;\n }\n\n const sources = organizations.flat().map((source) => ({\n label: `${getProviderDisplayName(source.provider)} | ${source.displayName}`,\n // TODO: fix this in API\n value: source.id!,\n actualValue: source,\n icon: getIconType(source.provider),\n }));\n\n dispatch(actions.getSourcesComplete(sources));\n};\n\nexport const getRepositories = async (\n workspaceId: string,\n dispatch: Dispatch,\n selectedSource: VcsOrganizationV1,\n searchTerm?: string,\n) => {\n dispatch(actions.getReposStart());\n const response = await unwrapApiResponse(\n VcsV1Service.listRepositoriesV1({\n workspaceId,\n provider: selectedSource.provider,\n name: searchTerm || undefined,\n project: selectedSource.project || undefined,\n organization: selectedSource.organization || undefined,\n user: selectedSource.user || undefined,\n }),\n );\n\n if (isErrorResponse(response)) {\n dispatch(actions.getReposError(formatError(response)));\n return;\n }\n\n if (!searchTerm && response.vcsRepositories.length === 0) {\n dispatch(actions.getReposError(ERRORS.NO_REPOS_FOUND));\n return;\n }\n\n const repos = response.vcsRepositories.map((repo) => ({\n // TODO: fix this in API\n label: repo.displayName!,\n // TODO: fix this in API\n value: repo.displayName!,\n actualValue: repo,\n }));\n\n dispatch(actions.getReposComplete(repos));\n};\n\nexport const getBranches = async (\n workspaceId: string,\n dispatch: Dispatch,\n selectedRepository: VcsRepositoryV1,\n searchTerm?: string,\n) => {\n dispatch(actions.getBranchesStart());\n const response = await unwrapApiResponse(\n VcsV1Service.listBranchesV1({\n workspaceId,\n provider: selectedRepository.provider,\n project: selectedRepository.project || undefined,\n organization: selectedRepository.organization || undefined,\n user: selectedRepository.user || undefined,\n name: selectedRepository.name,\n prefix: searchTerm || undefined,\n }),\n );\n\n if (isErrorResponse(response)) {\n dispatch(actions.getBranchesError(formatError(response)));\n return;\n }\n\n if (response.vcsBranches.length === 0 && !searchTerm) {\n dispatch(actions.getBranchesError(ERRORS.NO_BRANCHES_FOUND));\n return;\n }\n\n const branches = response.vcsBranches.map((branch) => ({\n label: branch.name,\n value: branch.name,\n actualValue: branch,\n }));\n\n dispatch(actions.getBranchesComplete(branches));\n};\n","/**\n * Returns function that will only be called after the debounce time has elapsed. If\n * the function is repeatedly called before the time has elapsed, the timer will\n * reset.\n * @param {function} func Function to debounce\n * @param {number} debounceTime Time to wait, in milliseconds, before calling func\n */\nconst debounce = (func, debounceTime) => {\n let timeout = null;\n return (...args) => {\n const later = () => {\n timeout = null;\n func.apply({}, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, debounceTime);\n };\n};\n\nexport default debounce;\n","export const SAVE_MODULE_START = 'SAVE_MODULE_START';\nexport const SAVE_MODULE_COMPLETE = 'SAVE_MODULE_COMPLETE';\nexport const SAVE_MODULE_ERROR = 'SAVE_MODULE_ERROR';\nexport const SAVE_MODULE_WEBHOOK_ERROR = 'SAVE_MODULE_WEBHOOK_ERROR';\nexport const CREATE_MAIN_BRANCH = 'CREATE_MAIN_BRANCH';\nexport const CLOSE_MODAL = 'CLOSE_MODAL';\n","import { AddCodeProjectFormActions } from '@codeDelivery/components/AddCodeProjectForm';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport {\n Cd4peApiError,\n CreateModuleRequestV1,\n CreateModuleResponseV1,\n CreateVcsBranchRequestV1,\n handleApiRequest,\n isCd4peApiError,\n isInternalError,\n ModulesV1Service,\n VcsV1Service,\n WorkspaceIdV1,\n} from '@utils/api/cd4pe';\nimport { VcsActions } from '@utils/api/cd4pe/vcs/actions';\nimport { Dispatch } from 'react';\nimport * as at from './actionTypes';\n\nexport const newModuleActions = {\n saveModuleStart: () => actionCreator(at.SAVE_MODULE_START),\n saveModuleComplete: (payload: CreateModuleResponseV1) =>\n actionCreator(at.SAVE_MODULE_COMPLETE, payload),\n saveModuleError: (error: Cd4peApiError) =>\n actionCreator(at.SAVE_MODULE_ERROR, error),\n saveModuleWebhookError: () => actionCreator(at.SAVE_MODULE_WEBHOOK_ERROR),\n createMainBanch: (payload: boolean) =>\n actionCreator(at.CREATE_MAIN_BRANCH, payload),\n closeModal: () => actionCreator(at.CLOSE_MODAL),\n};\n\nexport type NewModuleActions =\n | Actions\n | VcsActions\n | AddCodeProjectFormActions;\n\nexport interface CreateModulePayload {\n workspaceId: WorkspaceIdV1;\n requestBody: CreateModuleRequestV1;\n}\n\nexport const saveModule = async (\n dispatch: Dispatch,\n modulePayload: CreateModulePayload,\n branchPayload?: CreateVcsBranchRequestV1,\n) => {\n const saveModuleCall = async (payload: CreateModulePayload) => {\n const moduleResponse = await handleApiRequest(\n ModulesV1Service.createModuleV1(payload),\n );\n\n if (isInternalError(moduleResponse) && moduleResponse.body.code === 'VCS') {\n dispatch(newModuleActions.saveModuleWebhookError());\n return;\n }\n\n if (isCd4peApiError(moduleResponse)) {\n dispatch(newModuleActions.saveModuleError(moduleResponse));\n return;\n }\n\n dispatch(newModuleActions.saveModuleComplete(moduleResponse));\n };\n\n if (branchPayload) {\n const branchResponse = await handleApiRequest(\n VcsV1Service.createBranchV1({\n workspaceId: modulePayload.workspaceId,\n requestBody: branchPayload,\n }),\n );\n\n if (isCd4peApiError(branchResponse)) {\n dispatch(newModuleActions.saveModuleError(branchResponse));\n return;\n }\n\n const updatedModulePayload: CreateModulePayload = {\n ...modulePayload,\n requestBody: {\n ...modulePayload.requestBody,\n pacBranch: branchPayload.name,\n },\n };\n\n await saveModuleCall(updatedModulePayload);\n return;\n }\n\n await saveModuleCall(modulePayload);\n};\n","import * as vcsAt from '@utils/api/cd4pe/vcs/actionTypes';\nimport {\n StdVcsBranch,\n StdVcsRepo,\n StdVcsSource,\n} from '@utils/api/cd4pe/vcs/actions';\nimport { ADD_CODE_PROJECT_FORM_ACTION_TYPES } from '@codeDelivery/components/AddCodeProjectForm';\nimport { Cd4peApiError } from '@utils/api/cd4pe';\nimport * as at from './actionTypes';\nimport { NewModuleActions } from './actions';\n\nexport interface NewModuleState {\n getSourcesLoading: boolean;\n getSourcesError: string | null;\n getReposLoading: boolean;\n getReposError: string | null;\n getBranchesLoading: boolean;\n getBranchesError: string | null;\n saveModuleLoading: boolean;\n saveModuleError: Cd4peApiError | string | null;\n saveModuleWebhookError: boolean;\n sources: StdVcsSource[];\n selectedSource: string;\n repositories: StdVcsRepo[];\n selectedRepository: string;\n branches: StdVcsBranch[];\n mainBranch: StdVcsBranch | null;\n createMainBranch: boolean;\n selectedBranch: string;\n name: string;\n saveModuleSuccess: boolean;\n currentModalClosed: boolean;\n newModuleName?: null | string;\n}\n\nexport const defaultNewModuleState: NewModuleState = {\n getSourcesLoading: false,\n getSourcesError: null,\n getReposLoading: false,\n getReposError: null,\n getBranchesLoading: false,\n getBranchesError: null,\n saveModuleLoading: false,\n saveModuleError: null,\n saveModuleWebhookError: false,\n\n sources: [],\n selectedSource: '',\n repositories: [],\n selectedRepository: '',\n branches: [],\n mainBranch: null,\n createMainBranch: true,\n selectedBranch: '',\n name: '',\n saveModuleSuccess: false,\n currentModalClosed: false,\n newModuleName: null,\n};\n\nexport const reducer = (\n state: NewModuleState,\n action: NewModuleActions,\n): NewModuleState => {\n switch (action.type) {\n case vcsAt.GET_SOURCES_START:\n return {\n ...state,\n getSourcesLoading: true,\n };\n case vcsAt.GET_SOURCES_COMPLETE:\n return {\n ...state,\n getSourcesLoading: false,\n sources: action.payload,\n };\n case vcsAt.GET_SOURCES_ERROR:\n return {\n ...state,\n getSourcesLoading: false,\n getSourcesError: action.payload,\n };\n case vcsAt.GET_REPOS_START:\n return {\n ...state,\n getReposLoading: true,\n };\n case vcsAt.GET_REPOS_COMPLETE:\n return {\n ...state,\n getReposLoading: false,\n repositories: action.payload,\n };\n case vcsAt.GET_REPOS_ERROR:\n return {\n ...state,\n getReposLoading: false,\n getReposError: action.payload,\n };\n case vcsAt.GET_BRANCHES_START:\n return {\n ...state,\n getBranchesLoading: true,\n };\n case vcsAt.GET_BRANCHES_COMPLETE:\n return {\n ...state,\n getBranchesLoading: false,\n branches: action.payload,\n mainBranch:\n state.mainBranch ||\n action.payload.find((branch) => branch.actualValue.name === 'main') ||\n null,\n };\n case vcsAt.GET_BRANCHES_ERROR:\n return {\n ...state,\n getBranchesLoading: false,\n getBranchesError: action.payload,\n };\n case at.SAVE_MODULE_START:\n return {\n ...state,\n saveModuleLoading: true,\n };\n case at.SAVE_MODULE_COMPLETE:\n return {\n ...state,\n saveModuleLoading: false,\n saveModuleSuccess: true,\n newModuleName: action.payload.name,\n };\n case at.SAVE_MODULE_ERROR:\n return {\n ...state,\n saveModuleLoading: false,\n saveModuleSuccess: false,\n saveModuleError: action.payload,\n };\n case at.SAVE_MODULE_WEBHOOK_ERROR:\n return {\n ...state,\n saveModuleLoading: false,\n saveModuleSuccess: false,\n saveModuleWebhookError: true,\n currentModalClosed: false,\n };\n case ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_SOURCE:\n return {\n ...state,\n selectedSource: action.payload,\n repositories: [],\n selectedRepository: '',\n branches: [],\n mainBranch: null,\n selectedBranch: '',\n saveModuleError: null,\n getReposError: null,\n name: '',\n };\n case ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_REPOSITORY:\n return {\n ...state,\n selectedRepository: action.payload,\n branches: [],\n mainBranch: null,\n selectedBranch: '',\n saveModuleError: null,\n getBranchesError: null,\n name: '',\n };\n case at.CREATE_MAIN_BRANCH:\n return {\n ...state,\n createMainBranch: action.payload,\n };\n case ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_BRANCH:\n return {\n ...state,\n selectedBranch: action.payload,\n };\n case ADD_CODE_PROJECT_FORM_ACTION_TYPES.NAME:\n return {\n ...state,\n name: action.payload,\n };\n case at.CLOSE_MODAL:\n return {\n ...state,\n currentModalClosed: true,\n };\n default:\n throw new Error();\n }\n};\n","import React, { useEffect, useReducer } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Heading } from '@puppet/react-components';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport AddCodeProjectForm, {\n addCodeProjectFormActions,\n AddCodeProjectFormOnChange,\n ADD_CODE_PROJECT_FORM_ACTION_TYPES,\n} from '@codeDelivery/components/AddCodeProjectForm';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport {\n getSources,\n getRepositories,\n getBranches,\n} from '@utils/api/cd4pe/vcs/actions';\nimport debounce from '@utils/debounce';\nimport { CreateVcsBranchRequestV1, VcsProviderV1 } from '@utils/api/cd4pe';\nimport PageLayout from '@components/PageLayout';\nimport { LINKS } from 'src/routes';\nimport { CreateModulePayload, newModuleActions, saveModule } from './actions';\nimport { defaultNewModuleState, reducer } from './reducer';\n\ninterface StdItem {\n value: K;\n actualValue: T;\n}\n\nconst getActualValue = <\n ItemType extends StdItem,\n ValueType = ItemType['value'],\n ActualValueType = ItemType['actualValue'],\n>(\n items: ItemType[],\n selectedItem: ItemType['value'],\n) => {\n const item = items.find((i) => {\n return i.value === selectedItem;\n });\n if (item) {\n return item.actualValue;\n }\n return null;\n};\n\nconst debouncedGetRepos = debounce(getRepositories, 250);\nconst debouncedGetBranches = debounce(getBranches, 250);\n\nconst NewModule = () => {\n const [state, dispatch] = useReducer(reducer, defaultNewModuleState);\n const navigate = useNavigate();\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const sourceMatch = getActualValue(state.sources, state.selectedSource);\n const repoMatch = getActualValue(\n state.repositories,\n state.selectedRepository,\n );\n const branchMatch = state.branches.find(\n ({ label }) => label === state.selectedBranch,\n );\n\n useEffect(() => {\n if (workspaceId) getSources(workspaceId, dispatch);\n }, [workspaceId]);\n\n useEffect(() => {\n if (state.newModuleName) {\n navigate(\n LINKS.codeDelivery.viewModule({\n path: { workspace: workspaceName, name: state.newModuleName },\n }),\n );\n }\n }, [state.newModuleName, workspaceName, navigate]);\n\n useEffect(() => {\n if (!state.selectedBranch && state.mainBranch) {\n dispatch(\n addCodeProjectFormActions.selectedBranch(state.mainBranch.label),\n );\n }\n }, [state.mainBranch, state.selectedBranch]);\n\n useEffect(() => {\n if (state.selectedBranch && !branchMatch && repoMatch) {\n debouncedGetBranches(\n workspaceId,\n dispatch,\n repoMatch,\n state.selectedBranch,\n );\n }\n }, [state.selectedBranch, branchMatch, repoMatch, workspaceId, dispatch]);\n\n const breadcrumbs = [\n { displayName: `${workspaceName}` },\n {\n displayName: t('newModule.breadcrumb.modules'),\n linkDestination: LINKS.codeDelivery.listModules({\n path: { workspace: workspaceName },\n }),\n },\n { displayName: t('newModule.header.text') },\n ];\n\n const onFormChange: AddCodeProjectFormOnChange = (fieldName, values) => {\n dispatch({ type: fieldName, payload: values[fieldName] || '' });\n\n switch (fieldName) {\n case ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_SOURCE: {\n const selectedSource = getActualValue(\n state.sources,\n values.SELECTED_SOURCE || '',\n );\n if (selectedSource) {\n getRepositories(workspaceId, dispatch, selectedSource);\n }\n break;\n }\n case ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_REPOSITORY: {\n const selectedRepository = getActualValue(\n state.repositories,\n values.SELECTED_REPOSITORY || '',\n );\n\n if (selectedRepository) {\n dispatch(\n addCodeProjectFormActions.name(\n selectedRepository.displayName || '',\n ),\n );\n getBranches(workspaceId, dispatch, selectedRepository);\n }\n break;\n }\n default:\n }\n };\n\n const dispatchCreateMainBranch = (payload: boolean) => () => {\n dispatch(newModuleActions.createMainBanch(payload));\n };\n\n const adaptProviderForBackend = (provider: VcsProviderV1): VcsProviderV1 => {\n const p = provider.replace(/\\s+/g, '').toUpperCase();\n if (p === 'BITBUCKETCLOUD') {\n return 'BITBUCKET';\n }\n return p as VcsProviderV1;\n };\n\n const onClickSaveModule = async () => {\n dispatch(newModuleActions.saveModuleStart());\n\n if (!repoMatch || !sourceMatch || !branchMatch) {\n dispatch(\n newModuleActions.saveModuleError(t('newModule.error.missingFields')),\n );\n return;\n }\n\n const provider = adaptProviderForBackend(repoMatch.provider);\n const srcRepoName = repoMatch.name;\n const srcRepoDisplayName = repoMatch.displayName || '';\n const srcRepoDisplayOwner = sourceMatch.displayName || '';\n\n const srcRepoOwner =\n repoMatch.organization || repoMatch.project || repoMatch.user || '';\n let srcRepoId = srcRepoOwner;\n if (provider === 'AZURE_DEVOPS' || provider === 'GITLAB') {\n srcRepoId = repoMatch.project || '';\n }\n\n let sanitizedCreateMainBranch = state.createMainBranch;\n if (state.mainBranch) {\n sanitizedCreateMainBranch = false;\n }\n\n const modulePayload: CreateModulePayload = {\n workspaceId,\n requestBody: {\n scanForPacFile: true,\n pacBranch: state.selectedBranch,\n name: state.name,\n srcRepoProvider: provider,\n srcRepoOwner,\n srcRepoDisplayOwner,\n srcRepoName,\n srcRepoDisplayName,\n srcRepoId,\n },\n };\n\n if (sanitizedCreateMainBranch) {\n const targetBranch = state.branches.find(\n (branch) => branch.actualValue.name === state.selectedBranch,\n );\n\n if (!targetBranch) {\n dispatch(\n newModuleActions.saveModuleError(t('newModule.error.missingFields')),\n );\n return;\n }\n\n const branchPayload: CreateVcsBranchRequestV1 = {\n provider,\n project: repoMatch.project || '',\n organization: repoMatch.organization || '',\n repositoryName: srcRepoName,\n sha: targetBranch.actualValue.headSha || '',\n user: repoMatch.user || '',\n name: 'main',\n };\n\n saveModule(dispatch, modulePayload, branchPayload);\n return;\n }\n saveModule(dispatch, modulePayload);\n };\n\n const onClickCancel = () => {\n navigate(\n LINKS.codeDelivery.listModules({ path: { workspace: workspaceName } }),\n );\n };\n\n const repoFilterCallback = (filterTerm: string) => {\n debouncedGetRepos(workspaceId, dispatch, sourceMatch, filterTerm);\n };\n\n const dispatchCloseModal = () => {\n dispatch(newModuleActions.closeModal());\n };\n\n return (\n \n \n \n \n \n {t('newModule.header.text')}\n \n\n \n \n \n \n );\n};\n\nexport default NewModule;\n","import NewModule from './NewModule';\n\nexport default NewModule;\n","export const SAVE_CONTROL_REPO_START = 'SAVE_CONTROL_REPO_START';\nexport const SAVE_CONTROL_REPO_COMPLETE = 'SAVE_CONTROL_REPO_COMPLETE';\nexport const SAVE_CONTROL_REPO_ERROR = 'SAVE_CONTROL_REPO_ERROR';\nexport const SAVE_CONTROL_REPO_WEBHOOK_ERROR =\n 'SAVE_CONTROL_REPO_WEBHOOK_ERROR';\nexport const CREATE_MAIN_BRANCH = 'CREATE_MAIN_BRANCH';\nexport const CLOSE_MODAL = 'CLOSE_MODAL';\n","import { ADD_CODE_PROJECT_FORM_ACTION_TYPES } from '@codeDelivery/components/AddCodeProjectForm';\nimport { Cd4peApiError } from '@utils/api/cd4pe';\nimport {\n StdVcsBranch,\n StdVcsRepo,\n StdVcsSource,\n} from '@utils/api/cd4pe/vcs/actions';\nimport * as vcsAt from '@utils/api/cd4pe/vcs/actionTypes';\nimport { NewControlRepoActions } from './actions';\nimport * as at from './actionTypes';\n\nexport interface NewControlRepoState {\n sources: StdVcsSource[];\n selectedSource: string;\n repositories: StdVcsRepo[];\n selectedRepository: string;\n branches: StdVcsBranch[];\n mainBranch: StdVcsBranch | null;\n createMainBranch: boolean;\n selectedBranch: string;\n name: string;\n saveControlRepoSuccess: boolean;\n currentModalClosed: boolean;\n getSourcesLoading: boolean;\n getSourcesError: string | null;\n getReposLoading: boolean;\n getReposError: string | null;\n getBranchesLoading: boolean;\n getBranchesError: string | null;\n saveControlRepoLoading: boolean;\n newControlRepoName?: string | null;\n saveControlRepoError: Cd4peApiError | string | null;\n saveControlRepoWebhookError: boolean;\n}\n\nexport const defaultNewControlRepoState: NewControlRepoState = {\n sources: [],\n selectedSource: '',\n repositories: [],\n selectedRepository: '',\n branches: [],\n mainBranch: null,\n createMainBranch: true,\n selectedBranch: '',\n name: '',\n saveControlRepoSuccess: false,\n currentModalClosed: false,\n getSourcesLoading: false,\n getSourcesError: null,\n getReposLoading: false,\n getReposError: null,\n getBranchesLoading: false,\n getBranchesError: null,\n saveControlRepoLoading: false,\n newControlRepoName: null,\n saveControlRepoError: null,\n saveControlRepoWebhookError: false,\n};\n\nexport const reducer = (\n state: NewControlRepoState,\n action: NewControlRepoActions,\n): NewControlRepoState => {\n switch (action.type) {\n case vcsAt.GET_SOURCES_START:\n return {\n ...state,\n getSourcesLoading: true,\n };\n case vcsAt.GET_SOURCES_COMPLETE:\n return {\n ...state,\n getSourcesLoading: false,\n sources: action.payload,\n };\n case vcsAt.GET_SOURCES_ERROR:\n return {\n ...state,\n getSourcesLoading: false,\n getSourcesError: action.payload,\n };\n case vcsAt.GET_REPOS_START:\n return {\n ...state,\n getReposLoading: true,\n };\n case vcsAt.GET_REPOS_COMPLETE:\n return {\n ...state,\n getReposLoading: false,\n repositories: action.payload,\n };\n case vcsAt.GET_REPOS_ERROR:\n return {\n ...state,\n getReposLoading: false,\n getReposError: action.payload,\n };\n case vcsAt.GET_BRANCHES_START:\n return {\n ...state,\n getBranchesLoading: true,\n };\n case vcsAt.GET_BRANCHES_COMPLETE:\n return {\n ...state,\n getBranchesLoading: false,\n branches: action.payload,\n mainBranch:\n state.mainBranch ||\n action.payload.find((branch) => branch.actualValue.name === 'main') ||\n null,\n };\n case vcsAt.GET_BRANCHES_ERROR:\n return {\n ...state,\n getBranchesLoading: false,\n getBranchesError: action.payload,\n };\n case at.SAVE_CONTROL_REPO_START:\n return {\n ...state,\n saveControlRepoLoading: true,\n };\n case at.SAVE_CONTROL_REPO_COMPLETE:\n return {\n ...state,\n saveControlRepoLoading: false,\n saveControlRepoSuccess: true,\n newControlRepoName: action.payload.name,\n };\n case at.SAVE_CONTROL_REPO_ERROR:\n return {\n ...state,\n saveControlRepoLoading: false,\n saveControlRepoSuccess: false,\n saveControlRepoError: action.payload,\n };\n case at.SAVE_CONTROL_REPO_WEBHOOK_ERROR:\n return {\n ...state,\n saveControlRepoLoading: false,\n saveControlRepoSuccess: false,\n saveControlRepoWebhookError: true,\n currentModalClosed: false,\n };\n case ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_SOURCE:\n return {\n ...state,\n selectedSource: action.payload,\n repositories: [],\n selectedRepository: '',\n branches: [],\n mainBranch: null,\n selectedBranch: '',\n name: '',\n saveControlRepoError: null,\n getReposError: null,\n };\n case ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_REPOSITORY:\n return {\n ...state,\n selectedRepository: action.payload,\n branches: [],\n mainBranch: null,\n selectedBranch: '',\n name: '',\n saveControlRepoError: null,\n getBranchesError: null,\n };\n case at.CREATE_MAIN_BRANCH:\n return {\n ...state,\n createMainBranch: action.payload,\n };\n case ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_BRANCH:\n return {\n ...state,\n selectedBranch: action.payload,\n };\n case ADD_CODE_PROJECT_FORM_ACTION_TYPES.NAME:\n return {\n ...state,\n name: action.payload,\n };\n case at.CLOSE_MODAL:\n return {\n ...state,\n currentModalClosed: true,\n };\n default:\n throw new Error();\n }\n};\n","import { AddCodeProjectFormActions } from '@codeDelivery/components/AddCodeProjectForm';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport {\n CreateControlRepoResponseV1,\n CreateControlRepoRequestV1,\n ControlReposV1Service,\n VcsV1Service,\n WorkspaceIdV1,\n CreateVcsBranchRequestV1,\n Cd4peApiError,\n isInternalError,\n isCd4peApiError,\n handleApiRequest,\n} from '@utils/api/cd4pe';\nimport { VcsActions } from '@utils/api/cd4pe/vcs/actions';\nimport { Dispatch } from 'react';\nimport * as at from './actionTypes';\n\nexport const newControlRepoActions = {\n saveControlRepoStart: () => actionCreator(at.SAVE_CONTROL_REPO_START),\n saveControlRepoComplete: (payload: CreateControlRepoResponseV1) =>\n actionCreator(at.SAVE_CONTROL_REPO_COMPLETE, payload),\n saveControlRepoError: (error: Cd4peApiError) =>\n actionCreator(at.SAVE_CONTROL_REPO_ERROR, error),\n saveControlRepoWebhookError: () =>\n actionCreator(at.SAVE_CONTROL_REPO_WEBHOOK_ERROR),\n createMainBanch: (payload: boolean) =>\n actionCreator(at.CREATE_MAIN_BRANCH, payload),\n closeModal: () => actionCreator(at.CLOSE_MODAL),\n};\n\nexport type NewControlRepoActions =\n | Actions\n | VcsActions\n | AddCodeProjectFormActions;\n\nexport interface CreateControlRepoPayload {\n workspaceId: WorkspaceIdV1;\n requestBody: CreateControlRepoRequestV1;\n}\n\nexport const saveControlRepo = async (\n dispatch: Dispatch,\n repoPayload: CreateControlRepoPayload,\n branchPayload?: CreateVcsBranchRequestV1,\n) => {\n const saveControlRepoCall = async (payload: CreateControlRepoPayload) => {\n const repoResponse = await handleApiRequest(\n ControlReposV1Service.createControlRepoV1(payload),\n );\n\n if (isInternalError(repoResponse) && repoResponse.body.code === 'VCS') {\n dispatch(newControlRepoActions.saveControlRepoWebhookError());\n return;\n }\n\n if (isCd4peApiError(repoResponse)) {\n dispatch(newControlRepoActions.saveControlRepoError(repoResponse));\n return;\n }\n\n dispatch(newControlRepoActions.saveControlRepoComplete(repoResponse));\n };\n\n if (branchPayload) {\n const branchResponse = await handleApiRequest(\n VcsV1Service.createBranchV1({\n workspaceId: repoPayload.workspaceId,\n requestBody: branchPayload,\n }),\n );\n\n if (isCd4peApiError(branchResponse)) {\n dispatch(newControlRepoActions.saveControlRepoError(branchResponse));\n return;\n }\n\n const updatedControlRepoPayload: CreateControlRepoPayload = {\n ...repoPayload,\n requestBody: {\n ...repoPayload.requestBody,\n pacBranch: branchPayload.name,\n },\n };\n\n await saveControlRepoCall(updatedControlRepoPayload);\n return;\n }\n\n await saveControlRepoCall(repoPayload);\n};\n","import React, { useEffect, useReducer } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Heading } from '@puppet/react-components';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport AddCodeProjectForm, {\n addCodeProjectFormActions,\n AddCodeProjectFormOnChange,\n ADD_CODE_PROJECT_FORM_ACTION_TYPES,\n} from '@codeDelivery/components/AddCodeProjectForm';\nimport {\n getSources,\n getRepositories,\n getBranches,\n} from '@utils/api/cd4pe/vcs/actions';\nimport debounce from '@utils/debounce';\nimport { CreateVcsBranchRequestV1, VcsProviderV1 } from '@utils/api/cd4pe';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport PageLayout from '@components/PageLayout';\nimport { LINKS } from 'src/routes';\nimport { defaultNewControlRepoState, reducer } from './reducer';\nimport {\n CreateControlRepoPayload,\n newControlRepoActions,\n saveControlRepo,\n} from './actions';\n\ninterface StdItem {\n value: K;\n actualValue: T;\n}\n\nconst getActualValue = <\n ItemType extends StdItem,\n ValueType = ItemType['value'],\n ActualValueType = ItemType['actualValue'],\n>(\n items: ItemType[],\n selectedItem: ItemType['value'],\n) => {\n const item = items.find((i) => {\n return i.value === selectedItem;\n });\n if (item) {\n return item.actualValue;\n }\n return null;\n};\n\nconst debouncedGetRepos = debounce(getRepositories, 250);\nconst debouncedGetBranches = debounce(getBranches, 250);\n\nconst NewControlRepo = () => {\n const [state, dispatch] = useReducer(reducer, defaultNewControlRepoState);\n const navigate = useNavigate();\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const sourceMatch = getActualValue(state.sources, state.selectedSource);\n const repoMatch = getActualValue(\n state.repositories,\n state.selectedRepository,\n );\n const branchMatch = state.branches.find(\n ({ label }) => label === state.selectedBranch,\n );\n\n useEffect(() => {\n if (workspaceId) getSources(workspaceId, dispatch);\n }, [workspaceId]);\n\n useEffect(() => {\n if (state.newControlRepoName) {\n navigate(\n LINKS.codeDelivery.viewRepository({\n path: { workspace: workspaceName, name: state.newControlRepoName },\n }),\n );\n }\n }, [state.newControlRepoName, workspaceName, navigate]);\n\n useEffect(() => {\n if (!state.selectedBranch && state.mainBranch) {\n dispatch(\n addCodeProjectFormActions.selectedBranch(state.mainBranch.label),\n );\n }\n }, [state.mainBranch, state.selectedBranch]);\n\n useEffect(() => {\n if (state.selectedBranch && !branchMatch && repoMatch) {\n debouncedGetBranches(\n workspaceId,\n dispatch,\n repoMatch,\n state.selectedBranch,\n );\n }\n }, [state.selectedBranch, branchMatch, repoMatch, workspaceId, dispatch]);\n\n const breadcrumbs = [\n { displayName: `${workspaceName}` },\n {\n displayName: t('newControlRepo.breadcrumb.controlRepos'),\n linkDestination: LINKS.codeDelivery.listRepositories({\n path: { workspace: workspaceName },\n }),\n },\n { displayName: t('newControlRepo.header.text') },\n ];\n\n const onFormChange: AddCodeProjectFormOnChange = (fieldName, values) => {\n dispatch({ type: fieldName, payload: values[fieldName] || '' });\n\n switch (fieldName) {\n case ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_SOURCE: {\n const selectedSource = getActualValue(\n state.sources,\n values.SELECTED_SOURCE || '',\n );\n if (selectedSource) {\n getRepositories(workspaceId, dispatch, selectedSource);\n }\n break;\n }\n case ADD_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_REPOSITORY: {\n const selectedRepository = getActualValue(\n state.repositories,\n values.SELECTED_REPOSITORY || '',\n );\n\n if (selectedRepository) {\n dispatch(\n addCodeProjectFormActions.name(\n selectedRepository.displayName || '',\n ),\n );\n getBranches(workspaceId, dispatch, selectedRepository);\n }\n break;\n }\n default:\n }\n };\n\n const dispatchCreateMainBranch = (payload: boolean) => () => {\n dispatch(newControlRepoActions.createMainBanch(payload));\n };\n\n const adaptProviderForBackend = (provider: VcsProviderV1): VcsProviderV1 => {\n const p = provider.replace(/\\s+/g, '').toUpperCase();\n if (p === 'BITBUCKETCLOUD') {\n return 'BITBUCKET';\n }\n return p as VcsProviderV1;\n };\n\n const onClickSaveControlRepo = async () => {\n if (!repoMatch || !sourceMatch || !branchMatch) {\n dispatch(\n newControlRepoActions.saveControlRepoError(\n t('newControlRepo.error.missingFields'),\n ),\n );\n return;\n }\n\n dispatch(newControlRepoActions.saveControlRepoStart());\n const provider = adaptProviderForBackend(repoMatch.provider);\n const srcRepoName = repoMatch.name;\n const srcRepoDisplayName = repoMatch.displayName;\n const srcRepoDisplayOwner = sourceMatch.displayName;\n\n const srcRepoOwner =\n repoMatch.organization || repoMatch.project || repoMatch.user;\n let srcRepoId = srcRepoOwner;\n if (provider === 'AZURE_DEVOPS' || provider === 'GITLAB') {\n srcRepoId = repoMatch.project;\n }\n\n let sanitizedCreateMainBranch = state.createMainBranch;\n if (state.mainBranch) {\n sanitizedCreateMainBranch = false;\n }\n\n const controlRepoPayload: CreateControlRepoPayload = {\n workspaceId,\n requestBody: {\n scanForPacFile: true,\n pacBranch: state.selectedBranch,\n name: state.name,\n srcRepoProvider: provider,\n srcRepoOwner: srcRepoOwner || '',\n srcRepoDisplayOwner: srcRepoDisplayOwner || '',\n srcRepoName,\n srcRepoDisplayName: srcRepoDisplayName || '',\n srcRepoId: srcRepoId || '',\n },\n };\n\n if (sanitizedCreateMainBranch) {\n const targetBranch = state.branches.find(\n (branch) => branch.actualValue.name === state.selectedBranch,\n );\n\n if (!targetBranch) {\n dispatch(\n newControlRepoActions.saveControlRepoError(\n t('newControlRepo.error.missingFields'),\n ),\n );\n return;\n }\n\n const branchPayload: CreateVcsBranchRequestV1 = {\n provider,\n project: repoMatch.project || '',\n organization: repoMatch.organization || '',\n repositoryName: srcRepoName,\n sha: targetBranch.actualValue.headSha || '',\n user: repoMatch.user || '',\n name: 'main',\n };\n\n saveControlRepo(dispatch, controlRepoPayload, branchPayload);\n return;\n }\n saveControlRepo(dispatch, controlRepoPayload);\n };\n\n const onClickCancel = () => {\n navigate(\n LINKS.codeDelivery.listRepositories({\n path: { workspace: workspaceName },\n }),\n );\n };\n\n const repoFilterCallback = (filterTerm: string) => {\n debouncedGetRepos(workspaceId, dispatch, sourceMatch, filterTerm);\n };\n\n const dispatchCloseModal = () => {\n dispatch(newControlRepoActions.closeModal());\n };\n\n return (\n \n \n \n \n \n {t('newControlRepo.header.text')}\n \n \n \n \n \n );\n};\n\nexport default NewControlRepo;\n","import NewControlRepo from './NewControlRepo';\n\nexport default NewControlRepo;\n","import { Link } from '@puppet/react-components';\nimport { NavLink } from 'react-router-dom';\nimport React from 'react';\nimport { LINKS } from 'src/routes';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\n\nconst GroupLink = ({ id, name }: { id: number; name: string }) => {\n const workspace = useWorkspaceName();\n\n return (\n \n {name}\n \n );\n};\n\nexport default GroupLink;\n","export const GET_GROUPS_LOADING = 'GET_GROUPS_LOADING';\nexport const GET_GROUPS_COMPLETE = 'GET_GROUPS_COMPLETE';\nexport const GET_GROUPS_ERROR = 'GET_GROUPS_ERROR';\nexport const DELETE_GROUPS_LOADING = 'DELETE_GROUPS_LOADING';\nexport const DELETE_GROUPS_COMPLETE = 'DELETE_GROUPS_COMPLETE';\nexport const DELETE_GROUPS_ERROR = 'DELETE_GROUPS_ERROR';\nexport const TOGGLE_CONFIRM_DELETE = 'TOGGLE_CONFIRM_DELETE';\nexport const FILTER_GROUPS = 'FILTER_GROUPS';\nexport const SORT_GROUPS = 'SORT_GROUPS';\n","import { Dispatch } from 'react';\nimport { TFunction } from 'react-i18next';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport { stringCompare } from '@utils/compare';\nimport {\n formatError,\n GroupsV1Service,\n isErrorResponse,\n ListRbacGroupsV1,\n RbacGroupV1,\n unwrapApiResponse,\n} from '@utils/api/cd4pe';\nimport * as at from './actionTypes';\n\nconst actions = {\n getGroupsLoading: () => actionCreator(at.GET_GROUPS_LOADING),\n getGroupsComplete: (groupDataPayload: ListRbacGroupsV1) =>\n actionCreator(at.GET_GROUPS_COMPLETE, groupDataPayload),\n getGroupsError: (error: string) => actionCreator(at.GET_GROUPS_ERROR, error),\n deleteGroupLoading: () => actionCreator(at.DELETE_GROUPS_LOADING),\n deleteGroupComplete: () => actionCreator(at.DELETE_GROUPS_COMPLETE),\n deleteGroupError: (error: string) =>\n actionCreator(at.DELETE_GROUPS_ERROR, error),\n toggleConfirmDelete: (groupId: number | null) =>\n actionCreator(at.TOGGLE_CONFIRM_DELETE, groupId),\n filterGroups: (filterPayload: {\n query: string;\n filteredGroups: RbacGroupV1[];\n }) => actionCreator(at.FILTER_GROUPS, filterPayload),\n sortGroups: (sortPayload: {\n groups: RbacGroupV1[];\n sort: { direction: string; sortDataKey: 'name' | 'description' };\n }) => actionCreator(at.SORT_GROUPS, sortPayload),\n};\n\nexport type GroupListActions = Actions;\n\nexport const GROUP_SORTS = {\n name: ({ name: a }: RbacGroupV1, { name: b }: RbacGroupV1) =>\n stringCompare(a, b),\n description: (\n { description: a }: RbacGroupV1,\n { description: b }: RbacGroupV1,\n ) => stringCompare(a, b),\n};\n\nexport const filterGroups = (\n { query, groups }: { query: string; groups: RbacGroupV1[] },\n dispatch: Dispatch,\n) => {\n const groupNameMatches = ({ name }: { name: string }) => {\n return name.toLowerCase().includes(query.toLowerCase());\n };\n const filteredGroups = (groups || []).filter(groupNameMatches);\n\n return dispatch(\n actions.filterGroups({\n query,\n filteredGroups,\n }),\n );\n};\n\nexport const toggleConfirmDelete = (\n dispatch: Dispatch,\n groupId: number | null = null,\n) => {\n dispatch(actions.toggleConfirmDelete(groupId));\n};\n\nexport const sortGroups = (\n {\n direction,\n sortDataKey,\n groups,\n query,\n }: {\n direction: string;\n sortDataKey: 'name' | 'description';\n groups: RbacGroupV1[];\n query: string;\n },\n dispatch: Dispatch,\n) => {\n const multiplier = direction === 'asc' ? 1 : -1;\n const sortedGroups = [...groups].sort(\n (a, b) => multiplier * GROUP_SORTS[sortDataKey](a, b),\n );\n\n dispatch(\n actions.sortGroups({\n groups: sortedGroups,\n sort: { direction, sortDataKey },\n }),\n );\n\n return filterGroups({ query, groups: sortedGroups }, dispatch);\n};\n\nexport const getGroups = async (\n {\n workspaceId,\n query,\n sort,\n }: {\n workspaceId: string;\n query: string;\n sort: { direction: string; sortDataKey: 'name' | 'description' };\n },\n dispatch: Dispatch,\n t: TFunction<'codeDelivery'>,\n) => {\n dispatch(actions.getGroupsLoading());\n\n const response = await unwrapApiResponse(\n GroupsV1Service.listGroupsV1({ workspaceId }),\n );\n\n if (isErrorResponse(response)) {\n return dispatch(\n actions.getGroupsError(formatError(response, t('groupList.error.fetch'))),\n );\n }\n\n dispatch(actions.getGroupsComplete(response));\n\n return sortGroups(\n {\n direction: sort.direction,\n sortDataKey: sort.sortDataKey,\n groups: response.groups,\n query,\n },\n dispatch,\n );\n};\n\nexport const deleteGroup = async (\n {\n workspaceId,\n groupId,\n groups,\n query,\n sort,\n }: {\n workspaceId: string;\n groupId: number;\n groups: RbacGroupV1[];\n query: string;\n sort: { direction: string; sortDataKey: 'name' | 'description' };\n },\n dispatch: Dispatch,\n t: TFunction<'codeDelivery'>,\n) => {\n dispatch(actions.deleteGroupLoading());\n const response = await unwrapApiResponse(\n GroupsV1Service.deleteGroupV1({ workspaceId, groupId }),\n );\n if (isErrorResponse(response)) {\n return dispatch(\n actions.deleteGroupError(\n formatError(response, t('groupList.error.delete', { id: groupId })),\n ),\n );\n }\n\n const newGroups = groups.filter(({ id }) => id !== groupId);\n dispatch(actions.deleteGroupComplete());\n return sortGroups(\n {\n direction: sort.direction,\n sortDataKey: sort.sortDataKey,\n groups: newGroups,\n query,\n },\n dispatch,\n );\n};\n","import { RbacGroupV1 } from '@utils/api/cd4pe';\nimport { GroupListActions } from './actions';\nimport * as at from './actionTypes';\n\nexport interface GroupListState {\n getGroupsLoading: boolean;\n groups: RbacGroupV1[];\n getGroupsError: null | string;\n confirmDeleteId: null | number;\n deleteGroupLoading: boolean;\n deleteGroupError: null | string;\n filteredGroups: RbacGroupV1[];\n query: string;\n sort: { direction: string; sortDataKey: 'name' | 'description' };\n}\n\nexport const groupListDefaultState: GroupListState = {\n getGroupsLoading: false,\n groups: [],\n getGroupsError: null,\n confirmDeleteId: null,\n deleteGroupLoading: false,\n deleteGroupError: null,\n filteredGroups: [],\n query: '',\n sort: {\n direction: 'asc',\n sortDataKey: 'name',\n },\n};\n\nexport const reducer = (\n state: GroupListState,\n action: GroupListActions,\n): GroupListState => {\n switch (action.type) {\n case at.GET_GROUPS_LOADING:\n return {\n ...state,\n getGroupsLoading: true,\n };\n case at.GET_GROUPS_COMPLETE:\n return {\n ...state,\n getGroupsLoading: false,\n groups: action.payload.groups,\n getGroupsError: null,\n };\n case at.GET_GROUPS_ERROR:\n return {\n ...state,\n getGroupsLoading: false,\n groups: [],\n getGroupsError: action.payload,\n filteredGroups: [],\n confirmDeleteId: null,\n };\n case at.DELETE_GROUPS_LOADING:\n return {\n ...state,\n deleteGroupLoading: true,\n };\n case at.DELETE_GROUPS_COMPLETE:\n return {\n ...state,\n deleteGroupLoading: false,\n deleteGroupError: null,\n };\n case at.DELETE_GROUPS_ERROR:\n return {\n ...state,\n deleteGroupLoading: false,\n deleteGroupError: action.payload,\n };\n case at.FILTER_GROUPS: {\n return {\n ...state,\n query: action.payload.query ?? state.query,\n filteredGroups: action.payload.filteredGroups,\n confirmDeleteId:\n state.confirmDeleteId !== null &&\n action.payload.filteredGroups.find(\n (t) => t.id === state.confirmDeleteId,\n )\n ? state.confirmDeleteId\n : null,\n };\n }\n case at.TOGGLE_CONFIRM_DELETE:\n return {\n ...state,\n confirmDeleteId: action.payload ?? null,\n };\n case at.SORT_GROUPS:\n return {\n ...state,\n groups: action.payload.groups,\n sort: action.payload.sort,\n };\n default:\n return state;\n }\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { Dispatch, useEffect, useReducer } from 'react';\nimport { Trans, TFunction, useTranslation } from 'react-i18next';\nimport { NavLink, useSearchParams } from 'react-router-dom';\nimport {\n Alert,\n Button,\n Heading,\n Input,\n Link,\n Loading,\n Overlay,\n TooltipHoverArea,\n} from '@puppet/react-components';\nimport { Table } from '@puppet/data-grid';\nimport useRefList, { RefListSetter } from '@hooks/useRefList';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { RbacGroupV1 } from '@utils/api/cd4pe';\nimport { LINKS } from 'src/routes';\nimport GroupLink from './components/GroupLink';\nimport {\n deleteGroup,\n filterGroups,\n getGroups,\n GroupListActions,\n sortGroups,\n toggleConfirmDelete,\n} from './actions';\nimport { groupListDefaultState, GroupListState, reducer } from './reducer';\n\nconst deleteErrorAlert = (state: GroupListState) => {\n if (!state.deleteGroupError) {\n return null;\n }\n return (\n \n {state.deleteGroupError}\n \n );\n};\n\nconst groupActions = (\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n id: number,\n isBuiltIn: boolean,\n name: string,\n confirmDeleteId: number | null,\n setRef: RefListSetter,\n) => (\n \n toggleConfirmDelete(dispatch, id)}\n disabled={confirmDeleteId === id || isBuiltIn}\n />\n \n);\n\nconst groupToRow = (\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n group: RbacGroupV1,\n confirmDeleteId: number | null,\n setRef: RefListSetter,\n) => ({\n id: group.id,\n name: group.name,\n description: group.description,\n actions: groupActions(\n t,\n dispatch,\n group.id,\n group.builtIn,\n group.name,\n confirmDeleteId,\n setRef,\n ),\n});\n\nconst tableColumns = (t: TFunction<'codeDelivery'>) => [\n {\n label: t('groupList.table.header.name'),\n dataKey: 'name',\n sortable: true,\n className: 'group-list-table__cell--truncate',\n cellRenderer: (data: { rowData: RbacGroupV1 }) => (\n \n ),\n },\n {\n label: t('groupList.table.header.description'),\n dataKey: 'description',\n sortable: true,\n className: 'group-list-table__cell--wrap',\n },\n {\n label: t('groupList.table.header.actions'),\n dataKey: 'actions',\n className: 'group-list-table__cell-actions',\n style: { textAlign: 'right' },\n },\n];\n\nconst groupsTable = (\n t: TFunction<'codeDelivery'>,\n state: GroupListState,\n dispatch: Dispatch,\n workspace: string,\n setRef: RefListSetter,\n newGroupName: string | null,\n) => {\n const rows = state.filteredGroups.map((group: RbacGroupV1) =>\n groupToRow(t, dispatch, group, state.confirmDeleteId, setRef),\n );\n const columns = tableColumns(t);\n const onSort = (direction: string, sortDataKey: 'name' | 'description') =>\n sortGroups(\n {\n direction,\n sortDataKey,\n query: state.query,\n groups: state.groups,\n },\n dispatch,\n );\n\n const noGropupsCta = (\n ,\n ]}\n />\n );\n\n return (\n
\n \n newGroupName &&\n data.name.toLowerCase() === newGroupName?.toLowerCase()\n ? 'group-list-table__row--new'\n : ''\n }\n />\n
\n );\n};\n\nconst body = (\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n state: GroupListState,\n workspace: string,\n setRef: RefListSetter,\n newGroupName: string | null,\n) => {\n if (state.getGroupsError) {\n return {state.getGroupsError};\n }\n\n if (state.getGroupsLoading && state.groups.length === 0) {\n return ;\n }\n\n return (\n
\n \n filterGroups({ query: v, groups: state.groups }, dispatch)\n }\n name=\"searchByGroupName\"\n icon=\"search\"\n data-testid=\"group-list-search-input\"\n />\n {groupsTable(t, state, dispatch, workspace, setRef, newGroupName)}\n
\n );\n};\n\nconst GroupList = () => {\n const { t } = useTranslation('codeDelivery');\n const workspace = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const [state, dispatch] = useReducer(reducer, groupListDefaultState);\n const [getRef, setRef] = useRefList();\n const [searchParams] = useSearchParams();\n const newGroupName = searchParams.get('newGroupName');\n\n const fetchGroups = () => {\n if (workspaceId) {\n getGroups(\n {\n workspaceId,\n query: state.query,\n sort: state.sort,\n },\n dispatch,\n t,\n );\n }\n };\n\n useEffect(fetchGroups, []);\n\n const showConfirmDelete =\n state.confirmDeleteId !== null\n ? `${state.filteredGroups\n .map(({ id }: { id: number }) => `${id}`)\n .join()}${state.deleteGroupError}`\n : false;\n\n const maybeDelete = () => {\n if (state.confirmDeleteId || state.confirmDeleteId === 0) {\n deleteGroup(\n {\n workspaceId,\n groupId: state.confirmDeleteId,\n groups: state.groups,\n query: state.query,\n sort: state.sort,\n },\n dispatch,\n t,\n );\n }\n };\n\n return (\n
\n
\n {t('groupList.page.title')}\n \n {t('groupList.buttons.newGroup.label')}\n \n
\n\n
\n {deleteErrorAlert(state)}\n {body(t, dispatch, state, workspace, setRef, newGroupName)}\n
\n \n
\n maybeDelete()}\n data-testid=\"group-list-confirm-delete-button\"\n >\n {t('groupList.buttons.delete.label')}\n \n toggleConfirmDelete(dispatch)}\n aria-label={t('groupList.buttons.cancel.ariaLabel')}\n >\n {t('groupList.buttons.cancel.label')}\n \n
\n \n
\n );\n};\n\nexport default GroupList;\n","import GroupList from './GroupList';\n\nexport default GroupList;\n","export const GET_USERS_LOADING = 'GET_USERS_LOADING';\nexport const GET_USERS_COMPLETE = 'GET_USERS_COMPLETE';\nexport const GET_USERS_ERROR = 'GET_USERS_ERROR';\nexport const DELETE_USER_LOADING = 'DELETE_USER_LOADING';\nexport const DELETE_USER_COMPLETE = 'DELETE_USER_COMPLETE';\nexport const DELETE_USER_ERROR = 'DELETE_USER_ERROR';\nexport const TOGGLE_CONFIRM_DELETE = 'TOGGLE_CONFIRM_DELETE';\nexport const FILTER_USERS = 'FILTER_USERS';\nexport const SORT_USERS = 'SORT_USERS';\n","import { ListWorkspaceMembersResponseV1 } from '@utils/api/cd4pe';\nimport { UserListActions } from './actions';\nimport * as at from './actionTypes';\n\nexport interface UserListState {\n getUsersLoading: boolean;\n users: ListWorkspaceMembersResponseV1['workspaceMembers'];\n getUsersError: string | null;\n confirmDeleteId: null | number;\n deleteUserLoading: boolean;\n deleteUserError: string | null;\n filteredUsers: ListWorkspaceMembersResponseV1['workspaceMembers'];\n query: string;\n sort: { direction: string; sortDataKey: 'user' };\n}\n\nexport const defaultUserListState: UserListState = {\n getUsersLoading: false,\n users: [],\n getUsersError: null,\n confirmDeleteId: null,\n deleteUserLoading: false,\n deleteUserError: null,\n filteredUsers: [],\n query: '',\n sort: {\n direction: 'asc',\n sortDataKey: 'user',\n },\n};\n\nexport const reducer = (\n state: UserListState,\n action: UserListActions,\n): UserListState => {\n switch (action.type) {\n case at.GET_USERS_LOADING:\n return {\n ...state,\n getUsersLoading: true,\n };\n case at.GET_USERS_COMPLETE:\n return {\n ...state,\n getUsersLoading: false,\n users: action.payload.workspaceMembers,\n getUsersError: null,\n };\n case at.GET_USERS_ERROR:\n return {\n ...state,\n getUsersLoading: false,\n users: [],\n getUsersError: action.payload,\n filteredUsers: [],\n confirmDeleteId: null,\n };\n case at.DELETE_USER_LOADING:\n return {\n ...state,\n deleteUserLoading: true,\n };\n case at.DELETE_USER_COMPLETE:\n return {\n ...state,\n users: action.payload,\n deleteUserLoading: false,\n deleteUserError: null,\n };\n case at.DELETE_USER_ERROR:\n return {\n ...state,\n deleteUserLoading: false,\n deleteUserError: action.payload,\n };\n case at.FILTER_USERS: {\n return {\n ...state,\n query: action.payload.query ?? state.query,\n filteredUsers: action.payload.filteredUsers,\n confirmDeleteId:\n state.confirmDeleteId !== null &&\n action.payload.filteredUsers.find(\n (t) => t.userId === state.confirmDeleteId,\n )\n ? state.confirmDeleteId\n : null,\n };\n }\n case at.TOGGLE_CONFIRM_DELETE:\n return {\n ...state,\n confirmDeleteId: action.payload ?? null,\n };\n case at.SORT_USERS:\n return {\n ...state,\n users: action.payload.users,\n sort: action.payload.sort,\n };\n default:\n return state;\n }\n};\n","import actionCreator, { Actions } from '@utils/actionCreator';\nimport { stringCompare } from '@utils/compare';\nimport {\n formatError,\n isErrorResponse,\n unwrapApiResponse,\n ListWorkspaceMembersResponseV1,\n WorkspacesV1Service,\n WorkspaceMemberV1,\n} from '@utils/api/cd4pe';\nimport { Dispatch } from 'react';\nimport { TFunction } from 'react-i18next';\nimport * as at from './actionTypes';\n\nconst actions = {\n getUsersLoading: () => actionCreator(at.GET_USERS_LOADING),\n getUsersComplete: (users: ListWorkspaceMembersResponseV1) =>\n actionCreator(at.GET_USERS_COMPLETE, users),\n getUsersError: (error: string) => actionCreator(at.GET_USERS_ERROR, error),\n deleteUserLoading: () => actionCreator(at.DELETE_USER_LOADING),\n deleteUserComplete: (\n newUsers: ListWorkspaceMembersResponseV1['workspaceMembers'],\n ) => actionCreator(at.DELETE_USER_COMPLETE, newUsers),\n deleteUserError: (error: string) =>\n actionCreator(at.DELETE_USER_ERROR, error),\n toggleConfirmDelete: (toggle: number | null) =>\n actionCreator(at.TOGGLE_CONFIRM_DELETE, toggle),\n filterUsers: (filteredPayload: {\n query: string;\n filteredUsers: ListWorkspaceMembersResponseV1['workspaceMembers'];\n }) => actionCreator(at.FILTER_USERS, filteredPayload),\n sortUsers: (sortedPayload: {\n sort: { sortDataKey: 'user'; direction: string };\n users: ListWorkspaceMembersResponseV1['workspaceMembers'];\n }) => actionCreator(at.SORT_USERS, sortedPayload),\n};\n\nexport type UserListActions = Actions;\n\nexport const filterUsers = (\n query: string,\n users: ListWorkspaceMembersResponseV1['workspaceMembers'],\n dispatch: Dispatch,\n) => {\n let userList;\n if (query === '') {\n userList = users;\n } else {\n userList = users.filter((user) => {\n return user.username.toLowerCase().includes(query.toLowerCase());\n });\n }\n\n dispatch(\n actions.filterUsers({\n query,\n filteredUsers: userList,\n }),\n );\n};\n\nexport const toggleConfirmDelete = (\n dispatch: Dispatch,\n userId: number | null = null,\n) => {\n dispatch(actions.toggleConfirmDelete(userId));\n};\n\nexport const USER_SORTS = {\n user: (\n { username: a }: WorkspaceMemberV1,\n { username: b }: WorkspaceMemberV1,\n ) => stringCompare(a, b),\n};\n\nexport const sortUsers = (\n direction: string,\n sortDataKey: 'user',\n users: ListWorkspaceMembersResponseV1['workspaceMembers'],\n query: string,\n dispatch: Dispatch,\n) => {\n const multiplier = direction === 'asc' ? 1 : -1;\n const sortedUsers = [...users].sort(\n (a, b) => multiplier * USER_SORTS[sortDataKey](a, b),\n );\n\n dispatch(\n actions.sortUsers({\n users: sortedUsers,\n sort: { direction, sortDataKey },\n }),\n );\n\n return filterUsers(query, sortedUsers, dispatch);\n};\n\nexport const getUsers = async (\n workspaceId: string,\n query: string,\n sort: { direction: string; sortDataKey: 'user' },\n dispatch: Dispatch,\n t: TFunction<'codeDelivery'>,\n) => {\n dispatch(actions.getUsersLoading());\n\n const response = await unwrapApiResponse(\n WorkspacesV1Service.listMembersV1({ workspaceId, pageSize: 1000 }),\n );\n\n if (isErrorResponse(response)) {\n dispatch(\n actions.getUsersError(formatError(response, t('userList.error.fetch'))),\n );\n return;\n }\n\n dispatch(actions.getUsersComplete(response));\n sortUsers(\n sort.direction,\n sort.sortDataKey,\n response.workspaceMembers,\n query,\n dispatch,\n );\n};\n\nexport const deleteUser = async (\n workspaceId: string,\n confirmDeleteId: number,\n users: ListWorkspaceMembersResponseV1['workspaceMembers'],\n query: string,\n sort: { direction: string; sortDataKey: 'user' },\n dispatch: Dispatch,\n t: TFunction<'codeDelivery'>,\n) => {\n dispatch(actions.deleteUserLoading());\n\n const response = await unwrapApiResponse(\n WorkspacesV1Service.deleteMemberV1({\n workspaceId,\n userId: confirmDeleteId,\n }),\n );\n\n if (isErrorResponse(response)) {\n dispatch(\n actions.deleteUserError(\n formatError(\n response,\n t('userList.error.delete', { id: confirmDeleteId }),\n ),\n ),\n );\n return;\n }\n\n const newUsers = users.filter((user) => user.userId !== confirmDeleteId);\n dispatch(actions.deleteUserComplete(newUsers));\n sortUsers(sort.direction, sort.sortDataKey, newUsers, query, dispatch);\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { Dispatch, useEffect, useReducer } from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { TFunction, useTranslation } from 'react-i18next';\nimport {\n Alert,\n Button,\n Heading,\n Input,\n Loading,\n Overlay,\n TooltipHoverArea,\n} from '@puppet/react-components';\nimport { Table } from '@puppet/data-grid';\nimport useRefList, { RefListSetter } from '@hooks/useRefList';\nimport { WorkspaceMemberV1 } from '@utils/api/cd4pe';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { LINKS } from 'src/routes';\nimport { defaultUserListState, reducer, UserListState } from './reducer';\nimport {\n deleteUser,\n filterUsers,\n getUsers,\n sortUsers,\n toggleConfirmDelete,\n UserListActions,\n} from './actions';\n\nconst deleteErrorAlert = (state: UserListState) => {\n if (!state.deleteUserError) {\n return null;\n }\n return (\n \n {state.deleteUserError}\n \n );\n};\n\nconst userActions = (\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n id: number,\n confirmDeleteId: number | null,\n setRef: RefListSetter,\n) => (\n \n toggleConfirmDelete(dispatch, id)}\n disabled={confirmDeleteId === id}\n />\n \n);\n\nconst userToRow = (\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n workspace: string | null,\n user: WorkspaceMemberV1,\n confirmDeleteId: number | null,\n setRef: RefListSetter,\n) => ({\n id: user.userId,\n user: user.username,\n actions: userActions(t, dispatch, user.userId, confirmDeleteId, setRef),\n});\n\nconst tableColumns = (t: TFunction<'codeDelivery'>) => [\n {\n label: t('userList.table.header.user'),\n dataKey: 'user',\n sortable: true,\n className: 'user-list-table__cell--truncate',\n },\n {\n label: t('userList.table.header.actions'),\n dataKey: 'actions',\n className: 'user-list-table__cell-actions',\n style: { textAlign: 'right' },\n },\n];\n\nconst usersTable = (\n t: TFunction<'codeDelivery'>,\n state: UserListState,\n dispatch: Dispatch,\n workspace: string | null,\n setRef: RefListSetter,\n) => {\n const rows = state.filteredUsers.map((user: WorkspaceMemberV1) =>\n userToRow(t, dispatch, workspace, user, state.confirmDeleteId, setRef),\n );\n const columns = tableColumns(t);\n const onSort = (direction: string, sortDataKey: 'user') =>\n sortUsers(direction, sortDataKey, state.users, state.query, dispatch);\n\n const emptyMessage =\n state.query === ''\n ? t('userList.table.empty.messageBody')\n : t('userList.table.empty.messageBodyNoResults');\n\n return (\n
\n \n
\n );\n};\n\nconst body = (\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n state: UserListState,\n workspace: string | null,\n setRef: RefListSetter,\n) => {\n if (state.getUsersError) {\n return {state.getUsersError};\n }\n\n if (state.getUsersLoading && state.users.length === 0) {\n return ;\n }\n\n return (\n
\n filterUsers(query, state.users, dispatch)}\n name=\"searchByUserName\"\n icon=\"search\"\n />\n {usersTable(t, state, dispatch, workspace, setRef)}\n
\n );\n};\n\nconst UserList = () => {\n const { t } = useTranslation('codeDelivery');\n const workspace = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const [state, dispatch] = useReducer(reducer, defaultUserListState);\n const [getRef, setRef] = useRefList();\n\n const fetchUsers = () => {\n if (workspaceId) {\n getUsers(workspaceId, state.query, state.sort, dispatch, t);\n }\n };\n\n useEffect(fetchUsers, []);\n\n const showConfirmDelete =\n state.confirmDeleteId !== null\n ? `${state.filteredUsers.map((x) => `${x.userId}`).join()}${\n state.deleteUserError\n }`\n : false;\n\n const maybeDelete = () => {\n if (state.confirmDeleteId || state.confirmDeleteId === 0) {\n deleteUser(\n workspaceId,\n state.confirmDeleteId,\n state.users,\n state.query,\n state.sort,\n dispatch,\n t,\n );\n }\n };\n\n return (\n
\n
\n {t('userList.page.title')}\n \n {t('userList.buttons.newUser.label')}\n \n
\n\n
\n {deleteErrorAlert(state)}\n {body(t, dispatch, state, workspace, setRef)}\n
\n \n
\n maybeDelete()}\n >\n {t('userList.buttons.delete.label')}\n \n toggleConfirmDelete(dispatch)}\n aria-label={t('userList.buttons.cancel.ariaLabel')}\n >\n {t('userList.buttons.cancel.label')}\n \n
\n \n
\n );\n};\n\nexport default UserList;\n","import UserList from './UserList';\n\nexport default UserList;\n","export const GET_USERS_LOADING = 'GET_USERS_LOADING';\nexport const GET_USERS_COMPLETE = 'GET_USERS_COMPLETE';\nexport const GET_USERS_ERROR = 'GET_USERS_ERROR';\n\nexport const GET_GROUPS_LOADING = 'GET_GROUPS_LOADING';\nexport const GET_GROUPS_COMPLETE = 'GET_GROUPS_COMPLETE';\nexport const GET_GROUPS_ERROR = 'GET_GROUPS_ERROR';\n\nexport const ADD_USERS_LOADING = 'ADD_USERS_LOADING';\nexport const ADD_USERS_COMPLETE = 'ADD_USERS_COMPLETE';\nexport const ADD_USERS_ERROR = 'ADD_USERS_ERROR';\n\nexport const TOGGLE_ALL_USERS_SELECTION = 'TOGGLE_ALL_USERS_SELECTION';\nexport const TOGGLE_USER_ROW_SELECTION = 'TOGGLE_USER_ROW_SELECTION';\n\nexport const TOGGLE_ALL_GROUPS_SELECTION = 'TOGGLE_ALL_GROUPS_SELECTION';\nexport const TOGGLE_GROUP_ROW_SELECTION = 'TOGGLE_GROUP_ROW_SELECTION';\n\nexport const FILTER_USERS = 'FILTER_USERS';\n\nexport const SORT_USERS = 'SORT_USERS';\nexport const SORT_GROUPS = 'SORT_GROUPS';\n","import actionCreator, { Actions } from '@utils/actionCreator';\nimport { Dispatch } from 'react';\nimport {\n formatError,\n GroupsV1Service,\n isErrorResponse,\n ListRbacGroupsV1,\n ListWorkspaceMemberCandidatesResponseV1,\n RbacGroupV1,\n unwrapApiResponse,\n WorkspaceMemberCandidateV1,\n WorkspacesV1Service,\n} from '@utils/api/cd4pe';\nimport { TFunction } from 'react-i18next';\nimport { stringCompare } from '@utils/compare';\nimport { AddUserState } from './reducer';\nimport * as at from './actionTypes';\nimport { GROUP_SORTS } from '../GroupList/actions';\n\nconst actions = {\n getUsersLoading: () => actionCreator(at.GET_USERS_LOADING),\n getUsersComplete: (users: ListWorkspaceMemberCandidatesResponseV1) =>\n actionCreator(at.GET_USERS_COMPLETE, users),\n getUsersError: (error: string) => actionCreator(at.GET_USERS_ERROR, error),\n\n getGroupsLoading: () => actionCreator(at.GET_GROUPS_LOADING),\n getGroupsComplete: (groups: ListRbacGroupsV1) =>\n actionCreator(at.GET_GROUPS_COMPLETE, groups),\n getGroupsError: (error: string) => actionCreator(at.GET_GROUPS_ERROR, error),\n\n addUsersLoading: () => actionCreator(at.ADD_USERS_LOADING),\n addUsersComplete: () => actionCreator(at.ADD_USERS_COMPLETE),\n addUsersError: (error: string) => actionCreator(at.ADD_USERS_ERROR, error),\n\n toggleAllUsersSelection: (toggleAllPayload: {\n indeterminateUserState: boolean;\n selectAll: boolean;\n }) => actionCreator(at.TOGGLE_ALL_USERS_SELECTION, toggleAllPayload),\n toggleUserRowSelection: (rowPayload: {\n users: ListCandidatesWithSelectedAttr;\n usersSelectedCount: number;\n }) => actionCreator(at.TOGGLE_USER_ROW_SELECTION, rowPayload),\n\n toggleAllGroupsSelection: (toggleAllPayload: {\n indeterminateGroupState: boolean;\n selectAll: boolean;\n }) => actionCreator(at.TOGGLE_ALL_GROUPS_SELECTION, toggleAllPayload),\n toggleGroupRowSelection: (rowPayload: {\n groups: ListRBACGroupsWithSelectedAttr;\n groupsSelectedCount: number;\n }) => actionCreator(at.TOGGLE_GROUP_ROW_SELECTION, rowPayload),\n\n filterUsers: (filteredPayload: {\n query: string;\n filteredUsers: ListWorkspaceMemberCandidatesResponseV1['workspaceMemberCandidates'];\n usersSelectedCount: number;\n }) => actionCreator(at.FILTER_USERS, filteredPayload),\n\n sortUsers: (sortedPayload: {\n sortUsers: { sortDataKey: 'username'; direction: string };\n users: ListCandidatesWithSelectedAttr;\n }) => actionCreator(at.SORT_USERS, sortedPayload),\n sortGroups: (sortPayload: {\n sortGroups: { sortDataKey: 'name' | 'description'; direction: string };\n groups: ListRBACGroupsWithSelectedAttr;\n }) => actionCreator(at.SORT_GROUPS, sortPayload),\n};\n\nexport type AddUserActions = Actions;\n\nexport interface RowData {\n id: string;\n userId: number;\n selected?: boolean;\n}\n\nexport type BreadCrumbType = {\n translationKey: string;\n linkDestination?: string;\n};\n\nexport interface WorkspaceCandidateWithSelectedAttr\n extends WorkspaceMemberCandidateV1 {\n selected?: boolean;\n}\n\nexport interface RbacGroupWithSelectedAttr extends RbacGroupV1 {\n selected?: boolean;\n}\n\nexport type ListCandidatesWithSelectedAttr =\n WorkspaceCandidateWithSelectedAttr[];\nexport type ListRBACGroupsWithSelectedAttr = RbacGroupWithSelectedAttr[];\n\nexport const filterUsers = (\n query: string,\n users: ListCandidatesWithSelectedAttr,\n dispatch: Dispatch,\n) => {\n const userNameMatches = ({ username }: WorkspaceMemberCandidateV1) =>\n username.toLowerCase().includes(query);\n const filteredUsers = (users || []).filter(userNameMatches);\n const usersSelectedCount = filteredUsers.reduce(\n (acc, u) => (u.selected ? acc + 1 : acc),\n 0,\n );\n\n dispatch(\n actions.filterUsers({\n query,\n filteredUsers,\n usersSelectedCount,\n }),\n );\n};\n\nexport const getUsers = async (\n workspaceId: string,\n query: string,\n dispatch: Dispatch,\n t: TFunction<'codeDelivery'>,\n) => {\n dispatch(actions.getUsersLoading());\n\n const response = await unwrapApiResponse(\n WorkspacesV1Service.listMemberCandidatesV1({ workspaceId }),\n );\n if (isErrorResponse(response)) {\n dispatch(\n actions.getUsersError(formatError(response, t('userList.error.fetch'))),\n );\n return;\n }\n\n dispatch(actions.getUsersComplete(response));\n filterUsers(query, response.workspaceMemberCandidates, dispatch);\n};\n\nexport const toggleAllUsersSelection = (\n state: AddUserState,\n dispatch: Dispatch,\n isChecked: boolean,\n) => {\n dispatch(\n actions.toggleAllUsersSelection({\n indeterminateUserState: false,\n selectAll: isChecked,\n }),\n );\n};\n\nexport const toggleAllGroupsSelection = (\n state: AddUserState,\n dispatch: Dispatch,\n isChecked: boolean,\n) => {\n dispatch(\n actions.toggleAllGroupsSelection({\n indeterminateGroupState: false,\n selectAll: isChecked,\n }),\n );\n};\n\nexport const toggleAllSelectionOfType = (\n type: 'users' | 'groups',\n state: AddUserState,\n dispatch: Dispatch,\n isChecked: boolean,\n) => {\n if (type === 'users') {\n toggleAllUsersSelection(state, dispatch, isChecked);\n } else if (type === 'groups') {\n toggleAllGroupsSelection(state, dispatch, isChecked);\n }\n};\n\nexport const toggleUserRowSelection = (\n isChecked: boolean,\n rowData: RowData,\n users: ListCandidatesWithSelectedAttr,\n state: AddUserState,\n dispatch: Dispatch,\n) => {\n if (state.selectAllUsers) {\n dispatch(\n actions.toggleAllUsersSelection({\n indeterminateUserState: !state.indeterminateUserState,\n selectAll: !state.selectAllUsers,\n }),\n );\n }\n\n const updatedUsers = [...users];\n if (isChecked !== rowData.selected) {\n const user = updatedUsers.find((u) => u.userId === rowData.userId);\n if (user) {\n user.selected = !user.selected;\n }\n }\n\n const usersSelectedCount = updatedUsers.reduce(\n (acc, u) => (u.selected ? acc + 1 : acc),\n 0,\n );\n dispatch(\n actions.toggleUserRowSelection({ users: updatedUsers, usersSelectedCount }),\n );\n filterUsers(state.query, updatedUsers, dispatch);\n};\n\nexport const toggleGroupRowSelection = (\n isChecked: boolean,\n rowData: RowData,\n groups: ListRBACGroupsWithSelectedAttr,\n state: AddUserState,\n dispatch: Dispatch,\n) => {\n if (state.selectAllGroups) {\n dispatch(\n actions.toggleAllGroupsSelection({\n indeterminateGroupState: !state.indeterminateGroupState,\n selectAll: !state.selectAllGroups,\n }),\n );\n }\n const updatedGroups = [...groups];\n if (isChecked !== rowData.selected) {\n const group = updatedGroups.find((g) => g.id === rowData.userId);\n if (group) {\n group.selected = !group.selected;\n }\n }\n const groupsSelectedCount = updatedGroups.reduce(\n (acc, g) => (g.selected ? acc + 1 : acc),\n 0,\n );\n\n dispatch(\n actions.toggleGroupRowSelection({\n groups: updatedGroups,\n groupsSelectedCount,\n }),\n );\n};\n\nexport const USERNAME_SORTS = {\n username: (\n { username: a }: WorkspaceMemberCandidateV1,\n { username: b }: WorkspaceMemberCandidateV1,\n ) => stringCompare(a, b),\n};\nexport const sortUsers = (\n direction: string,\n sortDataKey: 'username',\n users: ListWorkspaceMemberCandidatesResponseV1['workspaceMemberCandidates'],\n query: string,\n dispatch: Dispatch,\n) => {\n const multiplier = direction === 'asc' ? 1 : -1;\n const sortedUsers = [...users].sort(\n (a, b) => multiplier * USERNAME_SORTS[sortDataKey](a, b),\n );\n dispatch(\n actions.sortUsers({\n users: sortedUsers,\n sortUsers: { direction, sortDataKey },\n }),\n );\n};\n\nexport const sortGroups = (\n direction: string,\n sortDataKey: 'name' | 'description',\n groups: ListRBACGroupsWithSelectedAttr,\n query: string,\n dispatch: Dispatch,\n) => {\n const multiplier = direction === 'asc' ? 1 : -1;\n const sortedGroups = [...groups].sort(\n (a, b) => multiplier * GROUP_SORTS[sortDataKey](a, b),\n );\n dispatch(\n actions.sortGroups({\n groups: sortedGroups,\n sortGroups: { direction, sortDataKey },\n }),\n );\n};\n\nexport const getGroups = async (\n workspaceId: string,\n query: string,\n dispatch: Dispatch,\n t: TFunction<'codeDelivery'>,\n sort: { direction: string; sortDataKey: 'name' | 'description' },\n) => {\n dispatch(actions.getGroupsLoading());\n const response = await unwrapApiResponse(\n GroupsV1Service.listGroupsV1({ workspaceId }),\n );\n if (isErrorResponse(response)) {\n dispatch(\n actions.getGroupsError(formatError(response, t('groupList.error.fetch'))),\n );\n return;\n }\n dispatch(actions.getGroupsComplete(response));\n\n sortGroups(\n sort.direction,\n sort.sortDataKey,\n response.groups,\n query,\n dispatch,\n );\n};\n\nexport const addUsersToWorkspace = async (\n workspaceId: string,\n t: TFunction<'codeDelivery'>,\n state: AddUserState,\n dispatch: Dispatch,\n) => {\n dispatch(actions.addUsersLoading());\n\n const userDomains = state.cachedUsers\n .filter((user) => user.selected)\n .map((user) => user.userId);\n const isAnyGroupSelected = state.groups.some((group) => group.selected);\n const isAnyCachedUserSelected = state.cachedUsers.some(\n (user) => user.selected,\n );\n\n if (!isAnyCachedUserSelected || !isAnyGroupSelected) {\n dispatch(actions.addUsersError(t('addUsers.users.error.addNewUsers')));\n return;\n }\n\n const groupIdsSelected = state.groups.reduce((acc: number[], group) => {\n if (group.selected) {\n acc.push(group.id);\n }\n return acc;\n }, []);\n\n const addToWorkspaceResponse = await unwrapApiResponse(\n WorkspacesV1Service.addMembersV1({\n workspaceId,\n requestBody: { userIds: [...userDomains] },\n }),\n );\n\n if (isErrorResponse(addToWorkspaceResponse)) {\n dispatch(actions.addUsersError(formatError(addToWorkspaceResponse)));\n return;\n }\n\n const addUsersToGroupsResponseList = await Promise.all(\n groupIdsSelected.map((groupId) => {\n return unwrapApiResponse(\n GroupsV1Service.addGroupMembersV1({\n groupId,\n requestBody: { userIds: userDomains },\n }),\n );\n }),\n );\n\n const responseListError = addUsersToGroupsResponseList.reduce((acc, prom) => {\n if (acc) {\n return acc;\n }\n if (isErrorResponse(prom)) {\n return formatError(prom);\n }\n return null;\n }, null as null | string);\n\n if (responseListError) {\n dispatch(actions.addUsersError(responseListError));\n return;\n }\n\n dispatch(actions.addUsersComplete());\n};\n","import * as at from './actionTypes';\nimport {\n AddUserActions,\n ListCandidatesWithSelectedAttr,\n ListRBACGroupsWithSelectedAttr,\n} from './actions';\n\nexport interface AddUserState {\n getUsersLoading: boolean;\n getGroupsLoading: boolean;\n addUsersLoading: boolean;\n addUsersComplete: boolean;\n cachedUsers: ListCandidatesWithSelectedAttr;\n filteredUsers: ListCandidatesWithSelectedAttr;\n selectAllUsers: boolean;\n getUsersError: string | null;\n getGroupsError: string | null;\n addUsersError: string | null;\n sortUsers: {\n direction: string;\n sortDataKey: 'username';\n };\n sortGroups: {\n direction: string;\n sortDataKey: 'name' | 'description';\n };\n query: string;\n indeterminateUserState: boolean;\n indeterminateGroupState: boolean;\n groups: ListRBACGroupsWithSelectedAttr;\n selectAllGroups: boolean;\n}\n\nexport const defaultAddUserState: AddUserState = {\n getUsersLoading: false,\n getGroupsLoading: false,\n addUsersLoading: false,\n addUsersComplete: false,\n cachedUsers: [],\n filteredUsers: [],\n selectAllUsers: false,\n getUsersError: null,\n getGroupsError: null,\n addUsersError: null,\n sortUsers: {\n direction: 'asc',\n sortDataKey: 'username',\n },\n sortGroups: {\n direction: 'asc',\n sortDataKey: 'name' || 'description',\n },\n query: '',\n indeterminateUserState: false,\n indeterminateGroupState: false,\n groups: [],\n selectAllGroups: false,\n};\n\nexport const reducer = (\n state: AddUserState,\n action: AddUserActions,\n): AddUserState => {\n switch (action.type) {\n case at.GET_USERS_LOADING:\n return {\n ...state,\n getUsersLoading: true,\n };\n case at.GET_GROUPS_LOADING:\n return {\n ...state,\n getGroupsLoading: true,\n };\n case at.ADD_USERS_LOADING:\n return {\n ...state,\n addUsersLoading: true,\n };\n case at.GET_USERS_COMPLETE:\n return {\n ...state,\n getUsersLoading: false,\n cachedUsers: action.payload.workspaceMemberCandidates,\n selectAllUsers: false,\n getUsersError: null,\n };\n case at.GET_GROUPS_COMPLETE:\n return {\n ...state,\n getGroupsLoading: false,\n groups: [...action.payload.groups],\n getGroupsError: null,\n };\n case at.ADD_USERS_COMPLETE:\n return {\n ...state,\n addUsersLoading: false,\n addUsersComplete: true,\n addUsersError: null,\n };\n case at.GET_USERS_ERROR:\n return {\n ...state,\n getUsersLoading: false,\n cachedUsers: [],\n getUsersError: action.payload,\n filteredUsers: [],\n selectAllUsers: false,\n };\n case at.GET_GROUPS_ERROR:\n return {\n ...state,\n getGroupsLoading: false,\n getUsersError: action.payload,\n groups: [],\n };\n case at.ADD_USERS_ERROR:\n return {\n ...state,\n addUsersComplete: false,\n addUsersLoading: false,\n addUsersError: action.payload,\n };\n case at.TOGGLE_ALL_USERS_SELECTION:\n return {\n ...state,\n indeterminateUserState: action.payload.indeterminateUserState,\n cachedUsers: [...state.cachedUsers].map((u) => ({\n ...u,\n selected: !state.selectAllUsers,\n })),\n filteredUsers: [...state.filteredUsers].map((u) => ({\n ...u,\n selected: !state.selectAllUsers,\n })),\n selectAllUsers: action.payload.selectAll,\n };\n case at.TOGGLE_ALL_GROUPS_SELECTION:\n return {\n ...state,\n indeterminateGroupState: action.payload.indeterminateGroupState,\n groups: [...state.groups].map((u) => ({\n ...u,\n selected: !state.selectAllGroups,\n })),\n selectAllGroups: action.payload.selectAll,\n };\n case at.TOGGLE_USER_ROW_SELECTION:\n return {\n ...state,\n filteredUsers: action.payload.users,\n indeterminateUserState:\n action.payload.usersSelectedCount !== 0 &&\n action.payload.usersSelectedCount !== action.payload.users.length,\n selectAllUsers:\n action.payload.users.length === action.payload.usersSelectedCount,\n };\n case at.TOGGLE_GROUP_ROW_SELECTION:\n return {\n ...state,\n groups: action.payload.groups,\n indeterminateGroupState:\n action.payload.groupsSelectedCount !== 0 &&\n action.payload.groupsSelectedCount !== action.payload.groups.length,\n selectAllGroups:\n action.payload.groups.length === action.payload.groupsSelectedCount,\n };\n case at.FILTER_USERS:\n return {\n ...state,\n query: action.payload.query ?? state.query,\n filteredUsers: action.payload.filteredUsers,\n indeterminateUserState:\n action.payload.usersSelectedCount !== 0 &&\n action.payload.usersSelectedCount !==\n action.payload.filteredUsers.length,\n selectAllUsers:\n action.payload.filteredUsers.length ===\n action.payload.usersSelectedCount,\n };\n case at.SORT_USERS:\n return {\n ...state,\n cachedUsers: action.payload.users,\n filteredUsers: action.payload.users,\n sortUsers: action.payload.sortUsers,\n };\n case at.SORT_GROUPS:\n return {\n ...state,\n groups: action.payload.groups,\n sortGroups: action.payload.sortGroups,\n };\n default:\n return state;\n }\n};\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { Dispatch, useEffect, useReducer } from 'react';\nimport { TFunction, useTranslation } from 'react-i18next';\nimport { Table, TableHeader } from '@puppet/data-grid';\nimport { Alert, Button, Heading, Loading } from '@puppet/react-components';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useNavigate } from 'react-router-dom';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport { useAppDispatch } from '@hooks/redux';\nimport { useStore } from 'react-redux';\nimport alerts from '@state/ui/alerts';\nimport { LINKS } from 'src/routes';\nimport {\n AddUserActions,\n addUsersToWorkspace,\n BreadCrumbType,\n filterUsers,\n getGroups,\n getUsers,\n ListCandidatesWithSelectedAttr,\n ListRBACGroupsWithSelectedAttr,\n RbacGroupWithSelectedAttr,\n RowData,\n sortGroups,\n sortUsers,\n toggleAllSelectionOfType,\n toggleGroupRowSelection,\n toggleUserRowSelection,\n WorkspaceCandidateWithSelectedAttr,\n} from './actions';\nimport { AddUserState, defaultAddUserState, reducer } from './reducer';\n\nconst transformBreadcrumbs = (\n breadcrumbs: BreadCrumbType[],\n workspace: string,\n t: TFunction<'codeDelivery'>,\n) => {\n const crumbs = breadcrumbs.map((b) => {\n const { translationKey, ...rest } = b;\n return {\n displayName: t(translationKey),\n ...rest,\n };\n });\n return [{ displayName: workspace }, ...crumbs];\n};\n\nconst renderError = (state: AddUserState) => {\n if (state.addUsersError) {\n return {state.addUsersError};\n }\n return null;\n};\n\nconst onHeaderSelected = (\n state: AddUserState,\n dispatch: Dispatch,\n isChecked: boolean,\n type: 'users' | 'groups',\n) => {\n toggleAllSelectionOfType(type, state, dispatch, isChecked);\n};\n\nconst onGroupRowSelect = (\n isChecked: boolean,\n rowData: RowData,\n groups: ListRBACGroupsWithSelectedAttr,\n state: AddUserState,\n dispatch: Dispatch,\n) => {\n toggleGroupRowSelection(isChecked, rowData, groups, state, dispatch);\n};\n\nconst onUserRowSelect = (\n isChecked: boolean,\n rowData: RowData,\n users: ListCandidatesWithSelectedAttr,\n state: AddUserState,\n dispatch: Dispatch,\n) => {\n toggleUserRowSelection(isChecked, rowData, users, state, dispatch);\n};\n\nconst userToRow = (user: WorkspaceCandidateWithSelectedAttr) => ({\n userId: user.userId,\n username: user.username,\n selected: user.selected,\n});\n\nconst userTableColumns = (t: TFunction<'codeDelivery'>) => [\n {\n label: t('addUsers.users.table.header.user'),\n dataKey: 'username',\n sortable: true,\n },\n];\n\nconst usersTable = (\n t: TFunction<'codeDelivery'>,\n state: AddUserState,\n dispatch: Dispatch,\n) => {\n const rows = state.filteredUsers.map((user) => userToRow(user));\n const columns = userTableColumns(t);\n const onSort = (direction: string, sortDataKey: 'username') =>\n sortUsers(\n direction,\n sortDataKey,\n state.filteredUsers,\n state.query,\n dispatch,\n );\n return (\n <>\n \n filterUsers(query, state.cachedUsers, dispatch)\n }\n />\n
\n \n onHeaderSelected(state, dispatch, checked, 'users')\n }\n onRowChecked={(checked: boolean, rowData: RowData) =>\n onUserRowSelect(\n checked,\n rowData,\n state.filteredUsers,\n state,\n dispatch,\n )\n }\n headerCheckState={state.selectAllUsers}\n headerIndeterminateState={state.indeterminateUserState}\n onSort={onSort}\n sortedColumn={state.sortUsers}\n />\n
\n \n );\n};\n\nconst groupToRow = (group: RbacGroupWithSelectedAttr) => ({\n userId: group.id,\n name: group.name,\n description: group.description,\n selected: group.selected,\n});\n\nconst groupsTableColumns = (t: TFunction<'codeDelivery'>) => [\n {\n label: t('addUsers.groups.table.header.name'),\n dataKey: 'name',\n sortable: true,\n },\n {\n label: t('addUsers.groups.table.header.description'),\n dataKey: 'description',\n sortable: true,\n },\n];\n\nconst groupsTable = (\n t: TFunction<'codeDelivery'>,\n state: AddUserState,\n dispatch: Dispatch,\n) => {\n const rows = state.groups.map((group) => groupToRow(group));\n const columns = groupsTableColumns(t);\n const onSort = (direction: string, sortDataKey: 'name' | 'description') =>\n sortGroups(direction, sortDataKey, state.groups, state.query, dispatch);\n\n return (\n
\n \n onHeaderSelected(state, dispatch, checked, 'groups')\n }\n onRowChecked={(checked: boolean, rowData: RowData) =>\n onGroupRowSelect(checked, rowData, state.groups, state, dispatch)\n }\n headerCheckState={state.selectAllGroups}\n headerIndeterminateState={state.indeterminateGroupState}\n onSort={onSort}\n sortedColumn={state.sortGroups}\n />\n
\n );\n};\n\nconst body = (\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n state: AddUserState,\n) => {\n if (state.getUsersError) {\n return {state.getUsersError};\n }\n\n if (state.getGroupsError) {\n return {state.getGroupsError};\n }\n\n if (\n state.getUsersLoading &&\n state.cachedUsers.length === 0 &&\n state.getGroupsLoading &&\n state.groups.length === 0\n ) {\n return (\n <>\n \n \n \n );\n }\n\n return (\n <>\n
\n
\n {t('addUsers.users.header')}\n
\n
\n
\n {usersTable(t, state, dispatch)}\n
\n
\n
\n
\n
\n {t('addUsers.users.groupsHeader')}\n
\n
\n {groupsTable(t, state, dispatch)}\n
\n
\n \n );\n};\n\nconst AddUser = () => {\n const { t } = useTranslation('codeDelivery');\n const workspace = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const [state, dispatch] = useReducer(reducer, defaultAddUserState);\n const navigate = useNavigate();\n\n const appDispatch = useAppDispatch();\n const appStore = useStore();\n\n const usersSettingsPageUrl = LINKS.settings.listUsers({\n path: { workspace },\n });\n\n const breadcrumbs: BreadCrumbType[] = [\n {\n translationKey: 'addUsers.breadcrumbs.settingsPage',\n },\n {\n translationKey: 'addUsers.breadcrumbs.usersPage',\n linkDestination: usersSettingsPageUrl,\n },\n { translationKey: 'addUsers.breadcrumbs.addUsers' },\n ];\n\n const fetchUsers = () => {\n if (workspaceId) {\n getUsers(workspaceId, state.query, dispatch, t);\n }\n };\n useEffect(fetchUsers, [workspaceId, workspace]);\n\n const fetchGroups = () => {\n if (workspaceId) {\n getGroups(workspaceId, state.query, dispatch, t, state.sortGroups);\n }\n };\n useEffect(fetchGroups, [workspaceId, workspace]);\n\n useEffect(() => {\n const numSelected = state.cachedUsers.reduce(\n (acc, u) => (u.selected ? acc + 1 : acc),\n 0,\n );\n if (state.addUsersComplete && !state.addUsersError) {\n navigate(usersSettingsPageUrl);\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: `${numSelected} user${\n numSelected > 1 ? 's' : ''\n } added to the workspace`,\n }),\n );\n }\n }, [\n state.addUsersComplete,\n usersSettingsPageUrl,\n state.addUsersError,\n appDispatch,\n appStore,\n state.cachedUsers,\n navigate,\n ]);\n return (\n
\n
\n
\n \n
\n {t('addUsers.page.title')}\n
\n
\n {body(t, dispatch, state)}\n
{renderError(state)}
\n
\n addUsersToWorkspace(workspaceId, t, state, dispatch)}\n >\n {t('addUsers.button.addUsersToWorkspace.label')}\n \n \n
\n
\n
\n );\n};\n\nexport default AddUser;\n","import AddUser from './AddUser';\n\nexport default AddUser;\n","export const GET_SSH_KEY_LOADING = 'GET_SSH_KEY_LOADING';\nexport const GET_SSH_KEY_COMPLETE = 'GET_SSH_KEY_COMPLETE';\nexport const GET_SSH_KEY_ERROR = 'GET_SSH_KEY_ERROR';\nexport const CREATE_SSH_KEY_LOADING = 'CREATE_SSH_KEY_LOADING';\nexport const CREATE_SSH_KEY_COMPLETE = 'CREATE_SSH_KEY_COMPLETE';\nexport const CREATE_SSH_KEY_ERROR = 'CREATE_SSH_KEY_ERROR';\nexport const DELETE_SSH_KEY_LOADING = 'DELETE_SSH_KEY_LOADING';\nexport const DELETE_SSH_KEY_COMPLETE = 'DELETE_SSH_KEY_COMPLETE';\nexport const DELETE_SSH_KEY_ERROR = 'DELETE_SSH_KEY_ERROR';\n","import { Cd4peApiError, SshKeyPairV1 } from '@utils/api/cd4pe';\nimport { Reducer } from 'react';\nimport { SshKeyActions } from './actions';\nimport * as at from './actionTypes';\n\nexport interface SshKeyState {\n sshKey?: SshKeyPairV1 | null;\n getSshKeyLoading: boolean;\n getSshKeyError: null | Cd4peApiError;\n createSshKeyLoading: boolean;\n createSshKeyError: null | Cd4peApiError;\n deleteSshKeyLoading: boolean;\n deleteSshKeyError: null | Cd4peApiError;\n}\n\nexport const sshKeyDefaultState: SshKeyState = {\n sshKey: undefined,\n getSshKeyLoading: false,\n getSshKeyError: null,\n createSshKeyLoading: false,\n createSshKeyError: null,\n deleteSshKeyLoading: false,\n deleteSshKeyError: null,\n};\n\nexport const reducer: Reducer = (state, action) => {\n switch (action.type) {\n case at.GET_SSH_KEY_LOADING:\n return {\n ...state,\n getSshKeyLoading: true,\n };\n case at.GET_SSH_KEY_COMPLETE:\n return {\n ...state,\n sshKey: action.payload,\n getSshKeyLoading: false,\n getSshKeyError: null,\n };\n case at.GET_SSH_KEY_ERROR:\n return {\n ...state,\n sshKey: null,\n getSshKeyLoading: false,\n getSshKeyError: action.payload,\n };\n case at.CREATE_SSH_KEY_LOADING:\n return {\n ...state,\n createSshKeyLoading: true,\n };\n case at.CREATE_SSH_KEY_COMPLETE:\n return {\n ...state,\n sshKey: action.payload,\n createSshKeyLoading: false,\n createSshKeyError: null,\n };\n case at.CREATE_SSH_KEY_ERROR:\n return {\n ...state,\n createSshKeyLoading: false,\n createSshKeyError: action.payload,\n };\n case at.DELETE_SSH_KEY_LOADING:\n return {\n ...state,\n deleteSshKeyLoading: true,\n };\n case at.DELETE_SSH_KEY_COMPLETE:\n return {\n ...state,\n sshKey: null,\n deleteSshKeyLoading: false,\n deleteSshKeyError: null,\n showActionsMenu: false,\n };\n case at.DELETE_SSH_KEY_ERROR:\n return {\n ...state,\n deleteSshKeyLoading: false,\n deleteSshKeyError: action.payload,\n };\n default:\n return state;\n }\n};\n","import { Dispatch } from 'react';\nimport { TFunction } from 'react-i18next';\nimport {\n Cd4peApiError,\n handleApiRequest,\n isCd4peApiError,\n isKnownCd4peError,\n SshKeyPairV1,\n WorkspacesV1Service,\n} from '@utils/api/cd4pe';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport * as at from './actionTypes';\n\nconst actions = {\n getSshKeyLoading: () => actionCreator(at.GET_SSH_KEY_LOADING),\n getSshKeyComplete: (sshKey: SshKeyPairV1 | null) =>\n actionCreator(at.GET_SSH_KEY_COMPLETE, sshKey),\n getSshKeyError: (error: Cd4peApiError) =>\n actionCreator(at.GET_SSH_KEY_ERROR, error),\n createSshKeyLoading: () => actionCreator(at.CREATE_SSH_KEY_LOADING),\n createSshKeyComplete: (sshKey: SshKeyPairV1) =>\n actionCreator(at.CREATE_SSH_KEY_COMPLETE, sshKey),\n createSshKeyError: (error: Cd4peApiError) =>\n actionCreator(at.CREATE_SSH_KEY_ERROR, error),\n deleteSshKeyLoading: () => actionCreator(at.DELETE_SSH_KEY_LOADING),\n deleteSshKeyComplete: () => actionCreator(at.DELETE_SSH_KEY_COMPLETE),\n deleteSshKeyError: (error: Cd4peApiError) =>\n actionCreator(at.DELETE_SSH_KEY_ERROR, error),\n};\n\nexport type SshKeyActions = Actions;\n\nexport const getSshKey = async (\n workspaceId: string,\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n) => {\n dispatch(actions.getSshKeyLoading());\n\n const response = await handleApiRequest(\n WorkspacesV1Service.getSshCredentialV1({ workspaceId }),\n );\n\n if (isKnownCd4peError(response) && response.status === 404) {\n dispatch(actions.getSshKeyComplete(null));\n return;\n }\n\n if (isCd4peApiError(response)) {\n dispatch(actions.getSshKeyError(response));\n return;\n }\n\n dispatch(actions.getSshKeyComplete(response));\n};\n\nexport const createSshKey = async (\n workspaceId: string,\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n) => {\n dispatch(actions.createSshKeyLoading());\n const response = await handleApiRequest(\n WorkspacesV1Service.createSshCredentialV1({ workspaceId }),\n );\n\n if (isCd4peApiError(response)) {\n dispatch(actions.createSshKeyError(response));\n return;\n }\n\n dispatch(actions.createSshKeyComplete(response));\n};\n\nexport const deleteSshKey = async (\n workspaceId: string,\n t: TFunction<'codeDelivery'>,\n dispatch: Dispatch,\n) => {\n dispatch(actions.deleteSshKeyLoading());\n\n const response = await handleApiRequest(\n WorkspacesV1Service.deleteSshCredentialV1({ workspaceId }),\n );\n\n if (isCd4peApiError(response)) {\n dispatch(actions.deleteSshKeyError(response));\n return;\n }\n\n dispatch(actions.deleteSshKeyComplete());\n};\n","import React, { Dispatch, useEffect, useReducer } from 'react';\nimport { TFunction, useTranslation } from 'react-i18next';\nimport {\n ActionSelect,\n Button,\n Heading,\n Icon,\n Link,\n Loading,\n TooltipHoverArea,\n} from '@puppet/react-components';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { SshKeyPairV1 } from '@utils/api/cd4pe';\nimport Cd4peError from '@components/Cd4peError';\nimport { sshKeyDefaultState, SshKeyState, reducer } from './reducer';\nimport {\n createSshKey,\n deleteSshKey,\n getSshKey,\n SshKeyActions,\n} from './actions';\n\nconst copyToClipboard = (value: string) => {\n navigator.clipboard.writeText(value);\n};\n\nconst noSshKey = (\n t: TFunction<'codeDelivery'>,\n generateKey: () => Promise,\n) => (\n /* eslint-disable jsx-a11y/anchor-is-valid */\n
\n \n

\n {t('sshKey.section.empty.title')}\n

\n

\n \n {t('sshKey.buttons.generateKey.label')}\n \n

\n
\n /* eslint-enable jsx-a11y/anchor-is-valid */\n);\n\nconst generatingKeyLoader = (t: TFunction<'codeDelivery'>) => (\n
\n
\n \n
\n

\n {t('sshKey.section.loading.title')}\n

\n
\n);\n\nconst sshKeyList = (\n sshKey: SshKeyPairV1,\n deleteKey: () => Promise,\n t: TFunction<'codeDelivery'>,\n) => {\n const actions = [\n {\n id: 'delete',\n icon: 'trash',\n label: t('sshKey.buttons.delete.label'),\n onClick: deleteKey,\n type: 'transparent',\n 'aria-label': t('sshKey.buttons.delete.label'),\n role: 'button',\n },\n ];\n\n return (\n
    \n
  • \n
    \n \n
    \n
    \n
    \n
    \n {t('sshKey.section.fingerprint.title')}\n
    \n\n

    {sshKey.fingerprint}

    \n
    \n\n
    \n
    \n {t('sshKey.section.publicKey.title')}\n
    \n\n
    \n

    {sshKey.publicKey}

    \n\n copyToClipboard(sshKey.publicKey)}\n >\n {t('sshKey.buttons.copy.label')}\n \n
    \n
    \n
    \n
    \n \n \n \n
    \n
  • \n
\n );\n};\n\nconst body = (\n workspaceId: string,\n state: SshKeyState,\n dispatch: Dispatch,\n t: TFunction<'codeDelivery'>,\n) => {\n const generateNewKey = () => createSshKey(workspaceId, t, dispatch);\n const deleteKey = () => deleteSshKey(workspaceId, t, dispatch);\n\n if (state.getSshKeyError) {\n return null;\n }\n\n if (state.createSshKeyLoading) {\n return generatingKeyLoader(t);\n }\n\n if (!state.sshKey) {\n return noSshKey(t, generateNewKey);\n }\n\n return sshKeyList(state.sshKey, deleteKey, t);\n};\n\nconst SshKey = () => {\n const { t } = useTranslation('codeDelivery');\n const [state, dispatch] = useReducer(reducer, sshKeyDefaultState);\n const workspaceId = useWorkspaceDomain();\n\n useEffect(() => {\n if (workspaceId && state.sshKey === undefined) {\n getSshKey(workspaceId, t, dispatch);\n }\n }, [workspaceId, dispatch, t, state.sshKey]);\n\n if (state.getSshKeyLoading) {\n return ;\n }\n\n return (\n
\n \n {t('sshKey.page.title')}\n \n\n \n \n \n\n {body(workspaceId, state, dispatch, t)}\n
\n );\n};\n\nexport default SshKey;\n","import SshKey from './SshKey';\n\nexport default SshKey;\n","import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport {\n PeIntegrationsV2Service,\n MutationHook,\n QueryHook,\n handleQueryRequest,\n Cd4peApiError,\n} from '@utils/api/cd4pe';\n\nconst PE_INTEGRATION_LIST_QUERY_TAG = 'peIntegrationList';\nconst PE_INTEGRATION_QUERY_TAG = 'peIntegration';\nconst PE_ENVIRONMENTS_QUERY_TAG = 'peIntegrationEnvironments';\nconst PE_PROTECTED_ENVIRONMENTS_QUERY_TAG =\n 'peIntegrationProtectedEnvironments';\nconst PE_PROTECTED_ENVIRONMENT_CANDIDATES_QUERY_TAG =\n 'peIntegrationProtectedEnvironmentCandidates';\nconst PE_INTEGRATION_LIST_ENVIRONMENT_PREFIXES_QUERY_TAG =\n 'peIntegrationEnvironmentPrefixesList';\n\n/**\n * useListPeIntegrationsV2\n */\n\ntype UseListPeIntegrationsV2 = QueryHook<\n typeof PeIntegrationsV2Service,\n 'listPeIntegrationsV2',\n Cd4peApiError\n>;\n\nexport type UseListPeIntegrationsV2Result = ReturnType;\n\nexport const useListPeIntegrationsV2: UseListPeIntegrationsV2 = (\n payload,\n options,\n) =>\n useQuery(\n [\n PE_INTEGRATION_LIST_QUERY_TAG,\n payload.workspaceId,\n payload.peIntegrationNamePrefix,\n ],\n async () =>\n handleQueryRequest(PeIntegrationsV2Service.listPeIntegrationsV2(payload)),\n options,\n );\n\n/**\n * useGetPeIntegrationV2\n */\n\ntype UseGetPeIntegrationV2 = QueryHook<\n typeof PeIntegrationsV2Service,\n 'getPeIntegrationV2',\n Cd4peApiError\n>;\n\nexport type UseGetPeIntegrationV2Result = ReturnType;\n\nexport const useGetPeIntegrationV2: UseGetPeIntegrationV2 = (payload) =>\n useQuery([PE_INTEGRATION_QUERY_TAG, payload.peIntegrationId], async () =>\n handleQueryRequest(PeIntegrationsV2Service.getPeIntegrationV2(payload)),\n );\n\n/**\n * useUpdatePeIntegrationV2\n */\n\ntype UseUpdatePeIntegrationV2 = MutationHook<\n typeof PeIntegrationsV2Service,\n 'updatePeIntegrationV2',\n Cd4peApiError\n>;\n\nexport type UseUpdatePeIntegrationV2Result =\n ReturnType;\n\nexport const useUpdatePeIntegrationV2: UseUpdatePeIntegrationV2 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(\n PeIntegrationsV2Service.updatePeIntegrationV2(payload),\n ),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n PE_INTEGRATION_QUERY_TAG,\n payload.peIntegrationId,\n ]);\n },\n },\n );\n};\n\n/**\n * useDeletePeIntegrationV2\n */\n\ntype UseDeletePeIntegrationV2 = MutationHook<\n typeof PeIntegrationsV2Service,\n 'deletePeIntegrationV2',\n Cd4peApiError\n>;\n\nexport type UseDeletePeIntgrationV2Result =\n ReturnType;\n\nexport const useDeletePeIntegrationV2: UseDeletePeIntegrationV2 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(\n PeIntegrationsV2Service.deletePeIntegrationV2(payload),\n ),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n PE_INTEGRATION_QUERY_TAG,\n payload.peIntegrationId,\n ]);\n queryClient.invalidateQueries([PE_INTEGRATION_LIST_QUERY_TAG]);\n queryClient.invalidateQueries(\n [PE_PROTECTED_ENVIRONMENTS_QUERY_TAG, payload.peIntegrationId],\n {\n refetchType: 'none',\n },\n );\n },\n },\n );\n};\n\n/**\n * useListProtectedEnvironmentsV2\n */\n\ntype UseListProtectedEnvironmentsV2 = QueryHook<\n typeof PeIntegrationsV2Service,\n 'listProtectedEnvironmentsV2',\n Cd4peApiError\n>;\n\nexport type UseListProtectedEnvironmentsV2Result =\n ReturnType;\n\nexport const useListProtectedEnvironmentsV2: UseListProtectedEnvironmentsV2 = (\n payload,\n options,\n) =>\n useQuery(\n [PE_PROTECTED_ENVIRONMENTS_QUERY_TAG, payload.peIntegrationId],\n async () =>\n handleQueryRequest(\n PeIntegrationsV2Service.listProtectedEnvironmentsV2(payload),\n ),\n options,\n );\n\n/**\n * useDeleteProtectedEnvironmentV2\n */\n\ntype UseDeleteProtectedEnvironmentV2 = MutationHook<\n typeof PeIntegrationsV2Service,\n 'deleteProtectedEnvironmentV2',\n Cd4peApiError\n>;\n\nexport type UseDeleteProtectedEnvironmentV2Result =\n ReturnType;\n\nexport const useDeleteProtectedEnvironmentV2: UseDeleteProtectedEnvironmentV2 =\n () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(\n PeIntegrationsV2Service.deleteProtectedEnvironmentV2(payload),\n ),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n PE_PROTECTED_ENVIRONMENTS_QUERY_TAG,\n payload.peIntegrationId,\n ]);\n },\n },\n );\n };\n\n/**\n * useRegenerateTokenV2\n */\n\ntype UseRegenerateTokenV2 = MutationHook<\n typeof PeIntegrationsV2Service,\n 'regenerateTokenV2',\n Cd4peApiError\n>;\n\nexport type UseRegenerateTokenV2Result = ReturnType;\n\nexport const useRegenerateTokenV2: UseRegenerateTokenV2 = () =>\n useMutation((payload) =>\n handleQueryRequest(PeIntegrationsV2Service.regenerateTokenV2(payload)),\n );\n\n/**\n * useCreateApprovalGroupsV2\n */\n\ntype UseBulkCreateApprovalGroupsV2 = MutationHook<\n typeof PeIntegrationsV2Service,\n 'bulkCreateApprovalGroupsV2',\n Cd4peApiError\n>;\n\nexport type UseBulkCreateApprovalGroupsV2Result =\n ReturnType;\n\nexport const useBulkCreateApprovalGroupsV2: UseBulkCreateApprovalGroupsV2 =\n () => {\n return useMutation((payload) =>\n handleQueryRequest(\n PeIntegrationsV2Service.bulkCreateApprovalGroupsV2(payload),\n ),\n );\n };\n\n/**\n * useDeleteApprovalGroupsV2\n */\n\ntype UseBulkDeleteApprovalGroupsV2 = MutationHook<\n typeof PeIntegrationsV2Service,\n 'bulkDeleteApprovalGroupsV2',\n Cd4peApiError\n>;\n\nexport type UseBulkDeleteApprovalGroupsV2Result =\n ReturnType;\n\nexport const useBulkDeleteApprovalGroupsV2: UseBulkDeleteApprovalGroupsV2 =\n () => {\n return useMutation((payload) =>\n handleQueryRequest(\n PeIntegrationsV2Service.bulkDeleteApprovalGroupsV2(payload),\n ),\n );\n };\n\n/**\n * useListEnvironmentsV2\n */\n\ntype UseListEnvironmentsV2 = QueryHook<\n typeof PeIntegrationsV2Service,\n 'listEnvironmentsV2',\n Cd4peApiError\n>;\n\nexport const useListEnvironmentsV2: UseListEnvironmentsV2 = (\n payload,\n options,\n) =>\n useQuery(\n [\n PE_ENVIRONMENTS_QUERY_TAG,\n payload.peIntegrationId,\n payload.environmentPrefix,\n ],\n () =>\n handleQueryRequest(PeIntegrationsV2Service.listEnvironmentsV2(payload)),\n options,\n );\n\n/**\n * useListProtectedEnvironmentCandidatesV2\n */\n\ntype UseListProtectedEnvironmentCandidatesV2 = QueryHook<\n typeof PeIntegrationsV2Service,\n 'listProtectedEnvironmentCandidatesV2',\n Cd4peApiError\n>;\n\nexport const useListProtectedEnvironmentCandidatesV2: UseListProtectedEnvironmentCandidatesV2 =\n (payload) =>\n useQuery(\n [PE_PROTECTED_ENVIRONMENT_CANDIDATES_QUERY_TAG, payload.peIntegrationId],\n () =>\n handleQueryRequest(\n PeIntegrationsV2Service.listProtectedEnvironmentCandidatesV2(payload),\n ),\n );\n\n/**\n * useCreateProtectedEnvironmentV2\n */\n\ntype UseCreateProtectedEnvironmentV2 = MutationHook<\n typeof PeIntegrationsV2Service,\n 'createProtectedEnvironmentV2',\n Cd4peApiError\n>;\n\nexport const useCreateProtectedEnvironmentV2: UseCreateProtectedEnvironmentV2 =\n () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(\n PeIntegrationsV2Service.createProtectedEnvironmentV2(payload),\n ),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n PE_PROTECTED_ENVIRONMENT_CANDIDATES_QUERY_TAG,\n payload.peIntegrationId,\n ]);\n },\n },\n );\n };\n\n/**\n * useListEnvironmentPrefixesV2\n */\n\ntype UseListEnvironmentPrefixesV2 = QueryHook<\n typeof PeIntegrationsV2Service,\n 'listEnvironmentPrefixesV2',\n Cd4peApiError\n>;\n\nexport const useListEnvironmentPrefixesV2: UseListEnvironmentPrefixesV2 = (\n payload,\n options,\n) =>\n useQuery(\n [\n PE_INTEGRATION_LIST_ENVIRONMENT_PREFIXES_QUERY_TAG,\n payload.peIntegrationId,\n ],\n async () =>\n handleQueryRequest(\n PeIntegrationsV2Service.listEnvironmentPrefixesV2(payload),\n ),\n options,\n );\n","import NoPeIntegrations from './NoPeIntegrations';\n\nexport default NoPeIntegrations;\n","import React from 'react';\nimport { useTranslation, Trans } from 'react-i18next';\nimport { Icon, Text, Heading } from '@puppet/react-components';\n\nconst NoPeIntegrations = () => {\n const { t } = useTranslation('codeDelivery');\n return (\n
\n \n \n {t('peList.emptyList.addNewPe.icon.label')}\n \n \n \n \n \n \n
\n );\n};\n\nexport default NoPeIntegrations;\n","import React, { ReactNode, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Icon, Form, Modal, Text } from '@puppet/react-components';\nimport { Cd4peApiError } from '@utils/api/cd4pe';\nimport Cd4peError from '@components/Cd4peError';\n\ninterface ConfirmDeleteModalProps {\n dataTestId?: string;\n isOpen: boolean;\n onCancel: Function;\n onDelete: Function;\n title: ReactNode;\n alert: ReactNode;\n description?: ReactNode;\n checkbox?: boolean;\n checkboxLabel?: ReactNode;\n confirmTextEntry?: string;\n textEntryAriaLabel?: string;\n confirmLabel?: ReactNode;\n cancelLabel?: ReactNode;\n error?: Cd4peApiError | null;\n}\n\ninterface FormVals {\n checkbox: boolean;\n confirmTextEntry: string;\n}\n\nconst defaultProps = {\n description: '',\n checkbox: false,\n checkboxLabel: '',\n confirmTextEntry: '',\n textEntryAriaLabel: '',\n confirmLabel: 'Delete',\n cancelLabel: 'Cancel',\n error: null,\n dataTestId: '',\n};\n\nconst ConfirmDeleteModal = ({\n dataTestId,\n isOpen,\n onCancel,\n onDelete,\n title,\n alert,\n description,\n checkbox,\n checkboxLabel,\n confirmTextEntry,\n textEntryAriaLabel,\n confirmLabel,\n cancelLabel,\n error,\n}: ConfirmDeleteModalProps) => {\n const { t } = useTranslation('codeDelivery');\n const [checked, setChecked] = useState(false);\n const [confirmEntryInput, setConfirmEntryInput] = useState('');\n\n const onCloseHandler = () => {\n setChecked(false);\n setConfirmEntryInput('');\n onCancel();\n };\n\n const onDeleteHandler = () => {\n setChecked(false);\n setConfirmEntryInput('');\n onDelete();\n };\n\n const onChangeHandler = (field: string, allValues: FormVals) => {\n switch (field) {\n case 'checkbox':\n setChecked(allValues[field]);\n break;\n case 'confirmTextEntry':\n setConfirmEntryInput(allValues[field]);\n break;\n default:\n break;\n }\n };\n\n const validConfirmation = () => {\n if (checkbox) {\n if (!checked) {\n return false;\n }\n }\n\n if (confirmTextEntry) {\n if (confirmEntryInput !== confirmTextEntry) {\n return false;\n }\n }\n\n return true;\n };\n\n return (\n onCloseHandler()}\n >\n
\n {title}\n
\n \n {alert}\n
\n {description}\n \n {checkbox && (\n
\n {checkboxLabel}}\n value={checked}\n />\n
\n )}\n {confirmTextEntry && (\n
\n \n
\n )}\n \n \n
\n \n );\n};\n\nexport default ConfirmDeleteModal;\n\nConfirmDeleteModal.defaultProps = defaultProps;\n","import ConfirmDeleteModal from './ConfirmDeleteModal';\n\nexport default ConfirmDeleteModal;\n","import React, { useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport {\n Alert,\n Button,\n Text,\n Loading,\n Heading,\n} from '@puppet/react-components';\nimport { Table } from '@puppet/data-grid';\nimport { ProtectedEnvironmentApprovalGroupV2 } from '@utils/api/cd4pe';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport ConfirmDeleteModal from '@components/ConfirmDeleteModal';\nimport {\n useListProtectedEnvironmentsV2,\n useDeleteProtectedEnvironmentV2,\n} from '@services/cd4pe/peIntegrations';\nimport Cd4peError from '@components/Cd4peError';\nimport { LINKS } from 'src/routes';\n\nconst FORBIDDEN_STATUS = 403;\n\ninterface EnvironmentsTableProps {\n peIntegrationId: string;\n}\n\nconst ProtectedEnvironmentsTable = ({\n peIntegrationId,\n}: EnvironmentsTableProps) => {\n const { t } = useTranslation('codeDelivery');\n const workspace = useWorkspaceName();\n const [selectedEnvironment, setSelectedEnvironment] = useState('');\n\n const { isLoading, error, data } = useListProtectedEnvironmentsV2({\n peIntegrationId,\n });\n\n const deleteProtectedEnvironment = useDeleteProtectedEnvironmentV2();\n\n const columns = [\n {\n label: t('peList.env.table.column.environment'),\n dataKey: 'environmentName',\n },\n {\n label: t('peList.env.table.column.groups'),\n dataKey: 'approvalGroups',\n cellRenderer: (args: {\n cellData: ProtectedEnvironmentApprovalGroupV2[];\n }) => {\n return args.cellData.map(({ groupName }) => groupName).join(', ');\n },\n },\n {\n label: t('peList.env.table.column.actions'),\n cellRenderer: (args: { rowData: { environmentName: string } }) => {\n return (\n
\n \n \n setSelectedEnvironment(args.rowData.environmentName)\n }\n data-testid={`remove-protected-environment-${args.rowData.environmentName}`}\n aria-label={t('peList.protectedEnvironments.delete.ariaLabel')}\n />\n
\n );\n },\n },\n ];\n\n if (isLoading) {\n return (\n \n );\n }\n\n const renderHeader = () => {\n return (\n <>\n
\n {t('peList.env.table.title')}\n \n {t('peList.env.table.add.button')}\n \n
\n
\n \n );\n };\n\n const renderBody = () => {\n if (error?.status === FORBIDDEN_STATUS) {\n return (\n \n {t('peList.env.permission.forbidden')}\n \n );\n }\n\n if (error) {\n return ;\n }\n\n if (data?.protectedEnvironments?.length === 0) {\n return (\n \n {t('peList.env.none')}\n \n );\n }\n\n return (\n \n );\n };\n\n return (\n
\n {renderHeader()}\n {renderBody()}\n setSelectedEnvironment('')}\n title={t('peList.deleteProtectedEnvironment.modal.title')}\n alert={t('peList.deleteProtectedEnvironment.modal.description', {\n name: selectedEnvironment,\n })}\n confirmLabel={t(\n 'peList.deleteProtectedEnvironment.modal.button.confirm',\n )}\n cancelLabel={t('peList.deleteProtectedEnvironment.modal.button.cancel')}\n onDelete={() =>\n deleteProtectedEnvironment.mutate(\n {\n peIntegrationId,\n environmentName: selectedEnvironment,\n },\n {\n onSettled: () => setSelectedEnvironment(''),\n },\n )\n }\n />\n
\n );\n};\n\nexport default ProtectedEnvironmentsTable;\n","import ProtectedEnvironmentsTable from './ProtectedEnvironmentsTable';\n\nexport default ProtectedEnvironmentsTable;\n","import React, { useState, PropsWithChildren } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Trans, useTranslation } from 'react-i18next';\nimport {\n Card,\n Icon,\n Heading,\n Text,\n Button,\n ActionSelect,\n} from '@puppet/react-components';\nimport { format } from 'date-fns';\nimport { PEIntegrationV2 } from '@utils/api/cd4pe';\nimport ProtectedEnvironmentsTable from '@codeDelivery/views/PeIntegrationList/components/ProtectedEnvironmentsTable';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport ConfirmDeleteModal from '@components/ConfirmDeleteModal';\nimport { useDeletePeIntegrationV2 } from '@services/cd4pe/peIntegrations';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport Cd4peError from '@components/Cd4peError';\nimport { LINKS } from 'src/routes';\n\ninterface DataItemProps {\n name: String;\n content?: String;\n}\n\nconst DataItem = ({\n name,\n content = '',\n children,\n ...rest\n}: PropsWithChildren) => (\n
\n \n {name}\n \n {content && {content}}\n {children}\n
\n);\n\ninterface CardActionProps {\n peId: string;\n onRemove: Function;\n}\n\nconst CardActions = ({ peId, onRemove }: CardActionProps) => {\n const { t } = useTranslation('codeDelivery');\n const workspace = useWorkspaceName();\n const settingsEditPePath = LINKS.settings.editPuppetEnterprise({\n path: { workspace, peId },\n });\n\n const actions = [\n {\n id: 'edit',\n icon: 'pencil',\n label: t('peList.card.actions.edit'),\n as: Link,\n to: settingsEditPePath,\n 'data-testid': 'edit-pe-integration',\n 'aria-label': t('peList.cardActions.edit.ariaLabel'),\n },\n {\n id: 'remove',\n icon: 'trash',\n label: t('peList.card.actions.remove'),\n onClick: () => onRemove(peId),\n 'data-testid': 'delete-pe-integration',\n 'aria-label': t('peList.cardActions.delete.ariaLabel'),\n },\n ];\n\n return (\n
\n \n
\n );\n};\n\nconst PeIntegrations = ({ data = [] }: { data: PEIntegrationV2[] }) => {\n const { t } = useTranslation('codeDelivery');\n const workspace = useWorkspaceName();\n const appDispatch = useAppDispatch();\n const [selectedPeId, setSelectedPeId] = useState('');\n const [selectedPeName, setSelectedPeName] = useState('');\n\n const clearSelectedPE = () => {\n setSelectedPeId('');\n setSelectedPeName('');\n };\n\n const deletePe = useDeletePeIntegrationV2();\n\n const handleDelete = () => {\n deletePe.mutate(\n { peIntegrationId: selectedPeId },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('peList.alerts.deletePe.success', {\n name: selectedPeName,\n }),\n }),\n );\n },\n onError: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Error',\n message: t('peList.alerts.deletePe.error', {\n name: selectedPeName,\n }),\n }),\n );\n },\n },\n );\n clearSelectedPE();\n };\n\n return (\n <>\n \n {data.map(\n ({ id, name, puppetServerUrl, tokenExpiration, compileBatchSize }) => {\n return (\n \n
\n \n
\n \n \n \n \n \n
\n \n {t('peList.card.content.impactAnalysis.endpoint', {\n url: puppetServerUrl,\n })}\n \n \n {t(\n 'peList.card.content.impactAnalysis.maxConcurrentCatalogs',\n {\n size: compileBatchSize ?? 0,\n },\n )}\n \n
\n \n \n
\n {\n setSelectedPeId(id);\n setSelectedPeName(name);\n }}\n />\n \n {t('peList.card.regenerate.link')}\n \n
\n \n
\n );\n },\n )}\n clearSelectedPE()}\n onDelete={() => handleDelete()}\n title={t('peList.deletePeIntegration.modal.title')}\n alert={t('peList.deletePeIntegration.modal.description')}\n checkbox\n checkboxLabel={\n \n {{ name: selectedPeName }}\n \n }\n confirmLabel={t('peList.deletePeIntegration.modal.button.confirm')}\n cancelLabel={t('peList.deletePeIntegration.modal.button.cancel')}\n />\n \n );\n};\n\nexport default PeIntegrations;\n","import PeIntegrations from './PeIntegrations';\n\nexport default PeIntegrations;\n","import PeHeading from './PeHeading';\n\nexport default PeHeading;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Button, Heading } from '@puppet/react-components';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { LINKS } from 'src/routes';\n\nconst PeHeading = () => {\n const { t } = useTranslation('codeDelivery');\n const workspace = useWorkspaceName();\n const settingsAddPePath = LINKS.settings.newPuppetEnterprise({\n path: { workspace },\n });\n\n return (\n
\n {t('peList.page.title')}\n \n
\n );\n};\n\nexport default PeHeading;\n","import PeIntegrationList from './PeIntegrationList';\n\nexport default PeIntegrationList;\n","import React from 'react';\nimport { Loading } from '@puppet/react-components';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useListPeIntegrationsV2 } from '@services/cd4pe/peIntegrations';\nimport Cd4peError from '@components/Cd4peError';\nimport NoPeIntegrations from './components/NoPeIntegrations';\nimport PeIntegrations from './components/PeIntegrations';\nimport PeHeading from './components/PeHeading';\n\nconst PeIntegrationList = () => {\n const workspaceId = useWorkspaceDomain();\n\n const { isLoading, error, data } = useListPeIntegrationsV2({ workspaceId });\n\n return (\n
\n \n
\n \n {isLoading && }\n {data?.peIntegrations?.length === 0 && }\n {data && data?.peIntegrations?.length > 0 && (\n \n )}\n
\n
\n );\n};\n\nexport default PeIntegrationList;\n","import React, { useState } from 'react';\nimport CommonForm from '@components/CommonForm';\nimport {\n Alert,\n Button,\n Form,\n RadioButton,\n Text,\n} from '@puppet/react-components';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport { CommonFormChangeFunction } from '@components/CommonForm/CommonForm';\nimport { useTranslation } from 'react-i18next';\nimport Definitions from '@components/Definitions';\nimport { Cd4peApiError } from '@utils/api/cd4pe';\nimport Cd4peError from '@components/Cd4peError';\n\ninterface AutoIntegrationFormActionTypes {\n NAME: 'NAME';\n CONSOLE_ADDRESS: 'CONSOLE_ADDRESS';\n PE_USERNAME: 'PE_USERNAME';\n PASSWORD: 'PASSWORD';\n TOKEN_LIFETIME: 'TOKEN_LIFETIME';\n API_TOKEN: 'API_TOKEN';\n}\n\nexport const AUTO_INTEGRATION_FORM_ACTION_TYPES: AutoIntegrationFormActionTypes =\n {\n NAME: 'NAME',\n CONSOLE_ADDRESS: 'CONSOLE_ADDRESS',\n PE_USERNAME: 'PE_USERNAME',\n PASSWORD: 'PASSWORD',\n TOKEN_LIFETIME: 'TOKEN_LIFETIME',\n API_TOKEN: 'API_TOKEN',\n };\n\nexport const autoIntegrationFormActions = {\n name: (name: string) =>\n actionCreator(AUTO_INTEGRATION_FORM_ACTION_TYPES.NAME, name),\n consoleAddress: (consoleAddress: string) =>\n actionCreator(\n AUTO_INTEGRATION_FORM_ACTION_TYPES.CONSOLE_ADDRESS,\n consoleAddress,\n ),\n peUsername: (peUsername: string) =>\n actionCreator(AUTO_INTEGRATION_FORM_ACTION_TYPES.PE_USERNAME, peUsername),\n password: (password: string) =>\n actionCreator(AUTO_INTEGRATION_FORM_ACTION_TYPES.PASSWORD, password),\n tokenLifetime: (tokenLifetime: string) =>\n actionCreator(\n AUTO_INTEGRATION_FORM_ACTION_TYPES.TOKEN_LIFETIME,\n tokenLifetime,\n ),\n apiToken: (apiToken: string) =>\n actionCreator(AUTO_INTEGRATION_FORM_ACTION_TYPES.API_TOKEN, apiToken),\n};\n\nexport type AutoIntegrationFormActions = Actions<\n typeof autoIntegrationFormActions\n>;\n\ntype FormFieldValues = {\n [K in keyof AutoIntegrationFormActionTypes]: string | null | undefined;\n};\n\nexport type AutoIntegrationFormOnChange =\n CommonFormChangeFunction;\n\ninterface Props {\n name?: string | null;\n consoleAddress?: string | null;\n authType?: 'basic' | 'token';\n peUsername?: string | null;\n password?: string | null;\n tokenLifetime?: string | null;\n apiToken?: string | null;\n saveLoading?: boolean;\n saveError?: Cd4peApiError | null;\n onFormChange: AutoIntegrationFormOnChange;\n authTypeChange?: (payload: 'basic' | 'token') => void;\n changeFormType?: (payload: 'manual') => void;\n submitCallback: () => Promise;\n cancelCallback: () => void;\n submitLabel: string;\n regenerateToken?: boolean;\n infoHeader: string;\n infoBody: string | React.ReactFragment;\n infoLink?: React.ReactFragment | null;\n}\n\nconst AutoIntegrationForm = ({\n name,\n consoleAddress,\n authType,\n peUsername,\n password,\n tokenLifetime,\n apiToken,\n saveLoading,\n saveError,\n onFormChange,\n authTypeChange,\n changeFormType,\n submitCallback,\n cancelCallback,\n submitLabel,\n regenerateToken,\n infoHeader,\n infoBody,\n infoLink,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const [showChangeButton, setShowChangeButton] = useState(true);\n\n const formVals = {\n NAME: name,\n CONSOLE_ADDRESS: consoleAddress,\n PE_USERNAME: peUsername,\n PASSWORD: password,\n TOKEN_LIFETIME: tokenLifetime,\n API_TOKEN: apiToken,\n };\n\n const populatedField = (label: string, value: string) => {\n return (\n
\n

{label}

\n {value}\n
\n );\n };\n\n const authControls = () => {\n if (authType === 'basic') {\n return (\n
\n
\n \n
\n
\n \n
\n
\n {regenerateToken && showChangeButton ? (\n
\n {populatedField(\n t(\n 'addPeIntegration.autoIntegrationForm.authSection.tokenLifetimeLabel',\n ),\n `${tokenLifetime} ${t(\n 'addPeIntegration.autoIntegrationForm.authSection.tokenLifetimeSecondaryLabel',\n )}`,\n )}\n
\n setShowChangeButton(!showChangeButton)}\n >\n {t(\n 'addPeIntegration.autoIntegrationForm.authSection.changeButton',\n )}\n \n
\n
\n ) : (\n <>\n \n \n {t(\n 'addPeIntegration.autoIntegrationForm.authSection.tokenLifetimeSecondaryLabel',\n )}\n \n \n )}\n
\n
\n );\n }\n return (\n
\n \n
\n );\n };\n\n const errorDisplay = () => {\n if (!saveError) {\n return null;\n }\n\n if (regenerateToken) {\n return ;\n }\n\n return (\n \n \n \n {t('addPeIntegration.autoIntegrationForm.error.title')}\n \n {t('addPeIntegration.autoIntegrationForm.error.message1')}\n \n {t('addPeIntegration.autoIntegrationForm.error.button')}\n \n {t('addPeIntegration.autoIntegrationForm.error.message2')}\n \n \n {saveError.status === 400 && }\n \n \n );\n };\n\n return (\n \n \n \n

\n {t('addPeIntegration.autoIntegrationForm.instanceSection.header')}\n

\n
\n {regenerateToken && name ? (\n populatedField(\n t(\n 'addPeIntegration.autoIntegrationForm.instanceSection.nameLabel',\n ),\n name,\n )\n ) : (\n \n )}\n
\n
\n {regenerateToken && consoleAddress ? (\n populatedField(\n t(\n 'addPeIntegration.autoIntegrationForm.instanceSection.consoleAddressLabel',\n ),\n consoleAddress,\n )\n ) : (\n \n )}\n
\n
\n
\n \n \n

\n {t('addPeIntegration.autoIntegrationForm.authSection.header')}\n

\n {!regenerateToken && (\n
\n \n \n
\n )}\n {authControls()}\n
\n \n \n \n

\n {infoHeader}\n

\n \n {infoBody}\n \n {infoLink}\n
\n
\n
\n
\n {errorDisplay()}\n \n );\n};\n\nexport default AutoIntegrationForm;\n\nAutoIntegrationForm.defaultProps = {\n name: null,\n consoleAddress: null,\n peUsername: null,\n password: null,\n tokenLifetime: null,\n apiToken: null,\n saveLoading: false,\n saveError: null,\n authType: 'basic',\n authTypeChange: () => {},\n regenerateToken: false,\n changeFormType: () => {},\n infoLink: null,\n} as Partial;\n","import AutoIntegrationForm from './AutoIntegrationForm';\n\nexport default AutoIntegrationForm;\nexport * from './AutoIntegrationForm';\n","import React from 'react';\nimport { Input, Text } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\n\ninterface Props {\n value: number;\n label: string | null;\n onChange: null;\n}\n\nconst CompileBatch = ({ value, label, onChange }: Props) => {\n const { t } = useTranslation('codeDelivery');\n return (\n
\n \n {t('addPeIntegration.manualIntegrationForm.compileBatchSizePreText')}\n \n \n \n {t('addPeIntegration.manualIntegrationForm.compileBatchSizePostText')}\n \n
\n );\n};\n\nexport default CompileBatch;\n\nCompileBatch.defaultProps = {\n value: 0,\n error: null,\n type: null,\n} as Partial;\n","import CompileBatch from './CompileBatch';\n\nexport default CompileBatch;\nexport * from './CompileBatch';\n","import React, { useState } from 'react';\nimport CommonForm from '@components/CommonForm';\nimport { Button, Form, Heading, Icon, Text } from '@puppet/react-components';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport { CommonFormChangeFunction } from '@components/CommonForm/CommonForm';\nimport { useTranslation } from 'react-i18next';\nimport CompileBatch from '@codeDelivery/components/AddPeIntegrationForm/components/CompileBatch';\nimport { Cd4peApiError } from '@utils/api/cd4pe';\nimport Cd4peError from '@components/Cd4peError';\n\nexport interface ManualIntegrationFormValues {\n name: string;\n apiToken: string;\n puppetServer: string;\n puppetDb: string;\n codeManager: string;\n orchestrator: string;\n classifier: string;\n caCert: string;\n compileBatchSize: string;\n ignoreSyncErrors: boolean;\n}\n\nexport const MANUAL_INTEGRATION_FORM_FIELD_NAMES: {\n [K in keyof ManualIntegrationFormValues]: K;\n} = {\n name: 'name',\n apiToken: 'apiToken',\n caCert: 'caCert',\n classifier: 'classifier',\n codeManager: 'codeManager',\n compileBatchSize: 'compileBatchSize',\n ignoreSyncErrors: 'ignoreSyncErrors',\n orchestrator: 'orchestrator',\n puppetDb: 'puppetDb',\n puppetServer: 'puppetServer',\n};\n\nexport const MANUAL_INTEGRATION_FORM_ACTION_TYPES: {\n PATCH_FORM: 'MANUAL_INTEGRATION_FORM_PATCH';\n} = {\n PATCH_FORM: 'MANUAL_INTEGRATION_FORM_PATCH',\n};\n\nexport const manualIntegrationFormActions = {\n patchForm: (partialForm: Partial) =>\n actionCreator(MANUAL_INTEGRATION_FORM_ACTION_TYPES.PATCH_FORM, partialForm),\n};\n\nexport type ManualIntegrationFormActions = Actions<\n typeof manualIntegrationFormActions\n>;\n\nexport type ManualIntegrationFormOnChange =\n CommonFormChangeFunction;\n\ninterface Props {\n name?: string | null;\n apiToken?: string | null;\n puppetServer?: string | null;\n puppetDb?: string | null;\n codeManager?: string | null;\n orchestrator?: string | null;\n classifier?: string | null;\n caCert?: string | null;\n compileBatchSize?: string | null;\n ignoreSyncErrors?: boolean | false;\n saveLoading?: boolean;\n saveError?: Cd4peApiError | null;\n onFormChange: ManualIntegrationFormOnChange;\n changeFormType?: (payload: 'auto') => void;\n submitCallback: () => Promise;\n cancelCallback: () => void;\n submitLabel: string;\n updateIntegration?: boolean;\n}\n\nconst ManualIntegrationForm = ({\n name,\n apiToken,\n puppetServer,\n puppetDb,\n codeManager,\n orchestrator,\n classifier,\n caCert,\n compileBatchSize,\n ignoreSyncErrors,\n saveLoading,\n saveError,\n onFormChange,\n changeFormType,\n submitCallback,\n cancelCallback,\n submitLabel,\n updateIntegration,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const [showIaSettings, setShowIaSettings] = useState(false);\n\n const formVals: ManualIntegrationFormValues = {\n name: name ?? '',\n apiToken: apiToken ?? '',\n puppetServer: puppetServer ?? '',\n puppetDb: puppetDb ?? '',\n codeManager: codeManager ?? '',\n orchestrator: orchestrator ?? '',\n classifier: classifier ?? '',\n caCert: caCert ?? '',\n compileBatchSize: compileBatchSize ?? '',\n ignoreSyncErrors: ignoreSyncErrors ?? false,\n };\n\n return (\n \n \n \n {!updateIntegration && (\n \n \n {t('addPeIntegration.manualIntegrationForm.subheader.text')}\n \n\n \n \n )}\n\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n {updateIntegration && (\n
\n {\n setShowIaSettings((current) => !current);\n }}\n >\n {t(`addPeIntegration.manualIntegrationForm.iaSettings`)}\n \n {showIaSettings && (\n
\n \n
\n )}\n
\n \n {t(\n 'addPeIntegration.manualIntegrationForm.compilerMaintenanceLabel',\n )}\n \n \n \n \n {t(\n 'addPeIntegration.manualIntegrationForm.compilerMaintenanceInfo',\n )}\n \n
\n )}\n \n \n \n \n );\n};\n\nexport default ManualIntegrationForm;\n\nManualIntegrationForm.defaultProps = {\n name: null,\n apiToken: null,\n puppetServer: null,\n puppetDb: null,\n codeManager: null,\n orchestrator: null,\n classifier: null,\n caCert: null,\n compileBatchSize: null,\n ignoreSyncErrors: false,\n saveLoading: false,\n saveError: null,\n changeFormType: () => {},\n} as Partial;\n","import ManualIntegrationForm from './ManualIntegrationForm';\n\nexport default ManualIntegrationForm;\nexport * from './ManualIntegrationForm';\n","import actionCreator, { Actions } from '@utils/actionCreator';\nimport CommonForm from '@components/CommonForm';\nimport { CommonFormChangeFunction } from '@components/CommonForm/CommonForm';\nimport { useTranslation } from 'react-i18next';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport React from 'react';\nimport Definitions from '@components/Definitions';\nimport { Button, Form, Link, Text } from '@puppet/react-components';\nimport { Cd4peApiError } from '@utils/api/cd4pe';\nimport Cd4peError from '@components/Cd4peError';\n\ninterface IaConfigFormActionTypes {\n PUPPET_SERVER: 'PUPPET_SERVER';\n IA_CERT: 'IA_CERT';\n IA_PRIVATE_KEY: 'IA_PRIVATE_KEY';\n}\n\nexport const IA_CONFIG_FORM_ACTION_TYPES: IaConfigFormActionTypes = {\n PUPPET_SERVER: 'PUPPET_SERVER',\n IA_CERT: 'IA_CERT',\n IA_PRIVATE_KEY: 'IA_PRIVATE_KEY',\n};\n\nexport const iaConfigFormActions = {\n puppetServer: (puppetServer: string) =>\n actionCreator(IA_CONFIG_FORM_ACTION_TYPES.PUPPET_SERVER, puppetServer),\n iaCert: (iaCert: string) =>\n actionCreator(IA_CONFIG_FORM_ACTION_TYPES.IA_CERT, iaCert),\n iaPrivateKey: (iaPrivateKey: string) =>\n actionCreator(IA_CONFIG_FORM_ACTION_TYPES.IA_PRIVATE_KEY, iaPrivateKey),\n};\n\nexport type IaConfigFormActions = Actions;\n\ntype FormFieldValues = {\n [K in keyof IaConfigFormActionTypes]: string | null | undefined;\n};\n\nexport type IaConfigFormOnChange = CommonFormChangeFunction;\n\ninterface Props {\n puppetServer?: string | null;\n iaCert?: string | null;\n iaPrivateKey?: string | null;\n saveLoading?: boolean;\n saveError?: Cd4peApiError | null;\n onFormChange: IaConfigFormOnChange;\n submitCallback: () => Promise;\n cancelCallback: () => void;\n}\n\nconst IaConfigForm = ({\n puppetServer,\n iaCert,\n iaPrivateKey,\n saveLoading,\n saveError,\n onFormChange,\n submitCallback,\n cancelCallback,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n\n const formVals = {\n PUPPET_SERVER: puppetServer,\n IA_CERT: iaCert,\n IA_PRIVATE_KEY: iaPrivateKey,\n };\n\n return (\n \n \n \n

\n {t('addPeIntegration.iaConfigForm.header')}\n

\n \n {t('addPeIntegration.iaConfigForm.subHeader')}\n \n \n {t('addPeIntegration.iaConfigForm.cancelButton')}\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n \n

\n {t('addPeIntegration.iaConfigForm.infoHeader')}\n

\n \n {t('addPeIntegration.iaConfigForm.infoBody')}\n \n \n {t('addPeIntegration.iaConfigForm.infoLink')}\n \n
\n
\n
\n
\n \n \n );\n};\n\nexport default IaConfigForm;\n\nIaConfigForm.defaultProps = {\n puppetServer: null,\n iaCert: null,\n iaPrivateKey: null,\n saveLoading: false,\n saveError: null,\n} as Partial;\n","import IaConfigForm from './IaConfigForm';\n\nexport default IaConfigForm;\nexport * from './IaConfigForm';\n","export const FORM_TYPE = 'FORM_TYPE';\nexport const AUTH_TYPE = 'AUTH_TYPE';\nexport const EDITING_TOKEN_LIFETIME = 'EDITING_TOKEN_LIFETIME';\nexport const TOKEN_UNITS = 'TOKEN_UNITS';\nexport const IA_CONFIG_MODAL = 'IA_CONFIG_MODAL';\nexport const DISCOVER_INTEGRATION_START = 'DISCOVER_INTEGRATION_START';\nexport const DISCOVER_INTEGRATION_COMPLETE = 'DISCOVER_INTEGRATION_COMPLETE';\nexport const DISCOVER_INTEGRATION_ERROR = 'DISCOVER_INTEGRATION_ERROR';\nexport const CREATE_INTEGRATION_START = 'CREATE_INTEGRATION_START';\nexport const CREATE_INTEGRATION_COMPLETE = 'CREATE_INTEGRATION_COMPLETE';\nexport const CREATE_INTEGRATION_ERROR = 'CREATE_INTEGRATION_ERROR';\nexport const CONFIGURE_IA_START = 'CONFIGURE_IA_START';\nexport const CONFIGURE_IA_COMPLETE = 'CONFIGURE_IA_COMPLETE';\nexport const CONFIGURE_IA_ERROR = 'CONFIGURE_IA_ERROR';\n","import {\n Cd4peApiError,\n CreatePEIntegrationRequestV2,\n DiscoverPEIntegrationRequestV2,\n handleApiRequest,\n isCd4peApiError,\n PeIntegrationsV2Service,\n PEIntegrationV2,\n} from '@utils/api/cd4pe';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport { AutoIntegrationFormActions } from '@codeDelivery/components/AutoIntegrationForm';\nimport { Dispatch } from 'react';\nimport { ManualIntegrationFormActions } from './components/ManualIntegrationForm';\nimport {\n iaConfigFormActions,\n IaConfigFormActions,\n} from './components/IaConfigForm';\nimport * as at from './actionTypes';\n\nexport type FormType = 'auto' | 'manual' | 'ia';\nexport type AuthType = 'basic' | 'token';\nexport type TokenUnits = 'months' | 'years';\n\nexport const addPeIntegrationActions = {\n formType: (formType: FormType) => actionCreator(at.FORM_TYPE, formType),\n authType: (authType: AuthType) => actionCreator(at.AUTH_TYPE, authType),\n editingTokenLifetime: (editingTokenLifetime: boolean) =>\n actionCreator(at.EDITING_TOKEN_LIFETIME, editingTokenLifetime),\n tokenUnits: (tokenUnits: TokenUnits) =>\n actionCreator(at.TOKEN_UNITS, tokenUnits),\n iaConfigModal: (showModal: boolean) =>\n actionCreator(at.IA_CONFIG_MODAL, showModal),\n discoverIntegrationStart: () => actionCreator(at.DISCOVER_INTEGRATION_START),\n discoverIntegrationComplete: (payload: PEIntegrationV2) =>\n actionCreator(at.DISCOVER_INTEGRATION_COMPLETE, payload),\n discoverIntegrationError: (error: Cd4peApiError) =>\n actionCreator(at.DISCOVER_INTEGRATION_ERROR, error),\n createIntegrationStart: () => actionCreator(at.CREATE_INTEGRATION_START),\n createIntegrationComplete: (payload: PEIntegrationV2) =>\n actionCreator(at.CREATE_INTEGRATION_COMPLETE, payload),\n createIntegrationError: (error: Cd4peApiError) =>\n actionCreator(at.CREATE_INTEGRATION_ERROR, error),\n configureIaStart: () => actionCreator(at.CONFIGURE_IA_START),\n configureIaError: (error: Cd4peApiError) =>\n actionCreator(at.CONFIGURE_IA_ERROR, error),\n configureIaComplete: (payload: PEIntegrationV2) =>\n actionCreator(at.CONFIGURE_IA_COMPLETE, payload),\n};\n\nexport type AddPeIntegrationActions =\n | Actions\n | AutoIntegrationFormActions\n | ManualIntegrationFormActions\n | IaConfigFormActions;\n\nexport const discoverPeIntegration = async (\n dispatch: Dispatch,\n integrationPayload: DiscoverPEIntegrationRequestV2,\n) => {\n const integrationResponse = await handleApiRequest(\n PeIntegrationsV2Service.discoverPeIntegrationV2({\n requestBody: integrationPayload,\n }),\n );\n\n if (isCd4peApiError(integrationResponse)) {\n return dispatch(\n addPeIntegrationActions.discoverIntegrationError(integrationResponse),\n );\n }\n\n if (!integrationResponse.impactAnalysisConfigured) {\n if (integrationResponse.puppetServerUrl) {\n dispatch(\n iaConfigFormActions.puppetServer(integrationResponse.puppetServerUrl),\n );\n }\n dispatch(addPeIntegrationActions.iaConfigModal(true));\n }\n\n return dispatch(\n addPeIntegrationActions.discoverIntegrationComplete(integrationResponse),\n );\n};\n\nexport const createPeIntegration = async (\n dispatch: Dispatch,\n addPayload: CreatePEIntegrationRequestV2,\n) => {\n const integrationResponse = await handleApiRequest(\n PeIntegrationsV2Service.createPeIntegrationV2({ requestBody: addPayload }),\n );\n\n if (isCd4peApiError(integrationResponse)) {\n dispatch(\n addPeIntegrationActions.createIntegrationError(integrationResponse),\n );\n return;\n }\n\n if (!integrationResponse.impactAnalysisConfigured) {\n dispatch(addPeIntegrationActions.iaConfigModal(true));\n }\n\n dispatch(\n addPeIntegrationActions.createIntegrationComplete(integrationResponse),\n );\n};\n\nexport const configureIa = async (\n dispatch: Dispatch,\n integrationId: string,\n puppetServer: string,\n iaCert: string,\n iaKey: string,\n) => {\n const iaConfigResponse = await handleApiRequest(\n PeIntegrationsV2Service.updatePeIntegrationV2({\n peIntegrationId: integrationId,\n requestBody: {\n puppetServerUrl: puppetServer,\n legacyPuppetServerCreds: { certificate: iaCert, privateKey: iaKey },\n },\n }),\n );\n\n if (isCd4peApiError(iaConfigResponse)) {\n dispatch(addPeIntegrationActions.configureIaError(iaConfigResponse));\n return;\n }\n\n dispatch(addPeIntegrationActions.configureIaComplete(iaConfigResponse));\n};\n","import { Cd4peApiError, PEIntegrationV2 } from '@utils/api/cd4pe';\nimport { AddPeIntegrationActions, AuthType, FormType } from './actions';\nimport { AUTO_INTEGRATION_FORM_ACTION_TYPES } from '../AutoIntegrationForm';\nimport {\n ManualIntegrationFormValues,\n MANUAL_INTEGRATION_FORM_ACTION_TYPES,\n} from './components/ManualIntegrationForm';\nimport { IA_CONFIG_FORM_ACTION_TYPES } from './components/IaConfigForm/IaConfigForm';\nimport * as at from './actionTypes';\n\nexport interface AddPeIntegrationState {\n formType: FormType;\n name: string;\n consoleAddress: string;\n authType: AuthType;\n peUsername: string;\n password: string;\n tokenLifetime: string;\n apiToken: string;\n puppetServer: string;\n puppetDb: string;\n codeManager: string;\n orchestrator: string;\n classifier: string;\n caCert: string;\n iaCert: string;\n iaPrivateKey: string;\n iaConfigModal: boolean;\n discoverIntegrationLoading: boolean;\n discoverIntegrationError: Cd4peApiError | null;\n createIntegrationLoading: boolean;\n createIntegrationError: Cd4peApiError | null;\n configureIaLoading: boolean;\n configureIaError: Cd4peApiError | null;\n newIntegration?: PEIntegrationV2 | null;\n}\n\nexport const defaultAddPeIntegrationState: AddPeIntegrationState = {\n formType: 'auto',\n name: '',\n consoleAddress: '',\n authType: 'basic',\n peUsername: '',\n password: '',\n tokenLifetime: '6',\n apiToken: '',\n puppetServer: '',\n puppetDb: '',\n codeManager: '',\n orchestrator: '',\n classifier: '',\n caCert: '',\n iaCert: '',\n iaPrivateKey: '',\n iaConfigModal: false,\n discoverIntegrationLoading: false,\n discoverIntegrationError: null,\n createIntegrationLoading: false,\n createIntegrationError: null,\n configureIaLoading: false,\n configureIaError: null,\n newIntegration: null,\n};\n\nexport const reducer = (\n state: AddPeIntegrationState,\n action: AddPeIntegrationActions,\n): AddPeIntegrationState => {\n switch (action.type) {\n case at.DISCOVER_INTEGRATION_START:\n return {\n ...state,\n discoverIntegrationLoading: true,\n };\n case at.DISCOVER_INTEGRATION_COMPLETE:\n return {\n ...state,\n discoverIntegrationLoading: false,\n discoverIntegrationError: null,\n newIntegration: action.payload,\n };\n case at.DISCOVER_INTEGRATION_ERROR:\n return {\n ...state,\n discoverIntegrationLoading: false,\n discoverIntegrationError: action.payload,\n };\n case at.CREATE_INTEGRATION_START:\n return {\n ...state,\n createIntegrationLoading: true,\n };\n case at.CREATE_INTEGRATION_COMPLETE:\n return {\n ...state,\n createIntegrationLoading: false,\n createIntegrationError: null,\n newIntegration: action.payload,\n };\n case at.CREATE_INTEGRATION_ERROR:\n return {\n ...state,\n createIntegrationLoading: false,\n createIntegrationError: action.payload,\n };\n case at.CONFIGURE_IA_START:\n return {\n ...state,\n configureIaLoading: true,\n };\n case at.CONFIGURE_IA_COMPLETE:\n return {\n ...state,\n configureIaLoading: false,\n configureIaError: null,\n newIntegration: action.payload,\n };\n case at.CONFIGURE_IA_ERROR:\n return {\n ...state,\n configureIaLoading: false,\n configureIaError: action.payload,\n };\n case at.FORM_TYPE:\n return {\n ...state,\n peUsername: '',\n password: '',\n apiToken: '',\n discoverIntegrationError: null,\n createIntegrationError: null,\n iaConfigModal: false,\n formType: action.payload,\n };\n case at.AUTH_TYPE:\n return {\n ...state,\n authType: action.payload,\n };\n case at.IA_CONFIG_MODAL:\n return {\n ...state,\n iaConfigModal: action.payload,\n };\n case AUTO_INTEGRATION_FORM_ACTION_TYPES.NAME:\n return {\n ...state,\n name: action.payload,\n };\n case AUTO_INTEGRATION_FORM_ACTION_TYPES.CONSOLE_ADDRESS:\n return {\n ...state,\n consoleAddress: action.payload,\n };\n case AUTO_INTEGRATION_FORM_ACTION_TYPES.PE_USERNAME:\n return {\n ...state,\n peUsername: action.payload,\n };\n case AUTO_INTEGRATION_FORM_ACTION_TYPES.PASSWORD:\n return {\n ...state,\n password: action.payload,\n };\n case AUTO_INTEGRATION_FORM_ACTION_TYPES.TOKEN_LIFETIME:\n return {\n ...state,\n tokenLifetime: action.payload,\n };\n case IA_CONFIG_FORM_ACTION_TYPES.PUPPET_SERVER:\n return {\n ...state,\n puppetServer: action.payload,\n };\n case IA_CONFIG_FORM_ACTION_TYPES.IA_CERT:\n return {\n ...state,\n iaCert: action.payload,\n };\n case IA_CONFIG_FORM_ACTION_TYPES.IA_PRIVATE_KEY:\n return {\n ...state,\n iaPrivateKey: action.payload,\n };\n case AUTO_INTEGRATION_FORM_ACTION_TYPES.API_TOKEN:\n return {\n ...state,\n apiToken: action.payload,\n };\n case MANUAL_INTEGRATION_FORM_ACTION_TYPES.PATCH_FORM: {\n const formValues = (\n Object.keys(action.payload) as (keyof ManualIntegrationFormValues)[]\n ).reduce((finalForm, key) => {\n if (key === 'ignoreSyncErrors' || key === 'compileBatchSize') {\n return finalForm;\n }\n return { ...finalForm, [key]: action.payload[key] ?? state[key] };\n }, {} as AddPeIntegrationState);\n\n return {\n ...state,\n ...formValues,\n };\n }\n default:\n throw new Error();\n }\n};\n","import React, { useEffect, useReducer } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useAppDispatch } from '@hooks/redux';\nimport {\n CreatePEIntegrationRequestV2,\n DiscoverPEIntegrationRequestV2,\n PEIntegrationGenerateTokenRequestV2,\n} from '@utils/api/cd4pe';\nimport { Button, Modal, Text } from '@puppet/react-components';\nimport alerts from '@state/ui/alerts';\nimport AutoIntegrationForm, {\n AutoIntegrationFormOnChange,\n} from '../AutoIntegrationForm';\nimport ManualIntegrationForm, {\n manualIntegrationFormActions,\n ManualIntegrationFormOnChange,\n} from './components/ManualIntegrationForm';\nimport {\n addPeIntegrationActions,\n createPeIntegration,\n discoverPeIntegration,\n configureIa,\n AuthType,\n FormType,\n} from './actions';\nimport IaConfigForm, { IaConfigFormOnChange } from './components/IaConfigForm';\nimport { defaultAddPeIntegrationState, reducer } from './reducer';\n\nconst DAYS_IN_A_MONTH = Math.ceil(365 / 12);\n\ntype props = {\n onCancel: () => void;\n onSuccess: () => void;\n};\n\nconst AddPEIntegrationForm = ({ onCancel, onSuccess }: props) => {\n const [state, dispatch] = useReducer(reducer, defaultAddPeIntegrationState);\n const { t } = useTranslation('codeDelivery');\n const appDispatch = useAppDispatch();\n const workspaceId = useWorkspaceDomain();\n\n useEffect(() => {\n if (state.newIntegration?.impactAnalysisConfigured) {\n onSuccess();\n }\n }, [onSuccess, state.newIntegration]);\n\n const integrationStatus = state.newIntegration != null;\n useEffect(() => {\n if (integrationStatus) {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('addPeIntegration.alerts.success'),\n }),\n );\n }\n }, [integrationStatus, appDispatch, t]);\n\n const onAutoFormChange: AutoIntegrationFormOnChange = (fieldName, values) => {\n dispatch({ type: fieldName, payload: values[fieldName] || '' });\n };\n const onManualFormChange: ManualIntegrationFormOnChange = (\n fieldName,\n values,\n ) => {\n dispatch(manualIntegrationFormActions.patchForm(values));\n };\n const onIaFormChange: IaConfigFormOnChange = (fieldName, values) => {\n dispatch({ type: fieldName, payload: values[fieldName] || '' });\n };\n\n const dispatchAuthTypeChange = (payload: AuthType) => () => {\n dispatch(addPeIntegrationActions.authType(payload));\n };\n const changeFormType = (payload: FormType) => () => {\n dispatch(addPeIntegrationActions.formType(payload));\n };\n const dispatchIaModal = (payload: boolean) => () => {\n dispatch(addPeIntegrationActions.iaConfigModal(payload));\n };\n const autoDiscoverIntegration = async () => {\n dispatch(addPeIntegrationActions.discoverIntegrationStart());\n if (state.authType === 'basic') {\n const tokenLifetime = Math.ceil(\n DAYS_IN_A_MONTH * Number(state.tokenLifetime),\n );\n\n const generateTokenRequest: PEIntegrationGenerateTokenRequestV2 = {\n username: state.peUsername,\n password: state.password,\n tokenLifetime: `${tokenLifetime}d`,\n };\n\n state.consoleAddress = state.consoleAddress.trim();\n\n const discoverPayload: DiscoverPEIntegrationRequestV2 = {\n workspaceId,\n name: state.name,\n nodeClassifierUrl: state.consoleAddress,\n generateTokenRequest,\n };\n await discoverPeIntegration(dispatch, discoverPayload);\n return;\n }\n const discoverPayload: DiscoverPEIntegrationRequestV2 = {\n workspaceId,\n name: state.name,\n nodeClassifierUrl: state.consoleAddress,\n token: state.apiToken,\n };\n await discoverPeIntegration(dispatch, discoverPayload);\n };\n const manuallySaveIntegration = async () => {\n dispatch(addPeIntegrationActions.createIntegrationStart());\n const createPayload: CreatePEIntegrationRequestV2 = {\n workspaceId,\n name: state.name,\n nodeClassifierUrl: state.classifier,\n puppetServerUrl: state.puppetServer,\n puppetDbUrl: state.puppetDb,\n codeManagerUrl: state.codeManager,\n orchestratorUrl: state.orchestrator,\n caCertificate: state.caCert,\n token: state.apiToken,\n };\n await createPeIntegration(dispatch, createPayload);\n };\n const configureImpactAnalysis = async () => {\n dispatch(addPeIntegrationActions.configureIaStart());\n if (state.newIntegration) {\n configureIa(\n dispatch,\n state.newIntegration.id,\n state.puppetServer,\n state.iaCert,\n state.iaPrivateKey,\n );\n }\n };\n\n const iaConfigModal = () => {\n if (state.iaConfigModal) {\n return (\n \n {t('addPeIntegration.iaConfigModal.title')}\n {t('addPeIntegration.iaConfigModal.text1')}\n {t('addPeIntegration.iaConfigModal.text2')}\n \n \n \n \n \n );\n }\n return null;\n };\n\n const integrationForm = () => {\n if (state.formType === 'auto') {\n return (\n \n );\n }\n if (state.formType === 'manual') {\n return (\n \n );\n }\n return (\n \n );\n };\n\n return (\n <>\n {integrationForm()}\n {iaConfigModal()}\n \n );\n};\n\nexport default AddPEIntegrationForm;\n","import AddPeIntegrationForm from './AddPeIntegrationForm';\n\nexport default AddPeIntegrationForm;\n","import AddPeIntegration from './AddPeIntegration';\n\nexport default AddPeIntegration;\n","import React, { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport { Heading } from '@puppet/react-components';\nimport PageLayout from '@components/PageLayout';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { LINKS } from 'src/routes';\nimport { useNavigate } from 'react-router-dom';\nimport AddPeIntegrationForm from '@codeDelivery/components/AddPeIntegrationForm';\n\nconst AddPeIntegration = () => {\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const navigate = useNavigate();\n\n const navigateToPeList = useCallback(\n () =>\n navigate(\n LINKS.settings.listPuppetEnterprise({\n path: { workspace: workspaceName },\n }),\n ),\n [navigate, workspaceName],\n );\n\n const breadcrumbs = [\n { displayName: workspaceName },\n {\n displayName: t('addPeIntegration.breadcrumbs.settingsPage'),\n linkDestination: LINKS.settings.workspace({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t('addPeIntegration.breadcrumbs.peIntegrationsPage'),\n linkDestination: LINKS.settings.listPuppetEnterprise({\n path: { workspace: workspaceName },\n }),\n },\n { displayName: t('addPeIntegration.breadcrumbs.addPeIntegrationPage') },\n ];\n return (\n \n \n \n \n \n {t('addPeIntegration.header.text')}\n \n \n \n \n \n );\n};\n\nexport default AddPeIntegration;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport ManualIntegrationForm, {\n ManualIntegrationFormOnChange,\n ManualIntegrationFormValues,\n} from '@codeDelivery/components/AddPeIntegrationForm/components/ManualIntegrationForm';\nimport { Loading, Heading } from '@puppet/react-components';\nimport {\n useGetPeIntegrationV2,\n useUpdatePeIntegrationV2,\n} from '@services/cd4pe/peIntegrations';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport PageLayout from '@components/PageLayout';\nimport Cd4peError from '@components/Cd4peError';\nimport { LINKS } from 'src/routes';\n\nconst EditPeIntegration = () => {\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const navigate = useNavigate();\n const appDispatch = useAppDispatch();\n const { peId: peIntegrationId } = useParams<{ peId: string }>();\n const [formData, setFormData] = useState({\n name: '',\n puppetServer: '',\n apiToken: '',\n caCert: '',\n classifier: '',\n codeManager: '',\n compileBatchSize: '',\n ignoreSyncErrors: false,\n orchestrator: '',\n puppetDb: '',\n });\n\n const navigateToPeList = () =>\n navigate(\n LINKS.settings.listPuppetEnterprise({\n path: { workspace: workspaceName },\n }),\n );\n\n const {\n isLoading,\n error,\n data: peIntegration,\n } = useGetPeIntegrationV2({ peIntegrationId: peIntegrationId! });\n\n useEffect(() => {\n if (peIntegration) {\n setFormData({\n caCert: peIntegration.caCertificate,\n classifier: peIntegration.nodeClassifierUrl,\n codeManager: peIntegration.codeManagerUrl,\n compileBatchSize: String(peIntegration.compileBatchSize),\n name: peIntegration.name,\n orchestrator: peIntegration.orchestratorUrl,\n puppetDb: peIntegration.puppetDbUrl,\n puppetServer: peIntegration.puppetServerUrl || '',\n ignoreSyncErrors: peIntegration.ignoreCodeManagerSyncErrors || false,\n apiToken: '',\n });\n }\n }, [peIntegration]);\n\n const updateIntegration = useUpdatePeIntegrationV2();\n\n const onSubmit = async () =>\n updateIntegration.mutate(\n {\n peIntegrationId: peIntegrationId!,\n requestBody: {\n puppetServerUrl: formData.puppetServer,\n puppetDbUrl: formData.puppetDb,\n codeManagerUrl: formData.codeManager,\n orchestratorUrl: formData.orchestrator,\n nodeClassifierUrl: formData.classifier,\n caCertificate: formData.caCert,\n compileBatchSize: Number(formData.compileBatchSize),\n ignoreCodeManagerSyncErrors: formData.ignoreSyncErrors,\n token: formData.apiToken || undefined,\n },\n },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('editPeIntegration.alerts.success'),\n }),\n );\n navigateToPeList();\n },\n },\n );\n\n const onEditFormChange: ManualIntegrationFormOnChange = (\n fieldName,\n values,\n ) => {\n if (fieldName === 'ignoreSyncErrors') {\n setFormData({\n ...formData,\n ignoreSyncErrors: values.ignoreSyncErrors ?? false,\n });\n return;\n }\n setFormData({ ...formData, [fieldName]: values[fieldName] ?? '' });\n };\n\n const breadcrumbs = [\n { displayName: workspaceName },\n {\n displayName: t('editPeIntegration.breadcrumbs.settingsPage'),\n linkDestination: LINKS.settings.workspace({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t('editPeIntegration.breadcrumbs.peIntegrationPage'),\n linkDestination: LINKS.settings.listPuppetEnterprise({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t('editPeIntegration.breadcrumbs.editPeIntegrationPage'),\n },\n ];\n\n return (\n \n \n \n \n \n {t('editPeIntegration.header.text')}\n \n \n {isLoading && (\n \n )}\n {peIntegration && (\n navigateToPeList()}\n saveLoading={updateIntegration.isLoading}\n saveError={updateIntegration.error}\n submitLabel={t(\n `editPeIntegration.manualIntegrationForm.submitButton`,\n )}\n updateIntegration\n />\n )}\n \n \n \n );\n};\n\nexport default EditPeIntegration;\n","import EditPeIntegration from './EditPeIntegration';\n\nexport default EditPeIntegration;\n","import React from 'react';\nimport { Select } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\n\nexport interface SelectData {\n label: string;\n value: string;\n}\n\nconst AddProtectedEnvironmentsSelect = ({\n environments,\n selectedEnvironment,\n onChange,\n presetEnvironment,\n}: {\n environments: SelectData[];\n selectedEnvironment: string;\n onChange: Function;\n presetEnvironment?: string;\n}) => {\n const { t } = useTranslation('codeDelivery');\n\n return (\n onChange(value)}\n />\n );\n};\n\nAddProtectedEnvironmentsSelect.defaultProps = {\n presetEnvironment: '',\n};\n\nexport default AddProtectedEnvironmentsSelect;\n","import AddProtectedEnvironmentsSelect from './AddProtectedEnvironmentsSelect';\n\nexport default AddProtectedEnvironmentsSelect;\nexport * from './AddProtectedEnvironmentsSelect';\n","import React from 'react';\nimport { Table } from '@puppet/data-grid';\nimport { RbacGroupV1 } from '@utils/api/cd4pe';\nimport { useTranslation } from 'react-i18next';\n\nexport interface RowData extends RbacGroupV1 {\n selected?: boolean;\n}\n\nconst AddProtectedEnvironmentsTable = ({\n data,\n onRowChecked,\n onHeaderChecked,\n headerCheckState,\n headerIndeterminateState,\n emptyStateHeader,\n loading,\n}: {\n data: RowData[];\n onRowChecked: Function;\n onHeaderChecked: Function;\n headerCheckState: boolean;\n headerIndeterminateState: boolean;\n emptyStateHeader: string;\n loading: boolean;\n}) => {\n const { t } = useTranslation('codeDelivery');\n const columns = [\n { label: t('addProtectedEnvironment.table.header.group'), dataKey: 'name' },\n {\n label: t('addProtectedEnvironment.table.header.description'),\n dataKey: 'description',\n },\n ];\n return (\n \n \n onRowChecked(checked, rowData)\n }\n onHeaderChecked={(checked: boolean) => onHeaderChecked(checked)}\n headerCheckState={headerCheckState}\n headerIndeterminateState={headerIndeterminateState}\n />\n
\n );\n};\n\nexport default AddProtectedEnvironmentsTable;\n","import AddProtectedEnvironmentsTable from './AddProtectedEnvironmentsTable';\n\nexport default AddProtectedEnvironmentsTable;\nexport * from './AddProtectedEnvironmentsTable';\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport AddProtectedEnvironmentsSelect from '@codeDelivery/components/AddProtectedEnvironmentsSelect';\nimport AddProtectedEnvironmentsTable, {\n RowData,\n} from '@codeDelivery/components/AddProtectedEnvironmentsTable';\nimport { Heading, Text } from '@puppet/react-components';\nimport { ListPEProtectedEnvironmentCandidatesResponseV2 } from '@puppet/cd4pe-client-ts';\n\ninterface Props {\n environments?: ListPEProtectedEnvironmentCandidatesResponseV2 | undefined;\n selectedEnvironment: string;\n onEnvironmentChange?: Function;\n envName?: string;\n groups: RowData[];\n loadingGroups: boolean;\n selectedGroups: string[];\n onSelectedData: Function;\n}\n\nconst buildEnvironmentsSelect = (\n environments: ListPEProtectedEnvironmentCandidatesResponseV2,\n) => {\n return environments.environments.map((environment) => ({\n label: environment.name,\n value: environment.name,\n }));\n};\n\nconst defaultProps = {\n envName: '',\n environments: [],\n onEnvironmentChange: () => {},\n};\n\nconst checkIfIndeterminateState = (\n groups: RowData[],\n selectedData: string[],\n) => {\n let checkAllValue = false;\n let indeterminateStateValue = false;\n\n if (groups?.length === selectedData?.length) {\n indeterminateStateValue = false;\n checkAllValue = true;\n } else if (selectedData?.length > 0) {\n indeterminateStateValue = true;\n checkAllValue = false;\n }\n\n return { checkAllValue, indeterminateStateValue };\n};\n\nconst ProtectedEnvironmentsForm = ({\n environments,\n selectedEnvironment,\n onEnvironmentChange,\n envName = '',\n groups,\n loadingGroups,\n selectedGroups,\n onSelectedData,\n}: Props) => {\n const [checkAll, setCheckAll] = useState(false);\n const [indeterminateState, setIndeterminateState] = useState(false);\n const { t } = useTranslation('codeDelivery');\n\n const onHeaderSelected = async (checked: boolean) => {\n if (!groups) {\n return;\n }\n\n if (checked) {\n onSelectedData(groups?.map((group) => group.name) ?? []);\n } else {\n onSelectedData([]);\n }\n };\n\n const onApproverRowSelect = (checked: boolean, rowData: RowData) => {\n if (!groups) {\n return;\n }\n\n const newSelectedData = [...selectedGroups];\n\n if (checked && !newSelectedData.includes(rowData.name)) {\n onSelectedData([...newSelectedData, rowData.name]);\n } else {\n const index = newSelectedData.findIndex((name) => rowData.name === name);\n if (index > -1) {\n newSelectedData.splice(index, 1);\n }\n onSelectedData(newSelectedData);\n }\n };\n\n useEffect(() => {\n if (!groups) {\n return;\n }\n\n const { checkAllValue, indeterminateStateValue } =\n checkIfIndeterminateState(groups, selectedGroups);\n\n setCheckAll(checkAllValue);\n setIndeterminateState(indeterminateStateValue);\n }, [groups, selectedGroups]);\n\n return (\n <>\n
\n {t('addProtectedEnvironment.select.header')}\n
\n \n \n \n {t('addProtectedEnvironment.table.header')}\n {t('addProtectedEnvironment.table.description')}\n \n \n );\n};\n\nProtectedEnvironmentsForm.defaultProps = defaultProps;\n\nexport default ProtectedEnvironmentsForm;\n","import ProtectedEnvironmentsForm from './ProtectedEnvironmentsForm';\n\nexport default ProtectedEnvironmentsForm;\n","import queryClient from '@services/queryClient';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n GroupsV1Service,\n handleQueryRequest,\n MutationHook,\n QueryHook,\n} from '@utils/api/cd4pe';\n\nconst GROUPS_LIST_QUERY_TAG = 'listGroups';\nconst GROUPS_GET_GROUP_QUERY_TAG = 'getGroup';\nconst GROUPS_GET_AVAILABLE_PRIVILEGES_QUERY_TAG = 'getAvailablePrivileges';\nconst GROUPS_GET_PRIVILEGES_QUERY_TAG = 'getPrivileges';\nconst GROUPS_LIST_GROUP_MEMBERS = 'listGroupMembers';\nconst GROUPS_LIST_GROUP_MEMBER_CANDIDATES = 'listGroupMemberCandidates';\n\n/**\n * useListGroupsV1\n */\n\ntype UseListGroupsV1 = QueryHook<\n typeof GroupsV1Service,\n 'listGroupsV1',\n Cd4peApiError\n>;\n\nexport const useListGroupsV1: UseListGroupsV1 = (payload) =>\n useQuery([GROUPS_LIST_QUERY_TAG, payload.workspaceId], async () =>\n handleQueryRequest(GroupsV1Service.listGroupsV1(payload)),\n );\n\n/**\n * useGetGroupsV1\n */\n\ntype UseGetGroupV1 = QueryHook<\n typeof GroupsV1Service,\n 'getGroupV1',\n Cd4peApiError\n>;\n\nexport const useGetGroupV1: UseGetGroupV1 = (payload, options) =>\n useQuery(\n [GROUPS_GET_GROUP_QUERY_TAG, payload.groupId],\n async () => handleQueryRequest(GroupsV1Service.getGroupV1(payload)),\n options,\n );\n\n/**\n * useGetGroupPrivilegesV1\n */\n\ntype UseGetGroupPrivilegesV1 = QueryHook<\n typeof GroupsV1Service,\n 'getGroupPrivilegesV1',\n Cd4peApiError\n>;\n\nexport const useGetGroupPrivilegesV1: UseGetGroupPrivilegesV1 = (payload) =>\n useQuery([GROUPS_GET_PRIVILEGES_QUERY_TAG, payload.groupId], async () =>\n handleQueryRequest(GroupsV1Service.getGroupPrivilegesV1(payload)),\n );\n\n/**\n * useGetAvailableGroupPrivilegesV1\n */\n\ntype UseGetAvailableGroupPrivilegesV1 = QueryHook<\n typeof GroupsV1Service,\n 'getAvailableGroupPrivilegesV1',\n Cd4peApiError\n>;\n\nexport const useGetAvailableGroupPrivilegesV1: UseGetAvailableGroupPrivilegesV1 =\n (payload) =>\n useQuery(\n [GROUPS_GET_AVAILABLE_PRIVILEGES_QUERY_TAG, payload.groupId],\n async () =>\n handleQueryRequest(\n GroupsV1Service.getAvailableGroupPrivilegesV1(payload),\n ),\n );\n\n/**\n * useCreateGroupV1\n */\n\ntype UseCreateGroupV1 = MutationHook<\n typeof GroupsV1Service,\n 'createGroupV1',\n Cd4peApiError\n>;\n\nexport const useCreateGroupV1: UseCreateGroupV1 = () =>\n useMutation((payload) =>\n handleQueryRequest(GroupsV1Service.createGroupV1(payload)),\n );\n\n/**\n * useSetGroupPrivilegesV1\n */\n\ntype UseSetGroupPrivilegesV1 = MutationHook<\n typeof GroupsV1Service,\n 'setGroupPrivilegesV1',\n Cd4peApiError\n>;\n\nexport const useSetGroupPrivilegesV1: UseSetGroupPrivilegesV1 = () => {\n return useMutation(\n (payload) =>\n handleQueryRequest(GroupsV1Service.setGroupPrivilegesV1(payload)),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n GROUPS_GET_PRIVILEGES_QUERY_TAG,\n payload.groupId,\n ]);\n },\n },\n );\n};\n\n/**\n * useListGroupMembersV1\n */\n\ntype UseListGroupsMembersV1 = QueryHook<\n typeof GroupsV1Service,\n 'listGroupMembersV1',\n Cd4peApiError\n>;\n\nexport const useListGroupsMembersV1: UseListGroupsMembersV1 = (payload) =>\n useQuery([GROUPS_LIST_GROUP_MEMBERS, payload.groupId], async () =>\n handleQueryRequest(GroupsV1Service.listGroupMembersV1(payload)),\n );\n\n/**\n * useDeleteGroupMemberV1\n */\n\ntype UseDeleteGroupMemberV1 = MutationHook<\n typeof GroupsV1Service,\n 'deleteGroupMemberV1',\n Cd4peApiError\n>;\n\nexport const useDeleteGroupMemberV1: UseDeleteGroupMemberV1 = () => {\n return useMutation(\n (payload) =>\n handleQueryRequest(GroupsV1Service.deleteGroupMemberV1(payload)),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n GROUPS_LIST_GROUP_MEMBERS,\n payload.groupId,\n ]);\n },\n },\n );\n};\n\n/**\n * useListGroupMemberCandidatesV1\n */\n\ntype UseListGroupMemberCandidatesV1 = QueryHook<\n typeof GroupsV1Service,\n 'listGroupMemberCandidatesV1',\n Cd4peApiError\n>;\n\nexport const useListGroupMemberCandidatesV1: UseListGroupMemberCandidatesV1 = (\n payload,\n) =>\n useQuery([GROUPS_LIST_GROUP_MEMBER_CANDIDATES, payload.groupId], async () =>\n handleQueryRequest(GroupsV1Service.listGroupMemberCandidatesV1(payload)),\n );\n\n/**\n * addGroupMemberV1\n */\n\ntype UseAddGroupMembersV1 = MutationHook<\n typeof GroupsV1Service,\n 'addGroupMembersV1',\n Cd4peApiError\n>;\n\nexport const useAddGroupMembersV1: UseAddGroupMembersV1 = () => {\n return useMutation((payload) =>\n handleQueryRequest(GroupsV1Service.addGroupMembersV1(payload)),\n );\n};\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { Button, Card, Heading, Loading } from '@puppet/react-components';\nimport { useAppDispatch } from '@hooks/redux';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport ProtectedEnvironmentsForm from '@codeDelivery/components/ProtectedEnvironmentsForm';\nimport alerts from '@state/ui/alerts';\nimport { useListGroupsV1 } from '@services/cd4pe/groups';\nimport {\n useCreateProtectedEnvironmentV2,\n useGetPeIntegrationV2,\n useListProtectedEnvironmentCandidatesV2,\n} from '@services/cd4pe/peIntegrations';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport PageLayout from '@components/PageLayout';\nimport Cd4peError from '@components/Cd4peError';\nimport { LINKS } from 'src/routes';\n\nconst AddProtectedEnvironment = () => {\n const workspaceId = useWorkspaceDomain();\n const workspaceName = useWorkspaceName();\n const { peId: peIntegrationId } = useParams<{ peId: string }>();\n const [selectedData, setSelectedData] = useState([]);\n const [selectedEnvironment, setSelectedEnvironment] = useState('');\n const { t } = useTranslation('codeDelivery');\n const appDispatch = useAppDispatch();\n const navigate = useNavigate();\n\n const navigateToPeList = () =>\n navigate(\n LINKS.settings.listPuppetEnterprise({\n path: { workspace: workspaceName },\n }),\n );\n\n const {\n isLoading: peIntegrationLoading,\n error: peIntegrationError,\n data: peIntegration,\n } = useGetPeIntegrationV2({\n peIntegrationId: peIntegrationId!,\n });\n\n const {\n isLoading: environmentsLoading,\n error: environmentsError,\n data: environments,\n } = useListProtectedEnvironmentCandidatesV2({\n peIntegrationId: peIntegrationId!,\n });\n\n const {\n isLoading: groupsLoading,\n error: groupsError,\n data: groups,\n } = useListGroupsV1({ workspaceId });\n\n const isLoading = () =>\n peIntegrationLoading || environmentsLoading || groupsLoading;\n\n const derivedGroups =\n groups?.groups?.map((d) =>\n selectedData.includes(d.name) ? { ...d, selected: true } : d,\n ) ?? [];\n\n const createProtectedEnvironment = useCreateProtectedEnvironmentV2();\n\n const addProtectedEnvironment = async () =>\n createProtectedEnvironment.mutate(\n {\n peIntegrationId: peIntegrationId!,\n requestBody: {\n environmentName: selectedEnvironment,\n approvalGroupNames: selectedData,\n },\n },\n {\n onSuccess: () => {\n navigateToPeList();\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('addProtectedEnvironment.alert.success', {\n name: peIntegration?.name,\n }),\n }),\n );\n },\n },\n );\n\n const breadcrumbs = [\n { displayName: workspaceName },\n {\n displayName: t('addProtectedEnvironment.breadcrumbs.settingsPage'),\n linkDestination: LINKS.settings.workspace({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t('addProtectedEnvironment.breadcrumbs.peIntegrationsPage'),\n linkDestination: LINKS.settings.listPuppetEnterprise({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t(\n 'addProtectedEnvironment.breadcrumbs.addProtectedEnvironmentPage',\n ),\n },\n ];\n\n return (\n \n \n \n \n \n {t('addProtectedEnvironment.header.text')}\n \n \n {isLoading() ? (\n \n ) : (\n <>\n \n
\n
\n \n {t('addProtectedEnvironment.page.title', {\n name: peIntegration?.name,\n })}\n \n
\n \n
\n
\n
\n addProtectedEnvironment()}\n >\n {t('addProtectedEnvironment.buttons.add.label')}\n \n \n
\n \n \n \n \n \n )}\n
\n
\n );\n};\n\nexport default AddProtectedEnvironment;\n","import AddProtectedEnvironment from './AddProtectedEnvironment';\n\nexport default AddProtectedEnvironment;\n","import React, { useEffect, useState } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { Button, Card, Heading, Loading } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\nimport { useAppDispatch } from '@hooks/redux';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport ProtectedEnvironmentsForm from '@codeDelivery/components/ProtectedEnvironmentsForm';\nimport alerts from '@state/ui/alerts';\nimport { useListGroupsV1 } from '@services/cd4pe/groups';\nimport {\n useBulkCreateApprovalGroupsV2,\n useBulkDeleteApprovalGroupsV2,\n useGetPeIntegrationV2,\n useListProtectedEnvironmentsV2,\n} from '@services/cd4pe/peIntegrations';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport PageLayout from '@components/PageLayout';\nimport Cd4peError from '@components/Cd4peError';\nimport { Cd4peApiError } from '@utils/api/cd4pe';\nimport { LINKS } from 'src/routes';\n\nconst EditProtectedEnvironment = () => {\n const workspaceId = useWorkspaceDomain();\n const workspaceName = useWorkspaceName();\n const navigate = useNavigate();\n const { peId: peIntegrationId } = useParams<{ peId: string }>();\n const { envName: environName } = useParams<{ envName: string }>();\n const [selectedData, setSelectedData] = useState([]);\n const [error, setError] = useState(null);\n const { t } = useTranslation('codeDelivery');\n const appDispatch = useAppDispatch();\n\n const navigateToPeList = () =>\n navigate(\n LINKS.settings.listPuppetEnterprise({\n path: { workspace: workspaceName },\n }),\n );\n\n const {\n isLoading: isLoadingGroups,\n error: groupsError,\n data: groups,\n } = useListGroupsV1({ workspaceId });\n\n const {\n isLoading: peIntegrationLoading,\n error: peIntegrationError,\n data: peIntegration,\n } = useGetPeIntegrationV2({\n peIntegrationId: peIntegrationId!,\n });\n\n const { isLoading, data: selectedGroups } = useListProtectedEnvironmentsV2({\n peIntegrationId: peIntegrationId!,\n });\n\n const derivedGroups =\n groups?.groups?.map((d) =>\n selectedData.includes(d.name) ? { ...d, selected: true } : d,\n ) ?? [];\n\n const deletedGroups = derivedGroups\n .filter((g) => !selectedData.includes(g.name))\n .map(({ name }) => name);\n\n const createApprovalGroups = useBulkCreateApprovalGroupsV2();\n const deleteApprovalGroups = useBulkDeleteApprovalGroupsV2();\n\n const onSubmit = async () => {\n try {\n await createApprovalGroups.mutateAsync({\n peIntegrationId: peIntegrationId!,\n environmentName: environName!,\n requestBody: { approvalGroupNames: selectedData },\n });\n if (deletedGroups.length > 0) {\n await deleteApprovalGroups.mutateAsync({\n peIntegrationId: peIntegrationId!,\n environmentName: environName!,\n requestBody: { approvalGroupNames: deletedGroups },\n });\n }\n navigateToPeList();\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('editProtectedEnvironment.alert.success', {\n name: peIntegration?.name,\n environment: environName,\n }),\n }),\n );\n } catch (e) {\n setError(e as Cd4peApiError);\n }\n };\n\n useEffect(() => {\n if (selectedGroups && environName) {\n const environment =\n selectedGroups.protectedEnvironments?.filter(\n (pe) => pe.environmentName === environName,\n ) ?? [];\n\n environment.forEach((env) => {\n setSelectedData(env.approvalGroups.map(({ groupName }) => groupName));\n });\n }\n }, [selectedGroups, environName]);\n\n const breadcrumbs = [\n { displayName: workspaceName },\n {\n displayName: t('addProtectedEnvironment.breadcrumbs.settingsPage'),\n linkDestination: LINKS.settings.workspace({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t('addProtectedEnvironment.breadcrumbs.peIntegrationsPage'),\n linkDestination: LINKS.settings.listPuppetEnterprise({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t(\n 'editProtectedEnvironment.breadcrumbs.editProtectedEnvironmentPage',\n ),\n },\n ];\n\n return (\n \n \n \n \n \n {t('editProtectedEnvironment.header.text')}\n \n \n \n
\n {isLoading || peIntegrationLoading ? (\n \n ) : (\n <>\n \n {t('editProtectedEnvironment.page.title', {\n name: peIntegration?.name,\n })}\n \n \n \n )}\n
\n
\n\n
\n \n {t('editProtectedEnvironment.buttons.add.label')}\n \n \n
\n \n \n \n
\n
\n );\n};\n\nexport default EditProtectedEnvironment;\n","import EditProtectedEnvironment from './EditProtectedEnvironment';\n\nexport default EditProtectedEnvironment;\n","import React, { useState } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Link, useNavigate, useParams } from 'react-router-dom';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport AutoIntegrationForm, {\n AutoIntegrationFormOnChange,\n} from '@codeDelivery/components/AutoIntegrationForm';\nimport { Link as PDLink, Loading, Heading } from '@puppet/react-components';\nimport {\n useGetPeIntegrationV2,\n useRegenerateTokenV2,\n} from '@services/cd4pe/peIntegrations';\nimport PageLayout from '@components/PageLayout';\nimport alerts from '@state/ui/alerts';\nimport { useAppDispatch } from '@hooks/redux';\nimport Cd4peError from '@components/Cd4peError';\nimport { LINKS } from 'src/routes';\n\nconst DAYS_IN_A_MONTH = Math.ceil(365 / 12);\n\nconst RegenerateAuthToken = () => {\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const appDispatch = useAppDispatch();\n const navigate = useNavigate();\n const { peId: peIntegrationId } = useParams<{ peId: string }>();\n const [formData, setFormData] = useState({\n PE_USERNAME: '',\n PASSWORD: '',\n TOKEN_LIFETIME: '6',\n });\n\n const navigateToPeList = () =>\n navigate(\n LINKS.settings.listPuppetEnterprise({\n path: { workspace: workspaceName },\n }),\n );\n\n const settingsPeListPath = LINKS.settings.editPuppetEnterprise({\n path: { workspace: workspaceName, peId: peIntegrationId },\n });\n\n const {\n isLoading,\n error,\n data: peIntegration,\n } = useGetPeIntegrationV2({ peIntegrationId: peIntegrationId! });\n\n const regenerateToken = useRegenerateTokenV2();\n\n const onSubmit = async () =>\n regenerateToken.mutate(\n {\n peIntegrationId: peIntegrationId!,\n requestBody: {\n username: formData.PE_USERNAME,\n password: formData.PASSWORD,\n tokenLifetime: `${Math.ceil(\n DAYS_IN_A_MONTH * Number(formData.TOKEN_LIFETIME),\n )}d`,\n },\n },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('regenerateAuthToken.alerts.success'),\n }),\n );\n navigateToPeList();\n },\n },\n );\n\n const onAutoFormChange: AutoIntegrationFormOnChange = (fieldName, values) => {\n setFormData({ ...formData, [fieldName]: values[fieldName] || '' });\n };\n\n const breadcrumbs = [\n { displayName: workspaceName },\n {\n displayName: t('regenerateAuthToken.breadcrumbs.settingsPage'),\n linkDestination: LINKS.settings.workspace({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t('regenerateAuthToken.breadcrumbs.peIntegrationsPage'),\n linkDestination: LINKS.settings.listPuppetEnterprise({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t('regenerateAuthToken.breadcrumbs.regenerateAuthTokenPage'),\n },\n ];\n\n return (\n \n \n \n \n \n {t('editPeIntegration.header.text')}\n \n \n {isLoading && (\n \n )}\n {peIntegration && (\n navigateToPeList()}\n saveLoading={regenerateToken.isLoading}\n saveError={regenerateToken.error}\n submitLabel={t(\n `regenerateAuthToken.autoIntegrationForm.submitButton`,\n )}\n regenerateToken\n infoHeader={t(\n 'regenerateAuthToken.autoIntegrationForm.authSection.infoHeader',\n )}\n infoBody={\n \n \n \n }\n />\n )}\n \n \n \n );\n};\n\nexport default RegenerateAuthToken;\n","import RegenerateAuthToken from './RegenerateAuthToken';\n\nexport default RegenerateAuthToken;\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport {\n VcsV1Service,\n MutationHook,\n toUseQueryResponse,\n QueryHook,\n handleQueryRequest,\n Cd4peError,\n Cd4peApiError,\n} from '@utils/api/cd4pe';\n\nconst STATUS_PREFIX_QUERY_TAG = 'statusPrefix';\nconst LIST_INTEGRATIONS_QUERY_TAG = 'listIntegrations';\nconst LIST_BRANCHES_QUERY_TAG = 'listBranches';\nconst LIST_COMMITS_QUERY_TAG = 'listCommits';\n\n/**\n * useConnectBitbucketServerV1\n */\n\ntype UseConnectBitbucketServerV1 = MutationHook<\n typeof VcsV1Service,\n 'connectBitbucketServerV1',\n Cd4peApiError\n>;\n\nexport type UseConnectBitbucketServerV1Result =\n ReturnType;\n\nexport const useConnectBitbucketServerV1: UseConnectBitbucketServerV1 = () =>\n useMutation((payload) =>\n handleQueryRequest(VcsV1Service.connectBitbucketServerV1(payload)),\n );\n\n/**\n * useConnectGithubEnterpriseV1\n */\n\ntype UseConnectGithubEnterpriseV1 = MutationHook<\n typeof VcsV1Service,\n 'connectGithubEnterpriseV1',\n Cd4peApiError\n>;\n\nexport type UseConnectGithubEnterpriseV1Result =\n ReturnType;\n\nexport const useConnectGithubEnterpriseV1: UseConnectGithubEnterpriseV1 = () =>\n useMutation((payload) =>\n handleQueryRequest(VcsV1Service.connectGithubEnterpriseV1(payload)),\n );\n\n/**\n * useConnectGitlabV1\n */\n\ntype UseConnectGitlabV1 = MutationHook<\n typeof VcsV1Service,\n 'connectGitlabV1',\n Cd4peApiError\n>;\n\nexport type UseConnectGitlabV1Result = ReturnType;\n\nexport const useConnectGitlabV1: UseConnectGitlabV1 = () =>\n useMutation((payload) =>\n handleQueryRequest(VcsV1Service.connectGitlabV1(payload)),\n );\n\n/**\n * useCreateBuildStatusPrefixV1\n */\n\ntype UseCreateBuildStatusPrefixV1 = MutationHook<\n typeof VcsV1Service,\n 'createBuildStatusPrefixV1',\n Cd4peApiError\n>;\n\nexport type UseCreateBuildStatusPrefixV1Result =\n ReturnType;\n\nexport const useCreateBuildStatusPrefixV1: UseCreateBuildStatusPrefixV1 =\n () => {\n const queryClient = useQueryClient();\n\n return useMutation(\n (payload) =>\n handleQueryRequest(VcsV1Service.createBuildStatusPrefixV1(payload)),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([STATUS_PREFIX_QUERY_TAG]);\n },\n },\n );\n };\n\n/**\n * useGetBuildStatusPrefixV1\n */\n\ntype UseGetBuildStatusPrefixV1 = QueryHook<\n typeof VcsV1Service,\n 'getBuildStatusPrefixV1',\n Cd4peApiError\n>;\n\nexport type UseGetBuildStatusPrefixV1Result =\n ReturnType;\n\nexport const useGetBuildStatusPrefixV1: UseGetBuildStatusPrefixV1 = (payload) =>\n useQuery([STATUS_PREFIX_QUERY_TAG, payload.workspaceId], async () =>\n handleQueryRequest(VcsV1Service.getBuildStatusPrefixV1(payload)),\n );\n\n/**\n * useDeleteBuildStatusPrefixV1\n */\n\ntype UseDeleteBuildStatusPrefixV1 = MutationHook<\n typeof VcsV1Service,\n 'deleteBuildStatusPrefixV1',\n Cd4peApiError\n>;\n\nexport type UseDeleteBuildStatusPrefixV1Result =\n ReturnType;\n\nexport const useDeleteBuildStatusPrefixV1: UseDeleteBuildStatusPrefixV1 =\n () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(VcsV1Service.deleteBuildStatusPrefixV1(payload)),\n {\n onSuccess: (_, payload) => {\n /*\n In this case we cant simply invalidate the query because the next get request will\n return a 404 error and the cache will not be updated correctly. \n */\n queryClient.setQueryData(\n [STATUS_PREFIX_QUERY_TAG, payload.workspaceId],\n null,\n );\n queryClient.invalidateQueries([\n STATUS_PREFIX_QUERY_TAG,\n payload.workspaceId,\n ]);\n },\n },\n );\n };\n\n/*\n * useListIntegrationsV1\n */\n\ntype UseListIntegrationsV1 = QueryHook<\n typeof VcsV1Service,\n 'listIntegrationsV1',\n Cd4peError\n>;\n\nexport const useListIntegrationsV1: UseListIntegrationsV1 = (payload) =>\n useQuery([LIST_INTEGRATIONS_QUERY_TAG, payload.workspaceId], async () =>\n handleQueryRequest(VcsV1Service.listIntegrationsV1(payload)),\n );\n\n/**\n * useDeleteIntegrationV1\n */\n\ntype UseDeleteIntegrationV1 = MutationHook<\n typeof VcsV1Service,\n 'deleteIntegrationV1'\n>;\n\nexport type UseDeleteIntegrationResult = ReturnType;\n\nexport const useDeleteIntegrationV1: UseDeleteIntegrationV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) => toUseQueryResponse(VcsV1Service.deleteIntegrationV1(payload)),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n LIST_INTEGRATIONS_QUERY_TAG,\n payload.workspaceId,\n ]);\n },\n },\n );\n};\n\n/**\n * useConnectGitHubV1\n */\ntype UseConnectGitHubV1 = MutationHook<\n typeof VcsV1Service,\n 'connectGitHubV1',\n Cd4peError\n>;\n\nexport type UseConnectGitHubV1Result = ReturnType;\n\nexport const useConnectGitHubV1: UseConnectGitHubV1 = () =>\n useMutation((payload) =>\n handleQueryRequest(VcsV1Service.connectGitHubV1(payload)),\n );\n\n/**\n * useConnectAzureDevOpsV1\n */\ntype UseConnectAzureDevOpsV1 = MutationHook<\n typeof VcsV1Service,\n 'connectAzureDevopsV1',\n Cd4peError\n>;\n\nexport type UseConnectAzureDevOpsV1Result = ReturnType;\n\nexport const useConnectAzureDevOpsV1: UseConnectAzureDevOpsV1 = () =>\n useMutation((payload) =>\n handleQueryRequest(VcsV1Service.connectAzureDevopsV1(payload)),\n );\n\n/**\n * useConnectBitbucketCloudV1\n */\ntype UseConnectBitbucketCloudV1 = MutationHook<\n typeof VcsV1Service,\n 'connectBitbucketCloudV1',\n Cd4peError\n>;\n\nexport type UseConnectBitbucketCloudV1Result =\n ReturnType;\n\nexport const useConnectBitbucketCloudV1: UseConnectBitbucketCloudV1 = () =>\n useMutation((payload) =>\n handleQueryRequest(VcsV1Service.connectBitbucketCloudV1(payload)),\n );\n\n/**\n * useConnectAzureDevOpsServerV1\n */\n\ntype UseConnectAzureDevOpsServerV1 = MutationHook<\n typeof VcsV1Service,\n 'connectAzureDevOpsServerV1',\n Cd4peApiError\n>;\n\nexport const useConnectAzureDevOpsServerV1: UseConnectAzureDevOpsServerV1 =\n () =>\n useMutation((payload) =>\n handleQueryRequest(VcsV1Service.connectAzureDevOpsServerV1(payload)),\n );\n\n/**\n * useListBranchesV1\n */\n\ntype UseListBranchesV1 = QueryHook<\n typeof VcsV1Service,\n 'listBranchesV1',\n Cd4peApiError\n>;\n\nexport type UseListBranchesV1Result = ReturnType;\n\nexport const useListBranchesV1: UseListBranchesV1 = (payload, options) =>\n useQuery(\n [\n LIST_BRANCHES_QUERY_TAG,\n payload.workspaceId,\n payload.provider,\n payload.name,\n payload.project,\n payload.organization,\n payload.prefix,\n ],\n async () => handleQueryRequest(VcsV1Service.listBranchesV1(payload)),\n options,\n );\n\n/**\n * useListBranchesV1\n */\n\ntype UseListCommitsV1 = QueryHook<\n typeof VcsV1Service,\n 'listCommitsV1',\n Cd4peApiError\n>;\n\nexport type UseListCommitsV1Result = ReturnType;\n\nexport const useListCommitsV1: UseListCommitsV1 = (payload, options) =>\n useQuery(\n [\n LIST_COMMITS_QUERY_TAG,\n payload.workspaceId,\n payload.provider,\n payload.branch,\n payload.name,\n payload.project,\n payload.organization,\n ],\n async () => handleQueryRequest(VcsV1Service.listCommitsV1(payload)),\n options,\n );\n","import CommonForm from '@components/CommonForm';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Alert, Button, Link, Text } from '@puppet/react-components';\nimport { VcsIntegrationV1, VcsProviderV1 } from '@puppet/cd4pe-client-ts';\nimport getProviderDisplayName from '@utils/vcs/displayNameHelper';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport * as Provider from '@utils/vcs/providerConsts';\nimport { createSearchParams } from 'react-router-dom';\n\nconst getDocsLink = (provider: VcsProviderV1) => {\n switch (provider) {\n case Provider.AZURE_DEV_OPS:\n return docsLinks().integrateAzureDevOps;\n case Provider.BITBUCKET:\n return docsLinks().integrateBitbucketCloud;\n case Provider.GITHUB:\n return docsLinks().integrateGithub;\n default:\n return null;\n }\n};\n\nconst OAuthForm = ({\n integration,\n onCancel,\n nested = false,\n}: {\n integration: VcsIntegrationV1;\n onCancel: () => void;\n nested?: boolean;\n}) => {\n const { t } = useTranslation('codeDelivery');\n const name = getProviderDisplayName(integration.provider);\n\n const getRedirectUrl = () => {\n if (\n integration.clientId &&\n integration.oauthRedirectUrl &&\n integration.scopes &&\n integration.state &&\n integration.authorizeUrl\n ) {\n const searchParams = createSearchParams([\n ['client_id', integration.clientId],\n ['redirect_uri', integration.oauthRedirectUrl],\n ['scope', integration.scopes],\n ['state', integration.state],\n ]);\n\n if (integration.responseType) {\n searchParams.append('response_type', integration.responseType);\n }\n\n return new URL(`${integration.authorizeUrl}?${searchParams.toString()}`);\n }\n return null;\n };\n\n const getOAuthButton = (redirectUrl: URL) => (\n <>\n
\n \n {t('addSourceControl.oauth.form.credentials.label', { name })}\n \n
\n \n \n );\n\n const getOAuthError = () => (\n \n {t('addSourceControl.oauth.form.error.title', { name })}\n \n {t(`addSourceControl.oauth.form.error.text.${integration.provider}`)}\n \n \n {t('addSourceControl.oauth.form.link.text', { name })}\n \n \n );\n\n const getOAuthBody = () => {\n const redirectUrl = getRedirectUrl();\n return redirectUrl ? getOAuthButton(redirectUrl) : getOAuthError();\n };\n\n if (nested) {\n return getOAuthBody();\n }\n\n return (\n \n \n \n

\n {t('addSourceControl.credentials.header')}\n

\n {getOAuthBody()}\n
\n
\n \n );\n};\n\nexport default OAuthForm;\n","import CommonForm from '@components/CommonForm';\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Form, RadioButton } from '@puppet/react-components';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useConnectAzureDevOpsServerV1 } from '@services/cd4pe/vcs';\nimport * as Provider from '@utils/vcs/providerConsts';\nimport getProviderDisplayName from '@utils/vcs/displayNameHelper';\nimport Cd4peError from '@components/Cd4peError';\nimport {\n ConnectAzureDevOpsServerRequestV1,\n VcsIntegrationV1,\n} from '@puppet/cd4pe-client-ts';\nimport OAuthForm from '@codeDelivery/views/AddSourceControl/components/forms/OAuthForm';\n\nconst AzureDevOpsForm = ({\n integration,\n onSuccess,\n onCancel,\n}: {\n integration: VcsIntegrationV1;\n onSuccess: (provider: string) => void;\n onCancel: () => void;\n}) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const [showToken, setShowToken] = useState(false);\n const [certType, setCertType] = useState<'standard' | 'custom'>('custom');\n const [onPrem, setOnPrem] = useState(false);\n const [formValues, setFormValues] =\n useState({\n host: '',\n token: '',\n caCertificate: '',\n });\n\n const connectAzureDevOpsServer = useConnectAzureDevOpsServerV1();\n\n const changeCertType = (type: 'standard' | 'custom') => {\n setFormValues({ ...formValues, caCertificate: '' });\n setCertType(type);\n };\n\n const onSubmit = async () => {\n if (certType === 'standard') {\n delete formValues.caCertificate;\n }\n\n const requestBody = {\n ...formValues,\n host: formValues.host?.trim(), // the ? avoids errors when host is undefined\n };\n\n return connectAzureDevOpsServer.mutate(\n {\n workspaceId,\n requestBody,\n },\n {\n onSuccess: () => {\n onSuccess(getProviderDisplayName(Provider.AZURE_DEV_OPS));\n },\n },\n );\n };\n\n return (\n \n setFormValues(values as ConnectAzureDevOpsServerRequestV1)\n }\n submittable={onPrem}\n cancellable\n className=\"azure-dev-ops-server-form\"\n submitLabel={t('addSourceControl.form.submitButton')}\n submitting={connectAzureDevOpsServer.isLoading}\n onSubmit={onSubmit}\n onCancel={onCancel}\n >\n \n \n

\n {t('addSourceControl.credentials.header')}\n

\n
\n setOnPrem(false)}\n />\n setOnPrem(true)}\n />\n
\n {onPrem ? (\n <>\n
\n \n
\n
\n setShowToken(!showToken)}\n name=\"token\"\n label={t('addSourceControl.form.token.label')}\n required\n />\n
\n
\n changeCertType('standard')}\n />\n changeCertType('custom')}\n />\n
\n {certType === 'custom' && (\n
\n \n
\n )}\n \n ) : (\n \n )}\n
\n
\n
\n \n
\n \n );\n};\n\nexport default AzureDevOpsForm;\n","import CommonForm from '@components/CommonForm';\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Form, RadioButton } from '@puppet/react-components';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { ConnectGitlabVcsIntegrationRequestV1 } from '@utils/api/cd4pe';\nimport { useConnectGitlabV1 } from '@services/cd4pe/vcs';\nimport getProviderDisplayName from '@utils/vcs/displayNameHelper';\nimport * as Provider from '@utils/vcs/providerConsts';\nimport Cd4peError from '@components/Cd4peError';\n\ntype GitlabFormValues = {\n host: string | undefined;\n token: string | undefined;\n caCertificate?: string;\n httpClone?: boolean;\n sshUser?: string;\n sshPort?: number | undefined;\n};\n\ntype CloneMethod = 'ssh' | 'https';\n\nconst GitlabForm = ({\n onSuccess,\n onCancel,\n}: {\n onSuccess: (provider: string) => void;\n onCancel: () => void;\n}) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const [showToken, setShowToken] = useState(false);\n const [cloneMethod, setCloneMethod] = useState('ssh');\n const [formValues, setFormValues] = useState({\n host: '',\n token: '',\n caCertificate: '',\n httpClone: false,\n sshUser: '',\n });\n\n const connectGitlab = useConnectGitlabV1();\n\n const changeCloneMethod = (method: CloneMethod) => {\n setCloneMethod(method);\n setFormValues({\n ...formValues,\n caCertificate: '',\n httpClone: method === 'https',\n sshUser: '',\n sshPort: undefined,\n });\n };\n\n const onSubmit = async () => {\n const requestBody = {\n ...formValues,\n host: formValues.host?.trim(), // the ? avoids errors when host is undefined\n sshPort: formValues.sshPort && Number(formValues.sshPort),\n } as ConnectGitlabVcsIntegrationRequestV1;\n\n if (cloneMethod === 'ssh' || requestBody.caCertificate === '') {\n delete requestBody.caCertificate;\n }\n\n return connectGitlab.mutate(\n {\n workspaceId,\n requestBody,\n },\n {\n onSuccess: () => {\n onSuccess(getProviderDisplayName(Provider.GITLAB));\n },\n },\n );\n };\n\n return (\n setFormValues(values)}\n submittable\n cancellable\n className=\"git-lab-form\"\n submitLabel={t('addSourceControl.form.submitButton')}\n submitting={connectGitlab.isLoading}\n onSubmit={onSubmit}\n onCancel={onCancel}\n >\n \n \n

\n {t('addSourceControl.credentials.header')}\n

\n
\n \n
\n
\n setShowToken(!showToken)}\n name=\"token\"\n label={t('addSourceControl.gitlab.form.token.label')}\n required\n />\n
\n
\n changeCloneMethod('ssh')}\n />\n changeCloneMethod('https')}\n />\n
\n {cloneMethod === 'https' ? (\n
\n \n
\n ) : (\n
\n \n \n
\n )}\n
\n
\n
\n \n
\n \n );\n};\n\nexport default GitlabForm;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport CommonForm from '@components/CommonForm';\nimport { Text, Alert } from '@puppet/react-components';\nimport { useNavigate } from 'react-router-dom';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { LINKS } from 'src/routes';\n\nconst AddSourceControlBlankForm = ({ error }: { error?: boolean }) => {\n const { t } = useTranslation('codeDelivery');\n const navigate = useNavigate();\n const workspace = useWorkspaceName();\n const navigateToSettings = () =>\n navigate(LINKS.settings.listSourceControl({ path: { workspace } }));\n\n return (\n \n \n \n
\n

\n {t('addSourceControl.credentials.header')}\n

\n {error ? (\n \n \n \n ) : (\n {t('addSourceControl.credentials.body')}\n )}\n
\n
\n
\n \n );\n};\n\nexport default AddSourceControlBlankForm;\n\nAddSourceControlBlankForm.defaultProps = {\n error: false,\n};\n","import CommonForm from '@components/CommonForm';\nimport React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Form, RadioButton } from '@puppet/react-components';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useConnectGithubEnterpriseV1 } from '@services/cd4pe/vcs';\nimport { ConnectGithubEnterpriseVcsIntegrationRequestV1 } from '@utils/api/cd4pe';\nimport * as Provider from '@utils/vcs/providerConsts';\nimport getProviderDisplayName from '@utils/vcs/displayNameHelper';\nimport Cd4peError from '@components/Cd4peError';\n\nconst GitHubEnterpriseForm = ({\n onSuccess,\n onCancel,\n}: {\n onSuccess: (provider: string) => void;\n onCancel: () => void;\n}) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const [showToken, setShowToken] = useState(false);\n const [certType, setCertType] = useState<'standard' | 'custom'>('custom');\n const [formValues, setFormValues] =\n useState({\n host: '',\n token: '',\n caCertificate: '',\n });\n\n const connectGithubEnterprise = useConnectGithubEnterpriseV1();\n\n const changeCertType = (type: 'standard' | 'custom') => {\n setFormValues({ ...formValues, caCertificate: '' });\n setCertType(type);\n };\n\n const onSubmit = async () => {\n // in the case of a 'standard' cert type we dont use the caCertificate\n // field so no need to send it down\n if (certType === 'standard') {\n delete formValues.caCertificate;\n }\n\n const requestBody = {\n ...formValues,\n host: formValues.host?.trim(), // the ? avoids errors when host is undefined\n };\n\n return connectGithubEnterprise.mutate(\n {\n workspaceId,\n requestBody,\n },\n {\n onSuccess: () => {\n onSuccess(getProviderDisplayName(Provider.GITHUB_ENTERPRISE));\n },\n },\n );\n };\n\n return (\n \n setFormValues(values as ConnectGithubEnterpriseVcsIntegrationRequestV1)\n }\n submittable\n cancellable\n className=\"git-hub-enterprise-form\"\n submitLabel={t('addSourceControl.form.submitButton')}\n submitting={connectGithubEnterprise.isLoading}\n onSubmit={onSubmit}\n onCancel={onCancel}\n >\n \n \n

\n {t('addSourceControl.credentials.header')}\n

\n
\n \n
\n
\n setShowToken(!showToken)}\n name=\"token\"\n label={t('addSourceControl.form.token.label')}\n required\n />\n
\n
\n changeCertType('standard')}\n />\n changeCertType('custom')}\n />\n
\n {certType === 'custom' && (\n
\n \n
\n )}\n
\n
\n
\n \n
\n \n );\n};\n\nexport default GitHubEnterpriseForm;\n","import CommonForm from '@components/CommonForm';\nimport { useTranslation } from 'react-i18next';\nimport { Form, RadioButton } from '@puppet/react-components';\nimport React, { useState } from 'react';\nimport { CommonFormChangeFunction } from '@components/CommonForm/CommonForm';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useConnectBitbucketServerV1 } from '@services/cd4pe/vcs';\nimport * as Provider from '@utils/vcs/providerConsts';\nimport getProviderDisplayName from '@utils/vcs/displayNameHelper';\nimport Cd4peError from '@components/Cd4peError';\n\ninterface FormVals {\n host: string;\n username: string;\n password: string;\n caCertificate?: string;\n sshPort?: number;\n sshUrl?: string;\n sshUser?: string;\n}\ninterface Props {\n startingValues?: FormVals;\n onSuccess: (provider: string) => void;\n onCancel: () => void;\n}\n\nconst defaultProps = {\n startingValues: {\n host: '',\n username: '',\n password: '',\n caCertificate: '',\n sshPort: undefined,\n sshUrl: undefined,\n sshUser: undefined,\n } as FormVals,\n};\n\nconst BitBucketServerForm = ({\n startingValues,\n onSuccess,\n onCancel,\n}: Props) => {\n const [formVals, setFormVals] = useState(\n startingValues || defaultProps.startingValues,\n );\n const [customCaCert, setCustomCaCert] = useState(\n startingValues?.caCertificate !== undefined &&\n startingValues?.caCertificate === '',\n );\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const bitBucketServerConnect = useConnectBitbucketServerV1();\n\n const onSubmit = async () => {\n const requestBody = {\n ...formVals,\n host: formVals.host?.trim(), // the ? avoids errors when host is undefined\n };\n\n // in the case where we are not using a custom ca cert we dont use the\n // caCertificate field so no need to send it down\n if (!customCaCert) {\n delete requestBody.caCertificate;\n }\n\n return bitBucketServerConnect.mutate(\n {\n workspaceId,\n requestBody,\n },\n {\n onSuccess: () => {\n onSuccess(getProviderDisplayName(Provider.BITBUCKET_SERVER));\n },\n },\n );\n };\n\n const onChange: CommonFormChangeFunction = (e, values) => {\n let updatedVal = values[e];\n\n if (e === 'sshPort') {\n updatedVal = Number(updatedVal);\n }\n\n setFormVals((prev) => {\n return { ...prev, [e]: updatedVal };\n });\n };\n\n return (\n \n \n \n

\n {t('addSourceControl.credentials.header')}\n

\n
\n \n
\n
\n \n
\n
\n \n
\n
\n setCustomCaCert(false)}\n />\n setCustomCaCert(true)}\n />\n
\n {customCaCert ? (\n
\n \n
\n ) : null}\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n \n );\n};\n\nexport default BitBucketServerForm;\n\nBitBucketServerForm.defaultProps = defaultProps;\n","import { VcsIntegrationV1 } from '@puppet/cd4pe-client-ts';\nimport * as Provider from '@utils/vcs/providerConsts';\nimport React from 'react';\nimport AzureDevOpsForm from './forms/AzureDevOpsForm';\nimport GitlabForm from './forms/GitlabForm';\nimport OAuthForm from './forms/OAuthForm';\nimport AddSourceControlBlankForm from './forms/AddSourceControlBlankForm';\nimport GitHubEnterpriseForm from './forms/GitHubEnterpriseForm';\nimport BitBucketServerForm from './forms/BitBucketServerForm';\n\ntype Props = {\n integration?: VcsIntegrationV1 | undefined;\n onSuccess: (provider: string) => void;\n onCancel: () => void;\n};\n\nconst AddSourceControlForm = ({ integration, onSuccess, onCancel }: Props) => {\n if (!integration) {\n return ;\n }\n\n switch (integration.provider) {\n case Provider.BITBUCKET_SERVER:\n return ;\n case Provider.GITHUB_ENTERPRISE:\n return ;\n case Provider.GITLAB:\n return ;\n case Provider.AZURE_DEV_OPS:\n return (\n \n );\n case Provider.BITBUCKET:\n case Provider.GITHUB:\n return ;\n default:\n return ;\n }\n};\n\nAddSourceControlForm.defaultProps = {\n integration: undefined,\n};\n\nexport default AddSourceControlForm;\n","import Breadcrumbs from '@components/Breadcrumbs';\nimport { Heading } from '@puppet/react-components';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport PageLayout from '@components/PageLayout';\nimport { LINKS } from 'src/routes';\n\nconst AddSourceControlHeader = () => {\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const breadcrumbs = [\n { displayName: workspaceName },\n {\n displayName: t('addSourceControl.breadcrumbs.settingsPage'),\n linkDestination: LINKS.settings.workspace({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t('addSourceControl.breadcrumbs.sourceControlPage'),\n linkDestination: LINKS.settings.listSourceControl({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t('addSourceControl.breadcrumbs.addSourceControlPage'),\n },\n ];\n\n return (\n \n \n \n \n {t('addSourceControl.header.text')} \n \n );\n};\n\nexport default AddSourceControlHeader;\n","import AddSourceControl from './AddSourceControl';\n\nexport default AddSourceControl;\n","import CommonForm from '@components/CommonForm';\nimport React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Form, Loading, Text } from '@puppet/react-components';\nimport Definitions from '@components/Definitions';\nimport { useListIntegrationsV1 } from '@services/cd4pe/vcs';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport getProviderDisplayName from '@utils/vcs/displayNameHelper';\nimport { VcsProviderV1 } from '@puppet/cd4pe-client-ts';\nimport PageLayout from '@components/PageLayout';\nimport Cd4peError from '@components/Cd4peError';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { useNavigate } from 'react-router-dom';\nimport { LINKS } from 'src/routes';\nimport AddSourceControlForm from './components/AddSourceControlForm';\nimport AddSourceControlHeader from './components/AddSourceControlHeader';\n\ntype SelectOptionArray = Array<{\n value: string;\n label: string;\n disabled: boolean;\n}>;\n\nconst AddSourceControl = () => {\n const { t } = useTranslation('codeDelivery');\n const [sourceControl, setSourceControl] = useState(\n undefined,\n );\n const [sourceControlOptions, setSourceControlOptions] =\n useState([]);\n const workspaceId = useWorkspaceDomain();\n const { data, isLoading, error } = useListIntegrationsV1({ workspaceId });\n const appDispatch = useAppDispatch();\n const workspaceName = useWorkspaceName();\n const navigate = useNavigate();\n const navigateToSettings = () =>\n navigate(\n LINKS.settings.listSourceControl({ path: { workspace: workspaceName } }),\n );\n\n const onSuccess = (provider: string) => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('addSourceControl.alerts.connect.success', {\n provider,\n }),\n }),\n );\n navigateToSettings();\n };\n\n useEffect(() => {\n if (data?.vcsIntegrations) {\n const options: SelectOptionArray = [];\n data.vcsIntegrations.forEach(({ provider, connected }) =>\n options.push({\n value: provider,\n label: getProviderDisplayName(provider),\n disabled: connected as boolean,\n }),\n );\n setSourceControlOptions(options);\n }\n }, [data]);\n\n if (isLoading) {\n return ;\n }\n\n return (\n \n \n \n setSourceControl(values[e])}\n >\n \n \n

\n {t('addSourceControl.form.header')}\n

\n \n \n \n \n
\n \n \n \n

\n {t('addSourceControl.form.info.header')}\n

\n \n {t('addSourceControl.form.info.body')}\n \n
\n
\n
\n
\n \n \n v.provider === sourceControl,\n )}\n onSuccess={onSuccess}\n onCancel={navigateToSettings}\n />\n \n
\n
\n );\n};\n\nexport default AddSourceControl;\n","import SourceControlIntegration from './SourceControlIntegration';\n\nexport default SourceControlIntegration;\n","import { Card, Heading, Icon, Text } from '@puppet/react-components';\nimport getIconType from '@utils/vcs/iconHelper';\nimport getProviderDisplayName from '@utils/vcs/displayNameHelper';\nimport React from 'react';\nimport { VcsProviderV1 } from '@utils/api/cd4pe';\nimport { useTranslation } from 'react-i18next';\nimport { useDeleteIntegrationV1 } from '@services/cd4pe/vcs';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport alerts from '@state/ui/alerts';\nimport { useAppDispatch } from '@hooks/redux';\nimport { VcsIntegrationV1 } from '@puppet/cd4pe-client-ts';\nimport * as Provider from '@utils/vcs/providerConsts';\n\nconst isOAuthIntegration = (\n vcsProvider: VcsProviderV1,\n host: string | undefined,\n) =>\n (!host && vcsProvider === Provider.AZURE_DEV_OPS) ||\n vcsProvider === Provider.BITBUCKET ||\n vcsProvider === Provider.GITHUB;\n\nconst SourceControlIntegration = ({\n integration,\n}: {\n integration: VcsIntegrationV1;\n}) => {\n const { t } = useTranslation('codeDelivery');\n const appDispatch = useAppDispatch();\n const workspaceId = useWorkspaceDomain();\n const deleteIntegration = useDeleteIntegrationV1();\n const {\n provider,\n host,\n connectedAccount,\n cloneOverHttp,\n sshPort,\n sshUser,\n connected,\n } = integration;\n\n const onDelete = () =>\n deleteIntegration.mutate(\n { workspaceId, provider },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('sourceControl.integrations.remove.success.alert', {\n name: getProviderDisplayName(provider),\n }),\n }),\n );\n },\n onError: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Error',\n message: t('sourceControl.integrations.remove.error.alert', {\n name: getProviderDisplayName(provider),\n }),\n }),\n );\n },\n },\n );\n\n return (\n \n \n \n
{getProviderDisplayName(provider)}
\n
\n \n {host && (\n
\n \n {t('sourceControl.integrations.host')}\n \n {host}\n
\n )}\n {connected && (\n
\n \n {t('sourceControl.integrations.cloneMethod')}\n \n {cloneOverHttp ? 'HTTPS' : 'SSH'}\n
\n )}\n {connectedAccount && (\n
\n \n {t('sourceControl.integrations.connectedAccount')}\n \n {connectedAccount}\n
\n )}\n {cloneOverHttp ? (\n
\n \n {isOAuthIntegration(provider, host)\n ? t('sourceControl.integrations.oAuth')\n : t('sourceControl.integrations.pAT')}\n \n
\n ) : (\n <>\n
\n \n {t('sourceControl.integrations.sshUser')}\n \n \n {sshUser || {t('sourceControl.integrations.default')}}\n \n
\n
\n \n {t('sourceControl.integrations.sshPort')}\n \n \n {sshPort || {t('sourceControl.integrations.default')}}\n \n
\n \n )}\n \n );\n};\n\nexport default SourceControlIntegration;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n Icon,\n Form,\n Link,\n TooltipHoverArea,\n Button,\n Heading,\n Text,\n} from '@puppet/react-components';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport {\n useCreateBuildStatusPrefixV1,\n useDeleteBuildStatusPrefixV1,\n useGetBuildStatusPrefixV1,\n} from '@services/cd4pe/vcs';\nimport Cd4peError from '@components/Cd4peError';\n\nconst StatusNotificationPrefix = () => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const { isLoading, error, data } = useGetBuildStatusPrefixV1({ workspaceId });\n const [prefixValue, setPrefixValue] = useState('');\n const [buttonsVisible, setButtonsVisible] = useState(false);\n const [deleteMode, setDeleteMode] = useState(false);\n\n const persistPrefix = useCreateBuildStatusPrefixV1();\n const deletePrefix = useDeleteBuildStatusPrefixV1();\n\n useEffect(() => {\n if (data) {\n setPrefixValue(data.name);\n }\n\n if (!isLoading && error) {\n setPrefixValue('');\n }\n }, [isLoading, error, data]);\n\n const updatePrefixAndButtonState = (newValue: string) => {\n setPrefixValue(newValue);\n setButtonsVisible(false);\n setDeleteMode(false);\n };\n\n const onEdit = () => {\n setButtonsVisible(true);\n };\n\n const onDelete = () => {\n setButtonsVisible(true);\n setDeleteMode(true);\n };\n\n const onCancel = () => {\n updatePrefixAndButtonState(data?.name || '');\n persistPrefix.reset();\n deletePrefix.reset();\n };\n\n const savePrefix = (formData: { prefixValue: string }) => {\n if (deleteMode) {\n deletePrefix.mutate(\n { workspaceId },\n {\n onSuccess: () => {\n updatePrefixAndButtonState('');\n },\n },\n );\n } else {\n persistPrefix.mutate(\n {\n requestBody: {\n workspaceId,\n name: formData.prefixValue,\n },\n },\n {\n onSuccess: () => {\n updatePrefixAndButtonState(formData.prefixValue);\n },\n },\n );\n }\n };\n\n return (\n
\n
\n \n {t('sourceControl.statusNotification.header')}\n \n {t('sourceControl.statusNotification.mainText')}\n
\n \n {t('sourceControl.statusNotification.field.example')}\n \n
\n \n {prefixValue === '' ||\n prefixValue ===\n t('sourceControl.statusNotification.prefixPlaceholder')\n ? t('sourceControl.statusNotification.emptyPrefix')\n : prefixValue}\n \n \n {t('sourceControl.statusNotification.exampleText1')}\n \n \n {t('sourceControl.statusNotification.exampleText2')}\n \n
\n
\n
\n \n savePrefix(formData)\n }\n onCancel={() => onCancel()}\n onChange={(\n e: string | number,\n formValues: { [x: string]: string },\n ) => setPrefixValue(formValues[e])}\n submitType={deleteMode ? 'danger' : 'primary'}\n submitLabel={\n deleteMode\n ? t('sourceControl.statusNotification.button.delete')\n : t('sourceControl.statusNotification.button.save')\n }\n cancelLabel={t('sourceControl.statusNotification.button.cancel')}\n >\n
\n \n
\n \n onEdit()}\n disabled={buttonsVisible}\n loading={isLoading}\n name=\"editPrefix\"\n data-testid=\"editPrefix\"\n />\n \n \n onDelete()}\n disabled={prefixValue === '' || !data}\n loading={isLoading}\n name=\"deletePrefix\"\n data-testid=\"deletePrefix\"\n />\n \n
\n
\n {deleteMode && (\n \n {t('sourceControl.statusNotification.deleteQuestion')}\n \n )}\n \n {/* 404 is expected if the status prefix has not been set previously */}\n {error?.status !== 404 && }\n \n \n
\n
\n
\n \n
\n \n {t('sourceControl.statusNotification.needPrefix')}\n \n \n {t('sourceControl.statusNotification.learnMorePrefix1')}\n \n {t('sourceControl.statusNotification.learnMorePrefix2')}\n \n \n
\n
\n
\n );\n};\nexport default StatusNotificationPrefix;\n","import StatusNotificationPrefix from './StatusNotificationPrefix';\n\nexport default StatusNotificationPrefix;\n","import SourceControlEmptyState from './SourceControlEmptyState';\n\nexport default SourceControlEmptyState;\n","import { Icon, Text } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport React from 'react';\n\nconst SourceControlEmptyState = () => {\n const { t } = useTranslation('codeDelivery');\n return (\n
\n \n \n {t('sourceControl.integrations.noIntegrationsHeading')}\n \n \n \n {t('sourceControl.integrations.noIntegrationsSubheading')}\n \n \n
\n );\n};\n\nexport default SourceControlEmptyState;\n","import SourceControl from './SourceControl';\n\nexport default SourceControl;\n","import { useTranslation } from 'react-i18next';\nimport React from 'react';\nimport { Alert, Button, Heading, Loading } from '@puppet/react-components';\nimport { Link } from 'react-router-dom';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { useListIntegrationsV1 } from '@services/cd4pe/vcs';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { VcsIntegrationV1 } from '@puppet/cd4pe-client-ts';\nimport { LINKS } from 'src/routes';\nimport SourceControlIntegration from './components/SourceControlIntegration';\nimport StatusNotificationPrefix from './components/statusNotificationPrefix';\nimport SourceControlEmptyState from './components/SourceControlEmptyState';\n\nconst getIntegrations = (vcsIntegrations: VcsIntegrationV1[]) => {\n const connectedIntegrations = vcsIntegrations.filter((vcs) => vcs.connected);\n\n if (connectedIntegrations && connectedIntegrations.length > 0) {\n return (\n
\n {connectedIntegrations.map((integration) => (\n \n ))}\n
\n );\n }\n return ;\n};\n\nconst SourceControl = () => {\n const { t } = useTranslation('codeDelivery');\n const workspace = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const { isLoading, error, data } = useListIntegrationsV1({ workspaceId });\n\n return (\n
\n
\n {t('sourceControl.pageHeader')}\n \n {t('sourceControl.addNewSource.button')}\n \n
\n {isLoading && (\n \n )}\n {data?.vcsIntegrations && getIntegrations(data.vcsIntegrations)}\n {error && (\n \n {error?.message}\n \n )}\n
\n \n
\n );\n};\n\nexport default SourceControl;\n","export const PRIVILEGE_CATEGORY_ORDER = [\n 'ControlRepos',\n 'Modules',\n 'Jobs',\n 'Users',\n 'Groups',\n 'Integrations',\n 'Inventory',\n];\n\nexport const PRIVILEGE_ACTION_ORDER = [\n 'CREATE',\n 'READ',\n 'WRITE',\n 'DELETE',\n 'PROMOTE',\n 'RUN',\n];\n\nexport const SUBSETS_SUPPORTED_CATEGORIES = ['ControlRepos', 'Modules'];\n\nexport const SUBSETS_SUPPORTED_ACTIONS = ['READ', 'WRITE', 'DELETE'];\n\n// eslint-disable-next-line no-shadow\nexport enum ACTION_STATE {\n ALL = 'all',\n NONE = 'none',\n SOME = 'some',\n ANY = 'any',\n}\n","import {\n SetGroupPrivilegesRequestV1,\n RbacGroupPrivilegeActionV1,\n RbacGroupPrivilegeCategoryV1,\n} from '@puppet/cd4pe-client-ts';\nimport {\n PRIVILEGE_CATEGORY_ORDER,\n PRIVILEGE_ACTION_ORDER,\n ACTION_STATE,\n} from './constants';\n\nexport type PrivilegeActions = RbacGroupPrivilegeActionV1['type'];\n\nexport interface PrivilegeFormAction extends RbacGroupPrivilegeActionV1 {\n selected: boolean;\n}\n\nexport interface PrivilegeFormCategory\n extends Omit {\n actions: Array;\n}\n\nexport type PrivilegeFormState = PrivilegeFormCategory[];\n\nexport const sortPrivileges = (privileges: RbacGroupPrivilegeCategoryV1[]) => {\n const withSortedActions = privileges.map((privilege) => {\n return {\n ...privilege,\n actions: privilege.actions.sort(\n (a, b) =>\n PRIVILEGE_ACTION_ORDER.indexOf(a.type) -\n PRIVILEGE_ACTION_ORDER.indexOf(b.type),\n ),\n };\n });\n\n return withSortedActions.sort(\n (a, b) =>\n PRIVILEGE_CATEGORY_ORDER.indexOf(a.name) -\n PRIVILEGE_CATEGORY_ORDER.indexOf(b.name),\n );\n};\n\nexport const getActionState = (\n categoryName: string,\n action: PrivilegeFormAction,\n) => {\n if (action.selected) {\n if (categoryName === 'Users') {\n return ACTION_STATE.ALL;\n }\n if (action.usesSubsets) {\n return ACTION_STATE.SOME;\n }\n if (action.type === 'CREATE') {\n return ACTION_STATE.ANY;\n }\n return ACTION_STATE.ALL;\n }\n\n return ACTION_STATE.NONE;\n};\n\nexport const setAllPrivileges = (\n prevState: PrivilegeFormState,\n selected: boolean,\n) => {\n return prevState.map((category) => {\n return {\n ...category,\n actions: category.actions.map((action) => {\n return {\n ...action,\n selected,\n };\n }),\n };\n });\n};\n\nexport const isAllPrivilegesSelected = (state: PrivilegeFormState) =>\n state.every((category) =>\n category.actions.every((action) => action.selected),\n );\n\nexport const isAnyPrivilegeSelected = (state: PrivilegeFormState) =>\n state.some((category) => category.actions.some((action) => action.selected));\n\nexport const buildFormState = (\n group: RbacGroupPrivilegeCategoryV1[],\n available: RbacGroupPrivilegeCategoryV1[],\n): PrivilegeFormState => {\n const sortedAvailable = sortPrivileges(available);\n\n const privileges = sortedAvailable.map((category) => {\n const groupCategory = group.find((c) => c.name === category.name);\n\n const actions: PrivilegeFormAction[] = category.actions.map((action) => {\n const groupAction = groupCategory?.actions.find(\n (a) => a.type === action.type,\n );\n\n if (groupAction) {\n return {\n ...groupAction,\n selected: true,\n };\n }\n return {\n ...action,\n selected: false,\n usesSubsets: !!(action.usesSubsets && category.subsets?.length),\n };\n });\n\n return {\n ...(groupCategory ?? category),\n actions,\n };\n });\n\n return privileges;\n};\n\nexport const buildEditRequest = (\n formState: PrivilegeFormState,\n): SetGroupPrivilegesRequestV1 => {\n const apiCategories: RbacGroupPrivilegeCategoryV1[] = formState.map(\n (category) => {\n const actions = category.actions\n .filter(({ selected }) => selected)\n .map(({ type, usesSubsets }) => ({\n type,\n ...(usesSubsets ? { usesSubsets } : {}),\n }));\n\n return {\n name: category.name,\n type: category.type,\n ...(category.subsets ? { subsets: category.subsets } : {}),\n actions,\n };\n },\n );\n\n return { privileges: apiCategories.filter((c) => c.actions.length > 0) };\n};\n\nexport const stripSubsetPrefix = (subset: string) => {\n return subset.replace(/d\\d+:/, '');\n};\n","import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n handleQueryRequest,\n QueryHook,\n MutationHook,\n} from '@utils/api/cd4pe';\nimport { PipelinesAsCodeV1Service } from '@puppet/cd4pe-client-ts';\nimport { GET_PIPELINE_QUERY_TAG } from '@services/cd4pe/pipelines';\nimport { CONTROL_REPOS_GET_QUERY_TAG } from '@services/cd4pe/controlRepos';\nimport { MODULES_GET_QUERY_TAG } from '@services/cd4pe/modules';\n\nexport const PREVIEW_PIPELINE_AS_CODE_TAG = 'previewPipelinesAsCode';\nexport const PIPELINE_AS_CODE_ERROR_TAG = 'pipelinesAsCodeError';\n\n/**\n * useCreatePipelinesFromCodeV1\n */\ntype UseCreatePipelinesFromCodeV1 = MutationHook<\n typeof PipelinesAsCodeV1Service,\n 'createPipelinesFromCodeV1',\n Cd4peApiError\n>;\n\nexport const useCreatePipelinesFromCodeV1: UseCreatePipelinesFromCodeV1 =\n () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(\n PipelinesAsCodeV1Service.createPipelinesFromCodeV1(payload),\n ),\n {\n onSettled: (_, error, payload) => {\n queryClient.invalidateQueries([\n GET_PIPELINE_QUERY_TAG,\n payload.workspaceId,\n payload.projectName,\n payload.pipelineId,\n ]);\n queryClient.invalidateQueries([\n CONTROL_REPOS_GET_QUERY_TAG,\n payload.workspaceId,\n payload.projectName.toLowerCase(),\n ]);\n queryClient.invalidateQueries([\n MODULES_GET_QUERY_TAG,\n payload.workspaceId,\n payload.projectName.toLowerCase(),\n ]);\n queryClient.invalidateQueries([\n PIPELINE_AS_CODE_ERROR_TAG,\n payload.workspaceId,\n payload.pipelineId,\n payload.projectName,\n ]);\n },\n },\n );\n };\n\n/**\n * useDisablePipelinesAsCodeV1\n */\ntype UseDisablePipelinesAsCodeV1 = MutationHook<\n typeof PipelinesAsCodeV1Service,\n 'disablePipelinesAsCodeV1',\n Cd4peApiError\n>;\n\nexport const useDisablePipelinesAsCodeV1: UseDisablePipelinesAsCodeV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(\n PipelinesAsCodeV1Service.disablePipelinesAsCodeV1(payload),\n ),\n {\n onSettled: (_, error, payload) => {\n queryClient.invalidateQueries([\n CONTROL_REPOS_GET_QUERY_TAG,\n payload.workspaceId,\n payload.projectName.toLowerCase(),\n ]);\n queryClient.invalidateQueries([\n MODULES_GET_QUERY_TAG,\n payload.workspaceId,\n payload.projectName.toLowerCase(),\n ]);\n queryClient.invalidateQueries([\n PIPELINE_AS_CODE_ERROR_TAG,\n payload.workspaceId,\n payload.pipelineId,\n payload.projectName,\n ]);\n },\n },\n );\n};\n\n/**\n * usePreviewPipelineAsCodeV1\n */\n\ntype UsePreviewPipelineAsCodeV1 = QueryHook<\n typeof PipelinesAsCodeV1Service,\n 'previewPipelineAsCodeV1',\n Cd4peApiError\n>;\n\nexport const usePreviewPipelineAsCodeV1: UsePreviewPipelineAsCodeV1 = (\n payload,\n options,\n) => {\n return useQuery(\n [\n PREVIEW_PIPELINE_AS_CODE_TAG,\n payload.workspaceId,\n payload.projectName,\n payload.pipelineId,\n ],\n async () =>\n handleQueryRequest(\n PipelinesAsCodeV1Service.previewPipelineAsCodeV1(payload),\n ),\n options,\n );\n};\n\n/**\n * useValidatePipelinesAsCodeV1\n */\ntype UseValidatePipelinesAsCodeV1 = MutationHook<\n typeof PipelinesAsCodeV1Service,\n 'validatePipelinesAsCodeV1',\n Cd4peApiError\n>;\nexport type UseValidatePipelinesAsCodeV1Result =\n ReturnType;\n\nexport const useValidatePipelinesAsCodeV1: UseValidatePipelinesAsCodeV1 =\n () => {\n return useMutation((payload) =>\n handleQueryRequest(\n PipelinesAsCodeV1Service.validatePipelinesAsCodeV1(payload),\n ),\n );\n };\n\n/**\n * useGetPipelineAsCodeErrorV1\n */\ntype UseGetPipelineAsCodeErrorV1 = QueryHook<\n typeof PipelinesAsCodeV1Service,\n 'getPipelinesAsCodeErrorV1',\n Cd4peApiError\n>;\n\nexport type UseGetPipelineAsCodeErrorV1Result =\n ReturnType;\n\nexport const useGetPipelineAsCodeErrorV1: UseGetPipelineAsCodeErrorV1 = (\n payload,\n options,\n) =>\n useQuery(\n [\n PIPELINE_AS_CODE_ERROR_TAG,\n payload.workspaceId,\n payload.pipelineId,\n payload.projectName,\n ],\n () =>\n handleQueryRequest(\n PipelinesAsCodeV1Service.getPipelinesAsCodeErrorV1(payload),\n ),\n options,\n );\n","import {\n useQuery,\n useInfiniteQuery,\n useMutation,\n useQueryClient,\n} from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n ControlReposV1Service,\n handleQueryRequest,\n InfiniteQueryHook,\n MutationHook,\n QueryHook,\n} from '@utils/api/cd4pe';\nimport { GET_IS_BUILD_PR_ALLOWED, GET_PIPELINE_QUERY_TAG } from './pipelines';\nimport { PREVIEW_PIPELINE_AS_CODE_TAG } from './pipelinesAsCode';\n\nexport const CONTROL_REPOS_LIST_QUERY_TAG = 'listControlRepos';\nexport const CONTROL_REPOS_GET_QUERY_TAG = 'getControlRepos';\n\n/**\n * useListControlReposV1\n */\n\ntype UseListControlReposV1 = InfiniteQueryHook<\n typeof ControlReposV1Service,\n 'listControlReposV1',\n Cd4peApiError\n>;\n\nconst useListControlReposV1: UseListControlReposV1 = (payload) =>\n useInfiniteQuery(\n [CONTROL_REPOS_LIST_QUERY_TAG, payload.workspaceId, payload.prefix],\n ({ pageParam }) => {\n return handleQueryRequest(\n ControlReposV1Service.listControlReposV1({\n ...payload,\n nextMarker: pageParam,\n }),\n );\n },\n {\n getNextPageParam: (lastPage) =>\n lastPage.pageDetails.nextMarker ?? undefined,\n },\n );\n\nexport default useListControlReposV1;\n\n/**\n * useDeleteControlRepoV1\n */\n\ntype UseDeleteControlRepoV1 = MutationHook<\n typeof ControlReposV1Service,\n 'deleteControlRepoV1',\n Cd4peApiError\n>;\n\nexport type UseDeleteControlRepoResult = ReturnType;\n\nexport const useDeleteControlRepoV1: UseDeleteControlRepoV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (p) => handleQueryRequest(ControlReposV1Service.deleteControlRepoV1(p)),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n CONTROL_REPOS_LIST_QUERY_TAG,\n payload.workspaceId,\n ]);\n\n queryClient.removeQueries([\n CONTROL_REPOS_GET_QUERY_TAG,\n payload.workspaceId,\n payload.controlRepoName,\n ]);\n\n queryClient.removeQueries([\n GET_PIPELINE_QUERY_TAG,\n payload.workspaceId,\n payload.controlRepoName,\n ]);\n\n queryClient.removeQueries([\n GET_IS_BUILD_PR_ALLOWED,\n payload.workspaceId,\n payload.controlRepoName,\n ]);\n\n queryClient.removeQueries([\n PREVIEW_PIPELINE_AS_CODE_TAG,\n payload.workspaceId,\n payload.controlRepoName,\n ]);\n },\n },\n );\n};\n\n/**\n * useGetControlRepoV1\n */\n\ntype UseGetControlRepoV1 = QueryHook<\n typeof ControlReposV1Service,\n 'getControlRepoV1',\n Cd4peApiError\n>;\n\nexport const useGetControlRepoV1: UseGetControlRepoV1 = (payload) =>\n useQuery(\n [\n CONTROL_REPOS_GET_QUERY_TAG,\n payload.workspaceId,\n payload.controlRepoName.toLowerCase(),\n ],\n () => {\n return handleQueryRequest(\n ControlReposV1Service.getControlRepoV1({\n ...payload,\n }),\n );\n },\n );\n","import { useInfiniteQuery } from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n handleQueryRequest,\n EventsV1Service,\n InfiniteQueryHook,\n} from '@utils/api/cd4pe';\n\nexport const LIST_TRIGGER_EVENTS_QUERY_TAG = 'triggerEvents';\n\ntype UseListTriggerEventsV1 = InfiniteQueryHook<\n typeof EventsV1Service,\n 'listTriggerEvents',\n Cd4peApiError\n>;\n\nexport const useListTriggerEventsV1: UseListTriggerEventsV1 = (payload) =>\n useInfiniteQuery(\n [\n LIST_TRIGGER_EVENTS_QUERY_TAG,\n payload.workspaceId,\n payload.controlRepoName || payload.moduleName,\n payload.pipelineId,\n payload.eventId,\n ],\n ({ pageParam = '' }) =>\n handleQueryRequest(\n EventsV1Service.listTriggerEvents({\n ...payload,\n nextMarker: pageParam,\n }),\n ),\n {\n getNextPageParam: (lastPage) =>\n lastPage.pageDetails.nextMarker ?? undefined,\n },\n );\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n handleQueryRequest,\n MutationHook,\n QueryHook,\n} from '@utils/api/cd4pe';\nimport { PipelinesV1Service } from '@puppet/cd4pe-client-ts';\nimport { CONTROL_REPOS_GET_QUERY_TAG } from './controlRepos';\nimport { MODULES_GET_QUERY_TAG } from './modules';\nimport { LIST_TRIGGER_EVENTS_QUERY_TAG } from './events';\nimport { PREVIEW_PIPELINE_AS_CODE_TAG } from './pipelinesAsCode';\n\nexport const GET_PIPELINE_QUERY_TAG = 'getPipeline';\nexport const UPSERT_PIPELINE_STAGES = 'upsertPipelineStages';\nexport const GET_IS_BUILD_PR_ALLOWED = 'getIsBuildPullRequestAllowed';\n\n/**\n * useCreatePipelineV1\n */\ntype UseCreatePipelineV1 = MutationHook<\n typeof PipelinesV1Service,\n 'createPipelineV1',\n Cd4peApiError\n>;\n\nexport type UseCreatePipelineV1Result = ReturnType;\n\nexport const useCreatePipelineV1: UseCreatePipelineV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(PipelinesV1Service.createPipelineV1(payload)),\n {\n onSuccess: (_, payload) => {\n if (payload.requestBody.projectType === 'CONTROL_REPO') {\n queryClient.invalidateQueries([\n CONTROL_REPOS_GET_QUERY_TAG,\n payload.workspaceId,\n payload.requestBody.projectName.toLowerCase(),\n ]);\n }\n\n if (payload.requestBody.projectType === 'MODULE') {\n queryClient.invalidateQueries([\n MODULES_GET_QUERY_TAG,\n payload.workspaceId,\n payload.requestBody.projectName.toLowerCase(),\n ]);\n }\n },\n },\n );\n};\n\n/**\n * useGetPipelineV1\n */\ntype UseGetPipelineV1 = QueryHook<\n typeof PipelinesV1Service,\n 'getPipelineV1',\n Cd4peApiError\n>;\n\nexport type UseGetPipelineV1Result = ReturnType;\n\nexport const useGetPipelineV1: UseGetPipelineV1 = (payload, options) =>\n useQuery(\n [\n GET_PIPELINE_QUERY_TAG,\n payload.workspaceId,\n payload.projectName,\n payload.pipelineId,\n ],\n () => handleQueryRequest(PipelinesV1Service.getPipelineV1(payload)),\n options,\n );\n\n/**\n * useCreateDefaultPipelineV1\n */\n\ntype UseCreateDefaultPipelineV1 = MutationHook<\n typeof PipelinesV1Service,\n 'createDefaultPipelineV1',\n Cd4peApiError\n>;\n\nexport type UseCreateDefaultPipelineV1Result =\n ReturnType;\n\nexport const useCreateDefaultPipelineV1: UseCreateDefaultPipelineV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(PipelinesV1Service.createDefaultPipelineV1(payload)),\n {\n onSuccess(data, payload) {\n queryClient.setQueryData(\n [\n GET_PIPELINE_QUERY_TAG,\n payload.workspaceId,\n payload.requestBody.projectName,\n payload.pipelineId,\n ],\n data,\n );\n },\n },\n );\n};\n\n/**\n * useUpsertPipelineStagesV1\n */\n\ntype UseUpsertPipelineStagesV1 = MutationHook<\n typeof PipelinesV1Service,\n 'upsertPipelineStagesV1',\n Cd4peApiError\n>;\n\nexport type UseUpsertPipelineStagesV1Result =\n ReturnType;\n\nexport const useUpsertPipelineStagesV1Optimistic: UseUpsertPipelineStagesV1 =\n () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(PipelinesV1Service.upsertPipelineStagesV1(payload)),\n {\n onMutate: async (payload) => {\n /**\n * NOTE:\n * This approach uses optimistic updates to allow the UI to show immediate changes to improve performance.\n * We directly update the cache while we are waiting for the request to complete.\n * If the request does eventually fail, we recover by restoring the cache back to its original value.\n *\n * We benefit of this approach because this is a heavy weight API that supports a wide range of changes from the UI such as:\n * - renaming stages\n * - removing individual job items\n * - toggling auto promotion\n * - promotion conditions and more\n *\n * See here for more information - https://tkdodo.eu/blog/mastering-mutations-in-react-query#optimistic-updates and https://tanstack.com/query/latest/docs/react/guides/optimistic-updates?from=reactQueryV3&original=https%3A%2F%2Ftanstack.com%2Fquery%2Fv3%2Fdocs%2Fguides%2Foptimistic-updates\n */\n\n const queryKey = [\n GET_PIPELINE_QUERY_TAG,\n payload.workspaceId,\n payload.requestBody.projectName,\n payload.pipelineId,\n ];\n\n // Cancel any outgoing refetches\n // (so they don't overwrite our optimistic update)\n await queryClient.cancelQueries({ queryKey });\n\n // Snapshot the previous value\n const previousValue = (\n queryClient.getQueryData(queryKey)\n );\n\n // Optimistically update to the new value\n queryClient.setQueryData(queryKey, {\n ...previousValue,\n stages: payload.requestBody?.stages,\n });\n\n // Return a context with the previous and new todo\n return { previousValue, newValue: payload.requestBody.stages };\n },\n // If the mutation fails, use the context we returned above\n onError: (_, payload, context) => {\n // set stages to previous value\n queryClient.setQueryData(\n [\n GET_PIPELINE_QUERY_TAG,\n payload.workspaceId,\n payload.requestBody.projectName,\n payload.pipelineId,\n ],\n context?.previousValue,\n );\n },\n // Always refetch after error or success:\n onSettled: (_, error, payload) => {\n queryClient.invalidateQueries([\n GET_PIPELINE_QUERY_TAG,\n payload.workspaceId,\n payload.requestBody.projectName,\n payload.pipelineId,\n ]);\n },\n },\n );\n };\n\nexport const useUpsertPipelineStagesV1: UseUpsertPipelineStagesV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(PipelinesV1Service.upsertPipelineStagesV1(payload)),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n GET_PIPELINE_QUERY_TAG,\n payload.workspaceId,\n payload.requestBody.projectName,\n payload.pipelineId,\n ]);\n },\n },\n );\n};\n\n/**\n * useDeletePipelineV1\n */\n\ntype UseDeletePipelineV1 = MutationHook<\n typeof PipelinesV1Service,\n 'deletePipelineV1',\n Cd4peApiError\n>;\n\nexport type UseDeletePipelineV1Result = ReturnType;\n\nexport const useDeletePipelineV1: UseDeletePipelineV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(PipelinesV1Service.deletePipelineV1(payload)),\n {\n onSuccess: (_, payload) => {\n queryClient.removeQueries([\n GET_PIPELINE_QUERY_TAG,\n payload.workspaceId,\n payload.projectName,\n payload.pipelineId,\n ]);\n\n queryClient.removeQueries([\n PREVIEW_PIPELINE_AS_CODE_TAG,\n payload.workspaceId,\n payload.projectName,\n payload.pipelineId,\n ]);\n\n queryClient.removeQueries([\n GET_IS_BUILD_PR_ALLOWED,\n payload.workspaceId,\n payload.projectName,\n payload.pipelineId,\n ]);\n\n queryClient.invalidateQueries([\n CONTROL_REPOS_GET_QUERY_TAG,\n payload.workspaceId,\n payload.projectName.toLowerCase(),\n ]);\n\n queryClient.invalidateQueries([\n MODULES_GET_QUERY_TAG,\n payload.workspaceId,\n payload.projectName.toLowerCase(),\n ]);\n },\n },\n );\n};\n\n/**\n * useDeletePipelineV1\n */\n\ntype UseDeletePipelineStagesV1 = MutationHook<\n typeof PipelinesV1Service,\n 'deletePipelineStagesV1',\n Cd4peApiError\n>;\n\nexport type UseDeletePipelineStagesV1Result =\n ReturnType;\n\nexport const useDeletePipelineStagesV1: UseDeletePipelineStagesV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(PipelinesV1Service.deletePipelineStagesV1(payload)),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n GET_PIPELINE_QUERY_TAG,\n payload.workspaceId,\n payload.projectName,\n payload.pipelineId,\n ]);\n\n queryClient.invalidateQueries([\n CONTROL_REPOS_GET_QUERY_TAG,\n payload.workspaceId,\n payload.projectName.toLowerCase(),\n ]);\n\n queryClient.invalidateQueries([\n MODULES_GET_QUERY_TAG,\n payload.workspaceId,\n payload.projectName.toLowerCase(),\n ]);\n },\n },\n );\n};\n\n/**\n * useTriggerPipelineV1\n */\n\ntype UseTriggerPipelineV1 = MutationHook<\n typeof PipelinesV1Service,\n 'triggerPipelineV1',\n Cd4peApiError\n>;\n\nexport type UseTriggerPipelineV1Result = ReturnType;\n\nexport const useTriggerPipelineV1: UseTriggerPipelineV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(PipelinesV1Service.triggerPipelineV1(payload)),\n {\n onSuccess() {\n queryClient.invalidateQueries([LIST_TRIGGER_EVENTS_QUERY_TAG]);\n },\n },\n );\n};\n\n/**\n * useUpdatePipelineTriggersV1\n */\n\ntype UseUpdatePipelineTriggersV1 = MutationHook<\n typeof PipelinesV1Service,\n 'updatePipelineTriggersV1',\n Cd4peApiError\n>;\n\nexport const useUpdatePipelineTriggersV1: UseUpdatePipelineTriggersV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(PipelinesV1Service.updatePipelineTriggersV1(payload)),\n {\n onSuccess(_, payload) {\n queryClient.invalidateQueries([\n GET_PIPELINE_QUERY_TAG,\n payload.workspaceId,\n payload.requestBody.projectName,\n payload.pipelineId,\n ]);\n },\n },\n );\n};\n\n/**\n * useSetIsBuildPullRequestAllowedV1\n */\n\ntype UseSetIsBuildPullRequestAllowedV1 = MutationHook<\n typeof PipelinesV1Service,\n 'setIsBuildPullRequestAllowedV1',\n Cd4peApiError\n>;\n\nexport const useSetIsBuildPullRequestAllowedV1: UseSetIsBuildPullRequestAllowedV1 =\n () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(\n PipelinesV1Service.setIsBuildPullRequestAllowedV1(payload),\n ),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n GET_IS_BUILD_PR_ALLOWED,\n payload.workspaceId,\n payload.requestBody?.projectName,\n payload.pipelineId,\n ]);\n },\n },\n );\n };\n\n/**\n * useGetIsBuildPullRequestAllowedV1\n */\n\ntype UseGetIsBuildPullRequestAllowedV1 = QueryHook<\n typeof PipelinesV1Service,\n 'getIsBuildPullRequestAllowedV1',\n Cd4peApiError\n>;\n\nexport const useGetIsBuildPullRequestAllowedV1: UseGetIsBuildPullRequestAllowedV1 =\n (payload, options) =>\n useQuery(\n [\n GET_IS_BUILD_PR_ALLOWED,\n payload.workspaceId,\n payload.projectName,\n payload.pipelineId,\n ],\n () =>\n handleQueryRequest(\n PipelinesV1Service.getIsBuildPullRequestAllowedV1(payload),\n ),\n options,\n );\n","import {\n useInfiniteQuery,\n useMutation,\n useQuery,\n useQueryClient,\n} from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n ModulesV1Service,\n handleQueryRequest,\n InfiniteQueryHook,\n MutationHook,\n QueryHook,\n} from '@utils/api/cd4pe';\nimport { GET_IS_BUILD_PR_ALLOWED, GET_PIPELINE_QUERY_TAG } from './pipelines';\nimport { PREVIEW_PIPELINE_AS_CODE_TAG } from './pipelinesAsCode';\n\nexport const MODULES_LIST_QUERY_TAG = 'listModules';\nexport const MODULES_GET_QUERY_TAG = 'getModules';\n\ntype UseGetModuleV1 = QueryHook<\n typeof ModulesV1Service,\n 'getModuleV1',\n Cd4peApiError\n>;\n\nexport const useGetModuleV1: UseGetModuleV1 = (payload) =>\n useQuery(\n [\n MODULES_GET_QUERY_TAG,\n payload.workspaceId,\n payload.moduleName.toLowerCase(),\n ],\n () => {\n return handleQueryRequest(\n ModulesV1Service.getModuleV1({\n ...payload,\n }),\n );\n },\n );\n\n/**\n * useListModulesV1\n */\n\ntype UseListModulesV1 = InfiniteQueryHook<\n typeof ModulesV1Service,\n 'listModulesV1',\n Cd4peApiError\n>;\n\nexport const useListModulesV1: UseListModulesV1 = (payload) =>\n useInfiniteQuery(\n [MODULES_LIST_QUERY_TAG, payload.workspaceId, payload.prefix],\n ({ pageParam }) =>\n handleQueryRequest(\n ModulesV1Service.listModulesV1({ ...payload, nextMarker: pageParam }),\n ),\n {\n getNextPageParam: (lastPage) =>\n lastPage.pageDetails.nextMarker ?? undefined,\n },\n );\n\n/**\n * useDeleteModuleV1\n */\n\ntype UseDeleteModuleV1 = MutationHook<\n typeof ModulesV1Service,\n 'deleteModuleV1',\n Cd4peApiError\n>;\n\nexport const useDeleteModuleV1: UseDeleteModuleV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) => handleQueryRequest(ModulesV1Service.deleteModuleV1(payload)),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n MODULES_LIST_QUERY_TAG,\n payload.workspaceId,\n ]);\n\n queryClient.removeQueries([\n MODULES_GET_QUERY_TAG,\n payload.workspaceId,\n payload.moduleName,\n ]);\n\n queryClient.removeQueries([\n GET_PIPELINE_QUERY_TAG,\n payload.workspaceId,\n payload.moduleName,\n ]);\n\n queryClient.removeQueries([\n PREVIEW_PIPELINE_AS_CODE_TAG,\n payload.workspaceId,\n payload.moduleName,\n ]);\n\n queryClient.removeQueries([\n GET_IS_BUILD_PR_ALLOWED,\n payload.workspaceId,\n payload.moduleName,\n ]);\n },\n },\n );\n};\n","import CursorPagination from './CursorPagination';\n\nexport default CursorPagination;\n","import React from 'react';\nimport { Button } from '@puppet/react-components';\n\ninterface CursorPaginationProps {\n pageSelect: Function;\n currentPage: number;\n hasNextPage?: boolean;\n hasPreviousPage?: boolean;\n}\n\nconst CursorPagination = ({\n pageSelect,\n currentPage,\n hasNextPage = false,\n hasPreviousPage = false,\n}: CursorPaginationProps) => {\n return (\n
\n {\n pageSelect(currentPage - 1);\n }}\n data-testid=\"cursor-pagination-previous-page\"\n />\n pageSelect(currentPage + 1)}\n data-testid=\"cursor-pagination-next-page\"\n />\n
\n );\n};\n\nexport default CursorPagination;\n","import React, { ReactElement, useState } from 'react';\nimport {\n Input,\n Modal,\n SidePanel,\n Button,\n Heading,\n} from '@puppet/react-components';\nimport { Table } from '@puppet/data-grid';\nimport { CodeProjectDetailsV1 } from '@utils/api/cd4pe';\nimport CursorPagination from '@codeDelivery/components/CursorPagination';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useGetGroupV1 } from '@services/cd4pe/groups';\nimport { useSearchParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\n\ntype SetSelectedSubsets = (newSubset: string[]) => void;\nexport interface ModalProps {\n open: boolean;\n setOpen: Function;\n subsets: string[];\n setSubsets: SetSelectedSubsets;\n}\n\ninterface tableProps {\n header: string;\n message: string;\n}\n\ninterface props {\n onClose: Function;\n onSearchChange: Function;\n searchSubsetTerm: string;\n loading: boolean;\n data: CodeProjectDetailsV1[][];\n setSelectedSubsets: SetSelectedSubsets;\n initialSubsets: string[];\n title: string;\n tableTranslations: tableProps;\n searchPlaceHolder: string;\n hasNextPage: boolean | undefined;\n fetchNextPage: Function;\n}\n\nconst checkIfIndeterminateState = (\n subset: CodeProjectDetailsV1[],\n selectedData: Set,\n) => {\n if (subset.every((s) => selectedData.has(s.name))) {\n return { checkAll: true, indeterminateState: false };\n }\n if (subset.some((s) => selectedData.has(s.name))) {\n return { checkAll: false, indeterminateState: true };\n }\n\n return { checkAll: false, indeterminateState: false };\n};\n\nexport const useGetGroupV1WithParams = () => {\n const workspaceId = useWorkspaceDomain();\n const [searchParams] = useSearchParams('');\n const groupId = searchParams.get('groupId');\n\n const query = useGetGroupV1(\n {\n workspaceId,\n groupId: Number(groupId),\n },\n {\n enabled: groupId !== null,\n },\n );\n return query;\n};\n\nconst PrivilegeSubsetModal = ({\n onClose,\n onSearchChange,\n searchSubsetTerm,\n loading,\n data,\n setSelectedSubsets,\n initialSubsets,\n title,\n tableTranslations,\n searchPlaceHolder,\n hasNextPage,\n fetchNextPage,\n}: props) => {\n const [selectedData, setSelectedData] = useState>(\n new Set(initialSubsets),\n );\n const [currentPage, setCurrentPage] = useState(0);\n const currentPageData = data[currentPage] ?? [];\n const { checkAll, indeterminateState } = checkIfIndeterminateState(\n currentPageData,\n selectedData,\n );\n const { t } = useTranslation('codeDelivery');\n const { data: group } = useGetGroupV1WithParams();\n\n const columns = [\n { label: t('privilege.subset.column.name'), dataKey: 'name' },\n { label: t('privilege.subset.column.repo'), dataKey: 'srcRepoDisplayName' },\n ];\n\n const onHeaderChecked = async (checked: boolean) => {\n if (currentPageData.length === 0) {\n return;\n }\n\n const newSelectedData = new Set(selectedData);\n if (checked) {\n currentPageData.forEach((c) => newSelectedData.add(c.name));\n setSelectedData(newSelectedData);\n } else {\n currentPageData.forEach((c) => newSelectedData.delete(c.name));\n setSelectedData(newSelectedData);\n }\n };\n\n const onRowChecked = (checked: boolean, name: string) => {\n if (currentPageData.length === 0) {\n return;\n }\n\n const newSelectedData = new Set(selectedData);\n if (checked) {\n setSelectedData(newSelectedData.add(name));\n } else {\n newSelectedData.delete(name);\n setSelectedData(newSelectedData);\n }\n };\n\n const pageSelect = (newPage: number) => {\n if (newPage > currentPage && hasNextPage) {\n fetchNextPage();\n }\n setCurrentPage(newPage);\n };\n\n const listSelectedSubsets: ReactElement[] = [];\n selectedData.forEach((sub) => {\n listSelectedSubsets.push(\n
  • \n
    {sub}
    \n onRowChecked(false, sub)}\n aria-label={t(\n 'privilege.subset.subset.category.modal.delete.ariaLabel',\n {\n name: title,\n },\n )}\n />\n
  • ,\n );\n });\n\n const tData = currentPageData.map((cp) => {\n if (selectedData.has(cp.name)) {\n return { ...cp, selected: true };\n }\n return cp;\n });\n\n return (\n \n \n {t('privilege.subset.permissions.modal.title', {\n category: title,\n name: group?.name,\n })}\n \n
    \n
    \n onSearchChange(value)}\n name=\"searchCategorySubsets\"\n icon=\"search\"\n />\n \n onRowChecked(checked, rowData.name)\n }\n onHeaderChecked={onHeaderChecked}\n headerCheckState={checkAll}\n headerIndeterminateState={indeterminateState}\n emptyStateHeader={tableTranslations.header}\n emptyStateMessage={tableTranslations.message}\n />\n \n
    \n onHeaderChecked(false)}\n closeButtonProps={{\n onClick: () => onHeaderChecked(false),\n 'aria-label': t(\n 'privilege.subset.subset.category.modal.delete.ariaLabel',\n { name: title },\n ),\n }}\n closeButtonIcon=\"trash\"\n >\n
      {listSelectedSubsets}
    \n \n
    \n\n
    \n \n {\n setSelectedSubsets(Array.from(selectedData));\n onClose();\n }}\n >\n {t('privilege.subset.modal.save')}\n \n \n \n
    \n
    \n );\n};\n\nexport default PrivilegeSubsetModal;\n","import React from 'react';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { CodeProjectDetailsV1 } from '@puppet/cd4pe-client-ts';\nimport { useTranslation } from 'react-i18next';\nimport { useListModulesV1 } from '@services/cd4pe/modules';\nimport Cd4peError from '@components/Cd4peError';\nimport useDebouncedSearch from '@hooks/useDebouncedSearch';\nimport PrivilegeSubsetModal, { ModalProps } from './PrivilegeSubsetModal';\n\nconst getTableTranslations = (\n loading: boolean,\n data: CodeProjectDetailsV1[][],\n searchTerm: string,\n t: Function,\n) => {\n if (loading) {\n return {\n header: '',\n message: '',\n };\n }\n\n if (data?.length === 0) {\n if (searchTerm !== '') {\n return {\n header: t('privilege.subset.permissions.table.empty.search.header'),\n message: t(\n 'privilege.subset.permissions.modules.table.empty.search.message',\n ),\n };\n }\n\n return {\n header: t('privilege.subset.permissions.table.empty.header'),\n message: t('privilege.subset.permissions.modules.table.empty.message'),\n };\n }\n\n return {\n header: '',\n message: '',\n };\n};\n\nconst ModulePrivilegesSubsetModal = ({\n setOpen,\n open,\n subsets,\n setSubsets,\n}: ModalProps) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const { searchTerm, appliedSearchTerm, handleSearch } = useDebouncedSearch();\n\n const { isLoading, isFetching, data, error, fetchNextPage, hasNextPage } =\n useListModulesV1({\n workspaceId,\n pageSize: 10,\n prefix: appliedSearchTerm,\n });\n\n const modules = [...(data?.pages ?? [])].map((page) => page.modules);\n\n const tableTranslations = getTableTranslations(\n isLoading,\n modules,\n appliedSearchTerm,\n t,\n );\n\n if (!open) {\n return null;\n }\n\n return (\n <>\n setOpen(false)}\n onSearchChange={handleSearch}\n searchSubsetTerm={searchTerm}\n loading={isLoading || isFetching}\n data={modules}\n setSelectedSubsets={setSubsets}\n initialSubsets={subsets}\n title={t('privilege.modules.label')}\n searchPlaceHolder={t('privilege.subset.permissions.modules.search')}\n tableTranslations={tableTranslations}\n hasNextPage={hasNextPage}\n fetchNextPage={fetchNextPage}\n />\n \n \n );\n};\n\nexport default ModulePrivilegesSubsetModal;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport useListControlReposV1 from '@services/cd4pe/controlRepos';\nimport Cd4peError from '@components/Cd4peError';\nimport { CodeProjectDetailsV1 } from '@utils/api/cd4pe';\nimport useDebouncedSearch from '@hooks/useDebouncedSearch';\nimport AddGroupPermissionSubsetModal, {\n ModalProps,\n} from './PrivilegeSubsetModal';\n\nconst getTableTranslations = (\n loading: boolean,\n data: CodeProjectDetailsV1[][],\n searchTerm: string,\n t: Function,\n) => {\n if (loading) {\n return {\n header: '',\n message: '',\n };\n }\n\n if (data?.length === 0) {\n if (searchTerm !== '') {\n return {\n header: t('privilege.subset.permissions.table.empty.search.header'),\n message: t(\n 'privilege.subset.permissions.controlRepos.table.empty.search.message',\n ),\n };\n }\n\n return {\n header: t('privilege.subset.permissions.table.empty.header'),\n message: t(\n 'privilege.subset.permissions.controlRepos.table.empty.message',\n ),\n };\n }\n\n return {\n header: '',\n message: '',\n };\n};\n\nconst ControlReposPrivilegesSubsetModal = ({\n setOpen,\n open,\n subsets,\n setSubsets,\n}: ModalProps) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const { searchTerm, appliedSearchTerm, handleSearch } = useDebouncedSearch();\n\n const { isLoading, error, data, fetchNextPage, isFetching, hasNextPage } =\n useListControlReposV1({\n workspaceId,\n pageSize: 10,\n prefix: appliedSearchTerm,\n });\n\n const controlRepos = [...(data?.pages ?? [])].map(\n (page) => page.controlRepos,\n );\n\n const tableTranslations = getTableTranslations(\n isLoading,\n controlRepos,\n appliedSearchTerm,\n t,\n );\n\n if (!open) {\n return null;\n }\n\n return (\n <>\n setOpen(false)}\n onSearchChange={handleSearch}\n searchSubsetTerm={searchTerm}\n loading={isLoading || isFetching}\n data={controlRepos}\n setSelectedSubsets={setSubsets}\n initialSubsets={subsets}\n title={t('privilege.controlrepos.label')}\n searchPlaceHolder={t(\n 'privilege.subset.permissions.controlRepos.search',\n )}\n tableTranslations={tableTranslations}\n hasNextPage={hasNextPage}\n fetchNextPage={fetchNextPage}\n />\n \n \n );\n};\n\nexport default ControlReposPrivilegesSubsetModal;\n","import React, { PropsWithChildren, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Alert, Heading, Button, Text } from '@puppet/react-components';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport ModulePermissionsSubsetModal from './ModulePrivilegesSubsetModal';\nimport ControlReposPermissionsSubsetModal from './ControlReposPrivilegesSubsetModal';\nimport {\n SUBSETS_SUPPORTED_ACTIONS,\n SUBSETS_SUPPORTED_CATEGORIES,\n} from '../utils/constants';\nimport { PrivilegeFormCategory, stripSubsetPrefix } from '../utils/utils';\n\ntype PrivilegeCategoryProps = {\n editable: boolean;\n category: PrivilegeFormCategory;\n setSubsets: (newSubsets: string[]) => void;\n};\n\nconst PrivilegeCategory = ({\n children,\n editable,\n category,\n setSubsets,\n}: PropsWithChildren) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const [open, setOpen] = useState(false);\n const [selectedCategory, setSelectedCategory] = useState();\n const { name, subsets = [], actions } = category;\n const categoryDisplayName =\n name === 'ControlRepos' ? t('privilege.controlrepos.label') : name;\n\n const willSaveSubset = () => {\n return actions.some(\n (action) =>\n action.selected &&\n action.usesSubsets &&\n SUBSETS_SUPPORTED_ACTIONS.includes(action.type),\n );\n };\n const strippedSubsets = [...subsets].map((subset) =>\n stripSubsetPrefix(subset),\n );\n const setSubsetsWithId = (newSubsets: string[]) => {\n setSubsets(newSubsets.map((subset) => `${workspaceId}:${subset}`));\n };\n\n return (\n
    \n
    \n
    \n \n {t(`privilege.${name.toLowerCase()}.label`)}\n \n
    \n {editable && SUBSETS_SUPPORTED_CATEGORIES.includes(name) && (\n
    \n \n {t('privilege.subset.subset.category.label', {\n name: categoryDisplayName,\n })}\n \n {\n setOpen(true);\n setSelectedCategory(name);\n }}\n />\n
    \n )}\n
    \n\n
    {children}
    \n\n setOpen(isOpen)}\n subsets={strippedSubsets}\n setSubsets={setSubsetsWithId}\n />\n\n setOpen(isOpen)}\n subsets={strippedSubsets}\n setSubsets={setSubsetsWithId}\n />\n {SUBSETS_SUPPORTED_CATEGORIES.includes(name) &&\n subsets?.length > 0 &&\n !willSaveSubset() && (\n \n {t('privilege.subset.without.permissions.error')}\n \n {t('privilege.subset.permissions.error.message')}\n \n \n )}\n
    \n );\n};\n\nexport default PrivilegeCategory;\n","import React from 'react';\nimport { Text, Checkbox, RadioButton } from '@puppet/react-components';\nimport { Trans, useTranslation } from 'react-i18next';\nimport {\n SUBSETS_SUPPORTED_CATEGORIES,\n SUBSETS_SUPPORTED_ACTIONS,\n} from '../utils/constants';\nimport { getActionState, PrivilegeFormAction } from '../utils/utils';\n\ntype PrivilegeActionProps = {\n editable: boolean;\n action: PrivilegeFormAction;\n categoryName: string;\n subsetsAvailable: boolean;\n setAction: (action: PrivilegeFormAction) => void;\n};\n\nconst PrivilegeAction = ({\n editable,\n action,\n categoryName,\n subsetsAvailable,\n setAction,\n}: PrivilegeActionProps) => {\n const { type: actionName, selected, usesSubsets } = action;\n const { t } = useTranslation('codeDelivery');\n const privilegeKey = `${categoryName.toLowerCase()}.${actionName.toLowerCase()}`;\n const label = t(`privilege.${privilegeKey}.label`);\n const actionStateLabel = getActionState(categoryName, action);\n\n if (!editable) {\n return (\n \n \n ]}\n />\n \n
    \n );\n }\n\n const onCheckboxChange = () => {\n setAction({ ...action, selected: !selected });\n };\n const onRadioChange = (enabled: boolean) => {\n setAction({ ...action, usesSubsets: enabled });\n };\n\n const getSubsetRadioButtons = () => (\n <>\n onRadioChange(false)}\n />\n onRadioChange(true)}\n disabled={subsetsAvailable}\n />\n \n );\n\n return (\n
    \n
    \n \n
    \n {selected && (\n
    \n {SUBSETS_SUPPORTED_CATEGORIES.includes(categoryName) &&\n SUBSETS_SUPPORTED_ACTIONS.includes(actionName) ? (\n getSubsetRadioButtons()\n ) : (\n \n {t(`privilege.action.state.title.${actionStateLabel}`)}\n \n )}\n
    \n )}\n
    \n );\n};\n\nexport default PrivilegeAction;\n","import useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useState, useEffect } from 'react';\nimport {\n useGetGroupPrivilegesV1,\n useGetAvailableGroupPrivilegesV1,\n} from '@services/cd4pe/groups';\nimport { buildFormState, PrivilegeFormState } from './utils/utils';\n\nconst useGroupPrivilegesState = (groupId: number, editable: boolean) => {\n const workspaceId = useWorkspaceDomain();\n const [state, setState] = useState([]);\n\n const {\n data: groupPrivileges,\n isLoading: cLoading,\n error: cError,\n refetch: cRefetch,\n } = useGetGroupPrivilegesV1({\n workspaceId,\n groupId,\n });\n const {\n data: availablePrivileges,\n isLoading: aLoading,\n error: aError,\n } = useGetAvailableGroupPrivilegesV1({\n workspaceId,\n groupId,\n });\n\n const isLoading = aLoading || cLoading;\n\n const errors = {\n cError,\n aError,\n };\n\n useEffect(() => {\n if (groupPrivileges && availablePrivileges) {\n const initState = buildFormState(\n groupPrivileges.privileges,\n availablePrivileges.privileges,\n );\n setState(initState);\n }\n }, [availablePrivileges, groupPrivileges, isLoading]);\n\n useEffect(() => {\n cRefetch();\n }, [editable, cRefetch]);\n\n return { state, setState, isLoading, errors } as const;\n};\n\nexport default useGroupPrivilegesState;\n","import CommonForm from '@components/CommonForm';\nimport React from 'react';\nimport { useSetGroupPrivilegesV1 } from '@services/cd4pe/groups';\nimport { Text, Loading, Link, Checkbox } from '@puppet/react-components';\nimport { Trans, useTranslation } from 'react-i18next';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport Cd4peError from '@components/Cd4peError';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport {\n buildEditRequest,\n isAllPrivilegesSelected,\n isAnyPrivilegeSelected,\n PrivilegeFormAction,\n setAllPrivileges,\n} from './utils/utils';\nimport PrivilegeCategory from './components/PrivilegeCategory';\nimport PrivilegeAction from './components/PrivilegeAction';\nimport useGroupPrivilegesState from './useGroupPrivilegesState';\n\ninterface Props {\n editable: boolean;\n groupId: number;\n onSuccess?: () => void;\n onCancel?: () => void;\n confirmLabel?: string;\n cancelLabel?: string;\n}\n\nconst defaultProps = {\n onSuccess: () => {},\n onCancel: () => {},\n confirmLabel: null,\n cancelLabel: null,\n};\n\nconst GroupPrivilegesForm = ({\n editable,\n groupId,\n onSuccess,\n onCancel,\n confirmLabel,\n cancelLabel,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const { state, setState, isLoading, errors } = useGroupPrivilegesState(\n groupId,\n editable,\n );\n const editGroupPrivilegesV1 = useSetGroupPrivilegesV1();\n const allSelected = isAllPrivilegesSelected(state);\n const someSelected = isAnyPrivilegeSelected(state) && !allSelected;\n\n const onSubmit = () => {\n const requestBody = buildEditRequest(state);\n\n editGroupPrivilegesV1.mutate(\n {\n workspaceId,\n groupId,\n requestBody,\n },\n { onSuccess },\n );\n };\n\n const setAction = (categoryName: string, nAction: PrivilegeFormAction) => {\n setState(\n state.map((category) => {\n if (category.name !== categoryName) {\n return category;\n }\n\n const newActions = category.actions.map((action) =>\n action.type !== nAction.type ? action : nAction,\n );\n return { ...category, actions: newActions };\n }),\n );\n };\n\n const setSubsets = (categoryName: string, newSubsets: string[]) => {\n setState(\n state.map((category) => {\n if (category.name !== categoryName) {\n return category;\n }\n\n if (newSubsets.length === 0) {\n return {\n ...category,\n subsets: newSubsets,\n actions: category.actions.map((action) => ({\n ...action,\n usesSubsets: false,\n })),\n };\n }\n\n return { ...category, subsets: newSubsets };\n }),\n );\n };\n\n if (isLoading) {\n return ;\n }\n\n if (errors.aError || errors.cError) {\n return (\n <>\n \n \n \n );\n }\n\n return (\n \n \n
    \n \n \n \n \n \n {editable && (\n
    \n {\n setState(setAllPrivileges(state, !allSelected));\n }}\n data-testid=\"privileges-form-toggle-all\"\n />\n
    \n )}\n
    \n {state.map((category) => (\n
    \n
    \n \n setSubsets(category.name, newSubsets)\n }\n >\n {category.actions.map((action) => {\n return (\n \n setAction(category.name, nAction)\n }\n categoryName={category.name}\n subsetsAvailable={!category.subsets?.length}\n />\n );\n })}\n \n
    \n ))}\n
    \n
    \n \n \n \n );\n};\n\nexport default GroupPrivilegesForm;\n\nGroupPrivilegesForm.defaultProps = defaultProps;\n","import GroupPriviligesForm from './GroupPrivilegesForm';\n\nexport * from './GroupPrivilegesForm';\n\nexport default GroupPriviligesForm;\n","import React, { useEffect, useState } from 'react';\nimport { Form, Heading, Loading } from '@puppet/react-components';\nimport CommonForm from '@components/CommonForm';\nimport { useTranslation } from 'react-i18next';\nimport { useCreateGroupV1, useGetGroupV1 } from '@services/cd4pe/groups';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport Cd4peError from '@components/Cd4peError';\nimport alerts from '@state/ui/alerts';\nimport { useAppDispatch } from '@hooks/redux';\nimport { CommonFormChangeFunction } from '@components/CommonForm/CommonForm';\n\ninterface props {\n onCreateGroup: Function;\n groupId?: string;\n cancelCallback: Function;\n}\n\ninterface AddGroupNameFormValues {\n name: string;\n description: string;\n}\n\nconst defaultProps = {\n groupId: '',\n};\n\nconst AddGroupForm = ({ onCreateGroup, groupId, cancelCallback }: props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const createGroup = useCreateGroupV1();\n const {\n data: savedGroup,\n error: getGroupError,\n isLoading: groupLoading,\n } = useGetGroupV1(\n {\n workspaceId,\n groupId: Number(groupId),\n },\n {\n enabled: groupId !== '',\n },\n );\n const [formValues, setFormValues] = useState({\n name: '',\n description: '',\n });\n\n const [disableFields, setDisableFields] = useState(false);\n const appDispatch = useAppDispatch();\n\n const onChange: CommonFormChangeFunction = (\n _,\n values,\n ) => {\n setFormValues({\n ...values,\n name: values.name?.replaceAll(' ', '-'),\n } as AddGroupNameFormValues);\n };\n\n const onSubmit = () => {\n createGroup.mutate(\n {\n requestBody: {\n workspaceId,\n name: formValues.name,\n description: formValues.description,\n },\n },\n {\n onSuccess: (group) => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('addGroup.alerts.create.success', {\n name: group.name,\n }),\n }),\n );\n onCreateGroup(group.id, group.name);\n },\n },\n );\n };\n\n useEffect(() => {\n if (groupId) {\n setDisableFields(true);\n }\n }, [groupId]);\n\n useEffect(() => {\n if (savedGroup) {\n setFormValues({\n name: savedGroup.name,\n description: savedGroup.description!,\n });\n }\n }, [savedGroup]);\n\n if (groupId !== '' && groupLoading) {\n return ;\n }\n\n return (\n cancelCallback()}\n data-testid=\"add-group-form\"\n >\n \n \n
    \n {t('addGroup.form.header')}\n
    \n
    \n \n \n
    \n
    \n
    \n
    \n \n \n
    \n \n );\n};\n\nAddGroupForm.defaultProps = defaultProps;\n\nexport default AddGroupForm;\n","import AddGroup from './AddGroup';\n\nexport default AddGroup;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { Heading, Stepper } from '@puppet/react-components';\nimport PageLayout from '@components/PageLayout';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport { LINKS } from 'src/routes';\nimport GroupPrivilegesForm from '@codeDelivery/components/GroupPrivilegesForm';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport AddGroupForm from './components/AddGroupForm';\n\nconst AddGroup = () => {\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const appDispatch = useAppDispatch();\n const navigate = useNavigate();\n const [searchParams] = useSearchParams();\n const groupId = searchParams.get('groupId');\n const groupName = searchParams.get('groupName');\n const stepperIndex = Number(searchParams.get('stepperIndex'));\n\n const onCreateGroupSuccess = (id: string, name: string) => {\n navigate(\n LINKS.settings.addGroup({\n path: { workspace: workspaceName },\n query: { groupId: id, groupName: name, stepperIndex: 1 },\n }),\n );\n };\n\n const navigateToGroupsList = () => {\n navigate(\n LINKS.settings.listGroups({\n path: { workspace: workspaceName },\n query: { newGroupName: groupName || '' },\n }),\n );\n };\n\n const onSetPermissionsSuccess = () => {\n navigateToGroupsList();\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('addGroup.alerts.setPermissions.success', {\n name: groupName,\n }),\n }),\n );\n };\n\n const breadcrumbs = [\n { displayName: `${workspaceName}` },\n {\n displayName: t('addGroup.breadcrumbs.settings'),\n linkDestination: LINKS.settings.workspace({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t('addGroup.breadcrumbs.groupsPage'),\n linkDestination: LINKS.settings.listGroups({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t('addGroup.breadcrumbs.createNewGroup'),\n },\n ];\n\n return (\n \n \n \n \n \n {t('addGroup.page.title')}\n \n \n \n {t('addGroup.stepper.createGroup')}\n {t('addGroup.stepper.setPermissions')}\n \n \n {groupId && (\n \n )}\n \n \n );\n};\n\nexport default AddGroup;\n","import WorkspaceSettings from './WorkspaceSettings';\n\nexport default WorkspaceSettings;\n","import { Trans, useTranslation } from 'react-i18next';\nimport React, { useState } from 'react';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { Button, Form, Heading, Text } from '@puppet/react-components';\nimport CommonForm from '@components/CommonForm';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useNavigate } from 'react-router-dom';\nimport {\n useDeleteWorkspaceV1,\n useUpdateWorkspaceV1,\n} from '@services/cd4pe/workspaces';\nimport ConfirmDeleteModal from '@components/ConfirmDeleteModal';\nimport { formatError } from '@utils/api/cd4pe';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport { LINKS } from 'src/routes';\nimport session from '@state/session/session';\n\nconst WorkspaceSettings = () => {\n const [modalOpen, setModalOpen] = useState(false);\n const [newName, setNewName] = useState('');\n const { t } = useTranslation('codeDelivery');\n const navigate = useNavigate();\n const appDispatch = useAppDispatch();\n const workspaceName = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n\n const navigateToLandingPage = () => {\n navigate('/', { replace: true });\n };\n\n const updateWorkspace = useUpdateWorkspaceV1();\n\n const onRenameWorkspace = () => {\n updateWorkspace.mutate(\n { workspaceId, requestBody: { name: newName } },\n {\n onSuccess: () => {\n appDispatch(\n session.actions.renameWorkspace({ id: workspaceId, name: newName }),\n );\n\n navigate(\n LINKS.settings.workspace({\n path: { workspace: newName },\n }),\n );\n\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('workspaceSettings.rename.alert.success'),\n }),\n );\n },\n },\n );\n };\n\n const deleteWorkspace = useDeleteWorkspaceV1();\n\n const onDelete = () => {\n deleteWorkspace.mutate(\n { workspaceId },\n {\n onSuccess: () => {\n appDispatch(session.actions.removeWorkspace(workspaceId));\n navigateToLandingPage();\n\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('workspaceSettings.delete.alert.success'),\n }),\n );\n },\n },\n );\n };\n\n return (\n
    \n
    \n {t('workspaceSettings.header.text')}\n
    \n
    \n
    \n {t('workspaceSettings.rename.title')}\n {t('workspaceSettings.rename.description')}\n setNewName(formVals.newName ?? '')}\n error={updateWorkspace.error && formatError(updateWorkspace.error)}\n >\n \n \n
    \n
    \n {t('workspaceSettings.delete.title')}\n {t('workspaceSettings.delete.description')}\n setModalOpen(true)}\n >\n {t('workspaceSettings.delete.button')}\n \n setModalOpen(false)}\n onDelete={onDelete}\n confirmTextEntry={workspaceName}\n textEntryAriaLabel={t(\n 'workspaceSettings.delete.modal.textEntryAriaLabel',\n )}\n title={t('workspaceSettings.delete.modal.title')}\n alert={t('workspaceSettings.delete.modal.warning')}\n description={\n <>\n

    \n }}\n />\n

    \n

    {t('workspaceSettings.delete.modal.instructions')}

    \n \n }\n confirmLabel={t('workspaceSettings.delete.modal.confirmButton')}\n error={deleteWorkspace.error}\n />\n
    \n
    \n
    \n );\n};\n\nexport default WorkspaceSettings;\n","import SettingsSideNav from './SettingsSideNav';\n\nexport * from './SettingsSideNav';\nexport default SettingsSideNav;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@puppet/react-components';\nimport { LINKS } from 'src/routes';\n\nexport type SettingsSideNavKeys =\n | 'workspaces'\n | 'users'\n | 'groups'\n | 'ssh'\n | 'puppetEnterprise'\n | 'integrations';\n\ntype SettingsSectionNames = 'workspace' | 'rbac' | 'settings';\n\ninterface Props {\n workspace: {\n domain: string;\n name: string;\n username: string;\n };\n}\n\ninterface SidenavItem {\n text: string;\n href: string;\n name: SettingsSideNavKeys;\n testId?: string;\n}\n\nconst SettingsSideNav = ({ workspace }: Props) => {\n const workspaceLinks: SidenavItem[] = [];\n const rbacLinks: SidenavItem[] = [];\n const settingsLinks: SidenavItem[] = [];\n const isCurrentContextWorkspace = !!workspace.name;\n // TODO: why does this fallback to username?\n const workspaceName = isCurrentContextWorkspace\n ? workspace.name\n : workspace.username;\n\n const { t } = useTranslation('codeDelivery');\n\n if (isCurrentContextWorkspace) {\n workspaceLinks.push({\n text: t('settingsSideNav.workspaces'),\n href: LINKS.settings.workspace({\n path: { workspace: workspaceName },\n }),\n name: 'workspaces',\n });\n }\n\n rbacLinks.push({\n text: t('settingsSideNav.users'),\n href: LINKS.settings.listUsers({ path: { workspace: workspaceName! } }),\n name: 'users',\n });\n\n const groupLink = LINKS.settings.listGroups({\n path: { workspace: workspaceName! },\n });\n\n rbacLinks.push({\n text: t('settingsSideNav.groups'),\n href: groupLink,\n name: 'groups',\n });\n\n settingsLinks.push({\n text: t('settingsSideNav.ssh'),\n href: LINKS.settings.ssh({ path: { workspace: workspaceName! } }),\n name: 'ssh',\n });\n\n settingsLinks.push({\n text: t('settingsSideNav.puppetEnterprise'),\n href: LINKS.settings.listPuppetEnterprise({\n path: { workspace: workspaceName! },\n }),\n name: 'puppetEnterprise',\n });\n\n settingsLinks.push({\n text: t('settingsSideNav.integrations'),\n href: LINKS.settings.listSourceControl({\n path: { workspace: workspaceName },\n }),\n name: 'integrations',\n testId: 'SettingsContainer_Source controlSideNavItem_TestId',\n });\n\n const navItemButton = (navItem: SidenavItem) => {\n return (\n \n {navItem.text}\n \n );\n };\n\n const divider = (sectionName: SettingsSectionNames) => {\n return (\n \n );\n };\n\n const renderSideNavSection = (\n items: SidenavItem[],\n sectionName: SettingsSectionNames,\n endingDivider = true,\n ) => {\n const sectionElements = items.map(navItemButton);\n if (sectionElements.length > 0 && endingDivider) {\n return [...sectionElements, divider(sectionName)];\n }\n return sectionElements;\n };\n\n return (\n
    \n {renderSideNavSection(workspaceLinks, 'workspace')}\n {renderSideNavSection(rbacLinks, 'rbac')}\n {renderSideNavSection(settingsLinks, 'settings', false)}\n
    \n );\n};\n\nexport default SettingsSideNav;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Heading } from '@puppet/react-components';\nimport { selectUser } from '@state/session/selectors';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useAppSelector } from '@hooks/redux';\nimport { UserV1 } from '@utils/api/cd4pe';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport SettingsSideNav from '@codeDelivery/components/SettingsSideNav';\nimport { matchPath, Outlet, useLocation } from 'react-router-dom';\nimport PageLayout from '@components/PageLayout';\nimport { LINKS } from 'src/routes';\n\nconst defaultProps = {\n heading: '',\n selectedItem: undefined,\n};\n\nconst SettingsPage = () => {\n const { t } = useTranslation('codeDelivery');\n const user = useAppSelector(selectUser);\n const workspaceInfo = {\n name: useWorkspaceName(),\n domain: useWorkspaceDomain(),\n username: (user as UserV1).userName!,\n };\n\n const SETTINGS_PATHS: {\n breadcrumb: string;\n path: string;\n }[] = [\n {\n breadcrumb: 'workspace',\n path: LINKS.settings.workspace({\n path: { workspace: workspaceInfo.name },\n }),\n },\n {\n breadcrumb: 'groups',\n path: LINKS.settings.listGroups({\n path: { workspace: workspaceInfo.name },\n }),\n },\n {\n breadcrumb: 'users',\n path: LINKS.settings.listUsers({\n path: { workspace: workspaceInfo.name },\n }),\n },\n {\n breadcrumb: 'ssh',\n path: LINKS.settings.ssh({ path: { workspace: workspaceInfo.name } }),\n },\n {\n breadcrumb: 'puppetEnterprise',\n path: LINKS.settings.listPuppetEnterprise({\n path: { workspace: workspaceInfo.name },\n }),\n },\n {\n breadcrumb: 'sourceControl',\n path: LINKS.settings.listSourceControl({\n path: { workspace: workspaceInfo.name },\n }),\n },\n ];\n\n const location = useLocation();\n const matchedPath = SETTINGS_PATHS.find(\n (p) => matchPath(p.path, location.pathname) !== null,\n );\n\n const breadcrumbs = [\n { displayName: workspaceInfo.name },\n {\n displayName: t('settingsPage.breadcrumbs.settings'),\n linkDestination: LINKS.settings.workspace({\n path: { workspace: workspaceInfo.name },\n }),\n },\n ];\n\n if (!matchedPath) {\n return ;\n }\n\n return (\n \n \n \n \n \n\n {t('settingsPage.page.title')}\n \n\n \n \n\n
    \n \n
    \n
    \n
    \n );\n};\n\nSettingsPage.defaultProps = defaultProps;\n\nexport default SettingsPage;\n","import SettingsPage from './SettingsPage';\n\nexport default SettingsPage;\n","import React, { useCallback, useEffect } from 'react';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { Loading } from '@puppet/react-components';\nimport alerts from '@state/ui/alerts';\nimport { useAppDispatch } from '@hooks/redux';\nimport { useTranslation } from 'react-i18next';\nimport { LINKS } from 'src/routes';\nimport {\n useConnectAzureDevOpsV1,\n UseConnectAzureDevOpsV1Result,\n useConnectBitbucketCloudV1,\n UseConnectBitbucketCloudV1Result,\n useConnectGitHubV1,\n UseConnectGitHubV1Result,\n} from '@services/cd4pe/vcs';\nimport getProviderDisplayName from '@utils/vcs/displayNameHelper';\nimport * as Provider from '@utils/vcs/providerConsts';\n\ntype OAuthProvider = 'GITHUB' | 'BITBUCKET' | 'AZURE_DEVOPS';\n\nconst oauthProviderMap: {\n [provider: string]: () =>\n | UseConnectGitHubV1Result\n | UseConnectBitbucketCloudV1Result\n | UseConnectAzureDevOpsV1Result;\n} = {\n [Provider.GITHUB]: useConnectGitHubV1,\n [Provider.BITBUCKET]: useConnectBitbucketCloudV1,\n [Provider.AZURE_DEV_OPS]: useConnectAzureDevOpsV1,\n};\n\nconst OAuthRedirect = ({ provider }: { provider: OAuthProvider }) => {\n const { t } = useTranslation('codeDelivery');\n const navigate = useNavigate();\n const appDispatch = useAppDispatch();\n const providerDisplayName = getProviderDisplayName(provider);\n const [searchParams] = useSearchParams();\n const state = searchParams.get('state');\n const code = searchParams.get('code');\n const error =\n searchParams.get('error_description') ?? searchParams.get('error');\n\n const navigateOnError = useCallback(\n (msg: string) => {\n // this recreates the behaviour of the old oauth flow which navigates to a 403 screen on error,\n // it should be changed when we complete the screen migration\n navigate(\n LINKS.forbidden({\n query: {\n msg,\n },\n }),\n );\n },\n [navigate],\n );\n\n const { mutate: connectOAuthProvider } = oauthProviderMap[provider]();\n\n useEffect(() => {\n if (error) {\n navigateOnError(error);\n } else if (!state || !code) {\n navigateOnError(\n t('oauth.alerts.connect.missing.values', {\n provider: providerDisplayName,\n }),\n );\n }\n\n if (code && state) {\n connectOAuthProvider(\n { code, state },\n {\n onSuccess: ({ workspaceName }) => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('addSourceControl.alerts.connect.success', {\n provider: providerDisplayName,\n }),\n }),\n );\n navigate(\n LINKS.settings.listSourceControl({\n path: { workspace: workspaceName },\n }),\n );\n },\n onError: () => {\n navigateOnError(\n t('addSourceControl.oauth.error', {\n provider: providerDisplayName,\n }),\n );\n },\n },\n );\n }\n }, [\n appDispatch,\n code,\n connectOAuthProvider,\n error,\n navigate,\n navigateOnError,\n providerDisplayName,\n state,\n t,\n ]);\n\n return ;\n};\n\nexport default OAuthRedirect;\n","import OAuthRedirect from './OAuthRedirect';\n\nexport default OAuthRedirect;\n","import { Table, TableHeader } from '@puppet/data-grid';\nimport { Button } from '@puppet/react-components';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport {\n AddGroupMembersRequestV1,\n GroupMemberCandidateV1,\n} from '@puppet/cd4pe-client-ts';\nimport {\n useAddGroupMembersV1,\n useListGroupMemberCandidatesV1,\n} from '@services/cd4pe/groups';\nimport { useTranslation } from 'react-i18next';\nimport Cd4peError from '@components/Cd4peError';\nimport { useNavigate } from 'react-router-dom';\nimport { LINKS } from 'src/routes';\nimport { stringCompare } from '@utils/compare';\n\ninterface props {\n groupId: string | undefined;\n workspace: string;\n}\n\nexport interface RowData extends GroupMemberCandidateV1 {\n selected?: boolean;\n}\n\ntype SortUsers = {\n direction: string;\n sortDataKey: string;\n};\n\nconst columns = [{ label: 'User', dataKey: 'name' }];\n\nconst AddUserForm = ({ groupId, workspace }: props) => {\n const [selectedData, setSelectedData] = useState([]);\n const [checkAll, setCheckAll] = useState(false);\n const [indeterminateState, setIndeterminateState] = useState(false);\n const [searchValue, setSearchValue] = useState('');\n const [sortUsers, setSortUsers] = useState({\n direction: 'asc',\n sortDataKey: 'name',\n });\n const { t } = useTranslation('codeDelivery');\n\n const navigate = useNavigate();\n\n const {\n isLoading: isLoadingUsers,\n error: userError,\n data: users,\n } = useListGroupMemberCandidatesV1({\n groupId: Number(groupId),\n });\n\n const derivedUsers = useMemo(\n () =>\n users?.groupMemberCandidates\n ?.filter(({ name }) =>\n name.toLowerCase().includes(searchValue.toLowerCase()),\n )\n ?.map((user) => ({\n ...user,\n selected: selectedData.includes(user.name),\n }))\n ?.sort(\n (a, b) =>\n (sortUsers.direction === 'asc' ? 1 : -1) *\n stringCompare(a.name, b.name),\n ) ?? [],\n [users, selectedData, sortUsers, searchValue],\n );\n\n const onUserRowSelected = (checked: boolean, rowData: RowData) => {\n if (!derivedUsers) {\n return;\n }\n\n const newSelectedData = [...selectedData];\n\n if (checked && !newSelectedData.includes(rowData.name)) {\n setSelectedData([...newSelectedData, rowData.name]);\n } else {\n const index = newSelectedData.findIndex((name) => rowData.name === name);\n if (index > -1) {\n newSelectedData.splice(index, 1);\n }\n setSelectedData(newSelectedData);\n }\n };\n\n const onHeaderSelected = async (checked: boolean) => {\n if (!derivedUsers) {\n return;\n }\n if (checked) {\n setSelectedData(derivedUsers?.map((user) => user.name) ?? []);\n } else {\n setSelectedData([]);\n }\n };\n\n const checkIfIndeterminateState = () => {\n let checkAllValue = false;\n let indeterminateStateValue = false;\n\n if (derivedUsers?.length === 0) {\n return { indeterminateStateValue: false, checkAllValue: false };\n }\n\n if (derivedUsers?.length === selectedData?.length) {\n indeterminateStateValue = false;\n checkAllValue = true;\n } else if (selectedData?.length > 0) {\n indeterminateStateValue = true;\n checkAllValue = false;\n }\n\n return { checkAllValue, indeterminateStateValue };\n };\n\n useEffect(() => {\n if (!derivedUsers) {\n return;\n }\n\n const { checkAllValue, indeterminateStateValue } =\n checkIfIndeterminateState();\n\n setCheckAll(checkAllValue);\n setIndeterminateState(indeterminateStateValue);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [derivedUsers, selectedData]);\n\n const navigateToGroup = () => {\n navigate(\n LINKS.settings.viewGroup({\n path: { workspace, groupId },\n }),\n );\n };\n\n const addUserToGroup = useAddGroupMembersV1();\n const onSubmit = async () => {\n const userIds = derivedUsers\n .filter((item) => selectedData.includes(item.name))\n .map((a) => a.userId);\n\n const requestBody: AddGroupMembersRequestV1 = { userIds };\n\n addUserToGroup.mutate(\n {\n groupId: Number(groupId),\n requestBody,\n },\n { onSuccess: () => navigateToGroup() },\n );\n };\n\n return (\n
    \n
    \n \n setSearchValue(newSearchValue)\n }\n />\n
    \n setSortUsers({ direction, sortDataKey })}\n sortedColumn={sortUsers}\n selectable\n emptyStateHeader={t('addGroupUsers.table.emptyState.header')}\n emptyStateMessage=\"\"\n onRowChecked={onUserRowSelected}\n onHeaderChecked={onHeaderSelected}\n headerCheckState={checkAll}\n headerIndeterminateState={indeterminateState}\n data-testid=\"add-group-users-table\"\n />\n
    \n
    \n \n {t('addGroupUsers.button.addUsers')}\n \n \n
    \n
    \n \n \n
    \n
    \n
    \n );\n};\n\nexport default AddUserForm;\n","import React, { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport PageLayout from '@components/PageLayout';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport AddUserForm from '@codeDelivery/views/AddUserToGroup/components/AddUserForm';\nimport { Heading } from '@puppet/react-components';\nimport { RbacGroupV1 } from '@puppet/cd4pe-client-ts';\nimport { useGetGroupV1 } from '@services/cd4pe/groups';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport alerts from '@state/ui/alerts';\nimport { useAppDispatch } from '@hooks/redux';\nimport { LINKS } from '../../../routes';\n\nconst breadcrumbsRender = (\n t: Function,\n workspace: string,\n group: RbacGroupV1 | undefined,\n groupId: string | undefined,\n) => {\n const breadcrumbs = [\n { displayName: `${workspace}` },\n {\n displayName: t('addGroupUsers.breadcrumbs.settings'),\n linkDestination: LINKS.settings.workspace({\n path: { workspace },\n }),\n },\n {\n displayName: t('addGroupUsers.breadcrumbs.groupsPage'),\n linkDestination: LINKS.settings.listGroups({\n path: { workspace },\n }),\n },\n {\n displayName: group?.name ?? t('addGroupUsers.groupName.empty'),\n linkDestination: LINKS.settings.viewGroup({\n path: { workspace, groupId },\n }),\n },\n {\n displayName: t('addGroupUsers.breadcrumb.addUsers'),\n },\n ];\n return breadcrumbs;\n};\n\nconst AddUserToGroup = () => {\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const appDispatch = useAppDispatch();\n const navigate = useNavigate();\n const { groupId } = useParams<{ groupId: string }>();\n const { error: groupError, data: group } = useGetGroupV1({\n workspaceId,\n groupId: Number(groupId),\n });\n\n useEffect(() => {\n if (groupError) {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Error',\n message: t('addGroupUsers.error.groupErrorMessage', {\n provider: groupError,\n }),\n }),\n );\n navigate(\n LINKS.settings.listGroups({\n path: { workspace: workspaceName },\n }),\n );\n }\n }, [appDispatch, groupError, navigate, t, workspaceName]);\n\n return (\n \n \n \n \n \n \n {t('addGroupUsers.title', { group: group?.name ?? '' })}\n \n \n \n {t('addGroupUsers.table.header')}\n \n \n \n );\n};\n\nexport default AddUserToGroup;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Button, Heading, Card, Text } from '@puppet/react-components';\nimport { JobHardwareNodeV1 } from '@utils/api/cd4pe';\n\ntype FormSidebarProps = {\n nodes: JobHardwareNodeV1[];\n onDeleteAll: () => void;\n onDeleteNode: (index: number) => void;\n};\n\nconst FormSidebar = ({\n nodes,\n onDeleteAll,\n onDeleteNode,\n}: FormSidebarProps) => {\n const { t } = useTranslation('codeDelivery');\n return (\n <>\n
    \n \n {t('jobHardwareCapability.section.nodes.sidebar')}\n \n \n
    \n \n {nodes.map((node, index) => (\n \n \n \n {node.name}\n \n \n {node.peServerName}\n \n \n onDeleteNode(index)}\n aria-label={t(\n 'jobHardwareCapability.section.nodes.sidebar.deleteNode.ariaLabel',\n { name: node.name },\n )}\n />\n \n ))}\n
    \n \n );\n};\n\nexport default FormSidebar;\n","import React, { PropsWithChildren } from 'react';\nimport { NavLink } from 'react-router-dom';\nimport { Alert, Link, Loading } from '@puppet/react-components';\nimport { useTranslation, Trans } from 'react-i18next';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { UseListPeIntegrationsV2Result } from '@services/cd4pe/peIntegrations';\nimport { LINKS } from 'src/routes';\n\nconst PeIntegrationSelect = ({\n peServers,\n children,\n}: PropsWithChildren<{\n peServers: UseListPeIntegrationsV2Result;\n}>) => {\n const workspaceName = useWorkspaceName();\n const { t } = useTranslation('codeDelivery');\n\n if (peServers.isLoading) {\n return (\n
    \n \n
    \n );\n }\n\n if (peServers?.data?.peIntegrations?.length === 0) {\n return (\n \n ,\n ]}\n />\n \n );\n }\n\n // eslint-disable-next-line react/jsx-no-useless-fragment\n return <>{children};\n};\n\nexport default PeIntegrationSelect;\n","/* eslint-disable import/prefer-default-export */\nimport { JobHardwareNodeV1 } from '@utils/api/cd4pe';\n\nexport type Node = JobHardwareNodeV1 & { selected?: boolean };\nexport type NodeList = Node[] | [];\n\nexport const compareNodes = (a: JobHardwareNodeV1, b: JobHardwareNodeV1) => {\n return a.name === b.name && a.peServerName === b.peServerName;\n};\n","import React, { useMemo } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { TableHeader } from '@puppet/data-grid';\nimport Table from '@components/Table';\nimport CursorPagination from '@codeDelivery/components/CursorPagination';\nimport { UseListAvailableNodesV1Result } from '@services/cd4pe/hardware';\nimport { compareNodes, Node, NodeList } from './utils';\n\nconst getTableTranslations = (\n searchTerm: string,\n isLoading: boolean,\n t: Function,\n) => {\n if (isLoading) {\n return {\n heading: '',\n message: '',\n };\n }\n\n if (searchTerm) {\n return {\n heading: t('jobHardwareCapability.table.emptyState.noResults'),\n message: '',\n };\n }\n\n return {\n heading: t('jobHardwareCapability.table.emptyState.noData'),\n message: '',\n };\n};\n\nconst checkIfIndeterminateState = (data: NodeList, selectedData: NodeList) => {\n if (data.length === 0) {\n return { checkAll: false, indeterminateState: false };\n }\n\n if (data.every((d) => selectedData.find((s) => compareNodes(d, s)))) {\n return { checkAll: true, indeterminateState: false };\n }\n\n if (data.some((d) => selectedData.find((s) => compareNodes(d, s)))) {\n return { checkAll: false, indeterminateState: true };\n }\n\n return { checkAll: false, indeterminateState: false };\n};\n\nconst NodeTable = ({\n searchTerm,\n appliedSearchTerm,\n handleSearch,\n nodesQuery,\n selectedNodes,\n onSetSelectedNodes,\n currentPage,\n onChangeCurrentPage,\n}: {\n searchTerm: string;\n appliedSearchTerm: string;\n handleSearch: (newSearchTerm: string) => void;\n selectedNodes: NodeList;\n nodesQuery: UseListAvailableNodesV1Result;\n onSetSelectedNodes: (newSelectedNodes: NodeList) => void;\n currentPage: number;\n onChangeCurrentPage: (newPage: number) => void;\n}) => {\n const { t } = useTranslation('codeDelivery');\n\n const tableColumns = [\n {\n label: t('jobHardwareCapability.section.nodes.table.columns.name'),\n dataKey: 'name',\n },\n {\n label: t('jobHardwareCapability.section.nodes.table.columns.os'),\n dataKey: 'operatingSystem',\n },\n ];\n\n const page: NodeList = useMemo(\n () =>\n nodesQuery?.data?.pages?.[currentPage]?.nodes?.map((node) => ({\n ...node,\n selected: selectedNodes?.some((selectedNode) =>\n compareNodes(selectedNode, node),\n ),\n })) ?? [],\n [nodesQuery, currentPage, selectedNodes],\n );\n\n const { checkAll, indeterminateState } = checkIfIndeterminateState(\n page,\n selectedNodes,\n );\n\n const { heading, message } = getTableTranslations(\n appliedSearchTerm,\n nodesQuery.isLoading || nodesQuery.isFetching,\n t,\n );\n\n const onRowChecked = (checked: boolean, rowData: Node) => {\n if (checked) {\n onSetSelectedNodes([...selectedNodes, rowData]);\n } else {\n onSetSelectedNodes(\n selectedNodes.filter((node) => !compareNodes(node, rowData)),\n );\n }\n };\n\n const onHeaderChecked = (checked: boolean) => {\n const selectedNodesClone = window.structuredClone(selectedNodes);\n\n if (checked) {\n const nodesToAdd = page.filter((node) => !node.selected);\n if (nodesToAdd.length) {\n onSetSelectedNodes(selectedNodesClone.concat(nodesToAdd));\n }\n } else {\n page.forEach((node) => {\n if (node.selected) {\n const index = selectedNodesClone.findIndex((selected: Node) =>\n compareNodes(node, selected),\n );\n selectedNodesClone.splice(index, 1);\n }\n });\n\n onSetSelectedNodes(selectedNodesClone);\n }\n };\n\n return (\n
    \n {\n handleSearch(newSearchTerm);\n onChangeCurrentPage(0);\n }}\n />\n \n {\n if (\n newPage === (nodesQuery.data?.pages.length ?? 0) &&\n !nodesQuery.isFetchingNextPage\n ) {\n nodesQuery.fetchNextPage();\n }\n onChangeCurrentPage(newPage);\n }}\n currentPage={currentPage}\n hasNextPage={\n (nodesQuery.hasNextPage && !nodesQuery.isFetchingNextPage) ||\n (nodesQuery.data?.pages?.length === currentPage + 1 &&\n nodesQuery.isFetchingNextPage) ||\n !!nodesQuery.data?.pages?.[currentPage + 1]\n }\n hasPreviousPage={!!nodesQuery.data?.pages?.[currentPage - 1]}\n />\n
    \n );\n};\n\nexport default NodeTable;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport CommonForm from '@components/CommonForm';\nimport { Heading, Form, Link } from '@puppet/react-components';\nimport useDebouncedSearch from '@hooks/useDebouncedSearch';\nimport { useListPeIntegrationsV2 } from '@services/cd4pe/peIntegrations';\nimport { useListAvailableNodesV1 } from '@services/cd4pe/hardware';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport {\n CreateJobHardwareCapabilitiesRequestV1,\n UpdateJobHardwareCapabilitiesRequestV1,\n} from '@utils/api/cd4pe';\nimport Cd4peError from '@components/Cd4peError';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport FormSidebar from './FormSidebar';\nimport PeIntegrationSelect from './PeServerSelect';\nimport NodeTable from './NodeTable';\nimport { NodeList } from './utils';\n\ntype Props = {\n initialName?: string;\n initialNodes?: NodeList;\n onSubmit: (\n payload:\n | CreateJobHardwareCapabilitiesRequestV1\n | UpdateJobHardwareCapabilitiesRequestV1,\n ) => void;\n onCancel: () => void;\n};\n\ntype FormValues = {\n capabilityName: string;\n peServer: string;\n};\n\nconst JobHardwareCapabilityForm = ({\n initialName = '',\n initialNodes = [],\n onSubmit,\n onCancel,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const { searchTerm, appliedSearchTerm, handleSearch } = useDebouncedSearch();\n const [currentPage, setCurrentPage] = useState(0);\n\n const [selectedNodes, setSelectedNodes] = useState(initialNodes);\n const [formValues, setFormValues] = useState({\n capabilityName: initialName,\n peServer: '',\n });\n\n const peServers = useListPeIntegrationsV2({ workspaceId });\n const nodes = useListAvailableNodesV1(\n {\n workspaceId,\n peIntegrationName: formValues.peServer,\n prefix: appliedSearchTerm,\n },\n {\n enabled: !!formValues.peServer,\n },\n );\n\n return (\n {\n onSubmit({\n displayName: formValues.capabilityName,\n nodes: selectedNodes.map(\n ({ name, peServerName, operatingSystem }) => ({\n name,\n peServerName,\n operatingSystem,\n }),\n ),\n });\n }}\n onChange={(_, values) => {\n setFormValues((oldValues) => {\n if (oldValues.peServer !== values.peServer) setCurrentPage(0);\n return {\n ...values,\n capabilityName: values.capabilityName?.replaceAll(' ', '-'),\n } as FormValues;\n });\n }}\n onCancel={onCancel}\n data-testid=\"job-hardware-capability-form\"\n >\n \n \n \n {t('jobHardwareCapability.section.name.heading')}\n \n
    \n \n
    \n
    \n
    \n \n \n \n {t('jobHardwareCapability.section.nodes.heading')}\n \n
    \n \n {t('jobHardwareCapability.section.nodes.link')}\n \n
    \n
    \n \n {t('jobHardwareCapability.section.nodes.fields.certname.label')}\n \n \n {t('jobHardwareCapability.section.nodes.fields.certname.value')}\n
    \n \n \n \n ({\n value: pe.name,\n label: pe.name,\n })) ?? []\n }\n placeholder={t(\n 'jobHardwareCapability.section.nodes.fields.pe.placeholder',\n )}\n />\n \n \n {formValues.peServer && (\n \n setSelectedNodes(newSelectedNodes)\n }\n currentPage={currentPage}\n onChangeCurrentPage={(newPage: number) => setCurrentPage(newPage)}\n />\n )}\n
    \n \n setSelectedNodes([])}\n onDeleteNode={(index: number) => {\n const clone = window.structuredClone(selectedNodes);\n clone.splice(index, 1);\n setSelectedNodes(clone);\n }}\n />\n \n
    \n \n \n \n );\n};\n\nexport default JobHardwareCapabilityForm;\n","import JobHardwareCapabilityForm from './JobHardwareCapabilityForm';\n\nexport default JobHardwareCapabilityForm;\n","import React from 'react';\nimport { Heading, Loading } from '@puppet/react-components';\nimport PageLayout from '@components/PageLayout';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport { useTranslation } from 'react-i18next';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useAppDispatch } from '@hooks/redux';\nimport {\n useUpdateHardwareCapabilityV1,\n useGetJobHardwareCapabilityV1,\n} from '@services/cd4pe/hardware';\n\nimport alerts from '@state/ui/alerts';\nimport Cd4peError from '@components/Cd4peError';\nimport JobHardwareCapabilityForm from '@codeDelivery/components/JobHardwareCapabilityForm';\nimport { UpdateJobHardwareCapabilitiesRequestV1 } from '@puppet/cd4pe-client-ts';\nimport { LINKS } from 'src/routes';\n\nconst breadcrumbsRender = (t: Function, workspace: string) => {\n const breadcrumbs = [\n { displayName: `${workspace}` },\n {\n displayName: t('jobHardware.breadcrumbs.hardware'),\n linkDestination: LINKS.codeDelivery.jobHardware({\n path: { workspace },\n }),\n },\n { displayName: `${t('editCapability.breadcrumb')}` },\n ];\n return breadcrumbs;\n};\n\nconst EditCapability = () => {\n const { capabilityId } = useParams<{ capabilityId: string }>();\n const { t } = useTranslation('codeDelivery');\n const navigate = useNavigate();\n const workspaceName = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const appDispatch = useAppDispatch();\n const updateCapability = useUpdateHardwareCapabilityV1();\n\n const {\n error: getCapabilityError,\n isLoading,\n data: capability,\n } = useGetJobHardwareCapabilityV1({ workspaceId, id: Number(capabilityId) });\n\n const navigateToHardwareList = () => {\n navigate(\n LINKS.codeDelivery.jobHardware({ path: { workspace: workspaceName } }),\n );\n };\n\n const onSubmit = (payload: UpdateJobHardwareCapabilitiesRequestV1) => {\n updateCapability.mutate(\n {\n workspaceId,\n id: Number(capabilityId),\n requestBody: {\n displayName: payload.displayName!,\n nodes: payload.nodes!,\n },\n },\n {\n onSuccess: (updatedCapability) => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('jobHardware.alerts.update.success', {\n capabilityName: updatedCapability.displayName,\n }),\n }),\n );\n navigateToHardwareList();\n },\n },\n );\n };\n\n return (\n \n \n \n \n \n {t('editCapability.header')}\n \n \n {isLoading ? (\n \n ) : (\n \n )}\n \n \n \n \n );\n};\n\nexport default EditCapability;\n","import EditCapability from '@codeDelivery/views/EditCapability/EditCapability';\n\nexport default EditCapability;\n","import * as Provider from '@utils/vcs/providerConsts';\nimport { VcsProviderV1 } from '@puppet/cd4pe-client-ts';\n\n// eslint-disable-next-line no-script-url\nexport const DEFAULT_LINK = 'javascript:;';\nconst GITHUB_HOST = 'https://github.com';\nconst AZURE_DEVOPS_HOST = 'https://dev.azure.com';\n\ninterface Event {\n repoProvider: VcsProviderV1;\n repoUrl: string;\n branch: string;\n commitId: string;\n}\n\n// Repository links\nfunction getAzureDevOpsRepoLink(\n host: string,\n owner: string,\n project: string,\n repo: string,\n) {\n if (!owner || !project || !repo) {\n return DEFAULT_LINK;\n }\n\n if (host) {\n return `https://${host}/${owner}/${project}/_git/${repo}`;\n }\n\n return `${AZURE_DEVOPS_HOST}/${owner}/${project}/_git/${repo}`;\n}\n\nfunction getGithubRepoLink(owner: string, repo: string) {\n if (!owner || !repo) {\n return DEFAULT_LINK;\n }\n\n return `https://github.com/${owner.toLowerCase()}/${repo.toLowerCase()}`;\n}\n\nfunction getGithubEnterpriseRepoLink(\n host: string,\n owner: string,\n repo: string,\n) {\n if (!host || !owner || !repo) {\n return DEFAULT_LINK;\n }\n\n return `https://${host}/${owner.toLowerCase()}/${repo.toLowerCase()}`;\n}\n\nfunction getGitLabRepoLink(host: string, owner: string, repo: string) {\n if (!host || !owner || !repo) {\n return DEFAULT_LINK;\n }\n\n return `${host}/${owner.toLowerCase()}/${repo\n .toLowerCase()\n .split(' ')\n .join('-')}`;\n}\n\nfunction getBitbucketServerRepoLink(host: string, owner: string, repo: string) {\n if (!host || !owner || !repo) {\n return DEFAULT_LINK;\n }\n\n return `${host}/projects/${owner}/repos/${repo.toLowerCase()}`;\n}\n\nfunction getBitbucketRepoLink(owner: string, repo: string) {\n if (!owner || !repo) {\n return DEFAULT_LINK;\n }\n\n return `https://bitbucket.org/${owner.toLowerCase()}/${repo\n .toLowerCase()\n .split(' ')\n .join('-')}`;\n}\n\n// Branch links\nfunction getAzureDevOpsBranchLink(\n host: string,\n owner: string,\n project: string,\n repo: string,\n branch: string,\n) {\n if (!owner || !project || !branch || !repo) {\n return DEFAULT_LINK;\n }\n\n return `${getAzureDevOpsRepoLink(\n host,\n owner,\n project,\n repo,\n )}?version=GB${branch}`;\n}\n\nfunction getGithubRepoBranchLink(owner: string, repo: string, branch: string) {\n if (!owner || !branch || !repo) {\n return DEFAULT_LINK;\n }\n\n return `https://github.com/${owner.toLowerCase()}/${repo.toLowerCase()}/tree/${branch}`;\n}\n\nfunction getGithubEnterpriseRepoBranchLink(\n host: string,\n owner: string,\n repo: string,\n branch: string,\n) {\n if (!host || !owner || !repo || !branch) {\n return DEFAULT_LINK;\n }\n\n return `https://${host}/${owner.toLowerCase()}/${repo.toLowerCase()}/tree/${branch}`;\n}\n\nfunction getGitLabRepoBranchLink(\n host: string,\n owner: string,\n repo: string,\n branch: string,\n) {\n if (!host || !owner || !repo || !branch) {\n return DEFAULT_LINK;\n }\n\n return `${host}/${owner.toLowerCase()}/${repo.toLowerCase()}/tree/${branch}`;\n}\n\nfunction getBitbucketServerRepoBranchLink(\n host: string,\n owner: string,\n repo: string,\n branch: string,\n) {\n if (!host || !owner || !repo || !branch) {\n return DEFAULT_LINK;\n }\n\n return `${host}/projects/${owner}/repos/${repo.toLowerCase()}/browse?at=${encodeURIComponent(\n `refs/heads/${branch}`,\n )}`;\n}\n\nfunction getBitbucketRepoBranchLink(\n owner: string,\n repo: string,\n branch: string,\n) {\n if (!owner || !repo || !branch) {\n return DEFAULT_LINK;\n }\n\n return `https://bitbucket.org/${owner.toLowerCase()}/${repo\n .toLowerCase()\n .split(' ')\n .join('-')}/branch/${branch}`;\n}\n\n// commit links\nfunction getAzureDevOpsCommitLink(\n host: string,\n owner: string,\n project: string,\n repo: string,\n commitId: string,\n) {\n if (!owner || !project || !repo || !commitId) {\n return DEFAULT_LINK;\n }\n\n return `${getAzureDevOpsRepoLink(\n host,\n owner,\n project,\n repo,\n )}/commit/${commitId}`;\n}\n\nfunction getGithubCommitLink(owner: string, repo: string, commitId: string) {\n if (!owner || !repo || !commitId) {\n return DEFAULT_LINK;\n }\n\n return `https://github.com/${owner.toLowerCase()}/${repo.toLowerCase()}/commit/${commitId.toLowerCase()}`;\n}\n\nfunction getGithubEnterpriseCommitLink(\n host: string,\n owner: string,\n repo: string,\n commitId: string,\n) {\n if (!host || !owner || !repo || !commitId) {\n return DEFAULT_LINK;\n }\n\n return `https://${host}/${owner.toLowerCase()}/${repo.toLowerCase()}/commit/${commitId.toLowerCase()}`;\n}\n\nfunction getGitLabCommitLink(\n host: string,\n owner: string,\n repo: string,\n commitId: string,\n) {\n if (!host || !owner || !repo || !commitId) {\n return DEFAULT_LINK;\n }\n\n return `${host}/${owner.toLowerCase()}/${repo.toLowerCase()}/commit/${commitId.toLowerCase()}`;\n}\n\nfunction getBitbucketServerCommitLink(\n host: string,\n owner: string,\n repo: string,\n commitId: string,\n) {\n if (!host || !owner || !repo || !commitId) {\n return DEFAULT_LINK;\n }\n\n const indexOfTilde = owner.indexOf('~');\n let repoOwner = owner;\n let usersOrProjects = 'projects';\n\n if (indexOfTilde === 0) {\n repoOwner = owner.slice(indexOfTilde + 1);\n usersOrProjects = 'users';\n }\n\n return `${host}/${usersOrProjects}/${repoOwner}/repos/${repo.toLowerCase()}/commits/${commitId}`;\n}\n\nfunction getBitbucketCommitLink(owner: string, repo: string, commitId: string) {\n if (!owner || !repo || !commitId) {\n return DEFAULT_LINK;\n }\n\n return `https://bitbucket.org/${owner.toLowerCase()}/${repo\n .toLowerCase()\n .split(' ')\n .join('-')}/commits/${commitId.toLowerCase()}`;\n}\n\n// profile links\nfunction getAzureDevOpsProfileLink() {\n // not currently supported for Azure Dev Ops\n return DEFAULT_LINK;\n}\n\nfunction getGithubProfileLink(owner: string) {\n if (!owner) {\n return DEFAULT_LINK;\n }\n\n return `https://github.com/${owner.toLowerCase()}`;\n}\n\nfunction getBitbucketProfileLink(owner: string) {\n if (!owner) {\n return DEFAULT_LINK;\n }\n\n return `https://bitbucket.org/${owner.toLowerCase()}`;\n}\n\nfunction getGithubEnterpriseProfileLink(host: string, owner: string) {\n if (!host || !owner) {\n return DEFAULT_LINK;\n }\n\n return `https://${host}/${owner.toLowerCase()}`;\n}\n\nexport function getCommitLink(\n provider: VcsProviderV1,\n owner: string,\n repoName: string,\n repoId: string,\n host: string,\n commitId: string,\n) {\n let link = DEFAULT_LINK;\n\n if (provider === Provider.GITHUB) {\n link = getGithubCommitLink(owner, repoName, commitId);\n } else if (provider === Provider.BITBUCKET) {\n link = getBitbucketCommitLink(owner, repoName, commitId);\n } else if (provider === Provider.GITLAB) {\n link = getGitLabCommitLink(host, owner, repoName, commitId);\n } else if (provider === Provider.BITBUCKET_SERVER) {\n link = getBitbucketServerCommitLink(host, repoId, repoName, commitId);\n } else if (provider === Provider.GITHUB_ENTERPRISE) {\n link = getGithubEnterpriseCommitLink(host, owner, repoName, commitId);\n } else if (provider === Provider.AZURE_DEV_OPS) {\n link = getAzureDevOpsCommitLink(host, owner, repoId, repoName, commitId);\n }\n\n return link;\n}\n\nexport function getRepoLink(\n provider: VcsProviderV1,\n owner: string,\n repoName: string,\n repoId: string,\n host: string,\n) {\n let link = DEFAULT_LINK;\n\n if (provider === Provider.GITHUB) {\n link = getGithubRepoLink(owner, repoName);\n } else if (provider === Provider.BITBUCKET) {\n link = getBitbucketRepoLink(owner, repoName);\n } else if (provider === Provider.GITLAB) {\n link = getGitLabRepoLink(host, owner, repoName);\n } else if (provider === Provider.BITBUCKET_SERVER) {\n link = getBitbucketServerRepoLink(host, repoId, repoName);\n } else if (provider === Provider.GITHUB_ENTERPRISE) {\n link = getGithubEnterpriseRepoLink(host, owner, repoName);\n } else if (provider === Provider.AZURE_DEV_OPS) {\n link = getAzureDevOpsRepoLink(host, owner, repoId, repoName);\n }\n\n return link;\n}\n\nexport function getBranchLink(\n provider: VcsProviderV1,\n owner: string,\n repoName: string,\n repoId: string,\n host: string,\n branch: string,\n) {\n let link = DEFAULT_LINK;\n\n if (provider === Provider.GITHUB) {\n link = getGithubRepoBranchLink(owner, repoName, branch);\n } else if (provider === Provider.BITBUCKET) {\n link = getBitbucketRepoBranchLink(owner, repoName, branch);\n } else if (provider === Provider.GITLAB) {\n link = getGitLabRepoBranchLink(host, owner, repoName, branch);\n } else if (provider === Provider.BITBUCKET_SERVER) {\n link = getBitbucketServerRepoBranchLink(host, repoId, repoName, branch);\n } else if (provider === Provider.GITHUB_ENTERPRISE) {\n link = getGithubEnterpriseRepoBranchLink(host, owner, repoName, branch);\n } else if (provider === Provider.AZURE_DEV_OPS) {\n link = getAzureDevOpsBranchLink(host, owner, repoId, repoName, branch);\n }\n\n return link;\n}\n\nexport function getProfileLink(\n provider: VcsProviderV1,\n owner: string,\n host: string,\n) {\n let link = DEFAULT_LINK;\n\n if (provider === Provider.GITHUB) {\n link = getGithubProfileLink(owner);\n } else if (provider === Provider.BITBUCKET) {\n link = getBitbucketProfileLink(owner);\n } else if (provider === Provider.GITLAB) {\n link = DEFAULT_LINK; // TODO: implement this\n } else if (provider === Provider.BITBUCKET_SERVER) {\n link = DEFAULT_LINK; // TODO: implement this\n } else if (provider === Provider.GITHUB_ENTERPRISE) {\n link = getGithubEnterpriseProfileLink(host, owner);\n } else if (provider === Provider.AZURE_DEV_OPS) {\n link = getAzureDevOpsProfileLink();\n }\n\n return link;\n}\n\nexport function getAppEventBranchLink(event: Event) {\n if (\n event.repoProvider === Provider.GITHUB ||\n event.repoProvider === Provider.GITHUB_ENTERPRISE\n ) {\n return `${event.repoUrl}/tree/${event.branch}`;\n }\n\n if (event.repoProvider === Provider.BITBUCKET) {\n return `${event.repoUrl}/branch/${event.branch}`;\n }\n\n if (event.repoProvider === Provider.BITBUCKET_SERVER) {\n return `${event.repoUrl}/browse?at=${encodeURIComponent(\n `refs/heads/${event.branch}`,\n )}`;\n }\n\n if (event.repoProvider === Provider.GITLAB) {\n return `${event.repoUrl}/tree/${event.branch}`;\n }\n\n if (event.repoProvider === Provider.AZURE_DEV_OPS) {\n return `${event.repoUrl}?version=GB${event.branch}`;\n }\n\n return DEFAULT_LINK;\n}\n\nexport function getAppEventCommitLink(event: Event) {\n if (\n event.repoProvider === Provider.GITHUB ||\n event.repoProvider === Provider.GITHUB_ENTERPRISE ||\n event.repoProvider === Provider.GITLAB ||\n event.repoProvider === Provider.AZURE_DEV_OPS\n ) {\n return `${event.repoUrl}/commit/${event.commitId}`;\n }\n\n if (\n event.repoProvider === Provider.BITBUCKET ||\n event.repoProvider === Provider.BITBUCKET_SERVER\n ) {\n return `${event.repoUrl}/commits/${event.commitId}`;\n }\n\n return DEFAULT_LINK;\n}\n\nexport function toPrettyProviderName(srcProvider: VcsProviderV1) {\n let provider = '';\n\n if (srcProvider === Provider.GITHUB) {\n provider = 'GitHub';\n } else if (srcProvider === Provider.BITBUCKET) {\n provider = 'Bitbucket Cloud';\n } else if (srcProvider === Provider.GITLAB) {\n provider = 'GitLab';\n } else if (srcProvider === Provider.BITBUCKET_SERVER) {\n provider = 'Bitbucket Server';\n } else if (srcProvider === Provider.GITHUB_ENTERPRISE) {\n provider = 'GitHub Enterprise';\n } else if (srcProvider === Provider.AZURE_DEV_OPS) {\n provider = 'Azure DevOps';\n }\n\n return provider;\n}\n\nexport function getRepoHost(\n provider: VcsProviderV1,\n hostMap: Map,\n) {\n if (!provider) {\n return null;\n }\n\n switch (provider) {\n case Provider.GITHUB:\n return GITHUB_HOST;\n default:\n return hostMap.get(provider);\n }\n}\n","import { useListIntegrationsV1 } from '@services/cd4pe/vcs';\nimport { VcsProviderV1 } from '@puppet/cd4pe-client-ts';\nimport {\n getCommitLink as getCommitUrl,\n getBranchLink as getBranchUrl,\n getRepoLink as getRepoUrl,\n getRepoHost,\n} from '@codeDelivery/utils/vcsLinkHelper';\nimport { useMemo } from 'react';\nimport useWorkspaceDomain from './useWorkspaceDomain';\n\nconst useVcsLinks = () => {\n const workspaceId = useWorkspaceDomain();\n const { data: vcsIntegrations, error } = useListIntegrationsV1({\n workspaceId,\n });\n\n const hostUrls = useMemo(() => {\n const urlMap = new Map();\n if (vcsIntegrations?.vcsIntegrations) {\n vcsIntegrations.vcsIntegrations.forEach(\n ({ provider, connected, host }) => {\n if (connected) {\n urlMap.set(provider, host!);\n }\n },\n );\n }\n\n return urlMap;\n }, [vcsIntegrations?.vcsIntegrations]);\n\n const getCommitLink = (\n provider: VcsProviderV1,\n repoOwner: string,\n repoName: string,\n repoId: string,\n commitId: string,\n ) => {\n let url = null;\n\n const repoHost = getRepoHost(provider, hostUrls) || '';\n url = getCommitUrl(\n provider,\n repoOwner,\n repoName,\n repoId,\n repoHost,\n commitId,\n );\n\n return url;\n };\n\n const getBranchLink = (\n provider: VcsProviderV1,\n repoOwner: string,\n repoName: string,\n repoId: string,\n branch: string,\n ) => {\n let url = null;\n\n const repoHost = getRepoHost(provider, hostUrls) || '';\n url = getBranchUrl(provider, repoOwner, repoName, repoId, repoHost, branch);\n\n return url;\n };\n\n const getRepoLink = (\n provider: VcsProviderV1,\n repoOwner: string,\n repoName: string,\n repoId: string,\n ) => {\n let url = null;\n\n const repoHost = getRepoHost(provider, hostUrls) || '';\n url = getRepoUrl(provider, repoOwner, repoName, repoId, repoHost);\n\n return url;\n };\n\n return { getCommitLink, getBranchLink, getRepoLink, error };\n};\n\nexport default useVcsLinks;\n","import React, { useState } from 'react';\nimport { Button } from '@puppet/react-components';\nimport ConfirmDeleteModal from '@components/ConfirmDeleteModal';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Cd4peApiError } from '@utils/api/cd4pe';\n\ntype Props = {\n projectName: string;\n typeName: string;\n onDelete: (onSuccess: () => void) => void;\n error?: Cd4peApiError | null;\n};\n\nconst DeleteProjectButton = ({\n projectName,\n typeName,\n onDelete,\n error = null,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const [displayModal, setDisplayModal] = useState(false);\n\n return (\n <>\n {\n setDisplayModal(true);\n }}\n icon=\"trash\"\n type=\"transparent\"\n data-testid={`delete-project-button-${projectName}`}\n />\n ]}\n />\n }\n onCancel={() => {\n setDisplayModal(false);\n }}\n onDelete={() => {\n onDelete(() => {\n setDisplayModal(false);\n });\n }}\n error={error}\n />\n \n );\n};\n\nexport default DeleteProjectButton;\n","import ConditionalRender from '@components/ConditionalRender';\nimport {\n DeploymentEventDetailsV1,\n JobEventDetailsV1,\n TaskStateV1,\n} from '@puppet/cd4pe-client-ts';\nimport { Heading, Text, Link as PdsLink, Icon } from '@puppet/react-components';\nimport { FAILED_STATES, IN_PROGRESS_STATES } from '@utils/constants';\nimport { formatDistance } from 'date-fns';\nimport React from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { NavLink } from 'react-router-dom';\n\ntype TEventDetails = {\n description: string;\n eventId: string;\n status: TaskStateV1 | null;\n branch: string;\n commitId: string;\n startTime: number;\n user: string;\n};\n\ninterface Props {\n details: TEventDetails;\n title: string;\n eventLink: string;\n branchLink: string;\n commitLink: string;\n deployment?: { targetBranch: string; link: string };\n 'data-testid'?: string;\n href?: boolean;\n}\n\nexport const eventDetailsFromJob = (\n jobDetails: Exclude,\n): TEventDetails => {\n return {\n description: jobDetails.jobDescription,\n eventId: jobDetails.vmJobInstanceId.toString(),\n status: jobDetails.jobStatus,\n branch: jobDetails.branch,\n commitId: jobDetails.commitId,\n startTime: jobDetails.jobStartTime,\n user: jobDetails.authorUsername,\n };\n};\n\nexport const eventDetailsFromDeployment = (\n deployment: Exclude,\n): TEventDetails => {\n return {\n description: deployment.deploymentDescription,\n eventId: deployment.deploymentId.toString(),\n status: deployment.deploymentState,\n branch: deployment.sourceBranch,\n commitId: deployment.commitId,\n startTime: deployment.deploymentStartTime,\n user: deployment.authorUsername,\n };\n};\n\nconst getStatusClass = (status: TaskStateV1 | null) => {\n if (status) {\n if (FAILED_STATES.includes(status)) {\n return 'listCodeProjects-latest__status--failed';\n }\n\n if (status === 'DONE') {\n return 'listCodeProjects-latest__status--success';\n }\n\n if (IN_PROGRESS_STATES.includes(status)) {\n return 'listCodeProjects-latest__status--running';\n }\n }\n\n return 'listCodeProjects-latest__status--neutral';\n};\n\nconst EventDetails = ({\n details,\n title,\n eventLink,\n branchLink,\n commitLink,\n deployment,\n 'data-testid': dataTestId,\n href = false,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const linkProps = href\n ? { as: 'a', href: eventLink }\n : { as: NavLink, to: eventLink };\n return (\n \n {title}\n {details.description}\n ,\n ,\n ,\n details.commitId ? (\n \n ) : (\n
    \n ),\n \n \n \n {deployment?.targetBranch}\n \n ,\n ]}\n />\n
    \n );\n};\n\nexport default EventDetails;\n","import ListCodeProjects from './ListCodeProjects';\n\nexport default ListCodeProjects;\n","import React, { ReactNode, useState } from 'react';\nimport Table, { DataItem } from '@components/Table';\nimport { CodeProjectDetailsV1 } from '@puppet/cd4pe-client-ts';\nimport { UseInfiniteQueryResult } from '@tanstack/react-query';\nimport {\n Button,\n TooltipHoverArea,\n Link as PdsLink,\n} from '@puppet/react-components';\nimport { Table as PdsTable } from '@puppet/data-grid';\nimport { Cd4peApiError } from '@utils/api/cd4pe';\nimport { useTranslation } from 'react-i18next';\nimport CursorPagination from '@codeDelivery/components/CursorPagination';\nimport { LINKS } from 'src/routes';\nimport { NavLink } from 'react-router-dom';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport useVcsLinks from '@hooks/useVcsLinks';\nimport Cd4peError from '@components/Cd4peError';\nimport DeleteProjectButton from './components/DeleteProjectButton';\nimport EventDetails, {\n eventDetailsFromDeployment,\n eventDetailsFromJob,\n} from './components/EventDetails';\n\ntype TableRow = DataItem & {\n projects: ReactNode;\n latest: ReactNode;\n actions: ReactNode;\n};\n\ntype Props = {\n projectsByPage: CodeProjectDetailsV1[][];\n infiniteQueryDetails: Omit<\n UseInfiniteQueryResult,\n 'data'\n >;\n onDelete: (projectName: string, onSuccess: () => void) => void;\n onEdit: (projectName: string) => void;\n deleteError: Cd4peApiError | null;\n getProjectLink: (name: string) => string;\n translationSuffix: 'controlRepo' | 'module';\n prefix: string;\n setPrefix: (prefix: string) => void;\n};\n\nconst ListCodeProjects = ({\n translationSuffix,\n projectsByPage,\n infiniteQueryDetails,\n onDelete,\n onEdit,\n deleteError,\n getProjectLink,\n prefix,\n setPrefix,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspace = useWorkspaceName();\n const { getCommitLink, getBranchLink } = useVcsLinks();\n const [currentPage, setCurrentPage] = useState(0);\n\n const selectPage = (newPage: number) => {\n if (newPage < 0) {\n setCurrentPage(0);\n return;\n }\n\n if (newPage >= (projectsByPage.length ?? 0)) {\n if (\n !infiniteQueryDetails.isFetchingNextPage &&\n infiniteQueryDetails.hasNextPage\n ) {\n infiniteQueryDetails.fetchNextPage();\n }\n setCurrentPage(projectsByPage.length ?? 0);\n return;\n }\n\n setCurrentPage(newPage);\n };\n\n const transformTableData = (\n projectPage: CodeProjectDetailsV1[],\n ): TableRow[] => {\n return projectPage.map((project) => {\n const projectBranchLink = (branch: string) =>\n getBranchLink(\n project.srcRepoProvider,\n project.srcRepoOwner,\n project.srcRepoDisplayName,\n project.srcRepoId,\n branch,\n ) ?? '';\n\n const projectCommitLink = (commitId: string) =>\n getCommitLink(\n project.srcRepoProvider,\n project.srcRepoOwner,\n project.srcRepoDisplayName,\n project.srcRepoId,\n commitId,\n ) ?? '';\n\n const row: TableRow = {\n projects: (\n \n {project.name}\n
    \n ),\n latest: (\n <>\n {project.lastJob && (\n \n )}\n {project.lastDeployment && (\n \n )}\n \n ),\n actions: (\n <>\n \n onEdit(project.name)}\n data-testid={`edit-project-button-${project.name}`}\n />\n \n \n onDelete(project.name, () => {\n if (projectsByPage[currentPage]?.length === 1) {\n selectPage(currentPage - 1);\n }\n return onSuccess();\n })\n }\n error={deleteError}\n />\n \n ),\n };\n\n return row;\n });\n };\n\n return (\n <>\n \n {\n setCurrentPage(0);\n setPrefix(newPrefix);\n }}\n />\n \n 0}\n />\n \n );\n};\n\nexport default ListCodeProjects;\n","import { useEffect, useState } from 'react';\n\nconst useDebounce = (value: T, timeout = 500) => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const timeoutRef = setTimeout(() => {\n setDebouncedValue(value);\n }, timeout);\n\n return () => {\n clearTimeout(timeoutRef);\n };\n }, [value, timeout]);\n\n return debouncedValue;\n};\n\nexport default useDebounce;\n","import React from 'react';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport { Button, Heading } from '@puppet/react-components';\nimport PageLayout from '@components/PageLayout';\nimport { BreadcrumbsType } from '@components/Breadcrumbs/Breadcrumbs';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router-dom';\nimport { LINKS } from 'src/routes';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useListModulesV1, useDeleteModuleV1 } from '@services/cd4pe/modules';\nimport ListCodeProjects from '@codeDelivery/components/ListCodeProjects';\nimport useDebounce from '@hooks/useDebounce';\n\nconst ListModules = () => {\n const { t } = useTranslation('codeDelivery');\n const navigate = useNavigate();\n const workspaceName = useWorkspaceName();\n const [prefix, setPrefix] = React.useState('');\n const workspaceId = useWorkspaceDomain();\n const modules = useListModulesV1({\n workspaceId,\n prefix: useDebounce(prefix),\n });\n const deleteModule = useDeleteModuleV1();\n\n const onClickEdit = (projectSrcRepoName: string) => {\n return navigate(\n LINKS.codeDelivery.editModule({\n path: { workspace: workspaceName, name: projectSrcRepoName },\n }),\n );\n };\n\n const breadcrumbs: BreadcrumbsType = [\n {\n displayName: workspaceName,\n },\n {\n displayName: t('listModules.breadcrumb.modules'),\n },\n ];\n\n return (\n \n \n \n \n \n
    \n {t('listModules.header.title')}\n \n navigate(\n LINKS.codeDelivery.newModule({\n path: { workspace: workspaceName },\n }),\n )\n }\n >\n {t('listModules.header.newModule')}\n \n
    \n
    \n \n page.modules) ?? []\n }\n infiniteQueryDetails={modules}\n getProjectLink={(name) =>\n LINKS.codeDelivery.viewModule({\n path: { workspace: workspaceName, name },\n })\n }\n onDelete={(name, onSuccess: () => void) => {\n deleteModule.mutate(\n {\n workspaceId,\n moduleName: name,\n },\n {\n onSuccess,\n },\n );\n }}\n onEdit={onClickEdit}\n deleteError={deleteModule.error}\n prefix={prefix}\n setPrefix={setPrefix}\n />\n \n
    \n );\n};\n\nexport default ListModules;\n","import ListModules from './ListModules';\n\nexport default ListModules;\n","import React from 'react';\nimport { NavLink } from 'react-router-dom';\nimport {\n Alert,\n Button,\n Form,\n Link,\n Modal,\n Loading,\n} from '@puppet/react-components';\nimport CommonForm from '@components/CommonForm';\nimport Definitions from '@components/Definitions';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { StdVcsSource } from '@utils/api/cd4pe/vcs/actions';\nimport * as ERRORS from '@utils/boltProjects/errorTypesConsts';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport { CommonFormChangeFunction } from '@components/CommonForm/CommonForm';\nimport { Cd4peApiError } from '@utils/api/cd4pe';\nimport Cd4peError from '@components/Cd4peError';\nimport { LINKS } from 'src/routes';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport GenericErrorAlert from '../GenericErrorAlert';\n\ninterface EditCodeProjectFormActionTypes {\n SELECTED_SOURCE: 'SELECTED_SOURCE';\n NAME: 'NAME';\n}\n\nexport const EDIT_CODE_PROJECT_FORM_ACTION_TYPES: EditCodeProjectFormActionTypes =\n {\n SELECTED_SOURCE: 'SELECTED_SOURCE',\n NAME: 'NAME',\n };\n\nexport const editCodeProjectFormActions = {\n name: (name: string) =>\n actionCreator(EDIT_CODE_PROJECT_FORM_ACTION_TYPES.NAME, name),\n selectedSource: (source: string) =>\n actionCreator(EDIT_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_SOURCE, source),\n};\n\nexport type EditCodeProjectFormActions = Actions<\n typeof editCodeProjectFormActions\n>;\n\ntype FormFieldValues = {\n [K in keyof EditCodeProjectFormActionTypes]: string | null | undefined;\n};\n\ninterface StdItem {\n value: K;\n actualValue: T;\n}\n\nexport const getActualValue = <\n ItemType extends StdItem,\n ValueType = ItemType['value'],\n ActualValueType = ItemType['actualValue'],\n>(\n items: ItemType[],\n selectedItem: ItemType['value'],\n) => {\n const item = items.find((i) => {\n return i.value === selectedItem;\n });\n if (item) {\n return item.actualValue;\n }\n return null;\n};\n\nexport type EditCodeProjectFormOnChange =\n CommonFormChangeFunction;\n\ninterface Props {\n workspaceName: string;\n projectType: 'module' | 'controlRepo';\n sources?: StdVcsSource[] | null;\n selectedSource?: string | null;\n getSourcesLoading?: boolean | null;\n getSourcesError?: string | null;\n getReposLoading?: boolean | null;\n getReposError?: string | null;\n name?: string | null;\n saveLoading?: boolean;\n saveError?: Cd4peApiError | string | null;\n onFormChange: EditCodeProjectFormOnChange;\n submitCallback: () => Promise;\n submitDisabled: boolean;\n cancelCallback: () => void;\n webhookError?: boolean;\n closeModal: () => void;\n}\n\nconst EditCodeProjectForm = ({\n sources,\n selectedSource,\n getSourcesLoading,\n getSourcesError,\n getReposLoading,\n getReposError,\n name,\n saveLoading,\n saveError,\n webhookError,\n workspaceName,\n projectType,\n onFormChange,\n submitCallback,\n submitDisabled,\n cancelCallback,\n closeModal,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n\n const formVals = {\n SELECTED_SOURCE: selectedSource,\n NAME: name,\n };\n\n const renderLoader = (condition?: boolean | null) => {\n return condition ? (\n \n \n \n ) : null;\n };\n\n const renderSourcesAlert = () => {\n if (getSourcesError === ERRORS.NO_SOURCES_FOUND) {\n return (\n \n {t('addCodeProject.sourceSection.noSourcesFound.title')}\n \n ,\n ]}\n />\n \n \n );\n }\n\n if (getSourcesError) {\n return (\n \n );\n }\n return null;\n };\n\n const renderReposError = () => {\n if (getReposError === ERRORS.NO_REPOS_FOUND) {\n return (\n
    \n \n {t('addCodeProject.sourceSection.noReposFound')}\n \n {t(\n `addCodeProject.sourceSection.noReposFoundDescription.${projectType}`,\n )}\n \n \n
    \n );\n }\n\n if (getReposError) {\n return (\n
    \n \n
    \n );\n }\n\n return null;\n };\n\n const renderWebhookModal = () => {\n if (webhookError) {\n return (\n \n \n {t(`editCodeProject.webhookErrorModal.title.${projectType}`)}\n \n \n {t(`editCodeProject.webhookErrorModal.warning`)}\n \n {t(`editCodeProject.webhookErrorModal.text.${projectType}`)}\n \n \n {t(`editCodeProject.webhookErrorModal.docsButton`)}\n \n \n \n \n );\n }\n return null;\n };\n\n return (\n \n {renderSourcesAlert()}\n {renderReposError()}\n \n \n

    \n {t('codeProject.sourceSection.edit.header')}\n

    \n \n \n {renderLoader(getSourcesLoading)}\n {renderLoader(getReposLoading)}\n \n
    \n \n \n \n ,\n ]}\n />\n \n \n \n
    \n\n {renderWebhookModal()}\n \n \n );\n};\n\nexport default EditCodeProjectForm;\n\nEditCodeProjectForm.defaultProps = {\n sources: null,\n selectedSource: null,\n getSourcesLoading: false,\n getSourcesError: null,\n getReposLoading: null,\n getReposError: null,\n repoFilterCallback: null,\n name: null,\n saveLoading: false,\n saveError: null,\n formError: null,\n webhookError: false,\n submitDisabled: false,\n} as Partial;\n","import EditCodeProjectForm from './EditCodeProjectForm';\n\nexport default EditCodeProjectForm;\nexport * from './EditCodeProjectForm';\n","export const EDIT_CONTROL_REPO_START = 'EDIT_CONTROL_REPO_START';\nexport const EDIT_CONTROL_REPO_COMPLETE = 'EDIT_CONTROL_REPO_COMPLETE';\nexport const EDIT_CONTROL_REPO_ERROR = 'EDIT_CONTROL_REPO_ERROR';\nexport const EDIT_CONTROL_REPO_WEBHOOK_ERROR =\n 'EDIT_CONTROL_REPO_WEBHOOK_ERROR';\nexport const CLOSE_MODAL = 'CLOSE_MODAL';\n","import { Cd4peApiError } from '@utils/api/cd4pe';\nimport { StdVcsRepo, StdVcsSource } from '@utils/api/cd4pe/vcs/actions';\nimport * as vcsAt from '@utils/api/cd4pe/vcs/actionTypes';\nimport { EDIT_CODE_PROJECT_FORM_ACTION_TYPES } from '@codeDelivery/components/EditCodeProjectForm';\nimport { EditControlRepoActions } from './actions';\nimport * as at from './actionTypes';\n\nexport interface EditControlRepoState {\n sources: StdVcsSource[];\n selectedSource: string;\n repositories: StdVcsRepo[];\n name: string;\n saveControlRepoSuccess: boolean;\n currentModalClosed: boolean;\n getSourcesLoading: boolean;\n getSourcesError: string | null;\n getReposLoading: boolean;\n getReposError: string | null;\n saveControlRepoLoading: boolean;\n newControlRepoSource?: string | null;\n saveControlRepoError: Cd4peApiError | string | null;\n saveControlRepoWebhookError: boolean;\n}\n\nexport const defaultEditControlRepoState: EditControlRepoState = {\n sources: [],\n selectedSource: '',\n repositories: [],\n name: '',\n saveControlRepoSuccess: false,\n currentModalClosed: false,\n getSourcesLoading: false,\n getSourcesError: null,\n getReposLoading: false,\n getReposError: null,\n saveControlRepoLoading: false,\n newControlRepoSource: null,\n saveControlRepoError: null,\n saveControlRepoWebhookError: false,\n};\n\nexport const reducer = (\n state: EditControlRepoState,\n action: EditControlRepoActions,\n): EditControlRepoState => {\n switch (action.type) {\n case vcsAt.GET_SOURCES_START:\n return {\n ...state,\n getSourcesLoading: true,\n };\n case vcsAt.GET_SOURCES_COMPLETE:\n return {\n ...state,\n getSourcesLoading: false,\n sources: action.payload,\n };\n case vcsAt.GET_SOURCES_ERROR:\n return {\n ...state,\n getSourcesLoading: false,\n getSourcesError: action.payload,\n };\n case vcsAt.GET_REPOS_START:\n return {\n ...state,\n getReposLoading: true,\n };\n case vcsAt.GET_REPOS_COMPLETE:\n return {\n ...state,\n getReposLoading: false,\n repositories: action.payload,\n };\n case vcsAt.GET_REPOS_ERROR:\n return {\n ...state,\n getReposLoading: false,\n getReposError: action.payload,\n };\n case at.EDIT_CONTROL_REPO_START:\n return {\n ...state,\n saveControlRepoLoading: true,\n };\n case at.EDIT_CONTROL_REPO_COMPLETE:\n return {\n ...state,\n saveControlRepoLoading: false,\n saveControlRepoSuccess: true,\n };\n case at.EDIT_CONTROL_REPO_ERROR:\n return {\n ...state,\n saveControlRepoLoading: false,\n saveControlRepoSuccess: false,\n saveControlRepoError: action.payload,\n };\n case at.EDIT_CONTROL_REPO_WEBHOOK_ERROR:\n return {\n ...state,\n saveControlRepoLoading: false,\n saveControlRepoSuccess: false,\n saveControlRepoWebhookError: true,\n };\n case EDIT_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_SOURCE:\n return {\n ...state,\n selectedSource: action.payload,\n repositories: [],\n name: '',\n saveControlRepoError: null,\n getReposError: null,\n };\n case EDIT_CODE_PROJECT_FORM_ACTION_TYPES.NAME:\n return {\n ...state,\n name: action.payload,\n };\n default:\n throw new Error();\n }\n};\n","import { EditCodeProjectFormActions } from 'src/codeDelivery/components/EditCodeProjectForm';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport {\n ControlReposV1Service,\n WorkspaceIdV1,\n Cd4peApiError,\n handleApiRequest,\n UpdateControlRepoRequestV1,\n ControlRepoResponseV1,\n isInternalError,\n isCd4peApiError,\n} from '@utils/api/cd4pe';\nimport { VcsActions } from '@utils/api/cd4pe/vcs/actions';\nimport { Dispatch } from 'react';\nimport * as at from './actionTypes';\n\nexport const editControlRepoActions = {\n editControlRepoStart: () => actionCreator(at.EDIT_CONTROL_REPO_START),\n editControlRepoComplete: (payload: ControlRepoResponseV1) =>\n actionCreator(at.EDIT_CONTROL_REPO_COMPLETE, payload),\n editControlRepoError: (error: Cd4peApiError) =>\n actionCreator(at.EDIT_CONTROL_REPO_ERROR, error),\n editControlRepoWebhookError: (error: Cd4peApiError) =>\n actionCreator(at.EDIT_CONTROL_REPO_WEBHOOK_ERROR, error),\n};\n\nexport type EditControlRepoActions =\n | Actions\n | VcsActions\n | EditCodeProjectFormActions;\n\nexport interface EditControlRepoPayload {\n workspaceId: WorkspaceIdV1;\n controlRepoName: string;\n requestBody: UpdateControlRepoRequestV1;\n}\n\nexport const editControlRepo = async (\n dispatch: Dispatch,\n repoPayload: EditControlRepoPayload,\n) => {\n const editControlRepoCall = async (payload: EditControlRepoPayload) => {\n const repoResponse = await handleApiRequest(\n ControlReposV1Service.updateControlRepoV1(payload),\n );\n\n if (isInternalError(repoResponse) && repoResponse.body.code === 'VCS') {\n dispatch(\n editControlRepoActions.editControlRepoWebhookError(repoResponse),\n );\n return;\n }\n\n if (isCd4peApiError(repoResponse)) {\n dispatch(editControlRepoActions.editControlRepoError(repoResponse));\n return;\n }\n\n dispatch(editControlRepoActions.editControlRepoComplete(repoResponse));\n };\n\n await editControlRepoCall(repoPayload);\n};\n","import React, { useEffect, useReducer } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Heading, Loading } from '@puppet/react-components';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport { getRepositories, getSources } from '@utils/api/cd4pe/vcs/actions';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport PageLayout from '@components/PageLayout';\nimport { LINKS } from 'src/routes';\nimport EditCodeProjectForm, {\n EditCodeProjectFormOnChange,\n EDIT_CODE_PROJECT_FORM_ACTION_TYPES,\n getActualValue,\n} from 'src/codeDelivery/components/EditCodeProjectForm';\nimport { useGetControlRepoV1 } from '@services/cd4pe/controlRepos';\nimport Cd4peError from '@components/Cd4peError';\nimport { defaultEditControlRepoState, reducer } from './reducer';\nimport {\n EditControlRepoPayload,\n editControlRepoActions,\n editControlRepo,\n} from './actions';\n\nconst EditControlRepo = () => {\n const [state, dispatch] = useReducer(reducer, defaultEditControlRepoState);\n const navigate = useNavigate();\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const { name: repoDisplayName } = useParams();\n\n useEffect(() => {\n if (workspaceId) getSources(workspaceId, dispatch);\n }, [workspaceId]);\n\n useEffect(() => {\n if (state.saveControlRepoSuccess) {\n navigate(\n LINKS.codeDelivery.listRepositories({\n path: { workspace: workspaceName },\n }),\n );\n }\n }, [workspaceName, state.saveControlRepoSuccess, navigate]);\n\n const { data, isLoading, error } = useGetControlRepoV1({\n workspaceId,\n controlRepoName: repoDisplayName!,\n });\n\n const srcRepoName = data?.srcRepoName;\n\n const matchedRepo = getActualValue(state.repositories, repoDisplayName!);\n\n const breadcrumbs = [\n { displayName: `${workspaceName}` },\n {\n displayName: t('newControlRepo.breadcrumb.controlRepos'),\n linkDestination: LINKS.codeDelivery.listRepositories({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: `${repoDisplayName}`,\n linkDestination: LINKS.codeDelivery.viewRepository({\n path: { workspace: workspaceName, name: repoDisplayName },\n }),\n },\n { displayName: 'Edit' },\n ];\n\n const onFormChange: EditCodeProjectFormOnChange = (fieldName, values) => {\n dispatch({ type: fieldName, payload: values[fieldName] || '' });\n\n switch (fieldName) {\n case EDIT_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_SOURCE: {\n const selectedSource = getActualValue(\n state.sources,\n values.SELECTED_SOURCE || '',\n );\n if (selectedSource) {\n getRepositories(workspaceId, dispatch, selectedSource, srcRepoName);\n }\n break;\n }\n default:\n }\n };\n\n const onClickEditControlRepo = async () => {\n dispatch(editControlRepoActions.editControlRepoStart());\n\n const controlRepoPayload: EditControlRepoPayload = {\n workspaceId,\n controlRepoName: repoDisplayName!,\n requestBody: {\n srcRepoProvider: matchedRepo!.provider,\n srcRepoDisplayOwner: matchedRepo!.ownerDisplayName || '',\n srcRepoOwner:\n matchedRepo!.organization ||\n matchedRepo!.user ||\n matchedRepo!.project ||\n '',\n srcRepoId: matchedRepo!.project || matchedRepo!.user || '',\n },\n };\n\n editControlRepo(dispatch, controlRepoPayload);\n };\n\n const getSourceDisplayName = (sourceActualValue: string) => {\n return state.sources\n .map((source) => {\n if (source.actualValue.id === sourceActualValue) {\n return source.actualValue.displayName;\n }\n return null;\n })\n .join('');\n };\n\n const matchingError =\n !matchedRepo && state.selectedSource && !state.getReposLoading\n ? `Could not find '${srcRepoName}' in ${getSourceDisplayName(\n state.selectedSource,\n )}`\n : null;\n\n const onClickCancel = () => {\n navigate(\n LINKS.codeDelivery.listRepositories({\n path: { workspace: workspaceName },\n }),\n );\n };\n\n if (isLoading) {\n return ;\n }\n\n if (error) {\n return ;\n }\n\n return (\n \n \n \n \n \n Edit {repoDisplayName}\n \n \n \n \n \n );\n};\n\nexport default EditControlRepo;\n","import EditControlRepo from './EditControlRepo';\n\nexport default EditControlRepo;\n","export const EDIT_MODULE_START = 'EDIT_MODULE_START';\nexport const EDIT_MODULE_COMPLETE = 'EDIT_MODULE_COMPLETE';\nexport const EDIT_MODULE_ERROR = 'EDIT_MODULE_ERROR';\nexport const EDIT_MODULE_WEBHOOK_ERROR = 'EDIT_MODULE_WEBHOOK_ERROR';\nexport const CLOSE_MODAL = 'CLOSE_MODAL';\n","import { Cd4peApiError } from '@utils/api/cd4pe';\nimport { StdVcsRepo, StdVcsSource } from '@utils/api/cd4pe/vcs/actions';\nimport * as vcsAt from '@utils/api/cd4pe/vcs/actionTypes';\nimport { EDIT_CODE_PROJECT_FORM_ACTION_TYPES } from '@codeDelivery/components/EditCodeProjectForm';\nimport { EditModuleActions } from './actions';\nimport * as at from './actionTypes';\n\nexport interface EditModuleState {\n sources: StdVcsSource[];\n selectedSource: string;\n repositories: StdVcsRepo[];\n name: string;\n saveModuleSuccess: boolean;\n currentModalClosed: boolean;\n getSourcesLoading: boolean;\n getSourcesError: string | null;\n getReposLoading: boolean;\n getReposError: string | null;\n saveModuleLoading: boolean;\n newModuleSource?: string | null;\n saveModuleError: Cd4peApiError | string | null;\n saveModuleWebhookError: boolean;\n}\n\nexport const defaultEditModuleState: EditModuleState = {\n sources: [],\n selectedSource: '',\n repositories: [],\n name: '',\n saveModuleSuccess: false,\n currentModalClosed: false,\n getSourcesLoading: false,\n getSourcesError: null,\n getReposLoading: false,\n getReposError: null,\n saveModuleLoading: false,\n newModuleSource: null,\n saveModuleError: null,\n saveModuleWebhookError: false,\n};\n\nexport const reducer = (\n state: EditModuleState,\n action: EditModuleActions,\n): EditModuleState => {\n switch (action.type) {\n case vcsAt.GET_SOURCES_START:\n return {\n ...state,\n getSourcesLoading: true,\n };\n case vcsAt.GET_SOURCES_COMPLETE:\n return {\n ...state,\n getSourcesLoading: false,\n sources: action.payload,\n };\n case vcsAt.GET_SOURCES_ERROR:\n return {\n ...state,\n getSourcesLoading: false,\n getSourcesError: action.payload,\n };\n case vcsAt.GET_REPOS_START:\n return {\n ...state,\n getReposLoading: true,\n };\n case vcsAt.GET_REPOS_COMPLETE:\n return {\n ...state,\n getReposLoading: false,\n repositories: action.payload,\n };\n case vcsAt.GET_REPOS_ERROR:\n return {\n ...state,\n getReposLoading: false,\n getReposError: action.payload,\n };\n case at.EDIT_MODULE_START:\n return {\n ...state,\n saveModuleLoading: true,\n };\n case at.EDIT_MODULE_COMPLETE:\n return {\n ...state,\n saveModuleLoading: false,\n saveModuleSuccess: true,\n };\n case at.EDIT_MODULE_ERROR:\n return {\n ...state,\n saveModuleLoading: false,\n saveModuleSuccess: false,\n saveModuleError: action.payload,\n };\n case at.EDIT_MODULE_WEBHOOK_ERROR:\n return {\n ...state,\n saveModuleLoading: false,\n saveModuleSuccess: false,\n saveModuleWebhookError: true,\n };\n case EDIT_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_SOURCE:\n return {\n ...state,\n selectedSource: action.payload,\n repositories: [],\n name: '',\n saveModuleError: null,\n getReposError: null,\n };\n case EDIT_CODE_PROJECT_FORM_ACTION_TYPES.NAME:\n return {\n ...state,\n name: action.payload,\n };\n default:\n throw new Error();\n }\n};\n","import { EditCodeProjectFormActions } from 'src/codeDelivery/components/EditCodeProjectForm';\nimport actionCreator, { Actions } from '@utils/actionCreator';\nimport {\n ModulesV1Service,\n WorkspaceIdV1,\n Cd4peApiError,\n handleApiRequest,\n UpdateModuleRequestV1,\n ModuleResponseV1,\n isInternalError,\n isCd4peApiError,\n} from '@utils/api/cd4pe';\nimport { VcsActions } from '@utils/api/cd4pe/vcs/actions';\nimport { Dispatch } from 'react';\nimport * as at from './actionTypes';\n\nexport const editModuleActions = {\n editModuleStart: () => actionCreator(at.EDIT_MODULE_START),\n editModuleComplete: (payload: ModuleResponseV1) =>\n actionCreator(at.EDIT_MODULE_COMPLETE, payload),\n editModuleError: (error: Cd4peApiError) =>\n actionCreator(at.EDIT_MODULE_ERROR, error),\n editModuleWebhookError: (error: Cd4peApiError) =>\n actionCreator(at.EDIT_MODULE_WEBHOOK_ERROR, error),\n};\n\nexport type EditModuleActions =\n | Actions\n | VcsActions\n | EditCodeProjectFormActions;\n\nexport interface EditModulePayload {\n workspaceId: WorkspaceIdV1;\n moduleName: string;\n requestBody: UpdateModuleRequestV1;\n}\n\nexport const editModule = async (\n dispatch: Dispatch,\n repoPayload: EditModulePayload,\n) => {\n const editModuleCall = async (payload: EditModulePayload) => {\n const repoResponse = await handleApiRequest(\n ModulesV1Service.updateModuleV1(payload),\n );\n\n if (isInternalError(repoResponse) && repoResponse.body.code === 'VCS') {\n dispatch(editModuleActions.editModuleWebhookError(repoResponse));\n return;\n }\n\n if (isCd4peApiError(repoResponse)) {\n dispatch(editModuleActions.editModuleError(repoResponse));\n return;\n }\n\n dispatch(editModuleActions.editModuleComplete(repoResponse));\n };\n\n await editModuleCall(repoPayload);\n};\n","import React, { useEffect, useReducer } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Heading, Loading } from '@puppet/react-components';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport { getRepositories, getSources } from '@utils/api/cd4pe/vcs/actions';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport PageLayout from '@components/PageLayout';\nimport { LINKS } from 'src/routes';\nimport EditCodeProjectForm, {\n EditCodeProjectFormOnChange,\n EDIT_CODE_PROJECT_FORM_ACTION_TYPES,\n getActualValue,\n} from 'src/codeDelivery/components/EditCodeProjectForm';\nimport { useGetModuleV1 } from '@services/cd4pe/modules';\nimport Cd4peError from '@components/Cd4peError';\nimport { defaultEditModuleState, reducer } from './reducer';\nimport { EditModulePayload, editModuleActions, editModule } from './actions';\n\nconst EditModule = () => {\n const [state, dispatch] = useReducer(reducer, defaultEditModuleState);\n const navigate = useNavigate();\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const { name: moduleDisplayName } = useParams();\n\n useEffect(() => {\n if (workspaceId) getSources(workspaceId, dispatch);\n }, [workspaceId]);\n\n useEffect(() => {\n if (state.saveModuleSuccess) {\n navigate(\n LINKS.codeDelivery.listModules({\n path: { workspace: workspaceName },\n }),\n );\n }\n }, [workspaceName, state.saveModuleSuccess, navigate]);\n\n const {\n data,\n isLoading: currentModuleLoading,\n error: currentModuleError,\n } = useGetModuleV1({\n workspaceId,\n moduleName: moduleDisplayName!,\n });\n\n const srcRepoName = data?.srcRepoName;\n\n const matchedRepo = getActualValue(state.repositories, moduleDisplayName!);\n\n const breadcrumbs = [\n { displayName: `${workspaceName}` },\n {\n displayName: t('newModule.breadcrumb.modules'),\n linkDestination: LINKS.codeDelivery.listModules({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: `${moduleDisplayName}`,\n linkDestination: LINKS.codeDelivery.viewModule({\n path: { workspace: workspaceName, name: moduleDisplayName },\n }),\n },\n { displayName: 'Edit' },\n ];\n\n const onFormChange: EditCodeProjectFormOnChange = (fieldName, values) => {\n dispatch({ type: fieldName, payload: values[fieldName] || '' });\n\n switch (fieldName) {\n case EDIT_CODE_PROJECT_FORM_ACTION_TYPES.SELECTED_SOURCE: {\n const selectedSource = getActualValue(\n state.sources,\n values.SELECTED_SOURCE || '',\n );\n if (selectedSource) {\n getRepositories(workspaceId, dispatch, selectedSource, srcRepoName);\n }\n break;\n }\n default:\n }\n };\n\n const onClickEditModule = async () => {\n dispatch(editModuleActions.editModuleStart());\n\n const modulePayload: EditModulePayload = {\n workspaceId,\n moduleName: moduleDisplayName!,\n requestBody: {\n srcRepoProvider: matchedRepo!.provider,\n srcRepoDisplayOwner: matchedRepo!.ownerDisplayName || '',\n srcRepoOwner:\n matchedRepo!.organization ||\n matchedRepo!.user ||\n matchedRepo!.project ||\n '',\n srcRepoId: matchedRepo!.project || matchedRepo!.user || '',\n },\n };\n\n editModule(dispatch, modulePayload);\n };\n\n const onClickCancel = () => {\n navigate(\n LINKS.codeDelivery.listModules({\n path: { workspace: workspaceName },\n }),\n );\n };\n\n if (currentModuleLoading) {\n return ;\n }\n\n if (currentModuleError) {\n return ;\n }\n\n return (\n \n \n \n \n \n Edit {moduleDisplayName}\n \n \n \n \n \n );\n};\n\nexport default EditModule;\n","import EditModule from './EditModule';\n\nexport default EditModule;\n","import React, { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@puppet/react-components';\nimport { Table } from '@puppet/data-grid';\nimport {\n useListGroupsMembersV1,\n useDeleteGroupMemberV1,\n} from '@services/cd4pe/groups';\nimport Cd4peError from '@components/Cd4peError';\nimport { stringCompare } from '@utils/compare';\nimport { LINKS } from 'src/routes';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\n\ninterface Props {\n groupId: number;\n}\n\ntype SortUsers = {\n direction: string;\n sortDataKey: string;\n};\n\nconst UserTab = ({ groupId }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const navigate = useNavigate();\n const workspace = useWorkspaceName();\n const [searchValue, setSearchValue] = useState('');\n const [sortUsers, setSortUsers] = useState({\n direction: 'asc',\n sortDataKey: 'username',\n });\n const [deleteUserId, setDeleteuserId] = useState(null);\n const { data: users, error, isLoading } = useListGroupsMembersV1({ groupId });\n const deleteGroupMemberV1 = useDeleteGroupMemberV1();\n\n const tableColumns = [\n {\n label: t('viewGroup.users.table.header.username'),\n dataKey: 'username',\n sortable: true,\n className: 'group-users-table__cell--truncate',\n },\n {\n label: t('viewGroup.users.table.header.actions'),\n dataKey: 'userId',\n className: 'group-users-table__cell-actions',\n style: { width: '200px', textAlign: 'center' },\n cellRenderer: (props: {\n cellData: number;\n rowData: { username: string };\n }) => {\n if (deleteUserId === props.cellData) {\n return (\n
    \n {\n deleteGroupMemberV1.mutate(\n {\n groupId,\n userId: props.cellData,\n },\n {\n onSettled: () => setDeleteuserId(null),\n },\n );\n }}\n data-testid={`delete-group-user-confirm-${props.rowData.username}`}\n >\n {t('viewGroup.users.table.button.delete')}\n \n setDeleteuserId(null)}\n >\n {t('viewGroup.users.table.button.cancel')}\n \n
    \n );\n }\n return (\n
    \n setDeleteuserId(props.cellData)}\n data-testid={`delete-group-user-${props.rowData.username}`}\n >\n {t('viewGroup.users.table.icon.delete', {\n username: props.rowData.username,\n })}\n \n
    \n );\n },\n },\n ];\n\n const tableData =\n users?.groupMembers\n ?.filter(({ username }) =>\n username.toLowerCase().includes(searchValue.toLowerCase()),\n )\n .sort(\n (a, b) =>\n (sortUsers.direction === 'asc' ? 1 : -1) *\n stringCompare(a.username, b.username),\n ) ?? [];\n\n return (\n <>\n \n \n \n \n navigate(\n LINKS.settings.addGroupUsers({\n path: { workspace, groupId: `${groupId}` },\n }),\n ),\n },\n ]}\n />\n setSortUsers({ direction, sortDataKey })}\n sortedColumn={sortUsers}\n data-testid=\"group-users-table\"\n />\n \n \n );\n};\n\nexport default UserTab;\n","import UserTab from './UserTab';\n\nexport default UserTab;\n","import ViewGroup from './ViewGroup';\n\nexport default ViewGroup;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport GroupPrivilegesForm from '@codeDelivery/components/GroupPrivilegesForm';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport Cd4peError from '@components/Cd4peError';\nimport PageLayout from '@components/PageLayout';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport {\n Heading,\n Loading,\n Text,\n Button,\n Tabs,\n TooltipHoverArea,\n} from '@puppet/react-components';\nimport { useGetGroupV1 } from '@services/cd4pe/groups';\nimport { LINKS } from 'src/routes';\nimport UserTab from './components/UserTab';\n\nconst ViewGroup = () => {\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const { groupId } = useParams() as { groupId: string };\n const [permEditMode, setPermEditMode] = useState(false);\n\n const {\n data: group,\n error,\n isLoading,\n isSuccess,\n } = useGetGroupV1({ workspaceId, groupId: +groupId });\n\n const breadcrumbs = [\n { displayName: `${workspaceName}` },\n {\n displayName: t('viewGroup.breadcrumbs.settings'),\n linkDestination: LINKS.settings.workspace({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: t('viewGroup.breadcrumbs.groupsPage'),\n linkDestination: LINKS.settings.listGroups({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: group?.name ?? '',\n },\n ];\n\n return (\n \n \n \n \n \n {group?.name ?? ''}\n {group?.description}\n \n \n {isSuccess && group && (\n \n \n \n \n \n {!permEditMode && (\n
    \n \n setPermEditMode(true)}\n disabled={group.builtIn}\n >\n {t('viewGroup.permissions.edit.label')}\n \n \n
    \n )}\n setPermEditMode(false)}\n onSuccess={() => setPermEditMode(false)}\n />\n
    \n
    \n )}\n {isLoading && }\n \n
    \n
    \n );\n};\n\nexport default ViewGroup;\n","import React, { useState } from 'react';\nimport Table, { Columns } from '@components/Table';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { JobHardwareNodeV1 } from '@puppet/cd4pe-client-ts';\nimport { Button, Link } from '@puppet/react-components';\nimport { useDeleteNodeFromCapabilityV1 } from '@services/cd4pe/hardware';\nimport Cd4peError from '@components/Cd4peError';\nimport { LINKS } from 'src/routes';\nimport { NavLink } from 'react-router-dom';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\n\ninterface props {\n nodeData: JobHardwareNodeV1[];\n isLoading: boolean;\n workspaceId: string;\n id: number;\n}\n\nconst JobHardwareCapabilityNodes = ({\n nodeData,\n isLoading,\n workspaceId,\n id,\n}: props) => {\n const { t } = useTranslation('codeDelivery');\n const workspace = useWorkspaceName();\n const [deleteNodeName, setDeleteNodeName] = useState(null);\n const deleteNodeFromCapability = useDeleteNodeFromCapabilityV1();\n\n const columns: Columns = [\n { label: t('jobHardware.table.column.name'), dataKey: 'name' },\n { label: t('jobHardware.table.column.server'), dataKey: 'peServerName' },\n { label: t('jobHardware.table.column.os'), dataKey: 'operatingSystem' },\n {\n label: t('jobHardware.table.column.actions'),\n dataKey: 'nodeName',\n className: 'job-hardware-capability__table-delete-column',\n style: { width: '200px', textAlign: 'center' },\n cellRenderer: (deleteProps) => {\n if (deleteNodeName === deleteProps.rowData.name) {\n return (\n
    \n {\n deleteNodeFromCapability.mutate(\n {\n workspaceId,\n id,\n nodeName: deleteProps.rowData.name as string,\n },\n {\n onSettled: () => setDeleteNodeName(null),\n },\n );\n }}\n data-testid={`delete-hardware-node-confirm-${deleteProps.rowData.name}`}\n >\n {t('jobHardware.nodes.table.button.delete')}\n \n setDeleteNodeName(null)}\n >\n {t('jobHardware.nodes.table.button.cancel')}\n \n
    \n );\n }\n return (\n
    \n \n setDeleteNodeName(deleteProps.rowData.name as string)\n }\n data-testid={`delete-hardware-node-${deleteProps.rowData.name}`}\n />\n
    \n );\n },\n },\n ];\n\n if (nodeData.length === 0) {\n return (\n
    \n ,\n ]}\n />\n
    \n );\n }\n\n return (\n <>\n \n
    \n \n );\n};\n\nexport default JobHardwareCapabilityNodes;\n","import React, { useState } from 'react';\nimport JobHardwareCapabilityNodes from '@codeDelivery/views/JobHardware/Components/JobHardwareCapabilityNodes';\nimport { Button, Text, Heading } from '@puppet/react-components';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport {\n useDeleteCapabilitiesV1,\n useListCapabilitiesV1,\n} from '@services/cd4pe/hardware';\nimport Cd4peError from '@components/Cd4peError';\nimport { Trans, useTranslation } from 'react-i18next';\nimport alerts from '@state/ui/alerts';\nimport ConfirmDeleteModal from '@components/ConfirmDeleteModal';\nimport { NavLink } from 'react-router-dom';\nimport { useAppDispatch } from '@hooks/redux';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { LINKS } from 'src/routes';\n\nconst JobHardwareCapability = () => {\n const workspaceId = useWorkspaceDomain();\n const workspace = useWorkspaceName();\n const { t } = useTranslation('codeDelivery');\n const appDispatch = useAppDispatch();\n const [selectedCapabilityForDelete, setselectedCapabilityForDelete] =\n useState(-1);\n const [selectedCapabilityForDeleteName, setSelectedCapabilityForDeleteName] =\n useState('');\n\n const {\n isLoading: isLoadingCapabilities,\n error: capabilitiesError,\n data: capabilities,\n } = useListCapabilitiesV1({\n workspaceId,\n });\n\n const deleteCapability = useDeleteCapabilitiesV1();\n\n const setSelectedCapability = (id: number, name: string) => {\n setselectedCapabilityForDelete(id);\n setSelectedCapabilityForDeleteName(name);\n };\n\n const clearSelectedCapability = () => {\n setselectedCapabilityForDelete(-1);\n setSelectedCapabilityForDeleteName('');\n };\n\n const deleteSubmit = (id: number) => {\n deleteCapability.mutate(\n {\n workspaceId,\n id,\n },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('jobHardware.alerts.delete.success'),\n }),\n );\n },\n },\n );\n clearSelectedCapability();\n };\n\n return (\n <>\n {capabilities?.jobHardwareCapabilities.map((capability) => (\n \n
    \n
    \n
    \n \n {capability?.displayName}\n \n
    \n
    \n \n {t('jobHardware.capability.table.by')}\n \n
    \n
    \n
    \n \n \n setSelectedCapability(capability?.id, capability?.displayName)\n }\n name={`${capability.displayName}-delete-button`}\n data-testid={`${capability.displayName}-delete-button`}\n aria-label={t('jobHardware.capability.delete.ariaLabel', {\n name: capability.displayName,\n })}\n />\n
    \n
    \n \n \n \n \n ))}\n \n clearSelectedCapability()}\n onDelete={() => deleteSubmit(selectedCapabilityForDelete)}\n title={t('jobHardware.deleteModal.capability.header', {\n capabilityName: selectedCapabilityForDeleteName,\n })}\n alert={t('jobHardware.deleteModal.capability.description')}\n checkbox\n checkboxLabel={\n \n {{ name: selectedCapabilityForDeleteName }}\n \n }\n confirmLabel={t('jobHardware.deleteModal.capability.remove.button')}\n cancelLabel={t('jobHardware.deleteModal.capability.cancel.button')}\n />\n \n );\n};\n\nexport default JobHardwareCapability;\n","import React from 'react';\nimport JobHardwareCapability from '@codeDelivery/views/JobHardware/Components/JobHardwareCapability';\nimport { Button, Heading } from '@puppet/react-components';\nimport PageLayout from '@components/PageLayout';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport { useTranslation } from 'react-i18next';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { useNavigate } from 'react-router-dom';\nimport { LINKS } from '../../../routes';\n\nconst breadcrumbsRender = (t: Function, workspace: string) => {\n const breadcrumbs = [\n { displayName: `${workspace}` },\n {\n displayName: t('jobHardware.breadcrumbs.hardware'),\n linkDestination: LINKS.codeDelivery.jobHardware({\n path: { workspace },\n }),\n },\n ];\n return breadcrumbs;\n};\n\nconst JobHardware = () => {\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const navigate = useNavigate();\n\n return (\n \n \n \n \n \n
    \n {t('jobHardware.header')}\n {\n navigate(\n LINKS.codeDelivery.newCapability({\n path: { workspace: workspaceName },\n }),\n );\n }}\n data-testid=\"add-capability-button\"\n >\n {t('jobHardware.button.add')}\n \n
    \n
    \n \n \n \n
    \n );\n};\n\nexport default JobHardware;\n","import JobHardware from '@codeDelivery/views/JobHardware/JobHardware';\n\nexport default JobHardware;\n","import React from 'react';\nimport { Heading } from '@puppet/react-components';\nimport PageLayout from '@components/PageLayout';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport { useTranslation } from 'react-i18next';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { useNavigate } from 'react-router-dom';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useAppDispatch } from '@hooks/redux';\nimport { useCreateHardwareCapabilityV1 } from '@services/cd4pe/hardware';\nimport alerts from '@state/ui/alerts';\nimport Cd4peError from '@components/Cd4peError';\nimport JobHardwareCapabilityForm from '@codeDelivery/components/JobHardwareCapabilityForm';\nimport {\n CreateJobHardwareCapabilitiesRequestV1,\n UpdateJobHardwareCapabilitiesRequestV1,\n} from '@puppet/cd4pe-client-ts';\nimport { LINKS } from 'src/routes';\n\nconst breadcrumbsRender = (t: Function, workspace: string) => {\n const breadcrumbs = [\n { displayName: `${workspace}` },\n {\n displayName: t('jobHardware.breadcrumbs.hardware'),\n linkDestination: LINKS.codeDelivery.jobHardware({\n path: { workspace },\n }),\n },\n { displayName: `${t('addCapability.breadcrumb')}` },\n ];\n return breadcrumbs;\n};\n\nconst AddCapability = () => {\n const { t } = useTranslation('codeDelivery');\n const navigate = useNavigate();\n const workspaceName = useWorkspaceName();\n\n const workspaceId = useWorkspaceDomain();\n const appDispatch = useAppDispatch();\n const createCapability = useCreateHardwareCapabilityV1();\n\n const navigateToHardwareList = () => {\n navigate(\n LINKS.codeDelivery.jobHardware({ path: { workspace: workspaceName } }),\n );\n };\n\n const onSubmit = (\n payload:\n | CreateJobHardwareCapabilitiesRequestV1\n | UpdateJobHardwareCapabilitiesRequestV1,\n ) => {\n createCapability.mutate(\n {\n workspaceId,\n requestBody: {\n displayName: payload.displayName!,\n nodes: payload.nodes!,\n },\n },\n {\n onSuccess: (capability) => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('jobHardware.alerts.create.success', {\n capabilityName: capability.displayName,\n }),\n }),\n );\n navigateToHardwareList();\n },\n },\n );\n };\n\n return (\n \n \n \n \n \n {t('addCapability.header')}\n \n \n \n \n \n \n );\n};\n\nexport default AddCapability;\n","import AddCapability from '@codeDelivery/views/AddCapability/AddCapability';\n\nexport default AddCapability;\n","import React, { PropsWithChildren, ReactElement, useState } from 'react';\nimport { Button, Text } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\n\ntype Props = {\n icon: ReactElement;\n message: string;\n defaultOpen?: boolean;\n 'data-testid'?: string;\n};\n\nconst BannerDropdown = ({\n icon,\n message,\n children,\n defaultOpen = false,\n 'data-testid': dataTestId = '',\n}: PropsWithChildren) => {\n const { t } = useTranslation('codeDelivery');\n const [expanded, setExpanded] = useState(defaultOpen);\n\n return (\n <>\n
    \n
    \n \n {icon}\n
    \n \n {message}\n \n
    \n setExpanded((v) => !v)}\n data-testid=\"banner-dropdown-toggle-details-button\"\n >\n {expanded\n ? t('bannerDropdown.button.hideDetails')\n : t('bannerDropdown.button.showDetails')}\n \n \n {expanded && children}\n \n );\n};\n\nexport default BannerDropdown;\n","import BannerDropdown from './BannerDropdown';\n\nexport default BannerDropdown;\n","import React, { useEffect, useState } from 'react';\nimport { Icon, Button, Code, Loading, Text } from '@puppet/react-components';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useParams } from 'react-router-dom';\nimport { useGetJobInstanceLogV1 } from '@services/cd4pe/jobs';\nimport { useTranslation } from 'react-i18next';\nimport download from 'downloadjs';\nimport Cd4peError from '@components/Cd4peError';\nimport { TaskStateV1 } from '@puppet/cd4pe-client-ts';\nimport BannerDropdown from '@components/BannerDropdown';\nimport { FAILED_STATES, IN_PROGRESS_STATES } from '@utils/constants';\n\ntype Props = {\n name: string;\n jobDetailsError?: string;\n taskState: TaskStateV1;\n};\n\nconst JobDetailsTab = ({ name, jobDetailsError = '', taskState }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const { jobInstanceId } = useParams() as { jobInstanceId: string };\n const [logs, setLogs] = useState>([]);\n const { data, isLoading, error } = useGetJobInstanceLogV1({\n workspaceId,\n instanceId: +jobInstanceId,\n });\n\n useEffect(() => {\n if (data?.log) {\n setLogs(atob(data.log).split('\\n'));\n }\n }, [data]);\n\n if (isLoading) {\n return ;\n }\n\n if (error) {\n return ;\n }\n\n const getLogs = () => {\n if (!logs || logs.length === 0) {\n return (\n
    \n \n {t('jobDetails.tab.emptyState.text', { name })}\n \n
    \n );\n }\n\n return (\n
    \n
    \n \n download(\n logs.join('\\n'),\n `${data?.logFileName}.log`,\n 'text/plain',\n )\n }\n >\n {t('jobDetails.tab.logs.download.button')}\n \n
    \n
    \n \n {logs.map((line) => (\n

    {line}

    \n ))}\n
    \n
    \n
    \n );\n };\n\n const getBanner = () => {\n if (IN_PROGRESS_STATES.includes(taskState)) {\n return (\n }\n message={t('jobDetails.tab.alert.inProgress')}\n data-testid=\"job-details-tab-in-progress-banner\"\n >\n {getLogs()}\n \n );\n }\n\n if (taskState === 'DONE') {\n return (\n }\n message={t('jobDetails.tab.alert.done', {\n message:\n logs.length > 0 && logs[logs.length - 1] !== ''\n ? logs[logs.length - 1]\n : t('jobDetails.tab.alert.done.default'),\n })}\n data-testid=\"job-details-tab-done-banner\"\n >\n {getLogs()}\n \n );\n }\n\n if (jobDetailsError || FAILED_STATES.includes(taskState)) {\n return (\n }\n message={t('jobDetails.tab.alert.error', { jobDetailsError })}\n defaultOpen\n data-testid=\"job-details-tab-failed-banner\"\n >\n {getLogs()}\n \n );\n }\n\n return (\n }\n message=\"\"\n data-testid=\"job-details-tab-neutral-banner\"\n >\n {getLogs()}\n \n );\n };\n\n return (\n
    \n {getBanner()}\n
    \n );\n};\n\nexport default JobDetailsTab;\n","import ShellEditor from '@codeDelivery/components/ShellEditor';\nimport { Button } from '@puppet/react-components';\nimport React from 'react';\n\ntype JobDetailsCommandProps = {\n command?: string | null;\n name: string;\n label: string;\n active: boolean;\n};\n\nconst JobDetailsCommand = ({\n command = '',\n name,\n label,\n active,\n}: JobDetailsCommandProps) => {\n const [visible, setVisible] = React.useState(!!command);\n\n return (\n
    \n setVisible((v) => !v)}\n >\n {label}\n \n {visible && (\n {}}\n readOnly\n active={active && visible}\n />\n )}\n
    \n );\n};\n\nexport default JobDetailsCommand;\n","import React from 'react';\nimport classnames from 'classnames';\nimport { Heading } from '@puppet/react-components';\n\ninterface Props\n extends React.PropsWithChildren> {}\n\nconst StatusBar = ({ children, className }: Props) => (\n
    {children}
    \n);\n\nconst StatusBarSection = ({ children, className }: Props) => (\n
    {children}
    \n);\n\nStatusBarSection.Header = ({ children, className }: Props) => (\n \n {children}\n \n);\n\nStatusBarSection.Detail = ({ children, className }: Props) => (\n
    \n {children}\n
    \n);\n\nStatusBar.Section = StatusBarSection;\n\nexport default StatusBar;\n","import React from 'react';\nimport { Loading, Link } from '@puppet/react-components';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useListIntegrationsV1 } from '@services/cd4pe/vcs';\nimport { Trans, useTranslation } from 'react-i18next';\nimport Cd4peError from '@components/Cd4peError';\nimport StatusBar from '@components/StatusBar/StatusBar';\nimport { getRepoHost, getCommitLink } from '@codeDelivery/utils/vcsLinkHelper';\nimport { format } from 'date-fns';\nimport { JobInstanceResponseV1 } from '@puppet/cd4pe-client-ts';\nimport { LINKS } from 'src/routes';\n\ntype Props = {\n jobInstance: JobInstanceResponseV1;\n};\n\nconst JobDetailsStatusBar = ({ jobInstance }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n\n const {\n data: vcsIntegrations,\n isLoading: vcsIntegrationsLoading,\n error: vcsIntegrationsError,\n } = useListIntegrationsV1({ workspaceId });\n\n const getVCSHostURLs = () => {\n const hostUrls = new Map();\n if (vcsIntegrations?.vcsIntegrations) {\n vcsIntegrations.vcsIntegrations.forEach(\n ({ provider, connected, host }) => {\n if (connected) {\n hostUrls.set(provider, host!);\n }\n },\n );\n }\n\n return hostUrls;\n };\n\n const getTriggerComponent = () => {\n let triggerComponent =
    ;\n\n if (jobInstance) {\n const initiator =\n jobInstance.eventInitiator ||\n t('jobDetails.status.trigger.unknown.label');\n const triggerType = jobInstance.eventTriggerType;\n if (triggerType && triggerType.toLowerCase().includes('manual')) {\n triggerComponent = (\n
    \n {initiator !== t('jobDetails.status.trigger.unknown.label') ? (\n ,\n ]}\n values={{ initiator }}\n />\n ) : (\n initiator\n )}\n
    \n );\n } else {\n triggerComponent = (\n
    \n {t('jobDetails.status.trigger.pr.label', {\n username: initiator,\n })}\n
    \n );\n }\n }\n\n return triggerComponent;\n };\n\n const getCommitUrl = () => {\n let url = null;\n\n const vcsHostUrls = getVCSHostURLs();\n if (jobInstance) {\n const repoHost = getRepoHost(jobInstance.repoProvider!, vcsHostUrls);\n if (repoHost) {\n url = getCommitLink(\n jobInstance.repoProvider!,\n jobInstance.repoOwner!,\n jobInstance.repoName!,\n jobInstance.repoId!,\n repoHost!,\n jobInstance.commitId,\n );\n }\n }\n return url;\n };\n\n const renderStatusBar = () => {\n if (vcsIntegrationsLoading || !vcsIntegrations || !jobInstance) {\n return ;\n }\n\n const commitURL = getCommitUrl();\n const triggerComponent = getTriggerComponent();\n\n return (\n \n \n \n {t('jobDetails.status.header.name.label')}\n \n \n {jobInstance.name}\n \n \n \n \n {t('jobDetails.status.header.time.label')}\n \n \n {format(new Date(jobInstance.created), 'yyyy-MM-dd HH:mm:ss')}\n \n \n \n \n {t('jobDetails.status.header.branch.label')}\n \n \n
    \n ,\n ]}\n values={{\n repoBranch: jobInstance.repoBranch,\n commitId: jobInstance.commitId,\n }}\n />\n
    \n
    \n
    \n \n \n {t('jobDetails.status.header.image.label')}\n \n \n {jobInstance.vmImage ? jobInstance.vmImage : '-'}\n \n \n \n \n {t('jobDetails.status.header.trigger.label')}\n \n \n {triggerComponent}\n \n \n
    \n );\n };\n\n if (vcsIntegrationsError) {\n return ;\n }\n\n return renderStatusBar();\n};\n\nexport default JobDetailsStatusBar;\n","import Breadcrumbs from '@components/Breadcrumbs';\nimport PageLayout from '@components/PageLayout';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport {\n useGetJobInstanceV1,\n useRerunJobInstanceV1,\n} from '@services/cd4pe/jobs';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { LINKS } from 'src/routes';\nimport {\n Heading,\n Text,\n Badge,\n Loading,\n Button,\n Tabs,\n ConfirmationModal,\n} from '@puppet/react-components';\nimport { JobInstanceResponseV1, TaskStateV1 } from '@puppet/cd4pe-client-ts';\nimport { FAILED_STATES, IN_PROGRESS_STATES } from '@utils/constants';\nimport JobDetailsTab from './components/JobDetailsTab';\nimport JobDetailsCommand from './components/JobDetailsCommand';\nimport JobDetailsStatusBar from './components/JobDetailsStatusBar';\n\ntype TabId = 'JOB' | 'COMMANDS';\n\nconst getCodeProjectUrl = (\n codeProjectType: JobInstanceResponseV1['codeProjectType'],\n workspaceName: string,\n codeProjectName: string,\n) => {\n switch (codeProjectType) {\n case 'MODULE':\n return LINKS.codeDelivery.viewModule({\n path: { workspace: workspaceName, name: codeProjectName },\n });\n case 'CONTROL_REPO':\n return LINKS.codeDelivery.viewRepository({\n path: { workspace: workspaceName, name: codeProjectName },\n });\n default:\n return undefined;\n }\n};\n\nconst JobDetails = () => {\n const { t } = useTranslation('codeDelivery');\n const navigate = useNavigate();\n const workspaceName = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const [rerunModalOpen, setRerunModalOpen] = React.useState(false);\n const [activeTab, setActiveTab] = React.useState('JOB');\n const { jobInstanceId } = useParams() as { jobInstanceId: string };\n const { data: jobInstance, isLoading } = useGetJobInstanceV1(\n {\n workspaceId,\n instanceId: +jobInstanceId,\n },\n {\n refetchInterval: (data) => (data?.state === 'RUNNING' ? 2000 : false),\n },\n );\n const rerunJobInstance = useRerunJobInstanceV1();\n\n const breadcrumbs = [\n {\n displayName: t('jobDetails.breadcrumbs.jobs'),\n linkDestination: LINKS.codeDelivery.listJobTemplates({\n path: { workspace: workspaceName },\n }),\n },\n {\n displayName: jobInstance?.codeProjectName ?? '',\n linkDestination: getCodeProjectUrl(\n jobInstance?.codeProjectType,\n workspaceName,\n jobInstance?.codeProjectName || '',\n ),\n dataTestId: 'job-details-breadcrumb-code-project',\n },\n {\n displayName: t('jobDetails.breadcrumbs.jobDetails'),\n },\n ];\n\n const onRerunSuccess = (newId: number) => {\n setRerunModalOpen(false);\n navigate(\n LINKS.codeDelivery.jobDetails({\n path: { workspace: workspaceName, jobInstanceId: newId },\n }),\n );\n };\n\n const getStatusType = (status: TaskStateV1) => {\n if (FAILED_STATES.includes(status)) {\n return 'danger';\n }\n\n if (status === 'DONE') {\n return 'success';\n }\n\n if (IN_PROGRESS_STATES.includes(status)) {\n return 'info';\n }\n\n return 'neutral';\n };\n\n return (\n \n {jobInstance && (\n <>\n \n \n \n \n
    \n
    \n \n {jobInstance.name}\n \n \n {t(`jobDetails.status.${jobInstance.state.toLowerCase()}`, {\n defaultValue: jobInstance.state,\n })}\n \n
    \n
    \n {IN_PROGRESS_STATES.includes(jobInstance.state) && (\n \n )}\n setRerunModalOpen(true)}\n data-testid=\"job-details-rerun-job-btn\"\n >\n {t('jobDetails.rerunJob.label')}\n \n
    \n
    \n \n {jobInstance.description}\n \n \n
    \n \n setActiveTab(tId)}\n >\n \n \n \n \n \n \n \n \n \n \n \n rerunJobInstance.mutate(\n {\n workspaceId,\n instanceId: jobInstance.id,\n },\n { onSuccess: ({ instanceId }) => onRerunSuccess(instanceId) },\n )\n }\n onCancel={() => setRerunModalOpen(false)}\n />\n \n )}\n {isLoading && }\n
    \n );\n};\n\nexport default JobDetails;\n","import JobDetails from './JobDetails';\n\nexport default JobDetails;\n","import React from 'react';\nimport Breadcrumbs from '@components/Breadcrumbs';\nimport { Heading, Button } from '@puppet/react-components';\nimport PageLayout from '@components/PageLayout';\nimport { BreadcrumbsType } from '@components/Breadcrumbs/Breadcrumbs';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from 'react-router-dom';\nimport { LINKS } from 'src/routes';\nimport useListControlReposV1, {\n useDeleteControlRepoV1,\n} from '@services/cd4pe/controlRepos';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport ListCodeProjects from '@codeDelivery/components/ListCodeProjects';\nimport useDebounce from '@hooks/useDebounce';\n\nconst ListControlRepos = () => {\n const { t } = useTranslation('codeDelivery');\n const navigate = useNavigate();\n const workspaceName = useWorkspaceName();\n const [prefix, setPrefix] = React.useState('');\n\n const workspaceId = useWorkspaceDomain();\n const controlRepos = useListControlReposV1({\n workspaceId,\n prefix: useDebounce(prefix),\n });\n const deleteControlRepo = useDeleteControlRepoV1();\n\n const onClickEdit = (controlRepoDisplayName: string) => {\n return navigate(\n LINKS.codeDelivery.editRepository({\n path: { workspace: workspaceName, name: controlRepoDisplayName },\n }),\n );\n };\n\n const breadcrumbs: BreadcrumbsType = [\n {\n displayName: workspaceName,\n },\n {\n displayName: t('listControlRepos.breadcrumb.controlRepos'),\n },\n ];\n\n return (\n \n \n \n \n \n
    \n {t('listControlRepos.header.title')}\n \n navigate(\n LINKS.codeDelivery.newRepository({\n path: { workspace: workspaceName },\n }),\n )\n }\n >\n {t('listControlRepos.header.newControlRepo')}\n \n
    \n
    \n \n page.controlRepos) ?? []\n }\n infiniteQueryDetails={controlRepos}\n getProjectLink={(name) =>\n LINKS.codeDelivery.viewRepository({\n path: { workspace: workspaceName, name },\n })\n }\n onDelete={(name, onSuccess: () => void) => {\n deleteControlRepo.mutate(\n {\n workspaceId,\n controlRepoName: name,\n },\n {\n onSuccess,\n },\n );\n }}\n onEdit={onClickEdit}\n deleteError={deleteControlRepo.error}\n prefix={prefix}\n setPrefix={setPrefix}\n />\n \n
    \n );\n};\n\nexport default ListControlRepos;\n","import ListControlRepos from './ListControlRepos';\n\nexport default ListControlRepos;\n","import {\n AppEventV1,\n CodeProjectDetailsV1,\n DeploymentAppEventV1,\n JobTemplateSummaryV1,\n PEImpactAnalysisEnvironmentV1,\n PEImpactAnalysisEventV1,\n PipelineDestinationTypeV1,\n ProjectPipelineDestinationV1,\n ProjectPipelineGateTypeV1,\n ProjectPipelineGateV1,\n ProjectPipelineStageV1,\n ProjectTypeV1,\n TaskStateV1,\n TriggerConditionV1,\n TriggerDeploymentRequestV1,\n UpsertPipelineStagesRequestV1,\n VmJobInstanceEventV1,\n} from '@puppet/cd4pe-client-ts';\nimport { DestinationSelector } from '@codeDelivery/components/ViewPipeline/components/Stages/Stages';\nimport { Deployment } from './components/DeploymentForm';\nimport { ImpactAnalysis } from './components/ImpactAnalysisForm';\n\nexport const PIPELINES_REFETCH_INTERVAL = 10000;\n\nexport enum PIPELINE_STAGE_OPTIONS {\n ADD_ITEM_TO_STAGE,\n ADD_STAGE_BEFORE,\n ADD_STAGE_AFTER,\n REORDER_PIPELINE,\n DELETE_STAGE,\n RENAME_STAGE,\n}\n\ntype TYPE_PIPELINE_STAGE_PROMOTE_OPTIONS = {\n [key: string]: TriggerConditionV1;\n};\n\nexport const PIPELINE_STAGE_PROMOTE_OPTIONS: TYPE_PIPELINE_STAGE_PROMOTE_OPTIONS =\n {\n ALL_SUCCESS: 'ALL_SUCCESS',\n ALL_COMPLETE: 'ALL_COMPLETE',\n ANY_SUCCESS: 'ANY_SUCCESS',\n ANY_COMPLETE: 'ANY_COMPLETE',\n };\n\nexport const PIPELINE_BRANCH_OPTIONS = {\n ALL_FILTER: 'ALL',\n MANUAL_ACTION: '~manual~',\n};\n\nexport const EVENT_TYPE_JOB = 'VM_JOB';\nexport const EVENT_TYPE_DEPLOYMENT = 'DEPLOYMENT';\nexport const EVENT_TYPE_IMPACT_ANALYSIS = 'PE_IMPACT_ANALYSIS';\nexport const LEGACY_EVENT_TYPE_ROLLING_DEPLOYMENT = 'ROLLING_DEPLOY';\nexport const LEGACY_EVENT_TYPE_MODULE_DEPLOYMENT = 'PE_MODULE_DEPLOYMENT';\n\n// eslint-disable-next-line no-shadow\nexport enum EventStatus {\n SUCCESS = 'SUCCESS',\n FAILED = 'FAILED',\n CANCELED = 'CANCELED',\n CANCELLED = 'CANCELLED',\n PENDING = 'PENDING',\n QUEUED = 'QUEUED',\n IN_PROGRESS = 'IN_PROGRESS',\n WAITING = 'WAITING',\n RUNNING = 'RUNNING',\n DONE = 'DONE',\n ABORTED = 'ABORTED',\n TIMEDOUT = 'TIMEDOUT',\n TIMED_OUT = 'TIMED_OUT',\n PENDING_APPROVAL = 'PENDING_APPROVAL',\n APPROVED = 'APPROVED',\n DECLINED = 'DECLINED',\n ACTIVE = 'ACTIVE',\n INACTIVE = 'INACTIVE',\n}\n\nexport function returnStatusColor(\n status: EventStatus | TaskStateV1 | undefined,\n) {\n switch (status) {\n case EventStatus.DONE:\n case EventStatus.SUCCESS:\n case EventStatus.ACTIVE:\n case EventStatus.APPROVED:\n return 'success';\n case EventStatus.FAILED:\n case EventStatus.TIMEDOUT:\n case EventStatus.INACTIVE:\n case EventStatus.DECLINED:\n return 'danger';\n case EventStatus.PENDING:\n case EventStatus.PENDING_APPROVAL:\n case EventStatus.IN_PROGRESS:\n case EventStatus.RUNNING:\n case EventStatus.WAITING:\n return 'warning';\n case EventStatus.CANCELED:\n case EventStatus.CANCELLED:\n case EventStatus.ABORTED:\n return 'subtle';\n default:\n return 'subtle';\n }\n}\n\nexport function isRunningStatus(status: EventStatus) {\n switch (status) {\n case EventStatus.PENDING:\n case EventStatus.IN_PROGRESS:\n case EventStatus.RUNNING:\n case EventStatus.QUEUED:\n case EventStatus.WAITING:\n case EventStatus.PENDING_APPROVAL:\n case EventStatus.APPROVED:\n return true;\n default:\n return false;\n }\n}\n\nexport function getEventStatus(\n event: VmJobInstanceEventV1 | DeploymentAppEventV1 | PEImpactAnalysisEventV1,\n): EventStatus | TaskStateV1 | keyof StatusMap | undefined {\n switch (event.eventType) {\n case EVENT_TYPE_JOB: {\n const job = event as VmJobInstanceEventV1;\n return job.jobStatus;\n }\n case EVENT_TYPE_DEPLOYMENT:\n case LEGACY_EVENT_TYPE_MODULE_DEPLOYMENT:\n case LEGACY_EVENT_TYPE_ROLLING_DEPLOYMENT: {\n const deployment = event as DeploymentAppEventV1;\n return deployment.deploymentState;\n }\n case EVENT_TYPE_IMPACT_ANALYSIS: {\n const impactAnalysis = event as PEImpactAnalysisEventV1;\n return impactAnalysis.state;\n }\n default:\n return undefined;\n }\n}\n\nexport function getFirstActiveEventStatus(stageEvents: AppEventV1[]) {\n if (!stageEvents || !Array.isArray(stageEvents)) {\n return null;\n }\n\n const firstActiveEvent = stageEvents.find((e) => {\n const status = getEventStatus(e);\n if (!status) return false;\n return isRunningStatus(status as EventStatus);\n });\n\n if (!firstActiveEvent) {\n return null;\n }\n\n return getEventStatus(firstActiveEvent);\n}\n\nexport function statusBadgeType(status: EventStatus | TaskStateV1) {\n switch (status) {\n case EventStatus.DONE:\n case EventStatus.SUCCESS:\n case EventStatus.ACTIVE:\n case EventStatus.APPROVED:\n return 'success';\n case EventStatus.FAILED:\n case EventStatus.TIMEDOUT:\n case EventStatus.INACTIVE:\n case EventStatus.DECLINED:\n return 'danger';\n case EventStatus.PENDING:\n case EventStatus.PENDING_APPROVAL:\n case EventStatus.IN_PROGRESS:\n case EventStatus.RUNNING:\n case EventStatus.WAITING:\n return 'warning';\n case EventStatus.CANCELED:\n case EventStatus.CANCELLED:\n case EventStatus.ABORTED:\n return 'neutral';\n default:\n return 'neutral';\n }\n}\n\nexport type StatusMap = {\n DONE?: number;\n SUCCESS: number;\n ACTIVE: number;\n FAILED: number;\n CANCELED: number;\n CANCELLED?: number;\n ABORTED: number;\n TIMEDOUT: number;\n INACTIVE: number;\n DECLINED: number;\n PENDING: number;\n IN_PROGRESS?: number;\n RUNNING: number;\n WAITING?: number;\n APPROVED: number;\n PENDING_APPROVAL: number;\n QUEUED: number;\n};\n\nexport const initStatusMap = (): StatusMap => {\n return {\n DONE: 0,\n SUCCESS: 0,\n ACTIVE: 0,\n FAILED: 0,\n CANCELED: 0,\n CANCELLED: 0,\n ABORTED: 0,\n TIMEDOUT: 0,\n INACTIVE: 0,\n DECLINED: 0,\n PENDING: 0,\n IN_PROGRESS: 0,\n RUNNING: 0,\n WAITING: 0,\n APPROVED: 0,\n PENDING_APPROVAL: 0,\n QUEUED: 0,\n };\n};\n\nexport const buildStatusMap = (events: AppEventV1[]): StatusMap => {\n const statusMap = initStatusMap();\n events.forEach((e) => {\n const status = getEventStatus(e);\n if (status) {\n statusMap[status as keyof StatusMap] += 1;\n }\n });\n return statusMap;\n};\n\nexport function isAllTerminal(statusMap: StatusMap) {\n if (!statusMap) return false;\n return (\n statusMap.ACTIVE === 0 &&\n statusMap.PENDING === 0 &&\n statusMap.IN_PROGRESS === 0 &&\n statusMap.RUNNING === 0 &&\n statusMap.WAITING === 0 &&\n statusMap.APPROVED === 0 &&\n statusMap.PENDING_APPROVAL === 0 &&\n statusMap.QUEUED === 0\n );\n}\n\nexport function isAnyFailed(statusMap: StatusMap) {\n if (!statusMap) return false;\n return (\n statusMap.FAILED > 0 || statusMap.TIMEDOUT > 0 || statusMap.INACTIVE > 0\n );\n}\n\nexport function isAnyDeclined(statusMap: StatusMap) {\n if (!statusMap) return false;\n return statusMap.DECLINED > 0;\n}\n\nexport function isAnySucceeded(statusMap: StatusMap) {\n if (!statusMap) return false;\n return statusMap.SUCCESS > 0 || statusMap.DONE! > 0;\n}\n\nexport function isAnyCancelled(statusMap: StatusMap) {\n if (!statusMap) return false;\n return (\n statusMap.CANCELED > 0 || statusMap.CANCELLED! > 0 || statusMap.ABORTED > 0\n );\n}\n\nexport function isAllCancelled(statusMap: StatusMap) {\n if (!statusMap) return false;\n return (\n isAllTerminal(statusMap) &&\n !isAnyFailed(statusMap) &&\n !isAnySucceeded(statusMap) &&\n isAnyCancelled(statusMap)\n );\n}\n\nexport function isAllSucceeded(statusMap: StatusMap) {\n return (\n isAllTerminal(statusMap) &&\n !isAnyFailed(statusMap) &&\n !isAnyCancelled(statusMap)\n );\n}\n\nexport function consolidateStatusMap(statusMap: StatusMap) {\n // we have some duplicate statuses, so we want to give a consolidated summary\n const consolidatedStatusMap = { ...statusMap };\n\n if (statusMap) {\n consolidatedStatusMap.SUCCESS = statusMap.SUCCESS + statusMap.DONE!;\n delete consolidatedStatusMap.DONE;\n\n consolidatedStatusMap.CANCELED = statusMap.CANCELED + statusMap.CANCELLED!;\n delete consolidatedStatusMap.CANCELLED;\n\n consolidatedStatusMap.PENDING = statusMap.PENDING + statusMap.WAITING!;\n delete consolidatedStatusMap.WAITING;\n\n consolidatedStatusMap.RUNNING = statusMap.RUNNING + statusMap.IN_PROGRESS!;\n delete consolidatedStatusMap.IN_PROGRESS;\n }\n\n return statusMap;\n}\n\nexport function renameStage(\n stageName: string,\n stageNumber: number, // 1-indexed\n stages: ProjectPipelineStageV1[],\n) {\n const stagesCopy = window.structuredClone(stages ?? []);\n\n stagesCopy[stageNumber - 1] = {\n ...stagesCopy[stageNumber - 1],\n stageName,\n };\n\n return stagesCopy;\n}\n\nexport function autoPromoteStage(\n triggerOn: boolean,\n stageNumber: number, // 1-indexed\n stages: ProjectPipelineStageV1[],\n) {\n const stagesCopy = window.structuredClone(stages ?? []);\n\n stagesCopy[stageNumber - 1] = {\n ...stagesCopy[stageNumber - 1],\n triggerOn,\n };\n\n return stagesCopy;\n}\n\nexport function autoPromoteConditionStage(\n triggerCondition: TriggerConditionV1,\n stageNumber: number, // 1-indexed\n stages: ProjectPipelineStageV1[],\n) {\n const stagesCopy = window.structuredClone(stages ?? []);\n\n stagesCopy[stageNumber - 1] = {\n ...stagesCopy[stageNumber - 1],\n triggerCondition,\n };\n\n return stagesCopy;\n}\n\nconst toMilliseconds = (min: number) => min * 60000;\n\nconst DEFAULT_TIMEOUT_MINUTES = 60;\n\nfunction generateDeploymentDestination(\n deployment: Deployment,\n stageNum: number,\n workspaceId: string,\n displayName: string,\n projectName: string,\n): ProjectPipelineDestinationV1 {\n return {\n stageNum,\n type: 'DEPLOYMENT',\n deploymentTemplate: {\n deploymentPolicy: deployment.deploymentPolicy,\n domain: workspaceId,\n displayName,\n maxRuntime: deployment.timeout\n ? toMilliseconds(deployment.timeout)\n : toMilliseconds(DEFAULT_TIMEOUT_MINUTES),\n puppetEnterpriseCredentialsId: {\n name: deployment.puppetEnterpriseServer?.name!,\n domain: deployment.puppetEnterpriseServer?.workspaceId!,\n },\n deploymentTarget: {\n type: 'NODE_GROUP',\n nodeGroupId: deployment.nodeGroup?.id!,\n environmentPrefix: deployment.prefix,\n },\n controlRepoName: deployment.controlRepoName || projectName,\n controlRepoBaseFeatureBranch: deployment.controlRepoBaseFeatureBranch,\n },\n };\n}\n\nfunction generateIADestination(\n iaData: ImpactAnalysis,\n stageNum: number,\n workspaceId: string,\n projectName: string,\n projectType: ProjectTypeV1,\n): ProjectPipelineDestinationV1 {\n return {\n stageNum,\n type: 'IMPACT_ANALYSIS',\n peImpactAnalysisTemplate: {\n domain: workspaceId,\n settings: {\n analyzeAllDeployments: iaData.allStageEnvironments,\n compileBatchSize: iaData.nodes,\n [projectType === 'CONTROL_REPO' ? 'controlRepoId' : 'moduleId']: {\n domain: workspaceId,\n name: projectName,\n },\n environments: iaData.stageEnvironments\n ? iaData.stageEnvironments?.map((str) => ({\n pipelineDestinationId: str,\n }))\n : [],\n moduleImpactAnalysisControlRepos:\n projectType === 'MODULE'\n ? iaData.stageEnvironments?.map((env) => ({\n controlRepoId: {\n domain: workspaceId,\n name: iaData?.stageEnvironmentsControlRepos?.[env] ?? '',\n },\n peModuleDeploymentId: env,\n }))\n : undefined,\n },\n },\n };\n}\n\nexport function getNextPipelineStageNumber(stages: ProjectPipelineStageV1[]) {\n if (!stages || stages.length < 1) {\n return 1;\n }\n\n let maxStage = stages[0].stageNum;\n\n stages.forEach((s) => {\n if (s.stageNum > maxStage) {\n maxStage = s.stageNum;\n }\n });\n\n return maxStage + 1;\n}\n\nexport function generateJobDestinations(\n jobTemplateSummaries: JobTemplateSummaryV1[],\n stageNum: number,\n): ProjectPipelineDestinationV1[] {\n const destinations: ProjectPipelineDestinationV1[] = [];\n jobTemplateSummaries.forEach((jobTemplateSummary) => {\n const destination: ProjectPipelineDestinationV1 = {\n type: 'JOB',\n stageNum,\n vmJobTemplateId: jobTemplateSummary.id,\n vmJobTemplateName: jobTemplateSummary.name,\n };\n destinations.push(destination);\n });\n return destinations;\n}\n\ntype DestinationType = PipelineDestinationTypeV1 | ProjectPipelineGateTypeV1;\n\nexport interface AddNewStageParams {\n stageName: string;\n destinationType: DestinationType;\n stages: ProjectPipelineStageV1[];\n event: Deployment | JobTemplateSummaryV1[] | ImpactAnalysis;\n deploymentDisplayName?: string;\n workspaceId: string;\n projectName: string;\n projectType: ProjectTypeV1;\n}\n\nexport interface AddNewNumberedStageParams extends AddNewStageParams {\n stageNumber: number;\n}\n\nfunction createStage({\n stageNumber, // 1-indexed\n stageName,\n destinationType,\n event,\n deploymentDisplayName,\n workspaceId,\n projectName,\n projectType,\n}: AddNewNumberedStageParams): ProjectPipelineStageV1 {\n const newStage: ProjectPipelineStageV1 = {\n stageNum: stageNumber,\n stageName,\n triggerOn: false,\n destinations: [],\n };\n\n if (destinationType === 'JOB') {\n newStage.destinations = generateJobDestinations(\n event as JobTemplateSummaryV1[],\n stageNumber,\n );\n } else if (destinationType === 'DEPLOYMENT' && deploymentDisplayName) {\n const destination = generateDeploymentDestination(\n event as Deployment,\n stageNumber,\n workspaceId,\n deploymentDisplayName,\n projectName,\n );\n newStage.destinations.push(destination);\n } else if (destinationType === 'IMPACT_ANALYSIS') {\n const destination = generateIADestination(\n event as ImpactAnalysis,\n stageNumber,\n workspaceId,\n projectName,\n projectType,\n );\n newStage.destinations.push(destination);\n }\n\n return newStage;\n}\n\nexport function addNewStageBefore({\n stageNumber, // 1-indexed\n stageName,\n destinationType,\n stages,\n event,\n deploymentDisplayName,\n workspaceId,\n projectName,\n projectType,\n}: AddNewNumberedStageParams): ProjectPipelineStageV1[] {\n const newStage = createStage({\n stageNumber,\n stageName,\n destinationType,\n stages,\n event,\n deploymentDisplayName,\n workspaceId,\n projectName,\n projectType,\n });\n const stagesCopy = window.structuredClone(stages ?? []);\n stagesCopy.splice(stageNumber - 1, 0, newStage);\n return stagesCopy;\n}\n\nexport function addNewStageAfter({\n stageNumber, // 1-indexed\n stageName,\n destinationType,\n stages,\n event,\n deploymentDisplayName,\n workspaceId,\n projectName,\n projectType,\n}: AddNewNumberedStageParams): ProjectPipelineStageV1[] {\n const newStage = createStage({\n stageNumber: stageNumber + 1,\n stageName,\n destinationType,\n stages,\n event,\n deploymentDisplayName,\n workspaceId,\n projectName,\n projectType,\n });\n const stagesCopy = window.structuredClone(stages ?? []);\n if (stageNumber === stagesCopy.length) {\n stagesCopy.push(newStage);\n } else {\n stagesCopy.splice(stageNumber, 0, newStage);\n }\n return stagesCopy;\n}\n\nexport function addNewStage({\n stageName,\n destinationType,\n stages,\n event,\n deploymentDisplayName,\n workspaceId,\n projectName,\n projectType,\n}: AddNewStageParams): ProjectPipelineStageV1[] {\n const newStage = createStage({\n stageNumber: getNextPipelineStageNumber(stages),\n stageName,\n destinationType,\n stages,\n event,\n deploymentDisplayName,\n workspaceId,\n projectName,\n projectType,\n });\n const stagesCopy = window.structuredClone(stages ?? []);\n stagesCopy.push(newStage);\n return stagesCopy;\n}\n\nexport function addNewStageItem({\n stageNumber, // 1-indexed\n destinationType,\n stages,\n event,\n deploymentDisplayName,\n workspaceId,\n projectName,\n projectType,\n}: AddNewNumberedStageParams): ProjectPipelineStageV1[] {\n const stagesCopy = window.structuredClone(stages ?? []);\n\n if (destinationType === 'JOB') {\n stagesCopy[stageNumber - 1].destinations = stagesCopy[\n stageNumber - 1\n ].destinations\n .concat(\n generateJobDestinations(event as JobTemplateSummaryV1[], stageNumber),\n )\n .filter(\n (d: ProjectPipelineDestinationV1) =>\n d.placeholder !== 'JOB_PLACEHOLDER',\n );\n } else if (destinationType === 'DEPLOYMENT' && deploymentDisplayName) {\n stagesCopy[stageNumber - 1].destinations = stagesCopy[\n stageNumber - 1\n ].destinations\n .concat([\n generateDeploymentDestination(\n event as Deployment,\n stageNumber,\n workspaceId,\n deploymentDisplayName,\n projectName,\n ),\n ])\n .filter(\n (d: ProjectPipelineDestinationV1) =>\n d.placeholder !== 'DEPLOYMENT_PLACEHOLDER',\n );\n } else if (destinationType === 'IMPACT_ANALYSIS') {\n stagesCopy[stageNumber - 1].destinations = stagesCopy[\n stageNumber - 1\n ].destinations\n .concat([\n generateIADestination(\n event as ImpactAnalysis,\n stageNumber,\n workspaceId,\n projectName,\n projectType,\n ),\n ])\n .filter(\n (d: ProjectPipelineDestinationV1) =>\n d.placeholder !== 'IMPACT_ANALYSIS_PLACEHOLDER',\n );\n }\n\n return stagesCopy;\n}\n\nexport function deleteStage(\n stageNumber: number, // 1-indexed\n stages: ProjectPipelineStageV1[],\n) {\n return stages.filter((stage) => stage.stageNum !== stageNumber);\n}\n\nexport function deleteStageJob(\n id: string,\n stageNumber: number, // 1-indexed\n stages: ProjectPipelineStageV1[],\n) {\n const stagesCopy = window.structuredClone(stages ?? []);\n\n const stage = stagesCopy[stageNumber - 1];\n\n if (stage?.destinations.length === 1) {\n return deleteStage(stageNumber, stagesCopy);\n }\n\n stagesCopy[stageNumber - 1] = {\n ...stage,\n destinations:\n stage?.destinations.filter(\n (d: ProjectPipelineDestinationV1) => d.id !== id,\n ) ?? [],\n };\n\n return stagesCopy;\n}\n\nexport function deleteStagePipelineGate(\n stageNumber: number, // 1-indexed\n stages: ProjectPipelineStageV1[],\n) {\n const stagesCopy = window.structuredClone(stages ?? []);\n\n delete stagesCopy[stageNumber - 1].pipelineGate;\n\n return stagesCopy;\n}\n\nexport function addPRGate(\n stageNum: number, // 1-indexed\n stages: ProjectPipelineStageV1[],\n) {\n const newPipelineGate: ProjectPipelineGateV1 = {\n projectPipelineGateType: 'PULL_REQUEST',\n };\n const stagesCopy = window.structuredClone(stages ?? []);\n\n stagesCopy[stageNum - 1].pipelineGate = newPipelineGate;\n\n return stagesCopy;\n}\n\nexport function buildManualDeploymentRequest(\n deployment: Deployment,\n codeProject: CodeProjectDetailsV1,\n displayName: string,\n workspaceId: string,\n projectType: ProjectTypeV1,\n): TriggerDeploymentRequestV1 {\n return {\n workspaceId,\n projectName: codeProject.name,\n projectType,\n displayName,\n description: deployment.description ?? '',\n maxRuntime: deployment.timeout\n ? toMilliseconds(deployment.timeout)\n : toMilliseconds(DEFAULT_TIMEOUT_MINUTES),\n deploymentPolicy: {\n ...deployment.deploymentPolicy,\n controlRepoId: {\n domain: workspaceId,\n name: codeProject.name,\n },\n },\n deploymentTarget: {\n type: 'NODE_GROUP',\n nodeGroupId: deployment.nodeGroup?.id,\n environmentPrefix: deployment.prefix,\n },\n puppetEnterpriseServer: deployment.puppetEnterpriseServer?.name ?? '',\n repoTargetBranch: deployment.nodeGroup?.environment ?? '',\n repoSourceBranch: deployment.branch,\n repoSourceSha: deployment.commit,\n };\n}\n\nexport const buildUpdateImpactAnalysisRequest = (\n values: ImpactAnalysis,\n codeProject: CodeProjectDetailsV1,\n selectedDestination: DestinationSelector,\n destinationData: ProjectPipelineDestinationV1,\n stages: ProjectPipelineStageV1[],\n projectType: ProjectTypeV1,\n workspaceId: string,\n): UpsertPipelineStagesRequestV1 => {\n const updatedStages = [...stages];\n\n const targetStage = stages[selectedDestination.stageIndex];\n\n delete targetStage.destinations[selectedDestination.destinationIndex]\n .placeholder;\n\n targetStage.destinations[selectedDestination.destinationIndex] = {\n ...destinationData,\n peImpactAnalysisTemplate: {\n ...destinationData.peImpactAnalysisTemplate,\n settings: {\n ...destinationData.peImpactAnalysisTemplate?.settings,\n compileBatchSize: Number(values.nodes), // ensure number\n analyzeAllDeployments: values.allStageEnvironments,\n environments: values.stageEnvironments\n ? values.stageEnvironments?.map((str) => ({\n pipelineDestinationId: str,\n }))\n : [],\n moduleImpactAnalysisControlRepos:\n projectType === 'MODULE'\n ? values.stageEnvironments?.map((env) => ({\n controlRepoId: {\n domain: workspaceId,\n name: values?.stageEnvironmentsControlRepos?.[env] ?? '',\n },\n peModuleDeploymentId: env,\n }))\n : undefined,\n },\n },\n };\n updatedStages[selectedDestination.stageIndex] = targetStage;\n\n return { stages: updatedStages, projectName: codeProject.name };\n};\n\nexport const checkDeploymentExists = (\n stages: ProjectPipelineStageV1[],\n): boolean => {\n return stages.some((stage) => {\n return stage.destinations?.some(\n (dest) =>\n dest.type === 'DEPLOYMENT' &&\n dest.placeholder !== 'DEPLOYMENT_PLACEHOLDER',\n );\n });\n};\n\nexport function getIATasksFromPipelineStages(stages: ProjectPipelineStageV1[]) {\n const environments: PEImpactAnalysisEnvironmentV1[] = [];\n\n stages.forEach((s) => {\n s.destinations.forEach((d) => {\n if (d.type === 'IMPACT_ANALYSIS') {\n d.peImpactAnalysisTemplate?.settings?.environments?.forEach((e) => {\n environments.push({\n ...e,\n });\n });\n }\n });\n });\n\n return environments;\n}\n\nexport function impactedJobs(\n stages: ProjectPipelineStageV1[],\n pipelineDestinationId: string,\n) {\n const impactedDestinationIds: string[] = [];\n\n const environments: PEImpactAnalysisEnvironmentV1[] =\n getIATasksFromPipelineStages(stages);\n environments.forEach((environment) => {\n if (environment.pipelineDestinationId === pipelineDestinationId)\n impactedDestinationIds.push(environment.pipelineDestinationId);\n });\n\n return impactedDestinationIds;\n}\n\nexport function getProjectTypeString(projectType: ProjectTypeV1): string {\n if (projectType === 'CONTROL_REPO') {\n return 'control repo';\n }\n return 'module';\n}\n\nexport const checkPullRequestExists = (\n stages: ProjectPipelineStageV1[],\n): boolean => {\n return stages.some((stage) => {\n return stage?.pipelineGate?.projectPipelineGateType === 'PULL_REQUEST';\n });\n};\n","import React, { ReactElement, ReactNode } from 'react';\nimport { Trans, useTranslation, TFunction } from 'react-i18next';\nimport { UseInfiniteQueryResult, UseQueryResult } from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n CodeProjectDetailsV1,\n ListPEIntegrationsResponseV2,\n ListVcsBranchesResponseV1,\n ListVcsCommitsResponseV1,\n ListPEIntegrationEnvironmentsResponseV2,\n ListControlReposResponseV1,\n VcsCommitV1,\n PEIntegrationV2,\n PEIntegrationEnvironmentV2,\n ListDeploymentPoliciesResponseV1,\n} from '@utils/api/cd4pe';\nimport {\n Text,\n Link as PdsLink,\n TooltipHoverArea,\n Form,\n} from '@puppet/react-components';\nimport formatDistanceToNow from 'date-fns/formatDistanceToNow';\nimport useVcsLinks from '@hooks/useVcsLinks';\n\nexport type SelectOptions = {\n label: string | ReactElement | ReactNode;\n value: string | [];\n}[];\n\nexport const getLoadingOption = (\n t: TFunction<'codeDelivery'>,\n): SelectOptions => [\n {\n label: t('viewPipeline.form.field.select.searching'),\n value: [],\n },\n];\n\nexport const getNoResultsOption = (\n t: TFunction<'codeDelivery'>,\n): SelectOptions => [\n {\n label: t('viewPipeline.form.field.select.noResults'),\n value: [],\n },\n];\n\nexport const formFieldValidator =\n ({ options, errorString }: { options: SelectOptions; errorString: string }) =>\n (value: string) => {\n if (value !== '' && !options?.some((option) => option.value === value)) {\n return errorString;\n }\n\n return false;\n };\n\nexport const getBranchOptions = ({\n query,\n fieldValue,\n t,\n}: {\n query: UseQueryResult;\n fieldValue: string;\n t: TFunction<'codeDelivery'>;\n}): SelectOptions => {\n if (fieldValue !== '' && query?.data?.vcsBranches?.length === 0) {\n if (query.isFetching) {\n return getLoadingOption(t);\n }\n\n return getNoResultsOption(t);\n }\n\n return (\n query?.data?.vcsBranches?.map((b) => ({\n value: b.name,\n label: b.name,\n })) ?? []\n );\n};\n\nexport const getBranchField = ({\n query,\n fieldValue,\n t,\n ...rest\n}: {\n query: UseQueryResult;\n fieldValue: string;\n t: TFunction<'codeDelivery'>;\n [key: string]: unknown;\n}) => {\n const options = getBranchOptions({\n query,\n fieldValue,\n t,\n });\n\n return (\n \n );\n};\n\ninterface CommitOptionLabelProps {\n commit: VcsCommitV1;\n codeProject: CodeProjectDetailsV1;\n selectedBranch?: string;\n}\n\nexport const CommitOptionLabel = ({\n commit,\n codeProject,\n selectedBranch,\n}: CommitOptionLabelProps): ReactElement => {\n const { t } = useTranslation('codeDelivery');\n const { getBranchLink, getCommitLink } = useVcsLinks();\n\n return (\n
    \n \n {commit.branch}\n \n \n \n \n {{\n commit: commit.sha,\n }}\n \n \n \n {'committer' in commit && (\n \n {t('viewPipeline.form.field.commit.committer', {\n committer: commit.committer,\n })}\n \n )}\n {commit.timestamp !== undefined && (\n \n {t('viewPipeline.form.field.commit.timestamp', {\n timestamp: formatDistanceToNow(commit.timestamp),\n })}\n \n )}\n
    \n \n \n {commit.commitMessage}\n \n \n
    \n
    \n );\n};\n\nexport const formatCommitsForSelect = (\n commits: UseQueryResult,\n codeProject: CodeProjectDetailsV1,\n selectedBranch: string,\n commitSearch: string,\n) => {\n return commits.data?.vcsCommits\n ?.filter((commit) => {\n if (!commitSearch) return true;\n\n return (\n commit.sha.toLowerCase().includes(commitSearch.toLowerCase()) ||\n commit.commitMessage?.toLowerCase().includes(commitSearch.toLowerCase())\n );\n })\n .map((commit) => ({\n value: commit.sha,\n label: (\n \n ),\n }));\n};\n\nexport const getCommitOptions = ({\n query,\n fieldValue,\n branch,\n codeProject,\n t,\n}: {\n query: UseQueryResult;\n fieldValue: string;\n branch: string;\n codeProject: CodeProjectDetailsV1;\n t: TFunction<'codeDelivery'>;\n}): SelectOptions => {\n const fieldValueLowerCase = fieldValue.toLowerCase();\n const options: SelectOptions =\n query.data?.vcsCommits\n ?.filter((commit) => {\n if (!fieldValue) return true;\n\n return (\n commit.sha.toLowerCase().includes(fieldValueLowerCase) ||\n commit.commitMessage?.toLowerCase().includes(fieldValueLowerCase)\n );\n })\n .map((commit) => ({\n value: commit.sha,\n label: (\n \n ),\n })) ?? [];\n\n if (fieldValue !== '' && options.length === 0) {\n return getNoResultsOption(t);\n }\n\n return options;\n};\n\nexport const getCommitField = ({\n query,\n fieldValue,\n branch,\n codeProject,\n t,\n ...rest\n}: {\n query: UseQueryResult;\n fieldValue: string;\n branch: string;\n codeProject: CodeProjectDetailsV1;\n t: TFunction<'codeDelivery'>;\n [key: string]: unknown;\n}) => {\n const options = getCommitOptions({\n query,\n fieldValue,\n branch,\n codeProject,\n t,\n });\n\n return (\n \n );\n};\n\nexport const formatBranchesForSelect = (\n vcsBranches: UseQueryResult,\n) =>\n vcsBranches.data?.vcsBranches.map((branch) => {\n return { value: branch.name, label: branch.name };\n });\n\ninterface PEIntegrationProps {\n peIntegration: PEIntegrationV2;\n}\n\nexport const PeIntegrationsOptionsLabel = ({\n peIntegration,\n}: PEIntegrationProps) => {\n const { t } = useTranslation('codeDelivery');\n\n return (\n
    \n \n \n {peIntegration.name}\n \n \n \n \n {t('viewPipeline.form.field.puppetEnterpriseServer', {\n puppetEnterpriseServer: peIntegration.nodeClassifierUrl,\n })}\n \n \n
    \n );\n};\n\nexport const getPuppetEnterpriseServerOptions = ({\n query,\n fieldValue,\n t,\n}: {\n query: UseQueryResult;\n fieldValue: string;\n t: TFunction<'codeDelivery'>;\n}): SelectOptions => {\n if (fieldValue !== '' && query?.data?.peIntegrations?.length === 0) {\n if (query.isFetching) {\n return getLoadingOption(t);\n }\n\n return getNoResultsOption(t);\n }\n\n return (\n query?.data?.peIntegrations?.map((peIntegration) => ({\n value: peIntegration.name,\n label: ,\n })) ?? []\n );\n};\n\nexport const getPuppetEnterpriseServerField = ({\n query,\n fieldValue,\n t,\n ...rest\n}: {\n query: UseQueryResult;\n fieldValue: string;\n t: TFunction<'codeDelivery'>;\n [key: string]: unknown;\n}) => {\n const options = getPuppetEnterpriseServerOptions({\n query,\n fieldValue,\n t,\n });\n\n return (\n \n );\n};\n\ninterface EnvironmentProps {\n environment: PEIntegrationEnvironmentV2;\n codeProject: CodeProjectDetailsV1;\n}\n\nexport const EnvironmentOptionsLabel = ({\n environment,\n codeProject,\n}: EnvironmentProps) => {\n const { t } = useTranslation('codeDelivery');\n const { getBranchLink } = useVcsLinks();\n\n return (\n
    \n \n \n {environment.name}\n \n \n \n \n \n \n {{\n environment: environment.environment,\n }}\n \n \n \n \n
    \n );\n};\n\nexport const formatEnvironmentsForSelect = (\n environments: UseQueryResult<\n ListPEIntegrationEnvironmentsResponseV2,\n Cd4peApiError\n >,\n codeProject: CodeProjectDetailsV1,\n) => {\n return environments?.data?.environments?.map((env) => ({\n value: env.id,\n label: (\n \n ),\n }));\n};\n\nexport const getEnvironmentOptions = ({\n query,\n fieldValue,\n codeProject,\n t,\n}: {\n query: UseQueryResult;\n fieldValue: string;\n codeProject: CodeProjectDetailsV1;\n t: TFunction<'codeDelivery'>;\n}): SelectOptions => {\n if (fieldValue !== '' && query?.data?.environments?.length === 0) {\n if (query.isFetching) {\n return getLoadingOption(t);\n }\n\n return getNoResultsOption(t);\n }\n\n return (\n query?.data?.environments?.map((env) => ({\n value: env.name,\n label: (\n \n ),\n })) ?? []\n );\n};\n\nexport const getEnvironmentField = ({\n query,\n fieldValue,\n codeProject,\n t,\n ...rest\n}: {\n query: UseQueryResult;\n fieldValue: string;\n codeProject: CodeProjectDetailsV1;\n t: TFunction<'codeDelivery'>;\n [key: string]: unknown;\n}) => {\n const options = getEnvironmentOptions({\n query,\n fieldValue,\n codeProject,\n t,\n });\n\n return (\n \n );\n};\n\nexport const formatControlReposForSelect = (\n controlRepos: UseInfiniteQueryResult<\n ListControlReposResponseV1,\n Cd4peApiError\n >,\n) => {\n return controlRepos?.data?.pages[0]?.controlRepos?.map((controlRepo) => ({\n value: controlRepo.name,\n label: controlRepo.name,\n }));\n};\n\nexport const getControlRepoOptions = ({\n query,\n fieldValue,\n t,\n}: {\n query: UseInfiniteQueryResult;\n fieldValue: string;\n t: TFunction<'codeDelivery'>;\n}): SelectOptions => {\n if (fieldValue !== '' && query?.data?.pages[0]?.controlRepos?.length === 0) {\n if (query.isFetching) {\n return getLoadingOption(t);\n }\n\n return getNoResultsOption(t);\n }\n\n return (\n query?.data?.pages[0]?.controlRepos?.map((controlRepo) => ({\n value: controlRepo.name,\n label: controlRepo.name,\n })) ?? []\n );\n};\n\nexport const getControlRepoField = ({\n query,\n fieldValue,\n t,\n ...rest\n}: {\n query: UseInfiniteQueryResult;\n fieldValue: string;\n t: TFunction<'codeDelivery'>;\n [key: string]: unknown;\n}) => {\n const options = getControlRepoOptions({\n query,\n fieldValue,\n t,\n });\n\n return (\n \n );\n};\n\nexport const getDeploymentPolicyOptions = ({\n query,\n fieldValue,\n customPolicy,\n t,\n}: {\n query: UseQueryResult;\n fieldValue: string;\n customPolicy: boolean;\n t: TFunction<'codeDelivery'>;\n}): SelectOptions => {\n const fieldValueLowerCase = fieldValue.toLowerCase();\n\n const options: SelectOptions =\n query.data?.deploymentPolicies\n ?.filter((policy) => {\n if (customPolicy !== policy.custom) return false;\n\n if (!fieldValue) return true;\n\n return (\n policy.name?.toLowerCase().includes(fieldValueLowerCase) ||\n policy.displayName?.toLowerCase().includes(fieldValueLowerCase)\n );\n })\n .map((policy) => ({\n value: policy.displayName ?? '',\n label: policy.displayName ?? '',\n })) ?? [];\n\n if (fieldValue !== '' && options.length === 0) {\n return getNoResultsOption(t);\n }\n\n return options;\n};\n\nexport const getDeploymentPolicyField = ({\n query,\n fieldValue,\n customPolicy,\n t,\n ...rest\n}: {\n query: UseQueryResult;\n fieldValue: string;\n customPolicy: boolean;\n t: TFunction<'codeDelivery'>;\n [key: string]: unknown;\n}) => {\n const options = getDeploymentPolicyOptions({\n query,\n fieldValue,\n customPolicy,\n t,\n });\n\n let placeHolder;\n if (query.isFetching) {\n placeHolder = t(\n 'viewPipeline.form.deployment.field.deploymentPolicy.loading',\n );\n } else if (customPolicy) {\n placeHolder = t(\n 'viewPipeline.form.deployment.field.deploymentPolicy.custom.placeholder',\n );\n } else {\n placeHolder = t(\n 'viewPipeline.form.deployment.field.deploymentPolicy.builtin.placeholder',\n );\n }\n\n return (\n \n );\n};\n","import React, { useState } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Heading, Form, Text, Link } from '@puppet/react-components';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport {\n useListEnvironmentsV2,\n useListPeIntegrationsV2,\n} from '@services/cd4pe/peIntegrations';\nimport { useListBranchesV1, useListCommitsV1 } from '@services/cd4pe/vcs';\nimport {\n CodeProjectDetailsV1,\n PEIntegrationEnvironmentV2,\n PEIntegrationV2,\n ProjectPipelineStageV1,\n ProjectTypeV1,\n} from '@puppet/cd4pe-client-ts';\nimport Cd4peError from '@components/Cd4peError';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport { checkDeploymentExists } from '@codeDelivery/components/ViewPipeline/utils';\nimport useListControlReposV1 from '@services/cd4pe/controlRepos';\nimport useDebounce from '@hooks/useDebounce';\nimport {\n formatControlReposForSelect,\n getBranchField,\n getCommitField,\n getControlRepoField,\n getEnvironmentField,\n getPuppetEnterpriseServerField,\n} from '../../formHelpers';\n\nexport type ImpactAnalysisFormProps = {\n branch: string;\n commit: string;\n puppetEnterpriseServer: string;\n environment: string;\n nodes: number;\n allStageEnvironments: boolean;\n stageEnvironments: Record;\n stageEnvironmentsControlRepos: Record;\n controlRepo?: string;\n};\n\nconst defaultProps = {\n submittable: true,\n cancellable: true,\n};\n\nexport type ImpactAnalysis = {\n branch?: string;\n commit?: string;\n puppetEnterpriseServer?: PEIntegrationV2 | undefined;\n environment?: PEIntegrationEnvironmentV2 | undefined;\n nodes: number;\n allStageEnvironments?: boolean;\n stageEnvironments?: string[];\n stageEnvironmentsControlRepos?: Record;\n controlRepo?: string;\n};\n\ninterface Props {\n type: 'manual' | 'stage';\n projectType: ProjectTypeV1;\n stages?: ProjectPipelineStageV1[];\n initialValues?: ImpactAnalysisFormProps;\n codeProject: CodeProjectDetailsV1;\n disabled?: boolean;\n submittable?: boolean;\n cancellable?: boolean;\n onSubmit: (values: ImpactAnalysis) => void;\n onCancel: () => void;\n submitting: boolean;\n submitKey?: string;\n cancelKey?: string;\n}\n\nconst ImpactAnalysisForm = ({\n type,\n projectType,\n stages = [],\n initialValues,\n codeProject,\n disabled,\n submittable,\n cancellable,\n onSubmit,\n onCancel,\n submitting,\n submitKey,\n cancelKey,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const [NoEnvSelected, setNoEnvSelected] = useState(false);\n\n const [formValues, setFormValues] = useState(\n initialValues || {\n branch: '',\n commit: '',\n puppetEnterpriseServer: '',\n environment: '',\n nodes: 10,\n allStageEnvironments: projectType === 'CONTROL_REPO',\n stageEnvironments: {},\n stageEnvironmentsControlRepos: {},\n controlRepo: '',\n },\n );\n\n const vcsBranches = useListBranchesV1(\n {\n workspaceId,\n provider: codeProject.srcRepoProvider,\n name: codeProject.srcRepoDisplayName,\n organization: codeProject.srcRepoOwner,\n project: codeProject.srcRepoId,\n prefix: useDebounce(formValues.branch),\n },\n {\n enabled: type === 'manual',\n keepPreviousData: true,\n },\n );\n\n const vcsCommits = useListCommitsV1(\n {\n workspaceId,\n provider: codeProject.srcRepoProvider,\n name: codeProject.srcRepoDisplayName,\n organization: codeProject.srcRepoOwner,\n project: codeProject.srcRepoId,\n branch: formValues.branch,\n },\n {\n enabled: type === 'manual' && formValues.branch !== '',\n },\n );\n\n const peIntegrations = useListPeIntegrationsV2(\n {\n workspaceId,\n peIntegrationNamePrefix: useDebounce(formValues.puppetEnterpriseServer),\n },\n {\n enabled: type === 'manual',\n keepPreviousData: true,\n },\n );\n\n const peIntegrationMatch = peIntegrations.data?.peIntegrations?.find(\n (peIntegration) => peIntegration.name === formValues.puppetEnterpriseServer,\n );\n\n const environments = useListEnvironmentsV2(\n {\n peIntegrationId: peIntegrationMatch?.id ?? '',\n environmentPrefix: useDebounce(formValues.environment),\n },\n {\n enabled: type === 'manual' && !!peIntegrationMatch,\n keepPreviousData: true,\n },\n );\n\n const controlRepos = useListControlReposV1(\n {\n workspaceId,\n prefix: useDebounce(formValues.controlRepo ?? ''),\n },\n {\n enabled: projectType === 'MODULE',\n },\n );\n const controlRepoOptions = formatControlReposForSelect(controlRepos);\n\n const onChangeHandler = (\n nameChanged: keyof ImpactAnalysisFormProps,\n values: ImpactAnalysisFormProps,\n ) => {\n let newValuesCopy: ImpactAnalysisFormProps;\n\n if (NoEnvSelected) {\n setNoEnvSelected(false);\n }\n\n switch (nameChanged) {\n case 'branch':\n newValuesCopy = {\n ...values,\n commit: '',\n puppetEnterpriseServer: '',\n environment: '',\n };\n break;\n case 'commit':\n newValuesCopy = {\n ...values,\n puppetEnterpriseServer: '',\n environment: '',\n };\n break;\n case 'puppetEnterpriseServer':\n newValuesCopy = {\n ...values,\n environment: '',\n };\n break;\n default:\n newValuesCopy = values;\n break;\n }\n\n setFormValues(newValuesCopy);\n };\n\n const onSubmitHandler = (submitValues: ImpactAnalysisFormProps) => {\n const selectedEnvironments = Object.keys(\n formValues.stageEnvironments,\n ).filter((key) => formValues.stageEnvironments[key]);\n\n if (\n (type === 'stage' &&\n !formValues.allStageEnvironments &&\n selectedEnvironments.length === 0) ||\n (type === 'stage' && !checkDeploymentExists(stages))\n ) {\n setNoEnvSelected(true);\n return;\n }\n\n let submitPayload: ImpactAnalysis = {\n nodes: submitValues.nodes,\n };\n\n const puppetEnterpriseServer = peIntegrations.data?.peIntegrations?.find(\n (peIntegration) =>\n peIntegration.name === submitValues.puppetEnterpriseServer,\n );\n\n const environment = environments?.data?.environments?.find(\n (group) => group.name === submitValues.environment,\n );\n\n if (type === 'stage') {\n const stageEnvironments: ImpactAnalysis['stageEnvironments'] = [];\n const stageEnvironmentsControlRepos: ImpactAnalysis['stageEnvironmentsControlRepos'] =\n {};\n\n Object.entries(submitValues.stageEnvironments).forEach(\n ([environmentName, environmentEnabled]) => {\n if (environmentEnabled) {\n stageEnvironments.push(environmentName);\n\n const controlRepoName =\n submitValues.stageEnvironmentsControlRepos[environmentName];\n if (controlRepoName) {\n stageEnvironmentsControlRepos[environmentName] = controlRepoName;\n }\n }\n },\n );\n\n submitPayload = {\n ...submitPayload,\n allStageEnvironments: submitValues.allStageEnvironments,\n stageEnvironments,\n };\n\n if (projectType === 'MODULE') {\n submitPayload = {\n ...submitPayload,\n stageEnvironmentsControlRepos,\n controlRepo: submitValues.controlRepo,\n };\n }\n\n onSubmit(submitPayload);\n } else {\n submitPayload = {\n ...submitPayload,\n branch: submitValues.branch,\n commit: submitValues.commit,\n puppetEnterpriseServer,\n environment,\n };\n\n if (projectType === 'MODULE') {\n submitPayload = {\n ...submitPayload,\n controlRepo: submitValues.controlRepo,\n };\n }\n\n onSubmit(submitPayload);\n }\n };\n\n const getEnvironmentFields = () => {\n if (stages.length === 0) {\n return null;\n }\n\n return stages\n .flatMap((value) => value.destinations)\n .filter((destination) => !!destination.deploymentTemplate)\n .map((destination) => (\n
    \n \n
    \n \n \n {{\n policy:\n destination.deploymentTemplate?.deploymentPolicy\n ?.displayName,\n }}\n \n \n \n \n {{\n instance:\n destination.deploymentTemplate\n ?.puppetEnterpriseCredentialsId?.name,\n }}\n \n \n
    \n
    \n \n \n {{\n environment:\n destination.deploymentTemplate?.deploymentTarget\n ?.nodeGroupName,\n }}\n \n \n \n \n {{\n stageNum: destination.stageNum,\n }}\n \n \n
    \n
    \n }\n value={\n destination.deploymentTemplate?.deploymentTarget?.nodeGroupName\n }\n />\n {projectType === 'MODULE' && (\n \n \n
    \n )}\n \n ));\n };\n\n const branchMatch = vcsBranches?.data?.vcsBranches?.some(\n (branch) => branch.name === formValues.branch,\n );\n\n const commitMatch = vcsCommits?.data?.vcsCommits?.some(\n (commit) => commit.sha === formValues.commit,\n );\n\n const environmentMatch = environments.data?.environments?.find(\n (environment) => environment.name === formValues.environment,\n );\n\n return (\n <>\n \n {type === 'manual' &&\n getBranchField({\n query: vcsBranches,\n fieldValue: formValues.branch,\n t,\n })}\n {type === 'manual' &&\n branchMatch &&\n getCommitField({\n query: vcsCommits,\n fieldValue: formValues.commit,\n branch: formValues.branch,\n codeProject,\n t,\n })}\n {type === 'manual' &&\n commitMatch &&\n getPuppetEnterpriseServerField({\n query: peIntegrations,\n fieldValue: formValues.puppetEnterpriseServer,\n t,\n })}\n {type === 'manual' &&\n peIntegrationMatch &&\n getEnvironmentField({\n query: environments,\n fieldValue: formValues.environment,\n codeProject,\n t,\n })}\n {type === 'stage' && (\n
    \n \n {t('viewPipeline.form.impactAnalysis.stage.whatIsIA.heading')}\n \n \n {t('viewPipeline.form.impactAnalysis.stage.whatIsIA.description')}\n \n
    \n )}\n {(type === 'stage' || formValues.environment !== '') && (\n \n \n \n \n \n )}\n {type === 'manual' &&\n projectType === 'MODULE' &&\n environmentMatch &&\n getControlRepoField({\n query: controlRepos,\n fieldValue: formValues.controlRepo ?? '',\n t,\n })}\n {type === 'stage' && (\n <>\n \n {t(\n 'viewPipeline.form.impactAnalysis.field.stageEnvironment.label',\n )}\n \n {projectType === 'CONTROL_REPO' && (\n \n )}\n \n )}\n {type === 'stage' &&\n !formValues.allStageEnvironments &&\n getEnvironmentFields()}\n \n \n \n \n \n \n );\n};\n\nexport default ImpactAnalysisForm;\n\nImpactAnalysisForm.defaultProps = defaultProps;\n","import React from 'react';\nimport { Button, Modal, Text } from '@puppet/react-components';\nimport {\n CodeProjectDetailsV1,\n TriggerImpactAnalysisRequestV1,\n} from '@utils/api/cd4pe';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useTranslation } from 'react-i18next';\nimport Cd4peError from '@components/Cd4peError';\nimport { useTriggerImpactAnalysisV1 } from '@services/cd4pe/impactAnalysis';\nimport {\n PEImpactAnalysisEnvironmentV1,\n ProjectTypeV1,\n} from '@puppet/cd4pe-client-ts';\nimport { LINKS } from 'src/routes';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport ImpactAnalysisForm, {\n ImpactAnalysis,\n} from '../ImpactAnalysisForm/ImpactAnalysisForm';\n\ninterface Props {\n codeProject: CodeProjectDetailsV1;\n projectType: ProjectTypeV1;\n onClose: () => void;\n}\n\nconst ImpactAnalysisDialog = ({ codeProject, projectType, onClose }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const workspaceName = useWorkspaceName();\n const appDispatch = useAppDispatch();\n\n const triggerImpactAnalysis = useTriggerImpactAnalysisV1();\n\n const buildImpactAnalysisRequest = (\n impactAnalysis: ImpactAnalysis,\n ): TriggerImpactAnalysisRequestV1 => {\n const peCredentialsId = {\n name: impactAnalysis.puppetEnterpriseServer?.name ?? '',\n domain: workspaceId,\n };\n\n const environment: PEImpactAnalysisEnvironmentV1 = {\n nodeGroupId: impactAnalysis.environment?.id,\n peCredentialsId,\n };\n\n if (projectType === 'MODULE') {\n environment.moduleImpactAnalysisControlRepoId = {\n name: impactAnalysis.controlRepo ?? '',\n domain: workspaceId,\n };\n }\n\n const settings = {\n environments: [environment],\n sourceBranch: impactAnalysis.branch,\n sourceSha: impactAnalysis.commit,\n analyzeAllDeployments: false,\n compileBatchSize: 10,\n [projectType === 'CONTROL_REPO' ? 'controlRepoId' : 'moduleId']: {\n name: codeProject.name,\n domain: workspaceId,\n },\n };\n\n return {\n workspaceId,\n projectName: codeProject.name,\n projectType,\n settings,\n };\n };\n\n const onImpactAnalysis = (impactAnalysis: ImpactAnalysis) => {\n if (!triggerImpactAnalysis.isSuccess) {\n triggerImpactAnalysis.mutate(\n {\n requestBody: buildImpactAnalysisRequest(impactAnalysis),\n },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t(\n 'viewPipeline.dialog.manualImpactAnalysis.alert.success',\n ),\n }),\n );\n },\n },\n );\n } else {\n window.location.href = LINKS.cd4pe.viewImpactAnalysis({\n path: {\n workspace: workspaceName,\n id: triggerImpactAnalysis.data?.id!,\n },\n });\n }\n };\n\n return (\n onClose()}>\n \n {t('viewPipeline.dialog.manualImpactAnalysis.title')}\n \n onClose()}\n disabled={triggerImpactAnalysis.isSuccess}\n submittable={!triggerImpactAnalysis.isSuccess}\n cancellable={!triggerImpactAnalysis.isSuccess}\n submitting={triggerImpactAnalysis.isLoading}\n submitKey={t('viewPipeline.dialog.manualImpactAnalysis.analyse')}\n cancelKey={t('viewPipeline.dialog.manualImpactAnalysis.cancel')}\n />\n {triggerImpactAnalysis.isSuccess && (\n \n \n {t('viewPipeline.form.impactAnalysis.inProgress')}\n \n \n \n \n )}\n \n \n );\n};\n\nexport default ImpactAnalysisDialog;\n","import { useQuery, useMutation } from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n handleQueryRequest,\n QueryHook,\n MutationHook,\n} from '@utils/api/cd4pe';\nimport { ImpactAnalysisV1Service } from '@puppet/cd4pe-client-ts';\nimport queryClient from '@services/queryClient';\nimport { LIST_TRIGGER_EVENTS_QUERY_TAG } from './events';\n\nexport const GET_IMPACT_ANALYSIS_CSV_TAG = 'getImpactAnalysisCsv';\nexport const TRIGGER_IMPACT_ANALYSIS_QUERY_TAG = 'triggerImpactAnalysis';\n\n/**\n * useGetImpactAnalysisCsvV1\n */\n\ntype UseGetImpactAnalysisCsvV1 = QueryHook<\n typeof ImpactAnalysisV1Service,\n 'getImpactAnalysisCsvV1',\n Cd4peApiError\n>;\n\nexport const useGetImpactAnalysisCsvV1: UseGetImpactAnalysisCsvV1 = (\n payload,\n options,\n) =>\n useQuery(\n [GET_IMPACT_ANALYSIS_CSV_TAG, payload.workspaceId],\n () => {\n return handleQueryRequest(\n ImpactAnalysisV1Service.getImpactAnalysisCsvV1(payload),\n );\n },\n options,\n );\n\n/**\n * useTriggerImpactAnalysisV1\n */\ntype UseTriggerImpactAnalysisV1 = MutationHook<\n typeof ImpactAnalysisV1Service,\n 'triggerImpactAnalysisV1',\n Cd4peApiError\n>;\n\nexport type UseTriggerImpactAnalysisV1Result =\n ReturnType;\n\nexport const useTriggerImpactAnalysisV1: UseTriggerImpactAnalysisV1 = () => {\n return useMutation(\n (payload) =>\n handleQueryRequest(\n ImpactAnalysisV1Service.triggerImpactAnalysisV1(payload),\n ),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n LIST_TRIGGER_EVENTS_QUERY_TAG,\n payload.requestBody.workspaceId,\n ]);\n },\n },\n );\n};\n","import EventDetails from './EventDetails';\n\nexport default EventDetails;\n","import React from 'react';\nimport { useTranslation, Trans } from 'react-i18next';\nimport { Link as PdsLink, Text, Icon, Heading } from '@puppet/react-components';\nimport { CodeProjectDetailsV1, TriggerEventV1 } from '@puppet/cd4pe-client-ts';\nimport useVcsLinks from '@hooks/useVcsLinks';\nimport getIconType from '@utils/vcs/iconHelper';\nimport { PIPELINE_BRANCH_OPTIONS } from '../../../../utils';\n\ninterface Props {\n codeProject: CodeProjectDetailsV1;\n event: TriggerEventV1;\n}\n\nconst EventDetails = ({ codeProject, event }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const { getBranchLink, getCommitLink } = useVcsLinks();\n\n const branchLink = getBranchLink(\n codeProject.srcRepoProvider,\n codeProject.srcRepoOwner,\n codeProject.srcRepoDisplayName,\n codeProject.srcRepoId,\n event.branch ?? '',\n );\n\n const commitLink = getCommitLink(\n codeProject.srcRepoProvider,\n codeProject.srcRepoOwner,\n codeProject.srcRepoDisplayName,\n codeProject.srcRepoId,\n event.commitId ?? '',\n );\n\n return (\n
    \n {event.description}\n \n \n \n {{ branch: event.branch }}\n \n {event.commitId ? (\n \n {{\n commitId: event.commitId,\n }}\n \n ) : (\n
    \n {{\n commitId: t('viewPipeline.events.table.row.details.noCommitId'),\n }}\n
    \n )}\n \n
    \n \n \n \n {{ initiator: event.initiator }}\n \n \n
    \n {event.pipelineName === PIPELINE_BRANCH_OPTIONS.MANUAL_ACTION ? (\n \n {t('viewPipeline.events.table.row.details.manualAction')}\n \n ) : (\n \n \n \n \n {{\n pipelineName: event.pipelineName,\n }}\n \n \n
    \n )}\n \n );\n};\n\nexport default EventDetails;\n","import React, { ReactNode } from 'react';\nimport { useTranslation, Trans } from 'react-i18next';\nimport { NavLink } from 'react-router-dom';\nimport classnames from 'classnames';\nimport format from 'date-fns/format';\nimport { TaskStateV1 } from '@puppet/cd4pe-client-ts';\nimport { Link, Text, Icon } from '@puppet/react-components';\nimport ConditionalRender from '@components/ConditionalRender';\nimport { EventStatus, returnStatusColor } from '../../../../utils';\n\ninterface Props {\n id?: number;\n name?: string;\n startTime?: number;\n icon?: string;\n status?: EventStatus | TaskStateV1;\n statusTranslationKey?: string;\n environment?: string;\n environmentsAnalyzed?: string | number;\n peInstance?: string;\n policy?: string;\n eventLink?: string;\n webhookType?: string;\n actionButton?: ReactNode;\n href?: boolean;\n}\n\nconst Event = ({\n id,\n name = '',\n startTime = 0,\n icon = 'clipboard',\n status,\n statusTranslationKey = '',\n environment = '',\n peInstance = '',\n policy = '',\n environmentsAnalyzed = '',\n webhookType = '',\n eventLink,\n actionButton,\n href = false,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const statusColor = returnStatusColor(status);\n const linkProps = href\n ? { as: 'a', href: eventLink }\n : { as: NavLink, to: eventLink };\n\n return (\n
    \n
    \n \n \n \n \n
    \n \n
    \n
    \n
    \n \n \n {t(statusTranslationKey, {\n status: t(\n `viewPipeline.events.status.${status?.toLowerCase()}`,\n ),\n })}\n \n \n \n \n \n {{\n id,\n }}\n \n \n \n \n {name}\n \n \n
    \n \n \n \n {{\n environment,\n }}\n \n \n
    \n
    \n \n
    \n \n \n \n {{\n environmentsAnalyzed,\n }}\n \n \n
    \n
    \n \n
    \n \n \n \n {{\n peInstance,\n }}\n \n \n
    \n
    \n \n
    \n \n \n \n {{\n policy,\n }}\n \n \n
    \n
    \n \n {webhookType}\n \n \n
    \n \n \n \n {{\n date: format(new Date(startTime), 'PPPp'),\n }}\n \n \n
    \n
    \n
    \n \n
    {actionButton}
    \n
    \n
    \n
    \n );\n};\n\nexport default Event;\n","import Event from './Event';\n\nexport default Event;\n","import StageBadge from './StageBadge';\n\nexport default StageBadge;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Badge } from '@puppet/react-components';\nimport { AppEventV1 } from '@puppet/cd4pe-client-ts';\nimport {\n getFirstActiveEventStatus,\n buildStatusMap,\n isAllCancelled,\n isAllSucceeded,\n isAllTerminal,\n isAnyDeclined,\n isAnyFailed,\n} from '../../../../utils';\n\ninterface Props {\n events: AppEventV1[];\n}\n\nconst StageBadge = ({ events }: Props) => {\n const { t } = useTranslation('codeDelivery');\n let finalStatus;\n let badgeType = 'warning';\n const statusMap = buildStatusMap(events);\n\n if (isAllTerminal(statusMap)) {\n if (isAllCancelled(statusMap)) {\n finalStatus = t('viewPipeline.events.status.canceled');\n badgeType = 'neutral';\n } else if (isAnyDeclined(statusMap)) {\n finalStatus = t('viewPipeline.events.status.declined');\n badgeType = 'danger';\n } else if (isAnyFailed(statusMap)) {\n finalStatus = t('viewPipeline.events.status.failed');\n badgeType = 'danger';\n } else if (isAllSucceeded(statusMap)) {\n finalStatus = t('viewPipeline.events.status.success');\n badgeType = 'success';\n }\n } else {\n const firstActiveStatus = getFirstActiveEventStatus(events);\n if (!firstActiveStatus) {\n return null;\n }\n\n if (firstActiveStatus === 'QUEUED') {\n badgeType = 'info';\n }\n finalStatus = t(\n `viewPipeline.events.status.${firstActiveStatus.toLowerCase()}`,\n );\n }\n\n if (!finalStatus) {\n return null;\n }\n\n return (\n \n {finalStatus}\n \n );\n};\n\nexport default StageBadge;\n","import RerunJobModal from './RerunJobModal';\n\nexport default RerunJobModal;\n","import React, { useState } from 'react';\nimport {\n Text,\n Modal,\n Button,\n Alert,\n Link as PdsLink,\n} from '@puppet/react-components';\nimport { VmJobInstanceEventV1 } from '@puppet/cd4pe-client-ts';\nimport { useRerunJobInstanceV1 } from '@services/cd4pe/jobs';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport useVcsLinks from '@hooks/useVcsLinks';\nimport { useTranslation, Trans } from 'react-i18next';\nimport { LINKS } from 'src/routes';\nimport Cd4peError from '@components/Cd4peError';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\n\ninterface Props {\n isOpen: boolean;\n onClose: () => void;\n stageEvent: VmJobInstanceEventV1;\n}\n\nconst RerunJobModal = ({ isOpen, onClose, stageEvent }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const rerunJobInstance = useRerunJobInstanceV1();\n const { getCommitLink, getBranchLink } = useVcsLinks();\n const [successfulRerun, setSuccessfulRerun] = useState(false);\n const workspace = useWorkspaceName();\n\n return (\n onClose()}\n className=\"job-rerun-modal\"\n >\n \n {t('viewPipeline.events.rerun.job.modal.title')}\n \n \n {stageEvent?.jobName}\n ,\n \n {stageEvent?.branch}\n ,\n \n {stageEvent?.commitId}\n ,\n ]}\n values={{\n name: stageEvent?.jobName,\n branch: stageEvent?.branch,\n commit: stageEvent?.commitId,\n }}\n />\n {successfulRerun && (\n \n {t('viewPipeline.events.rerun.job.modal.alerts.success')}\n \n )}\n\n \n \n {successfulRerun ? (\n \n {t('viewPipeline.events.go.to.job.button')}\n \n ) : (\n {\n rerunJobInstance.mutate(\n {\n workspaceId,\n instanceId: stageEvent.vmJobInstanceId!,\n },\n {\n onSuccess: () => {\n setSuccessfulRerun(!successfulRerun);\n },\n },\n );\n }}\n loading={rerunJobInstance.isLoading}\n >\n {t('viewPipeline.events.rerun.job.button')}\n \n )}\n \n \n \n );\n};\n\nexport default RerunJobModal;\n","import StageEvent from './StageEvent';\n\nexport default StageEvent;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classnames from 'classnames';\nimport { Button, Text } from '@puppet/react-components';\nimport {\n AppEventV1,\n DeploymentAppEventV1,\n PEImpactAnalysisEventV1,\n VmJobInstanceEventV1,\n} from '@puppet/cd4pe-client-ts';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport ConditionalRender from '@components/ConditionalRender';\nimport { LINKS } from 'src/routes';\nimport {\n EVENT_TYPE_DEPLOYMENT,\n EVENT_TYPE_IMPACT_ANALYSIS,\n EVENT_TYPE_JOB,\n EventStatus,\n getEventStatus,\n} from '../../../../utils';\nimport Event from '../Event/Event';\nimport StageBadge from '../StageBadge';\nimport RerunJobModal from '../RerunJobModal';\n\ninterface Props {\n name: string;\n events: AppEventV1[];\n}\n\nconst StageEvent = ({ name, events }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const [isOpen, setIsOpen] = useState(true);\n const [rerunModalData, setRerunModalData] = useState<\n VmJobInstanceEventV1 | undefined\n >(undefined);\n\n const onCloseRerunModal = () => {\n setRerunModalData(undefined);\n };\n\n return (\n
    \n
    \n
    \n {name}\n \n
    \n
    \n {\n setIsOpen(!isOpen);\n }}\n />\n
    \n
    \n \n {events.map(\n (\n stageEvent:\n | VmJobInstanceEventV1\n | DeploymentAppEventV1\n | PEImpactAnalysisEventV1,\n ) => {\n if (stageEvent.eventType === EVENT_TYPE_JOB) {\n const vmJobInstanceEvent = stageEvent as VmJobInstanceEventV1;\n const status = getEventStatus(vmJobInstanceEvent);\n\n const onClickActionButton = () => {\n setRerunModalData(vmJobInstanceEvent);\n };\n\n return (\n \n {t('viewPipeline.events.table.row.details.job.rerun')}\n \n }\n />\n );\n }\n\n if (stageEvent.eventType === EVENT_TYPE_DEPLOYMENT) {\n const deployEvent = stageEvent as DeploymentAppEventV1;\n return (\n \n );\n }\n\n if (stageEvent.eventType === EVENT_TYPE_IMPACT_ANALYSIS) {\n const impactAnalysisEvent = stageEvent as PEImpactAnalysisEventV1;\n const environmentsString = Array.isArray(\n impactAnalysisEvent.environments,\n )\n ? impactAnalysisEvent.environments.length\n : t(\n 'viewPipeline.events.table.row.details.environmentsAnalyzed.all',\n );\n\n return (\n \n );\n }\n\n // TODO Validate legacy event types below\n\n // if (stageEvent.eventType === LEGACY_EVENT_TYPE_ROLLING_DEPLOYMENT) {\n // const deployEvent = stageEvent as AppDeployEventV1;\n // return (\n // \n // );\n // }\n\n // if (stageEvent.eventType === LEGACY_EVENT_TYPE_MODULE_DEPLOYMENT) {\n // const deployEvent = stageEvent as DeploymentAppEventV1;\n // return (\n // \n // );\n // }\n\n return null;\n },\n )}\n \n {rerunModalData && (\n \n )}\n
    \n );\n};\n\nexport default StageEvent;\n","import PipelineEvent from './PipelineEvent';\n\nexport default PipelineEvent;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Badge, Button, Text } from '@puppet/react-components';\nimport { AppEventV1, TriggerEventV1 } from '@puppet/cd4pe-client-ts';\nimport ConditionalRender from '@components/ConditionalRender';\nimport {\n consolidateStatusMap,\n buildStatusMap,\n isAllTerminal,\n statusBadgeType,\n EventStatus,\n} from '../../../../utils';\nimport Event from '../Event';\nimport StageEvent from '../StageEvent';\n\ninterface Props {\n event: TriggerEventV1;\n onClickWebhookEvent: (event: TriggerEventV1) => void;\n}\n\nconst PipelineEvent = ({ event, onClickWebhookEvent }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const [isOpen, setIsOpen] = useState(false);\n const statusMap = buildStatusMap(\n Object.values(event.eventsByStage ?? []).flat(),\n );\n const pipelineStatusMap = consolidateStatusMap(statusMap);\n let runningStatus = t('viewPipeline.events.table.row.details.status.pending');\n\n if (isAllTerminal(pipelineStatusMap)) {\n runningStatus = t('viewPipeline.events.table.row.details.status.complete');\n }\n\n const stateBadges = Object.entries(pipelineStatusMap)\n .map(([key, value]) => {\n if (!value) return null;\n return (\n
    \n \n {`${value} ${t(`viewPipeline.events.status.${key.toLowerCase()}`)}`}\n \n
    \n );\n })\n .filter(Boolean);\n\n const isWebhookPushRequest =\n !event?.webhookEvent?.pullRequestId &&\n !event?.webhookEvent?.pullRequestNumber;\n\n return (\n <>\n
    \n
    \n {runningStatus.toUpperCase()}\n {stateBadges}\n
    \n setIsOpen(!isOpen)}\n data-testid={`pipeline-event-toggle-${event.id}`}\n />\n
    \n \n {[\n ...Object.values(event.eventsByStage ?? []).map(\n (stageEvents: AppEventV1[], index: number) => {\n const stageNumber = index + 1;\n const name =\n event.stageNames?.[stageNumber] ??\n t('viewPipeline.events.table.row.details.defaultStageName', {\n stageNumber,\n })!;\n return ;\n },\n ),\n \n onClickWebhookEvent(event)}\n >\n {t(\n 'viewPipeline.events.table.row.details.webhook.viewWebhook',\n )}\n \n }\n />\n ,\n ]}\n \n \n );\n};\n\nexport default PipelineEvent;\n","import React from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport {\n Modal,\n Code,\n Heading,\n Text,\n Tabs,\n Button,\n Loading,\n} from '@puppet/react-components';\nimport classnames from 'classnames';\nimport {\n useGetWebhookEventV1,\n useRedeliverWebhookDataV1,\n} from '@services/cd4pe/webhooks';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport Cd4peError from '@components/Cd4peError';\nimport ConditionalRender from '@components/ConditionalRender';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport { ProjectTypeV1, TriggerEventV1 } from '@puppet/cd4pe-client-ts';\n\ninterface Props {\n event: TriggerEventV1;\n projectName: string;\n projectType: ProjectTypeV1;\n onClose: () => void;\n}\n\nconst getReponseCodeClass = (httpCode: number) => ({\n 'webhook-dialog__response-code--success': httpCode >= 200 && httpCode < 300,\n 'webhook-dialog__response-code--error': httpCode >= 400 && httpCode < 600,\n});\n\nconst WebhookDialog = ({ event, projectName, projectType, onClose }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const appDispatch = useAppDispatch();\n\n const [redeliverWebookConfirm, setRedeliverWebhookConfirm] =\n React.useState(false);\n\n const webhookEvent = useGetWebhookEventV1({\n workspaceId,\n webhookEventId: event.webhookEvent?.webhookEventId ?? '',\n projectName,\n projectType,\n appEventId: event.webhookEvent?.eventId,\n });\n\n const redeliverWebhook = useRedeliverWebhookDataV1();\n\n const onRedeliverWebhook = () => {\n redeliverWebhook.mutate(\n {\n workspaceId,\n requestBody: {\n webhookEventId: event.webhookEvent?.webhookEventId ?? '',\n projectName,\n },\n },\n {\n onSuccess: () => {\n onClose();\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t(\n 'viewPipeline.dialog.webhook.alerts.redeliver.success',\n ),\n }),\n );\n },\n },\n );\n };\n\n const onCancelRedeliverWebhook = () => {\n setRedeliverWebhookConfirm(false);\n redeliverWebhook.reset();\n };\n\n return (\n \n
    \n {t('viewPipeline.dialog.webhook.title')}\n \n ,\n ]}\n />\n \n
    \n \n \n \n \n \n \n \n
    \n \n {t('viewPipeline.dialog.webhook.requestHeaders')}\n \n \n {JSON.stringify(webhookEvent?.data?.requestHeaders, null, 2)}\n \n \n {t('viewPipeline.dialog.webhook.requestBody')}\n \n {webhookEvent?.data?.requestBody && (\n \n {JSON.stringify(\n JSON.parse(webhookEvent?.data?.requestBody),\n null,\n 2,\n )}\n \n )}\n
    \n
    \n \n
    \n \n {t('viewPipeline.dialog.webhook.responseBody')}\n \n {webhookEvent?.data?.responseBody && (\n \n {JSON.stringify(\n JSON.parse(webhookEvent?.data?.responseBody),\n null,\n 2,\n )}\n \n )}\n
    \n
    \n
    \n
    \n {!webhookEvent?.isLoading && !webhookEvent.isError && (\n \n \n \n \n \n
    \n \n {t('viewPipeline.dialog.webhook.redeliver.warning')}\n \n \n {t('viewPipeline.dialog.webhook.redeliver.warning.trigger')}\n \n
    \n \n {t('viewPipeline.dialog.webhook.buttons.redeliver.confirm')}\n \n \n \n
    \n
    \n )}\n
    \n );\n};\n\nexport default WebhookDialog;\n","import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport {\n QueryHook,\n handleQueryRequest,\n Cd4peApiError,\n WebhooksV1Service,\n MutationHook,\n} from '@utils/api/cd4pe';\nimport { LIST_TRIGGER_EVENTS_QUERY_TAG } from './events';\n\nconst WEBHOOK_EVENT_QUERY_TAG = 'webhookEvent';\n\n/**\n * useGetWebhookEventV1\n */\n\ntype UseGetWebhookEventV1 = QueryHook<\n typeof WebhooksV1Service,\n 'getWebhookEventV1',\n Cd4peApiError\n>;\n\nexport type UseGetWebhookEventV1Result = ReturnType;\n\nexport const useGetWebhookEventV1: UseGetWebhookEventV1 = (payload) =>\n useQuery(\n [\n WEBHOOK_EVENT_QUERY_TAG,\n payload.workspaceId,\n payload.projectName,\n payload.webhookEventId,\n payload.projectType,\n ],\n async () =>\n handleQueryRequest(WebhooksV1Service.getWebhookEventV1(payload)),\n );\n\n/**\n * useRedeliverWebhookDataV1\n */\n\ntype UseRedeliverWebhookDataV1 = MutationHook<\n typeof WebhooksV1Service,\n 'redeliverWebhookData',\n Cd4peApiError\n>;\n\nexport type UseRedeliverWebhookDataV1Result =\n ReturnType;\n\nexport const useRedeliverWebhookDataV1: UseRedeliverWebhookDataV1 = () => {\n const queryClient = useQueryClient();\n return useMutation(\n (payload) =>\n handleQueryRequest(WebhooksV1Service.redeliverWebhookData(payload)),\n {\n onSuccess: () => {\n queryClient.invalidateQueries([LIST_TRIGGER_EVENTS_QUERY_TAG]);\n },\n },\n );\n};\n","import WebhookDialog from './WebhookDialog';\n\nexport default WebhookDialog;\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport {\n Button,\n ButtonSelect,\n Heading,\n Input,\n Text,\n} from '@puppet/react-components';\nimport {\n CodeProjectDetailsV1,\n ProjectTypeV1,\n TriggerEventV1,\n} from '@puppet/cd4pe-client-ts';\nimport Table, { DataItem } from '@components/Table';\nimport Cd4peError from '@components/Cd4peError';\nimport CursorPagination from '@codeDelivery/components/CursorPagination';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport {\n LIST_TRIGGER_EVENTS_QUERY_TAG,\n useListTriggerEventsV1,\n} from '@services/cd4pe/events';\nimport { useQueryClient } from '@tanstack/react-query';\nimport {\n PIPELINE_BRANCH_OPTIONS,\n PIPELINES_REFETCH_INTERVAL,\n} from '../../utils';\nimport EventDetails from './components/EventDetails';\nimport PipelineEvent from './components/PipelineEvent';\nimport WebhookDialog from '../WebhookDialog';\n\ntype RowData = DataItem & TriggerEventV1;\n\ninterface Props {\n name: string;\n codeProject: CodeProjectDetailsV1;\n projectType: ProjectTypeV1;\n}\n\nconst EventsTable = ({ name, codeProject, projectType }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const domain = useWorkspaceDomain();\n const [searchParams, setSearchParams] = useSearchParams();\n const pipelineId =\n searchParams.get('pipelineId') ?? PIPELINE_BRANCH_OPTIONS.ALL_FILTER;\n const eventId = searchParams.get('eventId');\n const [currentPage, setCurrentPage] = useState(0);\n const [webhookEvent, setWebhookEvent] = useState(null);\n const [hasNewEvents, setHasNewEvents] = useState(false);\n const listTriggerEvents = useListTriggerEventsV1({\n workspaceId: domain,\n [projectType === 'CONTROL_REPO' ? 'controlRepoName' : 'moduleName']: name,\n pipelineId:\n pipelineId !== PIPELINE_BRANCH_OPTIONS.ALL_FILTER\n ? pipelineId\n : undefined,\n eventId: Number(eventId) || undefined,\n });\n\n const options = [\n {\n value: PIPELINE_BRANCH_OPTIONS.ALL_FILTER,\n label: t('viewPipeline.events.filter.all'),\n },\n ...(codeProject?.pipelines?.map((pipeline) => ({\n value: pipeline.pipelineId,\n label: pipeline.name,\n })) ?? []),\n {\n value: PIPELINE_BRANCH_OPTIONS.MANUAL_ACTION,\n label: 'Manual action',\n },\n ];\n\n const queryClient = useQueryClient();\n const queryKey = useMemo(\n () => [LIST_TRIGGER_EVENTS_QUERY_TAG, domain, name, pipelineId, eventId],\n [domain, name, pipelineId, eventId],\n );\n\n useEffect(() => {\n const intervalId = setInterval(() => {\n const lastEventId =\n listTriggerEvents.data?.pages[0].triggerEvents?.[0]?.id;\n\n listTriggerEvents\n .refetch({\n refetchPage: (_, index) => index === 0,\n })\n .then(({ data }) => {\n const newLastEventId = data?.pages[0].triggerEvents?.[0]?.id;\n if (newLastEventId !== lastEventId) {\n setHasNewEvents(true);\n }\n });\n }, PIPELINES_REFETCH_INTERVAL);\n\n return () => {\n clearInterval(intervalId);\n };\n }, [currentPage, listTriggerEvents, queryClient, queryKey]);\n\n const handleNewEvents = () => {\n listTriggerEvents.refetch().then(() => {\n setHasNewEvents(false);\n setCurrentPage(0);\n });\n };\n\n return (\n <>\n \n
    \n {t('viewPipeline.events.table.header')}\n {\n setCurrentPage(0);\n setSearchParams({\n pipelineId: pipeline,\n eventId:\n pipelineId === PIPELINE_BRANCH_OPTIONS.ALL_FILTER\n ? ''\n : eventId ?? '',\n });\n }}\n />\n {pipelineId !== PIPELINE_BRANCH_OPTIONS.ALL_FILTER && (\n <>\n {t('viewPipeline.events.table.eventId')}\n {\n setCurrentPage(0);\n setSearchParams({\n pipelineId: pipelineId || '',\n eventId: value || '',\n });\n }}\n min=\"0\"\n />\n \n )}\n {hasNewEvents && currentPage !== 0 && (\n \n {t('viewPipeline.events.table.newEvent')}\n \n )}\n
    \n (\n # {row.rowData.id}\n ),\n },\n {\n label: t('viewPipeline.events.table.column.name'),\n dataKey: 'name',\n className: 'event-name-column',\n cellRenderer: (row: { rowData: RowData }) => (\n \n ),\n },\n {\n label: t('viewPipeline.events.table.column.status'),\n dataKey: 'status',\n cellRenderer: (row: { rowData: RowData }) => (\n setWebhookEvent(event)}\n />\n ),\n },\n ]}\n emptyStateHeader={\n listTriggerEvents.isLoading\n ? ''\n : t('viewPipeline.events.table.emptyState.header')\n }\n emptyStateMessage=\"\"\n />\n {\n if (newPage < 0) {\n setCurrentPage(0);\n return;\n }\n\n if (newPage >= (listTriggerEvents?.data?.pages?.length ?? 0)) {\n if (\n !listTriggerEvents.isFetchingNextPage &&\n listTriggerEvents.hasNextPage\n ) {\n listTriggerEvents.fetchNextPage();\n }\n setCurrentPage(listTriggerEvents?.data?.pages?.length ?? 0);\n return;\n }\n\n setCurrentPage(newPage);\n }}\n hasNextPage={\n listTriggerEvents.hasNextPage ||\n !!listTriggerEvents?.data?.pages?.[currentPage + 1]\n }\n hasPreviousPage={currentPage > 0}\n />\n {webhookEvent !== null && (\n setWebhookEvent(null)}\n />\n )}\n \n );\n};\n\nexport default EventsTable;\n","import EventsTable from './EventsTable';\n\nexport default EventsTable;\n","export const PARAMETER_TYPES = {\n STRING: 'String',\n INTEGER: 'Integer',\n FLOAT: 'Float',\n NUMERIC: 'Numeric',\n BOOLEAN: 'Boolean',\n ARRAY: 'Array',\n HASH: 'Hash',\n REGEXP: 'Regexp',\n TIMESPAN: 'Timespan',\n TIMESTAMP: 'Timestamp',\n UNDEF: 'Undef',\n DEFAULT: 'Default',\n};\n\nexport const OPTIONAL_PARAMETER_TYPES = {\n STRING: `Optional[${PARAMETER_TYPES.STRING}]`,\n INTEGER: `Optional[${PARAMETER_TYPES.INTEGER}]`,\n FLOAT: `Optional[${PARAMETER_TYPES.FLOAT}]`,\n NUMERIC: `Optional[${PARAMETER_TYPES.NUMERIC}]`,\n BOOLEAN: `Optional[${PARAMETER_TYPES.BOOLEAN}]`,\n ARRAY: `Optional[${PARAMETER_TYPES.ARRAY}]`,\n HASH: `Optional[${PARAMETER_TYPES.HASH}]`,\n REGEXP: `Optional[${PARAMETER_TYPES.REGEXP}]`,\n TIMESPAN: `Optional[${PARAMETER_TYPES.TIMESPAN}]`,\n TIMESTAMP: `Optional[${PARAMETER_TYPES.TIMESTAMP}]`,\n UNDEF: `Optional[${PARAMETER_TYPES.UNDEF}]`,\n DEFAULT: `Optional[${PARAMETER_TYPES.DEFAULT}]`,\n};\n\nexport const DEPLOYMENT_POLICY_TYPES = {\n FEATURE_BRANCH_POLICY: 'cd4pe_deployments::feature_branch',\n EVENTUAL_CONSISTENCY_POLICY: 'cd4pe_deployments::eventual_consistency',\n DIRECT_DEPLOYMENT_POLICY: 'cd4pe_deployments::direct',\n TEMPORARY_BRANCH_POLICY: 'cd4pe_deployments::rolling',\n};\n","/* eslint-disable jsx-a11y/label-has-associated-control */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useState } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport {\n Alert,\n Form,\n Icon,\n Link as PdsLink,\n Text,\n RadioButton,\n} from '@puppet/react-components';\nimport Cd4peError from '@components/Cd4peError';\nimport { useListBranchesV1, useListCommitsV1 } from '@services/cd4pe/vcs';\nimport {\n useListEnvironmentPrefixesV2,\n useListEnvironmentsV2,\n useListPeIntegrationsV2,\n} from '@services/cd4pe/peIntegrations';\nimport {\n useGetDeploymentPoliciesV1,\n UseGetDeploymentPoliciesV1Payload,\n} from '@services/cd4pe/deployments';\nimport {\n DeploymentPolicyV1,\n PEIntegrationEnvironmentV2,\n PEIntegrationV2,\n} from '@utils/api/cd4pe';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { CodeProjectDetailsV1, ProjectTypeV1 } from '@puppet/cd4pe-client-ts';\nimport useListControlReposV1 from '@services/cd4pe/controlRepos';\nimport useDebounce from '@hooks/useDebounce';\nimport {\n DEPLOYMENT_POLICY_TYPES,\n OPTIONAL_PARAMETER_TYPES,\n PARAMETER_TYPES,\n} from './utils';\nimport {\n getBranchField,\n getCommitField,\n getPuppetEnterpriseServerField,\n getEnvironmentField,\n getControlRepoField,\n getDeploymentPolicyField,\n} from '../../formHelpers';\n\nconst defaultProps = {\n submittable: true,\n cancellable: true,\n};\n\ninterface Props {\n type: 'manual' | 'stage' | 'edit';\n initialBranch?: string;\n codeProject: CodeProjectDetailsV1;\n onSubmit: (deployment: Deployment) => void;\n onCancel: () => void;\n disabled?: boolean;\n submittable?: boolean;\n cancellable?: boolean;\n submitting: boolean;\n initialState?: DeploymentFormValues;\n submitKey?: string;\n cancelKey?: string;\n projectType: ProjectTypeV1;\n}\n\nexport type Deployment = {\n branch: string;\n commit: string;\n puppetEnterpriseServer: PEIntegrationV2 | undefined;\n nodeGroup: PEIntegrationEnvironmentV2 | undefined;\n deploymentPolicy: DeploymentPolicyV1 | undefined;\n timeout?: number;\n description?: string;\n prefix?: string;\n controlRepoName?: string;\n controlRepoBaseFeatureBranch?: string;\n};\n\nexport type DeploymentFormValues = {\n branch: string;\n commit: string;\n puppetEnterpriseServer: string;\n nodeGroup: string;\n nodeGroupId?: string;\n deploymentPolicy: string;\n deploymentPolicyId: string;\n deploymentPolicyParameters: { [key: string]: any };\n timeout?: number;\n description?: string;\n prefix?: string;\n controlRepo: string;\n controlRepoBranch: string;\n};\n\nconst getDeploymentParameterField = ({\n policy,\n name,\n type,\n value,\n}: {\n policy: string;\n name: string;\n type: string;\n value?: boolean | number | string | undefined;\n}) => {\n const props = {\n name,\n label: name,\n value,\n path: `deploymentPolicyParameters.${policy}.${name}`,\n 'data-testid': `parameter-${name}`,\n };\n\n if (type && type.match(/.*Sensitive.*/)) {\n return ;\n }\n\n switch (type) {\n case PARAMETER_TYPES.BOOLEAN:\n case OPTIONAL_PARAMETER_TYPES.BOOLEAN:\n return ;\n case PARAMETER_TYPES.INTEGER:\n case PARAMETER_TYPES.FLOAT:\n case PARAMETER_TYPES.NUMERIC:\n return (\n \n );\n case OPTIONAL_PARAMETER_TYPES.INTEGER:\n case OPTIONAL_PARAMETER_TYPES.FLOAT:\n case OPTIONAL_PARAMETER_TYPES.NUMERIC:\n return ;\n default:\n return ;\n }\n};\n\nconst DeploymentForm = ({\n type,\n initialBranch = '',\n codeProject,\n onSubmit,\n onCancel,\n disabled,\n submittable,\n cancellable,\n submitting,\n initialState,\n submitKey,\n cancelKey,\n projectType,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const [infiniteDeploymentError, setInfiniteDeploymentError] = useState(false);\n const [values, setValues] = useState(\n initialState || {\n branch: initialBranch,\n commit: '',\n puppetEnterpriseServer: '',\n nodeGroup: '',\n nodeGroupId: '',\n deploymentPolicy: '',\n deploymentPolicyId: '',\n deploymentPolicyParameters: {},\n timeout: 60,\n prefix: '',\n controlRepo: '',\n controlRepoBranch: '',\n },\n );\n const [deploymentPolicyType, setDeploymentPolicyType] = useState<\n 'builtIn' | 'custom'\n >('builtIn');\n const isRegexPipeline = values.branch === 'regex';\n\n const branches = useListBranchesV1(\n {\n workspaceId,\n provider: codeProject.srcRepoProvider,\n name: codeProject.srcRepoName,\n project: codeProject.srcRepoId,\n organization: codeProject.srcRepoOwner,\n prefix: useDebounce(values.branch),\n },\n {\n enabled: type === 'manual',\n keepPreviousData: true,\n },\n );\n\n const commits = useListCommitsV1(\n {\n workspaceId,\n provider: codeProject.srcRepoProvider,\n branch: values.branch,\n name: codeProject.srcRepoName,\n project: codeProject.srcRepoId,\n organization: codeProject.srcRepoOwner,\n },\n {\n enabled: type === 'manual' && values.branch !== '',\n },\n );\n\n const peIntegrations = useListPeIntegrationsV2(\n {\n workspaceId,\n peIntegrationNamePrefix: useDebounce(values.puppetEnterpriseServer),\n },\n {\n keepPreviousData: true,\n },\n );\n\n const peIntegrationMatch = peIntegrations.data?.peIntegrations?.find(\n (peIntegration) => peIntegration.name === values.puppetEnterpriseServer,\n );\n\n const nodeGroups = useListEnvironmentsV2(\n {\n peIntegrationId: peIntegrationMatch?.id!,\n environmentPrefix: useDebounce(values.nodeGroup),\n },\n {\n enabled: !!peIntegrationMatch,\n keepPreviousData: true,\n },\n );\n\n const prefixes = useListEnvironmentPrefixesV2(\n {\n peIntegrationId: peIntegrationMatch?.id ?? '',\n },\n {\n enabled: !!peIntegrationMatch,\n },\n );\n\n const deploymentPoliciesPayload: UseGetDeploymentPoliciesV1Payload = {\n workspaceId,\n projectName: codeProject.name,\n projectType,\n isRegexPipeline,\n };\n\n if (values.controlRepo !== '') {\n deploymentPoliciesPayload.deploymentPolicyControlRepoName =\n values.controlRepo;\n }\n\n const deploymentPolicies = useGetDeploymentPoliciesV1(\n deploymentPoliciesPayload,\n {\n enabled: values.branch !== '',\n },\n );\n\n const controlRepos = useListControlReposV1(\n {\n workspaceId,\n prefix: useDebounce(values.controlRepo ?? ''),\n },\n {\n enabled: projectType === 'MODULE',\n keepPreviousData: true,\n },\n );\n\n const controlRepoMatch = controlRepos.data?.pages[0]?.controlRepos?.find(\n (repo) => repo.name === values.controlRepo,\n );\n\n const controlRepoBranches = useListBranchesV1(\n {\n workspaceId,\n provider: controlRepoMatch?.srcRepoProvider!,\n name: values.controlRepo,\n project: controlRepoMatch?.srcRepoId!,\n organization: controlRepoMatch?.srcRepoOwner!,\n prefix: useDebounce(values.controlRepoBranch ?? ''),\n },\n {\n enabled: isRegexPipeline && !!controlRepoMatch,\n keepPreviousData: true,\n },\n );\n\n const prefixOptions =\n prefixes.data?.prefixes.map((prefix) => ({\n value: prefix,\n label: prefix,\n })) ?? [];\n\n const selectedDeploymentPolicy =\n deploymentPolicies.data?.deploymentPolicies?.find(\n (policy) => policy.displayName === values.deploymentPolicy,\n ) ?? {};\n\n let parameterComponents: string | any[] = [];\n if (selectedDeploymentPolicy) {\n parameterComponents =\n deploymentPolicies.data?.deploymentPolicies\n ?.find((policy) => policy.displayName === values.deploymentPolicy)\n ?.parameters?.map((parameter) => {\n if (!parameter || !parameter.name || !parameter.type) {\n return null;\n }\n\n return getDeploymentParameterField({\n policy: selectedDeploymentPolicy.name!,\n name: parameter.name,\n type: parameter.type,\n value: parameter.value,\n });\n }) ?? [];\n }\n\n const onChangeHandler = (\n nameChanged: keyof DeploymentFormValues,\n newValues: DeploymentFormValues,\n ) => {\n setInfiniteDeploymentError(false);\n const newValuesCopy = { ...newValues };\n\n if (nameChanged === 'branch') {\n newValuesCopy.commit = '';\n }\n\n if (nameChanged === 'puppetEnterpriseServer') {\n newValuesCopy.nodeGroup = '';\n newValuesCopy.prefix = '';\n newValuesCopy.deploymentPolicy = '';\n newValuesCopy.controlRepo = '';\n newValuesCopy.controlRepoBranch = '';\n }\n\n if (nameChanged === 'deploymentPolicy') {\n const deploymentPolicy =\n deploymentPolicies.data?.deploymentPolicies?.find(\n (policy) => policy.displayName === newValuesCopy.deploymentPolicy,\n );\n\n if (\n deploymentPolicy &&\n !newValuesCopy.deploymentPolicyParameters[deploymentPolicy.name!]\n ) {\n const deploymentPolicyParameters =\n deploymentPolicy?.parameters?.map((parameter) => [\n parameter.name,\n parameter.value,\n ]) ?? [];\n\n newValuesCopy.deploymentPolicyParameters[deploymentPolicy.name!] =\n Object.fromEntries(deploymentPolicyParameters);\n\n setValues(newValuesCopy);\n return;\n }\n }\n\n if (nameChanged === 'controlRepo') {\n newValuesCopy.controlRepoBranch = '';\n }\n\n setValues(newValuesCopy);\n };\n\n const onSubmitHandler = (submitValues: DeploymentFormValues) => {\n const nodeGroup = nodeGroups?.data?.environments?.find(\n (group) => group.name === submitValues.nodeGroup,\n );\n\n if (nodeGroup?.environment === values.branch) {\n setInfiniteDeploymentError(true);\n return;\n }\n\n const puppetEnterpriseServer = peIntegrations.data?.peIntegrations?.find(\n (peIntegration) =>\n peIntegration.name === submitValues.puppetEnterpriseServer,\n );\n\n let deploymentPolicy = selectedDeploymentPolicy;\n\n const parseParameterValue = ({\n paramType,\n value,\n }: {\n paramType: string;\n value?: boolean | number | string;\n }) => {\n let parsedValue;\n switch (paramType) {\n case PARAMETER_TYPES.BOOLEAN:\n case OPTIONAL_PARAMETER_TYPES.BOOLEAN:\n return Boolean(value);\n case PARAMETER_TYPES.INTEGER:\n case OPTIONAL_PARAMETER_TYPES.INTEGER:\n return typeof value === 'string'\n ? parseInt(value as string, 10)\n : value;\n case PARAMETER_TYPES.FLOAT:\n case OPTIONAL_PARAMETER_TYPES.FLOAT:\n case PARAMETER_TYPES.NUMERIC:\n case OPTIONAL_PARAMETER_TYPES.NUMERIC:\n parsedValue = parseFloat(value as string);\n return !Number.isNaN(parsedValue) ? parsedValue : value;\n default:\n return value;\n }\n };\n\n const updatedParameters =\n deploymentPolicy?.parameters?.map((p) => {\n const value =\n submitValues.deploymentPolicyParameters[deploymentPolicy?.name!][\n p.name!\n ];\n return {\n ...p,\n value: parseParameterValue({\n paramType: p.type!,\n value,\n }),\n };\n }) ?? [];\n\n deploymentPolicy = {\n ...deploymentPolicy,\n parameters: updatedParameters,\n };\n\n onSubmit({\n branch: submitValues.branch ?? '',\n commit: submitValues.commit ?? '',\n puppetEnterpriseServer,\n nodeGroup,\n deploymentPolicy,\n timeout: submitValues.timeout ?? 0,\n description: submitValues.description ?? '',\n prefix: submitValues.prefix ?? '',\n controlRepoName: submitValues.controlRepo ?? '',\n controlRepoBaseFeatureBranch: submitValues.controlRepoBranch ?? '',\n });\n };\n\n const onChangePolicyType = (newPolicyType: 'builtIn' | 'custom') => {\n setValues({\n ...values,\n deploymentPolicy: '',\n controlRepo: '',\n controlRepoBranch: '',\n });\n setDeploymentPolicyType(newPolicyType);\n };\n\n const branchMatch = branches?.data?.vcsBranches?.some(\n (branch) => branch.name === values.branch,\n );\n\n const commitMatch = commits?.data?.vcsCommits?.some(\n (commit) => commit.sha === values.commit,\n );\n\n const environmentMatch = nodeGroups.data?.environments?.find(\n (nodeGroup) => nodeGroup.name === values.nodeGroup,\n );\n\n /**\n * This useEffect is used when the form is rendered in the edit deployment dialog. We do not have the environment\n * display name which is used in the nodeGroup field, so we need to use the nodeGroupId to find the correct environment.\n */\n useEffect(() => {\n if (\n type === 'edit' &&\n nodeGroups.data?.environments?.length &&\n values.nodeGroupId !== ''\n ) {\n const nodeGroup = nodeGroups.data?.environments?.find(\n (group) => group.id === values.nodeGroupId,\n );\n\n if (nodeGroup && nodeGroup?.name !== values.nodeGroup) {\n setValues((prev) => ({\n ...prev,\n nodeGroupId: '',\n nodeGroup: nodeGroup?.name ?? '',\n }));\n }\n }\n }, [type, nodeGroups, values.nodeGroup, values.nodeGroupId]);\n\n /**\n * This useEffect is used when the form is rendered in the edit deployment dialog. We do not have the deployment policy\n * display name which is used in the deployPolicy field, so we need to use the deploymentPolicyId to find the correct policy.\n */\n useEffect(() => {\n if (\n type === 'edit' &&\n deploymentPolicies.data?.deploymentPolicies?.length &&\n values.deploymentPolicyId !== ''\n ) {\n const deploymentPolicy =\n deploymentPolicies.data?.deploymentPolicies?.find(\n (group) => group.name === values.deploymentPolicyId,\n );\n\n if (\n deploymentPolicy &&\n deploymentPolicy?.displayName !== values.deploymentPolicy\n ) {\n const newValues: Partial = {\n deploymentPolicyId: '',\n deploymentPolicy: deploymentPolicy?.displayName ?? '',\n };\n\n if (deploymentPolicy?.custom) {\n setDeploymentPolicyType('custom');\n\n if (deploymentPolicy?.controlRepoId) {\n const controlRepo = controlRepos.data?.pages[0]?.controlRepos?.find(\n (repo) => repo.name === deploymentPolicy.controlRepoId?.name,\n );\n\n if (controlRepo) {\n newValues.controlRepo = controlRepo.name;\n }\n }\n }\n\n setValues((prev) => ({\n ...prev,\n ...newValues,\n }));\n }\n }\n }, [\n type,\n deploymentPolicies,\n controlRepos,\n values.deploymentPolicy,\n values.deploymentPolicyId,\n ]);\n\n return (\n <>\n onCancel()}\n disabled={disabled}\n submitting={submitting}\n submitLabel={\n submitKey\n ? t(submitKey)\n : t('viewPipeline.form.deployment.buttons.submit.manual')\n }\n cancelLabel={\n cancelKey\n ? t(cancelKey)\n : t('viewPipeline.form.deployment.buttons.cancel')\n }\n >\n {type === 'manual' &&\n getBranchField({\n query: branches,\n fieldValue: values.branch,\n t,\n })}\n {type === 'manual' &&\n branchMatch &&\n getCommitField({\n query: commits,\n fieldValue: values.commit,\n branch: values.branch,\n codeProject,\n t,\n })}\n {(commitMatch || type !== 'manual') &&\n getPuppetEnterpriseServerField({\n query: peIntegrations,\n fieldValue: values.puppetEnterpriseServer,\n t,\n })}\n {!isRegexPipeline &&\n peIntegrationMatch &&\n getEnvironmentField({\n name: 'nodeGroup',\n query: nodeGroups,\n fieldValue: values.nodeGroup,\n codeProject,\n t,\n })}\n {(environmentMatch || peIntegrationMatch) && (\n <>\n \n
    \n onChangePolicyType('builtIn')}\n />\n onChangePolicyType('custom')}\n />\n
    \n {projectType === 'MODULE' &&\n deploymentPolicyType === 'custom' &&\n getControlRepoField({\n query: controlRepos,\n fieldValue: values.controlRepo,\n t,\n label: t(\n 'viewPipeline.form.deployment.field.deploymentControlRepo.label',\n ),\n 'data-testid': 'select-deployment-control-repo',\n })}\n {(projectType === 'CONTROL_REPO' ||\n deploymentPolicyType === 'builtIn' ||\n (projectType === 'MODULE' &&\n deploymentPolicyType === 'custom' &&\n controlRepoMatch)) &&\n getDeploymentPolicyField({\n query: deploymentPolicies,\n fieldValue: values.deploymentPolicy,\n customPolicy: deploymentPolicyType === 'custom',\n t,\n })}\n {selectedDeploymentPolicy.name ===\n DEPLOYMENT_POLICY_TYPES.FEATURE_BRANCH_POLICY && (\n \n \n \n {t('viewPipeline.dialog.deployment.featureBranch.heading')}\n \n \n {t('viewPipeline.dialog.deployment.featureBranch')}\n \n
    \n )}\n \n )}\n {projectType === 'MODULE' &&\n selectedDeploymentPolicy.name ===\n DEPLOYMENT_POLICY_TYPES.EVENTUAL_CONSISTENCY_POLICY && (\n
    \n
    \n \n {selectedDeploymentPolicy.displayName}\n
    \n ,\n 2:
    ,\n 3: (\n \n ),\n }}\n />\n
    \n )}\n {projectType === 'MODULE' &&\n isRegexPipeline &&\n selectedDeploymentPolicy.name ===\n DEPLOYMENT_POLICY_TYPES.FEATURE_BRANCH_POLICY &&\n getControlRepoField({\n query: controlRepos,\n fieldValue: values.controlRepo,\n t,\n 'data-testid': 'select-feature-deployment-control-repo',\n })}\n {projectType === 'MODULE' &&\n isRegexPipeline &&\n selectedDeploymentPolicy.name ===\n DEPLOYMENT_POLICY_TYPES.FEATURE_BRANCH_POLICY &&\n controlRepoMatch &&\n getBranchField({\n query: controlRepoBranches,\n fieldValue: values.controlRepoBranch,\n name: 'controlRepoBranch',\n label: t(\n 'viewPipeline.form.deployment.field.controlRepoBranch.label',\n ),\n t,\n 'data-testid': 'select-control-repo-branch',\n })}\n {parameterComponents?.length && parameterComponents}\n {values.deploymentPolicy && (type === 'stage' || type === 'edit') && (\n \n )}\n {peIntegrationMatch && prefixOptions.length > 0 && (\n \n )}\n {type === 'manual' && (\n \n )}\n \n
    \n {infiniteDeploymentError && (\n \n {t('viewPipeline.form.deployment.error.infiniteDeployment')}\n \n )}\n \n \n \n \n \n
    \n \n );\n};\n\nexport default DeploymentForm;\n\nDeploymentForm.defaultProps = defaultProps;\n","import { useQuery, useMutation } from '@tanstack/react-query';\nimport {\n Cd4peApiError,\n handleQueryRequest,\n QueryHook,\n MutationHook,\n ApiPayload,\n} from '@utils/api/cd4pe';\nimport { DeploymentV1Service } from '@puppet/cd4pe-client-ts';\nimport queryClient from '@services/queryClient';\nimport { LIST_TRIGGER_EVENTS_QUERY_TAG } from './events';\n\nexport const GET_DEPLOYMENT_POLICIES_TAG = 'getDeploymentPolicies';\nexport const TRIGGER_DEPLOYMENT_QUERY_TAG = 'triggerDeployment';\n\n/**\n * useGetDeploymentPoliciesV1\n */\n\ntype UseGetDeploymentPoliciesV1 = QueryHook<\n typeof DeploymentV1Service,\n 'getDeploymentPoliciesV1',\n Cd4peApiError\n>;\n\nexport type UseGetDeploymentPoliciesV1Payload = ApiPayload<\n typeof DeploymentV1Service,\n 'getDeploymentPoliciesV1'\n>;\n\nexport const useGetDeploymentPoliciesV1: UseGetDeploymentPoliciesV1 = (\n payload,\n options,\n) =>\n useQuery(\n [\n GET_DEPLOYMENT_POLICIES_TAG,\n payload.workspaceId,\n payload.projectName,\n payload.isRegexPipeline,\n payload.deploymentPolicyControlRepoName,\n ],\n () => {\n return handleQueryRequest(\n DeploymentV1Service.getDeploymentPoliciesV1(payload),\n );\n },\n options,\n );\n\n/**\n * useTriggerDeploymentV1\n */\ntype UseTriggerDeploymentV1 = MutationHook<\n typeof DeploymentV1Service,\n 'triggerDeploymentV1',\n Cd4peApiError\n>;\n\nexport type UseTriggerDeploymentV1Result = ReturnType;\n\nexport const useTriggerDeploymentV1: UseTriggerDeploymentV1 = () => {\n return useMutation(\n (payload) =>\n handleQueryRequest(DeploymentV1Service.triggerDeploymentV1(payload)),\n {\n onSuccess: (_, payload) => {\n queryClient.invalidateQueries([\n LIST_TRIGGER_EVENTS_QUERY_TAG,\n payload.requestBody.workspaceId,\n ]);\n },\n },\n );\n};\n","import DeploymentForm from './DeploymentForm';\n\nexport * from './DeploymentForm';\nexport default DeploymentForm;\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@puppet/react-components';\nimport Table from '@components/Table';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useListTemplatesV1 } from '@services/cd4pe/jobs';\nimport { JobTemplateSummaryV1 } from '@utils/api/cd4pe';\nimport Cd4peError from '@components/Cd4peError';\n\ninterface Props {\n onSubmit: (values: JobTemplateSummaryV1[]) => void;\n onCancel: () => void;\n submitting: boolean;\n submitKey?: string;\n cancelKey?: string;\n}\n\nconst checkIfIndeterminateState = (\n data: Array,\n selectedData: Set,\n) => {\n let checkAllValue = false;\n let indeterminateStateValue = false;\n\n if (data?.length === selectedData?.size) {\n indeterminateStateValue = false;\n checkAllValue = true;\n } else if (selectedData?.size > 0) {\n indeterminateStateValue = true;\n checkAllValue = false;\n }\n\n return { checkAllValue, indeterminateStateValue };\n};\n\nconst JobForm = ({\n onSubmit,\n onCancel,\n submitting,\n submitKey = 'viewPipeline.form.job.button.submit',\n cancelKey = 'viewPipeline.form.job.button.cancel',\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const [searchValue, setSearchValue] = useState('');\n const [selectedData, setSelectedData] = useState>(new Set());\n\n const { data, isLoading, error } = useListTemplatesV1({\n workspaceId,\n });\n\n const { checkAllValue, indeterminateStateValue } = checkIfIndeterminateState(\n data?.jobTemplates ?? [],\n selectedData,\n );\n\n const tableData =\n data?.jobTemplates\n ?.map((job) => ({\n ...job,\n selected: selectedData.has(job.name),\n }))\n .filter((job) => job.name.includes(searchValue)) ?? [];\n\n return (\n
    \n setSearchValue(value)}\n />\n {\n const newSelectedData = new Set(selectedData);\n if (checked) {\n setSelectedData(newSelectedData.add(row.name));\n } else {\n newSelectedData.delete(row.name);\n setSelectedData(newSelectedData);\n }\n }}\n onHeaderChecked={(checked: boolean) => {\n if (checked) {\n setSelectedData(\n new Set(data?.jobTemplates?.map((job) => job.name)),\n );\n } else {\n setSelectedData(new Set());\n }\n }}\n headerCheckState={checkAllValue}\n headerIndeterminateState={indeterminateStateValue}\n emptyStateHeader={t('viewPipeline.form.job.add.table.empty.header')}\n emptyStateMessage=\"\"\n data-testid=\"job-table\"\n />\n
    \n {\n onSubmit(\n data?.jobTemplates?.filter((job) => selectedData.has(job.name))!!,\n );\n }}\n data-testid=\"stage-job-form-submit\"\n >\n {t(submitKey)}\n \n \n
    \n \n
    \n );\n};\n\nexport default JobForm;\n","import JobForm from './JobForm';\n\nexport default JobForm;\n","import ImpactAnalysisForm from './ImpactAnalysisForm';\n\nexport * from './ImpactAnalysisForm';\nexport default ImpactAnalysisForm;\n","import AddPRGateForm from './AddPRGateForm';\n\nexport default AddPRGateForm;\n","import React from 'react';\nimport { Form } from '@puppet/react-components';\nimport { Trans, useTranslation } from 'react-i18next';\n\ninterface Props {\n stageNum: number | undefined;\n submitting: boolean;\n onSubmit: Function;\n onCancel: Function;\n submitKey?: string;\n cancelKey?: string;\n}\nconst AddPRGateForm = ({\n stageNum,\n submitting,\n onSubmit,\n onCancel,\n submitKey = 'viewPipeline.form.pullRequestGate.fields.addGate.label',\n cancelKey = 'viewPipeline.form.pullRequestGate.fields.cancelGate.label',\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n\n return (\n
    \n \n \n {{\n stageNumber: stageNum,\n }}\n \n \n
    \n
    \n \n \n {{\n stageNumber: stageNum,\n }}\n \n \n onSubmit()}\n onCancel={() => onCancel()}\n data-testid=\"add-pr-gate\"\n />\n
    \n );\n};\n\nexport default AddPRGateForm;\n","import React, { useState } from 'react';\nimport {\n Alert,\n Button,\n Form,\n Heading,\n Modal,\n Text,\n} from '@puppet/react-components';\nimport {\n CodeProjectDetailsV1,\n JobTemplateSummaryV1,\n PipelineDestinationTypeV1,\n ProjectPipelineGateTypeV1,\n ProjectPipelineStageV1,\n ProjectPipelineV1,\n ProjectTypeV1,\n} from '@puppet/cd4pe-client-ts';\nimport { TFunction, useTranslation } from 'react-i18next';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport ConditionalRender from '@components/ConditionalRender';\nimport Cd4peError from '@components/Cd4peError';\nimport { useUpsertPipelineStagesV1 } from '@services/cd4pe/pipelines';\nimport DeploymentForm, {\n Deployment,\n} from '@codeDelivery/components/ViewPipeline/components/DeploymentForm';\nimport JobForm from '@codeDelivery/components/ViewPipeline/components/JobForm';\nimport {\n addNewStage,\n addNewStageAfter,\n addNewStageBefore,\n addNewStageItem,\n AddNewStageParams,\n addPRGate,\n checkDeploymentExists,\n checkPullRequestExists,\n} from '@codeDelivery/components/ViewPipeline/utils';\nimport ImpactAnalysisForm, {\n ImpactAnalysis,\n} from '@codeDelivery/components/ViewPipeline/components/ImpactAnalysisForm';\nimport AddPRGateForm from '../AddPRGateForm';\n\nexport type AddStageType =\n | 'AddStage'\n | 'AddItem'\n | 'BeforeStage'\n | 'AfterStage';\n\ninterface Props {\n type: AddStageType;\n projectType: ProjectTypeV1;\n stageNumber?: number;\n pipeline: ProjectPipelineV1;\n codeProject: CodeProjectDetailsV1;\n onClose: () => void;\n onClickAddToStage: (stageNumber: number) => void;\n onClickAddNextStage: (stageNumber: number) => void;\n isRegexPipeline: boolean;\n}\n\ntype itemType = PipelineDestinationTypeV1 | ProjectPipelineGateTypeV1;\n\ntype FormType = {\n stageName: string;\n itemType: itemType;\n};\n\ntype DestinationOptions = { label: string; value: FormType['itemType'] }[];\n\nconst getAddItemOptions = (\n stages: ProjectPipelineStageV1[],\n stageNumber: number,\n codeProject: CodeProjectDetailsV1,\n pipelineId: string,\n t: TFunction<'codeDelivery'>,\n isRegexPipeline: boolean,\n): DestinationOptions => {\n const selectedStage = stages[stageNumber - 1];\n const options: DestinationOptions = [];\n const initialTypes = {\n DEPLOYMENT: false,\n JOB: false,\n IMPACT_ANALYSIS: false,\n PULL_REQUEST:\n selectedStage.pipelineGate?.projectPipelineGateType === 'PULL_REQUEST',\n };\n\n const destinationTypesPresent = selectedStage.destinations?.reduce(\n (acc, dest) => ({\n ...acc,\n [dest.type]: true,\n }),\n initialTypes,\n );\n\n if (!destinationTypesPresent.IMPACT_ANALYSIS) {\n options.push({\n label: t('viewPipeline.dialog.addStage.stageItemType.deployment'),\n value: 'DEPLOYMENT',\n });\n }\n\n options.push({\n label: t('viewPipeline.dialog.addStage.stageItemType.job'),\n value: 'JOB',\n });\n\n if (\n !destinationTypesPresent.IMPACT_ANALYSIS &&\n checkDeploymentExists(stages) &&\n !isRegexPipeline\n ) {\n options.push({\n label: t('viewPipeline.dialog.addStage.stageItemType.impact_analysis'),\n value: 'IMPACT_ANALYSIS',\n });\n }\n\n if (!checkPullRequestExists(stages)) {\n options.push({\n label: t('viewPipeline.dialog.addStage.stageItemType.pullRequestGate'),\n value: 'PULL_REQUEST',\n });\n }\n\n return options;\n};\n\nconst getStageOptions = (\n t: TFunction<'codeDelivery'>,\n stages: ProjectPipelineStageV1[],\n isRegexPipeline: boolean,\n): DestinationOptions => {\n const options: DestinationOptions = [\n {\n value: 'DEPLOYMENT',\n label: t('viewPipeline.dialog.addStage.stageItemType.deployment'),\n },\n {\n value: 'JOB',\n label: t('viewPipeline.dialog.addStage.stageItemType.job'),\n },\n ];\n\n if (checkDeploymentExists(stages) && !isRegexPipeline) {\n options.push({\n value: 'IMPACT_ANALYSIS',\n label: t('viewPipeline.dialog.addStage.stageItemType.impact_analysis'),\n });\n }\n return options;\n};\n\nconst AddStageDialog = ({\n type,\n projectType,\n onClose,\n pipeline,\n codeProject,\n stageNumber,\n onClickAddToStage,\n onClickAddNextStage,\n isRegexPipeline,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const [stageName, setStageName] = useState('');\n const [updatedStage, setUpdatedStage] =\n useState(null);\n const [newDestinationsSummary, setNewDestinationsSummary] =\n useState();\n const addStage = useUpsertPipelineStagesV1();\n\n const stageItemTypes =\n type === 'AddItem' && stageNumber\n ? getAddItemOptions(\n pipeline.stages,\n stageNumber,\n codeProject,\n pipeline.id,\n t,\n isRegexPipeline,\n )\n : getStageOptions(t, pipeline.stages, isRegexPipeline);\n\n const [itemType, setItemType] = useState(\n stageItemTypes[0].value,\n );\n\n const onSubmitHandler = (\n event: JobTemplateSummaryV1[] | Deployment | ImpactAnalysis,\n ) => {\n const addStagePayload: AddNewStageParams = {\n stageName,\n destinationType: itemType,\n stages: pipeline.stages ?? [],\n event,\n workspaceId,\n projectName: codeProject.name,\n projectType,\n };\n\n if (itemType === 'DEPLOYMENT') {\n const deployment = event as Deployment;\n addStagePayload.deploymentDisplayName = t(\n 'viewPipeline.dialog.addStage.deployment.displayName',\n {\n nodeGroupName: deployment.nodeGroup?.name,\n peName: deployment.puppetEnterpriseServer?.name,\n },\n );\n setNewDestinationsSummary([\n t('viewPipeline.dialog.addStage.success.deploymentSummary', {\n policyName: deployment.deploymentPolicy?.displayName,\n nodeGroupName: deployment.nodeGroup?.name,\n peName: deployment.puppetEnterpriseServer?.name,\n }),\n ]);\n } else if (itemType === 'JOB') {\n const job = event as JobTemplateSummaryV1[];\n setNewDestinationsSummary(job.map((j) => j.name));\n } else if (itemType === 'IMPACT_ANALYSIS') {\n const ia = event as ImpactAnalysis;\n if (ia.allStageEnvironments) {\n setNewDestinationsSummary([\n t('viewPipeline.dialog.addStage.success.IASummary.all'),\n ]);\n } else {\n setNewDestinationsSummary([\n t('viewPipeline.dialog.addStage.success.IASummary.selected'),\n ]);\n }\n }\n\n let stages: ProjectPipelineStageV1[];\n if (type === 'AddItem' && stageNumber) {\n if (itemType === 'PULL_REQUEST') {\n stages = addPRGate(stageNumber, pipeline.stages ?? []);\n } else {\n stages = addNewStageItem({\n ...addStagePayload,\n stageNumber,\n });\n }\n } else if (type === 'AfterStage' && stageNumber) {\n stages = addNewStageAfter({\n ...addStagePayload,\n stageNumber,\n });\n } else if (type === 'BeforeStage' && stageNumber) {\n stages = addNewStageBefore({\n ...addStagePayload,\n stageNumber,\n });\n } else {\n stages = addNewStage(addStagePayload);\n }\n\n addStage.mutate(\n {\n workspaceId,\n pipelineId: pipeline.id ?? '',\n requestBody: {\n projectName: codeProject.name,\n stages,\n },\n },\n {\n onSuccess: (data) => {\n let stageIndex: number = 0;\n if (stageNumber) {\n if (\n type === 'AddItem' ||\n (type === 'BeforeStage' && stageNumber > 1)\n ) {\n stageIndex = stageNumber - 1;\n } else if (type === 'AfterStage') {\n stageIndex = stageNumber;\n }\n } else {\n stageIndex = data.stages.length - 1;\n }\n const stage = data.stages[stageIndex];\n setUpdatedStage(stage);\n },\n },\n );\n };\n\n const getHeader = () => {\n if (updatedStage) {\n return t('viewPipeline.dialog.addStage.success.header', {\n stageName: updatedStage.stageName || updatedStage.stageNum,\n });\n }\n\n if (stageNumber) {\n const stage = pipeline.stages?.[stageNumber - 1];\n let headerKey;\n switch (type) {\n case 'AddItem':\n headerKey = 'viewPipeline.dialog.addStage.addItem.header';\n break;\n case 'BeforeStage':\n headerKey = 'viewPipeline.dialog.addStage.header.before';\n break;\n case 'AfterStage':\n headerKey = 'viewPipeline.dialog.addStage.header.after';\n break;\n default:\n headerKey = 'viewPipeline.dialog.addStage.header';\n break;\n }\n\n return t(headerKey, {\n stageName: stage?.stageName || stage?.stageNum,\n });\n }\n\n return t('viewPipeline.dialog.addStage.header');\n };\n\n const resetFormState = () => {\n addStage.reset();\n setItemType(stageItemTypes[0].value);\n setStageName('');\n setUpdatedStage(null);\n setNewDestinationsSummary([]);\n };\n\n return (\n \n {getHeader()}\n \n
    \n
    \n \n \n {t('viewPipeline.dialog.addStage.subheader')}\n \n \n {\n setStageName(values.stageName);\n setItemType(values.itemType);\n }}\n >\n \n \n \n \n {t('viewPipeline.dialog.addStage.addToStage.subheader')}\n \n
    \n \n
    \n \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n
    \n \n \n \n {t('viewPipeline.dialog.addStage.success.subheader', {\n stageName:\n updatedStage?.stageName ||\n updatedStage?.stageNum ||\n stageNumber ||\n '',\n })}\n \n \n \n
      \n {newDestinationsSummary?.map((name) => (\n
    • {name}
    • \n ))}\n
    \n
    \n
    \n
    \n onClose()}\n data-testid=\"add-stage-done\"\n >\n {t('viewPipeline.dialog.addStage.success.button.done')}\n \n
    \n \n {t('viewPipeline.dialog.addStage.success.continueHeading')}\n \n
    \n {\n resetFormState();\n const updatedStageNumber = updatedStage?.stageNum || stageNumber;\n if (updatedStageNumber) {\n onClickAddToStage(updatedStageNumber);\n }\n }}\n >\n {t('viewPipeline.dialog.addStage.success.addToStage')}\n \n
    \n
    \n {\n resetFormState();\n if (updatedStage) {\n onClickAddNextStage(updatedStage.stageNum);\n }\n }}\n >\n {t('viewPipeline.dialog.addStage.success.addAnotherStage', {\n stageName:\n updatedStage?.stageName || updatedStage?.stageNum || '',\n })}\n \n
    \n
    \n
    \n );\n};\n\nexport default AddStageDialog;\n","import AddStageDialog from './AddStageDialog';\n\nexport default AddStageDialog;\n","import React from 'react';\nimport { Modal } from '@puppet/react-components';\nimport { useAppDispatch } from '@hooks/redux';\nimport {\n CodeProjectDetailsV1,\n ProjectPipelineStageV1,\n ProjectTypeV1,\n} from '@puppet/cd4pe-client-ts';\nimport alerts from '@state/ui/alerts';\nimport { useTranslation } from 'react-i18next';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport Cd4peError from '@components/Cd4peError';\nimport { useUpsertPipelineStagesV1 } from '@services/cd4pe/pipelines';\nimport ImpactAnalysisForm, {\n ImpactAnalysis,\n ImpactAnalysisFormProps,\n} from '@codeDelivery/components/ViewPipeline/components/ImpactAnalysisForm';\nimport { buildUpdateImpactAnalysisRequest } from '@codeDelivery/components/ViewPipeline/utils';\nimport { DestinationSelector } from '../../Stages';\n\ninterface EditDeploymentDialogProps {\n codeProject: CodeProjectDetailsV1;\n projectType: ProjectTypeV1;\n onClose: () => void;\n selectedDestination: DestinationSelector;\n stages: Array;\n pipelineId: string;\n branch: string;\n}\n\nconst EditImpactAnalysisDialog = ({\n codeProject,\n projectType,\n onClose,\n selectedDestination,\n stages,\n pipelineId,\n branch,\n}: EditDeploymentDialogProps) => {\n const upsertDeployment = useUpsertPipelineStagesV1();\n const appDispatch = useAppDispatch();\n const workspaceId = useWorkspaceDomain();\n const { t } = useTranslation('codeDelivery');\n\n const showErrorBanner = () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Error',\n message: t('viewPipeline.form.impactAnalysis.edit.error'),\n }),\n );\n };\n\n const stageData = stages[selectedDestination.stageIndex];\n if (stageData === undefined) {\n showErrorBanner();\n return null;\n }\n\n const destinationData =\n stageData.destinations?.[selectedDestination.destinationIndex];\n if (destinationData === undefined) {\n showErrorBanner();\n return null;\n }\n\n const onSubmit = (values: ImpactAnalysis) => {\n upsertDeployment.mutate(\n {\n requestBody: buildUpdateImpactAnalysisRequest(\n values,\n codeProject,\n selectedDestination,\n destinationData,\n stages,\n projectType,\n workspaceId,\n ),\n workspaceId,\n pipelineId,\n },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('viewPipeline.dialog.manualDeployment.alert.updated'),\n }),\n );\n onClose();\n },\n },\n );\n };\n\n const peServerCredentialsId =\n destinationData?.deploymentTemplate?.puppetEnterpriseCredentialsId?.name ||\n '';\n const compiledBatchSize =\n destinationData?.peImpactAnalysisTemplate?.settings?.compileBatchSize;\n const allStageEnvironments =\n destinationData?.peImpactAnalysisTemplate?.settings?.analyzeAllDeployments;\n\n const stageEnvironments: { [p: string]: boolean } | undefined =\n destinationData?.peImpactAnalysisTemplate?.settings?.environments?.reduce(\n (acc, val) => {\n if (val.pipelineDestinationId) {\n return {\n ...acc,\n [val.pipelineDestinationId]: true,\n };\n }\n return acc;\n },\n {} as { [p: string]: boolean },\n );\n\n const stageEnvironmentsControlRepos =\n destinationData?.peImpactAnalysisTemplate?.settings?.moduleImpactAnalysisControlRepos?.reduce<\n ImpactAnalysisFormProps['stageEnvironmentsControlRepos']\n >((acc, val) => {\n if (val.peModuleDeploymentId && val.controlRepoId?.name) {\n return {\n ...acc,\n [val.peModuleDeploymentId]: val.controlRepoId.name,\n };\n }\n return acc;\n }, {}) || {};\n\n const initialFormValues: ImpactAnalysisFormProps = {\n branch,\n commit: '',\n allStageEnvironments: allStageEnvironments || false,\n environment: '',\n nodes: compiledBatchSize || 10,\n stageEnvironments: stageEnvironments || {},\n stageEnvironmentsControlRepos,\n puppetEnterpriseServer: peServerCredentialsId,\n controlRepo: '',\n };\n\n return (\n \n \n {t('viewPipeline.form.impactAnalysis.edit.title')}\n \n \n \n \n );\n};\n\nexport default EditImpactAnalysisDialog;\n","import EditImpactAnalysisDialog from './EditImpactAnalysisDialog';\n\nexport default EditImpactAnalysisDialog;\n","import PipelinesAsCodePrompt from './PipelinesAsCodePrompt';\n\nexport default PipelinesAsCodePrompt;\n","import React from 'react';\nimport {\n Button,\n Modal,\n Text,\n Heading,\n Link,\n Icon,\n} from '@puppet/react-components';\nimport { Trans, useTranslation } from 'react-i18next';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport {\n useCreatePipelinesFromCodeV1,\n useDisablePipelinesAsCodeV1,\n} from '@services/cd4pe/pipelinesAsCode';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport Cd4peError from '@components/Cd4peError';\nimport { ProjectTypeV1 } from '@puppet/cd4pe-client-ts';\nimport { getProjectTypeString } from '../../../../utils';\n\ninterface Props {\n projectName: string;\n branch: string;\n pipelineId: string;\n onClose: () => void;\n projectType: ProjectTypeV1;\n}\n\nconst PipelinesAsCodePrompt = ({\n projectName,\n branch,\n pipelineId,\n onClose,\n projectType,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const createPipelinesFromCode = useCreatePipelinesFromCodeV1();\n const disablePipelinesAsCode = useDisablePipelinesAsCodeV1();\n const [pipelinesCreated, setPipelinesCreated] = React.useState(false);\n const isLoading =\n createPipelinesFromCode.isLoading || disablePipelinesAsCode.isLoading;\n const handleAccept = () => {\n createPipelinesFromCode.mutate(\n {\n workspaceId,\n pipelineId,\n projectName,\n branch,\n },\n { onSuccess: () => setPipelinesCreated(true) },\n );\n };\n\n const handleReject = () => {\n disablePipelinesAsCode.mutate(\n { workspaceId, pipelineId, projectName },\n { onSuccess: onClose },\n );\n };\n\n return (\n \n \n {t('viewPipeline.dialog.pipelinesAsCode.title')}\n \n \n {t('viewPipeline.dialog.pipelinesAsCode.header')}\n \n \n {t('viewPipeline.dialog.pipelinesAsCode.description', {\n projectType: getProjectTypeString(projectType),\n })}\n \n \n {t('viewPipeline.dialog.pipelinesAsCode.header.benefits')}\n \n
      \n
    • \n \n {t('viewPipeline.dialog.pipelinesAsCode.text.benefit1')}\n \n
    • \n
    • \n \n {t('viewPipeline.dialog.pipelinesAsCode.text.benefit2')}\n \n
    • \n
    • \n \n {t('viewPipeline.dialog.pipelinesAsCode.text.benefit3')}\n \n
    • \n
    \n \n {t('viewPipeline.dialog.pipelinesAsCode.text.benefit4', {\n projectType: getProjectTypeString(projectType),\n })}\n \n \n {t('viewPipeline.dialog.pipelinesAsCode.text.prompt')}\n \n {pipelinesCreated ? (\n
    \n \n {t('viewPipeline.dialog.pipelinesAsCode.text.created')}\n \n
    \n \n
    \n
    \n ) : (\n
    \n \n
    \n \n \n
    \n
    \n )}\n \n \n \n \n
    \n );\n};\n\nexport default PipelinesAsCodePrompt;\n","import React, { useState } from 'react';\nimport classnames from 'classnames';\nimport {\n Text,\n Button,\n Card,\n Heading,\n Icon,\n TooltipHoverArea,\n} from '@puppet/react-components';\nimport { Trans, useTranslation } from 'react-i18next';\nimport {\n ProjectPipelineDestinationV1,\n ProjectPipelineGateV1,\n} from '@puppet/cd4pe-client-ts';\nimport ConditionalRender from '@components/ConditionalRender';\n\ninterface Props {\n destination?: ProjectPipelineDestinationV1;\n manageAsCode?: boolean;\n pipelineGate?: ProjectPipelineGateV1;\n onDelete: () => void;\n requiresAction?: 'DEPLOYMENT_WARNING';\n reordering?: boolean;\n onEditItem?: (() => void) | undefined;\n onEditPlaceholder?: () => void;\n preventDeleteStage?: boolean;\n isRegex?: boolean;\n onOpenEditImpactAnalysisDialog?: () => void;\n}\n\nconst StageCardItem = ({\n destination,\n manageAsCode = false,\n pipelineGate,\n requiresAction,\n onDelete,\n reordering,\n onEditItem,\n onEditPlaceholder = () => {},\n preventDeleteStage,\n isRegex,\n onOpenEditImpactAnalysisDialog,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const [deleteOpen, setDeleteOpen] = useState(false);\n\n let description = null;\n let typeTranslationKey = 'viewPipeline.stage.card.delete.item.title.type.job';\n if (destination?.placeholder && !reordering) {\n switch (destination?.placeholder) {\n case 'DEPLOYMENT_PLACEHOLDER':\n description = (\n \n \n \n \n {t('viewPipeline.stage.card.add.deployment.item.heading')}\n \n \n {t(\n 'viewPipeline.stage.card.add.deploymentWarning.item.to.stage',\n )}\n \n \n \n {t('viewPipeline.stage.card.add.deployment.item.to.stage')}\n \n
    \n );\n\n break;\n case 'IMPACT_ANALYSIS_PLACEHOLDER':\n description = (\n
    \n \n
    \n );\n break;\n case 'JOB_PLACEHOLDER':\n description = (\n
    \n \n
    \n );\n break;\n default:\n }\n } else if (destination?.type === 'JOB') {\n description = (\n
    \n ,\n ,\n ]}\n />\n
    \n );\n } else if (destination?.type === 'DEPLOYMENT') {\n typeTranslationKey =\n 'viewPipeline.stage.card.delete.item.title.type.deployment';\n description = (\n <>\n \n ,\n ,\n ]}\n />\n \n
    \n ,\n ,\n ]}\n />\n
    \n {!isRegex && (\n
    \n ,\n ,\n ]}\n />\n
    \n )}\n \n );\n } else if (destination?.type === 'IMPACT_ANALYSIS') {\n typeTranslationKey = 'viewPipeline.stage.card.delete.item.title.type.ia';\n const numberOfEnvironments = destination?.peImpactAnalysisTemplate?.settings\n ?.analyzeAllDeployments\n ? t('viewPipeline.stages.card.item.type.impactAnalysis.allEnvironments')\n : t('viewPipeline.stages.card.item.type.impactAnalysis.environments', {\n numberOfEnvironments:\n destination?.peImpactAnalysisTemplate?.settings?.environments\n ?.length ?? 0,\n });\n\n description = (\n
    \n ,\n ,\n ]}\n />\n
    \n );\n } else if (pipelineGate) {\n typeTranslationKey =\n 'viewPipeline.stage.card.delete.item.title.type.prgate';\n description = (\n \n {t('viewPipeline.stages.card.item.type.pipelineGate')}\n \n );\n }\n\n if (!description) {\n return null;\n }\n\n return (\n \n \n {description}\n \n
    \n \n {t('viewPipeline.stage.card.delete.item.title', {\n type: t(typeTranslationKey),\n })}\n \n
    \n {\n setDeleteOpen(false);\n onDelete();\n }}\n data-testid=\"stage-card-delete-item-confirm\"\n >\n {t('viewPipeline.stage.card.delete.item.confirm')}\n \n setDeleteOpen(false)}\n data-testid=\"stage-card-delete-item-cancel\"\n >\n {t('viewPipeline.stage.card.delete.item.cancel')}\n \n
    \n
    \n
    \n \n \n \n \n \n \n {\n setDeleteOpen(true);\n }}\n aria-label={t(\n 'viewPipeline.stages.card.item.type.delete.ariaLabel',\n {\n name: destination?.type ?? '',\n },\n )}\n />\n \n \n \n );\n};\n\nexport default StageCardItem;\n\nStageCardItem.defaultProps = {\n destination: {},\n manageAsCode: false,\n pipelineGate: null,\n requiresAction: null,\n reordering: false,\n onEditItem: undefined,\n preventDeleteStage: false,\n isRegex: false,\n};\n","import StageCardItem from './StageCardItem';\n\nexport default StageCardItem;\n","import StageCard from './StageCard';\n\nexport default StageCard;\n","import React, { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport classnames from 'classnames';\nimport { Button, Card, Input, Text } from '@puppet/react-components';\nimport { ProjectPipelineStageV1 } from '@puppet/cd4pe-client-ts';\nimport ConditionalRender from '@components/ConditionalRender';\nimport { PIPELINE_STAGE_OPTIONS } from '../../../../utils';\nimport StageCardItem from '../StageCardItem';\nimport { EditHandlerType } from '../../Stages';\n\ninterface Props {\n stage: ProjectPipelineStageV1;\n manageAsCode?: boolean;\n onAddStageItem?: (stageNumber: number) => void;\n onAddStageBefore?: (stageNumber: number) => void;\n onAddStageAfter?: (stageNumber: number) => void;\n onRename?: (name: string) => void;\n onDeleteJob?: (id: string) => void;\n onDeleteStage?: (stageNum: number) => void;\n onReorderPipeline?: () => void;\n onDeletePlaceholder?: () => void;\n requiresAction?: 'DEPLOYMENT_WARNING';\n reordering?: boolean;\n reordered?: boolean;\n getOnEditItemHandler?: EditHandlerType;\n jobsNotToDelete?: (id: string) => string[];\n isRegex?: boolean;\n}\n\nconst StageCard = ({\n stage,\n manageAsCode = false,\n onAddStageItem = () => {},\n onAddStageBefore = () => {},\n onAddStageAfter = () => {},\n onRename = () => {},\n onDeleteJob = () => {},\n onDeleteStage = () => {},\n onReorderPipeline = () => {},\n onDeletePlaceholder = () => {},\n requiresAction,\n reordering = false,\n reordered = false,\n getOnEditItemHandler = () => undefined,\n jobsNotToDelete = () => [],\n isRegex = false,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const [name, setName] = useState(stage.stageName);\n const [renameCheck, setRenameCheck] = useState(false);\n\n useEffect(() => {\n if (name !== stage.stageName) {\n setName(stage.stageName);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [stage.stageName]);\n\n const displayRenameForm = () => (\n
    \n setName(value)}\n />\n {\n if (name !== '' && name !== undefined) {\n onRename(name);\n setName(name);\n setRenameCheck(false);\n }\n }}\n data-testid=\"rename-stage-save-button\"\n >\n {t('viewPipeline.stage.card.rename.stage.button.save')}\n \n {\n setRenameCheck(false);\n setName(stage.stageName);\n }}\n >\n {t('viewPipeline.stage.card.rename.stage.button.cancel')}\n \n
    \n );\n\n const options = [\n {\n id: PIPELINE_STAGE_OPTIONS.ADD_ITEM_TO_STAGE,\n label: t('viewPipeline.stage.dropdown.add.item.to.stage'),\n onClick: () => {\n onAddStageItem(stage.stageNum);\n },\n },\n {\n id: PIPELINE_STAGE_OPTIONS.ADD_STAGE_BEFORE,\n label: t('viewPipeline.stage.dropdown.add.stage.before'),\n onClick: () => onAddStageBefore(stage.stageNum),\n },\n {\n id: PIPELINE_STAGE_OPTIONS.ADD_STAGE_AFTER,\n label: t('viewPipeline.stage.dropdown.add.stage.after'),\n onClick: () => onAddStageAfter(stage.stageNum),\n },\n {\n id: PIPELINE_STAGE_OPTIONS.REORDER_PIPELINE,\n label: t('viewPipeline.stage.dropdown.reorder.pipeline'),\n onClick: () => {\n onReorderPipeline();\n },\n },\n {\n id: PIPELINE_STAGE_OPTIONS.DELETE_STAGE,\n label: t('viewPipeline.stage.dropdown.delete.stage'),\n onClick: () => {\n onDeleteStage(stage.stageNum!);\n },\n },\n {\n id: PIPELINE_STAGE_OPTIONS.RENAME_STAGE,\n label: t('viewPipeline.stage.dropdown.rename.stage'),\n onClick: () => {\n setRenameCheck(true);\n },\n },\n ];\n\n const isPlaceholder = stage.destinations.some(\n (destination) => 'placeholder' in destination,\n );\n\n return (\n \n \n \n
    \n \n {name ||\n t('viewPipeline.stage.card.name.stageNumber', {\n stageNumber: stage.stageNum,\n })}\n \n {reordered && (\n \n \n {t('viewPipeline.stage.card.name.reorderedStageNumber', {\n stageNumber: stage.stageNum,\n })}\n \n \n )}\n
    \n
    \n \n {displayRenameForm()}\n \n
    \n {!manageAsCode && !reordering && (\n \n )}\n {stage.destinations.map((destination, idx) => {\n const selectedDestination = {\n stageIndex: (stage.stageNum ?? 1) - 1, // -1 to get index\n destinationIndex: idx,\n };\n return (\n onDeleteJob(destination.id!)}\n reordering={reordering}\n onEditItem={getOnEditItemHandler(\n destination.type,\n selectedDestination,\n )}\n onEditPlaceholder={() => {\n onAddStageItem(stage.stageNum);\n }}\n preventDeleteStage={jobsNotToDelete(destination.id!).length > 0}\n isRegex={isRegex}\n onOpenEditImpactAnalysisDialog={getOnEditItemHandler(\n 'IMPACT_ANALYSIS',\n {\n stageIndex: (stage.stageNum ?? 1) - 1,\n destinationIndex: idx,\n },\n )}\n />\n );\n })}\n \n \n \n \n );\n};\n\nexport default StageCard;\n","import PromoteStage from './PromoteStage';\n\nexport default PromoteStage;\n","import React from 'react';\nimport {\n Checkbox,\n ButtonSelect,\n Button,\n Text,\n TooltipHoverArea,\n} from '@puppet/react-components';\nimport { Trans, useTranslation } from 'react-i18next';\nimport {\n ProjectPipelineStageV1,\n TriggerConditionV1,\n} from '@puppet/cd4pe-client-ts';\nimport ConditionalRender from '@components/ConditionalRender';\nimport { PIPELINE_STAGE_PROMOTE_OPTIONS } from '../../../../utils';\n\ninterface Props {\n stage: ProjectPipelineStageV1;\n manageAsCode?: boolean;\n onAutoPromote: (value: boolean) => void;\n onTriggerCondition: (value: TriggerConditionV1) => void;\n onPromote?: () => void;\n reordering?: boolean;\n enablePromote: boolean;\n}\n\nconst PromoteStage = ({\n stage,\n manageAsCode = false,\n onAutoPromote,\n onTriggerCondition,\n onPromote = () => {},\n reordering = false,\n enablePromote,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const options = [\n {\n value: PIPELINE_STAGE_PROMOTE_OPTIONS.ALL_SUCCESS,\n label: t('viewPipeline.stage.promote.dropdown.all.succeeded'),\n },\n {\n value: PIPELINE_STAGE_PROMOTE_OPTIONS.ALL_COMPLETE,\n label: t('viewPipeline.stage.promote.dropdown.all.completed'),\n },\n {\n value: PIPELINE_STAGE_PROMOTE_OPTIONS.ANY_SUCCESS,\n label: t('viewPipeline.stage.promote.dropdown.any.succeeded'),\n },\n {\n value: PIPELINE_STAGE_PROMOTE_OPTIONS.ANY_COMPLETE,\n label: t('viewPipeline.stage.promote.dropdown.any.completed'),\n },\n ];\n\n const autoPromoteLabel = options.find(\n (option) => option.value === stage.triggerCondition,\n )?.label;\n\n return (\n \n
    \n \"pipeline\"\n
    \n
    \n \n \n ]}\n >\n {stage.triggerOn\n ? t('viewPipeline.stage.promote.autoPromote', {\n promoteType: autoPromoteLabel || '',\n })\n : t('viewPipeline.stage.promote.autoPromote.disabled')}\n \n \n \n \n onAutoPromote(!stage?.triggerOn)}\n />\n {stage?.triggerOn ? (\n
    \n \n onTriggerCondition(value)\n }\n />\n
    \n ) : null}\n
    \n {!reordering && (\n \n onPromote()}\n disabled={!enablePromote}\n >\n {t('viewPipeline.stage.promote')}\n \n \n )}\n
    \n \n );\n};\n\nexport default PromoteStage;\n","import React, { useMemo, useState } from 'react';\nimport {\n ProjectPipelineStageV1,\n TriggerConditionV1,\n} from '@puppet/cd4pe-client-ts';\nimport ConditionalRender from '@components/ConditionalRender';\nimport StageCard from '@codeDelivery/components/ViewPipeline/components/Stages/components/StageCard';\nimport PromoteStage from '@codeDelivery/components/ViewPipeline/components/Stages/components/PromoteStage';\nimport { Button, Modal, Text } from '@puppet/react-components';\nimport { useUpsertPipelineStagesV1Optimistic } from '@services/cd4pe/pipelines';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useTranslation } from 'react-i18next';\nimport alerts from '@state/ui/alerts';\nimport { useAppDispatch } from '@hooks/redux';\n\ninterface Props {\n pipelineId: string;\n projectName: string;\n stages: Array;\n onClose: () => void;\n}\n\nconst compareStages = (a: ProjectPipelineStageV1, b: ProjectPipelineStageV1) =>\n a.stageName === b.stageName &&\n a.triggerOn === b.triggerOn &&\n a.triggerCondition === b.triggerCondition;\n\nconst compareStageArrays = (\n a: Array,\n b: Array,\n) => a.some((stage, i) => !compareStages(stage, b[i]));\n\nconst ReorderStagesDialog = ({\n pipelineId,\n projectName,\n stages,\n onClose,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const upsertPipelineStages = useUpsertPipelineStagesV1Optimistic();\n const appDispatch = useAppDispatch();\n const [updatedStages, setUpdatedStages] = useState(stages);\n\n const stagesAreEqual = useMemo(\n () => compareStageArrays(stages, updatedStages),\n [stages, updatedStages],\n );\n\n const updateAutoPromote = (triggerOn: boolean, index: number) => {\n const newStages = structuredClone(updatedStages);\n newStages[index].triggerOn = triggerOn;\n setUpdatedStages(newStages);\n };\n\n const updateTriggerCondition = (\n triggerCondition: TriggerConditionV1,\n index: number,\n ) => {\n const newStages = structuredClone(updatedStages);\n newStages[index].triggerCondition = triggerCondition;\n setUpdatedStages(newStages);\n };\n\n const reorderStages = (id: number, destination: number) => {\n const newStages = structuredClone(updatedStages);\n const stage = newStages[destination];\n newStages[destination] = newStages[id];\n newStages[id] = stage;\n newStages[destination].triggerOn = false;\n newStages[id].triggerOn = false;\n\n setUpdatedStages(newStages);\n };\n\n const saveStages = () => {\n upsertPipelineStages.mutate(\n {\n workspaceId,\n pipelineId,\n requestBody: {\n projectName,\n stages: updatedStages.map((stage, index) => ({\n ...stage,\n stageNum: index + 1,\n })),\n },\n },\n {\n onSuccess: () => {\n onClose();\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('viewPipeline.pipeline.alerts.reorder.stages.success'),\n }),\n );\n },\n onError: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Error',\n message: t('viewPipeline.pipeline.alerts.reorder.stages.error'),\n }),\n );\n },\n },\n );\n };\n\n return (\n \n
    \n \n {t('viewPipeline.dialog.reorderStages.title')}\n \n \n {t('viewPipeline.dialog.reorderStages.description')}\n \n {updatedStages.map((stage, index) => (\n
    \n
    \n \n
    \n {\n reorderStages(index, index - 1);\n }}\n disabled={index === 0}\n data-testid={`reorder-stage-up-${index}`}\n />\n {\n reorderStages(index, index + 1);\n }}\n disabled={index === stages.length - 1}\n data-testid={`reorder-stage-down-${index}`}\n />\n
    \n
    \n \n {\n updateAutoPromote(triggerOn, index);\n }}\n onTriggerCondition={(triggerCondition) => {\n updateTriggerCondition(triggerCondition, index);\n }}\n reordering\n enablePromote={false}\n />\n \n
    \n ))}\n \n \n {t('viewPipeline.dialog.reorderStages.button.save')}\n \n \n {t('viewPipeline.dialog.reorderStages.button.cancel')}\n \n \n
    \n
    \n );\n};\n\nexport default ReorderStagesDialog;\n","import ReorderStagesDialog from './ReorderStagesDialog';\n\nexport default ReorderStagesDialog;\n","import DefaultPipelineCard from './DefaultPipelineCard';\n\nexport default DefaultPipelineCard;\n","import React from 'react';\nimport { Heading, Card, Text, Button } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\n\ninterface Props {\n onCreateDefaultPipeline: () => void;\n loadingDefaultPipeline: boolean;\n onAddStage: () => void;\n}\n\nconst DefaultPipelineCard = ({\n onCreateDefaultPipeline,\n loadingDefaultPipeline,\n onAddStage,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n\n return (\n \n \n {t('viewPipeline.stages.default.card.header.default')}\n \n \n {t('viewPipeline.stages.default.card.description')}\n \n onCreateDefaultPipeline()}\n data-testid=\"add-default-pipeline-btn\"\n loading={loadingDefaultPipeline}\n >\n {t('viewPipeline.stages.default.card.button.add.pipeline')}\n \n\n \n {t('viewPipeline.stages.add.pipline.card.header')}\n \n \n {t('viewPipeline.stages.add.pipeline.card.description')}\n \n \n \n );\n};\n\nexport default DefaultPipelineCard;\n","/* eslint-disable no-nested-ternary */\nimport React, { useState } from 'react';\nimport {\n useDeletePipelineV1,\n useDeletePipelineStagesV1,\n} from '@services/cd4pe/pipelines';\nimport { Checkbox, Modal, Button, Icon, Text } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport { ProjectPipelineStageV1 } from '@puppet/cd4pe-client-ts';\nimport Cd4peError from '@components/Cd4peError';\n\ninterface Props {\n isOpen: boolean;\n onToggleOpen: (open: boolean) => void;\n codeProjectName: string;\n pipelineId: string;\n availablePipelines: { name?: string; pipelineId?: string }[] | undefined;\n stages: ProjectPipelineStageV1[] | undefined;\n onDeletePipeline?: () => void;\n onDeleteStages?: () => void;\n}\n\nconst DeletePipeline = ({\n isOpen,\n onToggleOpen,\n codeProjectName,\n pipelineId,\n availablePipelines = [],\n stages = [],\n onDeletePipeline = () => {},\n onDeleteStages = () => {},\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const appDispatch = useAppDispatch();\n const deletePipeline = useDeletePipelineV1();\n const deletePipelineStages = useDeletePipelineStagesV1();\n const [deleteCheck, setDeleteCheck] = useState(false);\n const onConfirm = () => {\n if (availablePipelines.length > 1) {\n deletePipeline.mutate(\n {\n workspaceId,\n pipelineId,\n projectName: codeProjectName,\n },\n {\n onSuccess: () => {\n onDeletePipeline();\n setDeleteCheck(false);\n onToggleOpen(!isOpen);\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('viewPipeline.pipeline.alerts.delete.success', {\n name:\n availablePipelines.find(\n (pipeline) => pipeline.pipelineId === pipelineId,\n )?.name ?? '',\n }),\n }),\n );\n },\n },\n );\n } else {\n deletePipelineStages.mutate(\n {\n workspaceId,\n pipelineId,\n projectName: codeProjectName,\n },\n {\n onSuccess: () => {\n onDeleteStages();\n setDeleteCheck(false);\n onToggleOpen(!isOpen);\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t(\n 'viewPipeline.pipeline.alerts.delete.stages.success',\n {\n name:\n availablePipelines.find(\n (pipeline) => pipeline.pipelineId === pipelineId,\n )?.name ?? '',\n },\n ),\n }),\n );\n },\n },\n );\n }\n };\n\n return (\n {\n setDeleteCheck(false);\n onToggleOpen(!isOpen);\n }}\n >\n {t('viewPipeline.delete.pipeline')}\n {availablePipelines.length <= 1 && stages.length > 0 ? (\n {t('viewPipeline.delete.last.pipeline.warning')}\n ) : availablePipelines.length <= 1 && stages?.length <= 0 ? (\n \n {t('viewPipeline.delete.last.pipeline.no.stages.warning', {\n name: availablePipelines.map((pipeline) => {\n return pipeline.pipelineId === pipelineId ? pipeline.name : '';\n }),\n })}\n \n ) : (\n
    \n \n \n {t('viewPipeline.delete.pipeline.confirmation.checkbox')}\n \n \n {t('viewPipeline.delete.pipeline.confirmation.name', {\n name:\n availablePipelines.find(\n (pipeline) => pipeline.pipelineId === pipelineId,\n )?.name ?? '',\n })}\n \n }\n value={deleteCheck}\n onChange={() => setDeleteCheck(!deleteCheck)}\n />\n
    \n )}\n \n \n {availablePipelines.length > 1 || stages.length > 0 ? (\n <>\n onConfirm()}\n loading={\n deletePipeline.isLoading || deletePipelineStages.isLoading\n }\n disabled={availablePipelines.length > 1 && !deleteCheck}\n >\n {t('viewPipeline.delete.pipeline.confirmation.button.confirm')}\n \n {\n setDeleteCheck(false);\n onToggleOpen(!isOpen);\n }}\n disabled={\n deletePipeline.isLoading || deletePipelineStages.isLoading\n }\n >\n {t('viewPipeline.delete.pipeline.confirmation.button.cancel')}\n \n \n ) : (\n {\n setDeleteCheck(false);\n onToggleOpen(!isOpen);\n }}\n >\n {t('viewPipeline.delete.pipeline.confirmation.button.done')}\n \n )}\n \n \n );\n};\n\nexport default DeletePipeline;\n","import DeletePipeline from './DeletePipeline';\n\nexport default DeletePipeline;\n","import React, { useState } from 'react';\nimport {\n Modal,\n Heading,\n Form,\n RadioButton,\n Alert,\n} from '@puppet/react-components';\nimport {\n CodeProjectDetailsV1,\n ProjectPipelineV1,\n ProjectTypeV1,\n} from '@puppet/cd4pe-client-ts';\nimport { useTranslation } from 'react-i18next';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport ConditionalRender from '@components/ConditionalRender';\nimport { useAppDispatch } from '@hooks/redux';\nimport useDebounce from '@hooks/useDebounce';\nimport alerts from '@state/ui/alerts';\nimport Cd4peError from '@components/Cd4peError';\nimport { useCreatePipelineV1 } from '@services/cd4pe/pipelines';\nimport { useListBranchesV1 } from '@services/cd4pe/vcs';\nimport { getBranchField } from '../../formHelpers';\n\ninterface Props {\n codeProject: CodeProjectDetailsV1;\n isOpen: boolean;\n onClose: (open: boolean) => void;\n onAddPipeline: (name: string) => void;\n projectType: ProjectTypeV1;\n}\n\ntype BranchFormValues = {\n branch: string;\n};\n\nexport type RegexFormValues = {\n regexbranch: string;\n};\n\nconst AddPipelineDialog = ({\n isOpen,\n onClose,\n codeProject,\n projectType,\n onAddPipeline,\n}: Props) => {\n const [branchType, setBranchType] = useState<'single' | 'regex'>('single');\n const [formValues, setFormValues] = React.useState({\n branch: '',\n });\n\n const regexValue = 'feature_.*';\n\n const [regexValues, setRegexValues] = React.useState({\n regexbranch: regexValue,\n });\n const [regexWarning, setRegexWarning] = useState(false);\n\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const appDispatch = useAppDispatch();\n\n const branches = useListBranchesV1(\n {\n workspaceId,\n provider: codeProject.srcRepoProvider,\n name: codeProject.srcRepoName,\n project: codeProject.srcRepoId,\n organization: codeProject.srcRepoOwner,\n prefix: useDebounce(formValues.branch),\n },\n {\n keepPreviousData: true,\n },\n );\n\n const addPipeline = useCreatePipelineV1();\n\n const onSuccessHandler = (newPipeline: ProjectPipelineV1) => {\n onAddPipeline(newPipeline.id ?? '');\n onClose(!isOpen);\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('viewPipeline.dialog.alerts.add.pipeline.success', {\n name: newPipeline.name,\n }),\n }),\n );\n };\n\n const onAddPipelineBranch = () => {\n addPipeline.mutate(\n {\n workspaceId,\n requestBody: {\n name: formValues.branch,\n sources: [\n {\n autoBuildTriggers: ['COMMIT'],\n trigger: 'SOURCE_REPOSITORY',\n branch: formValues.branch,\n containerName: formValues.branch,\n },\n ],\n projectName: codeProject.name,\n projectType,\n },\n },\n {\n onSuccess: (newPipeline) => {\n onSuccessHandler(newPipeline);\n },\n },\n );\n };\n\n const onAddPipelineRegex = () => {\n addPipeline.mutate(\n {\n workspaceId,\n requestBody: {\n name: 'regex',\n sources: [\n {\n autoBuildTriggers: ['COMMIT'],\n trigger: 'SOURCE_REPOSITORY',\n regex: regexValues.regexbranch,\n containerName: 'regex',\n },\n ],\n projectName: codeProject.name,\n projectType,\n },\n },\n {\n onSuccess: (newPipeline) => onSuccessHandler(newPipeline),\n },\n );\n };\n\n const regexPipelineExists = codeProject.pipelines?.some(\n (pipeline) => pipeline.name === 'regex',\n );\n\n const formProps = {\n submittable: true,\n cancellable: true,\n onCancel: () => onClose(!isOpen),\n submitDisabled: branchType === 'single' && !formValues.branch,\n submitLabel: t('viewPipeline.dialog.add.pipeline.button'),\n cancelLabel: t('viewPipeline.dialog.cancel.add.pipeline.button'),\n };\n\n return (\n onClose(!isOpen)}>\n {t('viewPipeline.dialog.header.addPipeline')}\n
    \n \n
    \n {\n setBranchType('single');\n }}\n />\n {\n setBranchType('regex');\n }}\n />\n
    \n
    \n \n \n setFormValues(updatedFormValues)}\n onSubmit={() => onAddPipelineBranch()}\n submitting={addPipeline.isLoading}\n {...formProps}\n >\n {getBranchField({\n query: branches,\n fieldValue: formValues.branch,\n 'data-testid': 'add-pipeline-branch-select',\n t,\n })}\n \n \n \n {\n setRegexValues(newBranch);\n setRegexWarning(newBranch.regexbranch !== regexValue);\n }}\n onSubmit={() => onAddPipelineRegex()}\n {...formProps}\n >\n
    \n \n {regexWarning && (\n \n {t('viewPipeline.dialog.alerts.add.pipeline.regex')}\n \n )}\n
    \n \n
    \n
    \n \n \n );\n};\n\nexport default AddPipelineDialog;\n","import DeleteStage from './DeleteStage';\n\nexport default DeleteStage;\n","import React, { useState } from 'react';\nimport {\n useDeletePipelineStagesV1,\n useUpsertPipelineStagesV1,\n} from '@services/cd4pe/pipelines';\nimport { Checkbox, Modal, Button, Icon, Text } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\nimport { deleteStage } from '@codeDelivery/components/ViewPipeline/utils';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { ProjectPipelineStageV1 } from '@utils/api/cd4pe';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport Cd4peError from '@components/Cd4peError';\n\ninterface Props {\n stageNumber: number;\n name: string;\n pipelineId: string;\n projectName: string;\n stages: ProjectPipelineStageV1[];\n onClose: () => void;\n}\n\nconst DeleteStage = ({\n stageNumber,\n name,\n pipelineId,\n projectName,\n stages,\n onClose,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const appDispatch = useAppDispatch();\n const [deleteCheck, setDeleteCheck] = useState(false);\n\n const upsertPipelineStages = useUpsertPipelineStagesV1();\n const deletePipelineStages = useDeletePipelineStagesV1();\n\n const onSuccessHandler = () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('viewPipeline.dialog.delete.stage.alerts.delete.success', {\n name:\n stages.find((stage) => stage.stageNum === stageNumber)?.stageName ??\n '',\n }),\n }),\n );\n setDeleteCheck(false);\n onClose();\n };\n\n const onDeleteStageHandler = async () => {\n if (stageNumber === undefined) {\n return;\n }\n\n const updatedStages = deleteStage(stageNumber, stages);\n\n if (updatedStages.length === 0) {\n deletePipelineStages.mutate(\n {\n workspaceId,\n pipelineId,\n projectName,\n },\n {\n onSuccess: onSuccessHandler,\n },\n );\n } else {\n upsertPipelineStages.mutate(\n {\n workspaceId,\n pipelineId,\n requestBody: {\n projectName,\n stages: updatedStages,\n },\n },\n {\n onSuccess: onSuccessHandler,\n },\n );\n }\n };\n\n return (\n {\n setDeleteCheck(false);\n onClose();\n }}\n >\n {t('viewPipeline.dialog.delete.stage')}\n
    \n \n \n {t('viewPipeline.dialog.delete.stage.warning')}\n \n \n {t('viewPipeline.dialog.delete.stage.confirmation.name', {\n name: name || stageNumber,\n })}\n \n }\n value={deleteCheck}\n onChange={() => setDeleteCheck(!deleteCheck)}\n data-testid=\"delete-stage-checkbox\"\n />\n
    \n \n \n \n \n {t('viewPipeline.dialog.delete.stage.confirmation.button.confirm')}\n \n {\n setDeleteCheck(false);\n onClose();\n }}\n data-testid=\"delete-stage-cancel-button\"\n >\n {t('viewPipeline.dialog.delete.stage.confirmation.button.cancel')}\n \n \n \n );\n};\n\nexport default DeleteStage;\n","import React from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport { Form, Modal, Alert, Link as PdsLink } from '@puppet/react-components';\nimport {\n CodeProjectDetailsV1,\n TriggerPipelineRequestV1,\n VcsCommitV1,\n} from '@utils/api/cd4pe';\nimport {\n UseListCommitsV1Result,\n useListBranchesV1,\n useListCommitsV1,\n} from '@services/cd4pe/vcs';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport Cd4peError from '@components/Cd4peError';\nimport {\n useGetPipelineV1,\n useTriggerPipelineV1,\n} from '@services/cd4pe/pipelines';\nimport useVcsLinks from '@hooks/useVcsLinks';\nimport useDebounce from '@hooks/useDebounce';\nimport {\n formFieldValidator,\n getBranchField,\n getCommitField,\n getNoResultsOption,\n SelectOptions,\n} from '../../formHelpers';\n\nexport interface PromoteStageCommits {\n sha: string;\n commitMessage: string | undefined;\n branch: string;\n pullRequestId: string | undefined;\n}\n\ninterface Props {\n codeProject: CodeProjectDetailsV1;\n pipeline?: string;\n branch?: string;\n stageCommits?: PromoteStageCommits[];\n stageNumber?: number;\n stageName?: string;\n onClose: () => void;\n}\n\ntype FormValues = {\n pipeline: string;\n branch: string;\n sha: string;\n pullRequest: boolean;\n};\n\nconst buildRequest = ({\n values,\n workspaceId,\n projectName,\n stageNumber,\n stageCommits,\n commits,\n}: {\n values: FormValues;\n workspaceId: string;\n projectName: string;\n stageNumber: number;\n stageCommits: PromoteStageCommits[];\n commits: UseListCommitsV1Result;\n}) => {\n const findCommit = (commit: PromoteStageCommits | VcsCommitV1) =>\n commit.sha === values.sha;\n\n const requestBody: TriggerPipelineRequestV1 = {\n workspaceId,\n projectName,\n sha: values.sha,\n // The branch is only required for regex pipelines, for non-regex pipelines, the backend\n // will infer the branch from the pipeline name. For non-regex pipelines, `values.branch`\n // will be undefined, which results in the field not being passed to the request.\n branch: values.branch,\n stageNumber,\n };\n\n const stageCommit = stageCommits.find(findCommit);\n const pullRequestId = values.pullRequest\n ? `cdpe_pr_flag_${new Date().getTime()}`\n : stageCommit?.pullRequestId;\n const commitMessage =\n stageCommit?.commitMessage ||\n commits.data?.vcsCommits?.find(findCommit)?.commitMessage;\n\n if (pullRequestId !== undefined) {\n requestBody.pullRequestId = pullRequestId;\n }\n\n if (commitMessage !== undefined) {\n requestBody.commitMessage = commitMessage;\n }\n\n return requestBody;\n};\n\nconst TriggerPipelineDialog = ({\n codeProject,\n pipeline = '',\n branch = '',\n stageCommits = [],\n stageNumber = 1,\n stageName,\n onClose,\n}: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const isPromoteStage = stageNumber > 1;\n const { getBranchLink, getCommitLink } = useVcsLinks();\n const [values, setValues] = React.useState({\n pipeline,\n branch,\n sha: isPromoteStage ? stageCommits[0]?.sha ?? '' : '',\n pullRequest: false,\n });\n\n const isRegexPipeline = values.pipeline === 'regex';\n\n let pipelineOptions: SelectOptions = codeProject?.pipelines\n ?.map((b) => ({\n value: b.name ?? '',\n label: b.name ?? '',\n }))\n .filter((p) =>\n p.value.toLowerCase().includes(values.pipeline.toLowerCase()),\n );\n\n if (pipelineOptions.length === 0) {\n pipelineOptions = getNoResultsOption(t);\n }\n\n const pipelineId =\n codeProject.pipelines?.find((p) => p.name === values.pipeline)\n ?.pipelineId ?? '';\n\n const pipelineResponse = useGetPipelineV1(\n {\n workspaceId,\n pipelineId,\n projectName: codeProject.name,\n },\n {\n enabled: pipelineId !== '',\n },\n );\n\n const triggerPipelineV1 = useTriggerPipelineV1();\n\n const branches = useListBranchesV1(\n {\n workspaceId,\n provider: codeProject.srcRepoProvider,\n name: codeProject.srcRepoName,\n project: codeProject.srcRepoId,\n organization: codeProject.srcRepoOwner,\n prefix: useDebounce(values.branch),\n },\n {\n enabled: isRegexPipeline,\n keepPreviousData: true,\n },\n );\n\n const branchMatch = branches?.data?.vcsBranches?.some(\n (b) => b.name === values.branch,\n );\n\n const enableCommit = isRegexPipeline ? branchMatch : pipelineId !== '';\n\n const commits = useListCommitsV1(\n {\n workspaceId,\n provider: codeProject.srcRepoProvider,\n branch: isRegexPipeline ? values.branch : values.pipeline,\n name: codeProject.srcRepoName,\n project: codeProject.srcRepoId,\n organization: codeProject.srcRepoOwner,\n },\n {\n enabled: !!enableCommit,\n },\n );\n\n const onChange = (keyChanged: keyof FormValues, newValues: FormValues) => {\n switch (keyChanged) {\n case 'pipeline':\n setValues({\n ...newValues,\n branch: '',\n sha: '',\n });\n break;\n case 'branch':\n setValues({\n ...newValues,\n sha: '',\n });\n break;\n default:\n setValues(newValues);\n }\n };\n\n const onSubmit = (newValues: FormValues) => {\n if (!pipelineId || pipelineResponse.isError) {\n return;\n }\n\n const requestBody: TriggerPipelineRequestV1 = buildRequest({\n values: newValues,\n workspaceId,\n projectName: codeProject.name,\n stageNumber,\n stageCommits,\n commits,\n });\n\n triggerPipelineV1.mutate({\n pipelineId,\n requestBody,\n });\n };\n\n return (\n \n \n {isPromoteStage\n ? t('viewPipeline.dialog.triggerPipeline.promote.title', {\n stageNumber: stageName || stageNumber,\n })\n : t('viewPipeline.dialog.triggerPipeline.title')}\n \n {isPromoteStage && (\n
    \n ,\n ,\n ]}\n values={{\n stageName: stageName || stageNumber,\n branch: isRegexPipeline ? values.branch : values.pipeline,\n sha: values.sha,\n }}\n />\n
    \n )}\n \n \n {isRegexPipeline &&\n getBranchField({\n query: branches,\n fieldValue: values.branch,\n t,\n disabled: isPromoteStage || triggerPipelineV1.isSuccess,\n })}\n {(isPromoteStage || enableCommit) &&\n getCommitField({\n query: commits,\n fieldValue: values.sha,\n branch: isRegexPipeline ? values.branch : values.pipeline,\n codeProject,\n name: 'sha',\n t,\n disabled: isPromoteStage || triggerPipelineV1.isSuccess,\n })}\n {!isPromoteStage && (\n \n )}\n \n {triggerPipelineV1.isSuccess && (\n \n {isPromoteStage\n ? t('viewPipeline.dialog.triggerPipeline.promote.alert.successful')\n : t('viewPipeline.dialog.triggerPipeline.alert.successful')}\n \n )}\n \n \n \n \n
    \n );\n};\n\nexport default TriggerPipelineDialog;\n","import TriggerPipelineDialog from './TriggerPipelineDialog';\n\nexport default TriggerPipelineDialog;\nexport * from './TriggerPipelineDialog';\n","import React from 'react';\nimport { Modal } from '@puppet/react-components';\nimport { useAppDispatch } from '@hooks/redux';\nimport {\n CodeProjectDetailsV1,\n ProjectPipelineStageV1,\n ProjectTypeV1,\n UpsertPipelineStagesRequestV1,\n} from '@puppet/cd4pe-client-ts';\nimport alerts from '@state/ui/alerts';\nimport { useTranslation } from 'react-i18next';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport Cd4peError from '@components/Cd4peError';\nimport { useUpsertPipelineStagesV1 } from '@services/cd4pe/pipelines';\nimport DeploymentForm, {\n Deployment,\n DeploymentFormValues,\n} from '../../../DeploymentForm';\nimport { DestinationSelector } from '../../Stages';\n\ninterface EditDeploymentDialogProps {\n codeProject: CodeProjectDetailsV1;\n onClose: () => void;\n selectedDestination: DestinationSelector;\n stages: Array;\n pipelineId: string;\n branch: string;\n projectType: ProjectTypeV1;\n}\n\nconst DEFAULT_TIMEOUT_MINUTES = 60;\nconst toMilliseconds = (minutes: number) => minutes * 60000;\nconst toMinutes = (milliseconds: number) => milliseconds / 60000;\n\nconst EditDeploymentDialog = ({\n codeProject,\n onClose,\n selectedDestination,\n stages,\n pipelineId,\n branch,\n projectType,\n}: EditDeploymentDialogProps) => {\n const upsertDeployment = useUpsertPipelineStagesV1();\n const appDispatch = useAppDispatch();\n const workspaceId = useWorkspaceDomain();\n const { t } = useTranslation('codeDelivery');\n\n const stageData = stages[selectedDestination.stageIndex];\n const destinationData =\n stageData.destinations?.[selectedDestination.destinationIndex];\n\n if (destinationData === undefined) {\n throw new Error('destinationData is undefined');\n }\n\n const buildUpdateDeploymentRequest = (\n deployment: Deployment,\n ): UpsertPipelineStagesRequestV1 => {\n const updatedStages = [...stages];\n\n const targetStage = stages[selectedDestination.stageIndex];\n\n targetStage.destinations[selectedDestination.destinationIndex] = {\n ...destinationData,\n deploymentTemplate: {\n ...destinationData.deploymentTemplate,\n deploymentPolicy: {\n ...deployment.deploymentPolicy,\n },\n deploymentTarget: {\n ...(destinationData.deploymentTemplate?.deploymentTarget ?? {\n type: 'NODE_GROUP',\n }),\n nodeGroupId: deployment.nodeGroup?.id ?? '',\n environmentPrefix: deployment.prefix,\n },\n maxRuntime: deployment.timeout\n ? toMilliseconds(deployment.timeout)\n : toMilliseconds(DEFAULT_TIMEOUT_MINUTES),\n puppetEnterpriseCredentialsId: {\n name: deployment.puppetEnterpriseServer?.name ?? '',\n domain: workspaceId,\n },\n displayName: t('viewPipeline.dialog.addStage.deployment.displayName', {\n nodeGroupName: deployment.nodeGroup?.name,\n peName: deployment.puppetEnterpriseServer?.name,\n }),\n },\n };\n updatedStages[selectedDestination.stageIndex] = targetStage;\n\n return { stages: updatedStages, projectName: codeProject.name };\n };\n\n const updateDeploymentStage = (deployment: Deployment) => {\n upsertDeployment.mutate(\n {\n requestBody: buildUpdateDeploymentRequest(deployment),\n workspaceId,\n pipelineId,\n },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t('viewPipeline.dialog.manualDeployment.alert.updated'),\n }),\n );\n onClose();\n },\n },\n );\n };\n\n const parametersMap: { [key: string]: unknown } = {};\n destinationData?.deploymentTemplate?.deploymentPolicy?.parameters?.forEach(\n (param) => {\n parametersMap[param?.name ?? 'default'] = param.value;\n },\n );\n const policyName =\n destinationData?.deploymentTemplate?.deploymentPolicy?.name ?? 'default';\n const nodeGroupId =\n destinationData?.deploymentTemplate?.deploymentTarget?.nodeGroupId || '';\n const peServerCredentialsId =\n destinationData?.deploymentTemplate?.puppetEnterpriseCredentialsId?.name ||\n '';\n const timeout = toMinutes(\n destinationData?.deploymentTemplate?.maxRuntime ?? 3600000,\n );\n const prefix =\n destinationData.deploymentTemplate?.deploymentTarget?.environmentPrefix ||\n '';\n const controlRepo = destinationData.deploymentTemplate?.controlRepoName || '';\n const controlRepoBranch =\n destinationData.deploymentTemplate?.controlRepoBaseFeatureBranch || '';\n\n const initialFormValues: DeploymentFormValues = {\n branch,\n commit: '',\n puppetEnterpriseServer: peServerCredentialsId,\n nodeGroup: '',\n nodeGroupId,\n deploymentPolicy: '',\n deploymentPolicyId: policyName || '',\n deploymentPolicyParameters: {\n [policyName]: parametersMap,\n },\n timeout,\n description: '',\n prefix,\n controlRepo,\n controlRepoBranch,\n };\n\n return (\n \n {t('viewPipeline.form.deployment.edit.title')}\n \n \n \n );\n};\n\nexport default EditDeploymentDialog;\n","import EditDeploymentDialog from './EditDeploymentDialog';\n\nexport default EditDeploymentDialog;\n","import React, { useEffect, useState } from 'react';\nimport {\n Modal,\n Heading,\n RadioButton,\n Button,\n Text,\n Form,\n Checkbox,\n ButtonSelect,\n Code,\n Link as PdsLink,\n Loading,\n Alert,\n} from '@puppet/react-components';\nimport { Trans, useTranslation } from 'react-i18next';\nimport docsLinks from '@codeDelivery/utils/docsLinks';\nimport {\n useGetPipelineV1,\n useUpdatePipelineTriggersV1,\n useSetIsBuildPullRequestAllowedV1,\n useGetIsBuildPullRequestAllowedV1,\n} from '@services/cd4pe/pipelines';\nimport {\n useCreatePipelinesFromCodeV1,\n useDisablePipelinesAsCodeV1,\n usePreviewPipelineAsCodeV1,\n useValidatePipelinesAsCodeV1,\n} from '@services/cd4pe/pipelinesAsCode';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport {\n AutoBuildTriggerV1,\n CodeProjectDetailsV1,\n ProjectTypeV1,\n} from '@puppet/cd4pe-client-ts';\nimport { useAppDispatch } from '@hooks/redux';\nimport alerts from '@state/ui/alerts';\nimport ConditionalRender from '@components/ConditionalRender';\nimport Cd4peError from '@components/Cd4peError';\nimport { useListBranchesV1 } from '@services/cd4pe/vcs';\nimport useDebounce from '@hooks/useDebounce';\nimport { RegexFormValues } from '../AddPipelineDialog';\nimport { getProjectTypeString } from '../../utils';\nimport { getBranchField } from '../../formHelpers';\n\ninterface Props {\n onClose: (open: boolean) => void;\n pipelineId: string;\n setPipelineId: (id: string) => void;\n codeProject: CodeProjectDetailsV1;\n projectType: ProjectTypeV1;\n}\n\ntype FormValues = {\n branch: string;\n};\n\nconst getBuildTriggers = ({\n commitTrigger,\n prTrigger,\n}: {\n commitTrigger: boolean;\n prTrigger: boolean;\n}) => {\n const pipelineTriggers: AutoBuildTriggerV1[] = [];\n if (commitTrigger) {\n pipelineTriggers.push('COMMIT');\n }\n\n if (prTrigger) {\n pipelineTriggers.push('PULL_REQUEST');\n }\n\n return pipelineTriggers;\n};\n\nconst regexValue = 'feature_.*';\n\nconst ManagePipelinesDialog = ({\n onClose,\n pipelineId,\n setPipelineId,\n codeProject,\n projectType,\n}: Props) => {\n const [allowPRForkCheck, setAllowPRForkCheck] = useState(false);\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const appDispatch = useAppDispatch();\n\n const [formValues, setFormValues] = React.useState({\n branch: codeProject.pacBranch ?? '',\n });\n\n const branches = useListBranchesV1(\n {\n workspaceId,\n provider: codeProject.srcRepoProvider,\n name: codeProject.srcRepoName,\n project: codeProject.srcRepoId,\n organization: codeProject.srcRepoOwner,\n prefix: useDebounce(formValues.branch),\n },\n {\n keepPreviousData: true,\n },\n );\n\n const pipelineOptions =\n codeProject.pipelines?.map((pipeline) => ({\n value: pipeline.pipelineId,\n label: pipeline.name,\n })) ?? [];\n\n const selectedPipeline = pipelineOptions.find(\n ({ value }) => value === pipelineId,\n );\n\n const [regexValues, setRegexValues] = React.useState({\n regexbranch: regexValue,\n });\n\n const pipeline = useGetPipelineV1(\n {\n workspaceId,\n pipelineId,\n projectName: codeProject.name,\n },\n {\n enabled: pipelineId !== '',\n },\n );\n\n useEffect(() => {\n if (pipeline.data && pipeline.data?.name === 'regex') {\n const regex = pipeline.data?.sources?.[0]?.regex;\n if (regex) {\n setRegexValues({ regexbranch: regex });\n }\n }\n }, [pipeline.data, pipelineId]);\n\n const isBuildPullRequest = useGetIsBuildPullRequestAllowedV1({\n workspaceId,\n pipelineId,\n projectName: codeProject.name,\n });\n\n const pipelinesAsCodeObject = usePreviewPipelineAsCodeV1(\n {\n workspaceId,\n pipelineId,\n projectName: codeProject.name,\n },\n {\n enabled: pipelineId !== '',\n },\n );\n const managementType = codeProject.pacEnabled ? 'code' : 'ui';\n const [commitTrigger, setCommitTrigger] = useState(false);\n const [prTrigger, setPrTrigger] = useState(false);\n const [validYaml, setValidYaml] = useState(false);\n const [pipelineManagementType, setPipelineManagementType] = useState<\n 'ui' | 'code'\n >(managementType);\n\n useEffect(() => {\n if (codeProject.pacEnabled) {\n setPipelineManagementType('code');\n } else {\n setPipelineManagementType('ui');\n }\n }, [codeProject.pacEnabled]);\n\n useEffect(() => {\n setCommitTrigger(\n pipeline?.data?.sources?.some((src) =>\n src.autoBuildTriggers?.includes('COMMIT'),\n ) ?? false,\n );\n setPrTrigger(\n pipeline.data?.sources?.some((src) =>\n src.autoBuildTriggers?.includes('PULL_REQUEST'),\n ) ?? false,\n );\n }, [pipeline?.data?.sources]);\n\n useEffect(() => {\n if (isBuildPullRequest.data?.isBuildPullRequestAllowed !== undefined) {\n setAllowPRForkCheck(isBuildPullRequest.data?.isBuildPullRequestAllowed);\n }\n }, [isBuildPullRequest.data]);\n\n const pipelineTriggers = getBuildTriggers({ commitTrigger, prTrigger });\n const disablePipelineAsCode = useDisablePipelinesAsCodeV1();\n const updatePipelineTriggers = useUpdatePipelineTriggersV1();\n const setBuildPullRequestAllowed = useSetIsBuildPullRequestAllowedV1();\n\n useEffect(() => {\n if (\n disablePipelineAsCode.isSuccess &&\n updatePipelineTriggers.isSuccess &&\n setBuildPullRequestAllowed.isSuccess\n ) {\n onClose(false);\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t(\n 'viewPipeline.dialog.managePipelines.alerts.savePipeline.success',\n ),\n }),\n );\n }\n }, [\n disablePipelineAsCode.isSuccess,\n updatePipelineTriggers.isSuccess,\n setBuildPullRequestAllowed.isSuccess,\n onClose,\n appDispatch,\n t,\n ]);\n\n const onSavePipelinesAsUIHandler = () => {\n setBuildPullRequestAllowed.mutate({\n workspaceId,\n pipelineId,\n requestBody: {\n projectName: codeProject.name,\n isBuildPullRequestAllowed: allowPRForkCheck,\n },\n });\n\n const isRegexPipeline = selectedPipeline?.label === 'regex';\n\n updatePipelineTriggers.mutate({\n workspaceId,\n pipelineId,\n requestBody: {\n triggers: pipelineTriggers,\n projectName: codeProject.name,\n [isRegexPipeline ? 'regex' : 'branch']: isRegexPipeline\n ? regexValues.regexbranch\n : selectedPipeline?.label,\n },\n });\n\n disablePipelineAsCode.mutate({\n workspaceId,\n pipelineId,\n projectName: codeProject.name,\n });\n };\n\n const createPipelineAsCode = useCreatePipelinesFromCodeV1();\n const onSavePipelinesAsCodeHandler = () => {\n if (formValues.branch) {\n createPipelineAsCode.mutate(\n {\n workspaceId,\n pipelineId,\n branch: formValues.branch,\n projectName: codeProject.name,\n },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t(\n 'viewPipeline.dialog.managePipelines.as.code.save.success',\n {\n branch: formValues.branch,\n },\n ),\n }),\n );\n },\n },\n );\n }\n };\n\n const validatePipelinesAsCode = useValidatePipelinesAsCodeV1();\n const validatePipelinesAsCodeAsYaml = () => {\n validatePipelinesAsCode.mutate(\n {\n pipelineId,\n requestBody: {\n workspaceId,\n projectName: codeProject.name,\n pipelinesAsCodeYaml: pipelinesAsCodeObject.data?.pipelineAsCode!!,\n },\n },\n {\n onSuccess: () => {\n setValidYaml(!validYaml);\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t(\n 'viewPipeline.dialog.managePipelines.validate.yaml.success.alert',\n ),\n }),\n );\n },\n },\n );\n };\n\n const getPipelineAsCodeWarning = () => {\n return (\n \n
    \n {t('viewPipeline.dialog.managePipelines.validate.yaml.error')}\n
    \n \n {createPipelineAsCode?.error?.body?.message}\n \n
    \n );\n };\n\n const isSavingPipelineAsUI =\n disablePipelineAsCode.isLoading ||\n updatePipelineTriggers.isLoading ||\n setBuildPullRequestAllowed.isLoading;\n\n return (\n onClose(false)}\n className=\"manage-pipelines-dialog\"\n >\n \n {t('viewPipeline.dialog.managePipelines.header')}\n \n
    \n {\n setPipelineManagementType('ui');\n }}\n />\n {\n setPipelineManagementType('code');\n }}\n />\n
    \n
    \n {pipelineManagementType === 'ui' && (\n <>\n \n \n \n \n
    \n \n {t(\n 'viewPipeline.dialog.managePipelines.global.settings.header',\n )}\n \n \n {t(\n 'viewPipeline.dialog.managePipelines.global.settings.description',\n )}\n \n
    \n setAllowPRForkCheck(!allowPRForkCheck)}\n />\n
    \n
    \n
    \n
    \n \n {t(\n 'viewPipeline.dialog.managePipelines.specific.settings.header',\n )}\n \n {\n setPipelineId(value);\n }}\n />\n
    \n \n {t('viewPipeline.dialog.managePipelines.triggers.header')}\n \n setCommitTrigger(val)}\n />\n {\n setPrTrigger(val);\n }}\n />\n
    \n {selectedPipeline?.label === 'regex' && (\n <>\n \n setRegexValues(newBranch)\n }\n >\n \n \n {regexValues.regexbranch !== regexValue && (\n \n {t('viewPipeline.dialog.managePipelines.regex')}\n \n )}\n
    \n \n )}\n
    \n \n {t(\n 'viewPipeline.dialog.managePipelines.automation.webhook.header',\n )}\n \n \n {t(\n 'viewPipeline.dialog.managePipelines.webhook.description.webhook.added',\n )}\n \n \n {t(\n 'viewPipeline.dialog.managePipelines.webhook.description.webhook.url',\n )}\n \n \n {t(\n 'viewPipeline.dialog.managePipelines.webhook.description.scopes',\n )}\n \n \n {codeProject.webhookUrl}\n \n
    \n \n \n {t('viewPipeline.dialog.managePipelines.ui.save.warning')}\n \n \n \n \n {t('viewPipeline.dialog.managePipelines.save.settings.button')}\n \n {\n onClose(false);\n }}\n >\n {t('viewPipeline.dialog.managePipelines.cancel.button')}\n \n \n \n \n )}\n {pipelineManagementType === 'code' && (\n <>\n \n \n \n \n
    \n
    \n \n \n ,\n ,\n ]}\n />\n \n \n \n \n {t('viewPipeline.dialog.managePipelines.as.code.header', {\n projectType: getProjectTypeString(projectType),\n })}\n \n \n {t('viewPipeline.dialog.managePipelines.as.code.step.one')}\n \n \n {t('viewPipeline.dialog.managePipelines.as.code.step.two')}\n \n \n {t(\n 'viewPipeline.dialog.managePipelines.as.code.step.three',\n {\n projectType: getProjectTypeString(projectType),\n },\n )}\n \n \n
    \n \n \n \n {t('viewPipeline.dialog.managePipelines.as.code.link')}\n \n \n \n
    \n
    \n\n \n {t('viewPipeline.dialog.managePipelines.as.code.select.branch')}\n \n \n {t(\n 'viewPipeline.dialog.managePipelines.as.code.select.branch.description',\n )}\n \n {\n setFormValues(newBranch);\n }}\n onSubmit={() => onSavePipelinesAsCodeHandler()}\n onCancel={() => onClose(false)}\n submittable\n cancellable\n cancelType=\"secondary\"\n submitLabel={t(\n 'viewPipeline.dialog.managePipelines.save.settings.button',\n )}\n submitting={createPipelineAsCode.isLoading}\n submitDisabled={\n !formValues.branch || createPipelineAsCode.isLoading\n }\n >\n {getBranchField({\n query: branches,\n fieldValue: formValues.branch,\n t,\n className: 'pipelines-as-code-branch-select',\n label: '',\n })}\n
    \n {(createPipelineAsCode.error?.status === 400 ||\n createPipelineAsCode.error?.status === 404) &&\n codeProject.pacEnabled ? (\n getPipelineAsCodeWarning()\n ) : (\n \n )}\n
    \n \n \n {t('viewPipeline.dialog.managePipelines.as.code.yaml.header', {\n projectType: getProjectTypeString(projectType),\n })}\n \n \n {t(\n 'viewPipeline.dialog.managePipelines.as.code.yaml.description',\n )}\n \n \n {pipelinesAsCodeObject.data?.pipelineAsCode}\n \n \n \n {t('viewPipeline.dialog.managePipelines.as.code.save.warning')}\n \n \n \n \n \n {t(\n 'viewPipeline.dialog.managePipelines.validate.yaml.button',\n )}\n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default ManagePipelinesDialog;\n","import ManagePipelinesDialog from './ManagePipelinesDialog';\n\nexport default ManagePipelinesDialog;\n","import React, { useEffect, useState } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport {\n Button,\n ButtonSelect,\n Heading,\n Loading,\n Text,\n} from '@puppet/react-components';\nimport {\n CodeProjectDetailsV1,\n PipelineDestinationTypeV1,\n ProjectPipelineStageV1,\n ProjectTypeV1,\n TriggerConditionV1,\n} from '@puppet/cd4pe-client-ts';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport {\n useCreateDefaultPipelineV1,\n useDeletePipelineStagesV1,\n useGetPipelineV1,\n useUpsertPipelineStagesV1Optimistic,\n} from '@services/cd4pe/pipelines';\nimport ConditionalRender from '@components/ConditionalRender';\nimport Cd4peError from '@components/Cd4peError';\nimport AddStageDialog from '@codeDelivery/components/ViewPipeline/components/AddStageDialog';\nimport EditImpactAnalysisDialog from './components/EditImpactAnalysisDialog';\nimport PipelinesAsCodePrompt from './components/PipelinesAsCodePrompt';\nimport ReorderStagesDialog from './components/ReorderStagesDialog';\nimport DefaultPipelineCard from './components/DefaultPipelineCard';\nimport StageCard from './components/StageCard';\nimport PromoteStage from './components/PromoteStage';\nimport DeletePipeline from './components/DeletePipeline';\nimport AddPipelineDialog from '../AddPipelineDialog/AddPipelineDialog';\nimport {\n autoPromoteConditionStage,\n autoPromoteStage,\n deleteStageJob,\n deleteStagePipelineGate,\n impactedJobs,\n PIPELINES_REFETCH_INTERVAL,\n renameStage,\n} from '../../utils';\nimport DeleteStage from './components/DeleteStage';\nimport TriggerPipelineDialog, {\n PromoteStageCommits,\n} from '../TriggerPipelineDialog';\nimport EditDeploymentDialog from './components/EditDeploymentDialog';\nimport ManagePipelinesDialog from '../ManagePipelinesDialog';\nimport { AddStageType } from '../AddStageDialog/AddStageDialog';\n\ninterface Props {\n codeProject: CodeProjectDetailsV1;\n projectType: ProjectTypeV1;\n}\n\ninterface PromoteStageState {\n pipeline: string | undefined;\n branch: string | undefined;\n stageCommits: PromoteStageCommits[] | undefined;\n stageNumber: number | undefined;\n stageName: string | undefined;\n}\n\nexport type DestinationSelector = {\n stageIndex: number;\n destinationIndex: number;\n};\n\nexport type EditHandlerType = (\n editType: PipelineDestinationTypeV1,\n destination: DestinationSelector,\n) => (() => void) | undefined;\n\nconst Stages = ({ codeProject, projectType }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const [isDeletePipelineOpen, setDeletePipelineOpen] = useState(false);\n const [isReorderPipelineOpen, setIsReorderPipelineOpen] = useState(false);\n const [isPipelinesAsCodePromptOpen, setIsPipelinesAsCodePromptOpen] =\n useState(false);\n const [selectedPipeline, setSelectedPipeline] = useState(\n codeProject.pipelines[0].pipelineId ?? '',\n );\n const [openAddPipelineDialog, setOpenAddPipelineDialog] = useState(false);\n const [addStageDialogType, setAddStageDialogType] = useState();\n const [addStageByNumber, setAddStageByNumber] = useState();\n const [promoteStageProps, setPromoteStageProps] =\n useState(null);\n const [openManagePipelineDialog, setOpenManagePipelineDialog] =\n useState(false);\n const [deleteStageNum, setDeleteStageNum] = useState(null);\n const [openEditDeploymentDialog, setOpenEditDeploymentDialog] = useState<\n DestinationSelector | undefined\n >(undefined);\n const [openEditImpactAnalysisDialog, setOpenEditImpactAnalysisDialog] =\n useState(undefined);\n\n useEffect(() => {\n if (selectedPipeline === '' && codeProject.pipelines[0].pipelineId) {\n setSelectedPipeline(codeProject.pipelines[0].pipelineId);\n }\n }, [codeProject, selectedPipeline]);\n\n const getOnEditItemHandler: EditHandlerType = (editType, destination) => {\n switch (editType) {\n case 'DEPLOYMENT':\n return () => setOpenEditDeploymentDialog(destination);\n case 'IMPACT_ANALYSIS': {\n return () => setOpenEditImpactAnalysisDialog(destination);\n }\n default: {\n return undefined;\n }\n }\n };\n\n const pipelineOptions = codeProject.pipelines.map((pipeline) => ({\n value: pipeline.pipelineId,\n label: pipeline.name,\n }));\n\n const { data, isLoading, error } = useGetPipelineV1(\n {\n workspaceId,\n pipelineId: selectedPipeline,\n projectName: codeProject.name,\n },\n {\n enabled: selectedPipeline !== '',\n refetchInterval: PIPELINES_REFETCH_INTERVAL,\n },\n );\n\n const upsertPipelineStages = useUpsertPipelineStagesV1Optimistic();\n const deletePipelineStages = useDeletePipelineStagesV1();\n const useCreateDefaultPipeline = useCreateDefaultPipelineV1();\n\n const triggers = data?.sources[0]?.autoBuildTriggers\n ?.join(', ')\n .toLowerCase();\n\n const hasPlaceholderDeploymentStage =\n data?.stages.some((stage) =>\n stage.destinations.some(\n (destination) => destination?.placeholder === 'DEPLOYMENT_PLACEHOLDER',\n ),\n ) ?? false;\n\n const hasIAConfigured =\n data?.stages.some((stage) =>\n stage.destinations.some(\n (destination) => destination.type === 'IMPACT_ANALYSIS',\n ),\n ) ?? false;\n\n const onRenameHandler = (stageName: string, stageNumber: number) => {\n const updatedStages = renameStage(stageName, stageNumber, data?.stages!);\n\n upsertPipelineStages.mutate({\n workspaceId,\n pipelineId: selectedPipeline,\n requestBody: {\n projectName: codeProject.name,\n stages: updatedStages,\n },\n });\n };\n\n const onAutoPromoteHandler = (autoPromote: boolean, stageNumber: number) => {\n const updatedStages = autoPromoteStage(\n autoPromote,\n stageNumber,\n data?.stages!,\n );\n\n upsertPipelineStages.mutate({\n workspaceId,\n pipelineId: selectedPipeline,\n requestBody: {\n projectName: codeProject.name,\n stages: updatedStages,\n },\n });\n };\n\n const onAutoPromoteConditionHandler = (\n autoPromoteCondition: TriggerConditionV1,\n stageNumber: number,\n ) => {\n const updatedStages = autoPromoteConditionStage(\n autoPromoteCondition,\n stageNumber,\n data?.stages!,\n );\n\n upsertPipelineStages.mutate({\n workspaceId,\n pipelineId: selectedPipeline,\n requestBody: {\n projectName: codeProject.name,\n stages: updatedStages,\n },\n });\n };\n\n const jobsNotToDelete = (id: string) => {\n return impactedJobs(data?.stages!, id);\n };\n\n const isRegex =\n codeProject?.pipelines?.find(\n (pipeline) => pipeline.pipelineId === selectedPipeline,\n )?.name === 'regex';\n\n const onDeleteJobHandler = (id: string, stageNumber: number) => {\n const updatedStages = deleteStageJob(id, stageNumber, data?.stages!);\n\n const { stages } = data!;\n if (stages.length === 1 && stages[0].destinations.length === 1) {\n deletePipelineStages.mutate({\n workspaceId,\n pipelineId: selectedPipeline,\n projectName: codeProject.name,\n });\n return;\n }\n upsertPipelineStages.mutate({\n workspaceId,\n pipelineId: selectedPipeline,\n requestBody: {\n projectName: codeProject.name,\n stages: updatedStages,\n },\n });\n };\n\n const onDeletePipelineGateHandler = (stageNumber: number) => {\n const updatedStages = deleteStagePipelineGate(stageNumber, data?.stages!);\n\n upsertPipelineStages.mutate({\n workspaceId,\n pipelineId: selectedPipeline,\n requestBody: {\n projectName: codeProject.name,\n stages: updatedStages,\n },\n });\n };\n\n const onCreateDefaultPipelineHandler = () => {\n useCreateDefaultPipeline.mutate({\n workspaceId,\n pipelineId: selectedPipeline,\n requestBody: {\n projectName: codeProject.name,\n isRegexPipeline: isRegex,\n },\n });\n };\n\n const onDeletePipelineHandler = () =>\n setSelectedPipeline(\n codeProject.pipelines?.find(\n ({ pipelineId }) => pipelineId !== selectedPipeline,\n )?.pipelineId ?? '',\n );\n\n const onPromoteHandler = (\n stage: ProjectPipelineStageV1,\n nextStage: ProjectPipelineStageV1 | undefined,\n ) => {\n const pipeline = codeProject.pipelines?.find(\n ({ pipelineId }) => pipelineId === selectedPipeline,\n );\n\n const commits = new Map();\n stage?.destinations.forEach((d) => {\n const {\n type: eventType,\n vmJobEvent,\n deploymentAppEvent,\n peImpactAnalysisEvent,\n } = d;\n let commit;\n\n switch (eventType) {\n case 'JOB':\n commit = {\n sha: vmJobEvent?.commitId ?? '',\n commitMessage: vmJobEvent?.commitMsg ?? '',\n branch: vmJobEvent?.branch ?? '',\n pullRequestId: vmJobEvent?.pullRequestId ?? '',\n };\n break;\n case 'DEPLOYMENT':\n commit = {\n sha: deploymentAppEvent?.commitId ?? '',\n commitMessage: deploymentAppEvent?.commitMsg ?? '',\n branch: deploymentAppEvent?.branch ?? '',\n pullRequestId: deploymentAppEvent?.pullRequestId ?? '',\n };\n break;\n case 'IMPACT_ANALYSIS':\n commit = {\n sha: peImpactAnalysisEvent?.commitId ?? '',\n commitMessage: peImpactAnalysisEvent?.commitMsg ?? '',\n branch: peImpactAnalysisEvent?.branch ?? '',\n pullRequestId: peImpactAnalysisEvent?.pullRequestId ?? '',\n };\n break;\n default:\n commit = {\n sha: '',\n commitMessage: '',\n branch: '',\n pullRequestId: '',\n };\n break;\n }\n\n if (!commits.has(commit.sha)) {\n commits.set(commit.sha, commit);\n }\n });\n\n const promoteStage = Array.from(commits.values())?.filter(\n (d) => d.sha !== '',\n );\n\n setPromoteStageProps({\n pipeline: pipeline?.name,\n branch: promoteStage?.[0]?.branch ?? '',\n stageCommits: promoteStage,\n stageNumber: nextStage?.stageNum,\n stageName: nextStage?.stageName,\n });\n };\n\n const selectedPipelineMatch = pipelineOptions.some(\n ({ value }) => value === selectedPipeline,\n );\n\n const stageToDelete =\n data?.stages.find(({ stageNum }) => stageNum === deleteStageNum) ?? null;\n\n useEffect(() => {\n if (data?.isPipelinesAsCodeCandidate) {\n setIsPipelinesAsCodePromptOpen(true);\n }\n }, [data?.isPipelinesAsCodeCandidate]);\n\n const onCloseEditDeploymentDialog = () => {\n setOpenEditDeploymentDialog(undefined);\n };\n\n const onCloseEditImpactAnalysisDialog = () => {\n setOpenEditImpactAnalysisDialog(undefined);\n };\n\n const checkDestinationExists = (selectedDestination: DestinationSelector) => {\n const stageData = data?.stages[selectedDestination.stageIndex];\n if (stageData === undefined) {\n return false;\n }\n\n const destinationData =\n stageData.destinations?.[selectedDestination.destinationIndex];\n return destinationData !== undefined;\n };\n\n const onAddStageHandler = () => {\n setAddStageDialogType('AddStage');\n };\n\n return (\n
    \n
    \n
    \n {t('viewPipeline.stages.header')}\n {\n setOpenManagePipelineDialog(!openManagePipelineDialog);\n }}\n data-testid=\"stages-manage-pipelines-button\"\n >\n {t('viewPipeline.stages.header.button.managePipelines')}\n \n
    \n
    \n
    \n \n setSelectedPipeline(newPipeline)\n }\n />\n
    \n \n
    \n {\n setOpenAddPipelineDialog(!openAddPipelineDialog);\n }}\n >\n {t('viewPipeline.stages.header.button.addPipeline')}\n \n {\n setDeletePipelineOpen(!isDeletePipelineOpen);\n }}\n data-testid=\"stages-delete-pipeline-button\"\n />\n \n {data?.stages && isReorderPipelineOpen && (\n setIsReorderPipelineOpen(false)}\n />\n )}\n
    \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n
    \n \n \n \n {{\n triggers,\n }}\n \n
    \n
    \n \n \n \n \n {data?.stages?.map((stage, index, stages) => (\n \n {\n setAddStageByNumber(stageNumber);\n setAddStageDialogType('AddItem');\n }}\n onAddStageBefore={(stageNumber) => {\n setAddStageByNumber(stageNumber);\n setAddStageDialogType('BeforeStage');\n }}\n onAddStageAfter={(stageNumber) => {\n setAddStageByNumber(stageNumber);\n setAddStageDialogType('AfterStage');\n }}\n onRename={(stageName) =>\n onRenameHandler(stageName, stage.stageNum)\n }\n onDeleteJob={(id) => onDeleteJobHandler(id, stage.stageNum)}\n onDeleteStage={(stageNum: number) =>\n setDeleteStageNum(stageNum)\n }\n onReorderPipeline={() => setIsReorderPipelineOpen(true)}\n onDeletePlaceholder={() =>\n onDeletePipelineGateHandler(stage.stageNum)\n }\n requiresAction={\n hasIAConfigured && hasPlaceholderDeploymentStage\n ? 'DEPLOYMENT_WARNING'\n : undefined\n }\n getOnEditItemHandler={getOnEditItemHandler}\n jobsNotToDelete={(id) => jobsNotToDelete(id)}\n isRegex={isRegex}\n />\n \n \n onAutoPromoteHandler(triggerOn, stage.stageNum)\n }\n onTriggerCondition={(triggerCondition) =>\n onAutoPromoteConditionHandler(\n triggerCondition,\n stage.stageNum,\n )\n }\n enablePromote={\n stage.destinations.some((d) => {\n switch (d.type) {\n case 'JOB':\n return !!d.vmJobEvent;\n case 'DEPLOYMENT':\n return !!d.deploymentAppEvent;\n case 'IMPACT_ANALYSIS':\n return !!d.peImpactAnalysisEvent;\n default:\n return false;\n }\n }) ?? false\n }\n onPromote={() => onPromoteHandler(stage, stages[index + 1])}\n />\n \n \n )) ?? []}\n \n
    \n \n {t('viewPipelines.add.stage.button')}\n \n
    \n
    \n
    \n \n \n \n \n {\n setAddStageByNumber(stageNumber);\n setAddStageDialogType('AddItem');\n }}\n onClickAddNextStage={(stageNumber) => {\n setAddStageByNumber(stageNumber);\n setAddStageDialogType('AfterStage');\n }}\n onClose={() => {\n setAddStageDialogType(undefined);\n setAddStageByNumber(undefined);\n }}\n isRegexPipeline={isRegex}\n />\n \n \n setSelectedPipeline(newPipeline)}\n projectType={projectType}\n />\n \n \n setDeleteStageNum(null)}\n />\n \n \n setPromoteStageProps(null)}\n codeProject={codeProject}\n {...promoteStageProps}\n />\n \n
    \n
    \n {isPipelinesAsCodePromptOpen && data?.name && (\n setIsPipelinesAsCodePromptOpen(false)}\n projectType={projectType}\n />\n )}\n {openEditDeploymentDialog !== undefined &&\n checkDestinationExists(openEditDeploymentDialog) && (\n \n )}\n {openEditImpactAnalysisDialog !== undefined &&\n checkDestinationExists(openEditImpactAnalysisDialog) && (\n \n )}\n
    \n );\n};\n\nexport default Stages;\n","import Stages from './Stages';\n\nexport default Stages;\n","import React from 'react';\nimport { Button, Modal, Text } from '@puppet/react-components';\nimport { CodeProjectDetailsV1, ProjectTypeV1 } from '@utils/api/cd4pe';\nimport { useTriggerDeploymentV1 } from '@services/cd4pe/deployments';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport { useAppDispatch } from '@hooks/redux';\nimport { useTranslation } from 'react-i18next';\nimport alerts from '@state/ui/alerts';\nimport Cd4peError from '@components/Cd4peError';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport DeploymentForm, { Deployment } from '../DeploymentForm';\nimport { buildManualDeploymentRequest } from '../../utils';\nimport { LINKS } from '../../../../../routes';\n\ninterface Props {\n codeProject: CodeProjectDetailsV1;\n onClose: () => void;\n projectType: ProjectTypeV1;\n}\n\nexport const getDisplayName = (deployment: Deployment, t: Function) => {\n let displayName = t('viewPipeline.dialog.manualDeployment.form.displayName', {\n environment: deployment.nodeGroup?.environment,\n peIntegrationName: deployment.puppetEnterpriseServer?.name,\n });\n\n if (\n deployment.deploymentPolicy?.name === 'cd4pe_deployments::feature_branch'\n ) {\n // Feature branch is special cased since that policy will never have a node group / target env associated with.\n displayName = t(\n 'viewPipeline.dialog.manualDeployment.form.displayName.featureBranch',\n {\n peIntegrationName: deployment.puppetEnterpriseServer?.name,\n },\n );\n }\n\n return displayName;\n};\n\nconst DeploymentDialog = ({ codeProject, onClose, projectType }: Props) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const workspaceName = useWorkspaceName();\n const appDispatch = useAppDispatch();\n\n const triggerDeployment = useTriggerDeploymentV1();\n\n const onDeployment = (deployment: Deployment) => {\n if (!triggerDeployment.isSuccess) {\n triggerDeployment.mutate(\n {\n requestBody: buildManualDeploymentRequest(\n deployment,\n codeProject,\n getDisplayName(deployment, t),\n workspaceId,\n projectType,\n ),\n },\n {\n onSuccess: () => {\n appDispatch(\n alerts.actions.createAlert({\n type: 'Success',\n message: t(\n 'viewPipeline.dialog.manualDeployment.alert.success',\n ),\n }),\n );\n },\n },\n );\n } else {\n window.location.href = LINKS.cd4pe.viewDeployment({\n path: {\n workspace: workspaceName,\n id: triggerDeployment.data?.id!,\n },\n });\n }\n };\n\n return (\n onClose()}>\n {t('viewPipeline.form.deployment.new.title')}\n onClose()}\n disabled={triggerDeployment.isSuccess}\n projectType={projectType}\n />\n {triggerDeployment.isSuccess && (\n \n \n {t('viewPipeline.form.deployment.inProgress')}\n \n \n \n \n )}\n \n \n );\n};\n\nexport default DeploymentDialog;\n","import React, { useState } from 'react';\nimport { Trans, useTranslation } from 'react-i18next';\nimport {\n Alert,\n Heading,\n ActionSelect,\n Button,\n Link as PdsLink,\n} from '@puppet/react-components';\nimport { Columns } from '@puppet/react-layouts';\nimport { CodeProjectDetailsV1, ProjectTypeV1 } from '@puppet/cd4pe-client-ts';\nimport Breadcrumbs, {\n BreadcrumbsType,\n} from '@components/Breadcrumbs/Breadcrumbs';\nimport useVcsLinks from '@hooks/useVcsLinks';\nimport PageLayout from '@components/PageLayout';\nimport ImpactAnalysisDialog from '@codeDelivery/components/ViewPipeline/components/ImpactAnalysisDialog/ImpactAnalysisDialog';\nimport { useGetPipelineAsCodeErrorV1 } from '@services/cd4pe/pipelinesAsCode';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport ConditionalRender from '@components/ConditionalRender';\nimport { useNavigate } from 'react-router-dom';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport EventsTable from './components/EventsTable';\nimport Stages from './components/Stages';\nimport TriggerPipelineDialog from './components/TriggerPipelineDialog';\nimport DeploymentDialog from './components/DeploymentDialog/DeploymentDialog';\nimport { LINKS } from '../../../routes';\n\nexport type ProjectType = 'module' | 'controlRepo';\n\ntype ViewPipelineProps = {\n breadcrumbs: BreadcrumbsType;\n name: string;\n codeProject: CodeProjectDetailsV1;\n projectType: ProjectTypeV1;\n};\n\nconst ViewPipeline = ({\n breadcrumbs,\n name,\n codeProject,\n projectType,\n}: ViewPipelineProps) => {\n const { t } = useTranslation('codeDelivery');\n const workspaceId = useWorkspaceDomain();\n const workspaceName = useWorkspaceName();\n const { getRepoLink } = useVcsLinks();\n const [isOpenTriggerPipelineDialog, setOpenTriggerPipelineDialog] =\n useState(false);\n const [isOpenDeploymentDialog, setOpenDeploymentDialog] = useState(false);\n const [isOpenImpactAnalysisDialog, setOpenImpactAnalysisDialog] =\n useState(false);\n const navigate = useNavigate();\n\n const repoLink = getRepoLink(\n codeProject.srcRepoProvider,\n codeProject.srcRepoOwner,\n codeProject.srcRepoDisplayName,\n codeProject.srcRepoId,\n );\n\n const onClickEditButton = () => {\n if (projectType === 'MODULE') {\n return navigate(\n LINKS.codeDelivery.editModule({\n path: { workspace: workspaceName, name },\n }),\n );\n }\n return navigate(\n LINKS.codeDelivery.editRepository({\n path: { workspace: workspaceName, name },\n }),\n );\n };\n\n const pipelinesAsCodeError = useGetPipelineAsCodeErrorV1(\n {\n workspaceId,\n pipelineId: codeProject?.pipelines[0]?.pipelineId!!,\n projectName: codeProject.name,\n },\n {\n enabled: codeProject.pipelines[0].pipelineId !== '',\n },\n );\n\n const actions = [\n {\n id: 'newImpactAnalysis',\n label: t('viewPipeline.header.actions.newImpactAnalysis'),\n onClick: () => {\n setOpenImpactAnalysisDialog(true);\n },\n 'data-testid': 'new-impact-analysis',\n },\n {\n id: 'newDeployment',\n label: t('viewPipeline.header.actions.newDeployment'),\n onClick: () => {\n setOpenDeploymentDialog(true);\n },\n 'data-testid': 'new-deployment',\n },\n {\n id: 'triggerPipeline',\n label: t('viewPipeline.header.actions.triggerPipeline'),\n onClick: () => {\n setOpenTriggerPipelineDialog(true);\n },\n 'data-testid': 'trigger-pipeline',\n },\n ];\n\n return (\n \n \n \n \n \n \n
    \n {codeProject.name}\n
    \n ,\n ]}\n />{' '}\n onClickEditButton()}\n />\n
    \n
    \n
    \n \n {t('listControlRepos.header.newControlRepo')}\n \n
    \n
    \n \n
    \n \n {pipelinesAsCodeError?.data?.pipelineAsCodeError}\n \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n {isOpenTriggerPipelineDialog && (\n setOpenTriggerPipelineDialog(false)}\n codeProject={codeProject}\n />\n )}\n {isOpenDeploymentDialog && (\n setOpenDeploymentDialog(false)}\n projectType={projectType}\n />\n )}\n {isOpenImpactAnalysisDialog && (\n setOpenImpactAnalysisDialog(false)}\n />\n )}\n \n \n );\n};\n\nexport default ViewPipeline;\n","import ViewPipeline from './ViewPipeline';\n\nexport default ViewPipeline;\n","import ViewControlRepo from './ViewControlRepo';\n\nexport default ViewControlRepo;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport { Loading } from '@puppet/react-components';\nimport ViewPipeline from '@codeDelivery/components/ViewPipeline';\nimport { BreadcrumbsType } from '@components/Breadcrumbs/Breadcrumbs';\nimport Cd4peError from '@components/Cd4peError';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { useGetControlRepoV1 } from '@services/cd4pe/controlRepos';\nimport { LINKS } from 'src/routes';\n\nconst ViewControlRepo = () => {\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const { name = '' } = useParams();\n\n const { data, isLoading, error } = useGetControlRepoV1({\n workspaceId,\n controlRepoName: name,\n });\n\n const breadcrumbs: BreadcrumbsType = [\n {\n displayName: workspaceName,\n },\n {\n displayName: t('viewControlRepo.breadcrumb.controlRepos'),\n linkDestination: LINKS.codeDelivery.listRepositories({\n path: { workspace: workspaceName },\n }),\n },\n { displayName: data?.name ?? '' },\n ];\n\n if (isLoading) {\n return ;\n }\n\n if (error) {\n return ;\n }\n\n return (\n \n );\n};\n\nexport default ViewControlRepo;\n","import ViewModule from './ViewModule';\n\nexport default ViewModule;\n","import React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport { Loading } from '@puppet/react-components';\nimport ViewPipeline from '@codeDelivery/components/ViewPipeline';\nimport { BreadcrumbsType } from '@components/Breadcrumbs/Breadcrumbs';\nimport Cd4peError from '@components/Cd4peError';\nimport useWorkspaceDomain from '@hooks/useWorkspaceDomain';\nimport useWorkspaceName from '@hooks/useWorkspaceName';\nimport { useGetModuleV1 } from '@services/cd4pe/modules';\nimport { LINKS } from 'src/routes';\n\nconst ViewModule = () => {\n const { t } = useTranslation('codeDelivery');\n const workspaceName = useWorkspaceName();\n const workspaceId = useWorkspaceDomain();\n const { name = '' } = useParams();\n\n const { data, isLoading, error } = useGetModuleV1({\n workspaceId,\n moduleName: name,\n });\n\n const breadcrumbs: BreadcrumbsType = [\n {\n displayName: workspaceName,\n },\n {\n displayName: t('viewModule.breadcrumb.modules'),\n linkDestination: LINKS.codeDelivery.listModules({\n path: { workspace: workspaceName },\n }),\n },\n { displayName: data?.name ?? '' },\n ];\n\n if (isLoading) {\n return ;\n }\n\n if (error) {\n ;\n }\n\n return (\n \n );\n};\n\nexport default ViewModule;\n","import CodeDelivery from './CodeDelivery';\n\nexport default CodeDelivery;\n","import React from 'react';\nimport { Navigate, Route } from 'react-router-dom';\nimport JobTemplateList from '@codeDelivery/views/JobTemplateList';\nimport NewJobTemplate from '@codeDelivery/views/NewJobTemplate';\nimport EditJobTemplate from '@codeDelivery/views/EditJobTemplate';\nimport NewModule from '@codeDelivery/views/NewModule';\nimport NewControlRepo from '@codeDelivery/views/NewControlRepo';\nimport { ROUTE_TYPES } from '@utils/constants';\nimport GroupList from '@codeDelivery/views/GroupList';\nimport UserList from '@codeDelivery/views/UserList';\nimport AddUser from '@codeDelivery/views/AddUser';\nimport SshKey from '@codeDelivery/views/SshKey';\nimport PeIntegrationList from '@codeDelivery/views/PeIntegrationList';\nimport AddPEIntegration from '@codeDelivery/views/AddPeIntegration';\nimport EditPeIntegration from '@codeDelivery/views/EditPeIntegration';\nimport AddProtectedEnvironment from '@codeDelivery/views/AddProtectedEnvironment';\nimport EditProtectedEnvironment from '@codeDelivery/views/EditProtectedEnvironment';\nimport RegenerateAuthToken from '@codeDelivery/views/RegenerateAuthToken';\nimport AddSourceControl from '@codeDelivery/views/AddSourceControl';\nimport Layout from '@components/Layout';\nimport SourceControl from '@codeDelivery/views/SourceControl';\nimport AddGroup from '@codeDelivery/views/AddGroup';\nimport { getSegment } from 'src/routes';\nimport WorkspaceSettings from '@codeDelivery/views/WorkspaceSettings';\nimport SettingsPage from '@codeDelivery/components/SettingsPage';\nimport OAuthRedirect from '@codeDelivery/components/OAuthRedirect';\nimport * as Provider from '@utils/vcs/providerConsts';\nimport AddUserToGroup from '@codeDelivery/views/AddUserToGroup/AddUserToGroup';\nimport EditCapability from '@codeDelivery/views/EditCapability';\nimport ListModules from '@codeDelivery/views/ListModules';\nimport EditControlRepo from '@codeDelivery/views/EditControlRepo';\nimport EditModule from '@codeDelivery/views/EditModule';\nimport ViewGroup from './views/ViewGroup';\nimport JobHardware from './views/JobHardware';\nimport AddCapability from './views/AddCapability';\nimport JobDetails from './views/JobDetails';\nimport ListControlRepos from './views/ListControlRepos';\nimport ViewControlRepo from './views/ViewControlRepo';\nimport ViewModule from './views/ViewModule';\n\nconst codeDelivery = (\n \n \n }\n />\n }\n />\n \n \n }\n />\n \n }\n >\n \n \n }\n />\n \n } />\n }\n />\n \n }\n />\n \n \n \n \n } />\n }\n />\n \n } />\n }\n />\n \n \n \n } />\n }\n />\n \n } />\n }\n />\n \n \n \n } />\n }\n />\n }\n />\n \n \n }>\n }\n />\n \n } />\n \n \n } />\n }\n />\n \n } />\n }\n />\n \n \n \n } />\n }\n />\n \n }\n />\n \n } />\n }\n />\n \n } />\n \n } />\n }\n />\n \n }\n />\n \n \n \n } />\n }\n />\n \n \n \n \n);\n\nexport default codeDelivery;\n","import PropTypes from 'prop-types';\nimport { FILTER_OPERATORS } from 'utils/constants';\n\nconst FormGeneratorPropTypes = PropTypes.shape({\n reqParams: PropTypes.string,\n reqParamsDes: PropTypes.string,\n expandList: PropTypes.string,\n notes: PropTypes.string,\n notesDes: PropTypes.string,\n addOptParams: PropTypes.string,\n addOptParamsSelect: PropTypes.string,\n addOptParamsDes: PropTypes.string,\n runTask: PropTypes.string,\n setTarget: PropTypes.string,\n selectParam: PropTypes.string,\n enterParam: PropTypes.string,\n noScopeSet: PropTypes.string,\n filterEditButton: PropTypes.string,\n});\n\nconst TaskSidePanelPropTypes = PropTypes.shape({\n reqParams: PropTypes.string,\n optParams: PropTypes.string,\n});\n\nconst OptionsArray = PropTypes.arrayOf(\n PropTypes.shape({\n value: PropTypes.string,\n label: PropTypes.string,\n }),\n);\n\nconst FilterDisplayMessagesPropTypes = PropTypes.shape({\n buttonLabel: PropTypes.string.isRequired,\n modalTitle: PropTypes.string.isRequired,\n editModalTitle: PropTypes.string,\n selectLabel: PropTypes.string.isRequired,\n selectPlaceholderText: PropTypes.string.isRequired,\n addFilterButton: PropTypes.string.isRequired,\n applyAllButton: PropTypes.string.isRequired,\n clearFiltersButton: PropTypes.string.isRequired,\n activeFiltersButton: PropTypes.string.isRequired,\n cancelButton: PropTypes.string.isRequired,\n emptyList: PropTypes.string.isRequired,\n matchingNodes: PropTypes.string,\n target: PropTypes.string,\n});\n\nconst TargetScopePropTypes = PropTypes.shape({\n activeFilters: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n fact: PropTypes.string,\n operator: PropTypes.oneOf(Object.keys(FILTER_OPERATORS)),\n value: PropTypes.string,\n filter: PropTypes.instanceOf(Object),\n length: PropTypes.number,\n id: PropTypes.string,\n }),\n ),\n totalCount: PropTypes.number,\n pdbQuery: PropTypes.instanceOf(Array),\n queryFilter: PropTypes.instanceOf(Object),\n filterOperator: PropTypes.string,\n}).isRequired;\n\nconst ActionDetailPropTypes = PropTypes.shape({\n actionDetails: PropTypes.string,\n showDetails: PropTypes.string,\n hideDetails: PropTypes.string,\n planAction: PropTypes.string,\n target: PropTypes.string,\n nodes: PropTypes.string,\n all: PropTypes.string,\n});\n\nexport {\n FormGeneratorPropTypes,\n FilterDisplayMessagesPropTypes,\n TaskSidePanelPropTypes,\n TargetScopePropTypes,\n ActionDetailPropTypes,\n OptionsArray,\n};\n","import React, { useState } from 'react';\nimport { OptionsArray } from 'utils/en.propTypes';\nimport { Select, Button, Heading } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\nimport PropTypes from 'prop-types';\nimport './FactPicker.scss';\n\nconst FactPicker = ({\n factOptions,\n onClick,\n onFilter,\n isOpen,\n displayFooter,\n}) => {\n const [chosenFact, setChosenFact] = useState('');\n const { t } = useTranslation('inventory');\n const footer = displayFooter ? (\n
    {t('factPicker.footer.message')}
    \n ) : (\n false\n );\n return (\n
    \n \n {t('factPicker.view.message')}\n \n
    \n setChosenFact(value)}\n type=\"autocomplete\"\n footer={footer}\n onFilter={onFilter}\n open={isOpen}\n />\n {\n onClick(chosenFact);\n setChosenFact('');\n }}\n type=\"tertiary\"\n data-testid=\"add-fact-button\"\n >\n {t('factPicker.button.add')}\n \n
    \n
    \n );\n};\n\nexport default FactPicker;\n\nFactPicker.propTypes = {\n factOptions: OptionsArray.isRequired,\n onClick: PropTypes.func.isRequired,\n onFilter: PropTypes.func.isRequired,\n isOpen: PropTypes.string.isRequired,\n displayFooter: PropTypes.bool,\n};\n\nFactPicker.defaultProps = {\n displayFooter: false,\n};\n","import FactPicker from './FactPicker';\n\nexport default FactPicker;\n","import React, { useState } from 'react';\nimport { Icon, Button } from '@puppet/react-components';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { KEYBOARD_KEYS } from 'utils/constants';\nimport './ColumnPicker.scss';\n\nconst FactListItem = ({\n children,\n isActive,\n onClick,\n id,\n onRemove,\n defaultFact,\n isLocked,\n}) => {\n const [showOnHover, setShowOnHover] = useState(false);\n\n return (\n
    \n {\n if (!isLocked) {\n onClick();\n }\n }}\n onKeyDown={(e) => {\n if (\n (e.keyCode === KEYBOARD_KEYS.enter ||\n e.keyCode === KEYBOARD_KEYS.space) &&\n !isLocked\n ) {\n onClick();\n }\n }}\n onFocus={() => {\n if (!isLocked) {\n setShowOnHover(true);\n }\n }}\n onBlur={() => {\n if (!isLocked) {\n setShowOnHover(false);\n }\n }}\n onMouseEnter={() => {\n if (!isLocked) {\n setShowOnHover(true);\n }\n }}\n onMouseLeave={() => {\n if (!isLocked) {\n setShowOnHover(false);\n }\n }}\n tabIndex=\"0\"\n >\n \n {children}\n {!defaultFact && (\n
    \n {\n e.stopPropagation();\n e.nativeEvent.stopImmediatePropagation();\n onRemove();\n }}\n className=\"fl-item-remove-button\"\n icon=\"x\"\n />\n
    \n )}\n
    \n {isActive && (\n \n )}\n \n
    \n );\n};\n\nexport default FactListItem;\n\nFactListItem.propTypes = {\n children: PropTypes.string.isRequired,\n isActive: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n id: PropTypes.shape({\n factname: PropTypes.string,\n }).isRequired,\n onRemove: PropTypes.func.isRequired,\n defaultFact: PropTypes.bool.isRequired,\n isLocked: PropTypes.bool.isRequired,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { OptionsArray } from 'utils/en.propTypes';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '@puppet/react-components';\nimport FactPicker from 'inventory/components/FactPicker';\nimport FactListItem from './FactListItem';\nimport './ColumnPicker.scss';\n\nconst FactList = ({\n factOptions,\n addFact,\n onRemoveItem,\n onClickItem,\n visibleFacts,\n onClickApply,\n onClickReset,\n onClickCancel,\n factLimitSize,\n}) => {\n const [filteredFacts, setFilteredFacts] = useState(factOptions);\n const [searchTerm, setSearchTerm] = useState('');\n const { t } = useTranslation('inventory');\n\n useEffect(() => {\n const newFilteredFacts = factOptions.filter(({ value }) => {\n return value.includes(searchTerm);\n });\n setFilteredFacts(newFilteredFacts);\n }, [searchTerm, factOptions]);\n\n const handleReset = () => {\n setSearchTerm('');\n onClickReset();\n };\n\n const handleCancel = () => {\n setSearchTerm('');\n onClickCancel();\n };\n return (\n
    \n
      \n {visibleFacts.map(({ factname, isActive, defaultFact }, index) => {\n const keyId = `${factname}-${index}`;\n return (\n onClickItem(factname)}\n onRemove={() => onRemoveItem(factname)}\n defaultFact={defaultFact}\n isLocked={index === 0}\n >\n {factname}\n \n );\n })}\n
    \n {\n // Only clear the search text if it is accepted (not a duplicate or invalid fact name).\n if (addFact(fact)) {\n setSearchTerm('');\n }\n }}\n onFilter={setSearchTerm}\n isOpen={searchTerm}\n totalFactOptions={filteredFacts.length}\n displayFooter={filteredFacts.length > factLimitSize}\n />\n
    \n \n
    \n \n \n
    \n
    \n
    \n );\n};\n\nexport default FactList;\n\nFactList.propTypes = {\n factOptions: OptionsArray.isRequired,\n addFact: PropTypes.func.isRequired,\n onRemoveItem: PropTypes.func.isRequired,\n onClickItem: PropTypes.func.isRequired,\n visibleFacts: PropTypes.arrayOf(\n PropTypes.shape({\n factname: PropTypes.string,\n isActive: PropTypes.bool,\n defaultFact: PropTypes.bool,\n }),\n ).isRequired,\n onClickApply: PropTypes.func.isRequired,\n onClickReset: PropTypes.func.isRequired,\n onClickCancel: PropTypes.func.isRequired,\n factLimitSize: PropTypes.number.isRequired,\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { OptionsArray } from 'utils/en.propTypes';\nimport { Button, Text } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\nimport classNames from 'classnames';\nimport FactList from './FactList';\n\nimport './ColumnPicker.scss';\n\nconst byActive = (fact) => {\n return fact.isActive === true;\n};\n\nconst ColumnPicker = ({\n disabled,\n defaultFactList,\n facts,\n onClickApply,\n factLimitSize,\n closeColumnPicker,\n initialColumns,\n}) => {\n const getInitialColumns = () => {\n if (initialColumns.length > 0) {\n return initialColumns.map((column) => {\n return {\n factname: column,\n isActive: true,\n defaultFact: defaultFactList.some(\n (defaultColumn) => defaultColumn.factname === column,\n ),\n };\n });\n }\n\n return defaultFactList;\n };\n\n const [isOpen, setIsOpen] = useState(false);\n const [visibleFacts, setVisibleFacts] = useState(getInitialColumns);\n const [countActiveFacts, setCountActiveFacts] = useState(0);\n const [factsClean, setFactsClean] = useState(true);\n const [originalFacts, setOriginalFacts] = useState([]);\n const { t } = useTranslation('inventory');\n const onClickButton = () => {\n setIsOpen(!isOpen);\n };\n\n // TODO Eslint says this should be wrapped in a useCallback, but this breaks the unit tests for some reason.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const cancelAction = () => {\n // if the facts have been altered\n // then set them to the cache on closing the column picker through a cancel\n if (originalFacts.length > 0 && !factsClean) {\n setVisibleFacts(originalFacts);\n // if the column picker was opened in a default state, return it to default\n } else if (factsClean) {\n setVisibleFacts(defaultFactList);\n }\n setIsOpen(false);\n };\n\n const onClickItem = (factValue) => {\n const newVisibleFacts = visibleFacts.map((fact) => {\n if (fact.factname === factValue) {\n return { ...fact, isActive: !fact.isActive };\n }\n return fact;\n });\n setVisibleFacts(newVisibleFacts);\n };\n\n const onRemoveItem = (factname) => {\n const remainingVisibleFacts = visibleFacts.filter((column) => {\n return column.factname !== factname;\n });\n setVisibleFacts(remainingVisibleFacts);\n };\n\n const addFact = (fact) => {\n // Do not add fact if it is already in the visible fact list\n const duplicateFact = visibleFacts.find(\n ({ factname }) => factname === fact,\n );\n if (duplicateFact) return false;\n\n // Do not add fact if it is not on the facts lists\n const validFact = facts.find(({ label }) => label === fact);\n if (!validFact) return false;\n\n const newFact = {\n factname: fact,\n isActive: true,\n defaultFact: false,\n };\n const newVisibleFacts = [...visibleFacts, newFact];\n // This list will display up to 8 facts before scrolling\n setVisibleFacts(newVisibleFacts);\n\n return true;\n };\n\n useEffect(() => {\n const activeFacts = visibleFacts.filter(({ isActive }) => isActive).length;\n setCountActiveFacts(activeFacts);\n }, [visibleFacts]);\n\n useEffect(() => {\n if (closeColumnPicker && isOpen) {\n cancelAction();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [closeColumnPicker, isOpen]);\n\n // TODO This useEffect logic is not correct and is being treated as a onOpen toggle handler. This should be reworked.\n useEffect(() => {\n if (!isOpen) {\n // on closing clear our facts cache\n setOriginalFacts([]);\n } else if (visibleFacts !== defaultFactList) {\n setOriginalFacts(visibleFacts);\n }\n // set a flag that the facts have changed\n setFactsClean(defaultFactList === visibleFacts);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isOpen]);\n\n return (\n \n \n {t('columnPicker.button.open')}\n \n \n
    \n \n {t('columnPicker.text.selected', {\n selected: countActiveFacts,\n total: visibleFacts.length,\n })}\n \n
    \n {\n onClickApply(visibleFacts.filter(byActive));\n setIsOpen(false);\n }}\n onClickReset={() => {\n setVisibleFacts(defaultFactList);\n }}\n onClickCancel={() => {\n cancelAction();\n }}\n factLimitSize={factLimitSize}\n />\n
    \n
    \n );\n};\n\nexport default ColumnPicker;\n\nColumnPicker.propTypes = {\n disabled: PropTypes.bool,\n defaultFactList: PropTypes.arrayOf(\n PropTypes.shape({\n factname: PropTypes.string.isRequired,\n isActive: PropTypes.bool,\n defaultFact: PropTypes.bool,\n }),\n ).isRequired,\n facts: OptionsArray.isRequired,\n onClickApply: PropTypes.func.isRequired,\n factLimitSize: PropTypes.number.isRequired,\n closeColumnPicker: PropTypes.bool.isRequired,\n initialColumns: PropTypes.arrayOf(PropTypes.string),\n};\n\nColumnPicker.defaultProps = {\n initialColumns: [],\n disabled: false,\n};\n","import ColumnPicker from './ColumnPicker';\n\nexport default ColumnPicker;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { OptionsArray } from '@utils/en.propTypes';\nimport { TablePageSelector, TableFooter } from '@puppet/data-grid';\nimport { Select, Text } from '@puppet/react-components';\n\nconst TablePager = ({\n pageData,\n limit,\n onPageSelect,\n totalCount,\n itemType,\n changeLimits,\n onChangeLimit,\n selectedLimit,\n}) => {\n let tableCurrentPage;\n let tableTotalPages;\n let tableFooterText;\n let currentNode;\n let lastItemNumber;\n\n if (pageData.pageInfo) {\n const { totalPages, currentPage, prevOffset, nextOffset } =\n pageData.pageInfo;\n\n tableCurrentPage = currentPage;\n tableTotalPages = totalPages;\n\n if (currentPage === 1) {\n currentNode = totalCount ? 1 : 0;\n } else {\n currentNode = prevOffset + limit + 1;\n }\n currentNode = currentNode > totalCount ? totalCount : currentNode;\n\n lastItemNumber = nextOffset > totalCount ? totalCount : nextOffset;\n tableFooterText = `${currentNode} - ${lastItemNumber} of ${totalCount} ${itemType}`;\n }\n\n const pageSelectFunc = (nextPage) => {\n // prevent paging if no data is available\n if (totalCount === 0) return;\n if (nextPage === 1) {\n onPageSelect(0);\n } else {\n onPageSelect(nextPage * limit - limit);\n }\n };\n\n return (\n
    \n {changeLimits && (\n \n Rows per page: \n \n
    \n )}\n \n pageSelectFunc(nextPage)}\n delta={1}\n />\n \n
    \n );\n};\n\nexport default TablePager;\n\nTablePager.propTypes = {\n pageData: PropTypes.shape({\n pageInfo: PropTypes.shape({\n totalPages: PropTypes.number,\n currentPage: PropTypes.number,\n prevOffset: PropTypes.number,\n nextOffset: PropTypes.number,\n }),\n }).isRequired,\n limit: PropTypes.number.isRequired,\n onPageSelect: PropTypes.func.isRequired,\n totalCount: PropTypes.number.isRequired,\n itemType: PropTypes.string.isRequired,\n changeLimits: OptionsArray,\n onChangeLimit: PropTypes.func,\n selectedLimit: PropTypes.number,\n};\n\nTablePager.defaultProps = {\n changeLimits: null,\n onChangeLimit: () => {},\n selectedLimit: 0,\n};\n","import TablePager from './TablePager';\n\nexport default TablePager;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Trans } from 'react-i18next';\nimport { Alert, Link } from '@puppet/react-components';\nimport { DOCS_URL } from 'utils/constants';\n\n// eslint-disable-next-line react/prop-types\nconst QueryError = ({ error, client }) => {\n const gqlErrors = [];\n if (error) {\n if (error.networkError) {\n gqlErrors.push(\n \n \n {' '}\n ,\n ]}\n />\n ,\n );\n } else {\n gqlErrors.push(\n \n {error.message}\n ,\n );\n }\n error.graphQLErrors.forEach((errorSting, index) => {\n if (error.message.indexOf(errorSting.message) === -1) {\n const keyId = index + 1;\n gqlErrors.push(\n \n {errorSting.message}\n ,\n );\n }\n });\n }\n return
    {gqlErrors}
    ;\n};\n\nexport default QueryError;\n\nQueryError.propTypes = {\n error: PropTypes.shape({\n networkError: PropTypes.string,\n message: PropTypes.string,\n graphQLErrors: PropTypes.instanceOf(Array),\n }),\n};\n\nQueryError.defaultProps = {\n error: null,\n};\n","import QueryError from './QueryError';\n\nexport default QueryError;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Icon, Text, Button } from '@puppet/react-components';\nimport './ActiveFilterList.scss';\n\nconst ActiveFilterList = ({\n currentFilterList,\n onApplyAll,\n onClearAll,\n onRemove,\n filterDisplayMessages,\n isEditing,\n onCancel,\n}) => {\n const getActiveFilters = (rawActiveFilters) => {\n return rawActiveFilters.map(({ label, fact, operator, value }, index) => {\n const keyId = `${index}_${label}`;\n return (\n
  • \n
    \n \n {label}\n \n {fact && {fact} }\n {operator && (\n \n {operator}{' '}\n \n )}\n {value}\n
    \n onRemove(index)}\n />\n
  • \n );\n });\n };\n\n return (\n
    \n {currentFilterList.length > 0 ? (\n
      {getActiveFilters(currentFilterList)}
    \n ) : (\n \n {filterDisplayMessages.emptyList}\n \n )}\n
    \n {\n isEditing(true);\n }}\n >\n {filterDisplayMessages.addFilterButton}\n \n {\n onClearAll();\n }}\n >\n {filterDisplayMessages.clearAllButton}\n \n
    \n
    \n {\n onCancel();\n }}\n >\n {filterDisplayMessages.cancelButton}\n \n {\n onApplyAll();\n }}\n >\n {filterDisplayMessages.applyAllButton}\n \n
    \n
    \n );\n};\n\nexport default ActiveFilterList;\n\nActiveFilterList.propTypes = {\n currentFilterList: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n fact: PropTypes.string,\n operator: PropTypes.string,\n value: PropTypes.string.isRequired,\n filter: PropTypes.shape({}).isRequired,\n }),\n ).isRequired,\n // passed from the NodeTable but driven from the NodeTableFilter as it controls the hide/show modal\n onApplyAll: PropTypes.func.isRequired,\n // driven from the NodeTable\n onClearAll: PropTypes.func.isRequired,\n // driven from the NodeTable\n onRemove: PropTypes.func.isRequired,\n filterDisplayMessages: PropTypes.shape({\n buttonLabel: PropTypes.string.isRequired,\n modalTitle: PropTypes.string.isRequired,\n selectLabel: PropTypes.string.isRequired,\n selectPlaceholderText: PropTypes.string.isRequired,\n addFilterButton: PropTypes.string.isRequired,\n clearAllButton: PropTypes.string.isRequired,\n applyAllButton: PropTypes.string.isRequired,\n clearFiltersButton: PropTypes.string.isRequired,\n activeFiltersButton: PropTypes.string.isRequired,\n cancelButton: PropTypes.string.isRequired,\n emptyList: PropTypes.string.isRequired,\n }).isRequired,\n // Flag to show the filter selector\n isEditing: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n};\n","import ActiveFilterList from './ActiveFilterList';\n\nexport default ActiveFilterList;\n","/* eslint-disable no-nested-ternary */\nimport React, { useState, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { OptionsArray } from 'utils/en.propTypes';\nimport './NodeTableFilter.scss';\nimport { Modal, Select, Heading } from '@puppet/react-components';\nimport ActiveFilterList from 'inventory/components/ActiveFilterList';\nimport { useTranslation } from 'react-i18next';\n\nconst NodeTableFilter = ({\n availableFilters,\n filters,\n selectedFilter,\n onSelectedFilterChange,\n filterDisplayMessages,\n currentFilterList,\n onAdd,\n onApply,\n onApplyAll,\n onRemove,\n onClearAll,\n onCancel,\n isModalOpen,\n onModalClose,\n onFormChange,\n compoundFiltering,\n}) => {\n const { t } = useTranslation('inventory');\n const [isEditing, setIsEditing] = useState(true);\n const FilterComponent = filters[selectedFilter]?.component;\n const {\n label,\n options,\n placeholder,\n name,\n defaultOptions,\n filterValue,\n operator,\n textInput,\n autoComplete,\n } = filters[selectedFilter] || '';\n const addFilter = (filter) => {\n if (compoundFiltering) {\n onAdd(filter);\n onApply();\n } else {\n setIsEditing(false);\n onAdd(filter);\n }\n };\n\n return (\n
    \n \n \n {' '}\n {isEditing\n ? filterDisplayMessages.modalTitle\n : filterDisplayMessages.activeTitle}\n \n {isEditing ? (\n <>\n \n {filterDisplayMessages.selectLabel}\n \n \n {FilterComponent && (\n
    \n \n
    \n )}\n \n ) : (\n
    \n \n
    \n )}\n
    \n
    \n );\n};\n\nexport default NodeTableFilter;\n\nNodeTableFilter.propTypes = {\n availableFilters: OptionsArray.isRequired,\n selectedFilter: PropTypes.string,\n onSelectedFilterChange: PropTypes.func.isRequired,\n filterDisplayMessages: PropTypes.shape({\n buttonLabel: PropTypes.string.isRequired,\n modalTitle: PropTypes.string.isRequired,\n selectLabel: PropTypes.string.isRequired,\n selectPlaceholderText: PropTypes.string.isRequired,\n activeTitle: PropTypes.string.isRequired,\n addFilterButton: PropTypes.string.isRequired,\n clearAllButton: PropTypes.string.isRequired,\n applyAllButton: PropTypes.string.isRequired,\n clearFiltersButton: PropTypes.string.isRequired,\n activeFiltersButton: PropTypes.string.isRequired,\n cancelButton: PropTypes.string.isRequired,\n emptyList: PropTypes.string.isRequired,\n }).isRequired,\n currentFilterList: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string.isRequired,\n fact: PropTypes.string,\n operator: PropTypes.string,\n value: PropTypes.string,\n filter: PropTypes.shape({}).isRequired,\n }),\n ).isRequired,\n onAdd: PropTypes.func.isRequired,\n onApply: PropTypes.func.isRequired,\n onApplyAll: PropTypes.func.isRequired,\n onRemove: PropTypes.func.isRequired,\n onClearAll: PropTypes.func.isRequired,\n onCancel: PropTypes.func.isRequired,\n isModalOpen: PropTypes.bool.isRequired,\n onModalClose: PropTypes.func.isRequired,\n filters: PropTypes.instanceOf(Object).isRequired,\n onFormChange: PropTypes.func.isRequired,\n compoundFiltering: PropTypes.bool.isRequired,\n};\n\nNodeTableFilter.defaultProps = {\n selectedFilter: '',\n};\n","import NodeTableFilter from './NodeTableFilter';\n\nexport default NodeTableFilter;\n","// Function will change the none status values from pdb api to be more human readable\n// If an unknown value will just return\nfunction changeStatusText(status, correctiveChange) {\n let newStatus = '';\n switch (status) {\n case 'changed':\n if (correctiveChange) {\n newStatus = 'corrective change';\n break;\n }\n newStatus = 'intentional change';\n break;\n case 'failed':\n newStatus = 'failure';\n break;\n case 'unchanged':\n newStatus = 'no change';\n break;\n default:\n newStatus = status;\n }\n\n return newStatus;\n}\n\nexport default changeStatusText;\n","import callApi from '../apiClient';\nimport { generateAuthConfig } from '../helpers';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const exportAPI = async (origin, body) =>\n callApi(\n origin,\n '/export',\n generateAuthConfig('POST', JSON.stringify(body)),\n 'text',\n );\n","import { generateBaseCorsConfig } from './helpers';\n\nexport default async function callApi(\n origin,\n endpoint,\n config,\n parsingFn = 'json',\n) {\n // if the config is empty then default to the the base cors config\n let requestConfig = config;\n if (!requestConfig) {\n requestConfig = generateBaseCorsConfig();\n }\n const path = origin + endpoint;\n\n try {\n const response = await fetch(path, requestConfig);\n\n if (response.ok) {\n const data = await response[parsingFn]();\n return {\n data,\n errors: null,\n };\n }\n\n const errorResponse = await response.text();\n let errorData;\n try {\n // if error response can be parsed as json return the object\n errorData = JSON.parse(errorResponse);\n } catch (error) {\n // if json parsing fails then return the plain string/empty body\n errorData = errorResponse;\n }\n\n return {\n data: null,\n errors: [\n {\n defaultMessage: 'Network response was not ok',\n code: response.status,\n body: errorData,\n },\n ],\n };\n } catch (error) {\n log.error(\n 'ERROR: There has been a problem with the fetch operation: ',\n error,\n );\n return {\n data: null,\n errors: [error],\n };\n }\n}\n","import { nanoid } from 'nanoid';\nimport { COMPOUND_FILTER_AND } from 'utils/constants';\n\nexport const puppetFilter = [\n {\n id: nanoid(10),\n union: COMPOUND_FILTER_AND,\n isEditing: false,\n isSaved: true,\n filters: [],\n },\n];\n\nexport default puppetFilter;\n","import { COMPOUND_FILTER_AND, COMPOUND_FILTER_OR } from 'utils/constants';\nimport { nanoid } from 'nanoid';\nimport { puppetFilter as filterDefinition } from './definitions/puppetFilter';\n\nconst getUnionValue = (filter) => {\n return filter.indexOf(COMPOUND_FILTER_OR) > -1\n ? COMPOUND_FILTER_OR\n : COMPOUND_FILTER_AND;\n};\n\nconst filterService = {\n getFilters(filters) {\n return filters.map((userFilter) => {\n const matchedDefinition = filterDefinition.find(\n (filterDef) => filterDef.filter === userFilter.filter,\n );\n return {\n ...matchedDefinition,\n id: nanoid(10),\n union: getUnionValue(JSON.stringify(userFilter)),\n filters: [userFilter],\n };\n });\n },\n\n addFilterGroup(newFilter, filters) {\n const matchedDefinition = filterDefinition.find(\n (filterDef) => filterDef.filter === newFilter.filter,\n );\n\n return [\n ...filters,\n {\n ...matchedDefinition,\n id: nanoid(10),\n union: getUnionValue(JSON.stringify(newFilter)),\n filters: [newFilter],\n },\n ];\n },\n\n deleteFilterGroup(filterId, filters) {\n return filters.filter(({ id }) => id !== filterId);\n },\n\n // switch Union\n // delete filter tab\n // check if updatedFilterGroup is [] and call deleteFilterGroup\n updateFilterGroup(updatedFilterGroup, filters) {\n if (updatedFilterGroup.filters.length === 0) {\n return this.deleteFilterGroup(updatedFilterGroup.id, filters);\n }\n return filters.map((filter) => {\n if (filter.id !== updatedFilterGroup.id) {\n return filter;\n }\n return {\n ...filter,\n ...updatedFilterGroup,\n union: updatedFilterGroup.union,\n filters: updatedFilterGroup.filters,\n };\n });\n },\n\n appendFilter(originalFilter, newFilter) {\n const oldFilters = originalFilter.filters;\n return {\n ...originalFilter,\n filters: [...oldFilters, newFilter],\n };\n },\n\n hasPeServerFilter(currentFilters) {\n return currentFilters.some((groupFilters) => {\n return groupFilters.filters.some((filterCriteria) => {\n return (\n filterCriteria.filter.groupSource || filterCriteria.filter.source\n );\n });\n });\n },\n\n // This function will take the compound filters and convert them into the source and\n // query parameters for the node GQL query fro the node table\n // Due to limitations of PE Server filtering we can only filter by 1 PE Server or all PE servers.\n // This function will select the first PE in the compound filter, use it and ignore all others.\n getQueryFormattedFilters(filters, globalUnion = COMPOUND_FILTER_AND) {\n let formattedQueryFilters = {};\n let formattedSourceFilters = null;\n const sortedFilters = filters.map((filter) => {\n const formattedUnionFilter = [];\n\n // loop through all internal filter tags/criteria\n filter.filters.forEach((filterItem) => {\n if (filterItem.filter.source) {\n // capture any PE Server filters\n if (typeof formattedSourceFilters !== 'string') {\n formattedSourceFilters = filterItem.filter.source;\n }\n return true;\n }\n\n if (filterItem.filter.groupSource) {\n // capture and Node Group Filters\n if (typeof formattedSourceFilters !== 'string') {\n formattedSourceFilters = filterItem.filter.groupSource;\n }\n formattedUnionFilter.push(filterItem.filter.nodeGroupFilterValue);\n return true;\n }\n // capture any sourceless filters\n formattedUnionFilter.push(filterItem.filter);\n return true;\n });\n return formattedUnionFilter.length > 0\n ? { [filter.union]: formattedUnionFilter }\n : {};\n });\n\n formattedQueryFilters[globalUnion] = sortedFilters.filter(\n (value) => Object.keys(value).length !== 0,\n );\n formattedQueryFilters =\n formattedQueryFilters[globalUnion].length > 0\n ? formattedQueryFilters\n : undefined;\n\n // return the query filters and source filters as separate attributes\n return { formattedQueryFilters, formattedSourceFilters };\n },\n};\n\nexport default filterService;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { OptionsArray } from 'utils/en.propTypes';\nimport { useTranslation } from 'react-i18next';\nimport { Form } from '@puppet/react-components';\nimport './NodeTableFilter.scss';\n\nconst SingleSelectFilter = ({\n filterType,\n onCancel,\n onSubmit,\n label,\n placeholder,\n options,\n filterValue,\n}) => {\n const { t } = useTranslation('inventory');\n const [optionLabel, setOptionLabel] = useState('');\n const [optionFilter, setOptionFilter] = useState('');\n\n const getFilterLabels = (selectedFilter, filter) => {\n const selectedValue = filter[selectedFilter];\n const selectedOption = options.find(\n (option) => option.value === selectedValue,\n );\n setOptionLabel(selectedOption.label);\n setOptionFilter(filterValue[selectedValue]);\n };\n\n const assembleFilterValue = () => {\n if (optionLabel && optionFilter) {\n onSubmit({\n value: optionLabel,\n filter: optionFilter,\n });\n }\n };\n\n return (\n \n \n \n );\n};\n\nexport default SingleSelectFilter;\n\nSingleSelectFilter.propTypes = {\n filterType: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n placeholder: PropTypes.string.isRequired,\n options: OptionsArray.isRequired,\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n filterValue: PropTypes.shape({}).isRequired,\n};\n","import SingleSelectFilter from 'inventory/components/NodeTableFilter/SingleSelectFilter';\n\nexport default {\n component: SingleSelectFilter,\n placeholder: 'nodeTable.filter.status.input.placeholder',\n label: 'nodeTable.filter.status.input.label',\n filterValue: {\n unchanged: { latestReportStatus: { equalTo: 'unchanged' } },\n failed: { latestReportStatus: { equalTo: 'failed' } },\n iChange: {\n AND: [\n { latestReportCorrectiveChange: { equalTo: false } },\n { latestReportStatus: { equalTo: 'changed' } },\n ],\n },\n cChange: {\n AND: [\n { latestReportCorrectiveChange: { equalTo: true } },\n { latestReportStatus: { equalTo: 'changed' } },\n ],\n },\n },\n options: [\n { value: 'unchanged', label: 'No change' },\n { value: 'iChange', label: 'Intentional Change' },\n { value: 'cChange', label: 'Corrective Change' },\n { value: 'failed', label: 'Failure' },\n ],\n};\n","import SingleSelectFilter from 'inventory/components/NodeTableFilter/SingleSelectFilter';\n\nexport default {\n component: SingleSelectFilter,\n placeholder: 'nodeTable.filter.status.input.placeholder',\n label: 'nodeTable.filter.status.input.label',\n filterValue: {\n noop: { latestReportNoop: { equalTo: true } },\n enforced: { latestReportNoop: { equalTo: false } },\n },\n options: [\n { value: 'noop', label: 'No-op' },\n { value: 'enforced', label: 'Enforced' },\n ],\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { OptionsArray } from 'utils/en.propTypes';\nimport { Form } from '@puppet/react-components';\nimport { useTranslation } from 'react-i18next';\nimport './NodeTableFilter.scss';\n\nconst NodeGroupFilter = ({\n onCancel,\n label,\n placeholder,\n options,\n onFormChange,\n onSubmit,\n}) => {\n const { t } = useTranslation('inventory');\n\n const [filteredNodeGroupOptions, setFilteredNodeGroupOptions] = useState(\n options?.nodeGroup,\n );\n const [isSubmittable, setIsSubmittable] = useState(false);\n\n useEffect(() => {\n setFilteredNodeGroupOptions(options.nodeGroup);\n }, [options.nodeGroup]);\n\n const handleNodeGroupFilter = (searchTerm) => {\n const newFilteredNodeGroups = options.nodeGroup.filter(\n ({ label: nestedLabel }) => {\n return nestedLabel.toLowerCase().includes(searchTerm.toLowerCase());\n },\n );\n setFilteredNodeGroupOptions(newFilteredNodeGroups);\n };\n\n const canSubmit = (field, values) => {\n onFormChange(field, values);\n setIsSubmittable(!Object.values(values).some((x) => x === undefined));\n };\n\n return (\n \n \n \n \n );\n};\n\nexport default NodeGroupFilter;\n\nNodeGroupFilter.propTypes = {\n label: PropTypes.shape({\n peMasterServer: PropTypes.string,\n nodeGroup: PropTypes.string,\n }).isRequired,\n\n placeholder: PropTypes.shape({\n peMasterServer: PropTypes.string,\n nodeGroup: PropTypes.string,\n }).isRequired,\n options: PropTypes.shape({\n peMasterServer: OptionsArray,\n nodeGroup: OptionsArray,\n }).isRequired,\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n onFormChange: PropTypes.func.isRequired,\n};\n","import NodeGroupFilter from 'inventory/components/NodeTableFilter/NodeGroupFilter';\nimport peMasterServerQuery from 'inventory/services/graphql/queries/queryPeMasterServer.gql';\nimport queryNodeGroup from 'inventory/services/graphql/queries/queryNodeGroup.gql';\n\nexport default {\n component: NodeGroupFilter,\n placeholder: {\n peMasterServer: 'nodeTable.filter.peMasterServer.input.placeholder',\n nodeGroup: 'nodeTable.filter.nodeGroup.input.placeholder',\n },\n label: {\n peMasterServer: 'nodeTable.filter.peMasterServer.input.label',\n nodeGroup: 'nodeTable.filter.nodeGroup.input.label',\n },\n options: {\n peMasterServer: [],\n nodeGroup: [],\n },\n defaultQuery: 'peMasterServer',\n inputMapper: {\n peMasterServer: {\n queryVariables: (field, values) => {\n return {\n nextQuery: 'nodeGroup',\n variables: {\n source: values.peMasterServer,\n },\n };\n },\n query: peMasterServerQuery,\n after: (data, nodeGroupSchema) => {\n const results = data?.data?.puppetEnterprise?.puppetEnterprise;\n return {\n ...nodeGroupSchema,\n options: {\n ...nodeGroupSchema.options,\n peMasterServer: results.map((server) => {\n return {\n value: server.puppetServerEndpoint.substring(\n 0,\n server.puppetServerEndpoint.indexOf(':'),\n ),\n label: server.name,\n };\n }),\n },\n filterValue: results.reduce(\n (result, { name, puppetServerEndpoint }) => ({\n ...result,\n [name]: {\n source: puppetServerEndpoint.substring(\n 0,\n puppetServerEndpoint.indexOf(':'),\n ),\n },\n }),\n {},\n ),\n };\n },\n },\n nodeGroup: {\n query: queryNodeGroup,\n after: (data, nodeGroupSchema) => {\n const results = data?.data?.groups?.groups;\n return {\n ...nodeGroupSchema,\n options: {\n ...nodeGroupSchema.options,\n nodeGroup: results.map((nodeGroup) => {\n return {\n value: nodeGroup.name,\n label: nodeGroup.name,\n nodeGroupId: nodeGroup.id,\n };\n }),\n },\n filterValue: results.reduce(\n (result, { id }) => ({\n ...result,\n [id]: { group: { id: { equalTo: id } } },\n }),\n {},\n ),\n };\n },\n },\n },\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { OptionsArray } from 'utils/en.propTypes';\nimport './NodeTableFilter.scss';\nimport { useTranslation } from 'react-i18next';\nimport { Form } from '@puppet/react-components';\n\nconst ComplexOperatorFilter = ({\n onCancel,\n onSubmit,\n name,\n placeholder,\n label,\n defaultOptions,\n filterValue,\n options,\n}) => {\n const { t } = useTranslation('inventory');\n const [filteredOptions, setFilteredOptions] = useState([]);\n const [isSubmittable, setIsSubmittable] = useState(false);\n\n useEffect(() => {\n if (options.autoComplete) {\n setFilteredOptions(options.autoComplete);\n }\n }, [options]);\n\n const handleFactValueFilter = (searchTerm) => {\n if (options.autoComplete) {\n const newFilteredFacts = options.autoComplete.filter((listOptions) => {\n return listOptions.label\n .toLowerCase()\n .includes(searchTerm.toLowerCase());\n });\n setFilteredOptions(newFilteredFacts);\n }\n };\n\n const canSubmit = (selectedFilter, change) => {\n const { autoComplete, textInput } = name;\n if (autoComplete) {\n setIsSubmittable(\n change[autoComplete]?.length > 0 && change[textInput]?.length > 0,\n );\n } else {\n setIsSubmittable(change[textInput]?.length > 0);\n }\n };\n const getOptionValues = (listOptions, value) => {\n const selectedOption = listOptions.find((option) => option.value === value);\n\n return {\n label: selectedOption ? selectedOption.label : '',\n value: selectedOption ? selectedOption.value : '',\n };\n };\n\n const presenceCheck = (submittedValues) => {\n const autoCompleteCheck = name.autoComplete\n ? submittedValues[name.autoComplete]\n : false;\n const textCheck = submittedValues[name.textInput];\n return (\n (name.autoComplete && Boolean(autoCompleteCheck) === false) ||\n Boolean(textCheck) === false\n );\n };\n\n const getFilterObj = (submittedValues, operatorFilter, factNameFilter) => {\n const operatorFilterValue = filterValue?.operator[operatorFilter?.value];\n const filterObject = {\n name: factNameFilter.value,\n [operatorFilterValue.value]: submittedValues[name.textInput],\n };\n if (operatorFilterValue.not) {\n return {\n NOT: [{ facts: filterObject }],\n };\n }\n\n return { facts: filterObject };\n };\n\n const assembleFilterValue = (submittedValues) => {\n const errors = presenceCheck(submittedValues);\n if (!errors) {\n const factNameFilter = name.autoComplete\n ? getOptionValues(\n options.autoComplete,\n submittedValues[name.autoComplete],\n )\n : defaultOptions.autoComplete;\n const operatorFilter = submittedValues[name.operator]\n ? getOptionValues(options.operator, submittedValues[name.operator])\n : defaultOptions.operator;\n onSubmit({\n fact: name.autoComplete ? factNameFilter.label : null,\n operator: operatorFilter.label,\n value: submittedValues[name.textInput],\n filter: getFilterObj(submittedValues, operatorFilter, factNameFilter),\n });\n }\n };\n\n return (\n \n {name.autoComplete && (\n \n )}\n \n \n \n );\n};\n\nexport default ComplexOperatorFilter;\n\nComplexOperatorFilter.propTypes = {\n name: PropTypes.shape({\n autoComplete: PropTypes.string,\n operator: PropTypes.string,\n textInput: PropTypes.string,\n }).isRequired,\n placeholder: PropTypes.shape({\n autoComplete: PropTypes.string,\n operator: PropTypes.string,\n textInput: PropTypes.string,\n }).isRequired,\n label: PropTypes.shape({\n autoComplete: PropTypes.string,\n operator: PropTypes.string,\n textInput: PropTypes.string,\n }).isRequired,\n defaultOptions: PropTypes.shape({\n autoComplete: OptionsArray,\n operator: OptionsArray,\n }).isRequired,\n filterValue: PropTypes.shape({\n operator: OptionsArray,\n }).isRequired,\n options: PropTypes.shape({\n autoComplete: OptionsArray,\n operator: OptionsArray,\n }).isRequired,\n onCancel: PropTypes.func.isRequired,\n onSubmit: PropTypes.func.isRequired,\n};\n","export default {\n placeholder: 'nodeTable.filter.factValue.operator.placeholder',\n name: 'operator',\n label: 'nodeTable.filter.factValue.operator.label',\n filterValue: {\n contains: {\n not: false,\n value: 'like',\n },\n notContain: {\n not: true,\n value: 'like',\n },\n equals: {\n not: false,\n value: 'equalTo',\n },\n notEqual: {\n not: true,\n value: 'equalTo',\n },\n },\n default: {\n value: 'contains',\n label: 'Contains',\n },\n options: [\n { value: 'contains', label: 'Contains' },\n { value: 'notContain', label: 'Does not contain' },\n { value: 'equals', label: 'Equals' },\n { value: 'notEqual', label: 'Not equal to' },\n ],\n};\n","import ComplexOperatorFilter from 'inventory/components/NodeTableFilter/ComplexOperatorFilter';\nimport operator from './commonOptions/operator';\n\nexport default {\n component: ComplexOperatorFilter,\n operator,\n\n name: {\n operator: operator.name,\n textInput: 'textValue',\n },\n placeholder: {\n operator: operator.placeholder,\n textInput: 'nodeTable.filter.operatingSystem.textInput.placeholder',\n },\n label: {\n operator: operator.label,\n textInput: 'nodeTable.filter.operatingSystem.textInput.label',\n },\n options: {\n operator: operator.options,\n },\n defaultOptions: {\n operator: operator.default,\n autoComplete: { label: 'Operating System', value: 'operatingsystem' },\n },\n filterValue: {\n operator: operator.filterValue,\n },\n};\n","import SingleSelectFilter from 'inventory/components/NodeTableFilter/SingleSelectFilter';\nimport peMasterServerQuery from 'inventory/services/graphql/queries/queryPeMasterServer.gql';\n\nexport default {\n component: SingleSelectFilter,\n placeholder: 'nodeTable.filter.peMasterServer.input.placeholder',\n label: 'nodeTable.filter.peMasterServer.input.label',\n query: peMasterServerQuery,\n options: [],\n after: (data, peMasterServer) => {\n const results = data?.data?.puppetEnterprise?.puppetEnterprise;\n return {\n ...peMasterServer,\n // set the options and filterValue metadata based on the query results\n options: results.map(({ name }) => ({\n value: name,\n label: name,\n })),\n filterValue: results.reduce(\n (result, { name, puppetServerEndpoint }) => ({\n ...result,\n [name]: {\n source: puppetServerEndpoint.substring(\n 0,\n puppetServerEndpoint.indexOf(':'),\n ),\n },\n }),\n {},\n ),\n };\n },\n};\n","import ComplexOperatorFilter from 'inventory/components/NodeTableFilter/ComplexOperatorFilter';\nimport queryFactPaths from 'inventory/services/graphql/queries/queryFactPaths.gql';\nimport operator from './commonOptions/operator';\n\nexport default {\n component: ComplexOperatorFilter,\n query: queryFactPaths,\n name: {\n autoComplete: 'factName',\n operator: operator.name,\n textInput: 'textValue',\n },\n placeholder: {\n autoComplete: 'nodeTable.filter.factValue.input.placeholder',\n operator: operator.placeholder,\n textInput: 'nodeTable.filter.factValue.textInput.placeholder',\n },\n label: {\n autoComplete: 'nodeTable.filter.factValue.input.label',\n operator: operator.label,\n textInput: 'nodeTable.filter.factValue.textInput.label',\n },\n options: {\n operator: [],\n autoComplete: [],\n },\n defaultOptions: {\n operator: operator.default,\n autoComplete: { label: 'Operating System', value: 'operatingsystem' },\n },\n filterValue: {\n operator: operator.filterValue,\n },\n after: (data, queryFactPaths2) => {\n const rawFacts = data?.data?.factPaths ?? [];\n return {\n ...queryFactPaths2,\n options: {\n autoComplete: rawFacts\n .filter((fact, index) => rawFacts.indexOf(fact) === index)\n .map((fact) => {\n return {\n value: fact,\n label: fact,\n };\n }),\n operator: operator.options,\n },\n };\n },\n};\n","import changeStatus from './changeStatus';\nimport noopStatus from './noopStatus';\nimport nodeGroup from './nodeGroup';\nimport operatingSystem from './operatingSystem';\nimport peMasterServer from './peMasterServer';\nimport factValue from './factValue';\n\nexport default {\n changeStatus,\n noopStatus,\n nodeGroup,\n operatingSystem,\n peMasterServer,\n factValue,\n};\n","import React, { useState, useEffect, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport gql from 'graphql-tag';\nimport { useTranslation } from 'react-i18next';\nimport { Table } from '@puppet/data-grid';\nimport { useQuery, useApolloClient } from '@apollo/client';\nimport {\n Badge,\n Link,\n Code,\n Button,\n Input,\n Heading,\n} from '@puppet/react-components';\nimport { format } from 'date-fns';\nimport download from 'downloadjs';\nimport ColumnPicker from 'inventory/components/ColumnPicker';\nimport ConditionalRender from 'inventory/components/ConditionalRender';\nimport classnames from 'classnames';\nimport TablePager from 'components/TablePager';\nimport QueryError from 'inventory/components/QueryError';\nimport { TABLE_LIMIT } from 'utils/constants';\nimport NodeTableFilter from 'inventory/components/NodeTableFilter';\nimport changeStatusText from 'inventory/utils/changeStatusText';\nimport { exportAPI } from 'utils/api/query';\nimport { OptionsArray } from 'utils/en.propTypes';\nimport filterService from 'inventory/utils/filters/index';\nimport filterImport from './filters';\nimport './NodeTable.scss';\n\nexport const GET_NODES_DATA = gql`\n query getNodesData(\n $id: ID!\n $limit: Int\n $offset: Int\n $filter: HostFilter\n $source: String\n ) {\n hosts(\n workspace: { id: $id, source: $source }\n limit: $limit\n offset: $offset\n filter: $filter\n ) {\n totalCount\n nodes {\n id\n facts\n latestReportTime\n latestReportStatus\n latestReportCorrectiveChange\n source\n }\n pageInfo {\n totalPages\n currentPage\n hasNextPage\n hasPreviousPage\n prevOffset\n nextOffset\n }\n }\n }\n`;\n\nexport const GET_FACT_PATHS = gql`\n query GET_FACT_PATHS($id: ID!) {\n factPaths(workspace: { id: $id })\n }\n`;\n\nconst getBadgeFormat = (status) => {\n switch (status) {\n case 'intentional change': {\n return 'info';\n }\n case 'corrective change': {\n return 'warning';\n }\n case 'failure': {\n return 'danger';\n }\n default: {\n return 'neutral';\n }\n }\n};\n\nconst LatestReportStatusCell = ({ cellData }) => {\n return cellData ? (\n \n {cellData}\n \n ) : null;\n};\n\nconst NodeDetailsLink = ({ columnData, cellData, rowIndex }) => {\n const source = columnData?.queryData?.[rowIndex]?.source;\n return (\n \n {cellData}\n \n );\n};\n\nexport const FactColumnCell = ({ cellData }) => {\n if (typeof cellData === 'object') {\n return (\n \n {JSON.stringify(cellData, 0, 2)}\n \n );\n }\n if (typeof cellData === 'boolean') {\n return
    {JSON.stringify(cellData)}
    ;\n }\n return
    {cellData}
    ;\n};\n\nconst constructFactData = (data, columnsToView) => {\n return data\n ? data\n ?.map((factPickerValue) => {\n return {\n value: factPickerValue,\n label: factPickerValue,\n };\n })\n .filter((fact) => !columnsToView?.includes(fact.value))\n : [];\n};\n\nexport const DEFAULT_FACTS = {\n Name: 'Name',\n LatestReport: 'Latest Report',\n Status: 'Status',\n PEServer: 'PE Server',\n ipaddress: 'networking.ip',\n operatingsystem: 'os.name',\n};\n\nconst defaultFactList = () => {\n const defaultFacts = [\n {\n factname: DEFAULT_FACTS.Name,\n isActive: true,\n defaultFact: true,\n },\n {\n factname: DEFAULT_FACTS.LatestReport,\n isActive: true,\n defaultFact: true,\n },\n {\n factname: DEFAULT_FACTS.Status,\n isActive: true,\n defaultFact: true,\n },\n {\n factname: DEFAULT_FACTS.PEServer,\n isActive: true,\n defaultFact: true,\n },\n {\n factname: DEFAULT_FACTS.ipaddress,\n isActive: true,\n defaultFact: true,\n },\n {\n factname: DEFAULT_FACTS.operatingsystem,\n isActive: true,\n defaultFact: true,\n },\n ];\n\n return defaultFacts;\n};\n\nconst determineFactData = (factname) => {\n switch (factname) {\n case DEFAULT_FACTS.Name:\n return 'id';\n case DEFAULT_FACTS.LatestReport:\n return 'latestReportTime';\n case DEFAULT_FACTS.Status:\n return 'latestReportStatus';\n case DEFAULT_FACTS.PEServer:\n return 'source';\n default:\n return factname;\n }\n};\n\nconst determineExportPath = (factname) => {\n switch (factname) {\n case DEFAULT_FACTS.Name:\n return 'id';\n case DEFAULT_FACTS.LatestReport:\n return 'latestReportTime';\n case DEFAULT_FACTS.Status:\n return 'latestReportStatus';\n case DEFAULT_FACTS.PEServer:\n return 'source';\n default:\n return `facts.${factname}`;\n }\n};\n\nexport const determineExportData = (factname) => {\n return {\n name: factname,\n path: `$.${determineExportPath(factname)}`,\n };\n};\n\nexport const constructTableData = (columnsToView, nodes = []) => {\n return nodes.map((hostData) => {\n return columnsToView.reduce((accumulator, factname) => {\n const isDefaultFact = defaultFactList().find(\n (defaultFact) => defaultFact.factname === factname,\n );\n // This is a special case to update the status field to account for intended or corrective changes.\n // TODO: move the text change functionality to a cell getter on the data grid\n if (factname === DEFAULT_FACTS.Status) {\n return {\n ...accumulator,\n [factname]: changeStatusText(\n hostData.latestReportStatus,\n hostData.latestReportCorrectiveChange,\n ),\n };\n }\n const factDataId = determineFactData(factname);\n\n const getNested = (obj, path) => {\n return (\n path\n .split('.')\n .reduce(\n (curLevel, nextLevel) => curLevel && curLevel[nextLevel],\n obj,\n ) ?? undefined\n );\n };\n\n return {\n ...accumulator,\n [factname]: isDefaultFact\n ? getNested(hostData, factDataId) ??\n getNested(hostData?.facts, factDataId)\n : getNested(hostData?.facts, factDataId),\n };\n }, {});\n });\n};\n\nexport const defaultColumnsToView = (initialColumns) => {\n const defaultColumns = [\n 'Name',\n 'Latest Report',\n 'Status',\n 'PE Server',\n 'networking.ip',\n 'os.name',\n ];\n\n if (initialColumns) {\n return initialColumns;\n }\n\n return defaultColumns;\n};\nasync function exportData(columns, variables, setExporting) {\n setExporting(true);\n\n const body = {\n query: GET_NODES_DATA.loc?.source?.body,\n responsePath: '$.data.hosts.nodes',\n pageInfoPath: '$.data.hosts.pageInfo',\n variables,\n columns: columns.map((column) => column.export),\n };\n\n const { data } = await exportAPI('', body);\n if (data) {\n const date = format(new Date(), 'yyyy-mm-dd_HHmm');\n download(data, `nodes-${date}.csv`, 'text/csv');\n }\n\n setExporting(false);\n}\n\nconst NodeTable = ({\n linkToNodeDetails,\n workspaceId,\n tableDisplayMessages,\n getSubmittedFilters,\n getSelectedColumns,\n initialFilter,\n initialColumns,\n openAddFilterModal,\n onModalClose,\n isModalOpen,\n setIsTableLoading,\n filterModalTitle,\n onApply,\n availableFilters,\n setSelectedFilter,\n selectedFilter,\n onAddCompoundFilter,\n compoundFilters,\n applyCompoundFilters,\n setApplyCompoundFilters,\n globalFilterUnion,\n setShowNoResults,\n}) => {\n // If a initial filter exists break down and assign initial values\n\n let parseFilters = [];\n if (initialFilter !== undefined) {\n parseFilters = JSON.parse(initialFilter);\n }\n\n const parsedColumns = initialColumns ? JSON.parse(initialColumns) : '';\n const { t } = useTranslation('inventory');\n const limit = TABLE_LIMIT;\n const [offset, setOffset] = useState(0);\n const [emptyStateHeader, setEmptyStateHeader] = useState('');\n const [emptyStateMessage, setEmptyStateMessage] = useState('');\n const [closeColumnPicker, setCloseColumnPicker] = useState(false);\n const [exporting, setExporting] = useState(false);\n const [isFiltered, setIsFiltered] = useState(!!initialFilter);\n // This will hold the current filter array used in the table filter query\n const [submittedFilters] = useState(initialFilter ? parseFilters : []);\n\n // This will hold the filter array the user can manipulate in the NodeTable Filter modal\n const [activeFilters, setActiveFilters] = useState(submittedFilters);\n\n // This will hold the columns on display, this variable is only used to pass this info to savedViews mutation\n const [selectedColumns, setSelectedColumns] = useState(\n defaultColumnsToView(parsedColumns),\n );\n\n const { formattedQueryFilters, formattedSourceFilters } =\n filterService.getQueryFormattedFilters(compoundFilters, globalFilterUnion);\n\n const [nodeSearchValue, setNodeSearchValue] = useState('');\n\n // Passes on the filters and columns to be stored\n useEffect(() => {\n getSubmittedFilters(submittedFilters);\n }, [submittedFilters, getSubmittedFilters]);\n\n useEffect(() => {\n getSelectedColumns(selectedColumns);\n }, [selectedColumns, getSelectedColumns]);\n\n const [queryFilter, setQueryFilter] = useState(formattedQueryFilters);\n const [sourceFilter, setSourceFilter] = useState(formattedSourceFilters);\n\n const [filters, setFilters] = useState(filterImport);\n\n const apolloClient = useApolloClient();\n\n const filterDisplayMessages = {\n buttonLabel: t('nodeTable.filter.button.label'),\n modalTitle: t(filterModalTitle),\n selectLabel: t('nodeTable.filter.modal.select.label'),\n selectPlaceholderText: t('nodeTable.filter.modal.select.placeholder'),\n activeTitle: t('nodeTable.filter.modal.activeTitle'),\n addFilterButton: t('nodeTable.filter.modal.button.addFilterButton'),\n clearAllButton: t('nodeTable.filter.modal.button.clearAllButton'),\n applyAllButton: t('nodeTable.filter.modal.button.applyAllButton'),\n clearFiltersButton: t('nodeTable.filter.button.label.clear'),\n activeFiltersButton: t('nodeTable.filter.button.label.active'),\n cancelButton: t('nodeTable.filter.modal.button.cancelButton'),\n emptyList: t('nodeTable.filter.modal.emptyList'),\n addFilter: t('nodeTable.add.filter.button'),\n };\n\n const queryVariables = {\n id: workspaceId,\n limit,\n offset,\n filter: queryFilter,\n source: sourceFilter,\n };\n\n const { data, loading, error, client } = useQuery(GET_NODES_DATA, {\n variables: queryVariables,\n });\n\n const columnsToRender = defaultColumnsToView(parsedColumns);\n\n const { data: factPathData } = useQuery(GET_FACT_PATHS, {\n variables: {\n id: workspaceId,\n },\n });\n\n const [columnsToView, setColumnsToView] = useState(columnsToRender);\n const [nodeTableData, setNodeTableData] = useState(\n constructTableData(defaultColumnsToView(), data?.hosts?.nodes),\n );\n\n const [columnSchema, setColumnSchema] = useState([]);\n\n useEffect(() => {\n const newtabledata = constructTableData(columnsToView, data?.hosts?.nodes);\n setNodeTableData(newtabledata);\n const columns = columnsToView.map((column) => {\n if (column === DEFAULT_FACTS.Name) {\n return {\n label: 'Name',\n dataKey: 'Name',\n columnData: { linkToNodeDetails, queryData: data?.hosts?.nodes },\n cellRenderer: NodeDetailsLink,\n export: determineExportData(column),\n };\n }\n\n if (column === DEFAULT_FACTS.Status) {\n return {\n label: 'Status',\n dataKey: 'Status',\n cellRenderer: LatestReportStatusCell,\n export: determineExportData(column),\n };\n }\n\n return {\n label: column,\n dataKey: column,\n cellRenderer: FactColumnCell,\n export: determineExportData(column),\n };\n });\n\n setColumnSchema(columns);\n }, [data, columnsToView, linkToNodeDetails]);\n\n // end of useEffect block\n\n useEffect(() => {\n setIsTableLoading(loading);\n if (isFiltered && !loading) {\n setEmptyStateHeader(tableDisplayMessages.emptyFilterDataHeader);\n } else {\n setEmptyStateHeader(\n loading\n ? tableDisplayMessages.loadingHeader\n : tableDisplayMessages.noDataHeader,\n );\n }\n setCloseColumnPicker(loading);\n\n setEmptyStateMessage(loading ? tableDisplayMessages.loadingMessage : '');\n }, [\n loading,\n tableDisplayMessages.loadingHeader,\n tableDisplayMessages.loadingMessage,\n tableDisplayMessages.noDataHeader,\n tableDisplayMessages.emptyFilterDataHeader,\n isFiltered,\n setIsTableLoading,\n ]);\n\n useEffect(() => {\n const nodeResults = data?.hosts?.nodes ?? [];\n setShowNoResults(nodeResults.length === 0 && !error && !loading);\n }, [data, error, loading, setShowNoResults]);\n\n const nodeQueryData = data?.hosts ?? {};\n const totalCount = data?.hosts?.totalCount ?? 0;\n\n const setColumns = (column) => {\n const facts = column.map((value) => {\n return value.factname;\n });\n setColumnsToView(facts);\n setSelectedColumns(facts);\n };\n\n const onSelectedFilterChange = async (key) => {\n setSelectedFilter(key);\n if (filters[key]?.inputMapper) {\n const selectedFilterDefaultQuery =\n filters[key]?.inputMapper?.[filters[key].defaultQuery];\n try {\n const filterQueryData = await apolloClient.query({\n query: selectedFilterDefaultQuery?.query,\n variables: queryVariables,\n });\n setFilters({\n ...filters,\n [key]: selectedFilterDefaultQuery?.after?.(\n filterQueryData,\n filters[key],\n ),\n });\n } catch (selectedFilterDefaultQueryError) {\n log(\n `onSelectedFilterChange-Default-Query: ${selectedFilterDefaultQueryError}`,\n );\n }\n } else if (filters[key]?.query) {\n try {\n const filterQueryData = await apolloClient.query({\n query: filters[key]?.query,\n // pass through all variables (workspaceID, filter, sourceFilter etc)\n // the sub queries can use whichever they need by defining them as variables in the .gql files\n variables: queryVariables,\n });\n\n setFilters({\n ...filters,\n [key]: filters[key]?.after?.(filterQueryData, filters[key]),\n });\n } catch (filterQueryDataError) {\n log(`onSelectedFilterChange: ${filterQueryDataError}`);\n }\n }\n };\n\n // Adds a new filter created by the user to the active filter array\n const onAdd = (filterArg) => {\n let filter = filterArg;\n const selectedOption = availableFilters.find(\n (option) => option.value === selectedFilter,\n );\n\n // Remove any cached query options from a previous render\n setFilters(filterImport);\n\n if (filter.nodeGroup) {\n const selectedOptionNodeGroup = filters[\n selectedFilter\n ]?.options?.nodeGroup.find((option) => option.value === filter.nodeGroup);\n\n const selectedNodeGroupSource = { groupSource: filter.peMasterServer };\n const nodeGroupFilterValue =\n filters[selectedFilter]?.filterValue[\n selectedOptionNodeGroup?.nodeGroupId\n ];\n\n const nodeGroupFilter = {\n filter: {\n ...selectedNodeGroupSource,\n nodeGroupFilterValue,\n },\n label: selectedOption?.label,\n value: selectedOptionNodeGroup?.label,\n };\n\n if (openAddFilterModal) {\n onAddCompoundFilter(nodeGroupFilter);\n } else {\n setActiveFilters((activeFilters1) => [\n ...activeFilters1,\n nodeGroupFilter,\n ]);\n }\n } else {\n const getFilterPreAppendedLabel =\n selectedOption?.value === 'factValue'\n ? t('nodeTable.filter.factValue.display.label')\n : selectedOption?.label;\n filter = {\n ...filter,\n label: getFilterPreAppendedLabel,\n };\n if (openAddFilterModal) {\n onAddCompoundFilter(filter);\n } else {\n setActiveFilters((activeFilters2) => [...activeFilters2, filter]);\n }\n }\n setSelectedFilter(null);\n };\n\n // Some minor validation for \"onAdd\" as it needs a very specific value\n onAdd.PropTypes = PropTypes.shape({\n fact: PropTypes.string,\n operator: PropTypes.string,\n value: PropTypes.string.isRequired,\n filter: PropTypes.shape({}).isRequired,\n });\n\n // This wll remove a filter on the active filter array\n const onRemove = (filterIndex) => {\n setActiveFilters([\n ...activeFilters.slice(0, filterIndex),\n ...activeFilters.slice(filterIndex + 1),\n ]);\n setNodeSearchValue('');\n };\n\n // This will set the active filter array to an empty array\n const onClearAll = () => {\n setActiveFilters([]);\n setNodeSearchValue('');\n };\n\n // Called once the user has finished selecting their filters\n // Will copy the active filters to the submitted filters\n // Will loop through the submitted filters for the actual filter object and set it to the filter used in the GQL query\n const onApplyAll = useCallback(() => {\n setNodeSearchValue('');\n setIsFiltered(compoundFilters.length > 0);\n setOffset(0);\n const formattedCompoundFilters = filterService.getQueryFormattedFilters(\n compoundFilters,\n globalFilterUnion,\n );\n setQueryFilter(formattedCompoundFilters.formattedQueryFilters);\n setSourceFilter(formattedCompoundFilters.formattedSourceFilters);\n }, [compoundFilters, globalFilterUnion]);\n\n useEffect(() => {\n if (applyCompoundFilters) {\n onApplyAll();\n setApplyCompoundFilters(false);\n }\n }, [applyCompoundFilters, onApplyAll, setApplyCompoundFilters]);\n\n const onFilterFormChange = async (fieldName, values) => {\n try {\n const doesDefaultQueryNeedTriggered =\n filters[selectedFilter]?.defaultQuery === fieldName;\n\n if (doesDefaultQueryNeedTriggered) {\n const { nextQuery, variables } =\n filters[selectedFilter]?.inputMapper?.[fieldName]?.queryVariables?.(\n fieldName,\n values,\n ) ?? {};\n\n const filterInputSchema =\n filters[selectedFilter]?.inputMapper[nextQuery];\n\n const result = await apolloClient.query({\n query: filterInputSchema?.query,\n variables: {\n id: workspaceId,\n ...variables,\n },\n });\n\n // Update our filters state to propagate through to trigger re-render\n setFilters({\n ...filters,\n [selectedFilter]: filterInputSchema?.after(\n result,\n filters[selectedFilter],\n ),\n });\n }\n } catch (filterFormChangeError) {\n log(`onFilterFormChange: ${filterFormChangeError}`);\n }\n };\n\n useEffect(() => {\n if (!isModalOpen && activeFilters !== submittedFilters) {\n onApplyAll();\n }\n }, [activeFilters, onApplyAll, isModalOpen, submittedFilters]);\n\n const executeSearch = () => {\n if (nodeSearchValue.length > 0) {\n if (queryFilter) {\n const originalQueryFilters = queryFilter[globalFilterUnion];\n setQueryFilter({\n ...queryFilter,\n [globalFilterUnion]: [\n ...originalQueryFilters,\n { certname: { like: nodeSearchValue } },\n ],\n });\n } else {\n setQueryFilter({\n [globalFilterUnion]: [{ certname: { like: nodeSearchValue } }],\n });\n }\n }\n };\n\n const checkSearchValue = (searchValue) => {\n if (searchValue === '' && nodeSearchValue.length > 0 && queryFilter) {\n const filterIndex = queryFilter.length;\n if (activeFilters.length === 0) {\n setQueryFilter(undefined);\n } else {\n const originalQueryFilters = queryFilter[globalFilterUnion];\n setQueryFilter({\n ...queryFilter,\n [globalFilterUnion]: [...originalQueryFilters.splice(filterIndex, 1)],\n });\n }\n }\n setNodeSearchValue(searchValue);\n };\n\n const factData = constructFactData(factPathData?.factPaths, columnsToRender);\n return (\n
    \n \n \n \n {t('nodeTable.filter.modal.searchBarTitle')}\n \n \n
    \n
    \n {\n onModalClose();\n }}\n isModalOpen={isModalOpen}\n onModalClose={onModalClose}\n onFormChange={onFilterFormChange}\n compoundFiltering={openAddFilterModal}\n sourceFilter={sourceFilter}\n />\n
    \n
    \n {\n setColumns(activeFacts);\n }}\n factLimitSize={limit}\n closeColumnPicker={closeColumnPicker}\n />\n \n exportData(columnSchema, queryVariables, setExporting)\n }\n >\n {exporting\n ? t('nodeTable.export.button.exporting')\n : t('nodeTable.export.button.export')}\n \n
    \n
    \n\n
    \n \n 0}>\n \n {t('nodeTable.filter.button.applySearch')}\n \n \n
    \n
    \n
    \n \n
    \n {totalCount > 0 && (\n \n )}\n
    \n );\n};\n\nexport default NodeTable;\n\nLatestReportStatusCell.propTypes = {\n cellData: PropTypes.string.isRequired,\n};\n\nNodeDetailsLink.propTypes = {\n cellData: PropTypes.string.isRequired,\n columnData: PropTypes.objectOf({\n linkToNodeDetails: PropTypes.string,\n }).isRequired,\n rowIndex: PropTypes.number.isRequired,\n};\n\nFactColumnCell.propTypes = {\n cellData: PropTypes.string.isRequired,\n};\n\nNodeTable.propTypes = {\n linkToNodeDetails: PropTypes.string.isRequired,\n tableDisplayMessages: PropTypes.shape({\n loadingHeader: PropTypes.string,\n loadingMessage: PropTypes.string,\n noDataHeader: PropTypes.string,\n emptyFilterMessage: PropTypes.string,\n emptyFilterDataHeader: PropTypes.string,\n }).isRequired,\n workspaceId: PropTypes.string.isRequired,\n getSubmittedFilters: PropTypes.func.isRequired,\n getSelectedColumns: PropTypes.func.isRequired,\n initialColumns: PropTypes.string,\n initialFilter: PropTypes.string,\n openAddFilterModal: PropTypes.bool,\n onModalClose: PropTypes.func.isRequired,\n isModalOpen: PropTypes.bool.isRequired,\n onApply: PropTypes.func.isRequired,\n filters: PropTypes.shape({\n changeStatus: PropTypes.instanceOf(Object),\n factValue: PropTypes.instanceOf(Object),\n nodeGroup: PropTypes.instanceOf(Object),\n noopStatus: PropTypes.instanceOf(Object),\n operatingSystem: PropTypes.instanceOf(Object),\n }).isRequired,\n setIsTableLoading: PropTypes.func.isRequired,\n filterModalTitle: PropTypes.string,\n availableFilters: OptionsArray.isRequired,\n setSelectedFilter: PropTypes.func.isRequired,\n selectedFilter: PropTypes.string,\n onAddCompoundFilter: PropTypes.func.isRequired,\n compoundFilters: PropTypes.instanceOf(Array).isRequired,\n applyCompoundFilters: PropTypes.bool.isRequired,\n setApplyCompoundFilters: PropTypes.func.isRequired,\n globalFilterUnion: PropTypes.string.isRequired,\n setShowNoResults: PropTypes.func.isRequired,\n};\n\nNodeTable.defaultProps = {\n initialColumns: undefined,\n initialFilter: undefined,\n openAddFilterModal: false,\n filterModalTitle: 'nodeTable.filter.modal.title',\n selectedFilter: '',\n};\n","import NodeTable, { FactColumnCell } from './NodeTable';\n\nexport default NodeTable;\nexport { FactColumnCell };\n","// TODO remove and replace with design system components after next release\nimport React, { forwardRef } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport { Icon } from '@puppet/react-components';\n\nconst propTypes = {\n as: PropTypes.elementType,\n id: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n focused: PropTypes.bool.isRequired,\n /** Optional: choose an icon */\n icon: PropTypes.oneOf(Icon.AVAILABLE_ICONS),\n /** Or pass in your own svg... */\n svg: PropTypes.element,\n onMouseEnter: PropTypes.func.isRequired,\n onClick: PropTypes.func.isRequired,\n innerRef: PropTypes.func,\n disabled: PropTypes.bool,\n};\n\nconst defaultProps = {\n as: undefined,\n icon: null,\n svg: null,\n innerRef() {},\n disabled: false,\n};\n\nconst ActionMenuListItem = forwardRef(\n (\n {\n as: Element,\n id,\n children,\n focused,\n icon,\n svg,\n onMouseEnter,\n innerRef,\n disabled,\n ...rest\n },\n ref,\n ) => {\n if (Element) {\n return (\n \n \n {icon && }\n {svg && !icon && (\n \n )}\n {children}\n \n \n );\n }\n return (\n \n {icon && }\n {svg && !icon && }\n \n {children}\n \n \n );\n },\n);\n/* eslint-enable */\n\nActionMenuListItem.propTypes = propTypes;\nActionMenuListItem.defaultProps = defaultProps;\nActionMenuListItem.displayName = 'ActionMenuListItem';\n\nexport default ActionMenuListItem;\n","/* eslint-disable react/no-unused-class-component-methods */\n// TODO remove and replace with design system components after next release\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { Icon } from '@puppet/react-components';\nimport ActionMenuListItem from './ActionMenuListItem';\nimport './_menu-list.scss';\n\nconst isNil = (val) => val == null;\n\nconst focus = (element) => {\n // Not type checking that it has a focus method, that's on you!\n if (element) {\n element.focus();\n }\n};\n\nconst cancelEvent = (e) => {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n};\n\nconst UP_KEY_CODE = 38;\nconst DOWN_KEY_CODE = 40;\nconst HOME_KEY_CODE = 36;\nconst END_KEY_CODE = 35;\nconst ENTER_KEY_CODE = 13;\nconst ESC_KEY_CODE = 27;\nconst SPACE_KEY_CODE = 32;\n\nconst propTypes = {\n id: PropTypes.string.isRequired,\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n label: PropTypes.node.isRequired,\n icon: PropTypes.oneOf(Icon.AVAILABLE_ICONS),\n svg: PropTypes.element,\n onClick: PropTypes.func,\n as: PropTypes.elementType,\n }),\n ),\n onActionClick: PropTypes.func,\n onEscape: PropTypes.func,\n onBlur: PropTypes.func,\n className: PropTypes.string,\n style: PropTypes.shape({}),\n};\n\nconst defaultProps = {\n actions: [],\n onActionClick() {},\n onEscape() {},\n onBlur() {},\n className: '',\n style: {},\n};\n\nconst getActionId = (id, actionId) => `${id}-${actionId}`;\n\nconst getFocusedId = (focusedIndex, id, actions) =>\n isNil(focusedIndex) ? undefined : getActionId(id, actions[focusedIndex].id);\n\nclass ActionMenuList extends Component {\n constructor(props) {\n super(props);\n\n const { actions } = this.props;\n\n this.state = {\n focusedIndex: actions.length ? 0 : null,\n };\n\n /**\n * List of refs to action item elements\n */\n this.actionRefs = [];\n /**\n * List of refs to inner action item content, including rendered anchor\n * tags if used\n */\n this.actionInnerRefs = [];\n\n this.executeAction = this.executeAction.bind(this);\n this.onMouseEnterItem = this.onMouseEnterItem.bind(this);\n this.onMouseLeave = this.onMouseLeave.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.onFocus = this.onFocus.bind(this);\n }\n\n onFocus() {\n const { focusedIndex } = this.state;\n\n if (isNil(focusedIndex)) {\n this.focusFirst();\n }\n }\n\n onMouseEnterItem(focusedIndex) {\n this.setState({\n focusedIndex,\n });\n }\n\n onMouseLeave() {\n this.setState({\n focusedIndex: null,\n });\n }\n\n onArrowUp() {\n const { focusedIndex } = this.state;\n\n if (isNil(focusedIndex)) {\n this.focusLast();\n } else {\n this.focusItem(Math.max(0, focusedIndex - 1));\n }\n }\n\n onArrowDown() {\n const { focusedIndex } = this.state;\n const { actions } = this.props;\n\n if (isNil(focusedIndex)) {\n this.focusFirst();\n } else {\n this.focusItem(Math.min(actions.length - 1, focusedIndex + 1));\n }\n }\n\n onKeyDown(e) {\n const { onEscape } = this.props;\n\n switch (e.keyCode) {\n case UP_KEY_CODE: {\n this.onArrowUp();\n cancelEvent(e);\n break;\n }\n case DOWN_KEY_CODE: {\n this.onArrowDown();\n cancelEvent(e);\n break;\n }\n case HOME_KEY_CODE: {\n this.focusFirst();\n cancelEvent(e);\n break;\n }\n case END_KEY_CODE: {\n this.focusLast();\n cancelEvent(e);\n break;\n }\n case SPACE_KEY_CODE:\n case ENTER_KEY_CODE: {\n this.executeFocusedItem();\n cancelEvent(e);\n break;\n }\n case ESC_KEY_CODE: {\n onEscape(e);\n cancelEvent(e);\n break;\n }\n default:\n break;\n }\n }\n\n executeAction(e, onClick, id) {\n e.stopPropagation();\n const { onActionClick } = this.props;\n\n onActionClick(id);\n\n if (onClick) {\n onClick();\n }\n }\n\n focus() {\n focus(this.listRef);\n }\n\n focusFirst() {\n this.focusItem(0);\n }\n\n focusLast() {\n const { actions } = this.props;\n\n this.focusItem(actions.length - 1);\n }\n\n focusItem(focusedIndex) {\n this.setState({ focusedIndex });\n\n /**\n * Scrolls newly focused item into view if it is not\n */\n scrollIntoView(this.actionRefs[focusedIndex], {\n block: 'end',\n scrollMode: 'if-needed',\n });\n }\n\n executeFocusedItem() {\n const { focusedIndex } = this.state;\n\n // triggering click event so that links work\n if (!isNil(focusedIndex) && this.actionRefs[focusedIndex]) {\n const focusedElement = this.actionInnerRefs[focusedIndex];\n\n focusedElement.click();\n }\n }\n\n render() {\n const {\n executeAction,\n onMouseEnterItem,\n onMouseLeave,\n onKeyDown,\n onFocus,\n } = this;\n const { focusedIndex } = this.state;\n const { id, actions, className, style, ...rest } = this.props;\n\n const focusedId = getFocusedId(focusedIndex, id, actions);\n return (\n \n {\n this.listRef = el;\n }}\n {...rest}\n >\n {actions.map(\n (\n { id: actionId, label, icon, svg, onClick, disabled, ...other },\n index,\n ) => (\n onMouseEnterItem(index)}\n onClick={(e) =>\n disabled ? () => {} : executeAction(e, onClick, actionId)\n }\n disabled={disabled}\n ref={(el) => {\n this.actionRefs[index] = el;\n }}\n innerRef={(el) => {\n this.actionInnerRefs[index] = el;\n }}\n {...other}\n >\n {label}\n \n ),\n )}\n \n
    \n );\n }\n}\n/* eslint-enable */\n\nActionMenuList.propTypes = propTypes;\nActionMenuList.defaultProps = defaultProps;\n\nexport default ActionMenuList;\n","import ActionMenuList from './ActionMenuList';\n\nexport default ActionMenuList;\n","import React, { Component } from 'react';\nimport hoistStatics from 'hoist-non-react-statics';\n\nconst getDisplayName = (comp) => comp.displayName || comp.name || 'Component';\n\nlet idCount = 0;\n\nconst getId = () => {\n idCount += 1;\n\n return `rcid-${idCount}`;\n};\n\n/**\n * Higher order component that generates a unique id\n */\nconst withId = (WrappedComponent) => {\n const displayName = getDisplayName(WrappedComponent);\n\n class ComponentWithId extends Component {\n constructor(props) {\n super(props);\n\n this.id = getId();\n }\n\n render() {\n return ;\n }\n }\n\n ComponentWithId.displayName = displayName;\n\n hoistStatics(ComponentWithId, WrappedComponent);\n\n return ComponentWithId;\n};\n\nexport default withId;\n","// TODO remove and replace with design system components after next release\nimport React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Icon, Button } from '@puppet/react-components';\nimport ActionMenuList from './action-menu-list';\nimport withId from './withId';\nimport './_action-select.scss';\n\nconst anchorOrientation = PropTypes.oneOf([\n 'bottom right',\n 'top right',\n 'top left',\n 'bottom left',\n]);\n\nconst focus = (element) => {\n // Not type checking that it has a focus method, that's on you!\n if (element) {\n element.focus();\n }\n};\n\nconst getDropdownPosition = (target, anchor, margin) => {\n const { width, height } = target.getBoundingClientRect();\n\n switch (anchor) {\n case 'bottom right': {\n return {\n top: height + margin,\n right: 0,\n minWidth: width,\n };\n }\n case 'top right': {\n return {\n bottom: height + margin,\n right: 0,\n minWidth: width,\n };\n }\n case 'top left': {\n return {\n bottom: height + margin,\n left: 0,\n minWidth: width,\n };\n }\n case 'bottom left': {\n return {\n top: height + margin,\n left: 0,\n minWidth: width,\n };\n }\n default:\n return {};\n }\n};\n\nconst propTypes = {\n /**\n * This prop is automatically passed from the withID HOC\n * @ignore\n */\n id: PropTypes.string.isRequired,\n /** An Array of action objects */\n actions: PropTypes.arrayOf(\n PropTypes.shape({\n /** Unique action id */\n id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n /** Action text */\n label: PropTypes.node.isRequired,\n /** Optional icon rendered to the left of action text */\n icon: PropTypes.oneOf(Icon.AVAILABLE_ICONS),\n /** Optional custom icon rendered to the left of action text */\n svg: PropTypes.element,\n /** Action click handler. Not needed if the action is a link */\n onClick: PropTypes.func,\n /** Custom action element. Useful for creating navigation actions with as: 'a' or as: Link. Additionally, extra props not listed here are passed through to the action element. This allows custom props such as `href` or `to` to be passed to the inner action element. */\n as: PropTypes.elementType,\n /** Make a row unclickable */\n disabled: PropTypes.bool,\n }),\n ),\n label: PropTypes.string,\n /** Main visual variant */\n type: PropTypes.oneOf([\n 'primary',\n 'secondary',\n 'tertiary',\n 'danger',\n 'transparent',\n 'text',\n ]),\n /** If true, a focused button will use an inner instead of outer outline */\n innerFocus: PropTypes.bool,\n /** Additional property used for connotative variants (such as danger) to choose between a strong and soft version */\n weight: PropTypes.oneOf(['bold', 'subtle']),\n /** Anchor orientation of the dropdown menu */\n anchor: anchorOrientation,\n /** Optional icon to be rendered instead of / in addition to button text. If both an icon and text are present, the icon will be rendered before the text */\n icon: PropTypes.oneOf(Icon.AVAILABLE_ICONS),\n /** Is the button disabled? */\n disabled: PropTypes.bool,\n /** If true, button will render with a loading spinner */\n loading: PropTypes.bool,\n /** Optional additional className passed to the outer element */\n className: PropTypes.string,\n /** Optional inline width passed to the button element */\n width: PropTypes.string,\n /** Optional inline style passed to the outer element */\n style: PropTypes.shape({}),\n};\n\nconst defaultProps = {\n actions: [],\n label: '',\n type: 'primary',\n innerFocus: false,\n weight: 'bold',\n anchor: 'bottom left',\n icon: null,\n loading: false,\n disabled: false,\n className: '',\n width: null,\n style: {},\n};\n\nclass ActionSelect extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n open: false,\n menuStyle: {},\n };\n\n this.open = this.open.bind(this);\n this.close = this.close.bind(this);\n this.onClickButton = this.onClickButton.bind(this);\n this.focusButton = this.focusButton.bind(this);\n this.focusMenu = this.focusMenu.bind(this);\n this.closeAndFocusButton = this.closeAndFocusButton.bind(this);\n this.onBlur = this.onBlur.bind(this);\n }\n\n onClickButton(e) {\n e.stopPropagation();\n const { open } = this.state;\n\n if (open) {\n this.close();\n } else {\n this.open();\n }\n }\n\n onBlur(e) {\n if (!this.container.contains(e.relatedTarget)) {\n this.close();\n }\n }\n\n closeAndFocusButton() {\n this.close();\n this.focusButton();\n }\n\n open() {\n const { anchor } = this.props;\n\n this.setState(\n { open: true, menuStyle: getDropdownPosition(this.button, anchor, 8) },\n this.focusMenu,\n );\n }\n\n close() {\n this.setState({ open: false });\n }\n\n focusMenu() {\n focus(this.menu);\n }\n\n focusButton() {\n if (this.button) {\n focus(this.button);\n }\n }\n\n render() {\n const { open, menuStyle } = this.state;\n const {\n id,\n label,\n type,\n innerFocus,\n icon,\n disabled,\n loading,\n actions,\n weight,\n className,\n width,\n style,\n } = this.props;\n\n return (\n {\n this.container = container;\n }}\n >\n {\n this.button = button;\n }}\n >\n {label}\n \n {\n this.menu = menu;\n }}\n />\n
    \n );\n }\n}\n\nActionSelect.propTypes = propTypes;\nActionSelect.defaultProps = defaultProps;\n\nexport default withId(ActionSelect);\n","import ActionSelect from './ActionSelect';\n\nexport default ActionSelect;\n","// These files are only here temporarily and will be moved when more designs are available\nimport React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { Form, Modal, Text } from '@puppet/react-components';\nimport ActionSelect from 'inventory/components/action-select';\nimport { useMutation } from '@apollo/client';\nimport { ADD_SAVED_VIEW } from 'inventory/services/graphql/queries/mutationAddView.gql';\nimport { EDIT_SAVED_VIEW } from 'inventory/services/graphql/queries/mutationEditView.gql';\nimport './SaveViewModal.scss';\n\nconst SaveViewModal = ({\n username,\n workspaceId,\n submittedFilters,\n selectedCards,\n selectedColumns,\n isEdited,\n activeView,\n name,\n description,\n favourite,\n}) => {\n const { t } = useTranslation('inventory');\n const [open, setOpen] = useState(false);\n const [checked, setChecked] = useState(true);\n const [inEditMode, setInEditMode] = useState(false);\n\n const [addView] = useMutation(ADD_SAVED_VIEW);\n const [editView] = useMutation(EDIT_SAVED_VIEW);\n\n const savedViewURL = (viewName) => {\n const urlPathArray = window.location.pathname.split('/');\n const lastPathName = urlPathArray[urlPathArray.length - 1];\n\n if (lastPathName === 'nodes') {\n return `${window.location}/saved-views`;\n }\n if (viewName) {\n return `${urlPathArray.slice(0, -1).join('/')}/${viewName}`;\n }\n\n return `${urlPathArray.slice(0, -1).join('/')}/saved-views`;\n };\n\n const onEdit = () => {\n editView({\n variables: {\n name: activeView,\n workspace: workspaceId,\n user: username,\n NewViewDetails: {\n filter: JSON.stringify(submittedFilters),\n facts: JSON.stringify(selectedColumns),\n cards: JSON.stringify(selectedCards),\n favourite,\n },\n },\n onComplete: (window.location.href = savedViewURL()),\n });\n };\n\n const onUpdate = (values) => {\n editView({\n variables: {\n name: activeView,\n workspace: workspaceId,\n user: username,\n NewViewDetails: {\n name: values ? values.name : activeView,\n description: values ? values.description : description,\n favourite: values ? values.pin : favourite,\n },\n },\n onComplete: (window.location.href = savedViewURL(values.name)),\n });\n };\n\n const actions = [\n {\n id: 'save',\n label: t('save.view.options.save'),\n onClick() {\n onEdit();\n },\n disabled: !isEdited,\n },\n {\n id: 'saveAsNew',\n label: t('save.view.options.saveNew'),\n onClick() {\n setChecked(true);\n setOpen(true);\n },\n },\n ];\n\n const existingViewActions = [\n {\n id: 'save',\n label: t('save.view.options.save'),\n onClick() {\n onEdit();\n },\n disabled: !isEdited,\n },\n {\n id: 'saveAsNew',\n label: t('save.view.options.saveNew'),\n onClick() {\n setChecked(true);\n setOpen(true);\n },\n },\n {\n id: 'edit',\n label: t('save.view.options.edit'),\n onClick() {\n setInEditMode(true);\n setChecked(favourite);\n setOpen(true);\n },\n },\n ];\n\n const onSubmit = (values, user, workspace, filters, columns, cards) => {\n addView({\n variables: {\n name: values.name,\n createdBy: user,\n workspace,\n description: values.description,\n filter: JSON.stringify(filters),\n facts: JSON.stringify(columns),\n cards: JSON.stringify(cards),\n favourite: values.pin,\n },\n onComplete: (window.location.href = savedViewURL()),\n });\n };\n\n const initialValues = {\n name: inEditMode ? name : '',\n description: inEditMode ? description : '',\n pin: inEditMode ? favourite : true,\n };\n\n return (\n
    \n \n setOpen(true)}\n label={t('save.view.button.titleSave')}\n actions={name ? existingViewActions : actions}\n data-testid=\"save-view-modal-action-select\"\n />\n
    \n {open && (\n {\n setInEditMode(false);\n setOpen(false);\n }}\n >\n
    \n \n {inEditMode\n ? t('save.view.modal.titleEdit')\n : t('save.view.modal.titleSave')}\n \n \n {t('save.view.modal.description')}\n \n {\n if (inEditMode) {\n onUpdate(values);\n } else {\n onSubmit(\n values,\n username,\n workspaceId,\n submittedFilters,\n selectedColumns,\n selectedCards,\n );\n }\n }}\n onCancel={() => setOpen(false)}\n >\n \n \n setChecked(!checked)}\n />\n \n
    \n
    \n )}\n \n );\n};\nexport default SaveViewModal;\n\nSaveViewModal.propTypes = {\n workspaceId: PropTypes.string.isRequired,\n username: PropTypes.string.isRequired,\n submittedFilters: PropTypes.instanceOf(Array),\n selectedColumns: PropTypes.instanceOf(Array),\n selectedCards: PropTypes.instanceOf(Array),\n isEdited: PropTypes.bool,\n activeView: PropTypes.string,\n name: PropTypes.string,\n description: PropTypes.string,\n favourite: PropTypes.bool,\n};\n\nSaveViewModal.defaultProps = {\n submittedFilters: [],\n selectedColumns: [],\n selectedCards: [],\n isEdited: false,\n activeView: '',\n name: '',\n description: '',\n favourite: true,\n};\n","import SaveViewModal from './SaveViewModal';\n\nexport default SaveViewModal;\n","import React, { forwardRef } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\n\nimport { Icon, Text } from '@puppet/react-components';\n\nconst propTypes = {\n id: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n focused: PropTypes.bool.isRequired,\n selected: PropTypes.bool.isRequired,\n /** Optional: choose an icon */\n icon: PropTypes.oneOf(Icon.AVAILABLE_ICONS),\n /** Or pass in your own svg... */\n svg: PropTypes.element,\n onClick: PropTypes.func.isRequired,\n onMouseEnter: PropTypes.func.isRequired,\n /** Optional: Causes the text of option items to be strong and include the description */\n isDescriptionMenu: PropTypes.bool,\n /** Optional: The text which is shown besides an options label */\n description: PropTypes.string,\n /** Optional: used to ensure correct styling when a menulist includes grouped data */\n isGroupedMenu: PropTypes.bool,\n};\n\nconst defaultProps = {\n icon: null,\n svg: null,\n description: null,\n isDescriptionMenu: false,\n isGroupedMenu: false,\n};\n\nconst OptionMenuListItem = forwardRef(\n (\n {\n id,\n children,\n focused,\n selected,\n icon,\n svg,\n description,\n onClick,\n onMouseEnter,\n isDescriptionMenu,\n isGroupedMenu,\n },\n ref,\n ) => (\n {}}\n onMouseEnter={onMouseEnter}\n ref={ref}\n >\n {icon && }\n {svg && !icon && }\n {isDescriptionMenu ? (\n
    \n \n {children}\n {' '}\n {description}\n
    \n ) : (\n {children}\n )}\n {selected && (\n \n )}\n \n ),\n);\n/* eslint-enable */\n\nOptionMenuListItem.propTypes = propTypes;\nOptionMenuListItem.defaultProps = defaultProps;\n\nexport default OptionMenuListItem;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport scrollIntoView from 'scroll-into-view-if-needed';\nimport { Icon, Text } from '@puppet/react-components';\nimport OptionMenuListItem from './OptionMenuListItem';\n\nconst UP_KEY_CODE = 38;\nconst DOWN_KEY_CODE = 40;\nconst HOME_KEY_CODE = 36;\nconst END_KEY_CODE = 35;\nconst ENTER_KEY_CODE = 13;\nconst ESC_KEY_CODE = 27;\nconst SPACE_KEY_CODE = 32;\n\nconst isNil = (val) => val == null;\n\nconst cancelEvent = (e) => {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n};\n\nconst propTypes = {\n id: PropTypes.string.isRequired,\n multiple: PropTypes.bool,\n showCancel: PropTypes.bool,\n options: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.shape({\n /** Select option value */\n value: PropTypes.string.isRequired,\n /** Select option label */\n label: PropTypes.string.isRequired,\n /** Optional icon associated with this option */\n icon: PropTypes.oneOf(Icon.AVAILABLE_ICONS),\n /** Optional custom icon associated with this option */\n svg: PropTypes.element,\n }),\n ),\n PropTypes.object,\n ]),\n selected: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n focusedIndex: PropTypes.number,\n actionLabel: PropTypes.string,\n cancelLabel: PropTypes.string,\n onChange: PropTypes.func,\n onActionClick: PropTypes.func,\n onEscape: PropTypes.func,\n onFocusItem: PropTypes.func,\n onClickItem: PropTypes.func,\n onBlur: PropTypes.func,\n footer: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.shape({}),\n /** Boolean that when true will render a navigation button in the dropdown */\n navigationButton: PropTypes.bool,\n /** Function called when navigation button is pressed */\n onNavigate: PropTypes.func,\n /** Text displayed on the navigation button */\n navigationLabel: PropTypes.string,\n};\n\nconst defaultProps = {\n options: [],\n multiple: false,\n showCancel: false,\n onBlur() {},\n className: '',\n selected: null,\n focusedIndex: 0,\n onChange() {},\n actionLabel: 'Apply',\n cancelLabel: 'Cancel',\n onActionClick() {},\n onEscape() {},\n onFocusItem() {},\n onClickItem() {},\n footer: null,\n style: {},\n navigationButton: false,\n onNavigate: () => {},\n navigationLabel: 'Navigate',\n};\n\nconst getOptionId = (id, value) => `${id}-${value}`;\n\nconst getFocusedId = (focusedIndex, id, options) =>\n isNil(focusedIndex) || focusedIndex >= options.length\n ? undefined\n : getOptionId(id, options[focusedIndex].value);\n\nconst getSelectionSet = (selection) =>\n new Set(Array.isArray(selection) ? selection : [selection]);\n\nclass OptionMenuList extends Component {\n constructor(props) {\n super(props);\n\n const { options, focusedIndex } = this.props;\n this.state = {\n focusedIndex: options.length ? focusedIndex : null,\n };\n\n this.optionRefs = [];\n\n this.onClickItem = this.onClickItem.bind(this);\n this.onMouseEnterItem = this.onMouseEnterItem.bind(this);\n this.onCancel = this.onCancel.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.onKeyDownInAction = this.onKeyDownInAction.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onMenuBlur = this.onMenuBlur.bind(this);\n this.onActionBlur = this.onActionBlur.bind(this);\n }\n\n // Update focused item for autocomplete\n componentDidUpdate(prevProps, prevState) {\n const { options, focusedIndex } = this.props;\n\n if (\n options.length &&\n focusedIndex !== prevProps.focusedIndex &&\n focusedIndex !== prevState.focusedIndex\n ) {\n this.focusItem(focusedIndex);\n }\n }\n\n onFocus() {\n const { focusedIndex } = this.state;\n\n if (isNil(focusedIndex)) {\n this.focusFirst();\n }\n }\n\n onClickItem(value) {\n const { onClickItem } = this.props;\n\n this.select(value);\n\n onClickItem();\n }\n\n onMouseEnterItem(focusedIndex) {\n this.focusItem(focusedIndex);\n }\n\n onCancel(e) {\n const { onEscape } = this.props;\n\n onEscape(e);\n cancelEvent(e);\n }\n\n onArrowUp() {\n const { focusedIndex } = this.state;\n\n if (isNil(focusedIndex)) {\n this.focusLast();\n } else {\n this.focusItem(Math.max(0, focusedIndex - 1));\n }\n }\n\n onArrowDown() {\n const { focusedIndex } = this.state;\n const { options } = this.props;\n\n if (isNil(focusedIndex)) {\n this.focusFirst();\n } else {\n this.focusItem(Math.min(options.length - 1, focusedIndex + 1));\n }\n }\n\n onKeyDown(e) {\n const { onEscape, onClickItem } = this.props;\n\n switch (e.keyCode) {\n case UP_KEY_CODE: {\n this.onArrowUp();\n cancelEvent(e);\n break;\n }\n case DOWN_KEY_CODE: {\n this.onArrowDown();\n cancelEvent(e);\n break;\n }\n case HOME_KEY_CODE: {\n this.focusFirst();\n cancelEvent(e);\n break;\n }\n case END_KEY_CODE: {\n this.focusLast();\n cancelEvent(e);\n break;\n }\n case SPACE_KEY_CODE:\n case ENTER_KEY_CODE: {\n this.selectFocusedItem();\n onClickItem();\n cancelEvent(e);\n break;\n }\n case ESC_KEY_CODE: {\n onEscape(e);\n cancelEvent(e);\n break;\n }\n default:\n break;\n }\n }\n\n onKeyDownInAction(e) {\n const { onEscape } = this.props;\n\n switch (e.keyCode) {\n case ESC_KEY_CODE: {\n onEscape(e);\n cancelEvent(e);\n break;\n }\n default:\n break;\n }\n }\n\n onMenuBlur(e) {\n const { onBlur } = this.props;\n\n if (e.relatedTarget !== this.button) {\n onBlur(e);\n }\n }\n\n onActionBlur(e) {\n const { onBlur } = this.props;\n\n if (e.relatedTarget !== this.menu) {\n onBlur(e);\n }\n }\n\n focusFirst() {\n this.focusItem(0);\n }\n\n focusLast() {\n const { options } = this.props;\n\n this.focusItem(options.length - 1);\n }\n\n focusItem(focusedIndex) {\n const { onFocusItem } = this.props;\n\n this.setState({ focusedIndex }, onFocusItem(focusedIndex));\n\n /**\n * Scrolls newly focused item into view if it is not\n */\n const item = this.optionRefs[focusedIndex];\n if (item) {\n scrollIntoView(item, {\n block: 'end',\n scrollMode: 'if-needed',\n });\n }\n }\n\n select(value) {\n const { multiple, selected, onChange } = this.props;\n if (multiple) {\n const selectionSet = getSelectionSet(selected);\n\n if (selectionSet.has(value)) {\n selectionSet.delete(value);\n } else {\n selectionSet.add(value);\n }\n onChange(Array.from(selectionSet));\n } else {\n onChange(value);\n }\n }\n\n selectFocusedItem() {\n const { focusedIndex } = this.state;\n const { options } = this.props;\n\n if (!isNil(focusedIndex)) {\n const { value } = options[focusedIndex];\n\n this.select(value);\n }\n }\n\n /* eslint-disable jsx-a11y/click-events-have-key-events */\n render() {\n const {\n onClickItem,\n onMouseEnterItem,\n onCancel,\n onKeyDown,\n onKeyDownInAction,\n onFocus,\n onMenuBlur,\n onActionBlur,\n } = this;\n const { focusedIndex } = this.state;\n const {\n id,\n options,\n selected,\n multiple,\n showCancel,\n actionLabel,\n cancelLabel,\n onActionClick,\n // eslint-disable-next-line\n onEscape,\n className,\n style,\n // eslint-disable-next-line\n focusedIndex: focused,\n // eslint-disable-next-line\n onFocusItem,\n footer,\n // eslint-disable-next-line\n onClickItem: onClick,\n navigationButton,\n onNavigate,\n navigationLabel,\n ...rest\n } = this.props;\n\n const selectionSet = getSelectionSet(selected);\n const focusedId = getFocusedId(null, id, options);\n let isDescriptionMenu = false;\n let optionsIsObject = false;\n const groupMenu = [];\n\n if (typeof options === 'object' && !Array.isArray(options)) {\n optionsIsObject = true;\n\n let listIndex = 0;\n const optionTitles = Object.keys(options);\n optionTitles.forEach((title, index) => {\n options[title].forEach((element) => {\n if (Object.prototype.hasOwnProperty.call(element, 'description')) {\n isDescriptionMenu = true;\n }\n });\n\n const keyId = `${title}-${index}`;\n groupMenu.push(\n \n {title}\n
    ,\n );\n groupMenu.push(\n options[title].map(\n // eslint-disable-next-line no-shadow\n ({ value, label, icon, svg, description }, i) => {\n const groupedIndex = i + listIndex;\n const subKeyId = `value-${i}`;\n return (\n onClickItem(value)}\n onMouseEnter={() => onMouseEnterItem(groupedIndex)}\n ref={(option) => {\n this.optionRefs[groupedIndex] = option;\n }}\n >\n {label}\n \n );\n },\n ),\n );\n listIndex += options[title].length;\n });\n } else {\n options.forEach((element) => {\n if (Object.prototype.hasOwnProperty.call(element, 'description')) {\n isDescriptionMenu = true;\n }\n });\n }\n\n const list = (\n {\n this.menu = menu;\n }}\n {...rest}\n >\n {' '}\n {optionsIsObject\n ? groupMenu\n : options.map(\n ({ value, label, icon, svg, description, title }, index) => (\n onClickItem(value)}\n onMouseEnter={() => onMouseEnterItem(index)}\n ref={(option) => {\n this.optionRefs[index] = option;\n }}\n >\n {label}\n \n ),\n )}\n \n );\n\n let listFooter;\n\n if (footer) {\n listFooter = {footer};\n }\n\n return (\n \n {list}\n {listFooter}\n {multiple && (\n
    \n {\n this.button = button;\n }}\n >\n {actionLabel}\n \n {showCancel && (\n {\n this.button = button;\n }}\n >\n {cancelLabel}\n \n )}\n
    \n )}\n {navigationButton && (\n
    \n onNavigate()}\n onKeyDown={onKeyDownInAction}\n onBlur={onActionBlur}\n ref={(button) => {\n this.button = button;\n }}\n >\n {navigationLabel}\n \n
    \n )}\n \n );\n }\n}\n/* eslint-enable */\n\nOptionMenuList.propTypes = propTypes;\nOptionMenuList.defaultProps = defaultProps;\n\nexport default OptionMenuList;\n","import OptionMenuList from './OptionMenuList';\n\nexport default OptionMenuList;\n","// TODO remove and replace with design system components after next release\nimport React, { forwardRef } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@puppet/react-components';\nimport PropTypes from 'prop-types';\n\nconst propTypes = {\n error: PropTypes.string,\n value: PropTypes.string,\n type: PropTypes.string,\n placeholder: PropTypes.string,\n trailingIcon: PropTypes.string,\n};\n\nconst defaultProps = {\n error: '',\n value: '',\n type: '',\n placeholder: '',\n trailingIcon: '',\n};\n\nconst renderText = (type, value, placeholder) => {\n if (type === 'multiselect' || !value) {\n return placeholder;\n }\n\n return value;\n};\n\nconst SelectTarget = forwardRef(\n ({ error, value, type, placeholder, trailingIcon, ...rest }, ref) => (\n
    \n \n {renderText(type, value, placeholder)}\n \n
    \n ),\n);\n\nSelectTarget.propTypes = propTypes;\nSelectTarget.defaultProps = defaultProps;\n\nexport default SelectTarget;\n","import React, { Component } from 'react';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { Icon, Input } from '@puppet/react-components';\nimport OptionMenuList from './option-menu-list';\nimport SelectTarget from './SelectTarget';\nimport './Select.scss';\n\nconst cancelEvent = (e) => {\n if (e) {\n e.preventDefault();\n e.stopPropagation();\n }\n};\n\nconst focus = (element) => {\n // Not type checking that it has a focus method, that's on you!\n if (element) {\n element.focus();\n }\n};\n\nconst getDropdownPosition = (target, anchor, margin) => {\n const { width, height } = target.getBoundingClientRect();\n switch (anchor) {\n case 'bottom right': {\n return {\n top: height + margin,\n right: 0,\n minWidth: width,\n };\n }\n case 'top right': {\n return {\n bottom: height + margin,\n right: 0,\n minWidth: width,\n };\n }\n case 'top left': {\n return {\n bottom: height + margin,\n left: 0,\n minWidth: width,\n };\n }\n case 'bottom left': {\n return {\n top: height + margin,\n left: 0,\n minWidth: width,\n };\n }\n default:\n return {};\n }\n};\n\nconst ENTER_KEY_CODE = 13;\nconst DOWN_KEY_CODE = 40;\nconst UP_KEY_CODE = 38;\nconst ESC_KEY_CODE = 27;\n\nconst anchorOrientation = PropTypes.oneOf([\n 'bottom right',\n 'top right',\n 'top left',\n 'bottom left',\n]);\n\nconst SELECT = 'select';\nconst MULTISELECT = 'multiselect';\nconst AUTOCOMPLETE = 'autocomplete';\nconst TEXTSELECT = 'textselect';\n\nconst propTypes = {\n /** Unique id */\n name: PropTypes.string.isRequired,\n /** An Array of select options */\n options: PropTypes.oneOfType([\n PropTypes.arrayOf(\n PropTypes.shape({\n /** Select option value */\n value: PropTypes.string.isRequired,\n /** Select option label */\n label: PropTypes.string.isRequired,\n /** Optional icon associated with this option */\n icon: PropTypes.oneOf(Icon.AVAILABLE_ICONS),\n /** Optional custom icon associated with this option */\n svg: PropTypes.element,\n }),\n ),\n PropTypes.object,\n ]),\n /** Currently selected value or values */\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n ]),\n /** Value change handler. Will receive the new value */\n onChange: PropTypes.func,\n /**\n * When in multiselect mode, should the selected items be applied immediately?\n * @ignore\n */\n applyImmediately: PropTypes.bool,\n /** Text rendered when no value is selected */\n placeholder: PropTypes.string,\n /** Select or autocomplete. Multiselection is NOT yet fully supported */\n type: PropTypes.oneOf([SELECT, AUTOCOMPLETE, MULTISELECT, TEXTSELECT]),\n /**\n * Text to render as the action label in multiple mode\n * @ignore\n */\n actionLabel: PropTypes.string, //eslint-disable-line\n /** Autocomplete prop: Fires when search is updated */\n onFilter: PropTypes.func,\n /** Optional ability to append node (ie. disclaimer) to bottom of menu list */\n footer: PropTypes.node,\n /** Anchor orientation of the dropdown menu */\n anchor: anchorOrientation,\n /** Is a value required? */\n required: PropTypes.bool,\n /** Is the input disabled? */\n disabled: PropTypes.bool,\n /** Form error, causing element to render red when present */\n error: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /** Optional additional className passed to the outer element */\n className: PropTypes.string,\n /** Optional inline style passed to the outer element */\n style: PropTypes.shape({}),\n /** Control whether the options menu is open or closed with the `open` boolean prop. (Note that, for special cases, because the select dropdown will open when this prop changes to a different and truthy value, you can pass a different string to keep the dropdown open.) */\n open: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n /** onBlur handler */\n onBlur: PropTypes.func,\n /** Optional additional className passed to the outer menu list element */\n menuListClassName: PropTypes.string,\n /** Boolean that when true will render a navigation button in the dropdown */\n navigationButton: PropTypes.bool,\n /** Function called when navigation button is pressed */\n onNavigate: PropTypes.func,\n /** Text displayed on the navigation button */\n navigationLabel: PropTypes.string,\n /** Option to move the icon to the right of the dropdown */\n trailingIcon: PropTypes.string,\n};\n\nconst defaultProps = {\n options: [],\n applyImmediately: false,\n value: null,\n onChange() {},\n placeholder: 'Select',\n type: 'select',\n onFilter: null,\n footer: null,\n actionLabel: undefined,\n anchor: 'bottom left',\n disabled: false,\n required: false,\n error: '',\n className: '',\n style: {},\n open: null,\n onBlur() {},\n menuListClassName: '',\n navigationButton: false,\n onNavigate: () => {},\n navigationLabel: '',\n trailingIcon: '',\n};\n\nconst isControlled = ({ type, applyImmediately }) =>\n type !== MULTISELECT || applyImmediately;\n\nconst getActionLabel = ({ actionLabel, applyImmediately }) =>\n actionLabel || (applyImmediately ? 'Done' : 'Apply');\n\nclass Select extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n open: false,\n menuStyle: {},\n // The focused menulist item index\n focusedIndex: 0,\n };\n\n this.open = this.open.bind(this);\n this.close = this.close.bind(this);\n this.onClickButton = this.onClickButton.bind(this);\n this.focusButton = this.focusButton.bind(this);\n this.focusMenu = this.focusMenu.bind(this);\n this.closeAndFocusButton = this.closeAndFocusButton.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.onValueChange = this.onValueChange.bind(this);\n this.onActionClick = this.onActionClick.bind(this);\n this.onKeyDown = this.onKeyDown.bind(this);\n this.onFocusItem = this.onFocusItem.bind(this);\n this.getButtonLabel = this.getButtonLabel.bind(this);\n this.getOptions = this.getOptions.bind(this);\n }\n\n static getDerivedStateFromProps(props, state) {\n if (isControlled(props) || !state.open) {\n return {\n listValue: props.value,\n };\n }\n return null;\n }\n\n // If `open` prop is passed as default, let's trigger menu open\n componentDidMount() {\n const { open } = this.props;\n\n if (open) {\n this.open();\n }\n }\n\n // If `open` prop is updated, let's trigger menu open\n componentDidUpdate(prevProps) {\n const { open } = this.props;\n\n if (open && open !== prevProps.open) {\n this.open();\n }\n }\n\n onClickButton() {\n const { open } = this.state;\n\n if (open) {\n this.close();\n } else {\n this.open();\n }\n }\n\n onBlur(e) {\n const { onBlur } = this.props;\n if (!this.container.contains(e.relatedTarget)) {\n this.close();\n onBlur();\n }\n }\n\n onValueChange(listValue) {\n const { onChange, type, onFilter } = this.props;\n\n if (isControlled(this.props)) {\n onChange(listValue);\n } else {\n this.setState({ listValue });\n }\n\n if (type === AUTOCOMPLETE) {\n if (onFilter) {\n onFilter(listValue);\n }\n\n this.setState({ focusedIndex: 0 });\n }\n\n if (type !== MULTISELECT) {\n this.closeAndFocusButton();\n }\n }\n\n onActionClick() {\n const { onChange } = this.props;\n const { listValue } = this.state;\n\n if (!isControlled(this.props)) {\n onChange(listValue);\n }\n\n this.closeAndFocusButton();\n }\n\n // TODO: We now have key handling here in Select and also in the OptionMenuList.\n // When we introduce hooks, we should combine this logic under a custom `useFocusIndex` hook.\n\n // For use in conjunction with autocomplete\n onKeyDown(e) {\n const filteredOptions = this.getOptions();\n const { focusedIndex, open } = this.state;\n\n if (open) {\n switch (e.keyCode) {\n case UP_KEY_CODE: {\n cancelEvent(e);\n\n if (focusedIndex === 0) return;\n\n this.setState({ focusedIndex: focusedIndex - 1 });\n break;\n }\n case DOWN_KEY_CODE: {\n cancelEvent(e);\n\n if (focusedIndex + 1 === filteredOptions.length) return;\n\n this.setState({ focusedIndex: focusedIndex + 1 });\n break;\n }\n case ENTER_KEY_CODE: {\n cancelEvent(e);\n\n if (filteredOptions[focusedIndex]) {\n this.onValueChange(filteredOptions[focusedIndex].value);\n\n this.closeAndFocusButton();\n }\n break;\n }\n case ESC_KEY_CODE: {\n cancelEvent(e);\n\n this.closeAndFocusButton();\n break;\n }\n default:\n break;\n }\n } else {\n switch (e.keyCode) {\n case UP_KEY_CODE: {\n // prevent cursor going to beginning of input\n cancelEvent(e);\n break;\n }\n case DOWN_KEY_CODE: {\n // prevent cursor going to end of input\n cancelEvent(e);\n break;\n }\n case ENTER_KEY_CODE: {\n // prevent form submission\n cancelEvent(e);\n break;\n }\n default:\n break;\n }\n\n this.setState({ open: !open });\n }\n }\n\n onFocusItem(focusedIndex) {\n this.setState({ focusedIndex });\n }\n\n getButtonLabel() {\n const { type, options, value, placeholder } = this.props;\n if (!value || value.length === 0) {\n return placeholder;\n }\n\n if (type === MULTISELECT) {\n const selectedOptions = options\n .filter((option) => value.includes(option.value))\n .map((option) => option.selectedLabel || option.label);\n\n return selectedOptions.join(', ');\n }\n\n if (typeof options === 'object' && !Array.isArray(options)) {\n let x = {};\n const optionTitles = Object.keys(options);\n optionTitles.forEach((option) => {\n if (options[option].find((w) => w.value === value)) {\n x = options[option].find((w) => w.value === value);\n }\n });\n return x.label;\n }\n const selectedOption = options.find((option) => option.value === value);\n\n return selectedOption.label;\n }\n\n getOptions() {\n const { options, value, type, onFilter } = this.props;\n let filteredOptions = options;\n\n // If the ingesting app uses the onFilter event handler, it should provide the filtered options\n // Otherwise, let's filter the presumably static list here\n if (value && type === AUTOCOMPLETE && !onFilter) {\n filteredOptions = options.filter(\n (option) =>\n option.value.toLowerCase().indexOf(value.toLowerCase()) > -1,\n );\n }\n\n return filteredOptions;\n }\n\n closeAndFocusButton() {\n this.focusButton();\n this.close();\n }\n\n open() {\n const { anchor } = this.props;\n\n this.setState(\n { open: true, menuStyle: getDropdownPosition(this.button, anchor, 8) },\n this.focusMenu,\n );\n }\n\n close() {\n this.setState({ open: false });\n }\n\n focusMenu() {\n const { type } = this.props;\n\n if (this.menu && this.menu.focusMenu && !(type === AUTOCOMPLETE)) {\n this.menu.focusMenu();\n }\n }\n\n focusButton() {\n focus(this.button);\n }\n\n render() {\n const {\n onValueChange,\n onClickButton,\n onBlur,\n closeAndFocusButton,\n onActionClick,\n getButtonLabel,\n onKeyDown,\n onFocusItem,\n getOptions,\n open: onOpen,\n } = this;\n const { open, menuStyle, listValue, focusedIndex } = this.state;\n const {\n name,\n type,\n disabled,\n className,\n style,\n error,\n value,\n placeholder,\n applyImmediately,\n required,\n footer,\n menuListClassName,\n navigationButton,\n onNavigate,\n navigationLabel,\n trailingIcon,\n } = this.props;\n\n let input;\n\n switch (type) {\n case 'autocomplete':\n input = (\n {\n this.button = button;\n }}\n onChange={onValueChange}\n autoComplete=\"off\"\n />\n );\n break;\n default:\n input = (\n <>\n {\n this.button = button;\n }}\n />\n \n \n );\n break;\n }\n\n return (\n {\n this.container = container;\n }}\n >\n {input}\n {\n this.menu = menu;\n }}\n tabIndex={type === AUTOCOMPLETE ? -1 : 0}\n className={menuListClassName}\n navigationButton={navigationButton}\n onNavigate={onNavigate}\n navigationLabel={navigationLabel}\n />\n \n );\n }\n}\n\nSelect.propTypes = propTypes;\nSelect.defaultProps = defaultProps;\n\nexport default Select;\n","import Select from './Select';\n\nexport default Select;\n","import React, { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport InsightsChart from '@puppet/insights-charts';\nimport classnames from 'classnames';\nimport '@puppet/insights-charts/source/scss/all.scss';\nimport './Chart.scss';\n\nconst Chart = ({ className, type, data, options, events, style }) => {\n const chartRef = useRef();\n\n useEffect(() => {\n if (data) {\n const chart = new InsightsChart(chartRef.current, {\n type,\n data,\n options,\n events,\n });\n chart.render();\n\n return () => {\n chart.destroy();\n };\n }\n return () => {};\n }, [chartRef, type, data, options, events]);\n\n return (\n \n );\n};\n\nChart.propTypes = {\n className: PropTypes.string,\n type: PropTypes.string.isRequired,\n data: PropTypes.shape({\n categories: PropTypes.arrayOf(\n PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n ),\n series: PropTypes.arrayOf(\n PropTypes.shape({\n label: PropTypes.string,\n data: PropTypes.arrayOf(PropTypes.number),\n }),\n ),\n }).isRequired,\n options: PropTypes.shape({\n legend: PropTypes.shape({\n enabled: PropTypes.bool,\n orientation: PropTypes.string,\n }),\n column: PropTypes.shape({\n data_labels: PropTypes.shape({\n enabled: PropTypes.bool,\n }),\n }),\n axis: PropTypes.shape({\n y: PropTypes.shape({\n enabled: PropTypes.bool,\n orientation: PropTypes.string,\n }),\n x: PropTypes.shape({\n orientation: PropTypes.string,\n }),\n }),\n }),\n events: PropTypes.shape({\n beforeRender: PropTypes.func,\n afterRender: PropTypes.func,\n onError: PropTypes.func,\n update: PropTypes.func,\n dataPointClick: PropTypes.func,\n legendItemClick: PropTypes.func,\n highlightSeries: PropTypes.func,\n unHighlightSeries: PropTypes.func,\n activatePointOfInterest: PropTypes.func,\n tooltipMove: PropTypes.func,\n tooltipHide: PropTypes.func,\n annotationClick: PropTypes.func,\n zoomStart: PropTypes.func,\n zoom: PropTypes.func,\n zoomEnd: PropTypes.func,\n }).isRequired,\n style: PropTypes.shape({\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n }),\n};\n\nChart.defaultProps = {\n className: '',\n options: {},\n style: {},\n};\n\nexport default Chart;\n","import Chart from './Chart';\n\nexport default Chart;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ConditionalRender from 'inventory/components/ConditionalRender';\nimport { useTranslation } from 'react-i18next';\nimport { Button, Heading, Icon, Text } from '@puppet/react-components';\nimport './ChartCardAlternate.scss';\n\nconst ChartCardAlternate = ({ icon, title, text, onEdit, onDelete }) => {\n const { t } = useTranslation('inventory');\n return (\n
    \n
    \n \n {title}\n {text}\n
    \n
    \n \n \n \n \n \n \n
    \n
    \n );\n};\n\nexport default ChartCardAlternate;\n\nChartCardAlternate.propTypes = {\n icon: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n text: PropTypes.string.isRequired,\n onEdit: PropTypes.func,\n onDelete: PropTypes.func,\n};\n\nChartCardAlternate.defaultProps = {\n onEdit: null,\n onDelete: null,\n};\n","import React, { useMemo, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { Card, ConfirmationModal, Loading } from '@puppet/react-components';\nimport ConditionalRender from 'inventory/components/ConditionalRender';\nimport { GraphQLObjectType } from 'graphql';\nimport { useQuery } from '@apollo/client';\nimport Chart from 'inventory/components/Chart';\nimport ChartCardAlternate from './ChartCardAlternate';\nimport './ChartCard.scss';\n\nconst ChartCard = ({\n id,\n label,\n queryName,\n onDelete,\n onEdit,\n workspaceId,\n after,\n responseKey,\n totalCountKey,\n hostCountKey,\n filter,\n chartType,\n chartOptions,\n order,\n areNodesExcluded,\n ...props\n}) => {\n const { t } = useTranslation('inventory');\n const [isConfirmOpen, setIsConfirmOpen] = useState(false);\n const actions = [\n {\n id: 'removeFactOption',\n icon: 'trash',\n label: t('chartCard.actionButton.remove'),\n onClick: () => setIsConfirmOpen(true),\n 'data-testid': `chart-card-remove`,\n },\n {\n id: 'editFactOption',\n icon: 'pencil',\n label: t('chartCard.actionButton.edit'),\n onClick: onEdit,\n 'data-testid': `chart-card-edit`,\n },\n ];\n\n const { data, loading, error } = useQuery(queryName, {\n variables: {\n id: workspaceId,\n filter,\n },\n });\n\n const chartData = useMemo(\n () =>\n after(\n data,\n responseKey,\n totalCountKey,\n order,\n hostCountKey,\n areNodesExcluded,\n ),\n [\n data,\n responseKey,\n totalCountKey,\n hostCountKey,\n areNodesExcluded,\n order,\n after,\n ],\n );\n\n const hasError = Boolean(error);\n const hasData = chartData?.categories?.length > 0;\n\n return (\n <>\n \n
    \n \n {label}\n \n \n {label}\n \n \n \n \n \n \n \n \n setIsConfirmOpen(true)}\n onEdit={onEdit}\n />\n \n \n \n \n
    \n \n {\n setIsConfirmOpen(false);\n onDelete(id);\n }}\n onCancel={() => setIsConfirmOpen(false)}\n isOpen={isConfirmOpen}\n />\n \n );\n};\n\nChartCard.propTypes = {\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n queryName: PropTypes.instanceOf(GraphQLObjectType).isRequired,\n chartType: PropTypes.string.isRequired,\n onEdit: PropTypes.func.isRequired,\n onDelete: PropTypes.func.isRequired,\n workspaceId: PropTypes.string.isRequired,\n order: PropTypes.number.isRequired,\n after: PropTypes.func.isRequired,\n responseKey: PropTypes.string,\n totalCountKey: PropTypes.string,\n hostCountKey: PropTypes.string,\n filter: PropTypes.string,\n chartOptions: PropTypes.shape({\n grid: PropTypes.shape({\n enabled: PropTypes.bool,\n }),\n }).isRequired,\n areNodesExcluded: PropTypes.bool.isRequired,\n};\n\nChartCard.defaultProps = {\n filter: '',\n responseKey: '',\n totalCountKey: '',\n hostCountKey: '',\n};\n\nexport default ChartCard;\n","import ChartCard from './ChartCard';\n\nexport default ChartCard;\n","import PropTypes from 'prop-types';\nimport { GraphQLObjectType } from 'graphql';\n\nconst ChartModalProptypes = PropTypes.shape({\n modalTitle: PropTypes.string.isRequired,\n chooseFactInfo: PropTypes.string.isRequired,\n chooseFactPlaceholder: PropTypes.string.isRequired,\n save: PropTypes.string.isRequired,\n chartTitle: PropTypes.string.isRequired,\n chartOptions: PropTypes.string.isRequired,\n excludeCheckbox: PropTypes.string.isRequired,\n});\n\nconst CardPropTypes = PropTypes.shape({\n id: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n query: PropTypes.instanceOf(GraphQLObjectType).isRequired,\n chartType: PropTypes.string.isRequired,\n areNodesExcluded: PropTypes.bool.isRequired,\n order: PropTypes.number.isRequired,\n after: PropTypes.func.isRequired,\n responseKey: PropTypes.string,\n totalCountKey: PropTypes.string,\n filter: PropTypes.string,\n chartOptions: PropTypes.shape({\n grid: PropTypes.shape({\n enabled: PropTypes.bool,\n }),\n }).isRequired,\n});\n\nconst FilterPropTypes = PropTypes.shape({\n value: PropTypes.string.isRequired,\n fieldLabel: PropTypes.string.isRequired,\n field: PropTypes.string.isRequired,\n operator: PropTypes.string.isRequired,\n fact: PropTypes.string.isRequired,\n});\n\nexport { ChartModalProptypes, CardPropTypes, FilterPropTypes };\n","// This custom hook will make an apollo client hook call to the provided query.\n// It will return the data formatted to be used for a
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n \n {t('nodeExplorer.drawer.description.field.title')}\n \n \n \n {description !== ''\n ? description\n : t(\n 'nodeExplorer.drawer.description.field.empty',\n )}\n \n
    \n \n {t('nodeExplorer.drawer.filter.field.titleApplied')}\n \n \n
    \n \n
    \n
    \n \n {t(\n 'nodeExplorer.drawer.table.columns.field.titleApplied',\n )}\n \n \n \n {facts !== '' && facts !== undefined\n ? facts\n .replaceAll('\"', '')\n .replace('[', '')\n .replace(']', '')\n : t(\n 'nodeExplorer.drawer.table.columns.field.empty',\n )}\n \n
    \n \n {t(\n 'nodeExplorer.drawer.table.cards.field.titleApplied',\n )}\n \n \n \n {/* Swap 'cachedCards' for 'cards' once query is ready */}\n {cardObject && cardObject.length > 0\n ? cardObject.map((card, index) => {\n return cardObject.length > index\n ? `${card.label}, `\n : `${card.label}`;\n })\n : t(\n 'nodeExplorer.drawer.table.cards.field.empty',\n )}\n \n
    \n
    \n \n \n \n
    \n
    \n \n {t('compoundFiltering.filterBar.info')}\n \n
    \n \n
    \n setTab(tab)}\n transparent\n type=\"secondary\"\n >\n \n \n \n \n \n \n \n \n )}\n \n
    \n setInfoVisible(false)}\n >\n {t('nodeExplorer.filter.info.text1')}\n
    \n {t('nodeExplorer.filter.info.text2')}\n
    \n \n {t('nodeExplorer.filter.info.link')}\n \n \n
    \n \n {\n setPeServerFilterInfo(false);\n setIsModalOpen(true);\n }}\n isOpen={peServerFilterInfo}\n >\n \n {t('nodeExplorer.filter.peServer.modal.title')}\n \n \n {t('nodeExplorer.filter.peServer.modal.name')}\n {peServerToAdd}\n \n
    \n \n {t('nodeExplorer.filter.peServer.modal.text1')}\n \n \n {t('nodeExplorer.filter.peServer.modal.text2')}\n \n \n {t('nodeExplorer.filter.peServer.modal.link')}\n \n
    \n \n {\n setPeServerFilterInfo(false);\n setIsModalOpen(true);\n }}\n >\n {t('nodeExplorer.filter.peServer.modal.button')}\n \n \n \n \n );\n};\n\nexport default NodeExplorerView;\n","import NodeExplorer from './NodeExplorer';\n\nexport default NodeExplorer;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Heading, Link, Text } from '@puppet/react-components';\n\nconst PageHeader = ({\n pageTitle,\n renderIcon,\n ctaContent,\n headerDescription,\n subheaderLinks,\n}) => {\n const renderHeaderDescription = () => {\n if (headerDescription?.length > 0) {\n return (\n {headerDescription}\n );\n }\n return null;\n };\n\n const iterateOverLinks = () => {\n return subheaderLinks.map((link) => {\n return (\n
    \n
    {link.labelText}
    \n {link.staticText && (\n {link.staticText}\n )}\n
    \n \n {link.linkText}\n \n
    \n
    \n );\n });\n };\n\n const renderSubheaderLinks = () => {\n if (subheaderLinks.length > 0) {\n return (\n
    {iterateOverLinks()}
    \n );\n }\n return null;\n };\n\n const renderCtaContent = () => {\n if (ctaContent) {\n return ctaContent();\n }\n return null;\n };\n const renderIconContent = () => {\n if (renderIcon) {\n return renderIcon();\n }\n return null;\n };\n\n return (\n
    \n
    \n
    \n
    \n \n {pageTitle}\n \n
    {renderIconContent()}
    \n
    \n
    \n {renderHeaderDescription()}\n {renderSubheaderLinks()}\n
    \n
    \n
    {renderCtaContent()}
    \n
    \n
    \n );\n};\n\nPageHeader.propTypes = {\n pageTitle: PropTypes.string,\n ctaContent: PropTypes.func,\n renderIcon: PropTypes.func,\n headerDescription: PropTypes.string,\n subheaderLinks: PropTypes.arrayOf(\n PropTypes.exact({\n labelText: PropTypes.string.isRequired,\n linkText: PropTypes.string,\n linkDestination: PropTypes.string,\n staticText: PropTypes.string,\n linkTarget: PropTypes.string,\n }),\n ),\n};\n\nPageHeader.defaultProps = {\n pageTitle: '',\n renderIcon: null,\n ctaContent: null,\n headerDescription: '',\n subheaderLinks: [],\n};\n\nexport default PageHeader;\n","import PageHeader from './PageHeader';\n\nexport default PageHeader;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst ErrorMessageStateContext = React.createContext();\nconst ErrorMessageDispatchContext = React.createContext();\n\nexport const ERROR_TYPES = {\n GRAPHQL_ERROR: 'GRAPHQL_ERROR',\n};\n\nfunction errorMessageReducer(state, action) {\n switch (action.type) {\n case ERROR_TYPES.GRAPHQL_ERROR:\n return {\n error: action.payload,\n };\n default:\n return state;\n }\n}\n\nconst ErrorMessageProvider = ({ children }) => {\n const [state, dispatch] = React.useReducer(errorMessageReducer, {\n errorMessage: {},\n });\n return (\n \n \n {children}\n \n \n );\n};\n\nfunction useErrorMessageState() {\n const context = React.useContext(ErrorMessageStateContext);\n if (context === undefined) {\n throw new Error(\n 'useErrorMessageState must be used within a ErrorMessageProvider',\n );\n }\n return context;\n}\n\nfunction useErrorMessageDispatch() {\n const context = React.useContext(ErrorMessageDispatchContext);\n if (context === undefined) {\n throw new Error(\n 'useErrorMessageDispatch must be used within a ErrorMessageProvider',\n );\n }\n return context;\n}\n\nexport { ErrorMessageProvider, useErrorMessageState, useErrorMessageDispatch };\n\nErrorMessageProvider.propTypes = {\n children: PropTypes.node.isRequired,\n};\n","// Function takes the puppet server version value of a source and uses it with the\n// source value and hash value to generate the appropriate link to the pe console\nimport compareVersions from 'compare-versions';\n\nfunction generateReportURL(version, source, hash) {\n const useNewURL = Boolean(\n version !== '' && compareVersions.compare(version, '2019.7', '>='),\n );\n\n return `https://${source}/#/${\n useNewURL ? 'enforcement' : 'inspect'\n }/report/${hash}`;\n}\n\nexport default generateReportURL;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { Icon } from '@puppet/react-components';\n\nimport './NodeStatus.scss';\n\nconst NodeStatus = ({ status }) => {\n const { t } = useTranslation('inventory');\n\n switch (status) {\n case 'no change': {\n return (\n \n \n {t('nodeStatus.unchanged')}\n \n );\n }\n case 'corrective change': {\n return (\n \n \n }\n viewBox=\"0 0 16 16\"\n />\n {t('nodeStatus.corrective')}\n \n );\n }\n case 'intentional change': {\n return (\n \n \n }\n viewBox=\"0 0 16 16\"\n />\n {t('nodeStatus.intentional')}\n \n );\n }\n case 'failure': {\n return (\n \n \n {t('nodeStatus.failed')}\n \n );\n }\n default:\n return (\n \n \n \n );\n }\n};\n\nexport default NodeStatus;\n\nNodeStatus.propTypes = {\n status: PropTypes.string.isRequired,\n};\n","import NodeStatus from './NodeStatus';\n\nexport default NodeStatus;\n","import React, { useMemo } from 'react';\nimport PropTypes from 'prop-types';\nimport { format, parseISO } from 'date-fns';\nimport generateReportURL from 'inventory/utils/generateReportURL';\nimport GET_LATEST_REPORT from 'inventory/services/graphql/queries/queryLatestReport.gql';\nimport { useQuery } from '@apollo/client';\nimport { Alert, Text, Link } from '@puppet/react-components';\nimport NodeStatus from 'inventory/components/NodeStatus';\nimport ConditionalRender from 'inventory/components/ConditionalRender';\n\nimport QueryError from 'inventory/components/QueryError';\nimport { useTranslation } from 'react-i18next';\nimport changeStatusText from 'inventory/utils/changeStatusText';\nimport {\n useErrorMessageDispatch,\n ERROR_TYPES,\n} from 'inventory/utils/context/error-context';\nimport './NodeDetailsHeader.scss';\n\nfunction processReport(tableData) {\n const node = tableData?.hosts?.nodes?.[0];\n if (!node) {\n return {};\n }\n\n return {\n ...node,\n latestReportStatus: changeStatusText(\n node.latestReportStatus,\n node.latestReportCorrectiveChange,\n ),\n };\n}\n\nconst NodeDetailsHeader = ({ source, nodeId, workspaceId }) => {\n const dispatch = useErrorMessageDispatch();\n\n const { data, loading, error, client } = useQuery(GET_LATEST_REPORT, {\n variables: { id: workspaceId, certname: nodeId, source },\n });\n\n const { t } = useTranslation('inventory');\n\n const processedReport = useMemo(() => processReport(data), [data]);\n\n if (loading) return

    {t('nodeDetailsHeader.loading')}

    ;\n\n if (error)\n dispatch({\n type: ERROR_TYPES.GRAPHQL_ERROR,\n payload: error,\n });\n\n const {\n reportTimestamp,\n latestReportHash,\n latestReportCorrectiveChange,\n latestReportStatus,\n } = processedReport;\n\n const version = data?.hosts?.nodes?.[0]?.peServerVersion ?? '';\n\n const peConsoleLink = generateReportURL(version, source, latestReportHash);\n\n const gqlError = error?.graphQLErrors?.[0]?.message ?? '';\n\n return (\n
    \n \n \n \n -1}>\n \n {t('nodeDetailsHeader.alert.title')}\n {t('nodeDetailsHeader.alert.text')}\n \n \n
    \n \n {t('nodeDetailsHeader.lastReportTime')}{' '}\n {typeof reportTimestamp === 'string' &&\n format(parseISO(reportTimestamp), 'MMM dd, yyyy p')}\n \n \n {t('nodeDetailsHeader.status')}{' '}\n \n \n \n {t('nodeDetailsHeader.source')} {source}\n \n \n {t('nodeDetailsHeader.peLink')}\n \n
    \n
    \n );\n};\n\nexport default NodeDetailsHeader;\n\nNodeDetailsHeader.propTypes = {\n nodeId: PropTypes.string.isRequired,\n workspaceId: PropTypes.string.isRequired,\n source: PropTypes.string.isRequired,\n};\n","import NodeDetailsHeader from './NodeDetailsHeader';\n\nexport default NodeDetailsHeader;\n","import { useState, useEffect } from 'react';\n\nconst useTableDisplayMessageGenerator = ({\n loading,\n searchTerm,\n tableDisplayMessages,\n}) => {\n const [emptyStateHeader, setEmptyStateHeader] = useState('');\n const [emptyStateMessage, setEmptyStateMessage] = useState('');\n useEffect(() => {\n if (loading) {\n setEmptyStateHeader(tableDisplayMessages.loadingHeader);\n setEmptyStateMessage(tableDisplayMessages.loadingMessage);\n } else if (searchTerm) {\n setEmptyStateHeader(tableDisplayMessages.noDataHeader);\n setEmptyStateMessage(tableDisplayMessages.emptyFilterMessage);\n } else {\n setEmptyStateHeader(tableDisplayMessages.noDataHeader);\n setEmptyStateMessage('');\n }\n }, [\n loading,\n searchTerm,\n tableDisplayMessages.loadingHeader,\n tableDisplayMessages.loadingMessage,\n tableDisplayMessages.emptyFilterMessage,\n tableDisplayMessages.noDataHeader,\n ]);\n\n return {\n emptyStateHeader,\n emptyStateMessage,\n };\n};\n\nexport default useTableDisplayMessageGenerator;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { Table } from '@puppet/data-grid';\nimport { FactColumnCell } from 'inventory/components/NodeTable';\nimport './FactsTable.scss';\n\nconst columns = (t) => [\n { label: t('factsTable.columns.key'), dataKey: 'key' },\n {\n label: t('factsTable.columns.value'),\n dataKey: 'FactValue',\n cellRenderer: FactColumnCell,\n },\n];\n\nconst FactsTable = ({\n factData,\n emptyStateMessage,\n emptyStateHeader,\n loading,\n}) => {\n const constructFactTableData = (data) =>\n data.map((fact) => {\n return {\n key: fact.name,\n FactValue: fact.value,\n };\n });\n const [factTableData, setFactTableData] = useState(\n constructFactTableData(factData),\n );\n\n const { t } = useTranslation('inventory');\n\n useEffect(() => {\n setFactTableData(constructFactTableData(factData));\n }, [factData]);\n\n return (\n
    \n \n
    \n );\n};\nexport default FactsTable;\n\nFactsTable.propTypes = {\n factData: PropTypes.arrayOf(\n PropTypes.shape({\n name: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n }),\n ).isRequired,\n emptyStateMessage: PropTypes.string.isRequired,\n emptyStateHeader: PropTypes.string.isRequired,\n loading: PropTypes.bool.isRequired,\n};\n","import FactsTable from './FactsTable';\n\nexport default FactsTable;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { useQuery } from '@apollo/client';\nimport { Input, Loading } from '@puppet/react-components';\nimport QueryError from 'inventory/components/QueryError';\nimport QUERY_FACT_DATA from 'inventory/services/graphql/queries/queryFactData.gql';\nimport useTableDisplayMessageGenerator from 'inventory/utils/hooks';\nimport { useErrorMessageState } from 'inventory/utils/context/error-context';\nimport FactsTable from 'inventory/components/FactsTable';\nimport './FactTab.scss';\n\nconst FactTab = ({ source, nodeId, workspaceId, tableDisplayMessages }) => {\n const [filter, setFilter] = useState(null);\n const [searchTerm, setSearchTerm] = useState('');\n const [isSubmitted, setIsSubmitted] = useState(false);\n const [inputValue, setInputValue] = useState('');\n const [duplicateError, setDuplicateError] = useState(true);\n const { data, loading, error, client } = useQuery(QUERY_FACT_DATA, {\n variables: {\n source,\n id: workspaceId,\n certname: nodeId,\n filter,\n },\n });\n\n const handleEnterKeyPress = (e) => {\n if (e.keyCode === 13) {\n setSearchTerm(e.target.value);\n setIsSubmitted(true);\n }\n };\n\n useEffect(() => {\n if (searchTerm) {\n setFilter({ AND: [{ name: { like: searchTerm } }] });\n } else {\n setFilter(null);\n }\n setIsSubmitted(false);\n }, [searchTerm, isSubmitted]);\n\n const { errorMessage } = useErrorMessageState();\n\n const { t } = useTranslation('inventory');\n\n useEffect(() => {\n if (\n error &&\n errorMessage &&\n errorMessage.payload.message === error.message\n ) {\n setDuplicateError(true);\n }\n }, [error, errorMessage]);\n\n const { emptyStateHeader, emptyStateMessage } =\n useTableDisplayMessageGenerator({\n loading,\n searchTerm,\n tableDisplayMessages,\n });\n\n const factData = data?.hosts?.nodes[0]?.factsConnection?.facts ?? [];\n\n return (\n
    \n
    \n
    \n setInputValue(value)}\n onKeyDown={(e) => {\n handleEnterKeyPress(e);\n }}\n disabled={loading}\n />\n
    \n {loading && }\n
    \n {!duplicateError && }\n \n
    \n );\n};\n\nexport default FactTab;\n\nFactTab.propTypes = {\n nodeId: PropTypes.string.isRequired,\n workspaceId: PropTypes.string.isRequired,\n tableDisplayMessages: PropTypes.shape({\n loadingHeader: PropTypes.string,\n loadingMessage: PropTypes.string,\n noDataHeader: PropTypes.string,\n emptyFilterMessage: PropTypes.string,\n emptyFilterDataHeader: PropTypes.string,\n }).isRequired,\n source: PropTypes.string.isRequired,\n};\n","import FactTab from './FactTab';\n\nexport default FactTab;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { format, parseISO } from 'date-fns';\nimport PropTypes from 'prop-types';\nimport { Table } from '@puppet/data-grid';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from '@puppet/react-components';\nimport NodeStatus from 'inventory/components/NodeStatus';\nimport changeStatusText from 'inventory/utils/changeStatusText';\n\nimport './ReportsTable.scss';\nimport generateReportURL from '../../utils/generateReportURL';\n\nexport const columns = (t) => [\n { label: t('reportsTable.columns.date'), dataKey: 'reportTimeStamp' },\n { label: t('reportsTable.columns.status'), dataKey: 'reportStatus' },\n { label: t('reportsTable.columns.view'), dataKey: 'reportView' },\n];\n\nconst ReportsTable = ({\n reportData,\n emptyStateMessage,\n emptyStateHeader,\n loading,\n}) => {\n const source = reportData?.hosts?.nodes?.[0]?.source ?? '';\n const version = reportData?.hosts?.nodes[0]?.peServerVersion ?? '';\n const { t } = useTranslation('inventory');\n\n const constructReportTableData = useCallback(\n (data) => {\n const reports = data?.hosts?.nodes?.[0]?.reportsConnection?.reports ?? [];\n return reports.map(\n ({ endTime, status, correctiveChange, hash }, index) => {\n const reportLink = generateReportURL(version, source, hash);\n\n const timeStamp = endTime\n ? format(parseISO(endTime), 'MMM dd, yyyy p')\n : '';\n return {\n id: index,\n reportTimeStamp: timeStamp,\n reportStatus: (\n \n ),\n reportView: (\n \n {t('reportsTable.row.reportLink')}\n \n ),\n };\n },\n );\n },\n [source, t, version],\n );\n\n const [reportTableData, setReportTableData] = useState(\n constructReportTableData(reportData),\n );\n\n useEffect(() => {\n setReportTableData(constructReportTableData(reportData));\n }, [constructReportTableData, reportData]);\n\n return (\n
    \n \n
    \n );\n};\nexport default ReportsTable;\n\nReportsTable.propTypes = {\n reportData: PropTypes.instanceOf(Object).isRequired,\n emptyStateMessage: PropTypes.string.isRequired,\n emptyStateHeader: PropTypes.string.isRequired,\n loading: PropTypes.bool.isRequired,\n};\n","import ReportsTable from './ReportsTable';\n\nexport default ReportsTable;\n","import React, { useState, useEffect } from 'react';\nimport GET_REPORT_DATA from 'inventory/services/graphql/queries/queryReportData.gql';\nimport { useQuery } from '@apollo/client';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { Select, Loading } from '@puppet/react-components';\nimport TablePager from 'components/TablePager';\nimport QueryError from 'inventory/components/QueryError';\nimport ReportsTable from 'inventory/components/ReportsTable';\nimport useTableDisplayMessageGenerator from 'inventory/utils/hooks';\nimport { TABLE_LIMIT } from 'utils/constants';\nimport { useErrorMessageState } from 'inventory/utils/context/error-context';\n\nimport './ReportsTab.scss';\n\nexport const filterOptions = (t) => [\n {\n value: 'all',\n label: t('reportsView.statusFilter.option.all'),\n },\n {\n value: 'unchanged',\n label: t('reportsView.statusFilter.option.unchanged'),\n },\n {\n value: 'iChange',\n label: t('reportsView.statusFilter.option.intentional'),\n },\n {\n value: 'cChange',\n label: t('reportsView.statusFilter.option.corrective'),\n },\n {\n value: 'failed',\n label: t('reportsView.statusFilter.option.failed'),\n },\n];\n\nconst getQueryParams = (status) => {\n switch (status) {\n case 'unchanged': {\n return { status: { equalTo: 'unchanged' } };\n }\n case 'failed': {\n return { status: { equalTo: 'failed' } };\n }\n case 'iChange': {\n return {\n AND: [\n { correctiveChange: { equalTo: false } },\n { status: { equalTo: 'changed' } },\n ],\n };\n }\n case 'cChange': {\n return {\n AND: [\n { correctiveChange: { equalTo: true } },\n { status: { equalTo: 'changed' } },\n ],\n };\n }\n case 'all':\n default: {\n return null;\n }\n }\n};\n\nconst ReportsTab = ({ source, nodeId, workspaceId, tableDisplayMessages }) => {\n const limit = TABLE_LIMIT;\n const [offset, setOffset] = useState(0);\n const [reportStatusOption, setReportStatusOption] = useState('');\n const [filter, setFilter] = useState(null);\n const [duplicateError, setDuplicateError] = useState(true);\n const { t } = useTranslation('inventory');\n\n const { data, loading, error, client } = useQuery(GET_REPORT_DATA, {\n variables: {\n id: workspaceId,\n certname: nodeId,\n source,\n filter,\n limit,\n offset,\n },\n });\n\n useEffect(() => {\n // reset the table position when we filter the total number of reports\n setOffset(0);\n setFilter(getQueryParams(reportStatusOption));\n }, [reportStatusOption]);\n\n const { emptyStateHeader, emptyStateMessage } =\n useTableDisplayMessageGenerator({\n loading,\n searchTerm: filter,\n tableDisplayMessages,\n });\n\n const { errorMessage } = useErrorMessageState();\n\n useEffect(() => {\n if (\n error &&\n errorMessage &&\n errorMessage?.payload?.message === error?.message\n ) {\n setDuplicateError(true);\n }\n }, [error, errorMessage]);\n\n const reportQueryData = data?.hosts?.nodes?.[0]?.reportsConnection ?? {};\n const totalCount = reportQueryData?.totalCount ?? 0;\n\n return (\n
    \n
    \n {\n setReportStatusOption(value);\n }}\n />\n {loading && }\n
    \n {!duplicateError && }\n
    \n \n {totalCount > 0 && (\n \n )}\n
    \n
    \n );\n};\n\nexport default ReportsTab;\n\nReportsTab.propTypes = {\n nodeId: PropTypes.string.isRequired,\n workspaceId: PropTypes.string.isRequired,\n tableDisplayMessages: PropTypes.shape({\n loadingHeader: PropTypes.string,\n loadingMessage: PropTypes.string,\n noDataHeader: PropTypes.string,\n emptyFilterMessage: PropTypes.string,\n emptyFilterDataHeader: PropTypes.string,\n }).isRequired,\n source: PropTypes.string.isRequired,\n};\n","import ReportsTab from './ReportsTab';\n\nexport default ReportsTab;\n","import React, { useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { Tabs } from '@puppet/react-components';\nimport PageHeader from 'components/PageHeader';\nimport Breadcrumbs from 'components/Breadcrumbs';\nimport {\n selectWorkspaceName,\n selectWorkspaceDomain,\n} from 'state/session/selectors';\nimport { ErrorMessageProvider } from 'inventory/utils/context/error-context';\nimport { LINKS } from 'src/routes';\nimport NodeDetailsHeader from './NodeDetailsHeader';\nimport FactTab from './FactTab';\nimport ReportsTab from './ReportsTab';\n\nconst tableDisplayMessages = (t) => ({\n loadingHeader: t('common.table.loading.header'),\n loadingMessage: t('common.table.loading.message'),\n noDataHeader: t('common.table.noData.header'),\n emptyFilterMessage: t('common.table.noData.filter.message'),\n});\n\nconst NodeDetailsView = () => {\n const [activeTab, setTab] = useState('facts-tab');\n const { t } = useTranslation('inventory');\n const workspaceName = useSelector((state) => selectWorkspaceName(state));\n const domain = useSelector((state) => selectWorkspaceDomain(state));\n\n const { id, source } = useParams();\n\n return (\n <>\n \n \n \n \n
    \n setTab(tab)}>\n \n \n \n \n \n \n \n
    \n
    \n \n );\n};\n\nexport default NodeDetailsView;\n","import NodeDetails from './NodeDetails';\n\nexport default NodeDetails;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { Button, ConfirmationModal } from '@puppet/react-components';\nimport { useMutation } from '@apollo/client';\nimport DELETE_SAVED_VIEWS from 'inventory/services/graphql/queries/mutationDeleteView.gql';\nimport client from 'inventory/services/graphql/index';\n\nconst DeleteViewModal = ({ name, workspace }) => {\n const { t } = useTranslation('inventory');\n const [open, setOpen] = useState(false);\n\n const [deleteView] = useMutation(DELETE_SAVED_VIEWS, { client });\n\n const onConfirm = (deleteName, deleteWorkspace) => {\n deleteView({\n variables: {\n name: deleteName,\n workspace: deleteWorkspace,\n },\n onComplete: setOpen(false),\n refetchQueries: ['GET_FULL_SAVED_VIEWS'],\n });\n };\n\n return (\n
    \n setOpen(true)}\n data-testid={`stored-views-delete-${name}`}\n />\n onConfirm(name, workspace)}\n onCancel={() => setOpen(false)}\n isOpen={open}\n />\n
    \n );\n};\nexport default DeleteViewModal;\n\nDeleteViewModal.propTypes = {\n name: PropTypes.string.isRequired,\n workspace: PropTypes.string.isRequired,\n};\n","import DeleteViewModal from './DeleteViewModal';\n\nexport default DeleteViewModal;\n","import React, { useState } from 'react';\nimport { func, string } from 'prop-types';\nimport { useTranslation } from 'react-i18next';\nimport { Button, ConfirmationModal } from '@puppet/react-components';\n\nconst PinViewModal = ({ onConfirm, name }) => {\n const { t } = useTranslation('inventory');\n\n const [open, setOpen] = useState(false);\n\n return (\n
    \n setOpen(true)}\n data-testid={`stored-views-favorite-${name}`}\n />\n {\n onConfirm();\n setOpen(false);\n }}\n onCancel={() => setOpen(false)}\n isOpen={open}\n />\n
    \n );\n};\nexport default PinViewModal;\n\nPinViewModal.propTypes = {\n onConfirm: func.isRequired,\n name: string.isRequired,\n};\n","import PinViewModal from './PinViewModal';\n\nexport default PinViewModal;\n","import React, { useState, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { Input, Button, Link } from '@puppet/react-components';\nimport { Table, TablePageSelector } from '@puppet/data-grid';\nimport { useQuery, useMutation } from '@apollo/client';\nimport { format, parseISO } from 'date-fns';\nimport { KEYBOARD_KEYS } from 'utils/constants';\nimport GET_FULL_SAVED_VIEWS from 'inventory/services/graphql/queries/queryFullSavedViews.gql';\nimport SET_FAVOURITE_VIEW from 'inventory/services/graphql/queries/mutationSetFavourite.gql';\nimport PageHeader from 'components/PageHeader';\nimport Breadcrumbs from 'components/Breadcrumbs';\n\nimport {\n selectUser,\n selectWorkspaceName,\n selectWorkspaceDomain,\n} from 'state/session/selectors';\nimport QueryError from 'inventory/components/QueryError';\nimport { LINKS } from 'src/routes';\nimport DeleteViewModal from './DeleteViewModal';\nimport PinViewModal from './PinViewModal';\nimport client from '../../services/graphql';\nimport './StoredValue.scss';\n\nconst StoredViews = () => {\n const { t } = useTranslation('inventory');\n const workspaceName = useSelector((state) => selectWorkspaceName(state));\n const { userName } = useSelector((state) => selectUser(state));\n const domain = useSelector((state) => selectWorkspaceDomain(state));\n const [savedViews, setSavedViews] = useState([]);\n const [pagination, setPaginationInfo] = useState({});\n const [totalCount, setTotalCount] = useState(0);\n const [currentOffSet, setCurrentOffset] = useState(0);\n const [filter, setFilter] = useState('');\n const [inputValue, setInputValue] = useState('');\n const [sortedColumn, setSortedColumn] = useState([\n {\n sortDataKey: 'createdTime',\n direction: 'asc',\n },\n ]);\n\n const limit = 30;\n\n const changeDirFormat = (originalDir) => {\n if (originalDir === 'desc') {\n return 'DESC';\n }\n return 'ASC';\n };\n\n const { data, loading, error } = useQuery(GET_FULL_SAVED_VIEWS, {\n client,\n variables: {\n workspace: domain,\n user: userName,\n name: filter,\n limit,\n offset: currentOffSet,\n orderBy: [\n {\n field: sortedColumn[0].sortDataKey,\n order: changeDirFormat(sortedColumn[0].direction),\n },\n ],\n },\n });\n\n const [setFavouriteView] = useMutation(SET_FAVOURITE_VIEW, {\n client,\n variables: {\n workspace: domain,\n user: userName,\n },\n });\n\n useEffect(() => {\n const onPinClick = (rowName, isFavourite) => {\n setFavouriteView({\n variables: {\n name: rowName,\n value: !isFavourite,\n },\n refetchQueries: ['GET_FULL_SAVED_VIEWS'],\n });\n };\n\n if (data !== undefined) {\n if (!loading && data.views !== null) {\n const tableData = data?.views?.views.map((row) => {\n const {\n name,\n favourite,\n workspace,\n createdTime,\n createdBy,\n description,\n } = row;\n const viewURL = `${encodeURI(name)}`;\n return {\n description,\n favourite,\n workspace,\n createdBy,\n actions: (\n
    \n {row.favourite === true ? (\n onPinClick(name, favourite)}\n name={name}\n />\n ) : (\n onPinClick(name, favourite)}\n data-testid={`stored-views-favourite-${name}`}\n />\n )}\n {userName !== createdBy ? (\n
    \n ) : (\n \n )}\n
    \n ),\n\n name: (\n \n {name}\n \n ),\n createdTime: format(parseISO(createdTime), 'dd/MM/yyyy'),\n };\n });\n\n setSavedViews(tableData);\n setPaginationInfo(data?.views?.pageInfo);\n setTotalCount(data?.views?.totalCount);\n } else {\n setSavedViews([]);\n }\n }\n }, [data, loading, setFavouriteView, userName]);\n\n const columns = [\n {\n label: t('storedViews.table.column.name'),\n dataKey: 'name',\n sortable: true,\n },\n {\n label: t('storedViews.table.column.description'),\n dataKey: 'description',\n },\n\n {\n label: t('storedViews.table.column.savedBy'),\n dataKey: 'createdBy',\n sortable: true,\n },\n {\n label: t('storedViews.table.column.savedOn'),\n dataKey: 'createdTime',\n sortable: true,\n },\n { label: t('storedViews.table.column.actions'), dataKey: 'actions' },\n ];\n\n const handleEnterKeyPress = (e) => {\n if (e.keyCode === KEYBOARD_KEYS.enter) {\n setFilter(e.target.value);\n }\n };\n\n const handleOnSort = (newDirection, newDataKey) => {\n setSortedColumn(() => {\n return [\n {\n direction: newDirection,\n sortDataKey: newDataKey,\n },\n ];\n });\n };\n\n const pageSelectFunc = (newPage) => {\n // prevent paging if no data is available\n if (totalCount === 0) return;\n if (newPage === 1) {\n setCurrentOffset(0);\n } else {\n const x = newPage * limit - limit;\n setCurrentOffset(x);\n }\n };\n\n const { currentPage = 0, nextOffset = 0, totalPages = 0 } = pagination;\n\n return (\n <>\n \n \n
    \n \n
    \n setInputValue(value)}\n onKeyDown={(e) => {\n handleEnterKeyPress(e);\n }}\n disabled={loading}\n />\n
    \n \n \n totalCount ? totalCount : nextOffset,\n totalCount,\n })\n }\n currentPage={currentPage}\n pageCount={totalPages}\n updatePage={pageSelectFunc}\n />\n \n
    \n \n );\n};\n\nexport default StoredViews;\n","import StoredViews from './StoredViews';\n\nexport default StoredViews;\n","import Inventory from './Inventory';\n\nexport default Inventory;\n","import React from 'react';\nimport NodeExplorer from '@inventory/views/NodeExplorer';\nimport NodeDetails from '@inventory/views/NodeDetails';\nimport StoredViews from '@inventory/views/StoredViews';\nimport { Route } from 'react-router-dom';\nimport { ROUTE_TYPES } from '@utils/constants';\nimport Layout from '@components/Layout';\nimport { getSegment } from 'src/routes';\n\nconst Inventory = (\n }\n >\n \n \n } />\n }\n />\n }\n />\n \n }\n />\n \n \n \n \n);\n\nexport default Inventory;\n","import React from 'react';\nimport { Route, Routes } from 'react-router-dom';\nimport ErrorBoundary from '@views/ErrorBoundary';\nimport Login from '@views/Login';\nimport SignUp from '@views/SignUp';\nimport Alerts from '@components/Alerts';\nimport ProtectedRoute from '@components/ProtectedRoute';\nimport WorkspaceRedirect from '@components/WorkspaceRedirect';\nimport AccessError from '@components/AccessError';\nimport { getSegment } from 'src/routes';\nimport ForgotPassword from '@views/ForgotPassword';\nimport ResetPassword from '@views/ResetPassword';\nimport ChooseWorkspace from '@views/ChooseWorkspace';\nimport Profile from '@views/Profile';\nimport RootViewProfile from '@views/RootViewProfile/RootViewProfile';\nimport Activity from '@views/Activity';\nimport RootAccounts from '@views/RootAccounts';\nimport PublicRoute from '@components/PublicRoute';\nimport Layout from '@components/Layout';\nimport { ROUTE_TYPES } from '@utils/constants';\nimport Cd4pe from './cd4pe';\nimport CodeDelivery from './codeDelivery';\nimport Inventory from './inventory';\nimport './App.scss';\n\nconst App = () => {\n return (\n
    \n \n \n \n }>\n }>\n {CodeDelivery}\n {Inventory}\n {Cd4pe}\n }\n >\n }\n />\n \n }\n >\n }\n />\n \n \n \n }\n />\n \n \n }>\n }\n >\n \n } />\n }\n />\n \n \n \n }>\n } />\n } />\n }\n />\n }\n />\n \n }\n />\n }\n />\n } />\n \n \n
    \n );\n};\n\nexport default App;\n","import log from 'loglevel';\nimport config from 'config';\n\nexport default function initializeLogging() {\n if (config.LOGGING) {\n log.setLevel(config.LOGGING);\n } else if (process.env.NODE_ENV === 'production') {\n log.disableAll();\n } else {\n log.setLevel(log.levels.INFO);\n }\n\n window.log = log;\n}\n","import React, { Suspense } from 'react';\nimport ReactDOM from 'react-dom';\nimport { BrowserRouter as Router } from 'react-router-dom';\nimport { Provider } from 'react-redux';\nimport { ApolloProvider } from '@apollo/client';\nimport { QueryClientProvider } from '@tanstack/react-query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\nimport initializeLogging from '@utils/initializeLogging';\nimport client from '@inventory/services/graphql';\nimport queryClient from '@services/queryClient';\nimport ErrorBoundary from '@views/ErrorBoundary';\nimport store from '@state/store';\nimport App from './App';\nimport './i18n';\nimport './index.scss';\n\ninitializeLogging();\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n \n \n \n \n \n ,\n document.getElementById('root'),\n);\n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"ADD_SAVED_VIEW\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBy\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"facts\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"cards\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"favourite\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createView\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBy\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"facts\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"facts\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"cards\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"cards\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"favourite\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"favourite\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBy\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdTime\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"facts\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cards\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":549}};\n doc.loc.source = {\"body\":\"# Mutation used to add a new View to the datastore\\nmutation ADD_SAVED_VIEW(\\n $name: String!\\n $description: String!\\n $workspace: String!\\n $createdBy: String!\\n $filter: String!\\n $facts: String!\\n $cards: String!\\n $favourite: Boolean!\\n) {\\n createView(\\n name: $name\\n description: $description\\n workspace: $workspace\\n createdBy: $createdBy\\n filter: $filter\\n facts: $facts\\n cards: $cards\\n favourite: $favourite\\n ) {\\n name\\n description\\n workspace\\n createdBy\\n createdTime\\n filter\\n facts\\n cards\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"ADD_SAVED_VIEW\"] = oneQuery(doc, \"ADD_SAVED_VIEW\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"DELETE_SAVED_VIEWS\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"deleteView\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}}}],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":261}};\n doc.loc.source = {\"body\":\"# Mutation used to remove a new View from the datastore\\n# The name of a view and the workspace its contained in are needed in order to execute\\nmutation DELETE_SAVED_VIEWS($name: String!, $workspace: String!) {\\n deleteView(name: $name, workspace: $workspace)\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"DELETE_SAVED_VIEWS\"] = oneQuery(doc, \"DELETE_SAVED_VIEWS\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"EDIT_SAVED_VIEW\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"NewViewDetails\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ViewInput\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"editView\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"input\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"NewViewDetails\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":492}};\n doc.loc.source = {\"body\":\"# Mutation used to edit a new View from the datastore\\n# The name of a view and the workspace its contained in the user who created it and the new details are needed in order to execute\\n# NewViewDetails that can be set are name, description, filter and facts\\nmutation EDIT_SAVED_VIEW(\\n $name: String!\\n $workspace: String!\\n $user: String!\\n $NewViewDetails: ViewInput!\\n) {\\n editView(\\n name: $name\\n workspace: $workspace\\n user: $user\\n input: $NewViewDetails\\n ) {\\n name\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"EDIT_SAVED_VIEW\"] = oneQuery(doc, \"EDIT_SAVED_VIEW\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"mutation\",\"name\":{\"kind\":\"Name\",\"value\":\"SET_FAVOURITE_VIEW\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"setFavourite\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"}}}],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":391}};\n doc.loc.source = {\"body\":\"# Mutation used to change the value of a rows favourite view per user\\n# The workspace a view is on, the user who is favouriting, the name of the view and the value it is being updated to are all needed\\nmutation SET_FAVOURITE_VIEW(\\n $workspace: String!\\n $user: String!\\n $name: String!\\n $value: Boolean!\\n) {\\n setFavourite(workspace: $workspace, user: $user, name: $name, value: $value)\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"SET_FAVOURITE_VIEW\"] = oneQuery(doc, \"SET_FAVOURITE_VIEW\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GET_FACT_DATA\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"certname\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"FactFilter\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hosts\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"}}}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"certname\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"equalTo\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"certname\"}}}]}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"certname\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"factsConnection\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"facts\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":486}};\n doc.loc.source = {\"body\":\"# Query to get all facts and fact values related to a particular host\\n# Can be filtered to return facts equal to the provided variable\\nquery GET_FACT_DATA(\\n $id: ID!\\n $certname: String!\\n $filter: FactFilter\\n $source: String!\\n) {\\n hosts(\\n workspace: { id: $id, source: $source }\\n filter: { certname: { equalTo: $certname } }\\n ) {\\n nodes {\\n certname\\n factsConnection(filter: $filter) {\\n facts {\\n name\\n value\\n }\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"GET_FACT_DATA\"] = oneQuery(doc, \"GET_FACT_DATA\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GET_FACT_PATHS\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"factPaths\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":206}};\n doc.loc.source = {\"body\":\"# Query to get all facts and fact values related to a particular host\\n# Can be filtered to return facts equal to the provided variable\\nquery GET_FACT_PATHS($id: ID!) {\\n factPaths(workspace: { id: $id })\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"GET_FACT_PATHS\"] = oneQuery(doc, \"GET_FACT_PATHS\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GET_FULL_SAVED_VIEWS\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"offset\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"limit\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}},\"type\":{\"kind\":\"ListType\",\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ViewOrderBy\"}}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"views\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"like\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"offset\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"offset\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"limit\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"limit\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"orderBy\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"views\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBy\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdTime\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"facts\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cards\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favourite\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalPages\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasPreviousPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"prevOffset\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nextOffset\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":655}};\n doc.loc.source = {\"body\":\"# Query to get all the shared views saved on a particular workspace\\nquery GET_FULL_SAVED_VIEWS(\\n $workspace: String!\\n $name: String\\n $user: String!\\n $offset: Int\\n $limit: Int\\n $orderBy: [ViewOrderBy!]\\n) {\\n views(\\n workspace: $workspace\\n name: { like: $name }\\n user: $user\\n offset: $offset\\n limit: $limit\\n orderBy: $orderBy\\n ) {\\n views {\\n name\\n workspace\\n description\\n createdBy\\n createdTime\\n filter\\n facts\\n cards\\n favourite\\n }\\n totalCount\\n pageInfo {\\n totalPages\\n currentPage\\n hasNextPage\\n hasPreviousPage\\n prevOffset\\n nextOffset\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"GET_FULL_SAVED_VIEWS\"] = oneQuery(doc, \"GET_FULL_SAVED_VIEWS\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GET_LATEST_REPORT\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"certname\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hosts\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"}}}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"certname\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"equalTo\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"certname\"}}}]}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latestReportTime\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latestReportCorrectiveChange\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latestReportHash\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"latestReportStatus\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reportTimestamp\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"peServerVersion\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":393}};\n doc.loc.source = {\"body\":\"query GET_LATEST_REPORT($id: ID!, $certname: String!, $source: String!) {\\n hosts(\\n workspace: { id: $id, source: $source }\\n filter: { certname: { equalTo: $certname } }\\n ) {\\n totalCount\\n nodes {\\n id\\n latestReportTime\\n latestReportCorrectiveChange\\n latestReportHash\\n latestReportStatus\\n reportTimestamp\\n source\\n peServerVersion\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"GET_LATEST_REPORT\"] = oneQuery(doc, \"GET_LATEST_REPORT\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GET_NODE_GROUP_DATA\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"groups\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"groups\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":167}};\n doc.loc.source = {\"body\":\"query GET_NODE_GROUP_DATA($id: ID!, $source: String) {\\n groups(workspace: { id: $id, source: $source }) {\\n totalCount\\n groups {\\n id\\n name\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"GET_NODE_GROUP_DATA\"] = oneQuery(doc, \"GET_NODE_GROUP_DATA\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GET_PE_MASTER_SERVER\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"puppetEnterprise\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"puppetEnterprise\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"puppetServerEndpoint\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":172}};\n doc.loc.source = {\"body\":\"query GET_PE_MASTER_SERVER($id: ID!) {\\n puppetEnterprise(workspace: { id: $id }) {\\n totalCount\\n puppetEnterprise {\\n name\\n puppetServerEndpoint\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"GET_PE_MASTER_SERVER\"] = oneQuery(doc, \"GET_PE_MASTER_SERVER\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GET_REPORT_DATA\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"certname\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ReportFilter\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"limit\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"offset\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Int\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hosts\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}},{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"}}}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"certname\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"equalTo\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"certname\"}}}]}}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"limit\"},\"value\":{\"kind\":\"IntValue\",\"value\":\"1\"}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"source\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"peServerVersion\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reportsConnection\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"limit\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"limit\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"offset\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"offset\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"reports\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hash\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"status\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"correctiveChange\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"endTime\"},\"arguments\":[],\"directives\":[]}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"pageInfo\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalPages\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"currentPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasNextPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hasPreviousPage\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"prevOffset\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nextOffset\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":798}};\n doc.loc.source = {\"body\":\"# Query to get all reports associated with a particular host\\n# Includes paging\\n# Can be fitlered by a report filter\\nquery GET_REPORT_DATA(\\n $id: ID!\\n $certname: String!\\n $filter: ReportFilter\\n $limit: Int!\\n $offset: Int!\\n $source: String!\\n) {\\n hosts(\\n workspace: { id: $id, source: $source }\\n filter: { certname: { equalTo: $certname } }\\n limit: 1\\n ) {\\n nodes {\\n source\\n peServerVersion\\n reportsConnection(filter: $filter, limit: $limit, offset: $offset) {\\n totalCount\\n reports {\\n hash\\n status\\n correctiveChange\\n endTime\\n }\\n pageInfo {\\n totalPages\\n currentPage\\n hasNextPage\\n hasPreviousPage\\n prevOffset\\n nextOffset\\n }\\n }\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"GET_REPORT_DATA\"] = oneQuery(doc, \"GET_REPORT_DATA\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GET_SAVED_VIEW\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"views\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"equalTo\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"}}}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"views\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdBy\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"createdTime\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"facts\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"cards\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favourite\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":362}};\n doc.loc.source = {\"body\":\"# Query a particular shared view on a particular workspace\\nquery GET_SAVED_VIEW($workspace: String!, $name: String, $user: String!) {\\n views(workspace: $workspace, name: { equalTo: $name }, user: $user) {\\n views {\\n name\\n workspace\\n description\\n createdBy\\n createdTime\\n filter\\n facts\\n cards\\n favourite\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"GET_SAVED_VIEW\"] = oneQuery(doc, \"GET_SAVED_VIEW\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"GET_SAVED_VIEWS\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"views\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"user\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"views\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"favourite\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"description\"},\"arguments\":[],\"directives\":[]}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":244}};\n doc.loc.source = {\"body\":\"# Query to get all the shared views saved on a particular workspace\\nquery GET_SAVED_VIEWS($workspace: String!, $user: String!) {\\n views(workspace: $workspace, user: $user) {\\n views {\\n name\\n favourite\\n description\\n }\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"GET_SAVED_VIEWS\"] = oneQuery(doc, \"GET_SAVED_VIEWS\");\n \n","\n var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"FACT_QUERY_DATA\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"chart\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"name\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"filter\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"facts\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"value\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"count\"},\"arguments\":[],\"directives\":[]}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"hosts\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"workspace\"},\"value\":{\"kind\":\"ObjectValue\",\"fields\":[{\"kind\":\"ObjectField\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"}}}]}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"totalCount\"},\"arguments\":[],\"directives\":[]}]}}]}}],\"loc\":{\"start\":0,\"end\":229}};\n doc.loc.source = {\"body\":\"query FACT_QUERY_DATA($id: ID!, $filter: String!) {\\n chart(workspace: { id: $id }, filter: { name: $filter }) {\\n totalCount\\n facts {\\n value\\n count\\n }\\n }\\n hosts(workspace: { id: $id }) {\\n totalCount\\n }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n \n\n var names = {};\n function unique(defs) {\n return defs.filter(\n function(def) {\n if (def.kind !== 'FragmentDefinition') return true;\n var name = def.name.value\n if (names[name]) {\n return false;\n } else {\n names[name] = true;\n return true;\n }\n }\n )\n }\n \n\n // Collect any fragment/type references from a node, adding them to the refs Set\n function collectFragmentReferences(node, refs) {\n if (node.kind === \"FragmentSpread\") {\n refs.add(node.name.value);\n } else if (node.kind === \"VariableDefinition\") {\n var type = node.type;\n if (type.kind === \"NamedType\") {\n refs.add(type.name.value);\n }\n }\n\n if (node.selectionSet) {\n node.selectionSet.selections.forEach(function(selection) {\n collectFragmentReferences(selection, refs);\n });\n }\n\n if (node.variableDefinitions) {\n node.variableDefinitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n\n if (node.definitions) {\n node.definitions.forEach(function(def) {\n collectFragmentReferences(def, refs);\n });\n }\n }\n\n var definitionRefs = {};\n (function extractReferences() {\n doc.definitions.forEach(function(def) {\n if (def.name) {\n var refs = new Set();\n collectFragmentReferences(def, refs);\n definitionRefs[def.name.value] = refs;\n }\n });\n })();\n\n function findOperation(doc, name) {\n for (var i = 0; i < doc.definitions.length; i++) {\n var element = doc.definitions[i];\n if (element.name && element.name.value == name) {\n return element;\n }\n }\n }\n\n function oneQuery(doc, operationName) {\n // Copy the DocumentNode, but clear out the definitions\n var newDoc = {\n kind: doc.kind,\n definitions: [findOperation(doc, operationName)]\n };\n if (doc.hasOwnProperty(\"loc\")) {\n newDoc.loc = doc.loc;\n }\n\n // Now, for the operation we're running, find any fragments referenced by\n // it or the fragments it references\n var opRefs = definitionRefs[operationName] || new Set();\n var allRefs = new Set();\n var newRefs = new Set();\n\n // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n opRefs.forEach(function(refName) {\n newRefs.add(refName);\n });\n\n while (newRefs.size > 0) {\n var prevRefs = newRefs;\n newRefs = new Set();\n\n prevRefs.forEach(function(refName) {\n if (!allRefs.has(refName)) {\n allRefs.add(refName);\n var childRefs = definitionRefs[refName] || new Set();\n childRefs.forEach(function(childRef) {\n newRefs.add(childRef);\n });\n }\n });\n }\n\n allRefs.forEach(function(refName) {\n var op = findOperation(doc, refName);\n if (op) {\n newDoc.definitions.push(op);\n }\n });\n\n return newDoc;\n }\n \n module.exports = doc;\n \n module.exports[\"FACT_QUERY_DATA\"] = oneQuery(doc, \"FACT_QUERY_DATA\");\n \n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 92844,\n\t\"./hu.js\": 92844,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 37930,\n\t\"./se.js\": 37930,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;"],"names":["requiredConfigurationOptionsValues","getConfig","config","errors","reduce","prev","current","value","window","appConfig","_objectSpread","length","Error","join","ApolloClient","uri","cache","InMemoryCache","dataIdFromObject","o","_id","__typename","credentials","fetchPolicy","QueryClient","defaultOptions","queries","retry","refetchOnWindowFocus","mutations","ROUTES","cd4pe","base","ssoLogout","logout","samlStatus","root","settings","puppetEnterprise","workspaces","jobHardware","jobHardwareCapability","workspace","repositories","name","modules","deployments","id","moduleDeployments","analysis","environmentResultId","username","profile","messages","manageWorkspaces","codeDelivery","jobs","jobInstanceId","templates","new","templateId","edit","capabilityId","groups","add","groupId","addUsers","users","ssh","peId","environments","envName","regenerate","sourceControl","inventory","nodes","savedViews","view","source","activity","oauth","github","bitbucket","oauth2","azureDevOps","accounts","login","forgotPassword","resetPassword","chooseWorkspace","signup","forbidden","notFound","getSegment","routePath","segments","split","key","getRoute","_ref","objPath","path","newPath","getLinkFn","_ref4","pathParams","query","generatePath","queryParams","encodedParams","Object","entries","filter","_ref2","undefined","map","_ref3","param","encodeURIComponent","getQueryParamsString","LINKS","rootSettings","rootPuppetEnterprise","rootWorkspaces","rootJobHardware","viewDeployment","viewImpactAnalysis","viewImpactAnalysisEnvironmentResult","userAccount","jobDetails","listJobTemplates","newJobTemplate","editJobTemplate","listModules","newModule","listRepositories","newRepository","newCapability","editCapability","viewRepository","editRepository","viewModule","editModule","listGroups","addGroup","viewGroup","addGroupUsers","listUsers","addUser","listPuppetEnterprise","newPuppetEnterprise","editPuppetEnterprise","addProtectedEnvironment","editProtectedEnvironment","regeneratePuppetEnterpriseToken","listSourceControl","newSourceControl","listNodes","viewSource","getAuthCookie","document","cookie","cookies","authCookie","find","trim","startsWith","keyval","generateBaseCorsConfig","method","body","corsHeaders","arguments","defaultConfig","headers","mode","OpenAPI","authorization","Accept","arrayOfAll","array","Cd4peError","constructor","status","message","super","this","isKnownCd4peError","response","isUnknownCd4peError","ApiError","isCd4peApiError","extendsBaseError","error","e","keys","every","k","isInternalError","code","isApiError","r","traceId","getApiError","errorResponse","errorBody","isGenericError","url","isErrorResponse","formatError","fallback","finalError","details","cause","uriPath","formattedMessage","toError","baseError","isKnownCd4peErrorBody","ok","statusText","handleQueryRequest","async","apiCall","handleApiRequest","unwrapApiResponse","apiError","ROUTE_TYPES","PROXY_HEADER","KEYBOARD_KEYS","CARDTYPES","donut","fact","categories","series","data","PUPPET_FACT","COMPOUND_FILTER_AND","COMPOUND_FILTER_OR","ESTATE_REPORTING_FILTER_OPERATORS","equals","symbol","label","contains","FILTER_UNION_OPTIONS","PERMISSION_OBJECTS","PERMISSION_ACTIONS","PERMISSION_INSTANCES","IN_PROGRESS_STATES","FAILED_STATES","payload","fetch","JSON","stringify","op","content","json","Promise","reject","performLogin","performRootLogin","signUp","signOut","Headers","log","AUTH_LIST_TOKENS_TAG","useSignOut","queryClient","useQueryClient","useMutation","onSuccess","removeQueries","isInitialized","state","session","initialized","selectUser","user","isCurrentWorkspacePending","currentWorkspacePending","selectWorkspaceName","pathOr","selectWorkspaceDomain","selectWorkspaces","initialState","currentWorkspace","slice","createSlice","reducers","resetSession","setInitialized","action","setUser","setWorkspaces","setCurrentWorkspace","renameWorkspace","actions","w","domain","removeWorkspace","createWorkspace","sessionReducer","reducer","initializeApp","dispatch","workspaceName","getState","toLowerCase","t","useTranslation","navigate","useNavigate","params","useSearchParams","useDispatch","React","className","src","alt","Heading","get","Text","PdsLink","as","Link","onClick","mutateAsync","to","ErrorBoundary","props","hasError","static","componentDidCatch","errorInfo","render","children","AccessError","propTypes","PropTypes","createAlert","closeable","dismissAfter","nanoid","dismissAlert","a","uiAlertsReducer","selector","ui","alerts","combineReducers","configureStore","middleware","getDefaultMiddleware","concat","createDebounce","devTools","process","Trans","i18nKey","values","components","icon","Icon","type","ErrorWrapper","ErrorTitle","CommonDetails","Array","isArray","v","isBadRequestError","errorCode","docsLinks","pathVersion","getPathVersion","version","TEAMS_UI_VERSION","match","sidebarDocumentation","preBuiltJobsReference","webhookTroubleshooting","jobTemplateSecrets","impactAnalysis","impactAnalysisProduct","configureImpactAnalysis","addIntegration","learnAboutPrefix","integrateBitbucketCloud","integrateGithub","integrateAzureDevOps","permissionsReference","addHardware","pipelinesAsCode","puppetLandingPage","CopyrightFooter","Logo","product","href","target","size","onSubmit","submitting","isError","showPassword","setShowPassword","useState","PdsForm","submittable","actionsPosition","submitLabel","autoComplete","required","requiredFieldMessage","placeholder","trailingButtonIcon","trailingButtonProps","onClickTrailingButton","FormError","onChangeMethod","Form","color","ssoUrl","Button","Login","search","useLocation","auth","isLoading","useQuery","AuthTokensV1Service","rootLogin","loginMethod","setLoginMethod","useEffect","URLSearchParams","success","redirectURL","redirectTo","handleChangeToRoot","preventDefault","Authentication","title","footer","Loading","StandardForm","mutate","LdapForm","SamlForm","RootForm","GET_USER_QUERY_TAG","LIST_USERS_QUERY_TAG","useGetUserV1","options","UserV1Service","useSignUpV1","useUpdateUserV1","useListUsersByPrefix","prefix","scope","useDeleteUser","loggedInUsername","usernameToDelete","userName","toString","deleteUser","useSetSuperUser","setSuperUser","showConfirmPassword","setShowConfirmPassword","SignUp","setError","SignUpForm","firstName","lastName","companyName","email","password","confirmPassword","passwd","passwd2","useAppDispatch","useAppSelector","useSelector","getAlertType","alertType","uuid","timer","setTimer","clearTimeout","setTimeout","DsAlert","onClose","generateAlerts","alert","Alert","Alerts","uiAlerts","element","useRef","createElement","setAttribute","appendChild","mountedElement","remove","ReactDOM","DsAlerts","PageLoader","useAuth","queryEnabled","enabled","isQueryEnabled","onlyAllowSuperuser","useParams","isInitializedSelector","pathname","Navigate","replace","locationPathname","superUser","Outlet","WorkspaceRedirect","workspaceUrlParam","location","workspaceStatePending","redirect","useMemo","some","getDefaultRoute","chooseWorkspaceLink","userRequiresWorkspace","rootUser","endsWith","checkForRedirect","enable","ConditionalRender","ForgotPassword","submitForgotPassword","formSubmitted","setFormSubmitted","requestBody","formData","ResetPassword","submitResetPassword","errorValue","setErrorValue","urlParams","token","newPassword","String","_objectWithoutProperties","_excluded","_extends","classnames","Card","useInvalidateUserQuery","invalidateQueries","queryKey","ChooseWorkspaceForm","newName","setNewName","appDispatch","WorkspacesV1Service","newWorkspaceName","onChange","_","replaceAll","ChooseWorkspaceInfo","ChooseWorkspace","setView","handleSignOut","LandingPage","PageLayout","Header","Content","PageLayoutContent","Breadcrumbs","PageLayoutBreadcrumbs","isOpen","isViewingPersonalProfile","updateUserEmail","Modal","cancellable","newEmail","userId","onSubmitHandler","onCancel","cancelLabel","updateUserPassword","userToView","loggedInUser","isChangeEmailOpen","setIsChangeEmailOpen","isChangePasswordOpen","setIsChangePasswordOpen","isLoggedInRootOrSuperUser","disabled","ChangePasswordDialog","TooltipHoverArea","tooltip","anchor","ChangeEmailDialog","breadcrumbs","sections","breadcrumb","linkDestination","PdsBreadcrumb","NavLink","displayName","dataTestId","isRequired","openCopiedAlert","setOpenCopiedAlert","closeOnEscapeAndOverlay","Code","Copy","onCopy","onTokenCopy","onCloseAlert","getDefaultExpires","format","Date","days","AccessTokenForm","expiresError","setExpiresError","formValues","setFormValues","expiresOn","setToken","formKey","setFormKey","createToken","useCreateTokenV1","isDateValid","chosenDate","isBefore","startOfDay","isAfter","years","onFormChange","newToken","submitDisabled","min","max","addDays","TokenCreatedDialog","onTokenCreatedDialogClose","Table","rest","PDSTable","TableHeader","stringCompare","s1","s2","b","TABLE_DATE_FORMAT","onRevokeToken","sort","setSort","direction","sortDataKey","sortName","sortDate","aDate","parseISO","bDate","compareAsc","compareDesc","select","d","authTokens","useListTokensV1","columns","dataKey","sortable","cellRenderer","row","rowData","createdOn","weight","rowKey","loading","emptyStateHeader","emptyStateMessage","sortedColumn","onSort","onSortHandler","isConfirmedRevoke","setIsConfirmedRevoke","revokeToken","useRevokeToken","CheckboxLabel","tokenName","Checkbox","checked","tokenId","tokenToRevoke","setTokenToRevoke","onRevokeTokenHandler","UserDetailsCard","AccessTokenTable","RevokeTokenDialog","onRevokeDialogClose","RootViewProfile","workspaceId","selectedUser","Number","Profile","useWorkspaceName","useWorkspaceDomain","workspaceDomain","isFeatureLocked","selectable","active","elevation","axisStyle","fontFamily","fontWeight","yAxisLabel","ResponsiveContainer","width","height","BarChart","barSize","margin","top","right","left","bottom","XAxis","style","tickLine","dy","YAxis","Label","angle","position","Tooltip","cursor","CustomTooltip","Bar","background","fill","radius","activeBar","stroke","strokeWidth","Popover","side","dateFormat","getDefaultEnd","VALUES_OVER_TIME_KEYS","AUTOMATED_KEYS","CHART_KEYS","Activity","startDateError","setStartDateError","endDateError","setEndDateError","startDate","subDays","endDate","impactAnalysisPopover","setImpactAnalysisPopover","fetchStatus","ValueReportingV1Service","useGenerateValueReportV1","license","LicenseV1Service","chartValues","isLoadingData","included","attributes","getDataValue","valueData","startError","endError","isStartDateValid","isValid","isEndDateValid","ValueCard","onValueClickHandler","InfoPopup","renderIAPopover","ValueChart","timeout","searchTerm","setSearchTerm","appliedSearchTerm","setAppliedSearchTerm","debouncedSearchHandler","debounce","handleSearch","newSearchTerm","formValue","setFormValue","confirmationInput","submitType","onChangeHandler","nameChanged","newValues","RootAccountsTable","useDebouncedSearch","listUsersScope","setListUsersScope","tableData","setTableData","setSortedColumn","userToDelete","setUserToDelete","userToConvertToSuperUser","setUserToConvertToSuperUser","userToRemoveSuperUser","setUserToRemoveSuperUser","scopeCheckboxState","setScopeCheckboxState","onChangeIsSuperUser","newSuperUserVal","cellDataGetter","cellData","Switch","isRootUser","deleteUserToolTip","Input","superUserFilter","newDirection","newDataKey","sortedData","sortTableData","sortKey","formattedSort","arg1","arg2","DeleteUserModal","ConfirmationModal","description","onConfirm","confirmLabel","confirmButtonLoading","confirmButtonType","RootAccounts","PublicRoute","isFetching","AppSidebar","workspaceActions","rootConsolePage","getWorkspaceSelectionSection","Sidebar","profilePaths","l","includes","ActionSelect","exact","end","getWorkspaceSection","items","push","rel","Boolean","logo","ariaLabel","renderFooter","sidebarFooter","enableSignout","onSignout","usernameTooLong","versionTooLong","textAlign","defaultProps","ROOT_USERNAME","LeftNav","visible","handleManageWorkspaces","handleRootConsole","handleSelectWorkspace","newUrl","routeType","renderContent","getPageStyles","head","getElementsByTagName","Cd4pe","pageTitle","scriptId","scriptLoaded","setScriptLoaded","urlWorkspace","preLoadStyles","setPreLoadStyles","preLoadStylesRef","oldStyles","jsScript","getElementById","removeChild","unloadScript","forEach","redirected","info","URL","bundleScript","html","text","doc","DOMParser","parseFromString","pagePropsScript","scripts","namedItem","pageProps","parse","PAGE_PROPS","parseCd4peHtml","onLoadHandler","onErrorHandler","bundleUrl","bundlePath","script","onload","onerror","loadScript","err","fetchCd4e","WebComponent","getElement","Cd4pePage","Layout","Route","index","setRefById","allRefs","has","newRef","set","getRefById","useRefList","Map","fnsLocales","enUS","enGB","formatDistanceToNow","date","locale","fnsFormatDistanceToNow","JOB_TEMPLATES_QUERY_TAG","JOB_INSTANCES_LOG_QUERY_TAG","useListTemplatesV1","JobsV1Service","staleTime","useGetJobInstanceV1","instanceId","useRerunJobInstanceV1","p","actionCreator","TOGGLE_CONFIRM_JOB_TEMPLATE_DELETE","SORT_JOB_TEMPLATES","FILTER_JOB_TEMPLATES","listJobTemplateActions","jobTemplateId","at","JOB_TEMPLATE_SORTS","lastRunTime","_ref5","_ref6","toggleConfirmJobTemplateDelete","JobTemplateListDefaultState","confirmDeleteId","buttonRefs","jobTemplateActions","setRef","ref","jobTemplatesTable","rows","template","jobTemplateToRow","jobTemplate","addSuffix","tableColumns","createJobCta","JobTemplateList","i18n","useReducer","getRef","templateState","deleteTemplate","useDeleteTemplateV1","allTemplates","jobTemplates","deleteError","showConfirmDelete","language","Overlay","show","align","CommonFormSectionMain","fullWidth","CommonFormSectionSidebar","classNames","CommonFormSection","Main","CommonFormComponent","CommonForm","forwardRef","Section","DefinitionsEntryTitle","DefinitionsEntryContent","DefinitionsEntry","modifierClass","Title","Definitions","result","c","hasIcons","Entry","codeMirrorConfig","theme","lineNumbers","tabSize","indentWithTabs","lineWrapping","extraKeys","Tab","cm","somethingSelected","execCommand","autofocus","ShellEditor","readOnly","editorRef","refresh","editorTextarea","getInputField","htmlFor","CodeMirror","editorDidMount","editor","autoScroll","onBeforeChange","_editor","_data","newValue","renderError","EDIT_FORM","TOGGLE_COMMANDS_VIEW","INITIALIZE_FORM_STATE","SUBMIT_ATTEMPTED","SET_RUN_IN_DOCKER","SET_RUN_ON_SHARED_HARDWARE","SET_COMMANDS","defaultJobTemplateState","formState","commands","commandsSuccess","commandsError","runOnSharedHardware","runOnDefaultImage","hardwareCapabilities","runInDocker","imageName","dockerArgs","envVars","isExpanded","commandsMissing","submitAttempted","toggleCommandsView","getDockerConfig","vmImage","vmArgs","useDefaultImage","initializeFormState","manifest","build","onError","buildVars","sharedHardware","buildCapabilities","getHardwareConfig","CLASS_PREFIX","FIELD_NAMES","transformBreadcrumbs","translationKey","jobCommandsSection","commandsLabel","secretsSidebar","jobSecretsSection","onAddSecret","onViewSecret","onEditSecret","onDeleteSecret","secrets","secretsError","secretDocsLink","s","secretName","secretsTable","commandsHelp","trailingIcon","expandedCommands","successCommandsLabel","errorCommandsLabel","defaultDockerImage","dockerConfig","imageNameLabel","dockerArgsLabel","RadioButton","runSection","defaultContainer","hardwareCapabilitiesSection","hardwareCapabilitiesLabel","h","optionalConfigSection","envVarsLabel","pageBody","formRef","fieldName","submitTranslationKey","nameSection","formError","JobTemplate","titleTranslationKey","subtitleTranslationKey","loadError","submitInterceptor","addEventListener","CAPABILITIES_LIST_QUERY_TAG","CAPABILITIES_GET_QUERY_TAG","useListCapabilitiesV1","JobHardwareCapabilitiesV1Service","useGetSharedDockerImageSettingsV1","SharedDockerImageSettingsV1Service","NewJobTemplate","createTemplate","useCreateTemplateV1","capabilities","dockerContainer","jobsPageUrl","isSuccess","jobHardwareCapabilities","GET_JOB_SECRETS_LOADING","GET_JOB_SECRETS_COMPLETE","GET_JOB_SECRETS_ERROR","CREATE_JOB_SECRET_LOADING","CREATE_JOB_SECRET_COMPLETE","CREATE_JOB_SECRET_ERROR","EDIT_JOB_SECRET_LOADING","EDIT_JOB_SECRET_COMPLETE","EDIT_JOB_SECRET_ERROR","DELETE_JOB_SECRET_LOADING","DELETE_JOB_SECRET_COMPLETE","DELETE_JOB_SECRET_ERROR","codeDeliveryActions","createJobSecretLoading","secretDetails","getJobSecretsLoading","editJobSecretLoading","deletJobSecretLoading","SECRET_TYPES","defaultState","secretDescription","secret","secretTypeToDisplayName","secretType","resetSecretFields","secretOptions","setState","viewSecret","setViewSecret","field","generateSecretFields","generateSecretInfo","variableName","environmentVariable","successSaveAlert","onEdit","onDelete","successAlert","environmentVariables","TOGGLE_MODAL","TOGGLE_SELECTED_SECRET","editJobTemplateActions","modal","editSecretDetails","targetSecret","deleteSecretDetails","createJobSecretError","createJobSecretSuccess","getJobSecretsError","jobSecrets","selectedSecret","editJobSecretSuccess","editJobSecretError","deleteJobSecretLoading","deleteJobSecretError","sharedAt","renderSecretsFormModal","JobTemplateSecretForm","editBody","editResponse","SecretsV1Service","editJobSecret","createBody","createResponse","accessResponse","createJobSecret","renderDeleteSecretModal","deleteResponse","deleteJobSecret","EditJobTemplate","editTemplate","useReplaceTemplateV1","listJobSecrets","viewSecretDetails","renderSecretDetailsModal","JobTemplateSecretDetails","NO_SOURCES_FOUND","NO_REPOS_FOUND","NO_BRANCHES_FOUND","GenericErrorAlert","ADD_CODE_PROJECT_FORM_ACTION_TYPES","addCodeProjectFormActions","branch","AddCodeProjectForm","sources","selectedSource","getSourcesLoading","getSourcesError","selectedRepository","getReposLoading","getReposError","branches","selectedBranch","mainBranch","getBranchesLoading","getBranchesError","createMainBranch","saveLoading","saveError","webhookError","currentModalClosed","repoFilterCallback","createMainBranchChange","submitCallback","cancelCallback","closeModal","formVals","SELECTED_SOURCE","SELECTED_REPOSITORY","SELECTED_BRANCH","NAME","renderLoader","condition","sourceOrRepoEmpty","ERRORS","onFilter","count","renderBranchSelect","getBranchSelectLabel","validator","BITBUCKET","BITBUCKET_SERVER","GITHUB_ENTERPRISE","GITHUB","AZURE_DEV_OPS","GITLAB","getProviderDisplayName","providerName","Provider","GET_SOURCES_START","GET_SOURCES_COMPLETE","GET_SOURCES_ERROR","GET_REPOS_START","GET_REPOS_COMPLETE","GET_REPOS_ERROR","GET_BRANCHES_START","GET_BRANCHES_COMPLETE","GET_BRANCHES_ERROR","getSourcesStart","getReposStart","repos","getBranchesStart","getSources","providersRes","VcsV1Service","orgPromises","vcsIntegrations","connected","provider","orgResponses","all","organizations","isSuccessResponse","vcsOrganizations","flat","actualValue","getIconType","getRepositories","project","organization","vcsRepositories","repo","getBranches","vcsBranches","func","debounceTime","_len","args","_key","later","apply","SAVE_MODULE_START","SAVE_MODULE_COMPLETE","SAVE_MODULE_ERROR","SAVE_MODULE_WEBHOOK_ERROR","CREATE_MAIN_BRANCH","CLOSE_MODAL","newModuleActions","saveModuleStart","saveModuleWebhookError","saveModule","modulePayload","branchPayload","saveModuleCall","moduleResponse","ModulesV1Service","branchResponse","updatedModulePayload","pacBranch","defaultNewModuleState","saveModuleLoading","saveModuleError","saveModuleSuccess","newModuleName","vcsAt","getActualValue","selectedItem","item","i","debouncedGetRepos","debouncedGetBranches","NewModule","sourceMatch","repoMatch","branchMatch","filterTerm","toUpperCase","adaptProviderForBackend","srcRepoName","srcRepoDisplayName","srcRepoDisplayOwner","srcRepoOwner","srcRepoId","sanitizedCreateMainBranch","scanForPacFile","srcRepoProvider","targetBranch","repositoryName","sha","headSha","onClickCancel","dispatchCloseModal","SAVE_CONTROL_REPO_START","SAVE_CONTROL_REPO_COMPLETE","SAVE_CONTROL_REPO_ERROR","SAVE_CONTROL_REPO_WEBHOOK_ERROR","defaultNewControlRepoState","saveControlRepoSuccess","saveControlRepoLoading","newControlRepoName","saveControlRepoError","saveControlRepoWebhookError","newControlRepoActions","saveControlRepoStart","saveControlRepo","repoPayload","saveControlRepoCall","repoResponse","ControlReposV1Service","updatedControlRepoPayload","NewControlRepo","controlRepoPayload","GET_GROUPS_LOADING","GET_GROUPS_COMPLETE","GET_GROUPS_ERROR","DELETE_GROUPS_LOADING","DELETE_GROUPS_COMPLETE","DELETE_GROUPS_ERROR","TOGGLE_CONFIRM_DELETE","FILTER_GROUPS","SORT_GROUPS","getGroupsLoading","groupDataPayload","deleteGroupLoading","deleteGroupComplete","filterPayload","sortPayload","GROUP_SORTS","filterGroups","filteredGroups","toggleConfirmDelete","sortGroups","_ref7","multiplier","sortedGroups","groupListDefaultState","getGroupsError","deleteGroupError","groupActions","isBuiltIn","groupsTable","newGroupName","group","groupToRow","builtIn","GroupLink","noGropupsCta","rowClassName","GroupList","searchParams","fetchGroups","_ref8","GroupsV1Service","getGroups","maybeDelete","_ref9","newGroups","_ref10","deleteGroup","deleteErrorAlert","GET_USERS_LOADING","GET_USERS_COMPLETE","GET_USERS_ERROR","DELETE_USER_LOADING","DELETE_USER_COMPLETE","DELETE_USER_ERROR","FILTER_USERS","SORT_USERS","defaultUserListState","getUsersLoading","getUsersError","deleteUserLoading","deleteUserError","filteredUsers","workspaceMembers","newUsers","toggle","filteredPayload","sortedPayload","filterUsers","userList","USER_SORTS","sortUsers","sortedUsers","userActions","usersTable","userToRow","emptyMessage","UserList","fetchUsers","pageSize","getUsers","x","ADD_USERS_LOADING","ADD_USERS_COMPLETE","ADD_USERS_ERROR","TOGGLE_ALL_USERS_SELECTION","TOGGLE_USER_ROW_SELECTION","TOGGLE_ALL_GROUPS_SELECTION","TOGGLE_GROUP_ROW_SELECTION","addUsersLoading","addUsersComplete","toggleAllPayload","rowPayload","usersSelectedCount","acc","u","selected","toggleAllSelectionOfType","isChecked","toggleAllUsersSelection","indeterminateUserState","selectAll","toggleAllGroupsSelection","indeterminateGroupState","USERNAME_SORTS","defaultAddUserState","cachedUsers","selectAllUsers","addUsersError","selectAllGroups","workspaceMemberCandidates","groupsSelectedCount","onHeaderSelected","onGroupRowSelect","toggleGroupRowSelection","updatedGroups","g","onUserRowSelect","toggleUserRowSelection","updatedUsers","userTableColumns","searchPlaceholder","searchValue","onSearchChange","onHeaderChecked","onRowChecked","headerCheckState","headerIndeterminateState","groupsTableColumns","AddUser","appStore","useStore","usersSettingsPageUrl","numSelected","userDomains","isAnyGroupSelected","groupIdsSelected","addToWorkspaceResponse","userIds","responseListError","prom","addUsersToWorkspace","GET_SSH_KEY_LOADING","GET_SSH_KEY_COMPLETE","GET_SSH_KEY_ERROR","CREATE_SSH_KEY_LOADING","CREATE_SSH_KEY_COMPLETE","CREATE_SSH_KEY_ERROR","DELETE_SSH_KEY_LOADING","DELETE_SSH_KEY_COMPLETE","DELETE_SSH_KEY_ERROR","sshKeyDefaultState","sshKey","getSshKeyLoading","getSshKeyError","createSshKeyLoading","createSshKeyError","deleteSshKeyLoading","deleteSshKeyError","showActionsMenu","deleteSshKeyComplete","sshKeyList","deleteKey","role","fingerprint","publicKey","copyToClipboard","navigator","clipboard","writeText","generateNewKey","createSshKey","generatingKeyLoader","deleteSshKey","noSshKey","generateKey","SshKey","getSshKey","PE_INTEGRATION_LIST_QUERY_TAG","PE_INTEGRATION_QUERY_TAG","PE_PROTECTED_ENVIRONMENTS_QUERY_TAG","PE_PROTECTED_ENVIRONMENT_CANDIDATES_QUERY_TAG","useListPeIntegrationsV2","peIntegrationNamePrefix","PeIntegrationsV2Service","useGetPeIntegrationV2","peIntegrationId","useListProtectedEnvironmentsV2","useListEnvironmentsV2","environmentPrefix","NoPeIntegrations","ConfirmDeleteModal","checkbox","checkboxLabel","confirmTextEntry","textEntryAriaLabel","setChecked","confirmEntryInput","setConfirmEntryInput","onCloseHandler","cancelType","onDeleteHandler","allValues","selectedEnvironment","setSelectedEnvironment","deleteProtectedEnvironment","useDeleteProtectedEnvironmentV2","groupName","environmentName","protectedEnvironments","onSettled","DataItem","CardActions","onRemove","settingsEditPePath","selectedPeId","setSelectedPeId","selectedPeName","setSelectedPeName","clearSelectedPE","deletePe","useDeletePeIntegrationV2","refetchType","puppetServerUrl","tokenExpiration","compileBatchSize","hostname","ProtectedEnvironmentsTable","PeHeading","settingsAddPePath","PeIntegrationList","peIntegrations","PeIntegrations","AUTO_INTEGRATION_FORM_ACTION_TYPES","AutoIntegrationForm","consoleAddress","authType","peUsername","tokenLifetime","apiToken","authTypeChange","changeFormType","regenerateToken","infoHeader","infoBody","infoLink","showChangeButton","setShowChangeButton","CONSOLE_ADDRESS","PE_USERNAME","PASSWORD","TOKEN_LIFETIME","API_TOKEN","populatedField","CompileBatch","MANUAL_INTEGRATION_FORM_FIELD_NAMES","MANUAL_INTEGRATION_FORM_ACTION_TYPES","manualIntegrationFormActions","partialForm","ManualIntegrationForm","puppetServer","puppetDb","codeManager","orchestrator","classifier","caCert","ignoreSyncErrors","updateIntegration","showIaSettings","setShowIaSettings","innerFocus","IA_CONFIG_FORM_ACTION_TYPES","iaConfigFormActions","IaConfigForm","iaCert","iaPrivateKey","PUPPET_SERVER","IA_CERT","IA_PRIVATE_KEY","FORM_TYPE","AUTH_TYPE","IA_CONFIG_MODAL","DISCOVER_INTEGRATION_START","DISCOVER_INTEGRATION_COMPLETE","DISCOVER_INTEGRATION_ERROR","CREATE_INTEGRATION_START","CREATE_INTEGRATION_COMPLETE","CREATE_INTEGRATION_ERROR","CONFIGURE_IA_START","CONFIGURE_IA_COMPLETE","CONFIGURE_IA_ERROR","addPeIntegrationActions","formType","showModal","discoverIntegrationStart","createIntegrationStart","configureIaStart","discoverPeIntegration","integrationPayload","integrationResponse","impactAnalysisConfigured","defaultAddPeIntegrationState","iaConfigModal","discoverIntegrationLoading","discoverIntegrationError","createIntegrationLoading","createIntegrationError","configureIaLoading","configureIaError","newIntegration","finalForm","DAYS_IN_A_MONTH","Math","ceil","integrationStatus","onAutoFormChange","onManualFormChange","onIaFormChange","dispatchAuthTypeChange","dispatchIaModal","autoDiscoverIntegration","generateTokenRequest","discoverPayload","nodeClassifierUrl","manuallySaveIntegration","createPayload","puppetDbUrl","codeManagerUrl","orchestratorUrl","caCertificate","addPayload","createPeIntegration","integrationId","iaKey","iaConfigResponse","legacyPuppetServerCreds","certificate","privateKey","configureIa","AddPeIntegration","navigateToPeList","useCallback","AddPeIntegrationForm","EditPeIntegration","setFormData","peIntegration","ignoreCodeManagerSyncErrors","useUpdatePeIntegrationV2","onEditFormChange","AddProtectedEnvironmentsSelect","presetEnvironment","Select","buildEnvironmentsSelect","environment","ProtectedEnvironmentsForm","onEnvironmentChange","loadingGroups","selectedGroups","onSelectedData","checkAll","setCheckAll","indeterminateState","setIndeterminateState","checkAllValue","indeterminateStateValue","checkIfIndeterminateState","selectedData","AddProtectedEnvironmentsTable","onApproverRowSelect","newSelectedData","findIndex","splice","GROUPS_GET_PRIVILEGES_QUERY_TAG","GROUPS_LIST_GROUP_MEMBERS","useListGroupsV1","useGetGroupV1","AddProtectedEnvironment","setSelectedData","peIntegrationLoading","peIntegrationError","environmentsLoading","environmentsError","groupsLoading","groupsError","derivedGroups","createProtectedEnvironment","useCreateProtectedEnvironmentV2","approvalGroupNames","EditProtectedEnvironment","environName","isLoadingGroups","deletedGroups","createApprovalGroups","deleteApprovalGroups","pe","env","approvalGroups","RegenerateAuthToken","settingsPeListPath","PDLink","STATUS_PREFIX_QUERY_TAG","LIST_INTEGRATIONS_QUERY_TAG","useListIntegrationsV1","useDeleteIntegrationV1","toUseQueryResponse","useListBranchesV1","useListCommitsV1","getDocsLink","integration","nested","getOAuthBody","redirectUrl","getRedirectUrl","clientId","oauthRedirectUrl","scopes","authorizeUrl","createSearchParams","responseType","append","getOAuthButton","showToken","setShowToken","certType","setCertType","onPrem","setOnPrem","host","connectAzureDevOpsServer","changeCertType","OAuthForm","cloneMethod","setCloneMethod","httpClone","sshUser","connectGitlab","changeCloneMethod","sshPort","AddSourceControlBlankForm","navigateToSettings","connectGithubEnterprise","startingValues","sshUrl","BitBucketServerForm","setFormVals","customCaCert","setCustomCaCert","bitBucketServerConnect","updatedVal","AddSourceControlForm","GitHubEnterpriseForm","GitlabForm","AzureDevOpsForm","AddSourceControlHeader","AddSourceControl","setSourceControl","sourceControlOptions","setSourceControlOptions","deleteIntegration","connectedAccount","cloneOverHttp","isOAuthIntegration","vcsProvider","StatusNotificationPrefix","prefixValue","setPrefixValue","buttonsVisible","setButtonsVisible","deleteMode","setDeleteMode","persistPrefix","useCreateBuildStatusPrefixV1","deletePrefix","useDeleteBuildStatusPrefixV1","setQueryData","updatePrefixAndButtonState","initialValues","savePrefix","reset","SourceControlEmptyState","SourceControl","connectedIntegrations","vcs","SourceControlIntegration","getIntegrations","PRIVILEGE_CATEGORY_ORDER","PRIVILEGE_ACTION_ORDER","SUBSETS_SUPPORTED_CATEGORIES","SUBSETS_SUPPORTED_ACTIONS","ACTION_STATE","buildFormState","available","sortedAvailable","privileges","privilege","indexOf","sortPrivileges","category","groupCategory","groupAction","usesSubsets","subsets","PREVIEW_PIPELINE_AS_CODE_TAG","PIPELINE_AS_CODE_ERROR_TAG","useCreatePipelinesFromCodeV1","PipelinesAsCodeV1Service","GET_PIPELINE_QUERY_TAG","projectName","pipelineId","CONTROL_REPOS_GET_QUERY_TAG","MODULES_GET_QUERY_TAG","useDisablePipelinesAsCodeV1","CONTROL_REPOS_LIST_QUERY_TAG","useInfiniteQuery","pageParam","nextMarker","getNextPageParam","lastPage","pageDetails","useGetControlRepoV1","controlRepoName","LIST_TRIGGER_EVENTS_QUERY_TAG","GET_IS_BUILD_PR_ALLOWED","useGetPipelineV1","PipelinesV1Service","useUpsertPipelineStagesV1Optimistic","onMutate","cancelQueries","previousValue","getQueryData","stages","context","useUpsertPipelineStagesV1","useDeletePipelineStagesV1","MODULES_LIST_QUERY_TAG","useGetModuleV1","moduleName","useListModulesV1","pageSelect","currentPage","hasNextPage","hasPreviousPage","searchSubsetTerm","setSelectedSubsets","initialSubsets","tableTranslations","searchPlaceHolder","fetchNextPage","Set","setCurrentPage","currentPageData","subset","useGetGroupV1WithParams","delete","listSelectedSubsets","sub","tData","cp","header","CursorPagination","newPage","SidePanel","border","closeButtonProps","closeButtonIcon","from","setOpen","open","setSubsets","pages","page","getTableTranslations","PrivilegeSubsetModal","useListControlReposV1","controlRepos","AddGroupPermissionSubsetModal","editable","selectedCategory","setSelectedCategory","categoryDisplayName","strippedSubsets","stripSubsetPrefix","setSubsetsWithId","newSubsets","ModulePermissionsSubsetModal","ControlReposPermissionsSubsetModal","categoryName","subsetsAvailable","setAction","actionName","privilegeKey","actionStateLabel","getActionState","ALL","SOME","ANY","NONE","onRadioChange","onCheckboxChange","useGroupPrivilegesState","groupPrivileges","cLoading","cError","refetch","cRefetch","availablePrivileges","aLoading","aError","useGetAvailableGroupPrivilegesV1","initState","GroupPrivilegesForm","editGroupPrivilegesV1","allSelected","isAllPrivilegesSelected","someSelected","isAnyPrivilegeSelected","apiCategories","buildEditRequest","indeterminate","setAllPrivileges","PrivilegeCategory","PrivilegeAction","nAction","newActions","AddGroupForm","onCreateGroup","createGroup","savedGroup","getGroupError","groupLoading","disableFields","setDisableFields","AddGroup","stepperIndex","navigateToGroupsList","Stepper","activeStepIndex","onCreateGroupSuccess","onSetPermissionsSuccess","WorkspaceSettings","modalOpen","setModalOpen","updateWorkspace","deleteWorkspace","onRenameWorkspace","_f","bold","workspaceLinks","rbacLinks","settingsLinks","isCurrentContextWorkspace","groupLink","testId","navItemButton","navItem","divider","sectionName","renderSideNavSection","endingDivider","sectionElements","SettingsPage","workspaceInfo","SETTINGS_PATHS","matchedPath","matchPath","SettingsSideNav","heading","oauthProviderMap","useConnectGitHubV1","useConnectBitbucketCloudV1","useConnectAzureDevOpsV1","providerDisplayName","navigateOnError","msg","connectOAuthProvider","setSearchValue","setSortUsers","isLoadingUsers","userError","derivedUsers","groupMemberCandidates","navigateToGroup","addUserToGroup","newSearchValue","onUserRowSelected","breadcrumbsRender","AddUserToGroup","groupError","AddUserForm","onDeleteAll","onDeleteNode","node","peServerName","peServers","compareNodes","nodesQuery","selectedNodes","onSetSelectedNodes","onChangeCurrentPage","selectedNode","isFetchingNextPage","selectedNodesClone","structuredClone","nodesToAdd","initialName","initialNodes","setSelectedNodes","capabilityName","peServer","peIntegrationName","offset","nextOffset","useListAvailableNodesV1","operatingSystem","oldValues","PeIntegrationSelect","NodeTable","newSelectedNodes","FormSidebar","clone","EditCapability","updateCapability","getCapabilityError","capability","useGetJobHardwareCapabilityV1","navigateToHardwareList","JobHardwareCapabilityForm","updatedCapability","DEFAULT_LINK","AZURE_DEVOPS_HOST","getAzureDevOpsRepoLink","owner","getCommitLink","repoName","repoId","commitId","link","getGithubCommitLink","getBitbucketCommitLink","getGitLabCommitLink","indexOfTilde","repoOwner","usersOrProjects","getBitbucketServerCommitLink","getGithubEnterpriseCommitLink","getAzureDevOpsCommitLink","getRepoLink","getGithubRepoLink","getBitbucketRepoLink","getGitLabRepoLink","getBitbucketServerRepoLink","getGithubEnterpriseRepoLink","getBranchLink","getGithubRepoBranchLink","getBitbucketRepoBranchLink","getGitLabRepoBranchLink","getBitbucketServerRepoBranchLink","getGithubEnterpriseRepoBranchLink","getAzureDevOpsBranchLink","getRepoHost","hostMap","useVcsLinks","hostUrls","urlMap","getCommitUrl","getBranchUrl","getRepoUrl","typeName","displayModal","setDisplayModal","getStatusClass","eventLink","branchLink","commitLink","deployment","linkProps","parent","eventId","time","formatDistance","startTime","translationSuffix","projectsByPage","infiniteQueryDetails","getProjectLink","setPrefix","selectPage","PdsTable","newPrefix","projectPage","projectBranchLink","projectCommitLink","projects","latest","lastJob","EventDetails","vmJobInstanceId","jobDescription","jobStatus","jobStartTime","authorUsername","lastDeployment","deploymentId","sourceBranch","deploymentDescription","deploymentState","deploymentStartTime","DeleteProjectButton","debouncedValue","setDebouncedValue","timeoutRef","ListModules","useDebounce","deleteModule","useDeleteModuleV1","ListCodeProjects","projectSrcRepoName","EDIT_CODE_PROJECT_FORM_ACTION_TYPES","EditCodeProjectForm","projectType","EDIT_CONTROL_REPO_START","EDIT_CONTROL_REPO_COMPLETE","EDIT_CONTROL_REPO_ERROR","EDIT_CONTROL_REPO_WEBHOOK_ERROR","defaultEditControlRepoState","newControlRepoSource","editControlRepoActions","editControlRepoStart","EditControlRepo","repoDisplayName","matchedRepo","matchingError","sourceActualValue","ownerDisplayName","editControlRepoCall","editControlRepo","EDIT_MODULE_START","EDIT_MODULE_COMPLETE","EDIT_MODULE_ERROR","EDIT_MODULE_WEBHOOK_ERROR","defaultEditModuleState","newModuleSource","editModuleActions","editModuleStart","EditModule","moduleDisplayName","currentModuleLoading","currentModuleError","editModuleCall","deleteUserId","setDeleteuserId","deleteGroupMemberV1","groupMembers","actionButtons","ViewGroup","permEditMode","setPermEditMode","Tabs","UserTab","nodeData","deleteNodeName","setDeleteNodeName","deleteNodeFromCapability","deleteProps","nodeName","JobHardwareCapability","selectedCapabilityForDelete","setselectedCapabilityForDelete","selectedCapabilityForDeleteName","setSelectedCapabilityForDeleteName","isLoadingCapabilities","capabilitiesError","deleteCapability","clearSelectedCapability","setSelectedCapability","JobHardwareCapabilityNodes","deleteSubmit","JobHardware","AddCapability","createCapability","defaultOpen","expanded","setExpanded","jobDetailsError","taskState","logs","setLogs","atob","getLogs","download","logFileName","line","BannerDropdown","command","setVisible","StatusBar","StatusBarSection","Detail","jobInstance","vcsIntegrationsLoading","vcsIntegrationsError","vcsHostUrls","getVCSHostURLs","repoHost","repoProvider","renderStatusBar","commitURL","triggerComponent","getTriggerComponent","initiator","eventInitiator","triggerType","eventTriggerType","created","repoBranch","getCodeProjectUrl","codeProjectType","codeProjectName","JobDetails","rerunModalOpen","setRerunModalOpen","activeTab","setActiveTab","refetchInterval","rerunJobInstance","Badge","defaultValue","JobDetailsStatusBar","tId","JobDetailsTab","JobDetailsCommand","jobName","newId","ListControlRepos","deleteControlRepo","useDeleteControlRepoV1","controlRepoDisplayName","PIPELINE_STAGE_OPTIONS","PIPELINE_STAGE_PROMOTE_OPTIONS","PIPELINE_BRANCH_OPTIONS","EVENT_TYPE_JOB","EVENT_TYPE_DEPLOYMENT","EVENT_TYPE_IMPACT_ANALYSIS","LEGACY_EVENT_TYPE_ROLLING_DEPLOYMENT","LEGACY_EVENT_TYPE_MODULE_DEPLOYMENT","EventStatus","getEventStatus","event","eventType","getFirstActiveEventStatus","stageEvents","firstActiveEvent","PENDING","IN_PROGRESS","RUNNING","QUEUED","WAITING","PENDING_APPROVAL","APPROVED","isRunningStatus","statusBadgeType","DONE","SUCCESS","ACTIVE","FAILED","TIMEDOUT","INACTIVE","DECLINED","CANCELED","CANCELLED","ABORTED","buildStatusMap","events","statusMap","isAllTerminal","isAnyFailed","isAnyCancelled","toMilliseconds","DEFAULT_TIMEOUT_MINUTES","generateDeploymentDestination","stageNum","deploymentTemplate","deploymentPolicy","maxRuntime","puppetEnterpriseCredentialsId","puppetEnterpriseServer","deploymentTarget","nodeGroupId","nodeGroup","controlRepoBaseFeatureBranch","generateIADestination","iaData","peImpactAnalysisTemplate","analyzeAllDeployments","allStageEnvironments","stageEnvironments","str","pipelineDestinationId","moduleImpactAnalysisControlRepos","controlRepoId","stageEnvironmentsControlRepos","peModuleDeploymentId","getNextPipelineStageNumber","maxStage","generateJobDestinations","jobTemplateSummaries","destinations","jobTemplateSummary","destination","vmJobTemplateId","vmJobTemplateName","createStage","stageNumber","stageName","destinationType","deploymentDisplayName","newStage","triggerOn","deleteStage","stage","buildManualDeploymentRequest","codeProject","repoTargetBranch","repoSourceBranch","repoSourceSha","commit","buildUpdateImpactAnalysisRequest","selectedDestination","destinationData","updatedStages","targetStage","stageIndex","destinationIndex","checkDeploymentExists","dest","impactedJobs","impactedDestinationIds","getIATasksFromPipelineStages","getProjectTypeString","getLoadingOption","getNoResultsOption","formFieldValidator","errorString","option","getBranchField","fieldValue","getBranchOptions","CommitOptionLabel","committer","timestamp","commitMessage","getCommitField","_excluded2","fieldValueLowerCase","vcsCommits","getCommitOptions","PeIntegrationsOptionsLabel","getPuppetEnterpriseServerField","_excluded3","getPuppetEnterpriseServerOptions","EnvironmentOptionsLabel","getEnvironmentField","_ref12","_excluded4","_ref11","getEnvironmentOptions","getControlRepoField","_ref14","_excluded5","_ref13","controlRepo","getControlRepoOptions","getDeploymentPolicyField","_ref16","customPolicy","_excluded6","_ref15","deploymentPolicies","policy","custom","getDeploymentPolicyOptions","placeHolder","ImpactAnalysisForm","submitKey","cancelKey","NoEnvSelected","setNoEnvSelected","keepPreviousData","peIntegrationMatch","controlRepoOptions","formatControlReposForSelect","commitMatch","environmentMatch","newValuesCopy","submitValues","selectedEnvironments","submitPayload","environmentEnabled","flatMap","instance","nodeGroupName","triggerImpactAnalysis","ImpactAnalysisV1Service","buildImpactAnalysisRequest","peCredentialsId","moduleImpactAnalysisControlRepoId","sourceSha","onImpactAnalysis","pipelineName","statusTranslationKey","peInstance","environmentsAnalyzed","webhookType","actionButton","statusColor","returnStatusColor","webhook","finalStatus","badgeType","isAnySucceeded","isAllCancelled","isAnyDeclined","isAllSucceeded","firstActiveStatus","stageEvent","successfulRerun","setSuccessfulRerun","cancelButtonType","setIsOpen","rerunModalData","setRerunModalData","StageBadge","vmJobInstanceEvent","onClickActionButton","Event","deployEvent","puppetEnterpriseServerName","deploymentPlanName","impactAnalysisEvent","environmentsString","impactAnalysisId","RerunJobModal","onCloseRerunModal","onClickWebhookEvent","pipelineStatusMap","consolidatedStatusMap","consolidateStatusMap","eventsByStage","runningStatus","stateBadges","isWebhookPushRequest","webhookEvent","pullRequestId","pullRequestNumber","stageNames","StageEvent","eventTime","redeliverWebookConfirm","setRedeliverWebhookConfirm","webhookEventId","appEventId","WebhooksV1Service","redeliverWebhook","useRedeliverWebhookDataV1","responseCode","httpCode","requestHeaders","responseBody","onRedeliverWebhook","onCancelRedeliverWebhook","setSearchParams","setWebhookEvent","hasNewEvents","setHasNewEvents","listTriggerEvents","EventsV1Service","pipelines","pipeline","intervalId","setInterval","lastEventId","triggerEvents","refetchPage","then","newLastEventId","clearInterval","ButtonSelect","handleNewEvents","PipelineEvent","WebhookDialog","PARAMETER_TYPES","OPTIONAL_PARAMETER_TYPES","DEPLOYMENT_POLICY_TYPES","DeploymentForm","initialBranch","infiniteDeploymentError","setInfiniteDeploymentError","setValues","deploymentPolicyId","deploymentPolicyParameters","controlRepoBranch","deploymentPolicyType","setDeploymentPolicyType","isRegexPipeline","commits","nodeGroups","prefixes","useListEnvironmentPrefixesV2","deploymentPoliciesPayload","deploymentPolicyControlRepoName","useGetDeploymentPoliciesV1","DeploymentV1Service","controlRepoMatch","controlRepoBranches","prefixOptions","selectedDeploymentPolicy","parameterComponents","parameters","parameter","getDeploymentParameterField","onChangePolicyType","newPolicyType","fromEntries","parseParameterValue","parsedValue","paramType","parseInt","parseFloat","isNaN","updatedParameters","job","onClickAddToStage","onClickAddNextStage","setStageName","updatedStage","setUpdatedStage","newDestinationsSummary","setNewDestinationsSummary","addStage","stageItemTypes","getAddItemOptions","selectedStage","initialTypes","DEPLOYMENT","JOB","IMPACT_ANALYSIS","PULL_REQUEST","pipelineGate","projectPipelineGateType","destinationTypesPresent","checkPullRequestExists","getStageOptions","itemType","setItemType","addStagePayload","peName","policyName","j","stagesCopy","addPRGate","addNewStageItem","addNewStageAfter","addNewStageBefore","addNewStage","resetFormState","getHeader","headerKey","JobForm","AddPRGateForm","updatedStageNumber","upsertDeployment","showErrorBanner","stageData","peServerCredentialsId","compiledBatchSize","val","initialFormValues","createPipelinesFromCode","disablePipelinesAsCode","pipelinesCreated","setPipelinesCreated","handleAccept","handleReject","StageCardItem","manageAsCode","requiresAction","reordering","onEditItem","onEditPlaceholder","preventDeleteStage","isRegex","onOpenEditImpactAnalysisDialog","deleteOpen","setDeleteOpen","typeTranslationKey","numberOfEnvironments","onAddStageItem","onAddStageBefore","onAddStageAfter","onRename","onDeleteJob","onDeleteStage","onReorderPipeline","onDeletePlaceholder","reordered","getOnEditItemHandler","jobsNotToDelete","setName","renameCheck","setRenameCheck","ADD_ITEM_TO_STAGE","ADD_STAGE_BEFORE","ADD_STAGE_AFTER","REORDER_PIPELINE","DELETE_STAGE","RENAME_STAGE","isPlaceholder","idx","onAutoPromote","onTriggerCondition","onPromote","enablePromote","autoPromoteLabel","triggerCondition","promoteType","upsertPipelineStages","setUpdatedStages","stagesAreEqual","compareStageArrays","compareStages","reorderStages","newStages","StageCard","PromoteStage","updateAutoPromote","updateTriggerCondition","saveStages","onCreateDefaultPipeline","loadingDefaultPipeline","onAddStage","onToggleOpen","availablePipelines","onDeletePipeline","onDeleteStages","deletePipeline","useDeletePipelineV1","deletePipelineStages","deleteCheck","setDeleteCheck","onAddPipeline","branchType","setBranchType","regexValue","regexValues","setRegexValues","regexbranch","regexWarning","setRegexWarning","addPipeline","useCreatePipelineV1","onSuccessHandler","newPipeline","regexPipelineExists","formProps","updatedFormValues","autoBuildTriggers","trigger","containerName","newBranch","regex","stageCommits","isPromoteStage","pullRequest","pipelineOptions","pipelineResponse","triggerPipelineV1","useTriggerPipelineV1","enableCommit","keyChanged","findCommit","stageCommit","getTime","buildRequest","minutes","buildUpdateDeploymentRequest","parametersMap","setPipelineId","allowPRForkCheck","setAllowPRForkCheck","selectedPipeline","isBuildPullRequest","useGetIsBuildPullRequestAllowedV1","pipelinesAsCodeObject","usePreviewPipelineAsCodeV1","managementType","pacEnabled","commitTrigger","setCommitTrigger","prTrigger","setPrTrigger","validYaml","setValidYaml","pipelineManagementType","setPipelineManagementType","isBuildPullRequestAllowed","pipelineTriggers","getBuildTriggers","disablePipelineAsCode","updatePipelineTriggers","useUpdatePipelineTriggersV1","setBuildPullRequestAllowed","useSetIsBuildPullRequestAllowedV1","createPipelineAsCode","validatePipelinesAsCode","isSavingPipelineAsUI","copyable","webhookUrl","onSavePipelinesAsUIHandler","triggers","pipelineAsCode","validatePipelinesAsCodeAsYaml","pipelinesAsCodeYaml","isDeletePipelineOpen","setDeletePipelineOpen","isReorderPipelineOpen","setIsReorderPipelineOpen","isPipelinesAsCodePromptOpen","setIsPipelinesAsCodePromptOpen","setSelectedPipeline","openAddPipelineDialog","setOpenAddPipelineDialog","addStageDialogType","setAddStageDialogType","addStageByNumber","setAddStageByNumber","promoteStageProps","setPromoteStageProps","openManagePipelineDialog","setOpenManagePipelineDialog","deleteStageNum","setDeleteStageNum","openEditDeploymentDialog","setOpenEditDeploymentDialog","openEditImpactAnalysisDialog","setOpenEditImpactAnalysisDialog","editType","useCreateDefaultPipeline","useCreateDefaultPipelineV1","hasPlaceholderDeploymentStage","hasIAConfigured","onRenameHandler","renameStage","onAutoPromoteHandler","autoPromote","autoPromoteStage","onAutoPromoteConditionHandler","autoPromoteCondition","autoPromoteConditionStage","onDeleteJobHandler","deleteStageJob","onDeletePipelineGateHandler","deleteStagePipelineGate","selectedPipelineMatch","stageToDelete","isPipelinesAsCodeCandidate","checkDestinationExists","onAddStageHandler","isPipelinesAsCodeEnabled","DeletePipeline","onDeletePipelineHandler","ReorderStagesDialog","DefaultPipelineCard","onCreateDefaultPipelineHandler","vmJobEvent","deploymentAppEvent","peImpactAnalysisEvent","onPromoteHandler","nextStage","commitMsg","promoteStage","ManagePipelinesDialog","AddStageDialog","AddPipelineDialog","DeleteStage","TriggerPipelineDialog","PipelinesAsCodePrompt","EditDeploymentDialog","onCloseEditDeploymentDialog","EditImpactAnalysisDialog","onCloseEditImpactAnalysisDialog","getDisplayName","triggerDeployment","onDeployment","isOpenTriggerPipelineDialog","setOpenTriggerPipelineDialog","isOpenDeploymentDialog","setOpenDeploymentDialog","isOpenImpactAnalysisDialog","setOpenImpactAnalysisDialog","repoLink","pipelinesAsCodeError","useGetPipelineAsCodeErrorV1","srcRepoOwnerDisplayName","pipelineAsCodeError","Columns","EventsTable","fixed","Stages","DeploymentDialog","ImpactAnalysisDialog","ViewControlRepo","ViewPipeline","ViewModule","OAuthRedirect","AddPEIntegration","reqParams","reqParamsDes","expandList","notes","notesDes","addOptParams","addOptParamsSelect","addOptParamsDes","runTask","setTarget","selectParam","enterParam","noScopeSet","filterEditButton","optParams","OptionsArray","FactPicker","buttonLabel","modalTitle","editModalTitle","selectLabel","selectPlaceholderText","addFilterButton","applyAllButton","clearFiltersButton","activeFiltersButton","cancelButton","emptyList","matchingNodes","activeFilters","operator","notEqual","notContain","totalCount","pdbQuery","queryFilter","filterOperator","actionDetails","showDetails","hideDetails","planAction","factOptions","displayFooter","chosenFact","setChosenFact","FactListItem","isActive","defaultFact","isLocked","showOnHover","setShowOnHover","factname","onKeyDown","keyCode","onFocus","onBlur","onMouseEnter","onMouseLeave","tabIndex","stopPropagation","nativeEvent","stopImmediatePropagation","FactList","addFact","onRemoveItem","onClickItem","visibleFacts","onClickApply","onClickReset","factLimitSize","filteredFacts","setFilteredFacts","newFilteredFacts","keyId","totalFactOptions","handleReset","handleCancel","byActive","ColumnPicker","defaultFactList","facts","closeColumnPicker","initialColumns","setVisibleFacts","getInitialColumns","column","defaultColumn","countActiveFacts","setCountActiveFacts","factsClean","setFactsClean","originalFacts","setOriginalFacts","cancelAction","activeFacts","onClickButton","total","newFact","newVisibleFacts","remainingVisibleFacts","factValue","TablePager","tableCurrentPage","tableTotalPages","tableFooterText","currentNode","lastItemNumber","pageData","limit","onPageSelect","changeLimits","onChangeLimit","selectedLimit","pageInfo","totalPages","prevOffset","TableFooter","TablePageSelector","paginationCountText","pageCount","updatePage","nextPage","pageSelectFunc","delta","QueryError","client","gqlErrors","networkError","graphQLErrors","errorSting","ActiveFilterList","currentFilterList","onApplyAll","onClearAll","filterDisplayMessages","isEditing","clearAllButton","NodeTableFilter","availableFilters","filters","selectedFilter","onSelectedFilterChange","onAdd","onApply","isModalOpen","onModalClose","compoundFiltering","setIsEditing","FilterComponent","component","filterValue","textInput","activeTitle","filterType","correctiveChange","newStatus","exportAPI","origin","endpoint","parsingFn","requestConfig","errorData","defaultMessage","callApi","generateAuthConfig","Authorization","puppetFilter","union","isSaved","getUnionValue","getFilters","userFilter","filterDefinition","filterDef","addFilterGroup","newFilter","deleteFilterGroup","filterId","updateFilterGroup","updatedFilterGroup","appendFilter","originalFilter","oldFilters","hasPeServerFilter","currentFilters","groupFilters","filterCriteria","groupSource","getQueryFormattedFilters","globalUnion","formattedQueryFilters","formattedSourceFilters","sortedFilters","formattedUnionFilter","filterItem","nodeGroupFilterValue","SingleSelectFilter","optionLabel","setOptionLabel","optionFilter","setOptionFilter","assembleFilterValue","getFilterLabels","selectedValue","selectedOption","unchanged","latestReportStatus","equalTo","failed","iChange","AND","latestReportCorrectiveChange","cChange","noop","latestReportNoop","enforced","NodeGroupFilter","filteredNodeGroupOptions","setFilteredNodeGroupOptions","isSubmittable","setIsSubmittable","canSubmit","peMasterServer","newFilteredNodeGroups","nestedLabel","defaultQuery","inputMapper","queryVariables","nextQuery","variables","peMasterServerQuery","after","nodeGroupSchema","results","server","puppetServerEndpoint","substring","queryNodeGroup","ComplexOperatorFilter","filteredOptions","setFilteredOptions","getOptionValues","listOptions","getFilterObj","submittedValues","operatorFilter","factNameFilter","operatorFilterValue","filterObject","not","NOT","autoCompleteCheck","textCheck","presenceCheck","change","default","changeStatus","noopStatus","queryFactPaths","queryFactPaths2","rawFacts","factPaths","GET_NODES_DATA","gql","GET_FACT_PATHS","getBadgeFormat","LatestReportStatusCell","NodeDetailsLink","columnData","rowIndex","queryData","linkToNodeDetails","FactColumnCell","DEFAULT_FACTS","determineExportPath","determineExportData","constructTableData","columnsToView","hostData","accumulator","isDefaultFact","changeStatusText","factDataId","determineFactData","getNested","obj","curLevel","nextLevel","defaultColumnsToView","tableDisplayMessages","getSubmittedFilters","getSelectedColumns","initialFilter","openAddFilterModal","setIsTableLoading","filterModalTitle","setSelectedFilter","onAddCompoundFilter","compoundFilters","applyCompoundFilters","setApplyCompoundFilters","globalFilterUnion","setShowNoResults","parseFilters","parsedColumns","setOffset","setEmptyStateHeader","setEmptyStateMessage","setCloseColumnPicker","exporting","setExporting","isFiltered","setIsFiltered","submittedFilters","setActiveFilters","selectedColumns","setSelectedColumns","filterService","nodeSearchValue","setNodeSearchValue","setQueryFilter","sourceFilter","setSourceFilter","setFilters","filterImport","apolloClient","useApolloClient","addFilter","columnsToRender","factPathData","setColumnsToView","nodeTableData","setNodeTableData","hosts","columnSchema","setColumnSchema","newtabledata","export","emptyFilterDataHeader","loadingHeader","noDataHeader","loadingMessage","nodeQueryData","filterArg","selectedOptionNodeGroup","selectedNodeGroupSource","nodeGroupFilter","activeFilters1","getFilterPreAppendedLabel","activeFilters2","formattedCompoundFilters","factData","constructFactData","factPickerValue","selectedFilterDefaultQuery","filterQueryData","selectedFilterDefaultQueryError","filterQueryDataError","filterIndex","filterInputSchema","filterFormChangeError","setColumns","loc","responsePath","pageInfoPath","exportData","originalQueryFilters","executeSearch","certname","like","emptyFilterMessage","focused","svg","innerRef","ActionMenuListItem","Element","isNil","cancelEvent","onActionClick","onEscape","getActionId","actionId","ActionMenuList","Component","focusedIndex","actionRefs","actionInnerRefs","executeAction","bind","onMouseEnterItem","focusFirst","onArrowUp","focusLast","focusItem","onArrowDown","executeFocusedItem","focus","listRef","scrollIntoView","block","scrollMode","click","_this$props","focusedId","getFocusedId","el","other","idCount","WrappedComponent","comp","ComponentWithId","hoistStatics","anchorOrientation","getDropdownPosition","getBoundingClientRect","minWidth","menuStyle","close","focusButton","focusMenu","closeAndFocusButton","container","relatedTarget","button","menu","withId","SaveViewModal","selectedCards","isEdited","activeView","favourite","inEditMode","setInEditMode","addView","ADD_SAVED_VIEW","editView","EDIT_SAVED_VIEW","savedViewURL","viewName","urlPathArray","NewViewDetails","cards","onComplete","existingViewActions","pin","onUpdate","createdBy","autocomplete","isDescriptionMenu","isGroupedMenu","OptionMenuListItem","multiple","showCancel","actionLabel","onFocusItem","navigationButton","onNavigate","navigationLabel","getOptionId","getSelectionSet","selection","OptionMenuList","optionRefs","onKeyDownInAction","onMenuBlur","onActionBlur","componentDidUpdate","prevProps","prevState","selectFocusedItem","selectionSet","optionsIsObject","groupMenu","prototype","hasOwnProperty","call","listIndex","groupedIndex","subKeyId","list","listFooter","SelectTarget","renderText","MULTISELECT","AUTOCOMPLETE","applyImmediately","menuListClassName","isControlled","getActionLabel","onValueChange","getButtonLabel","getOptions","listValue","componentDidMount","selectedLabel","onOpen","input","inputRef","Chart","chartRef","chart","InsightsChart","destroy","legend","orientation","data_labels","axis","y","beforeRender","afterRender","update","dataPointClick","legendItemClick","highlightSeries","unHighlightSeries","activatePointOfInterest","tooltipMove","tooltipHide","annotationClick","zoomStart","zoom","zoomEnd","ChartCardAlternate","ChartCard","queryName","responseKey","totalCountKey","hostCountKey","chartType","chartOptions","order","areNodesExcluded","isConfirmOpen","setIsConfirmOpen","chartData","hasData","GraphQLObjectType","grid","ChartModalProptypes","chooseFactInfo","chooseFactPlaceholder","save","chartTitle","excludeCheckbox","CardPropTypes","fieldLabel","dataPath","_useQuery","formattedData","FactModalView","formMessages","card","setFactname","setLabel","filteredList","setFilteredList","ChartModal","chartModalMessages","useListQuery","CardGrid","onAddChartHandler","CardBoardToolbar","CardBoardEmptyCard","CardBoard","submittedCards","onEditCard","setIsModalOpen","setCard","onModalOpen","FilterTag","displayValue","displayOperator","FilterGroup","updateFilters","onAppendFilter","savedFilter","groupIndex","isAltered","deleteFilter","removedFilter","updatedFilters","newUnion","updateUnion","RenderAfterTimeout","shouldDisplayNewContent","showNewContent","timeoutInMilliseconds","startTimer","UNSAFE_componentWillReceiveProps","nextProps","clearTimer","componentWillUnmount","timeoutId","defaultContent","newContent","LoadingBar","FilterBar","savedFilters","setGlobalFilterUnion","cancelFilters","submittedCompoundFilters","parentRef","setInfoVisible","showEmpty","setShowIsEmpty","localUnion","setLocalUnion","updateGroupFilters","updateOnAppend","filterGroup","currentFilterGroup","getSavedFilter","iconSize","onAddFirstFilter","FilterDetails","globalUnionText","renderSavedDetailGroups","operatorValue","displayFact","unionText","rawPercentages","roundedPercentages","fraction","round","diff","floor","sortArray","Backend","use","LanguageDetector","initReactI18next","init","preload","fallbackLng","supportedLngs","debug","keySeparator","ns","defaultNS","backend","loadPath","requestOptions","interpolation","escapeValue","puppetFact","factQuery","colorPaletteIndex","cardService","accessData","hostTotalCount","formatData","initialCards","cardDefinitionName","getCards","userCard","matchedDefinition","cardDefinition","cardDef","accessKey","updateCards","newCard","newCards","removeCard","cardID","editCard","editedCard","editedCards","colorPalletIndex","sortedValues","chartColorPallet","chartColorPallets","labelGenerator","i18next","adjustedSeries","getPercentages","percentage","displayPercent","getSavedViewsFormat","EVAL_PERMISSIONS_START","EVAL_PERMISSIONS_COMPLETE","EVAL_PERMISSIONS_ERROR","nodeExplorerDefaultState","evalPermissions","evalPermissionsError","evalPermissionsLoading","ACTION_TYPES","evaluatePermissionsStart","isPermitted","savedViewsUrl","NodeExplorerView","defaultFilters","lastPathName","decodeURI","setSubmittedFilters","setCompoundFilters","openFilterModal","setOpenFilterModal","showDrawerDetails","setShowDrawerDetails","setSubmittedCards","cardObject","setCardObject","setSavedFilters","isTableLoading","isAppending","setIsAppending","setIsEdited","showIsEdited","setShowIsEdited","showNoResults","setSubmittedCompoundFilters","setTab","setFilterModalTitle","peServerFilterInfo","setPeServerFilterInfo","peServerToAdd","setPeServerToAdd","infoRef","infoVisible","appState","request","permissions","objectType","PermittedV1Service","kind","evaluatePermissions","loadingPriviliges","hasViewInventoryPriviliges","viewsData","viewsLoading","viewsError","GET_SAVED_VIEWS","viewsMap","views","UiReviewsMap","saveView","saveViewLoading","viewError","GET_SAVED_VIEW","cardObjectSting","toSavedViews","getPageTitle","changes","inputtedFilters","submittedColumns","savedfacts","inputtedCards","savedCards","savedfilter","checkForChanges","onAddFilter","onUpdateFilters","updatedFilter","existingFilters","onApplyAllFilterBar","appendingFilter","tab","transparent","features","enableFactVisualization","PageHeader","renderIcon","ctaContent","headerDescription","subheaderLinks","labelText","staticText","linkTarget","linkText","ErrorMessageStateContext","ErrorMessageDispatchContext","ERROR_TYPES","GRAPHQL_ERROR","errorMessageReducer","ErrorMessageProvider","errorMessage","useErrorMessageState","hash","compareVersions","NodeStatus","fillRule","clipRule","viewBox","NodeDetailsHeader","nodeId","useErrorMessageDispatch","GET_LATEST_REPORT","processedReport","processReport","reportTimestamp","latestReportHash","peConsoleLink","generateReportURL","peServerVersion","gqlError","FactsTable","constructFactTableData","FactValue","factTableData","setFactTableData","FactTab","setFilter","isSubmitted","setIsSubmitted","inputValue","setInputValue","duplicateError","setDuplicateError","QUERY_FACT_DATA","useTableDisplayMessageGenerator","factsConnection","handleEnterKeyPress","ReportsTable","reportData","constructReportTableData","reportsConnection","reports","endTime","reportLink","reportTimeStamp","reportStatus","reportView","reportTableData","setReportTableData","filterOptions","ReportsTab","reportStatusOption","setReportStatusOption","GET_REPORT_DATA","getQueryParams","reportQueryData","NodeDetailsView","DeleteViewModal","deleteView","DELETE_SAVED_VIEWS","refetchQueries","PinViewModal","string","StoredViews","setSavedViews","pagination","setPaginationInfo","setTotalCount","currentOffSet","setCurrentOffset","GET_FULL_SAVED_VIEWS","orderBy","originalDir","setFavouriteView","SET_FAVOURITE_VIEW","onPinClick","rowName","isFavourite","createdTime","viewURL","encodeURI","simple","handleOnSort","NodeExplorer","NodeDetails","App","Routes","ProtectedRoute","CodeDelivery","Inventory","Suspense","Router","store","ApolloProvider","QueryClientProvider","contextSharing","ReactQueryDevtools","collectFragmentReferences","refs","selections","variableDefinitions","def","definitions","definitionRefs","findOperation","module","exports","operationName","newDoc","opRefs","newRefs","refName","prevRefs","childRef","oneQuery","webpackContext","req","webpackContextResolve","__webpack_require__","resolve"],"sourceRoot":""}