]> source.dussan.org Git - sonarqube.git/commitdiff
NO-JIRA Add typescript-sort-keys eslint rules (#11209)
authorAmbroise C <ambroise.christea@sonarsource.com>
Wed, 5 Jun 2024 11:41:07 +0000 (13:41 +0200)
committersonartech <sonartech@sonarsource.com>
Wed, 5 Jun 2024 20:02:46 +0000 (20:02 +0000)
454 files changed:
server/sonar-web/.eslintrc
server/sonar-web/package.json
server/sonar-web/src/main/js/@types/lunr.d.ts
server/sonar-web/src/main/js/api/alm-integrations.ts
server/sonar-web/src/main/js/api/ce.ts
server/sonar-web/src/main/js/api/components.ts
server/sonar-web/src/main/js/api/gitlab-provisioning.ts
server/sonar-web/src/main/js/api/group-memberships.ts
server/sonar-web/src/main/js/api/issues.ts
server/sonar-web/src/main/js/api/mocks/AlmSettingsServiceMock.ts
server/sonar-web/src/main/js/api/mocks/CodingRulesServiceMock.ts
server/sonar-web/src/main/js/api/mocks/ComponentsServiceMock.ts
server/sonar-web/src/main/js/api/mocks/ComputeEngineServiceMock.ts
server/sonar-web/src/main/js/api/mocks/GroupMembersipsServiceMock.ts
server/sonar-web/src/main/js/api/mocks/GroupsServiceMock.ts
server/sonar-web/src/main/js/api/mocks/IssuesServiceMock.ts
server/sonar-web/src/main/js/api/mocks/NavigationServiceMock.ts
server/sonar-web/src/main/js/api/mocks/NewCodeDefinitionServiceMock.ts
server/sonar-web/src/main/js/api/mocks/PermissionsServiceMock.ts
server/sonar-web/src/main/js/api/mocks/ProjectActivityServiceMock.ts
server/sonar-web/src/main/js/api/mocks/ProjectsServiceMock.tsx
server/sonar-web/src/main/js/api/mocks/QualityGatesServiceMock.ts
server/sonar-web/src/main/js/api/mocks/SecurityHotspotServiceMock.ts
server/sonar-web/src/main/js/api/mocks/SettingsServiceMock.ts
server/sonar-web/src/main/js/api/mocks/SystemServiceMock.ts
server/sonar-web/src/main/js/api/mocks/TimeMachineServiceMock.ts
server/sonar-web/src/main/js/api/mocks/UserTokensMock.ts
server/sonar-web/src/main/js/api/mocks/data/components.ts
server/sonar-web/src/main/js/api/navigation.ts
server/sonar-web/src/main/js/api/newCodeDefinition.ts
server/sonar-web/src/main/js/api/permissions.ts
server/sonar-web/src/main/js/api/project-management.ts
server/sonar-web/src/main/js/api/projectActivity.ts
server/sonar-web/src/main/js/api/quality-gates.ts
server/sonar-web/src/main/js/api/quality-profiles.ts
server/sonar-web/src/main/js/api/rules.ts
server/sonar-web/src/main/js/api/settings.ts
server/sonar-web/src/main/js/api/system.ts
server/sonar-web/src/main/js/api/time-machine.ts
server/sonar-web/src/main/js/api/user-tokens.ts
server/sonar-web/src/main/js/api/user_groups.ts
server/sonar-web/src/main/js/api/users.ts
server/sonar-web/src/main/js/app/components/AdminContainer.tsx
server/sonar-web/src/main/js/app/components/AdminContext.tsx
server/sonar-web/src/main/js/app/components/PageTracker.tsx
server/sonar-web/src/main/js/app/components/RecentHistory.ts
server/sonar-web/src/main/js/app/components/StartupModal.tsx
server/sonar-web/src/main/js/app/components/extensions/CreateApplicationForm.tsx
server/sonar-web/src/main/js/app/components/global-search/GlobalSearchResults.tsx
server/sonar-web/src/main/js/app/components/nav/component/Menu.tsx
server/sonar-web/src/main/js/app/components/nav/component/branch-like/BranchHelpTooltip.tsx
server/sonar-web/src/main/js/app/components/nav/component/branch-like/MenuItem.tsx
server/sonar-web/src/main/js/app/components/nav/component/branch-like/PRLink.tsx
server/sonar-web/src/main/js/apps/account/projects/Projects.tsx
server/sonar-web/src/main/js/apps/audit-logs/components/AuditAppRenderer.tsx
server/sonar-web/src/main/js/apps/background-tasks/components/AnalysisWarningsModal.tsx
server/sonar-web/src/main/js/apps/background-tasks/components/CurrentsFilter.tsx
server/sonar-web/src/main/js/apps/background-tasks/components/Search.tsx
server/sonar-web/src/main/js/apps/background-tasks/components/StatusFilter.tsx
server/sonar-web/src/main/js/apps/background-tasks/components/TaskDate.tsx
server/sonar-web/src/main/js/apps/background-tasks/components/Tasks.tsx
server/sonar-web/src/main/js/apps/background-tasks/components/TypesFilter.tsx
server/sonar-web/src/main/js/apps/change-admin-password/ChangeAdminPasswordApp.tsx
server/sonar-web/src/main/js/apps/code/components/CodeAppRenderer.tsx
server/sonar-web/src/main/js/apps/code/components/Component.tsx
server/sonar-web/src/main/js/apps/code/components/Components.tsx
server/sonar-web/src/main/js/apps/code/components/Search.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/ActivatedRuleActions.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/ActivationButton.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/CodingRulesApp.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/CustomRuleFormFieldsCCT.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/Facet.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/PrioritizedRulesFacet.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/QualityProfileSelector.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetails.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsCustomRules.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsHeaderMeta.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/RuleDetailsHeaderSide.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/RuleListItem.tsx
server/sonar-web/src/main/js/apps/coding-rules/components/SeveritySelect.tsx
server/sonar-web/src/main/js/apps/coding-rules/query.ts
server/sonar-web/src/main/js/apps/coding-rules/rule.ts
server/sonar-web/src/main/js/apps/component-measures/components/MeasureContent.tsx
server/sonar-web/src/main/js/apps/component-measures/components/MeasureViewSelect.tsx
server/sonar-web/src/main/js/apps/component-measures/config/bubbles.ts
server/sonar-web/src/main/js/apps/component-measures/drilldown/BubbleChartView.tsx
server/sonar-web/src/main/js/apps/component-measures/drilldown/FilesView.tsx
server/sonar-web/src/main/js/apps/component-measures/utils.ts
server/sonar-web/src/main/js/apps/create/project/Azure/AzureProjectAccordion.tsx
server/sonar-web/src/main/js/apps/create/project/Azure/AzureProjectCreateRenderer.tsx
server/sonar-web/src/main/js/apps/create/project/Azure/AzureProjectsList.tsx
server/sonar-web/src/main/js/apps/create/project/BitbucketCloud/BitbucketCloudPersonalAccessTokenForm.tsx
server/sonar-web/src/main/js/apps/create/project/BitbucketCloud/BitbucketCloudProjectCreateRender.tsx
server/sonar-web/src/main/js/apps/create/project/BitbucketCloud/BitbucketCloudSearchForm.tsx
server/sonar-web/src/main/js/apps/create/project/BitbucketServer/BitbucketImportRepositoryForm.tsx
server/sonar-web/src/main/js/apps/create/project/BitbucketServer/BitbucketProjectCreateRenderer.tsx
server/sonar-web/src/main/js/apps/create/project/BitbucketServer/BitbucketRepositories.tsx
server/sonar-web/src/main/js/apps/create/project/BitbucketServer/BitbucketSearchResults.tsx
server/sonar-web/src/main/js/apps/create/project/BitbucketServer/BitbucketServerPersonalAccessTokenForm.tsx
server/sonar-web/src/main/js/apps/create/project/CreateProjectPage.tsx
server/sonar-web/src/main/js/apps/create/project/Github/GitHubProjectCreate.tsx
server/sonar-web/src/main/js/apps/create/project/Github/GitHubProjectCreateRenderer.tsx
server/sonar-web/src/main/js/apps/create/project/Gitlab/GItlabPersonalAccessTokenForm.tsx
server/sonar-web/src/main/js/apps/create/project/Gitlab/GitlabProjectCreate.tsx
server/sonar-web/src/main/js/apps/create/project/Gitlab/GitlabProjectCreateRenderer.tsx
server/sonar-web/src/main/js/apps/create/project/Gitlab/GitlabProjectSelectionForm.tsx
server/sonar-web/src/main/js/apps/create/project/components/AlmRepoItem.tsx
server/sonar-web/src/main/js/apps/create/project/components/AlmSettingsInstanceDropdown.tsx
server/sonar-web/src/main/js/apps/create/project/components/ProjectValidation.tsx
server/sonar-web/src/main/js/apps/create/project/components/RepositoryList.tsx
server/sonar-web/src/main/js/apps/create/project/manual/ManualProjectCreate.tsx
server/sonar-web/src/main/js/apps/create/project/monorepo/MonorepoConnectionSelector.tsx
server/sonar-web/src/main/js/apps/create/project/monorepo/MonorepoProjectsList.tsx
server/sonar-web/src/main/js/apps/create/project/monorepo/MonorepoRepositorySelector.tsx
server/sonar-web/src/main/js/apps/create/project/usePersonalAccessToken.ts
server/sonar-web/src/main/js/apps/groups/components/Members.tsx
server/sonar-web/src/main/js/apps/groups/components/ViewMembersModal.tsx
server/sonar-web/src/main/js/apps/issues/components/AssigneeSelect.tsx
server/sonar-web/src/main/js/apps/issues/components/IssueHeader.tsx
server/sonar-web/src/main/js/apps/issues/components/IssueHeaderSide.tsx
server/sonar-web/src/main/js/apps/issues/components/IssueNewStatusAndTransitionGuide.tsx
server/sonar-web/src/main/js/apps/issues/components/IssuesApp.tsx
server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/SnippetViewer.tsx
server/sonar-web/src/main/js/apps/issues/crossComponentSourceViewer/utils.ts
server/sonar-web/src/main/js/apps/issues/issues-subnavigation/SubnavigationIssue.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/AssigneeFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/CreationDateFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/FacetItemsList.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/LanguageFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/ListStyleFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/PeriodFilter.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/PrioritizedRuleFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/ProjectFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/Sidebar.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/SimpleListStyleFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/StandardFacet.tsx
server/sonar-web/src/main/js/apps/issues/sidebar/TagFacet.tsx
server/sonar-web/src/main/js/apps/issues/utils.ts
server/sonar-web/src/main/js/apps/maintenance/components/App.tsx
server/sonar-web/src/main/js/apps/maintenance/components/MigrationProgress.tsx
server/sonar-web/src/main/js/apps/marketplace/App.tsx
server/sonar-web/src/main/js/apps/marketplace/EditionBoxes.tsx
server/sonar-web/src/main/js/apps/marketplace/MarketplaceAppContainer.tsx
server/sonar-web/src/main/js/apps/marketplace/PluginsList.tsx
server/sonar-web/src/main/js/apps/marketplace/components/PluginUpdateItem.tsx
server/sonar-web/src/main/js/apps/overview/branches/BranchMetaTopBar.tsx
server/sonar-web/src/main/js/apps/overview/branches/MeasuresPanelPercentCards.tsx
server/sonar-web/src/main/js/apps/overview/branches/QualityGateConditions.tsx
server/sonar-web/src/main/js/apps/overview/branches/QualityGateStatusHeader.tsx
server/sonar-web/src/main/js/apps/overview/branches/SoftwareImpactMeasureBreakdownCard.tsx
server/sonar-web/src/main/js/apps/overview/branches/SoftwareImpactMeasureCard.tsx
server/sonar-web/src/main/js/apps/overview/branches/TabsPanel.tsx
server/sonar-web/src/main/js/apps/overview/components/IssueMeasuresCardInner.tsx
server/sonar-web/src/main/js/apps/overview/components/MeasuresCard.tsx
server/sonar-web/src/main/js/apps/overview/components/MeasuresCardNumber.tsx
server/sonar-web/src/main/js/apps/overview/components/MeasuresCardPercent.tsx
server/sonar-web/src/main/js/apps/overview/pullRequests/BranchQualityGate.tsx
server/sonar-web/src/main/js/apps/overview/pullRequests/IssueMeasuresCard.tsx
server/sonar-web/src/main/js/apps/overview/pullRequests/MeasuresCardPanel.tsx
server/sonar-web/src/main/js/apps/overview/pullRequests/PullRequestMetaTopBar.tsx
server/sonar-web/src/main/js/apps/overview/pullRequests/PullRequestOverview.tsx
server/sonar-web/src/main/js/apps/permission-templates/components/PermissionCell.tsx
server/sonar-web/src/main/js/apps/permission-templates/components/PermissionTemplatesApp.tsx
server/sonar-web/src/main/js/apps/permission-templates/components/Template.tsx
server/sonar-web/src/main/js/apps/permission-templates/utils.ts
server/sonar-web/src/main/js/apps/permissions/global/components/PermissionsGlobalApp.tsx
server/sonar-web/src/main/js/apps/permissions/project/components/PermissionsProjectApp.tsx
server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAnalysesList.tsx
server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAnalysis.tsx
server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityApp.tsx
server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityAppRenderer.tsx
server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityDateInput.tsx
server/sonar-web/src/main/js/apps/projectActivity/components/ProjectActivityGraphs.tsx
server/sonar-web/src/main/js/apps/projectActivity/components/forms/AddEventForm.tsx
server/sonar-web/src/main/js/apps/projectActivity/components/forms/RemoveEventForm.tsx
server/sonar-web/src/main/js/apps/projectActivity/utils.ts
server/sonar-web/src/main/js/apps/projectInformation/ProjectInformationApp.tsx
server/sonar-web/src/main/js/apps/projectInformation/about/AboutProject.tsx
server/sonar-web/src/main/js/apps/projectInformation/about/components/MetaQualityProfiles.tsx
server/sonar-web/src/main/js/apps/projectInformation/badges/utils.ts
server/sonar-web/src/main/js/apps/projectInformation/projectRegulatoryReport/RegulatoryReport.tsx
server/sonar-web/src/main/js/apps/projectNewCode/components/BranchList.tsx
server/sonar-web/src/main/js/apps/projectNewCode/components/BranchNewCodeDefinitionSettingModal.tsx
server/sonar-web/src/main/js/apps/projectNewCode/components/NewCodeDefinitionSettingAnalysis.tsx
server/sonar-web/src/main/js/apps/projectNewCode/components/NewCodeDefinitionSettingReferenceBranch.tsx
server/sonar-web/src/main/js/apps/projectNewCode/components/ProjectNewCodeDefinitionApp.tsx
server/sonar-web/src/main/js/apps/projectNewCode/components/ProjectNewCodeDefinitionSelector.tsx
server/sonar-web/src/main/js/apps/projectQualityProfiles/components/AddLanguageModal.tsx
server/sonar-web/src/main/js/apps/projectQualityProfiles/components/LanguageProfileSelectOption.tsx
server/sonar-web/src/main/js/apps/projects/__tests__/utils-test.ts
server/sonar-web/src/main/js/apps/projects/components/AllProjects.tsx
server/sonar-web/src/main/js/apps/projects/components/PerspectiveSelect.tsx
server/sonar-web/src/main/js/apps/projects/components/ProjectsList.tsx
server/sonar-web/src/main/js/apps/projects/components/ProjectsSortingSelect.tsx
server/sonar-web/src/main/js/apps/projects/components/__tests__/DefaultPageSelector-test.tsx
server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCardMeasure.tsx
server/sonar-web/src/main/js/apps/projects/components/project-card/ProjectCardMeasures.tsx
server/sonar-web/src/main/js/apps/projects/filters/RangeFacetBase.tsx
server/sonar-web/src/main/js/apps/projects/query.ts
server/sonar-web/src/main/js/apps/projects/types.ts
server/sonar-web/src/main/js/apps/projects/utils.ts
server/sonar-web/src/main/js/apps/projectsManagement/Search.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/CaycFixOptimizeBanner.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/Condition.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/ConditionReviewAndUpdateModal.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/ConditionValue.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/ConditionValueDescription.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/Conditions.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/ConditionsTable.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/DetailsContent.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/EditConditionModal.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/List.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/MetricSelect.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/PermissionItem.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/Projects.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissions.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsAddModalRenderer.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/QualityGatePermissionsRenderer.tsx
server/sonar-web/src/main/js/apps/quality-gates/components/ThresholdInput.tsx
server/sonar-web/src/main/js/apps/quality-gates/utils.ts
server/sonar-web/src/main/js/apps/quality-profiles/changelog/ChangelogContainer.tsx
server/sonar-web/src/main/js/apps/quality-profiles/changelog/CleanCodeAttributeChange.tsx
server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonForm.tsx
server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResultDeactivation.tsx
server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResults.tsx
server/sonar-web/src/main/js/apps/quality-profiles/compare/ComparisonResultsSummary.tsx
server/sonar-web/src/main/js/apps/quality-profiles/components/ProfileActions.tsx
server/sonar-web/src/main/js/apps/quality-profiles/components/ProfileLink.tsx
server/sonar-web/src/main/js/apps/quality-profiles/components/QualityProfilesApp.tsx
server/sonar-web/src/main/js/apps/quality-profiles/details/ChangeProjectsForm.tsx
server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileHeader.tsx
server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileRules.tsx
server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileRulesRow.tsx
server/sonar-web/src/main/js/apps/quality-profiles/details/ProfileRulesSonarWayComparison.tsx
server/sonar-web/src/main/js/apps/quality-profiles/home/ProfilesListRow.tsx
server/sonar-web/src/main/js/apps/quality-profiles/types.ts
server/sonar-web/src/main/js/apps/security-hotspots/SecurityHotspotsApp.tsx
server/sonar-web/src/main/js/apps/security-hotspots/SecurityHotspotsAppRenderer.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/EmptyHotspotsPage.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotCategory.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotCommentModal.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotHeader.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotHeaderRightSection.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotList.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotOpenInIdeButton.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSimpleList.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetContainer.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetContainerRenderer.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotSnippetHeader.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/HotspotViewerTabs.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/status/StatusSelection.tsx
server/sonar-web/src/main/js/apps/security-hotspots/components/status/StatusSelectionRenderer.tsx
server/sonar-web/src/main/js/apps/security-hotspots/hooks/useStickyDetection.ts
server/sonar-web/src/main/js/apps/sessions/components/Login.tsx
server/sonar-web/src/main/js/apps/settings/components/AdditionalCategories.tsx
server/sonar-web/src/main/js/apps/settings/components/CategoryDefinitionsList.tsx
server/sonar-web/src/main/js/apps/settings/components/EmailForm.tsx
server/sonar-web/src/main/js/apps/settings/components/SettingsAppRenderer.tsx
server/sonar-web/src/main/js/apps/settings/components/SettingsSearchRenderer.tsx
server/sonar-web/src/main/js/apps/settings/components/SubCategoryDefinitionsList.tsx
server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmBindingDefinitionForm.tsx
server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmBindingDefinitionFormField.tsx
server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmBindingDefinitionFormRenderer.tsx
server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmIntegration.tsx
server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmIntegrationRenderer.tsx
server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmTab.tsx
server/sonar-web/src/main/js/apps/settings/components/almIntegration/AlmTabRenderer.tsx
server/sonar-web/src/main/js/apps/settings/components/almIntegration/BitbucketForm.tsx
server/sonar-web/src/main/js/apps/settings/components/almIntegration/DeleteModal.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/AuthenticationFormField.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/AuthenticationMultiValuesField.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/AuthenticationSecuredField.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/AuthenticationToggleField.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/ConfigurationDetails.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/ConfirmProvisioningModal.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/GitHubMappingModal.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/GitLabAuthenticationTab.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/GitLabConfigurationForm.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/GithubAuthenticationTab.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/ProvisioningSection.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/TabHeader.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/TestConfiguration.tsx
server/sonar-web/src/main/js/apps/settings/components/authentication/hook/useConfiguration.ts
server/sonar-web/src/main/js/apps/settings/components/authentication/hook/useGithubConfiguration.ts
server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/AlmSpecificForm.tsx
server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBinding.tsx
server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/PRDecorationBindingRenderer.tsx
server/sonar-web/src/main/js/apps/settings/components/pullRequestDecorationBinding/__tests__/PRDecorationBinding-it.tsx
server/sonar-web/src/main/js/apps/settings/utils.ts
server/sonar-web/src/main/js/apps/system/components/PageHeader.tsx
server/sonar-web/src/main/js/apps/system/components/info-items/HealthCard.tsx
server/sonar-web/src/main/js/apps/system/components/info-items/HealthItem.tsx
server/sonar-web/src/main/js/apps/system/components/info-items/Section.tsx
server/sonar-web/src/main/js/apps/users/UsersList.tsx
server/sonar-web/src/main/js/apps/users/components/TokensForm.tsx
server/sonar-web/src/main/js/apps/users/components/TokensFormModal.tsx
server/sonar-web/src/main/js/apps/users/components/UserActions.tsx
server/sonar-web/src/main/js/apps/users/components/UserForm.tsx
server/sonar-web/src/main/js/apps/users/components/UserListItem.tsx
server/sonar-web/src/main/js/apps/users/components/UserListItemIdentity.tsx
server/sonar-web/src/main/js/apps/users/components/UserScmAccountInput.tsx
server/sonar-web/src/main/js/apps/users/utils.ts
server/sonar-web/src/main/js/apps/web-api-v2/components/ApiFilterContext.tsx
server/sonar-web/src/main/js/apps/web-api-v2/components/ApiInformation.tsx
server/sonar-web/src/main/js/apps/web-api/components/Search.tsx
server/sonar-web/src/main/js/apps/web-api/components/WebApiApp.tsx
server/sonar-web/src/main/js/apps/web-api/utils.ts
server/sonar-web/src/main/js/apps/webhooks/components/App.tsx
server/sonar-web/src/main/js/apps/webhooks/components/__tests__/App-it.tsx
server/sonar-web/src/main/js/components/SourceViewer/SourceViewerCode.tsx
server/sonar-web/src/main/js/components/SourceViewer/components/DuplicationPopup.tsx
server/sonar-web/src/main/js/components/SourceViewer/components/Line.tsx
server/sonar-web/src/main/js/components/SourceViewer/components/LineIssuesList.tsx
server/sonar-web/src/main/js/components/activity-graph/DataTableModal.tsx
server/sonar-web/src/main/js/components/activity-graph/DefinitionChangeEventInner.tsx
server/sonar-web/src/main/js/components/activity-graph/GraphHistory.tsx
server/sonar-web/src/main/js/components/activity-graph/GraphsHeader.tsx
server/sonar-web/src/main/js/components/activity-graph/GraphsHistory.tsx
server/sonar-web/src/main/js/components/activity-graph/GraphsLegendItem.tsx
server/sonar-web/src/main/js/components/activity-graph/GraphsTooltipsContent.tsx
server/sonar-web/src/main/js/components/activity-graph/GraphsZoom.tsx
server/sonar-web/src/main/js/components/activity-graph/utils.ts
server/sonar-web/src/main/js/components/charts/AdvancedTimeline.tsx
server/sonar-web/src/main/js/components/charts/ColorGradientLegend.tsx
server/sonar-web/src/main/js/components/charts/ZoomTimeLine.tsx
server/sonar-web/src/main/js/components/common/DisableableSelectOption.tsx
server/sonar-web/src/main/js/components/common/DocumentationLink.tsx
server/sonar-web/src/main/js/components/common/ScreenPositionHelper.tsx
server/sonar-web/src/main/js/components/common/VisibilitySelector.tsx
server/sonar-web/src/main/js/components/controls/ComponentReportActions.tsx
server/sonar-web/src/main/js/components/controls/ComponentReportActionsRenderer.tsx
server/sonar-web/src/main/js/components/controls/Favorite.tsx
server/sonar-web/src/main/js/components/controls/FocusOutHandler.tsx
server/sonar-web/src/main/js/components/controls/InputValidationField.tsx
server/sonar-web/src/main/js/components/controls/ListFooter.tsx
server/sonar-web/src/main/js/components/controls/ManagedFilter.tsx
server/sonar-web/src/main/js/components/controls/SelectList.tsx
server/sonar-web/src/main/js/components/controls/SelectListListContainer.tsx
server/sonar-web/src/main/js/components/controls/Tooltip.tsx
server/sonar-web/src/main/js/components/devops-platform/AlmSettingsInstanceSelector.tsx
server/sonar-web/src/main/js/components/icon-mappers/SoftwareImpactSeverityIcon.tsx
server/sonar-web/src/main/js/components/issue/Issue.tsx
server/sonar-web/src/main/js/components/issue/components/IssueActionsBar.tsx
server/sonar-web/src/main/js/components/issue/components/IssueAssign.tsx
server/sonar-web/src/main/js/components/issue/components/IssueMessage.tsx
server/sonar-web/src/main/js/components/issue/components/IssueTags.tsx
server/sonar-web/src/main/js/components/issue/components/IssueTransitionItem.tsx
server/sonar-web/src/main/js/components/issue/components/IssueTransitionOverlay.tsx
server/sonar-web/src/main/js/components/locations/SingleFileLocationNavigator.tsx
server/sonar-web/src/main/js/components/logos/SonarLintLogo.tsx
server/sonar-web/src/main/js/components/new-code-definition/NewCodeDefinitionDaysOption.tsx
server/sonar-web/src/main/js/components/new-code-definition/NewCodeDefinitionSelector.tsx
server/sonar-web/src/main/js/components/permissions/AllHoldersList.tsx
server/sonar-web/src/main/js/components/permissions/GroupHolder.tsx
server/sonar-web/src/main/js/components/permissions/PermissionCell.tsx
server/sonar-web/src/main/js/components/permissions/UserHolder.tsx
server/sonar-web/src/main/js/components/permissions/usePermissionChange.tsx
server/sonar-web/src/main/js/components/rules/IssueTabViewer.tsx
server/sonar-web/src/main/js/components/rules/RuleDescription.tsx
server/sonar-web/src/main/js/components/rules/RuleTabViewer.tsx
server/sonar-web/src/main/js/components/shared/AnalysisMissingInfoMessage.tsx
server/sonar-web/src/main/js/components/shared/CleanCodeAttributePill.tsx
server/sonar-web/src/main/js/components/shared/DrilldownLink.tsx
server/sonar-web/src/main/js/components/shared/SoftwareImpactPill.tsx
server/sonar-web/src/main/js/components/shared/SoftwareImpactPillList.tsx
server/sonar-web/src/main/js/components/tags/TagsList.tsx
server/sonar-web/src/main/js/components/tutorials/TutorialSelection.tsx
server/sonar-web/src/main/js/components/tutorials/azure-pipelines/BranchAnalysisStepContent.tsx
server/sonar-web/src/main/js/components/tutorials/azure-pipelines/commands/AnalysisCommand.tsx
server/sonar-web/src/main/js/components/tutorials/azure-pipelines/commands/ClangGCC.tsx
server/sonar-web/src/main/js/components/tutorials/bitbucket-pipelines/AnalysisCommand.tsx
server/sonar-web/src/main/js/components/tutorials/components/EditTokenModal.tsx
server/sonar-web/src/main/js/components/tutorials/components/GithubCFamilyExampleRepositories.tsx
server/sonar-web/src/main/js/components/tutorials/components/GradleBuildSelection.tsx
server/sonar-web/src/main/js/components/tutorials/components/RenderOptions.tsx
server/sonar-web/src/main/js/components/tutorials/components/SentenceWithHighlights.tsx
server/sonar-web/src/main/js/components/tutorials/github-action/AnalysisCommand.tsx
server/sonar-web/src/main/js/components/tutorials/github-action/GitHubActionTutorial.tsx
server/sonar-web/src/main/js/components/tutorials/github-action/commands/CFamily.tsx
server/sonar-web/src/main/js/components/tutorials/github-action/commands/DotNet.tsx
server/sonar-web/src/main/js/components/tutorials/github-action/commands/Gradle.tsx
server/sonar-web/src/main/js/components/tutorials/github-action/commands/JavaMaven.tsx
server/sonar-web/src/main/js/components/tutorials/github-action/commands/Others.tsx
server/sonar-web/src/main/js/components/tutorials/jenkins/JenkinsStep.tsx
server/sonar-web/src/main/js/components/tutorials/jenkins/buildtool-steps/DotNetCore.tsx
server/sonar-web/src/main/js/components/tutorials/other/BuildToolForm.tsx
server/sonar-web/src/main/js/components/tutorials/other/OtherTutorial.tsx
server/sonar-web/src/main/js/components/tutorials/other/ProjectAnalysisStep.tsx
server/sonar-web/src/main/js/components/tutorials/other/TokenStep.tsx
server/sonar-web/src/main/js/components/tutorials/other/commands/AnalysisCommand.tsx
server/sonar-web/src/main/js/components/tutorials/other/commands/ClangGCCCommand.tsx
server/sonar-web/src/main/js/components/tutorials/other/commands/DotNet.tsx
server/sonar-web/src/main/js/components/tutorials/other/commands/DownloadBuildWrapper.tsx
server/sonar-web/src/main/js/components/tutorials/other/commands/ExecScanner.tsx
server/sonar-web/src/main/js/components/tutorials/other/commands/JavaGradle.tsx
server/sonar-web/src/main/js/components/tutorials/other/commands/JavaMaven.tsx
server/sonar-web/src/main/js/components/tutorials/other/commands/Other.tsx
server/sonar-web/src/main/js/components/upgrade/SystemUpgradeForm.tsx
server/sonar-web/src/main/js/components/workspace/__tests__/Workspace-test.tsx
server/sonar-web/src/main/js/helpers/UseQuery.tsx
server/sonar-web/src/main/js/helpers/code-difference.ts
server/sonar-web/src/main/js/helpers/editions.ts
server/sonar-web/src/main/js/helpers/issues.ts
server/sonar-web/src/main/js/helpers/request.ts
server/sonar-web/src/main/js/helpers/testMocks.ts
server/sonar-web/src/main/js/helpers/testReactTestingUtils.tsx
server/sonar-web/src/main/js/helpers/urls.ts
server/sonar-web/src/main/js/hooks/__tests__/useLocalStorage-test.tsx
server/sonar-web/src/main/js/queries/branch.tsx
server/sonar-web/src/main/js/queries/component.ts
server/sonar-web/src/main/js/queries/devops-integration.ts
server/sonar-web/src/main/js/queries/group-memberships.ts
server/sonar-web/src/main/js/queries/groups.ts
server/sonar-web/src/main/js/queries/identity-provider/gitlab.ts
server/sonar-web/src/main/js/queries/import-projects.ts
server/sonar-web/src/main/js/queries/newCodeDefinition.ts
server/sonar-web/src/main/js/queries/quality-gates.ts
server/sonar-web/src/main/js/queries/rules.ts
server/sonar-web/src/main/js/queries/settings.ts
server/sonar-web/src/main/js/queries/users.ts
server/sonar-web/src/main/js/sonar-aligned/components/a11y/A11yContext.tsx
server/sonar-web/src/main/js/sonar-aligned/components/controls/DocHelpTooltip.tsx
server/sonar-web/src/main/js/sonar-aligned/components/measure/Measure.tsx
server/sonar-web/src/main/js/sonar-aligned/types/router.ts
server/sonar-web/src/main/js/types/alm-integration.ts
server/sonar-web/src/main/js/types/alm-settings.ts
server/sonar-web/src/main/js/types/application.ts
server/sonar-web/src/main/js/types/appstate.ts
server/sonar-web/src/main/js/types/axios.d.ts
server/sonar-web/src/main/js/types/branch-like.ts
server/sonar-web/src/main/js/types/browser.ts
server/sonar-web/src/main/js/types/clean-code-taxonomy.ts
server/sonar-web/src/main/js/types/coding-rules.ts
server/sonar-web/src/main/js/types/component.ts
server/sonar-web/src/main/js/types/editions.ts
server/sonar-web/src/main/js/types/issues.ts
server/sonar-web/src/main/js/types/l10nBundle.ts
server/sonar-web/src/main/js/types/new-code-definition.ts
server/sonar-web/src/main/js/types/notifications.ts
server/sonar-web/src/main/js/types/plugins.ts
server/sonar-web/src/main/js/types/project-activity.ts
server/sonar-web/src/main/js/types/provisioning.ts
server/sonar-web/src/main/js/types/quality-gates.ts
server/sonar-web/src/main/js/types/rules.ts
server/sonar-web/src/main/js/types/security-hotspots.ts
server/sonar-web/src/main/js/types/security.ts
server/sonar-web/src/main/js/types/settings.ts
server/sonar-web/src/main/js/types/system.ts
server/sonar-web/src/main/js/types/tasks.ts
server/sonar-web/src/main/js/types/token.ts
server/sonar-web/src/main/js/types/types.ts
server/sonar-web/src/main/js/types/users.ts
server/sonar-web/src/main/js/types/webhook.ts
server/sonar-web/yarn.lock

index eb719ac425bc1612ed3e36d0188560186c6647a9..ae42940075245622d8d07a2456de818633074666 100644 (file)
@@ -1,6 +1,6 @@
 {
   "extends": "sonarqube",
-  "plugins": ["header", "eslint-plugin-local-rules"],
+  "plugins": ["header", "typescript-sort-keys", "eslint-plugin-local-rules"],
   "ignorePatterns": ["eslint-local-rules/**/*"],
   "root": true,
   "parserOptions": {
@@ -48,6 +48,7 @@
     ],
     "react/jsx-curly-brace-presence": "warn",
     "testing-library/render-result-naming-convention": "off",
+    "typescript-sort-keys/interface": "error",
     /* Local rules, defined in ./eslint-local-rules/ */
     "local-rules/use-componentqualifier-enum": "warn",
     "local-rules/use-metrickey-enum": "warn",
index ec3dcbf01f3a743d7eed14aa670d5977c117f7d5..74cab28e3ff3e669c0f2c08fe4177929782aa641 100644 (file)
@@ -96,6 +96,7 @@
     "eslint-plugin-react": "7.33.2",
     "eslint-plugin-react-hooks": "4.6.0",
     "eslint-plugin-testing-library": "6.2.0",
+    "eslint-plugin-typescript-sort-keys": "3.2.0",
     "fs-extra": "11.2.0",
     "http-proxy": "1.18.1",
     "jest": "29.7.0",
index 367a226719d62e12ad2608f67d01496385f85af9..a10e8ce3905bc50643d1a792cbf7901dbde8c42a 100644 (file)
@@ -23,16 +23,16 @@ declare module 'lunr' {
 
     field(field: string, options?: { boost?: number }): void;
 
+    metadataWhitelist?: string[];
+
     ref(field: string): void;
 
     use(fn: Function): void;
-
-    metadataWhitelist?: string[];
   }
 
   export interface LunrBuilder {
-    pipeline: any;
     metadataWhitelist: string[];
+    pipeline: any;
   }
 
   export interface LunrIndex {
@@ -44,14 +44,14 @@ declare module 'lunr' {
   }
 
   export interface LunrMatch {
+    matchData: { metadata: any };
     ref: string;
     score: number;
-    matchData: { metadata: any };
   }
 
   export interface LunrToken {
-    str: string;
     metadata: any;
+    str: string;
   }
 
   function lunr(initializer: LunrInit): LunrIndex;
index d949954dbb79367cf94e76a599cb1b91fcdeef9b..b6e2d5047af17b25dcea85b878c749bc7e226cfa 100644 (file)
@@ -45,7 +45,7 @@ export function setAlmPersonalAccessToken(
 
 export function checkPersonalAccessTokenIsValid(
   almSetting: string,
-): Promise<{ status: boolean; error?: string }> {
+): Promise<{ error?: string; status: boolean }> {
   return get('/api/alm_integrations/check_pat', { almSetting })
     .then(() => ({ status: true }))
     .catch(async (response: Response) => {
@@ -92,10 +92,10 @@ export function setupAzureProjectCreation(data: {
 
 export function importAzureRepository(data: {
   almSetting: string;
-  projectName: string;
-  repositoryName: string;
   newCodeDefinitionType?: string;
   newCodeDefinitionValue?: string;
+  projectName: string;
+  repositoryName: string;
 }): Promise<{ project: ProjectBase }> {
   return postJSON('/api/alm_integrations/import_azure_project', data).catch(throwGlobalError);
 }
@@ -130,10 +130,10 @@ export function setupBitbucketServerProjectCreation(data: {
 
 export function importBitbucketServerProject(data: {
   almSetting: string;
-  projectKey: string;
-  repositorySlug: string;
   newCodeDefinitionType?: string;
   newCodeDefinitionValue?: string;
+  projectKey: string;
+  repositorySlug: string;
 }): Promise<{ project: ProjectBase }> {
   return postJSON('/api/alm_integrations/import_bitbucketserver_project', data).catch(
     throwGlobalError,
@@ -184,9 +184,9 @@ export function setupBitbucketCloudProjectCreation(data: {
 
 export function importBitbucketCloudRepository(data: {
   almSetting: string;
-  repositorySlug: string;
   newCodeDefinitionType?: string;
   newCodeDefinitionValue?: string;
+  repositorySlug: string;
 }): Promise<{ project: ProjectBase }> {
   return postJSON('/api/alm_integrations/import_bitbucketcloud_repo', data).catch(throwGlobalError);
 }
@@ -202,9 +202,9 @@ export function setupGithubProjectCreation(data: {
 
 export function importGithubRepository(data: {
   almSetting: string;
-  repositoryKey: string;
   newCodeDefinitionType?: string;
   newCodeDefinitionValue?: string;
+  repositoryKey: string;
 }): Promise<{ project: ProjectBase }> {
   return postJSON('/api/alm_integrations/import_github_project', data).catch(throwGlobalError);
 }
@@ -226,10 +226,10 @@ export function getGithubOrganizations(
 export function getGithubRepositories(data: {
   almSetting: string;
   organization: string;
-  pageSize: number;
   page?: number;
+  pageSize: number;
   query?: string;
-}): Promise<{ repositories: GithubRepository[]; paging: Paging }> {
+}): Promise<{ paging: Paging; repositories: GithubRepository[] }> {
   const { almSetting, organization, pageSize, page = 1, query } = data;
   return getJSON('/api/alm_integrations/list_github_repositories', {
     almSetting,
index 7acd1af27c44805264d1d24db9511ff7299cf4b8..72a15a36e38cf4c35d2621c1bf861a4fe9b02c91 100644 (file)
@@ -25,8 +25,8 @@ import { ActivityRequestParameters, Task, TaskWarning } from '../types/tasks';
 import { Paging } from '../types/types';
 
 export function getAnalysisStatus(data: {
-  component: string;
   branch?: string;
+  component: string;
   pullRequest?: string;
 }): Promise<{
   component: {
@@ -42,7 +42,7 @@ export function getAnalysisStatus(data: {
 
 export function getActivity(
   data: ActivityRequestParameters,
-): Promise<{ tasks: Task[]; paging: Paging }> {
+): Promise<{ paging: Paging; tasks: Task[] }> {
   return getJSON('/api/ce/activity', data);
 }
 
@@ -69,7 +69,7 @@ export function cancelAllTasks(): Promise<any> {
 
 export function getTasksForComponent(
   component: string,
-): Promise<{ queue: Task[]; current?: Task }> {
+): Promise<{ current?: Task; queue: Task[] }> {
   return getJSON('/api/ce/component', { component }).catch(throwGlobalError);
 }
 
index 7c8ae1e2dc181673947b258db895b0c2a6ac1463..4ef3576903013e4c1e828c15f63283d198bccebb 100644 (file)
@@ -52,15 +52,15 @@ export interface ProjectBase {
 }
 
 export interface ComponentRaw {
+  analysisDate?: string;
+  isFavorite?: boolean;
   key: string;
+  leakPeriodDate?: string;
   name: string;
-  isFavorite?: boolean;
-  analysisDate?: string;
+  needIssueSync?: boolean;
   qualifier: ComponentQualifier;
   tags: string[];
   visibility: Visibility;
-  leakPeriodDate?: string;
-  needIssueSync?: boolean;
 }
 
 export function searchProjectTags(data?: { ps?: number; q?: string }): Promise<any> {
@@ -175,7 +175,7 @@ export function getMyProjects(data: {
 
 export interface Facet {
   property: string;
-  values: Array<{ val: string; count: number }>;
+  values: Array<{ count: number; val: string }>;
 }
 
 export function searchProjects(data: RequestData): Promise<{
@@ -188,9 +188,9 @@ export function searchProjects(data: RequestData): Promise<{
 }
 
 export function searchComponents(data?: {
+  ps?: number;
   q?: string;
   qualifiers?: string;
-  ps?: number;
 }): Promise<any> {
   return getJSON('/api/components/search', data);
 }
@@ -241,7 +241,7 @@ export function getComponentForSourceViewer(
 }
 
 export function getSources(
-  data: { key: string; from?: number; to?: number } & BranchParameters,
+  data: { from?: number; key: string; to?: number } & BranchParameters,
 ): Promise<SourceLine[]> {
   return getJSON('/api/sources/lines', data).then((r) => r.sources);
 }
index d14e3c7c02583a7c54ee510adc4f7ad3e3d81197..7f0c67d928a6853efaf8083d4679677d18e760b3 100644 (file)
@@ -29,7 +29,7 @@ import { Paging } from '../types/types';
 const GITLAB_CONFIGURATIONS = '/api/v2/dop-translation/gitlab-configurations';
 
 export function fetchGitLabConfigurations() {
-  return axios.get<{ page: Paging; gitlabConfigurations: GitlabConfiguration[] }>(
+  return axios.get<{ gitlabConfigurations: GitlabConfiguration[]; page: Paging }>(
     GITLAB_CONFIGURATIONS,
   );
 }
index 10d293929e3b798582b0d34c5a3f7758fa8f4821..e13cbff3727723465d6f3f7965bbd86df53a2fcf 100644 (file)
@@ -23,18 +23,18 @@ import { GroupMembership, Paging } from '../types/types';
 const GROUPS_MEMBERSHIPS_ENDPOINT = '/api/v2/authorizations/group-memberships';
 
 export function getGroupMemberships(data: {
-  userId?: string;
   groupId?: string;
-  pageSize?: number;
   pageIndex?: number;
+  pageSize?: number;
+  userId?: string;
 }) {
-  return axios.get<{ page: Paging; groupMemberships: GroupMembership[] }>(
+  return axios.get<{ groupMemberships: GroupMembership[]; page: Paging }>(
     GROUPS_MEMBERSHIPS_ENDPOINT,
     { params: data },
   );
 }
 
-export function addGroupMembership(data: { userId: string; groupId: string }) {
+export function addGroupMembership(data: { groupId: string; userId: string }) {
   return axios.post<GroupMembership>(GROUPS_MEMBERSHIPS_ENDPOINT, data);
 }
 
index 6b87eaea6e42b73c0885fd1fb1b817c55eb64391..751e6959760dc67224bc90da75b01d710cce756c 100644 (file)
@@ -60,9 +60,9 @@ export function getFacet(
 }
 
 export function searchIssueTags(data: {
-  project?: string;
-  branch?: string;
   all?: boolean;
+  branch?: string;
+  project?: string;
   ps?: number;
   q?: string;
 }): Promise<string[]> {
@@ -92,8 +92,8 @@ export function editIssueComment(data: { comment: string; text: string }): Promi
 }
 
 export function setIssueAssignee(data: {
-  issue: string;
   assignee?: string;
+  issue: string;
 }): Promise<IssueResponse> {
   return postJSON('/api/issues/assign', data);
 }
index 8dfb4bdd0733cd0012064564bd7250b855ede966..92bc429ab42a56f79a9512cdf047e8e909dd1485 100644 (file)
@@ -104,8 +104,8 @@ const defaultAlmSettings = [
 
 interface EnhancedProjectAlmBindingParam extends ProjectAlmBindingParams {
   projectName?: string;
-  repositoryName?: string;
   repository?: string;
+  repositoryName?: string;
   slug?: string;
   summaryCommentEnabled?: boolean;
 }
index 62967a73ab9e10e490e8ee08c58fc43526b2586f..ef7faa530b508d93d46cef8c9a522dd7b5f44292 100644 (file)
@@ -448,7 +448,7 @@ export default class CodingRulesServiceMock {
     prioritizedRule,
   }: SearchRulesQuery): Promise<SearchRulesResponse> => {
     const standards = await getStandards();
-    const facetCounts: Array<{ property: string; values: { val: string; count: number }[] }> = [];
+    const facetCounts: Array<{ property: string; values: { count: number; val: string }[] }> = [];
     for (const facet of facets?.split(',') ?? []) {
       // If we can count facet values from the list of rules
       if (FACET_RULE_MAP[facet]) {
index 787556a810e331a82855ad546a2a6a32b65cf230..0e55f044311a173057f1f62ed2c5a4d6b70af1b4 100644 (file)
@@ -343,8 +343,8 @@ export default class ComponentsServiceMock {
     if (tree) {
       const { component, ancestors } = tree;
       return this.reply({ component, ancestors } as {
-        component: ComponentRaw;
         ancestors: ComponentRaw[];
+        component: ComponentRaw;
       });
     }
     throw new Error(`Couldn't find component with key ${data.component}`);
@@ -368,7 +368,7 @@ export default class ComponentsServiceMock {
     return this.reply({ duplications: [], files: {} });
   };
 
-  handleGetSources = (data: { key: string; from?: number; to?: number } & BranchParameters) => {
+  handleGetSources = (data: { from?: number; key: string; to?: number } & BranchParameters) => {
     const { lines } = this.findSourceFile(data.key);
     const from = data.from || 1;
     const to = data.to || lines.length;
index 71abfecd79d69e00f710ac9758d5677cf9286bee..a8a37b79cbab4cfb4c8728bb997dd4d19622ea4a 100644 (file)
@@ -102,7 +102,7 @@ export default class ComputeEngineServiceMock {
     this.taskWarnings = taskWarnings;
   };
 
-  handleAnalysisStatus = (data: { component: string; branch?: string; pullRequest?: string }) => {
+  handleAnalysisStatus = (data: { branch?: string; component: string; pullRequest?: string }) => {
     return Promise.resolve({
       component: {
         key: data.component,
index 973760b0aa7426a3b00a31a2a3e4a5e94ec66d83..fb6470a0b226b3befa2b55f396bd01810b8fb905 100644 (file)
@@ -45,8 +45,8 @@ export default class GroupMembershipsServiceMock {
     userId,
     groupId,
   }: {
-    userId: string;
     groupId: string;
+    userId: string;
   }): Promise<GroupMembership> => {
     const newMembership = mockGroupMembership({ userId, groupId });
     this.memberships.push(newMembership);
index b2267028033414440d3e934bf99ac8e1a33e2ff9..443e7bfae9ad2b16181c5c99d6d10db85ad1c90c 100644 (file)
@@ -45,7 +45,7 @@ export default class GroupsServiceMock {
     this.groups = cloneDeep(this.readOnlyGroups);
   }
 
-  handleCreateGroup = (group: { name: string; description?: string }): Promise<Group> => {
+  handleCreateGroup = (group: { description?: string; name: string }): Promise<Group> => {
     const newGroup = mockGroup(group);
     this.groups.push(newGroup);
     return this.reply(newGroup);
index a845ef3ca47a839553142c86268f27c499d32b61..3764ea178d0f72586f8ef7a9ba217678e8505745 100644 (file)
@@ -513,7 +513,7 @@ export default class IssuesServiceMock {
     return this.getActionsResponse({ severity: data.severity }, data.issue);
   };
 
-  handleSetIssueAssignee = (data: { issue: string; assignee?: string }) => {
+  handleSetIssueAssignee = (data: { assignee?: string; issue: string }) => {
     return this.getActionsResponse(
       {
         assignee:
index de4e357a4194e19b2863412b7095618be4ca6266..f391a82f89e6a434acf5d86d2f38b842e538224f 100644 (file)
@@ -56,7 +56,7 @@ export class NavigationServiceMock {
     return Promise.resolve(this.componentNavigation);
   };
 
-  handleGetMarketplaceNavigation(): Promise<{ serverId: string; ncloc: number }> {
+  handleGetMarketplaceNavigation(): Promise<{ ncloc: number; serverId: string }> {
     return Promise.resolve({ serverId: 'foo', ncloc: 0 });
   }
 
index 6160350e92b3652e21cba7abd009455c2c35956d..c34c1b4d7be2d9646d8ea5a21c0abe38514f4a00 100644 (file)
@@ -71,8 +71,8 @@ export default class NewCodeDefinitionServiceMock {
   };
 
   handleSetNewCodePeriod = (data: {
-    project?: string;
     branch?: string;
+    project?: string;
     type: NewCodeDefinitionType;
     value?: string;
   }) => {
@@ -89,7 +89,7 @@ export default class NewCodeDefinitionServiceMock {
     return this.reply(undefined);
   };
 
-  handleResetNewCodePeriod = (data: { project?: string; branch?: string }) => {
+  handleResetNewCodePeriod = (data: { branch?: string; project?: string }) => {
     const { branch } = data;
     if (branch) {
       const index = this.#listBranchesNewCode.findIndex((bNew) => bNew.branchKey === branch);
index 4236df00b27b7fa079cf0b36063d3d46f05abe5e..80a300ac1ca1f219663d37ebc7bbe87bf2e5a964 100644 (file)
@@ -149,7 +149,7 @@ jest.mock('../permissions');
 export default class PermissionsServiceMock {
   #permissionTemplates: PermissionTemplate[] = [];
   #permissions: Permission[];
-  #defaultTemplates: Array<{ templateId: string; qualifier: string }> = [];
+  #defaultTemplates: Array<{ qualifier: string; templateId: string }> = [];
   #groups: PermissionGroup[];
   #users: PermissionUser[];
   #isAllowedToChangePermissions = true;
@@ -226,21 +226,21 @@ export default class PermissionsServiceMock {
   };
 
   handleGetPermissionTemplateUsers = (data: {
-    templateId: string;
-    q?: string;
-    permission?: string;
     p?: number;
+    permission?: string;
     ps?: number;
+    q?: string;
+    templateId: string;
   }) => {
     return this.handleGetPermissionUsers(data);
   };
 
   handleGetPermissionTemplateGroups = (data: {
-    templateId: string;
-    q?: string;
-    permission?: string;
     p?: number;
+    permission?: string;
     ps?: number;
+    q?: string;
+    templateId: string;
   }) => {
     return this.handleGetPermissionGroups(data);
   };
@@ -250,10 +250,10 @@ export default class PermissionsServiceMock {
   };
 
   handleGetPermissionUsers = (data: {
-    q?: string;
-    permission?: string;
     p?: number;
+    permission?: string;
     ps?: number;
+    q?: string;
   }) => {
     const { ps = PAGE_SIZE, p = DEFAULT_PAGE, q, permission } = data;
 
@@ -278,10 +278,10 @@ export default class PermissionsServiceMock {
   };
 
   handleGetPermissionGroups = (data: {
-    q?: string;
-    permission?: string;
     p?: number;
+    permission?: string;
     ps?: number;
+    q?: string;
   }) => {
     const { ps = PAGE_SIZE, p = DEFAULT_PAGE, q, permission } = data;
 
@@ -302,29 +302,29 @@ export default class PermissionsServiceMock {
   };
 
   handleGetPermissionGroupsForComponent = (data: {
-    projectKey: string;
-    q?: string;
-    permission?: string;
     p?: number;
+    permission?: string;
+    projectKey: string;
     ps?: number;
+    q?: string;
   }) => {
     return this.handleGetPermissionGroups(data);
   };
 
   handleGetPermissionUsersForComponent = (data: {
-    projectKey: string;
-    q?: string;
-    permission?: string;
     p?: number;
+    permission?: string;
+    projectKey: string;
     ps?: number;
+    q?: string;
   }) => {
     return this.handleGetPermissionUsers(data);
   };
 
   handleGrantPermissionToGroup = (data: {
-    projectKey?: string;
     groupName: string;
     permission: string;
+    projectKey?: string;
   }) => {
     if (!this.#isAllowedToChangePermissions) {
       return Promise.reject();
@@ -340,9 +340,9 @@ export default class PermissionsServiceMock {
   };
 
   handleRevokePermissionFromGroup = (data: {
-    projectKey?: string;
     groupName: string;
     permission: string;
+    projectKey?: string;
   }) => {
     if (!this.#isAllowedToChangePermissions) {
       return Promise.reject();
@@ -358,9 +358,9 @@ export default class PermissionsServiceMock {
   };
 
   handleGrantPermissionToUser = (data: {
-    projectKey?: string;
     login: string;
     permission: string;
+    projectKey?: string;
   }) => {
     if (!this.#isAllowedToChangePermissions) {
       return Promise.reject();
@@ -376,9 +376,9 @@ export default class PermissionsServiceMock {
   };
 
   handleRevokePermissionFromUser = (data: {
-    projectKey?: string;
     login: string;
     permission: string;
+    projectKey?: string;
   }) => {
     if (!this.#isAllowedToChangePermissions) {
       return Promise.reject();
@@ -398,8 +398,8 @@ export default class PermissionsServiceMock {
   };
 
   handleCreatePermissionTemplate = (data: {
-    name: string;
     description?: string;
+    name: string;
     projectKeyPattern?: string;
   }) => {
     const newTemplate = mockPermissionTemplate({
@@ -411,8 +411,8 @@ export default class PermissionsServiceMock {
   };
 
   handleUpdatePermissionTemplate = (data: {
-    id: string;
     description?: string;
+    id: string;
     name?: string;
     projectKeyPattern?: string;
   }) => {
index 1bf40fabd37f1b2459f6f27960bf9db76841dca8..8140dab432ff712a035ada4c585bcff48c5168b4 100644 (file)
@@ -107,12 +107,12 @@ export class ProjectActivityServiceMock {
 
   getActivityHandler = (
     data: {
-      project: string;
-      statuses?: string;
       category?: string;
       from?: string;
       p?: number;
+      project: string;
       ps?: number;
+      statuses?: string;
     } & BranchParameters,
   ) => {
     const { project, ps = PAGE_SIZE, p = DEFAULT_PAGE, category, from } = data;
@@ -140,12 +140,12 @@ export class ProjectActivityServiceMock {
 
   getAllTimeProjectActivityHandler = (
     data: {
-      project: string;
-      statuses?: string;
       category?: string;
       from?: string;
       p?: number;
+      project: string;
       ps?: number;
+      statuses?: string;
     } & BranchParameters,
   ) => {
     const { project, p = DEFAULT_PAGE, category, from } = data;
@@ -179,9 +179,9 @@ export class ProjectActivityServiceMock {
 
   createEventHandler = (data: {
     analysis: string;
-    name: string;
     category?: ProjectAnalysisEventCategory;
     description?: string;
+    name: string;
   }) => {
     const {
       analysis: analysisKey,
@@ -203,7 +203,7 @@ export class ProjectActivityServiceMock {
     });
   };
 
-  changeEventHandler = (data: { event: string; name: string; description?: string }) => {
+  changeEventHandler = (data: { description?: string; event: string; name: string }) => {
     const { event: eventKey, name, description } = data;
     const [eventIndex, analysisKey] = this.findEvent(eventKey);
     const analysis = this.findAnalysis(analysisKey);
index ff065030560ff15fd43dcc02faf35f32b1e2b28a..4a6f946d9f39965f61d58001e4d39ad52e458246 100644 (file)
@@ -57,9 +57,9 @@ export class ProjectsServiceMock {
     filter = '',
     s,
   }: {
-    ps: number;
     facets: string;
     filter: string;
+    ps: number;
     s?: string;
   }) => {
     /*
index 84ca1fd02edf699c99a864589118ad70f025ed79..d82a794672caaba5c4baedfa9bb0bedb63b74e26 100644 (file)
@@ -397,7 +397,7 @@ export class QualityGatesServiceMock {
     return Promise.resolve();
   };
 
-  copyHandler = ({ sourceName, name }: { sourceName: string; name: string }) => {
+  copyHandler = ({ sourceName, name }: { name: string; sourceName: string }) => {
     const newQG = cloneDeep(this.list.find((q) => q.name === sourceName));
     if (newQG === undefined) {
       return Promise.reject({
@@ -491,8 +491,8 @@ export class QualityGatesServiceMock {
     query,
   }: {
     gateName: string;
-    selected: string;
     query: string | undefined;
+    selected: string;
   }) => {
     let filteredProjects = this.projects;
     if (selected === 'selected') {
index fbf9b7593db9dffc813ebb0cb7bdb332c87ea35e..50d11baafddca097793cc56d08391ac3be82d070 100644 (file)
@@ -134,8 +134,8 @@ export default class SecurityHotspotServiceMock {
   handleGetSecurityHotspotList = (
     hotspotKeys: string[],
     data: {
-      project: string;
       branch?: string;
+      project: string;
     },
   ) => {
     if (data?.branch === 'normal-branch') {
@@ -190,14 +190,14 @@ export default class SecurityHotspotServiceMock {
   };
 
   handleGetSecurityHotspots = (data: {
-    project: string;
+    branch?: string;
+    inNewCodePeriod?: boolean;
+    onlyMine?: boolean;
     p: number;
+    project: string;
     ps: number;
-    status?: HotspotStatus;
     resolution?: HotspotResolution;
-    onlyMine?: boolean;
-    inNewCodePeriod?: boolean;
-    branch?: string;
+    status?: HotspotStatus;
   }) => {
     if (data?.branch === 'normal-branch') {
       return this.reply({
index b67a20c4524729b932732e86881fad6b1482a457..98599b3037d8afd984279e480d2a78e907fa4ee4 100644 (file)
@@ -158,7 +158,7 @@ export default class SettingsServiceMock {
     jest.mocked(encryptValue).mockImplementation(this.handleEcnryptValue);
   }
 
-  handleGetValue = (data: { key: string; component?: string } & BranchParameters) => {
+  handleGetValue = (data: { component?: string; key: string } & BranchParameters) => {
     const setting = this.#settingValues.find((s) => s.key === data.key) as SettingValue;
     const definition = this.#definitions.find(
       (d) => d.key === data.key,
@@ -172,7 +172,7 @@ export default class SettingsServiceMock {
     return this.reply(setting ?? undefined);
   };
 
-  handleGetValues = (data: { keys: string[]; component?: string } & BranchParameters) => {
+  handleGetValues = (data: { component?: string; keys: string[] } & BranchParameters) => {
     const settings = data.keys
       .map((k) => {
         const def = this.#definitions.find((d) => d.key === k);
@@ -215,7 +215,7 @@ export default class SettingsServiceMock {
     return this.reply(undefined);
   };
 
-  handleResetSettingValue = (data: { keys: string; component?: string } & BranchParameters) => {
+  handleResetSettingValue = (data: { component?: string; keys: string } & BranchParameters) => {
     const setting = this.#settingValues.find((s) => s.key === data.keys) as SettingValue;
     const definition = this.#definitions.find(
       (d) => d.key === data.keys,
index 224338dd86df55cef67768e308149dcca2a9b954..34e832b5b3f6cb03ff6dc7e4d49e21dc2edce8b7 100644 (file)
@@ -27,10 +27,10 @@ import { getSystemInfo, getSystemUpgrades, setLogLevel } from '../system';
 jest.mock('../system');
 
 type SystemUpgrades = {
-  upgrades: [];
+  installedVersionActive: boolean;
   latestLTA: string;
   updateCenterRefresh: string;
-  installedVersionActive: boolean;
+  upgrades: [];
 };
 
 export default class SystemServiceMock {
index d5a29963f7edae80b7a565f603bf9103ca3ed1ba..53065863d8dbeb46af5c6eec8beaaba9aeeb06c5 100644 (file)
@@ -88,8 +88,8 @@ export class TimeMachineServiceMock {
   handleGetAllTimeMachineData = (
     data: {
       component: string;
-      metrics: string;
       from?: string;
+      metrics: string;
       p?: number;
       to?: string;
     } & BranchParameters,
index 5f604fdef92e9c2f12bbb2acd14124ecb2f09334..5601b2cb72106ccde7ff20e320e1bc859c084c23 100644 (file)
@@ -59,11 +59,11 @@ export default class UserTokensMock {
     projectKey,
     expirationDate,
   }: {
-    name: string;
+    expirationDate?: string;
     login: string;
-    type: TokenType;
+    name: string;
     projectKey: string;
-    expirationDate?: string;
+    type: TokenType;
   }) => {
     if (this.failGeneration) {
       this.failGeneration = false;
@@ -90,7 +90,7 @@ export default class UserTokensMock {
     return Promise.resolve(token);
   };
 
-  handleRevokeToken = ({ name }: { name: string; login?: string }) => {
+  handleRevokeToken = ({ name }: { login?: string; name: string }) => {
     this.tokens = this.tokens.filter((t) => t.name !== name);
 
     return Promise.resolve();
index 14ba685aa6c48d96cd169ab7c5491812fcb8093d..b724a319643b7d550baa673bc37ea6c0306536d8 100644 (file)
@@ -49,18 +49,18 @@ import {
 } from './ids';
 
 export interface ComponentTree {
-  component: Component;
   ancestors: Component[];
   children: ComponentTree[];
+  component: Component;
 }
 
 export interface SourceFile {
   component: SourceViewerFile;
-  lines: SourceLine[];
   duplication?: {
     duplications: Duplication[];
     files: Dict<DuplicatedFile>;
   };
+  lines: SourceLine[];
 }
 
 export function mockFullComponentTree(
index 8c3700629645caf107baa155ea9ffead2b3a7211..1df68cfb3f4592496e6d27b856dd387044106021 100644 (file)
@@ -29,7 +29,7 @@ export function getComponentNavigation(
   return getJSON('/api/navigation/component', data);
 }
 
-export function getMarketplaceNavigation(): Promise<{ serverId: string; ncloc: number }> {
+export function getMarketplaceNavigation(): Promise<{ ncloc: number; serverId: string }> {
   return getJSON('/api/navigation/marketplace').catch(throwGlobalError);
 }
 
index 63936d5bd15a1197b9c41281cebfdf9823d42f98..a779c897cc78f15ab70e5ab20b6c54fc1be8e39d 100644 (file)
@@ -27,22 +27,22 @@ import {
 } from '../types/new-code-definition';
 
 export function getNewCodeDefinition(data?: {
-  project?: string;
   branch?: string;
+  project?: string;
 }): Promise<Omit<NewCodeDefinition, 'effectiveValue'>> {
   return getJSON('/api/new_code_periods/show', data).catch(throwGlobalError);
 }
 
 export function setNewCodeDefinition(data: {
-  project?: string;
   branch?: string;
+  project?: string;
   type: NewCodeDefinitionType;
   value?: string;
 }): Promise<void> {
   return post('/api/new_code_periods/set', data).catch(throwGlobalError);
 }
 
-export function resetNewCodeDefinition(data: { project?: string; branch?: string }): Promise<void> {
+export function resetNewCodeDefinition(data: { branch?: string; project?: string }): Promise<void> {
   return post('/api/new_code_periods/unset', data).catch(throwGlobalError);
 }
 
index 0dc048add92a55c94a56a97782ebea465d554dbf..26a5e0c44381f88c9d62ece960e5256f7ce13323 100644 (file)
@@ -33,40 +33,40 @@ import { BaseSearchProjectsParameters } from './components';
 const PAGE_SIZE = 100;
 
 export function grantPermissionToUser(data: {
-  projectKey?: string;
   login: string;
   permission: string;
+  projectKey?: string;
 }) {
   return post('/api/permissions/add_user', data).catch(throwGlobalError);
 }
 
 export function revokePermissionFromUser(data: {
-  projectKey?: string;
   login: string;
   permission: string;
+  projectKey?: string;
 }) {
   return post('/api/permissions/remove_user', data).catch(throwGlobalError);
 }
 
 export function grantPermissionToGroup(data: {
-  projectKey?: string;
   groupName: string;
   permission: string;
+  projectKey?: string;
 }) {
   return post('/api/permissions/add_group', data).catch(throwGlobalError);
 }
 
 export function revokePermissionFromGroup(data: {
-  projectKey?: string;
   groupName: string;
   permission: string;
+  projectKey?: string;
 }) {
   return post('/api/permissions/remove_group', data).catch(throwGlobalError);
 }
 
 interface GetPermissionTemplatesResponse {
+  defaultTemplates: Array<{ qualifier: string; templateId: string }>;
   permissionTemplates: PermissionTemplate[];
-  defaultTemplates: Array<{ templateId: string; qualifier: string }>;
   permissions: Array<Permission>;
 }
 
@@ -76,16 +76,16 @@ export function getPermissionTemplates(): Promise<GetPermissionTemplatesResponse
 }
 
 export function createPermissionTemplate(data: {
-  name: string;
   description?: string;
+  name: string;
   projectKeyPattern?: string;
 }): Promise<{ permissionTemplate: Omit<PermissionTemplate, 'defaultFor'> }> {
   return postJSON('/api/permissions/create_template', data);
 }
 
 export function updatePermissionTemplate(data: {
-  id: string;
   description?: string;
+  id: string;
   name?: string;
   projectKeyPattern?: string;
 }): Promise<void> {
@@ -112,17 +112,17 @@ export function bulkApplyTemplate(data: BaseSearchProjectsParameters): Promise<v
 }
 
 export function grantTemplatePermissionToUser(data: {
-  templateId: string;
   login: string;
   permission: string;
+  templateId: string;
 }): Promise<void> {
   return post('/api/permissions/add_user_to_template', data);
 }
 
 export function revokeTemplatePermissionFromUser(data: {
-  templateId: string;
   login: string;
   permission: string;
+  templateId: string;
 }): Promise<void> {
   return post('/api/permissions/remove_user_from_template', data);
 }
@@ -147,11 +147,11 @@ export function removeProjectCreatorFromTemplate(
 }
 
 export function getPermissionsUsersForComponent(data: {
-  projectKey: string;
-  q?: string;
-  permission?: string;
   p?: number;
+  permission?: string;
+  projectKey: string;
   ps?: number;
+  q?: string;
 }): Promise<{ paging: Paging; users: PermissionUser[] }> {
   if (!data.ps) {
     data.ps = PAGE_SIZE;
@@ -160,12 +160,12 @@ export function getPermissionsUsersForComponent(data: {
 }
 
 export function getPermissionsGroupsForComponent(data: {
-  projectKey: string;
-  q?: string;
-  permission?: string;
   p?: number;
+  permission?: string;
+  projectKey: string;
   ps?: number;
-}): Promise<{ paging: Paging; groups: PermissionGroup[] }> {
+  q?: string;
+}): Promise<{ groups: PermissionGroup[]; paging: Paging }> {
   if (!data.ps) {
     data.ps = PAGE_SIZE;
   }
@@ -173,10 +173,10 @@ export function getPermissionsGroupsForComponent(data: {
 }
 
 export function getGlobalPermissionsUsers(data: {
-  q?: string;
-  permission?: string;
   p?: number;
+  permission?: string;
   ps?: number;
+  q?: string;
 }): Promise<{ paging: Paging; users: PermissionUser[] }> {
   if (!data.ps) {
     data.ps = PAGE_SIZE;
@@ -185,11 +185,11 @@ export function getGlobalPermissionsUsers(data: {
 }
 
 export function getGlobalPermissionsGroups(data: {
-  q?: string;
-  permission?: string;
   p?: number;
+  permission?: string;
   ps?: number;
-}): Promise<{ paging: Paging; groups: PermissionGroup[] }> {
+  q?: string;
+}): Promise<{ groups: PermissionGroup[]; paging: Paging }> {
   if (!data.ps) {
     data.ps = PAGE_SIZE;
   }
@@ -197,11 +197,11 @@ export function getGlobalPermissionsGroups(data: {
 }
 
 export function getPermissionTemplateUsers(data: {
-  templateId: string;
-  q?: string;
-  permission?: string;
   p?: number;
+  permission?: string;
   ps?: number;
+  q?: string;
+  templateId: string;
 }): Promise<{ paging: Paging; users: PermissionUser[] }> {
   if (data.ps === undefined) {
     data.ps = PAGE_SIZE;
@@ -210,12 +210,12 @@ export function getPermissionTemplateUsers(data: {
 }
 
 export function getPermissionTemplateGroups(data: {
-  templateId: string;
-  q?: string;
-  permission?: string;
   p?: number;
+  permission?: string;
   ps?: number;
-}): Promise<{ paging: Paging; groups: PermissionGroup[] }> {
+  q?: string;
+  templateId: string;
+}): Promise<{ groups: PermissionGroup[]; paging: Paging }> {
   if (data.ps === undefined) {
     data.ps = PAGE_SIZE;
   }
index b86443c4729a56522ba94858ae2cd5d3b4260bfd..02caf215ae7f160976b2887a969f3054257e3d31 100644 (file)
@@ -74,12 +74,12 @@ export function deletePortfolio(portfolio: string): Promise<void | Response> {
 }
 
 export function createProject(data: {
-  name: string;
-  project: string;
   mainBranch: string;
-  visibility?: Visibility;
+  name: string;
   newCodeDefinitionType?: string;
   newCodeDefinitionValue?: string;
+  project: string;
+  visibility?: Visibility;
 }): Promise<{ project: ProjectBase }> {
   return postJSON('/api/projects/create', data).catch(throwGlobalError);
 }
index 2feb8ca042ba7c412701435f03983e3c1d1a572c..baf4c8ac5b2b64df0aef8a166d12dc1a693e1d45 100644 (file)
@@ -35,12 +35,12 @@ export enum ProjectActivityStatuses {
 }
 
 export type ProjectActivityParams = {
-  project?: string;
-  statuses?: string;
   category?: string;
   from?: string;
   p?: number;
+  project?: string;
   ps?: number;
+  statuses?: string;
 } & BranchParameters;
 
 export interface ProjectActivityResponse {
@@ -79,17 +79,17 @@ export function getAllTimeProjectActivity(
 
 export interface CreateEventResponse {
   analysis: string;
-  key: string;
-  name: string;
   category: ProjectAnalysisEventCategory | ApplicationAnalysisEventCategory;
   description?: string;
+  key: string;
+  name: string;
 }
 
 export function createEvent(data: {
   analysis: string;
-  name: string;
   category?: string;
   description?: string;
+  name: string;
 }): Promise<CreateEventResponse> {
   return postJSON('/api/project_analyses/create_event', data).then(
     (r) => r.event,
@@ -102,9 +102,9 @@ export function deleteEvent(event: string): Promise<void | Response> {
 }
 
 export function changeEvent(data: {
+  description?: string;
   event: string;
   name?: string;
-  description?: string;
 }): Promise<CreateEventResponse> {
   return postJSON('/api/project_analyses/update_event', data).then(
     (r) => r.event,
index e961ecb36399b2eba12a91811c5f2611e7d6ec26..a7bad22b443e4d58d582084e579fb8f10c891c1b 100644 (file)
@@ -58,7 +58,7 @@ export function renameQualityGate(data: {
   return post('/api/qualitygates/rename', data).catch(throwGlobalError);
 }
 
-export function copyQualityGate(data: { sourceName: string; name: string }): Promise<QualityGate> {
+export function copyQualityGate(data: { name: string; sourceName: string }): Promise<QualityGate> {
   return postJSON('/api/qualitygates/copy', data).catch(throwGlobalError);
 }
 
@@ -125,8 +125,8 @@ export function getApplicationQualityGate(data: {
 
 export function getQualityGateProjectStatus(
   data: {
-    projectKey?: string;
     projectId?: string;
+    projectKey?: string;
   } & BranchParameters,
 ): Promise<QualityGateProjectStatus> {
   return getJSON('/api/qualitygates/project_status', data)
index f3e0123c13d55e4bbacdc76fdd59b0690548cb51..4ec559294c493299e9d0ec8870ef6b171102221d 100644 (file)
@@ -40,21 +40,21 @@ export interface Actions {
 
 export interface Profile {
   actions?: ProfileActions;
+  activeDeprecatedRuleCount: number;
+  activeRuleCount: number;
+  isBuiltIn?: boolean;
+  isDefault?: boolean;
+  isInherited?: boolean;
   key: string;
-  name: string;
   language: string;
   languageName: string;
-  isInherited?: boolean;
+  lastUsed?: string;
+  name: string;
   parentKey?: string;
   parentName?: string;
-  isDefault?: boolean;
-  activeRuleCount: number;
-  activeDeprecatedRuleCount: number;
+  projectCount?: number;
   rulesUpdatedAt?: string;
-  lastUsed?: string;
   userUpdatedAt?: string;
-  isBuiltIn?: boolean;
-  projectCount?: number;
 }
 
 export interface SearchQualityProfilesParameters {
@@ -190,25 +190,25 @@ export function getProfileChangelog(
 }
 
 export interface RuleCompare {
-  key: string;
-  name: string;
   cleanCodeAttributeCategory?: CleanCodeAttributeCategory;
   impacts: SoftwareImpact[];
+  key: string;
   left?: { params: Dict<string>; severity: string };
+  name: string;
   right?: { params: Dict<string>; severity: string };
 }
 
 export interface CompareResponse {
-  left: { name: string };
-  right: { name: string };
   inLeft: Array<RuleCompare>;
   inRight: Array<RuleCompare>;
+  left: { name: string };
   modified: Array<
     RuleCompare & {
       left: { params: Dict<string>; severity: string };
       right: { params: Dict<string>; severity: string };
     }
   >;
+  right: { name: string };
 }
 
 export function compareProfiles(leftKey: string, rightKey: string): Promise<CompareResponse> {
@@ -233,14 +233,14 @@ export function dissociateProject({ language, name: qualityProfile }: Profile, p
 
 export interface SearchUsersGroupsParameters {
   language: string;
-  qualityProfile: string;
   q?: string;
+  qualityProfile: string;
   selected?: 'all' | 'selected' | 'deselected';
 }
 
 interface SearchUsersResponse {
-  users: UserSelected[];
   paging: Paging;
+  users: UserSelected[];
 }
 
 export function searchUsers(parameters: SearchUsersGroupsParameters): Promise<SearchUsersResponse> {
@@ -320,10 +320,10 @@ export function bulkDeactivateRules(data: BulkActivateParameters) {
 export interface ActivateRuleParameters {
   key: string;
   params?: Dict<string>;
+  prioritizedRule?: boolean;
   reset?: boolean;
   rule: string;
   severity?: string;
-  prioritizedRule?: boolean;
 }
 
 export function activateRule(data: ActivateRuleParameters) {
index 7339a43998efda65b440c4c0150d0f12c671d42a..8c88414b393aa57ea65db28984a0a93fc270a866 100644 (file)
@@ -35,14 +35,14 @@ import {
 const RULES_ENDPOINT = '/api/v2/clean-code-policy/rules';
 
 export interface CreateRuleData {
+  cleanCodeAttribute: CleanCodeAttribute;
+  impacts: SoftwareImpact[];
   key: string;
   markdownDescription: string;
   name: string;
   parameters?: Partial<RestRuleParameter>[];
   status?: string;
   templateKey: string;
-  cleanCodeAttribute: CleanCodeAttribute;
-  impacts: SoftwareImpact[];
 }
 
 export function getRulesApp(): Promise<GetRulesAppResponse> {
index 53aecff13e8d5f8e823a66fc6f873b69654c717d..41109bcf70c8d6744fcaad9b76483b976360d586 100644 (file)
@@ -39,13 +39,13 @@ export function getDefinitions(component?: string): Promise<ExtendedSettingDefin
 }
 
 export function getValue(
-  data: { key: string; component?: string } & BranchParameters,
+  data: { component?: string; key: string } & BranchParameters,
 ): Promise<SettingValue> {
   return getValues({ keys: [data.key], component: data.component }).then(([result]) => result);
 }
 
 export function getValues(
-  data: { keys: string[]; component?: string } & BranchParameters,
+  data: { component?: string; keys: string[] } & BranchParameters,
 ): Promise<SettingValue[]> {
   return getJSON('/api/settings/values', {
     keys: data.keys.join(','),
@@ -87,13 +87,13 @@ export function setSettingValue(
 }
 
 export function setSimpleSettingValue(
-  data: { component?: string; value?: string; values?: string[]; key: string } & BranchParameters,
+  data: { component?: string; key: string; value?: string; values?: string[] } & BranchParameters,
 ): Promise<void | Response> {
   return post('/api/settings/set', data).catch(throwGlobalError);
 }
 
 export function resetSettingValue(
-  data: { keys: string; component?: string } & BranchParameters,
+  data: { component?: string; keys: string } & BranchParameters,
 ): Promise<void> {
   return post('/api/settings/reset', data);
 }
index ba72977355be001ecbcbef340abe463b758d383c..6640209dc60b57d587ab40c2a0511e200deb7f6b 100644 (file)
@@ -34,15 +34,15 @@ export function getSystemInfo(): Promise<SysInfoCluster | SysInfoStandalone> {
   return getJSON('/api/system/info').catch(throwGlobalError);
 }
 
-export function getSystemStatus(): Promise<{ id: string; version: string; status: SysStatus }> {
+export function getSystemStatus(): Promise<{ id: string; status: SysStatus; version: string }> {
   return getJSON('/api/system/status');
 }
 
 export function getSystemUpgrades(): Promise<{
-  upgrades: SystemUpgrade[];
-  latestLTA?: string;
   installedVersionActive?: boolean;
+  latestLTA?: string;
   updateCenterRefresh?: string;
+  upgrades: SystemUpgrade[];
 }> {
   return getJSON('/api/system/upgrades');
 }
@@ -65,8 +65,8 @@ export function restart(): Promise<void | Response> {
 
 export function waitSystemUPStatus(): Promise<{
   id: string;
-  version: string;
   status: SysStatus;
+  version: string;
 }> {
   return requestTryAndRepeatUntil(
     getSystemStatus,
index d080224310ec471fdcd3846cb3ccecb9d033d3fd..7e40683a9f830156a33e73a736a6cd8a646e1d53 100644 (file)
@@ -25,8 +25,8 @@ import { Paging } from '../types/types';
 
 export interface TimeMachineResponse {
   measures: {
-    metric: MetricKey;
     history: Array<{ date: string; value?: string }>;
+    metric: MetricKey;
   }[];
   paging: Paging;
 }
@@ -47,8 +47,8 @@ export function getTimeMachineData(
 export function getAllTimeMachineData(
   data: {
     component?: string;
-    metrics: string;
     from?: string;
+    metrics: string;
     p?: number;
     to?: string;
   } & BranchParameters,
index c315abd9bf44a7f0715dbd6f45a109d622827bf0..d56ef0ac78c44dfa73edfab30aa6708d9408fbde 100644 (file)
@@ -28,15 +28,15 @@ export function getTokens(login: string): Promise<UserToken[]> {
 }
 
 export function generateToken(data: {
+  expirationDate?: string;
+  login?: string;
   name: string;
   projectKey?: string;
   type?: string;
-  login?: string;
-  expirationDate?: string;
 }): Promise<NewUserToken> {
   return postJSON('/api/user_tokens/generate', data).catch(throwGlobalError);
 }
 
-export function revokeToken(data: { name: string; login?: string }) {
+export function revokeToken(data: { login?: string; name: string }) {
   return post('/api/user_tokens/revoke', data).catch(throwGlobalError);
 }
index 543d9b13dc4122aba229f41a6b0e53b327b4b85a..a2c9de1dc166ab9eddd1c56b6912e9696d40ace7 100644 (file)
@@ -23,10 +23,10 @@ import { Group, Paging } from '../types/types';
 const GROUPS_ENDPOINT = '/api/v2/authorizations/groups';
 
 export function getUsersGroups(params: {
-  q?: string;
   managed?: boolean;
   pageIndex?: number;
   pageSize?: number;
+  q?: string;
 }): Promise<{ groups: Group[]; page: Paging }> {
   return axios.get(GROUPS_ENDPOINT, { params });
 }
@@ -38,8 +38,8 @@ export function createGroup(data: { description?: string; name: string }): Promi
 export function updateGroup(
   id: string,
   data: {
-    name?: string;
     description?: string;
+    name?: string;
   },
 ) {
   return axios.patch(`${GROUPS_ENDPOINT}/${id}`, data);
index 597fa6da3b8850021506ec486ade25b16c3e9442..02c631b1a722659199c2b23e3174e2596324edfa 100644 (file)
@@ -61,17 +61,17 @@ export function getIdentityProviders(): Promise<{ identityProviders: IdentityPro
 }
 
 export function getUsers<T extends RestUserBase>(data: {
-  q: string;
   active?: boolean;
+  groupId?: string;
+  'groupId!'?: string;
   managed?: boolean;
-  sonarQubeLastConnectionDateFrom?: string;
-  sonarQubeLastConnectionDateTo?: string;
+  pageIndex?: number;
+  pageSize?: number;
+  q: string;
   sonarLintLastConnectionDateFrom?: string;
   sonarLintLastConnectionDateTo?: string;
-  pageSize?: number;
-  pageIndex?: number;
-  groupId?: string;
-  'groupId!'?: string;
+  sonarQubeLastConnectionDateFrom?: string;
+  sonarQubeLastConnectionDateTo?: string;
 }) {
   return axios.get<{ page: Paging; users: T[] }>(USERS_ENDPOINT, {
     params: data,
@@ -95,7 +95,7 @@ export function updateUser(
   return axiosToCatch.patch<RestUserDetailed>(`${USERS_ENDPOINT}/${id}`, data);
 }
 
-export function deleteUser({ id, anonymize }: { id: string; anonymize?: boolean }) {
+export function deleteUser({ id, anonymize }: { anonymize?: boolean; id: string }) {
   return axios.delete(`${USERS_ENDPOINT}/${id}`, { params: { anonymize } });
 }
 
index 8d5741c7176809221a383d5e237a0079a552fdc0..9d485ca07a80e7a719d6beae97bad8931076e0a7 100644 (file)
@@ -39,9 +39,9 @@ export interface AdminContainerProps {
 }
 
 interface State {
+  adminPages: Extension[];
   pendingPlugins: PendingPluginResult;
   systemStatus: SysStatus;
-  adminPages: Extension[];
 }
 
 export class AdminContainer extends React.PureComponent<AdminContainerProps, State> {
index b17ba85ae09c229774c884617d6f160834ea4166..943ed99f6312471f96ad0e5f31d8c04aab41a155 100644 (file)
@@ -22,8 +22,8 @@ import { PendingPluginResult } from '../../types/plugins';
 import { SysStatus } from '../../types/types';
 
 export interface AdminContextInterface {
-  fetchSystemStatus: () => void;
   fetchPendingPlugins: () => void;
+  fetchSystemStatus: () => void;
   pendingPlugins: PendingPluginResult;
   systemStatus: SysStatus;
 }
index 94a20c98e3c0200f3b25453dbacb619f74506592..c7afecb7018dd819651224c78bd8d940d535cfcf 100644 (file)
@@ -28,8 +28,8 @@ import { AppState } from '../../types/appstate';
 import withAppStateContext from './app-state/withAppStateContext';
 
 interface Props {
-  location: Location;
   appState: AppState;
+  location: Location;
 }
 
 interface State {
index e3cf0a039ae4047dbad158f686f6c7b4ccd8b432..b01e67f8e8e91cc15cfcd19a92e3e3c632356a12 100644 (file)
@@ -23,9 +23,9 @@ const RECENT_HISTORY = 'sonar_recent_history';
 const HISTORY_LIMIT = 10;
 
 export type History = Array<{
+  icon: string;
   key: string;
   name: string;
-  icon: string;
 }>;
 
 export default class RecentHistory {
index 192f4708c815b771fb473d45bb7fd613b982ccfa..ac2f66081bf8e94e2a821fa66026c6fbda360b99 100644 (file)
@@ -31,8 +31,8 @@ import withAppStateContext from './app-state/withAppStateContext';
 import withCurrentUserContext from './current-user/withCurrentUserContext';
 
 interface Props {
-  currentUser: CurrentUser;
   appState: AppState;
+  currentUser: CurrentUser;
 }
 
 interface State {
index 412f325edd51354fc6f36773bb7714f093d30d17..bc7a4705069de5e8161e15a8585fca58a304bd6d 100644 (file)
@@ -40,8 +40,8 @@ interface State {
   description: string;
   key: string;
   name: string;
-  visibility: Visibility;
   submitting: boolean;
+  visibility: Visibility;
 }
 
 export default class CreateApplicationForm extends React.PureComponent<Props, State> {
index cb7020b517419926bd2eccbfe6bfc6ff8aed2aa7..62bf4d1a0b4277cb4624257ea3f25f25ce430fb6 100644 (file)
@@ -24,11 +24,11 @@ import GlobalSearchShowMore from './GlobalSearchShowMore';
 import { ComponentResult, More, Results, sortQualifiers } from './utils';
 
 export interface Props {
-  query: string;
   loadingMore?: string;
   more: More;
   onMoreClick: (qualifier: string) => void;
   onSelect: (componentKey: string) => void;
+  query: string;
   renderNoResults: () => React.ReactElement;
   renderResult: (component: ComponentResult) => React.ReactNode;
   results: Results;
index 2d5863072fb0269ff9d5ff2e8c639704376023cd..bc8bd1e1bdea797bc24edc6775cb4cfa3da55c27 100644 (file)
@@ -104,9 +104,9 @@ export function Menu(props: Readonly<Props>) {
     pathname,
     additionalQueryParams = {},
   }: {
+    additionalQueryParams?: Dict<string>;
     label: string;
     pathname: string;
-    additionalQueryParams?: Dict<string>;
   }) => {
     const query = getQuery();
     if (isApplicationChildInaccessble) {
index 6d6f4aa61d5a01b7bef45da30a79ffbfebcce291..ca84fc527dec14f867d243ec91ddf0e7543cfca5 100644 (file)
@@ -31,11 +31,11 @@ import { AlmKeys } from '../../../../../types/alm-settings';
 import { Component } from '../../../../../types/types';
 
 interface Props {
+  branchSupportEnabled: boolean;
+  canAdminComponent?: boolean;
   component: Component;
-  isApplication: boolean;
   hasManyBranches: boolean;
-  canAdminComponent?: boolean;
-  branchSupportEnabled: boolean;
+  isApplication: boolean;
 }
 
 export default function BranchHelpTooltip({
index 9a9a9624b6374f3bf0f15d126b879020c074c39d..c822b99a1cc1c67362bc9ebefce634da9c63fbe9 100644 (file)
@@ -29,9 +29,9 @@ import QualityGateStatus from './QualityGateStatus';
 
 export interface MenuItemProps {
   branchLike: BranchLike;
+  indent: boolean;
   onSelect: (branchLike: BranchLike) => void;
   selected: boolean;
-  indent: boolean;
   setSelectedNode?: (node: HTMLLIElement) => void;
 }
 
index c2bb7f92ba62c8ae5550ce682dbd95cbabd5d953..189e7769c1d71405815832c64927ef92c0433ee1 100644 (file)
@@ -52,8 +52,8 @@ export default function PRLink({
   currentBranchLike,
   component,
 }: Readonly<{
-  currentBranchLike: BranchLike;
   component: Component;
+  currentBranchLike: BranchLike;
 }>) {
   if (!isPullRequest(currentBranchLike)) {
     return null;
index 88e849dfa6748ce699928cc9a521c00c7c983952..8c8c98972317927967c7e721db154fbe4a8e9351 100644 (file)
@@ -24,8 +24,8 @@ import { MyProject } from '../../../types/types';
 import ProjectCard from './ProjectCard';
 
 interface Props {
-  loading: boolean;
   loadMore: () => void;
+  loading: boolean;
   projects: MyProject[];
   total?: number;
 }
index 1ba1ff7fe1c7a43b70f1fc9a637641ff025b2116..9c5db272fc335a1a009c783e4cb8d9269b353b3b 100644 (file)
@@ -40,8 +40,8 @@ import DownloadButton from './DownloadButton';
 export interface AuditAppRendererProps {
   dateRange?: { from?: Date; to?: Date };
   downloadStarted: boolean;
-  handleOptionSelection: (option: RangeOption) => void;
   handleDateSelection: (dateRange: { from?: Date; to?: Date }) => void;
+  handleOptionSelection: (option: RangeOption) => void;
   handleStartDownload: () => void;
   housekeepingPolicy: HousekeepingPolicy;
   selection: RangeOption;
index 88f24970bff7ec561864d8bf020f6abc85403413..aead4d9dd33b611518d76b4f88f33b9f586cd008 100644 (file)
@@ -34,8 +34,8 @@ interface Props {
 }
 
 interface State {
-  loading: boolean;
   dismissedWarning?: string;
+  loading: boolean;
   warnings: TaskWarning[];
 }
 
index 03500e370fb2c00c32a67e80eed01c155e35ae85..929797daa7b0e4fae9420aec86c7ba39b1e4fdd5 100644 (file)
@@ -23,8 +23,8 @@ import { translate } from '../../../helpers/l10n';
 import { CURRENTS } from '../constants';
 
 interface CurrentsFilterProps {
-  value?: string;
   onChange: (value: string) => void;
+  value?: string;
 }
 
 export default function CurrentsFilter(props: Readonly<CurrentsFilterProps>) {
index 3da2cf77431e1682a22ae3eb8c536967b859409a..724cd058613eb333022199b78cf70634a4ab14e1 100644 (file)
@@ -31,13 +31,13 @@ interface Props {
   component?: unknown;
   currents: string;
   loading: boolean;
+  maxExecutedAt: Date | undefined;
+  minSubmittedAt: Date | undefined;
   onFilterUpdate: (changes: Partial<Query>) => void;
   onReload: () => void;
   query: string;
   status: string;
   taskType: string;
-  maxExecutedAt: Date | undefined;
-  minSubmittedAt: Date | undefined;
   types: string[];
 }
 
index 22fb8307f43319663cfcdd9feb1eba87fd3dc4e5..80acd0afc2ee52435f802437ddd9bf3e92c68098 100644 (file)
@@ -24,9 +24,9 @@ import { TaskStatuses } from '../../../types/tasks';
 import { STATUSES } from '../constants';
 
 interface StatusFilterProps {
-  value?: string;
   id: string;
   onChange: (value?: string) => void;
+  value?: string;
 }
 
 export default function StatusFilter(props: Readonly<StatusFilterProps>) {
index 4a2259e2ea6242350c0838ce039b11d970af7755..c0440ac55c5a2c3468dfc979ae8135efa0405ca3 100644 (file)
@@ -25,8 +25,8 @@ import TimeFormatter from '../../../components/intl/TimeFormatter';
 import { isValidDate, parseDate } from '../../../helpers/dates';
 
 interface Props {
-  date?: string;
   baseDate?: string;
+  date?: string;
 }
 
 export default function TaskDate({ date, baseDate }: Readonly<Props>) {
index 614523ac92e0d1664164a61d8b20f6a5c4165e6c..274803fa07eaa2bae0f3ce1d1b2b54d90b5b5205 100644 (file)
@@ -27,10 +27,10 @@ import { Task as ITask } from '../../../types/tasks';
 import Task from './Task';
 
 interface Props {
-  tasks: ITask[];
   component?: unknown;
   onCancelTask: (task: ITask) => Promise<void>;
   onFilterTask: (task: ITask) => void;
+  tasks: ITask[];
 }
 
 const COLUMN_WIDTHS = [0, 'auto', 'auto', 0, 0, 0, 0];
index 9a7a620c706dd71a151ddfa149061581e0fcc511..d7b66d133df7f49802fe1d0eb6ed153ec8fed04d 100644 (file)
@@ -23,10 +23,10 @@ import { translate } from '../../../helpers/l10n';
 import { ALL_TYPES } from '../constants';
 
 interface Props {
-  value: string;
   id: string;
   onChange: Function;
   types: string[];
+  value: string;
 }
 
 export default class TypesFilter extends React.PureComponent<Props> {
index 708fd0eb11bb04b9db0cc2cc9afaa23551951ef5..84226852821240663d8d2759845645bc1cbd1ded 100644 (file)
@@ -32,9 +32,9 @@ interface Props {
 }
 
 interface State {
-  passwordValue: string;
-  confirmPasswordValue: string;
   canSubmit?: boolean;
+  confirmPasswordValue: string;
+  passwordValue: string;
   submitting: boolean;
   success: boolean;
 }
index 9072e7221c7d6338c248c9c0a37710458b6dc117..c85649dca926b9cf06324fb27ef832dbde46b742 100644 (file)
@@ -50,20 +50,11 @@ import Search from './Search';
 import SourceViewerWrapper from './SourceViewerWrapper';
 
 interface Props {
-  branchLike?: BranchLike;
-  component: Component;
-  location: Location;
-  metrics: Dict<Metric>;
   baseComponent?: ComponentMeasure;
+  branchLike?: BranchLike;
   breadcrumbs: Breadcrumb[];
+  component: Component;
   components?: ComponentMeasure[];
-  highlighted?: ComponentMeasure;
-  loading: boolean;
-  searchResults?: ComponentMeasure[];
-  sourceViewer?: ComponentMeasure;
-  total: number;
-  newCodeSelected: boolean;
-
   handleGoToParent: () => void;
   handleHighlight: (highlighted: ComponentMeasure) => void;
   handleLoadMore: () => void;
@@ -71,6 +62,15 @@ interface Props {
   handleSearchResults: (searchResults: ComponentMeasure[]) => void;
   handleSelect: (component: ComponentMeasure) => void;
   handleSelectNewCode: (newCodeSelected: boolean) => void;
+  highlighted?: ComponentMeasure;
+
+  loading: boolean;
+  location: Location;
+  metrics: Dict<Metric>;
+  newCodeSelected: boolean;
+  searchResults?: ComponentMeasure[];
+  sourceViewer?: ComponentMeasure;
+  total: number;
 }
 
 export default function CodeAppRenderer(props: Readonly<Props>) {
index daecf2363c143809487c4b4fec14f727e0756c4d..30a28ac8c4b73213609a9dc8970c4fe8cc396d93 100644 (file)
@@ -35,10 +35,10 @@ interface Props {
   component: TypeComponentMeasure;
   isBaseComponent?: boolean;
   metrics: Metric[];
+  newCodeSelected?: boolean;
   previous?: TypeComponentMeasure;
   rootComponent: TypeComponentMeasure;
   selected?: boolean;
-  newCodeSelected?: boolean;
   showAnalysisDate?: boolean;
 }
 
index 0cd65d47c8a5995dadaec6bd8fa69c2c9c6b87bb..8940adf525de7ac9855eaaf277da49a7d3dbe19d 100644 (file)
@@ -35,9 +35,9 @@ interface ComponentsProps {
   branchLike?: BranchLike;
   components: ComponentMeasure[];
   metrics: Metric[];
+  newCodeSelected?: boolean;
   rootComponent: ComponentMeasure;
   selected?: ComponentMeasure;
-  newCodeSelected?: boolean;
   showAnalysisDate?: boolean;
 }
 
index f1be0f903e6bc1c67966b1d10da778557b177c39..da5d834add2670ae446267b07969e10a8dc07f84 100644 (file)
@@ -39,15 +39,15 @@ interface Props {
   component: ComponentMeasure;
   location: Location;
   newCodeSelected: boolean;
-  onSearchClear: () => void;
   onNewCodeToggle: (newCode: boolean) => void;
+  onSearchClear: () => void;
   onSearchResults: (results?: ComponentMeasure[]) => void;
   router: Router;
 }
 
 interface State {
-  query: string;
   loading: boolean;
+  query: string;
 }
 
 class Search extends React.PureComponent<Props, State> {
index b1a674d1442283da4802280e5857eed827bd3379..01291c91d3a40b6bbeb7b80cc0175c2f42d44a9d 100644 (file)
@@ -28,13 +28,13 @@ import ActivationButton from './ActivationButton';
 
 interface Props {
   activation: RuleActivation;
+  canDeactivateInherited?: boolean;
+  handleDeactivate: (key?: string) => void;
+  handleRevert: (key?: string) => void;
+  onActivate: (severity: string, prioritizedRule: boolean) => Promise<void> | void;
   profile: Profile;
   ruleDetails: Rule;
-  onActivate: (severity: string, prioritizedRule: boolean) => Promise<void> | void;
-  handleRevert: (key?: string) => void;
-  handleDeactivate: (key?: string) => void;
   showDeactivated?: boolean;
-  canDeactivateInherited?: boolean;
 }
 
 export default function ActivatedRuleActions(props: Readonly<Props>) {
index 8dbb73292f00a0e29a063c1e8198abedf6a8a1c1..995cb49fd19700fedc6cf1c078b3fe35ff9c0c05 100644 (file)
@@ -25,13 +25,13 @@ import ActivationFormModal from './ActivationFormModal';
 
 interface Props {
   activation?: RuleActivation;
+  ariaLabel?: string;
   buttonText: string;
   className?: string;
   modalHeader: string;
   onDone?: (severity: string, prioritizedRule: boolean) => Promise<void> | void;
   profiles: BaseProfile[];
   rule: Rule | RuleDetails;
-  ariaLabel?: string;
 }
 
 export default function ActivationButton(props: Props) {
index 2ed87f2e2cb30a63756d347e1b10442b2faf2a87..9aeee494b4f640fbd6149c222e7ab042cb11c9f4 100644 (file)
@@ -89,8 +89,8 @@ interface Props {
 
 interface State {
   actives?: Actives;
-  canWrite?: boolean;
   canDeactivateInherited?: boolean;
+  canWrite?: boolean;
   facets?: Facets;
   loading: boolean;
   openFacets: OpenFacets;
index 70362092dddc667204166035e532910002fd6af6..94e0d1f44475a99a6c784004118a87cfbaafc4b1 100644 (file)
@@ -44,9 +44,9 @@ import {
 } from '../../../types/clean-code-taxonomy';
 
 interface Props<T> {
-  value: T;
-  onChange: (value: T) => void;
   disabled?: boolean;
+  onChange: (value: T) => void;
+  value: T;
 }
 
 export function CleanCodeCategoryField(props: Readonly<Props<CleanCodeAttributeCategory>>) {
index eb4d06aba2ffff80ad0a991bbc930cafcc0adc1a..2f594df563fe6934f82f7bcc7b780c7f7ab95db8 100644 (file)
@@ -31,12 +31,12 @@ import { MultipleSelectionHint } from '../../issues/sidebar/MultipleSelectionHin
 import { FacetKey } from '../query';
 
 export interface BasicProps {
+  help?: React.ReactNode;
   onChange: (changes: Dict<string | string[] | undefined>) => void;
   onToggle: (facet: FacetKey) => void;
   open: boolean;
   stats?: Dict<number>;
   values: string[];
-  help?: React.ReactNode;
 }
 
 interface Props extends BasicProps {
index 24cfa5bf962e81849e0db29813513b3def5a043f..66f1cc3b697cecf76281b4eaad28413e8469fc4a 100644 (file)
@@ -22,8 +22,8 @@ import { translate } from '../../../helpers/l10n';
 import Facet, { BasicProps } from './Facet';
 
 interface Props extends Omit<BasicProps, 'onChange' | 'values'> {
-  onChange: (changes: { prioritizedRule: boolean | undefined }) => void;
   disabled: boolean;
+  onChange: (changes: { prioritizedRule: boolean | undefined }) => void;
   value: boolean | undefined;
 }
 
index 49d11f4e5e1894123f1cb3ccff9f1573bc843b32..14d5c97f44549516676ecbcc93c0552b0516c801 100644 (file)
@@ -30,8 +30,8 @@ import { translate } from '../../../helpers/l10n';
 
 interface Props {
   inputId?: string;
-  profiles: Profile[];
   onChange: (selected: Profile[]) => void;
+  profiles: Profile[];
   selectedProfiles: Profile[];
 }
 
index 09e0dda08ff306f9ef633569d53e98aafd9a4078..9d1f4f5c5b538661b851dea78f9eddf8c603f7b1 100644 (file)
@@ -49,8 +49,8 @@ import RuleDetailsProfiles from './RuleDetailsProfiles';
 
 interface Props {
   allowCustomRules?: boolean;
-  canWrite?: boolean;
   canDeactivateInherited?: boolean;
+  canWrite?: boolean;
   onActivate: (profile: string, rule: string, activation: RuleActivation) => void;
   onDeactivate: (profile: string, rule: string) => void;
   onDelete: (rule: string) => void;
index 0717e51856986136679249cc18a306de049c5128..86d454ba10e3b530853f10af73524b1b15f981be 100644 (file)
@@ -103,9 +103,9 @@ export default function RuleDetailsCustomRules(props: Readonly<Props>) {
 
 function RuleListItem(
   props: Readonly<{
-    rule: Rule;
     editable?: boolean;
     onDelete: (ruleKey: string) => void;
+    rule: Rule;
   }>,
 ) {
   const { rule, editable } = props;
index f89b77de11be4c7482a8f2cedd2770c9f4a2680c..f4a47bcbe329196b1889f328a964f04e1eaf741d 100644 (file)
@@ -28,8 +28,8 @@ import { Dict, RuleDetails } from '../../../types/types';
 const EXTERNAL_RULE_REPO_PREFIX = 'external_';
 
 interface Props {
-  ruleDetails: RuleDetails;
   referencedRepositories: Dict<{ key: string; language: string; name: string }>;
+  ruleDetails: RuleDetails;
 }
 
 export default function RuleDetailsHeaderMeta(props: Readonly<Props>) {
index cba1acf03d3e753a1eb0dcb419a30b1374c82419..69a76df022b2cf3523cf0f4d11fd8670243ee67e 100644 (file)
@@ -55,8 +55,8 @@ export default function RuleDetailsHeaderSide({ ruleDetails }: Readonly<Props>)
 
 interface RuleHeaderMetaItemProps {
   children: React.ReactNode;
-  title: string;
   className?: string;
+  title: string;
 }
 
 function RuleHeaderInfo({ children, title, ...props }: Readonly<RuleHeaderMetaItemProps>) {
index 25b65e20a73d6671126bed23b7295a3c6815a760..56df3875bba659a2b43adda99999fa246a59ee55 100644 (file)
@@ -51,14 +51,14 @@ import ActivationButton from './ActivationButton';
 
 interface Props {
   activation?: RuleActivation;
-  isLoggedIn: boolean;
   canDeactivateInherited?: boolean;
+  isLoggedIn: boolean;
   onActivate: (profile: string, rule: string, activation: RuleActivation) => void;
   onDeactivate: (profile: string, rule: string) => void;
   onOpen: (ruleKey: string) => void;
   rule: Rule;
-  selected: boolean;
   selectRule: (key: string) => void;
+  selected: boolean;
   selectedProfile?: Profile;
 }
 
index 5b39ade456418790fc1887b74973de807eaf7a40..f6bd9792ed54a2d08d759cd795182d6d72e99888 100644 (file)
@@ -27,8 +27,8 @@ import { IssueSeverity } from '../../../types/issues';
 
 export interface SeveritySelectProps {
   isDisabled: boolean;
-  severity: string;
   onChange: (value: LabelValueSelectOption<IssueSeverity>) => void;
+  severity: string;
 }
 
 function Option(props: Readonly<OptionProps<LabelValueSelectOption<IssueSeverity>, false>>) {
index 181d59f2d75a864df8da2f719c2db06a22cf2253..db6f4b9925f624383832667a795e091ea3b37b25 100644 (file)
@@ -50,6 +50,7 @@ export interface Query {
   languages: string[];
   owaspTop10: string[];
   'owaspTop10-2021': string[];
+  prioritizedRule: boolean | undefined;
   profile: string | undefined;
   repositories: string[];
   ruleKey: string | undefined;
@@ -60,7 +61,6 @@ export interface Query {
   tags: string[];
   template: boolean | undefined;
   types: string[];
-  prioritizedRule: boolean | undefined;
 }
 
 export type FacetKey = keyof Query;
index dfacec9bd777b39780960c74190663daef7fa40a..1e9cc72ab396990e004306b252486f3155f17f8d 100644 (file)
@@ -27,12 +27,12 @@ export enum RuleDescriptionSections {
 }
 
 export interface RuleDescriptionContext {
-  key: string;
   displayName: string;
+  key: string;
 }
 
 export interface RuleDescriptionSection {
-  key: RuleDescriptionSections;
   content: string;
   context?: RuleDescriptionContext;
+  key: RuleDescriptionSections;
 }
index 13ec54ab50456012fb740cc9134c3a71ebeb98de..e9b232a4268b08e5632f1888792d67a00704210e 100644 (file)
@@ -58,14 +58,14 @@ import MeasureViewSelect from './MeasureViewSelect';
 import MeasuresBreadcrumbs from './MeasuresBreadcrumbs';
 
 interface Props {
+  asc?: boolean;
   branchLike?: BranchLike;
   leakPeriod?: Period;
-  requestedMetric: Pick<Metric, 'key' | 'direction'>;
   metrics: Dict<Metric>;
+  requestedMetric: Pick<Metric, 'key' | 'direction'>;
   rootComponent: ComponentMeasure;
   router: Router;
   selected?: string;
-  asc?: boolean;
   updateQuery: (query: Partial<Query>) => void;
   view: MeasurePageView;
 }
index b5f574c887470c74448cbf02cda03c23626681ff..9370dbc13cde6e5c8b71c5fbff1e6528941f9a0a 100644 (file)
@@ -26,8 +26,8 @@ import { hasList, hasTree, hasTreemap } from '../utils';
 
 export interface MeasureViewSelectProps {
   className?: string;
-  metric: Metric;
   handleViewChange: (view: MeasurePageView) => void;
+  metric: Metric;
   view: MeasurePageView;
 }
 
index 1f0eeb1771ae529118ef1ba72eb03841b92ab832..f660bda32dbeeb99780c47c103f1c04614575e68 100644 (file)
@@ -21,10 +21,10 @@ import { MetricKey } from '~sonar-aligned/types/metrics';
 
 export const bubbles: {
   [domain: string]: {
+    colors?: string[];
+    size: string;
     x: string;
     y: string;
-    size: string;
-    colors?: string[];
     yDomain?: [number, number];
   };
 } = {
index a635695ddb7e6277aaed63766de2b1dbff489ee2..aac6a045d291ff66589e0b9c01233f83b85ae443 100644 (file)
@@ -61,9 +61,9 @@ import EmptyResult from './EmptyResult';
 const HEIGHT = 500;
 
 interface Props {
+  branchLike?: BranchLike;
   component: ComponentMeasureI;
   components: ComponentMeasureEnhanced[];
-  branchLike?: BranchLike;
   domain: string;
   metrics: Dict<Metric>;
   paging?: Paging;
@@ -89,8 +89,8 @@ export default class BubbleChartView extends React.PureComponent<Props, State> {
 
   getTooltip(
     component: ComponentMeasureEnhanced,
-    values: { x: number; y: number; size: number; colors?: Array<number | undefined> },
-    metrics: { x: Metric; y: Metric; size: Metric; colors?: Metric[] },
+    values: { colors?: Array<number | undefined>; size: number; x: number; y: number },
+    metrics: { colors?: Metric[]; size: Metric; x: Metric; y: Metric },
   ) {
     const inner = [
       [component.name, isProject(component.qualifier) ? component.branch : undefined]
@@ -139,7 +139,7 @@ export default class BubbleChartView extends React.PureComponent<Props, State> {
     return translatedDescription;
   }
 
-  renderBubbleChart(metrics: { x: Metric; y: Metric; size: Metric; colors?: Metric[] }) {
+  renderBubbleChart(metrics: { colors?: Metric[]; size: Metric; x: Metric; y: Metric }) {
     const { ratingFilters } = this.state;
 
     const items = this.props.components
index 227d382a3a1bcd857dd88e624435da53be4d8eb8..5100108363c60d3d6637b24b0892b63ecffe9999 100644 (file)
@@ -43,8 +43,8 @@ interface Props {
   components: ComponentMeasureEnhanced[];
   defaultShowBestMeasures: boolean;
   fetchMore: () => void;
-  handleSelect: (component: ComponentMeasureEnhanced) => void;
   handleOpen: (component: ComponentMeasureEnhanced) => void;
+  handleSelect: (component: ComponentMeasureEnhanced) => void;
   loadingMore: boolean;
   metric: Metric;
   metrics: Dict<Metric>;
index 273697319028e451af58a30cd812b21f552bf760..3f5a422ebfa0feddd7ebd12d7ba15b60e7a0f4bc 100644 (file)
@@ -224,7 +224,7 @@ export const groupByDomains = memoize((measures: MeasureEnhanced[]) => {
   }));
 
   return sortBy(domains, [
-    (domain: { name: string; measures: MeasureEnhanced[] }) => {
+    (domain: { measures: MeasureEnhanced[]; name: string }) => {
       const idx = KNOWN_DOMAINS.indexOf(domain.name);
       return idx >= 0 ? idx : KNOWN_DOMAINS.length;
     },
@@ -300,10 +300,10 @@ function parseView(metric: MetricKey, rawView?: string): MeasurePageView {
 }
 
 export interface Query {
+  asc?: boolean;
   metric: string;
   selected?: string;
   view: MeasurePageView;
-  asc?: boolean;
 }
 
 export const parseQuery = memoize((urlQuery: RawQuery): Query => {
index a9e425508392517b3470e291c0d578b621429094..c1cd6b2f34fb2ec868f3522c1a117edfceeaf864 100644 (file)
@@ -30,8 +30,8 @@ import { CreateProjectModes } from '../types';
 
 export interface AzureProjectAccordionProps {
   loading: boolean;
-  onOpen: (key: string) => void;
   onImportRepository: (repository: AzureRepository) => void;
+  onOpen: (key: string) => void;
   project: AzureProject;
   repositories?: AzureRepository[];
   searchQuery?: string;
index 7db5f88a75a66ef519c19bb31e64ee7895f9d2ce..4113350fa636d8a463c2792e00d1ffed45068d08 100644 (file)
@@ -44,22 +44,22 @@ import AzurePersonalAccessTokenForm from './AzurePersonalAccessTokenForm';
 import AzureProjectsList from './AzureProjectsList';
 
 export interface AzureProjectCreateRendererProps {
+  almInstances?: AlmSettingsInstance[];
   loading: boolean;
   loadingRepositories: Dict<boolean>;
   onImportRepository: (resository: AzureRepository) => void;
   onOpenProject: (key: string) => void;
   onPersonalAccessTokenCreate: () => void;
   onSearch: (query: string) => void;
+  onSelectedAlmInstanceChange: (instance: AlmSettingsInstance) => void;
   projects?: AzureProject[];
   repositories?: Dict<AzureRepository[]>;
-  searching?: boolean;
-  searchResults?: AzureRepository[];
+  resetPat: boolean;
   searchQuery?: string;
-  almInstances?: AlmSettingsInstance[];
+  searchResults?: AzureRepository[];
+  searching?: boolean;
   selectedAlmInstance?: AlmSettingsInstance;
   showPersonalAccessTokenForm?: boolean;
-  resetPat: boolean;
-  onSelectedAlmInstanceChange: (instance: AlmSettingsInstance) => void;
 }
 
 export default function AzureProjectCreateRenderer(
index 5cd8189660c7370dfb42aa74b95a723f7c49e609..f45f62f37ccbf39d2276728979f368de95458b35 100644 (file)
@@ -31,12 +31,12 @@ import AzureProjectAccordion from './AzureProjectAccordion';
 
 export interface AzureProjectsListProps {
   loadingRepositories: Dict<boolean>;
-  onOpenProject: (key: string) => void;
   onImportRepository: (repository: AzureRepository) => void;
+  onOpenProject: (key: string) => void;
   projects?: AzureProject[];
   repositories?: Dict<AzureRepository[]>;
-  searchResults?: AzureRepository[];
   searchQuery?: string;
+  searchResults?: AzureRepository[];
 }
 
 const PAGE_SIZE = 10;
index 194fdc6ca8b362ce6616bfda40bba5f44f6bc939..2d4c2d071d9c5b33d422007512dc92d8f8c2f166 100644 (file)
@@ -34,8 +34,8 @@ import { usePersonalAccessToken } from '../usePersonalAccessToken';
 
 interface Props {
   almSetting: AlmInstanceBase;
-  resetPat: boolean;
   onPersonalAccessTokenCreated: () => void;
+  resetPat: boolean;
 }
 
 export default function BitbucketCloudPersonalAccessTokenForm({
index eecb3055a362db694ecde9fa54f5bfaba5a02acc..4c238b03e483ed68fe661f8008012bad90d6b7b5 100644 (file)
@@ -45,8 +45,8 @@ export interface BitbucketCloudProjectCreateRendererProps {
   onSelectedAlmInstanceChange: (instance: AlmSettingsInstance) => void;
   repositories?: BitbucketCloudRepository[];
   resetPat: boolean;
-  searching: boolean;
   searchQuery: string;
+  searching: boolean;
   selectedAlmInstance?: AlmSettingsInstance;
   showPersonalAccessTokenForm: boolean;
 }
index 335c38a3807cc265d59b7bab7ec3cb712206b8db..f7159a41b88f0b5ff72973025b377f06277e849e 100644 (file)
@@ -36,8 +36,8 @@ export interface BitbucketCloudSearchFormProps {
   onLoadMore: () => void;
   onSearch: (searchQuery: string) => void;
   repositories?: BitbucketCloudRepository[];
-  searching: boolean;
   searchQuery: string;
+  searching: boolean;
 }
 
 function getRepositoryUrl(workspace: string, slug: string) {
index dbc28d6e7eef50d574de2c07557a3fe7707eb2b0..7f30dbe9db7da6344a91a7fcb4244c8bbb12e7cd 100644 (file)
@@ -29,12 +29,12 @@ import BitbucketRepositories from './BitbucketRepositories';
 import BitbucketSearchResults from './BitbucketSearchResults';
 
 export interface BitbucketImportRepositoryFormProps {
-  onSearch: (query: string) => void;
   onImportRepository: (repo: BitbucketRepository) => void;
-  projects?: BitbucketProject[];
+  onSearch: (query: string) => void;
   projectRepositories?: Dict<BitbucketRepository[]>;
-  searching: boolean;
+  projects?: BitbucketProject[];
   searchResults?: BitbucketRepository[];
+  searching: boolean;
 }
 
 export default function BitbucketImportRepositoryForm(props: BitbucketImportRepositoryFormProps) {
index d44187b2e24251f20b98159c667c653824fbecc4..9c4eb92bbbaa79ec3ce366c7045a44067427c77e 100644 (file)
@@ -38,14 +38,14 @@ export interface BitbucketProjectCreateRendererProps {
   almInstances: AlmSettingsInstance[];
   isLoading: boolean;
   onImportRepository: (repository: BitbucketRepository) => void;
-  onSearch: (query: string) => void;
   onPersonalAccessTokenCreated: () => void;
+  onSearch: (query: string) => void;
   onSelectedAlmInstanceChange: (instance: AlmSettingsInstance) => void;
-  projects?: BitbucketProject[];
   projectRepositories?: Dict<BitbucketRepository[]>;
+  projects?: BitbucketProject[];
   resetPat: boolean;
-  searching: boolean;
   searchResults?: BitbucketRepository[];
+  searching: boolean;
   selectedAlmInstance?: AlmSettingsInstance;
   showPersonalAccessTokenForm?: boolean;
 }
index 003e52d1329e3372421310e4db726bbeb9d8fb16..53d9b214654fbd849a7032178fb8d5561cd509d7 100644 (file)
@@ -26,8 +26,8 @@ import BitbucketProjectAccordion from './BitbucketProjectAccordion';
 
 export interface BitbucketRepositoriesProps {
   onImportRepository: (repo: BitbucketRepository) => void;
-  projects: BitbucketProject[];
   projectRepositories: Dict<BitbucketRepository[]>;
+  projects: BitbucketProject[];
 }
 
 export default function BitbucketRepositories(props: BitbucketRepositoriesProps) {
index 0e29ce7ee5decbaaf6e2eeb9ad6cbc985986e75c..278e1b453d8d19a9781ff864a265127ee05df63e 100644 (file)
@@ -26,8 +26,8 @@ import BitbucketProjectAccordion from './BitbucketProjectAccordion';
 export interface BitbucketSearchResultsProps {
   onImportRepository: (repo: BitbucketRepository) => void;
   projects: BitbucketProject[];
-  searching: boolean;
   searchResults?: BitbucketRepository[];
+  searching: boolean;
 }
 
 export default function BitbucketSearchResults(props: BitbucketSearchResultsProps) {
index 52bc78098811e57ac0655839eb8cb4201c5669bf..43dd9588214d1d00b8aa2ea4797c73f6f8432c1d 100644 (file)
@@ -35,8 +35,8 @@ import { usePersonalAccessToken } from '../usePersonalAccessToken';
 
 interface Props {
   almSetting: AlmInstanceBase;
-  resetPat: boolean;
   onPersonalAccessTokenCreated: () => void;
+  resetPat: boolean;
 }
 
 export default function BitbucketServerPersonalAccessTokenForm({
index 1422d315c3ff275498b5c2819b2af142e648f721..4eb68e8bb6412318a62501e595ac5ec8dc8a06ec 100644 (file)
@@ -50,13 +50,13 @@ export interface CreateProjectPageProps extends WithAvailableFeaturesProps {
 
 interface State {
   azureSettings: DopSetting[];
-  bitbucketSettings: DopSetting[];
   bitbucketCloudSettings: DopSetting[];
+  bitbucketSettings: DopSetting[];
+  creatingAlmDefinition?: AlmKeys;
   githubSettings: DopSetting[];
   gitlabSettings: DopSetting[];
-  loading: boolean;
-  creatingAlmDefinition?: AlmKeys;
   importProjects?: ImportProjectParam;
+  loading: boolean;
   redirectTo: string;
 }
 
@@ -70,8 +70,8 @@ const PROJECT_MODE_FOR_ALM_KEY = {
 
 export type ImportProjectParam =
   | {
-      creationMode: CreateProjectModes.AzureDevOps;
       almSetting: string;
+      creationMode: CreateProjectModes.AzureDevOps;
       monorepo: false;
       projects: {
         projectName: string;
@@ -79,33 +79,33 @@ export type ImportProjectParam =
       }[];
     }
   | {
-      creationMode: CreateProjectModes.BitbucketCloud;
       almSetting: string;
+      creationMode: CreateProjectModes.BitbucketCloud;
       monorepo: false;
       projects: {
         repositorySlug: string;
       }[];
     }
   | {
-      creationMode: CreateProjectModes.BitbucketServer;
       almSetting: string;
+      creationMode: CreateProjectModes.BitbucketServer;
       monorepo: false;
       projects: {
-        repositorySlug: string;
         projectKey: string;
+        repositorySlug: string;
       }[];
     }
   | {
-      creationMode: CreateProjectModes.GitHub;
       almSetting: string;
+      creationMode: CreateProjectModes.GitHub;
       monorepo: false;
       projects: {
         repositoryKey: string;
       }[];
     }
   | {
-      creationMode: CreateProjectModes.GitLab;
       almSetting: string;
+      creationMode: CreateProjectModes.GitLab;
       monorepo: false;
       projects: {
         gitlabProjectId: string;
@@ -115,20 +115,20 @@ export type ImportProjectParam =
       creationMode: CreateProjectModes.Manual;
       monorepo: false;
       projects: {
-        project: string;
-        name: string;
         mainBranch: string;
+        name: string;
+        project: string;
       }[];
     }
   | {
       creationMode: CreateProjectModes;
       devOpsPlatformSettingId: string;
       monorepo: true;
+      projectIdentifier?: string;
       projects: {
         projectKey: string;
         projectName: string;
       }[];
-      projectIdentifier?: string;
       repositoryIdentifier: string;
     };
 
index e22904aedf153c1d592403f5299d647f66a22b06..43735995971828d366ad6d80d56692dfac52caf4 100644 (file)
@@ -34,9 +34,9 @@ import GitHubProjectCreateRenderer from './GitHubProjectCreateRenderer';
 import { redirectToGithub } from './utils';
 
 interface Props {
+  dopSettings: DopSetting[];
   isLoadingBindings: boolean;
   onProjectSetupDone: (importProjects: ImportProjectParam) => void;
-  dopSettings: DopSetting[];
 }
 
 export default function GitHubProjectCreate(props: Readonly<Props>) {
index c5834b2676659eb67e58afd5679cf42d46bf1e30..45026131cf555b87b273d17b8510d14361f4b70b 100644 (file)
@@ -36,6 +36,7 @@ import RepositoryList from '../components/RepositoryList';
 import { CreateProjectModes } from '../types';
 
 interface GitHubProjectCreateRendererProps {
+  almInstances: AlmSettingsInstance[];
   error: boolean;
   loadingBindings: boolean;
   loadingOrganizations: boolean;
@@ -44,14 +45,13 @@ interface GitHubProjectCreateRendererProps {
   onLoadMore: () => void;
   onSearch: (q: string) => void;
   onSelectOrganization: (key: string) => void;
+  onSelectedAlmInstanceChange: (instance: AlmSettingsInstance) => void;
   organizations?: GithubOrganization[];
   repositories?: GithubRepository[];
   repositoryPaging: Paging;
   searchQuery: string;
-  selectedOrganization?: GithubOrganization;
-  almInstances: AlmSettingsInstance[];
   selectedAlmInstance?: AlmSettingsInstance;
-  onSelectedAlmInstanceChange: (instance: AlmSettingsInstance) => void;
+  selectedOrganization?: GithubOrganization;
 }
 
 function orgToOption({ key, name }: GithubOrganization) {
index cb2c8eeaaba76fc45f56947e2b1c013c87eb3fdf..8886ac9e903840324724aee6eb64c91f0e3c8966 100644 (file)
@@ -35,8 +35,8 @@ import { usePersonalAccessToken } from '../usePersonalAccessToken';
 
 interface Props {
   almSetting: AlmInstanceBase;
-  resetPat: boolean;
   onPersonalAccessTokenCreated: () => void;
+  resetPat: boolean;
 }
 
 export default function GitlabPersonalAccessTokenForm({
index a5ff527ff4ecfea53ee91c81820765c78cfd8652..09d87aea1b14e4d28fc7210dfcdeb0d738ef224e 100644 (file)
@@ -34,9 +34,9 @@ import GitlabPersonalAccessTokenForm from './GItlabPersonalAccessTokenForm';
 import GitlabProjectCreateRenderer from './GitlabProjectCreateRenderer';
 
 interface Props {
+  dopSettings: DopSetting[];
   isLoadingBindings: boolean;
   onProjectSetupDone: (importProjects: ImportProjectParam) => void;
-  dopSettings: DopSetting[];
 }
 
 export default function GitlabProjectCreate(props: Readonly<Props>) {
index 49eb4473a87dd42f943bbd5c8409ba961d6fd4fa..a496c18867c456396ed584f97b6bd3699c9e71a6 100644 (file)
@@ -41,12 +41,12 @@ export interface GitlabProjectCreateRendererProps {
   onLoadMore: () => void;
   onPersonalAccessTokenCreated: () => void;
   onSearch: (searchQuery: string) => void;
+  onSelectedAlmInstanceChange: (instance: AlmInstanceBase) => void;
   projects?: GitlabProject[];
   projectsPaging: Paging;
   resetPat: boolean;
   searchQuery: string;
   selectedAlmInstance?: AlmSettingsInstance;
-  onSelectedAlmInstanceChange: (instance: AlmInstanceBase) => void;
   showPersonalAccessTokenForm?: boolean;
 }
 
index b5b5d2cedd0c1ef6f76620d9a095cdf7d176db49..1a8ff2baffa43cbc8a29fb385409124511d8f87a 100644 (file)
@@ -38,8 +38,8 @@ export interface GitlabProjectSelectionFormProps {
   onSearch: (searchQuery: string) => void;
   projects?: GitlabProject[];
   projectsPaging: Paging;
-  searching: boolean;
   searchQuery: string;
+  searching: boolean;
 }
 
 export default function GitlabProjectSelectionForm(
index d4689365912445d1c3d999601db9fe0055741b47..098dec338625373ef2187ba593da1974eeb1efab 100644 (file)
@@ -34,25 +34,25 @@ import { translate } from '../../../../helpers/l10n';
 import { getProjectUrl } from '../../../../helpers/urls';
 
 type AlmRepoItemProps = {
-  primaryTextNode: React.ReactNode;
-  secondaryTextNode?: React.ReactNode;
-  sqProjectKey?: string;
+  almIconSrc: string;
   almKey: string;
   almUrl?: string;
   almUrlText?: string;
-  almIconSrc: string;
+  primaryTextNode: React.ReactNode;
+  secondaryTextNode?: React.ReactNode;
+  sqProjectKey?: string;
 } & (
   | {
       multiple: true;
       onCheck: (key: string) => void;
-      selected: boolean;
       onImport?: never;
+      selected: boolean;
     }
   | {
       multiple?: false;
       onCheck?: never;
-      selected?: never;
       onImport: (key: string) => void;
+      selected?: never;
     }
 );
 
@@ -152,7 +152,7 @@ export default function AlmRepoItem({
   );
 }
 
-const RepositoryItem = styled.li<{ selected?: boolean; imported?: boolean }>`
+const RepositoryItem = styled.li<{ imported?: boolean; selected?: boolean }>`
   box-sizing: border-box;
   border: ${({ selected }) =>
     selected ? themeBorder('default', 'primary') : themeBorder('default')};
index 92193fd3ec1e1705a391a7f78828c0fcbea678b0..ab601b743ff4b3204a1b33c3d9150c79163aca61 100644 (file)
@@ -24,10 +24,10 @@ import { hasMessage, translate, translateWithParameters } from '../../../../help
 import { AlmKeys, AlmSettingsInstance } from '../../../../types/alm-settings';
 
 interface Props {
-  almKey: AlmKeys;
   almInstances?: AlmSettingsInstance[];
-  selectedAlmInstance?: AlmSettingsInstance;
+  almKey: AlmKeys;
   onChangeConfig: (instance: AlmSettingsInstance) => void;
+  selectedAlmInstance?: AlmSettingsInstance;
 }
 
 const MIN_SIZE_INSTANCES = 2;
index f07613fa84a4f3a96c545aecc7ddeb22bca76cd8..481711667b96c8421b31b5d39eb5542eec41d531 100644 (file)
@@ -48,20 +48,20 @@ interface Props<I> {
 }
 
 interface State {
-  name: string;
-  nameError?: boolean;
-  nameTouched: boolean;
   key: string;
   keyError?: ProjectKeyErrors;
   keyTouched: boolean;
+  name: string;
+  nameError?: boolean;
+  nameTouched: boolean;
   validatingKey: boolean;
 }
 
 export interface ProjectData<I = string> {
   hasError: boolean;
   id?: I;
-  name: string;
   key: string;
+  name: string;
   touched: boolean;
 }
 
index 351b08ffa4b4d03fb228c81f7d911e7c841e8626..02eb7f64b7be79a7825fd486986f3ae48d25f767 100644 (file)
@@ -31,18 +31,18 @@ import { Paging } from '../../../../types/types';
 import AlmRepoItem from '../components/AlmRepoItem';
 
 interface RepositoryListProps {
+  almKey: AlmKeys.GitHub | AlmKeys.GitLab;
+  checkAll: () => void;
   loadingRepositories: boolean;
+  onCheck: (key: string) => void;
+  onImport: () => void;
+  onLoadMore: () => void;
+  onSearch: (query: string) => void;
   repositories?: GithubRepository[] | GitlabProject[];
   repositoryPaging: Paging;
   searchQuery: string;
-  onLoadMore: () => void;
-  onSearch: (query: string) => void;
-  almKey: AlmKeys.GitHub | AlmKeys.GitLab;
   selected: Set<string>;
-  checkAll: () => void;
   uncheckAll: () => void;
-  onCheck: (key: string) => void;
-  onImport: () => void;
 }
 
 export default function RepositoryList(props: Readonly<RepositoryListProps>) {
index 3663ddbd302a86209c758b997a0b21f6b4b45df2..71e9bcdcecd4a0d1c27c6c34de60be9509769870 100644 (file)
@@ -47,8 +47,8 @@ import { CreateProjectModes } from '../types';
 
 interface Props {
   branchesEnabled: boolean;
-  onProjectSetupDone: (importProjects: ImportProjectParam) => void;
   onClose: () => void;
+  onProjectSetupDone: (importProjects: ImportProjectParam) => void;
 }
 
 interface MainBranchState {
index 9025f7e73913aacfc2be804b4bc8f89b68c2cf33..26b76f55a2654aa6233b0c6041684c15687c8e3c 100644 (file)
@@ -54,8 +54,8 @@ interface Props {
   selectedDopSetting?: DopSetting;
   selectedOrganization?: LabelValueSelectOption;
   selectedRepository?: LabelValueSelectOption;
-  showPersonalAccessToken?: boolean;
   showOrganizations?: boolean;
+  showPersonalAccessToken?: boolean;
 }
 
 export function MonorepoConnectionSelector({
index e0b2999a4255afedef4a2e2059f8fc75bb43a9f9..d66d5585f7e941191ffb444f1ed299d2f9074670 100644 (file)
@@ -23,10 +23,10 @@ import { FormattedMessage } from 'react-intl';
 import { ProjectData, ProjectValidationCard } from '../components/ProjectValidation';
 
 interface Props {
-  projectKeys: string[];
   onAddProject: () => void;
   onChangeProject: (project: ProjectData<number>) => void;
   onRemoveProject: (id?: number) => void;
+  projectKeys: string[];
   projects: ProjectData<number>[];
 }
 
index 2436e445be375cf3defc57a7af4750505920f46d..24bb13e715d034bade729820e42b7426dba9008e 100644 (file)
@@ -38,8 +38,8 @@ interface Props {
   loadingRepositories: boolean;
   onSearchRepositories: (query: string) => void;
   onSelectRepository: (repositoryKey: string) => void;
-  repositorySearchQuery: string;
   repositoryOptions?: LabelValueSelectOption[] | GroupBase<LabelValueSelectOption>[];
+  repositorySearchQuery: string;
   selectedOrganization?: LabelValueSelectOption;
   selectedRepository?: LabelValueSelectOption;
   showOrganizations?: boolean;
index 49f50774ff3aad65817653810cb8441925b5c83f..1b5efc45a3aec822ec9e577a39ae48388aa3c341 100644 (file)
@@ -27,17 +27,17 @@ import { AlmInstanceBase } from '../../../types/alm-settings';
 import { tokenExistedBefore } from './utils';
 
 export interface PATType {
-  validationFailed: boolean;
-  validationErrorMessage?: string;
-  touched: boolean;
-  password: string;
-  username?: string;
-  submitting: boolean;
   checkingPat: boolean;
   firstConnection: boolean;
-  handleUsernameChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
   handlePasswordChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
   handleSubmit: (e: React.SyntheticEvent<HTMLFormElement>) => Promise<void>;
+  handleUsernameChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
+  password: string;
+  submitting: boolean;
+  touched: boolean;
+  username?: string;
+  validationErrorMessage?: string;
+  validationFailed: boolean;
 }
 
 export const usePersonalAccessToken = (
index ad9a716869e68d47cf22301e368be6b7419e8ed1..b8041247d88ae5827ef3169d71d345eb62236665 100644 (file)
@@ -25,8 +25,8 @@ import EditMembersModal from './EditMembersModal';
 import ViewMembersModal from './ViewMembersModal';
 
 interface Props {
-  isManaged: boolean;
   group: Group;
+  isManaged: boolean;
   onEdit: () => void;
 }
 
index e124d8bf54690b6988c6cad68cbd26ab98e148c6..3f007ab886e12051b2b8d39e448df715424911d7 100644 (file)
@@ -25,8 +25,8 @@ import { useGroupMembersQuery } from '../../../queries/group-memberships';
 import { Group } from '../../../types/types';
 
 interface Props {
-  isManaged: boolean;
   group: Group;
+  isManaged: boolean;
   onClose: () => void;
 }
 
index 781e9aa77b6ce0adcbb99306e14bf1536f5a8e5c..2487062b626fe4521f3ea6c54a1657e245af3e80 100644 (file)
@@ -35,9 +35,9 @@ const UNASSIGNED = { value: '', label: translate('unassigned') };
 export interface AssigneeSelectProps {
   assignee?: SingleValue<LabelValueSelectOption>;
   className?: string;
+  inputId: string;
   issues: Issue[];
   onAssigneeSelect: (assignee: SingleValue<LabelValueSelectOption>) => void;
-  inputId: string;
 }
 
 function userToOption(user: RestUser | UserActive) {
index 28dfb7575cc5db5306de40934969938d1bc82f46..23f787fd28503d791089a965d8ff7cce46b0cd1e 100644 (file)
@@ -47,10 +47,10 @@ import IssueHeaderSide from './IssueHeaderSide';
 import IssueNewStatusAndTransitionGuide from './IssueNewStatusAndTransitionGuide';
 
 interface Props {
-  issue: Issue;
-  ruleDetails: RuleDetails;
   branchLike?: BranchLike;
+  issue: Issue;
   onIssueChange: (issue: Issue) => void;
+  ruleDetails: RuleDetails;
 }
 
 interface State {
index 878ee759f4165adf89f424023656f69f643c648c..a4d32bef64d335ce6141318b178adc0a9e0ac78e 100644 (file)
@@ -51,8 +51,8 @@ export default function IssueHeaderSide({ issue }: Readonly<Props>) {
 
 interface IssueHeaderMetaItemProps extends React.HTMLAttributes<HTMLDivElement> {
   children: React.ReactNode;
-  title: string;
   className?: string;
+  title: string;
 }
 
 function IssueHeaderInfo({
index 7f83156f91a8c540d37f099df48155312eb992ba..eade6d01630da52793fc04b9c9c086a0a0508773 100644 (file)
@@ -32,9 +32,9 @@ import { Issue } from '../../../types/types';
 import { NoticeType } from '../../../types/users';
 
 interface Props {
+  issues: Issue[];
   run?: boolean;
   togglePopup: (issue: string, popup: string, show?: boolean) => void;
-  issues: Issue[];
 }
 
 const PLACEMENT_RIGHT = 'right';
index 60df939d6d0021420b5edae814dad98ce7130f3d..2cfa5efd2c78975658fb0355d7d0ed4750fa5011 100644 (file)
@@ -125,13 +125,12 @@ export interface State {
   facets: Dict<Facet>;
   issues: Issue[];
   loading: boolean;
-  loadingRule: boolean;
   loadingFacets: Dict<boolean>;
   loadingMore: boolean;
+  loadingRule: boolean;
   locationsNavigator: boolean;
   myIssues: boolean;
   openFacets: Dict<boolean>;
-  showVariantsFilter: boolean;
   openIssue?: Issue;
   openPopup?: { issue: string; name: string };
   openRuleDetails?: RuleDetails;
@@ -145,6 +144,7 @@ export interface State {
   selected?: string;
   selectedFlowIndex?: number;
   selectedLocationIndex?: number;
+  showVariantsFilter: boolean;
 }
 
 // When opening a specific issue, number of issues to fetch through pagination before loading it specifically
index 29dac81aeff1e3670176ffbe3a54bcbf93378a30..74bc910f699b00072a6c710d48ca071c969eac6b 100644 (file)
@@ -48,6 +48,7 @@ import {
 } from '../../../types/types';
 
 export interface SnippetViewerProps {
+  className?: string;
   component: SourceViewerFile;
   displayLineNumberOptions?: boolean;
   displaySCM?: boolean;
@@ -55,6 +56,7 @@ export interface SnippetViewerProps {
   duplicationsByLine?: { [line: number]: number[] };
   expandBlock: (snippetIndex: number, direction: ExpandDirection) => Promise<void>;
   handleSymbolClick: (symbols: string[]) => void;
+  hideLocationIndex?: boolean;
   highlightedLocationMessage: { index: number; text: string | undefined } | undefined;
   highlightedSymbols: string[];
   index: number;
@@ -65,9 +67,7 @@ export interface SnippetViewerProps {
   renderAdditionalChildInLine?: (line: SourceLine) => React.ReactNode | undefined;
   renderDuplicationPopup: (index: number, line: number) => React.ReactNode;
   snippet: SourceLine[];
-  className?: string;
   snippetSourcesMap?: LineMap;
-  hideLocationIndex?: boolean;
 }
 
 type Props = SnippetViewerProps & ThemeProp;
index f74fcf5e6ad59902760566d32384f5d8cd0e7b59..feb94e50c9d39479955546c7d318c375af0e9bc9 100644 (file)
@@ -102,7 +102,7 @@ export function createSnippets(params: {
       const startIndex = Math.max(1, loc.textRange.startLine - LINES_ABOVE);
       const endIndex = addLinesBellow({ issue, locationEnd: loc.textRange.endLine });
 
-      let firstCollision: { start: number; end: number } | undefined;
+      let firstCollision: { end: number; start: number } | undefined;
 
       // Remove ranges that collide into the first collision
       snippets = snippets.filter((snippet) => {
index d66a2c2960e6462d4c9299e04001a3ebd832d4a8..a3f5c1f9de802cc19feec2b59f8580335554d9c7 100644 (file)
@@ -33,9 +33,9 @@ import IssueLocationsNavigator from './IssueLocationsNavigator';
 
 export interface ConciseIssueProps {
   issue: Issue;
+  onClick: (issueKey: string) => void;
   onFlowSelect: (index?: number) => void;
   onLocationSelect: (index: number) => void;
-  onClick: (issueKey: string) => void;
   selected: boolean;
   selectedFlowIndex: number | undefined;
   selectedLocationIndex: number | undefined;
index b1de98acb942cb3f9ee5e0194560ccd39b12861a..b5d11b9122421b4d55ead5a08ddd0c5662fdbc67 100644 (file)
@@ -37,8 +37,8 @@ interface Props {
   onToggle: (property: string) => void;
   open: boolean;
   query: Query;
-  stats: Dict<number> | undefined;
   referencedUsers: Dict<UserBase>;
+  stats: Dict<number> | undefined;
 }
 
 export class AssigneeFacet extends React.PureComponent<Props> {
index df8ff0d7feacdc3e28ee0c869e0c885baabe8e7d..b1be9d0954946b5a5d5c29f05f3f3864e1782d32 100644 (file)
@@ -40,10 +40,10 @@ interface Props {
   createdBefore: Date | undefined;
   createdInLast: string;
   fetching: boolean;
+  inNewCodePeriod: boolean;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
   open: boolean;
-  inNewCodePeriod: boolean;
   stats: Dict<number> | undefined;
 }
 
index fb728c8e9b951a83647f5b845928840f02719037..aefe1787821607a7485a0d89ae6e3a84d5351db0 100644 (file)
@@ -22,13 +22,13 @@ import * as React from 'react';
 export type FacetItemsListProps =
   | {
       children?: React.ReactNode;
-      labelledby: string;
       label?: never;
+      labelledby: string;
     }
   | {
       children?: React.ReactNode;
-      labelledby?: never;
       label: string;
+      labelledby?: never;
     };
 
 export function FacetItemsList({ children, labelledby, label }: FacetItemsListProps) {
index 00dcc61bd3840f9abd55f2847ad41df2c544bbb5..049fea05af4fcb841574a6baaff7d2f25c51cc9a 100644 (file)
@@ -29,19 +29,19 @@ import { Query } from '../utils';
 import { ListStyleFacet } from './ListStyleFacet';
 
 interface Props {
+  disabled?: boolean;
+  disabledHelper?: string;
   fetching?: boolean;
   languages: Languages;
-  maxInitialItems?: number;
-  selectedLanguages: string[];
   loadSearchResultCount?: (property: string, changes: Partial<Query>) => Promise<Facet>;
+  maxInitialItems?: number;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
   open: boolean;
   query?: Query;
   referencedLanguages?: Dict<ReferencedLanguage>;
+  selectedLanguages: string[];
   stats: Dict<number> | undefined;
-  disabled?: boolean;
-  disabledHelper?: string;
 }
 
 class LanguageFacetClass extends React.PureComponent<Props> {
index 3e87f1065e32f28ade592a9a98afa9eb33fbf857..953a8590230ede30943bfcaaf5303551012d305d 100644 (file)
@@ -35,14 +35,14 @@ import { MultipleSelectionHint } from './MultipleSelectionHint';
 
 interface SearchResponse<S> {
   maxResults?: boolean;
-  results: S[];
   paging?: Paging;
+  results: S[];
 }
 
 export interface Props<S> {
+  disableZero?: boolean;
   disabled?: boolean;
   disabledHelper?: string;
-  disableZero?: boolean;
   facetHeader: string;
   fetching: boolean;
   getFacetItemText: (item: string) => string;
@@ -64,10 +64,10 @@ export interface Props<S> {
   query?: RawQuery;
   renderFacetItem: (item: string) => string | JSX.Element;
   renderSearchResult: (result: S, query: string) => React.ReactNode;
+  searchInputAriaLabel?: string;
   searchPlaceholder: string;
   showLessAriaLabel?: string;
   showMoreAriaLabel?: string;
-  searchInputAriaLabel?: string;
   showStatBar?: boolean;
   stats: Dict<number> | undefined;
   values: string[];
@@ -76,11 +76,11 @@ export interface Props<S> {
 interface State<S> {
   autoFocus: boolean;
   query: string;
-  searching: boolean;
   searchMaxResults?: boolean;
   searchPaging?: Paging;
   searchResults?: S[];
   searchResultsCounts: Dict<number>;
+  searching: boolean;
   showFullList: boolean;
 }
 
index 6fbd93b38b1cebebe3a459c876a19c1453c03804..3ac157eba62361e484860272d50e80a7c8b4df92 100644 (file)
@@ -25,8 +25,8 @@ import { Query } from '../utils';
 import { FacetItemsList } from './FacetItemsList';
 
 export interface PeriodFilterProps {
-  onChange: (changes: Partial<Query>) => void;
   newCodeSelected: boolean;
+  onChange: (changes: Partial<Query>) => void;
 }
 
 enum Period {
index e782e8616a1cdf8dcc2fabf7733e817bbece1fd3..c793a92ecc008e8318382efde58c9cd509c5ffc3 100644 (file)
@@ -30,8 +30,8 @@ export interface PrioritizedRuleFacetProps {
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
   open: boolean;
-  value: true | undefined;
   stats: Dict<number> | undefined;
+  value: true | undefined;
 }
 
 export function PrioritizedRuleFacet(props: Readonly<PrioritizedRuleFacetProps>) {
index 52b10e6cf96cb46990a3ba6d66d518c204207cfa..68048716c9865c45fd935c852781aea375f48c35 100644 (file)
@@ -34,8 +34,8 @@ import { ListStyleFacet } from './ListStyleFacet';
 
 interface Props {
   component: Component | undefined;
-  loadSearchResultCount: (property: string, changes: Partial<Query>) => Promise<Facet>;
   fetching: boolean;
+  loadSearchResultCount: (property: string, changes: Partial<Query>) => Promise<Facet>;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
   open: boolean;
@@ -66,7 +66,7 @@ export function ProjectFacet(props: Readonly<Props>) {
   const handleSearch = (
     query: string,
     page = 1,
-  ): Promise<{ results: SearchedProject[]; paging: Paging }> => {
+  ): Promise<{ paging: Paging; results: SearchedProject[] }> => {
     if (
       component &&
       [
index 934e8cad6b332dac4da195ed1a37c1464a962220..749603a72d74858548a77b9b91d9a50b1f45a717 100644 (file)
@@ -70,13 +70,13 @@ export interface Props {
   onFacetToggle: (property: string) => void;
   onFilterChange: (changes: Partial<Query>) => void;
   openFacets: Dict<boolean>;
-  showVariantsFilter: boolean;
   query: Query;
   referencedComponentsById: Dict<ReferencedComponent>;
   referencedComponentsByKey: Dict<ReferencedComponent>;
   referencedLanguages: Dict<ReferencedLanguage>;
   referencedRules: Dict<ReferencedRule>;
   referencedUsers: Dict<UserBase>;
+  showVariantsFilter: boolean;
 }
 
 export function Sidebar(props: Readonly<Props>) {
index 521297cc483b86cbceb603dab03d1a27a5d6eca0..9494ad6b64134d03d2f2504ffb9422e1f2769e06 100644 (file)
@@ -28,8 +28,8 @@ import { MultipleSelectionHint } from './MultipleSelectionHint';
 
 export interface CommonProps {
   fetching: boolean;
-  needIssueSync?: boolean;
   help?: React.ReactNode;
+  needIssueSync?: boolean;
   onChange: (changes: Partial<Query>) => void;
   onToggle: (property: string) => void;
   open: boolean;
@@ -37,11 +37,11 @@ export interface CommonProps {
 }
 
 interface Props<T = string> extends CommonProps {
-  property: string;
-  listItems: Array<T>;
   itemNamePrefix: string;
-  selectedItems: Array<T>;
+  listItems: Array<T>;
+  property: string;
   renderIcon?: (item: string, disabled: boolean) => React.ReactNode;
+  selectedItems: Array<T>;
 }
 
 export function SimpleListStyleFacet(props: Props) {
index 6913a0dcf1f40d9120407cb6389fed1ca5f1f213..fe35647d881a91f07762d12425e7d8032416e26e 100644 (file)
@@ -53,11 +53,11 @@ interface Props {
   onToggle: (property: string) => void;
   open: boolean;
   owaspTop10: string[];
-  owaspTop10Open: boolean;
-  owaspTop10Stats: Dict<number> | undefined;
   'owaspTop10-2021': string[];
   'owaspTop10-2021Open': boolean;
   'owaspTop10-2021Stats': Dict<number> | undefined;
+  owaspTop10Open: boolean;
+  owaspTop10Stats: Dict<number> | undefined;
   query: Partial<Query>;
   sonarsourceSecurity: string[];
   sonarsourceSecurityOpen: boolean;
@@ -65,8 +65,8 @@ interface Props {
 }
 
 interface State {
-  standards: Standards;
   showFullSonarSourceList: boolean;
+  standards: Standards;
 }
 
 type StatsProp =
index 400960bd1e6e01ced9c1b63ef269f26b5844e4f8..913d5dde428442418c0f0f02840ea00174be3e0a 100644 (file)
@@ -29,8 +29,8 @@ import { Query } from '../utils';
 import { ListStyleFacet } from './ListStyleFacet';
 
 interface Props {
-  component: Component | undefined;
   branch?: string;
+  component: Component | undefined;
   fetching: boolean;
   loadSearchResultCount: (property: string, changes: Partial<Query>) => Promise<Facet>;
   onChange: (changes: Partial<Query>) => void;
index 69435787427b00e2ed52d0acce8fbe4458c7cdcd..918c638d948bdf5d3ad6d3b133597d5ed1553912 100644 (file)
@@ -57,6 +57,7 @@ import { RestUser } from '../../types/users';
 const OWASP_ASVS_4_0 = 'owaspAsvs-4.0';
 
 export interface Query {
+  [OWASP_ASVS_4_0]: string[];
   assigned: boolean;
   assignees: string[];
   author: string[];
@@ -72,26 +73,25 @@ export interface Query {
   fixedInPullRequest: string;
   impactSeverities: SoftwareImpactSeverity[];
   impactSoftwareQualities: SoftwareQuality[];
+  inNewCodePeriod: boolean;
+  issueStatuses: IssueStatus[];
   issues: string[];
   languages: string[];
+  owaspAsvsLevel: string;
   owaspTop10: string[];
   'owaspTop10-2021': string[];
   'pciDss-3.2': string[];
   'pciDss-4.0': string[];
-  [OWASP_ASVS_4_0]: string[];
-  owaspAsvsLevel: string;
+  prioritizedRule?: boolean;
   projects: string[];
+  resolved?: boolean;
   rules: string[];
   scopes: string[];
   severities: string[];
-  inNewCodePeriod: boolean;
   sonarsourceSecurity: string[];
   sort: string;
-  issueStatuses: IssueStatus[];
   tags: string[];
   types: string[];
-  resolved?: boolean;
-  prioritizedRule?: boolean;
 }
 
 export const STANDARDS = 'standards';
index 57b0e4383da6a5bf4633c260a2c3234775475186..9014ef86d5af41549b437c0da4213ec2fdbc8ff1 100644 (file)
@@ -44,15 +44,15 @@ interface Props {
 
 interface State {
   message?: string;
-  startedAt?: string;
   migrationState?: MigrationStatus;
-  systemStatus?: string;
-  wasStarting?: boolean;
   progress?: {
     completedSteps: number;
-    totalSteps: number;
     expectedFinishTimestamp: string;
+    totalSteps: number;
   };
+  startedAt?: string;
+  systemStatus?: string;
+  wasStarting?: boolean;
 }
 
 const DELAY_REDIRECT_PREV_PAGE = 2500;
index f44cf3e9026a3cf6e83726858ca4cabad3487d9f..4c2c597ab6349182f82b728292f02f81dbde510a 100644 (file)
@@ -28,8 +28,8 @@ import DateTimeFormatter from '../../../components/intl/DateTimeFormatter';
 interface Props {
   progress: {
     completedSteps: number;
-    totalSteps: number;
     expectedFinishTimestamp: string;
+    totalSteps: number;
   };
 }
 
index 87e7faaaaf0135d4fd9dbd6d8b143024e33de637..fbb876c1a4dc37689a68eb7f0abf195e64c48433 100644 (file)
@@ -59,8 +59,8 @@ import {
 interface Props {
   currentEdition?: EditionKey;
   fetchPendingPlugins: () => void;
-  pendingPlugins: PendingPluginResult;
   location: Location;
+  pendingPlugins: PendingPluginResult;
   router: Router;
   standaloneMode?: boolean;
   updateCenterActive: boolean;
index a22a23c2932717127303d1d0bf068579c33417aa..15a91464c32743738d2ac3cfd177d793ae2c64fe 100644 (file)
@@ -30,8 +30,8 @@ export interface Props {
 }
 
 interface State {
-  serverId?: string;
   ncloc?: number;
+  serverId?: string;
 }
 
 export default class EditionBoxes extends React.PureComponent<Props, State> {
index 8425258e66010fae9c2d98f92cebadd89008b1d3..611340d0312065829945d5ad5558f40df578946d 100644 (file)
@@ -28,8 +28,8 @@ import { GlobalSettingKeys } from '../../types/settings';
 import App from './App';
 
 export interface MarketplaceAppContainerProps {
-  location: Location;
   appState: AppState;
+  location: Location;
 }
 
 function MarketplaceAppContainer(props: MarketplaceAppContainerProps) {
index 8decba914331cfa66f7b54f8bdeb3384b9fd6c82..45f250947d341e140c47682004bdc5fd9ead91e8 100644 (file)
@@ -26,12 +26,12 @@ import PluginAvailable from './components/PluginAvailable';
 import PluginInstalled from './components/PluginInstalled';
 
 export interface PluginsListProps {
-  plugins: Plugin[];
   pending: {
     installing: PendingPlugin[];
-    updating: PendingPlugin[];
     removing: PendingPlugin[];
+    updating: PendingPlugin[];
   };
+  plugins: Plugin[];
   readOnly: boolean;
   refreshPending: () => void;
 }
index fe90b7b6a9d5823e6ebc55aa4168a30cbbf4fa60..a88090e8943e703bf214a3fb831e23b5d70bbed7 100644 (file)
@@ -26,8 +26,8 @@ import PluginChangeLogButton from './PluginChangeLogButton';
 
 interface Props {
   pluginName: string;
-  update: Update;
   release: Release;
+  update: Update;
 }
 
 export default function PluginUpdateItem({ release, update, pluginName }: Readonly<Props>) {
index bd55e0a1313550dc46b0f72410889a8e0b333976..02fb4acbce6cc8b514c73f166644e92da86872f5 100644 (file)
@@ -34,8 +34,8 @@ import { Component, MeasureEnhanced } from '../../../types/types';
 import { HomePage } from '../../../types/users';
 
 interface Props {
-  component: Component;
   branch: Branch;
+  component: Component;
   measures: MeasureEnhanced[];
   showTakeTheTourButton: boolean;
   startTour?: () => void;
index 5086dfc64c4e0bd41d49439e146e8cfabedc209b..faeda3e4f7028e990acccb58bf9ca990fbd43a6e 100644 (file)
@@ -28,11 +28,11 @@ import MeasuresCardPercent from '../components/MeasuresCardPercent';
 import { MeasurementType, getMeasurementMetricKey } from '../utils';
 
 interface Props {
-  useDiffMetric?: boolean;
   branch?: BranchLike;
   component: Component;
-  measures: MeasureEnhanced[];
   conditions: QualityGateStatusConditionEnhanced[];
+  measures: MeasureEnhanced[];
+  useDiffMetric?: boolean;
 }
 
 /**
index 7e17d21f8d12f59df91c7d47cd33202b21d3b786..4899399f2114d54f5f8d0f5fe3a62ec460fcbe1e 100644 (file)
@@ -33,8 +33,8 @@ const LEVEL_ORDER = ['ERROR', 'WARN'];
 
 export interface QualityGateConditionsProps {
   branchLike?: BranchLike;
-  component: Pick<Component, 'key'>;
   collapsible?: boolean;
+  component: Pick<Component, 'key'>;
   failedConditions: QualityGateStatusConditionEnhanced[];
   isBuiltInQualityGate?: boolean;
 }
index c5a82ca02df25b98182a0dc8fdfa9a8d09011334..91f37d748aab0825a2d982d67a9a4902fa40c739 100644 (file)
@@ -24,8 +24,8 @@ import { Status } from '~sonar-aligned/types/common';
 import { translate } from '../../../helpers/l10n';
 
 interface Props {
-  status: Status;
   failedConditionCount: number;
+  status: Status;
 }
 
 export default function QualityGateStatusHeader(props: Props) {
index 73d7c60c3ee9de1de3c2f2fe9b390670ecb155ba..463c20ea9f7b9960c2680270ae29dcf9fa3ab1d7 100644 (file)
@@ -32,12 +32,12 @@ import { SoftwareImpactSeverity, SoftwareQuality } from '../../../types/clean-co
 import { Component } from '../../../types/types';
 
 export interface SoftwareImpactMeasureBreakdownCardProps {
-  softwareQuality: SoftwareQuality;
+  active?: boolean;
   branch?: Branch;
   component: Component;
-  value?: string;
   severity: SoftwareImpactSeverity;
-  active?: boolean;
+  softwareQuality: SoftwareQuality;
+  value?: string;
 }
 
 export function SoftwareImpactMeasureBreakdownCard(
index 00093074e7c8c0ed1f223a6f28d381dcab537fbc..10e6ca40957bbac9ff70a659c2771d99e8e5b1e6 100644 (file)
@@ -44,12 +44,12 @@ import SoftwareImpactMeasureBreakdownCard from './SoftwareImpactMeasureBreakdown
 import SoftwareImpactMeasureRating from './SoftwareImpactMeasureRating';
 
 export interface SoftwareImpactBreakdownCardProps {
+  branch?: Branch;
   component: Component;
   conditions: QualityGateStatusConditionEnhanced[];
-  softwareQuality: SoftwareQuality;
-  ratingMetricKey: MetricKey;
   measures: MeasureEnhanced[];
-  branch?: Branch;
+  ratingMetricKey: MetricKey;
+  softwareQuality: SoftwareQuality;
 }
 
 export function SoftwareImpactMeasureCard(props: Readonly<SoftwareImpactBreakdownCardProps>) {
index a7f6537c34ea23f588a554c305e87cfe1ed27a28..a3fc0d556595d567c97a4e4c79024a17f3e19441 100644 (file)
@@ -40,11 +40,11 @@ export interface MeasuresPanelProps {
   analyses?: Analysis[];
   appLeak?: ApplicationPeriod;
   component: Component;
+  isNewCode: boolean;
   loading?: boolean;
+  onTabSelect: (tab: CodeScope) => void;
   period?: Period;
   qgStatuses?: QualityGateStatus[];
-  isNewCode: boolean;
-  onTabSelect: (tab: CodeScope) => void;
 }
 
 const SQ_UPGRADE_NOTIFICATION_TIMEOUT = { weeks: 3 };
index dc55744353cd9bffcf7b63e80bbd7e8b7c08c3cc..240b1ff975ff3b01a910415c61265350b1a0d3e6 100644 (file)
@@ -28,14 +28,14 @@ import { translate, translateWithParameters } from '../../../helpers/l10n';
 import { localizeMetric } from '../../../helpers/measures';
 
 interface IssueMeasuresCardInnerProps extends React.HTMLAttributes<HTMLDivElement> {
-  metric: MetricKey;
-  value?: string;
-  header: React.ReactNode;
-  url: Partial<Path>;
-  failed?: boolean;
-  icon?: React.ReactNode;
   disabled?: boolean;
+  failed?: boolean;
   footer?: React.ReactNode;
+  header: React.ReactNode;
+  icon?: React.ReactNode;
+  metric: MetricKey;
+  url: Partial<Path>;
+  value?: string;
 }
 
 export function IssueMeasuresCardInner(props: Readonly<IssueMeasuresCardInnerProps>) {
index f5ae6d20830d30f7cb9f66e3bdf344e9e6198110..69355b2e1fe312acf1865cb001974150adc95663 100644 (file)
@@ -27,12 +27,12 @@ import { translate, translateWithParameters } from '../../../helpers/l10n';
 import { localizeMetric } from '../../../helpers/measures';
 
 export interface MeasuresCardProps {
-  url: To;
-  value?: string;
-  metric: MetricKey;
-  label: string;
   failed?: boolean;
   icon?: React.ReactElement;
+  label: string;
+  metric: MetricKey;
+  url: To;
+  value?: string;
 }
 
 export default function MeasuresCard(
index 78d2b7ba17adaf4b4dd71bae41e381cee103a963..21abfe5068c6a257351d365864ef07c1b116e2c4 100644 (file)
@@ -28,12 +28,12 @@ import { Status, getConditionRequiredLabel } from '../utils';
 import MeasuresCard, { MeasuresCardProps } from './MeasuresCard';
 
 interface Props extends MeasuresCardProps {
+  conditionMetric: MetricKey;
   conditions: QualityGateStatusConditionEnhanced[];
   label: string;
+  showRequired?: boolean;
   url: To;
   value?: string;
-  conditionMetric: MetricKey;
-  showRequired?: boolean;
 }
 
 export default function MeasuresCardNumber(
index f29fc2801464cf65c88926fe4d2e44e8a6c7794c..ec8d80d70feff79b6613c043396609b4b66bee98 100644 (file)
@@ -43,18 +43,18 @@ import AfterMergeNote from './AfterMergeNote';
 import MeasuresCard from './MeasuresCard';
 
 interface Props {
-  componentKey: string;
   branchLike?: BranchLike;
-  measurementType: MeasurementType;
-  label: string;
-  url: To;
-  measures: MeasureEnhanced[];
-  conditions: QualityGateStatusConditionEnhanced[];
+  componentKey: string;
   conditionMetric: MetricKey;
+  conditions: QualityGateStatusConditionEnhanced[];
+  label: string;
   linesMetric: MetricKey;
+  measurementType: MeasurementType;
+  measures: MeasureEnhanced[];
   overallConditionMetric?: MetricKey;
-  useDiffMetric?: boolean;
   showRequired?: boolean;
+  url: To;
+  useDiffMetric?: boolean;
 }
 
 export default function MeasuresCardPercent(
index e5cfc9ffa0fb65bc8c330ca9cc75adc43d8a33f0..4510df241485532d25b3d73818bce841e30ccaa4 100644 (file)
@@ -28,10 +28,10 @@ import { Component } from '../../../types/types';
 import BranchQualityGateConditions from './BranchQualityGateConditions';
 
 interface Props {
-  status: Status;
   branchLike?: BranchLike;
   component: Pick<Component, 'key'>;
   failedConditions: QualityGateStatusConditionEnhanced[];
+  status: Status;
 }
 
 export default function BranchQualityGate(props: Readonly<Props>) {
index 1036ac37e3a2011f62b2d855c9c6d69f83115714..7f77a7d81a16e544451e3da5250aedc5bb0d56d3 100644 (file)
@@ -46,9 +46,9 @@ import { IssueMeasuresCardInner } from '../components/IssueMeasuresCardInner';
 import { Status, getConditionRequiredLabel } from '../utils';
 
 interface Props {
+  component: Component;
   conditions: QualityGateStatusConditionEnhanced[];
   measures: MeasureEnhanced[];
-  component: Component;
   pullRequest: PullRequest;
 }
 
index 101f1cb5cfb4b14685a4d7bdc0d883a02591db68..fc313e846e2a2ed926d7117c856040a3a97534d6 100644 (file)
@@ -34,10 +34,10 @@ import IssueMeasuresCard from './IssueMeasuresCard';
 
 interface Props {
   className?: string;
-  pullRequest: PullRequest;
   component: Component;
-  measures: MeasureEnhanced[];
   conditions: QualityGateStatusConditionEnhanced[];
+  measures: MeasureEnhanced[];
+  pullRequest: PullRequest;
 }
 
 export default function MeasuresCardPanel(props: React.PropsWithChildren<Props>) {
index 5efdb69559943f33e943eb009f8d70df6dd4a226..8746ad0ca12be683388ccb512126849632017d37 100644 (file)
@@ -30,8 +30,8 @@ import { MeasureEnhanced } from '../../../types/types';
 import LastAnalysisLabel from '../components/LastAnalysisLabel';
 
 interface Props {
-  pullRequest: PullRequest;
   measures: MeasureEnhanced[];
+  pullRequest: PullRequest;
 }
 
 export default function PullRequestMetaTopBar({ pullRequest, measures }: Readonly<Props>) {
index adf3fc71408a6ef6463ba28f82ab7d0ba03a15f8..2e97368cfaa663e45284f61f34194435765fa125 100644 (file)
@@ -39,8 +39,8 @@ import PullRequestMetaTopBar from './PullRequestMetaTopBar';
 import SonarLintAd from './SonarLintAd';
 
 interface Props {
-  pullRequest: PullRequest;
   component: Component;
+  pullRequest: PullRequest;
 }
 
 export default function PullRequestOverview(props: Readonly<Readonly<Props>>) {
index 7f42e8834a33e12f524c8986fa30cf391cad9ed6..7deea79a972de2c50e95be041ce55c8021e77edd 100644 (file)
@@ -24,9 +24,9 @@ import { translate } from '../../../helpers/l10n';
 
 interface Props {
   permission: {
+    groupsCount: number;
     key: string;
     usersCount: number;
-    groupsCount: number;
     withProjectCreator?: boolean;
   };
 }
index e9305f632b847220d10fd3a07e75be5698a06ac5..51a93c6197b6807c0fd92db69b5c3e616f096161 100644 (file)
@@ -33,14 +33,14 @@ import Home from './Home';
 import Template from './Template';
 
 interface Props {
-  location: Location;
   appState: AppState;
+  location: Location;
 }
 
 interface State {
-  ready: boolean;
-  permissions: Permission[];
   permissionTemplates: PermissionTemplate[];
+  permissions: Permission[];
+  ready: boolean;
 }
 
 class PermissionTemplatesApp extends React.PureComponent<Props, State> {
index adde1dba308324d02aee65d4aecb6985aaa3b85f..c29169de24a36488e62fcd5a2372dce95ee3856c 100644 (file)
@@ -87,7 +87,7 @@ export default class Template extends React.PureComponent<Props, State> {
           })
         : Promise.resolve({ paging: undefined, users: [] });
 
-    const getGroups: Promise<{ paging?: Paging; groups: PermissionGroup[] }> =
+    const getGroups: Promise<{ groups: PermissionGroup[]; paging?: Paging }> =
       filter !== 'users'
         ? api.getPermissionTemplateGroups({
             templateId: template.id,
index a7139ebb40e2c435bb314abe6cd7aa0f6b665d30..4e378b464dbe1df4125d11aaab4b159e76189a7a 100644 (file)
@@ -55,7 +55,7 @@ export function mergePermissionsToTemplates(
 
 export function mergeDefaultsToTemplates(
   permissionTemplates: PermissionTemplate[],
-  defaultTemplates: Array<{ templateId: string; qualifier: string }> = [],
+  defaultTemplates: Array<{ qualifier: string; templateId: string }> = [],
 ): PermissionTemplate[] {
   return permissionTemplates.map((permissionTemplate) => {
     const defaultFor: string[] = [];
index c22a320554e188289dc3fe1b088218a72c61e613..8fb1fbeabf236c6340822dc61b9b38b212d7407d 100644 (file)
@@ -85,7 +85,7 @@ class PermissionsGlobalApp extends React.PureComponent<Props, State> {
           })
         : Promise.resolve({ paging: undefined, users: [] });
 
-    const getGroups: Promise<{ paging?: Paging; groups: PermissionGroup[] }> =
+    const getGroups: Promise<{ groups: PermissionGroup[]; paging?: Paging }> =
       filter !== 'users'
         ? api.getGlobalPermissionsGroups({
             q: query || undefined,
index b5b89e9db02aee916aa74a8e849a08434ccad734..dcfc3dbece6a98a279692d9dcce95ba265285adc 100644 (file)
@@ -96,7 +96,7 @@ class PermissionsProjectApp extends React.PureComponent<Props, State> {
           })
         : Promise.resolve({ paging: undefined, users: [] });
 
-    const getGroups: Promise<{ paging?: Paging; groups: PermissionGroup[] }> =
+    const getGroups: Promise<{ groups: PermissionGroup[]; paging?: Paging }> =
       filter !== 'users'
         ? api.getPermissionsGroupsForComponent({
             projectKey: component.key,
index 4afc148e25b43da6681db868189a418fdfde2916..9ed8ee1f2619798dcdf281a5222315a373fffab9 100644 (file)
@@ -39,9 +39,9 @@ interface Props {
   canDeleteAnalyses?: boolean;
   initializing: boolean;
   leakPeriodDate?: Date;
+  onUpdateQuery: (changes: Partial<Query>) => void;
   project: { qualifier: string };
   query: Query;
-  onUpdateQuery: (changes: Partial<Query>) => void;
 }
 
 const LIST_MARGIN_TOP = 24;
@@ -68,8 +68,8 @@ export default class ProjectActivityAnalysesList extends React.PureComponent<Pro
   };
 
   getNewCodePeriodStartKey(versionByDay: AnalysesByDay[]): {
-    firstNewCodeAnalysisKey: string | undefined;
     baselineAnalysisKey: string | undefined;
+    firstNewCodeAnalysisKey: string | undefined;
   } {
     const { leakPeriodDate } = this.props;
     if (!leakPeriodDate) {
index 9d9ef2d832ef90e2344388aee5d00ba0b4660204..1597f4291ed18fc7ca3832a91a10ae7087a7efb0 100644 (file)
@@ -45,12 +45,12 @@ import RemoveAnalysisForm from './forms/RemoveAnalysisForm';
 export interface ProjectActivityAnalysisProps extends WrappedComponentProps {
   analysis: ParsedAnalysis;
   canAdmin?: boolean;
-  canDeleteAnalyses?: boolean;
   canCreateVersion: boolean;
+  canDeleteAnalyses?: boolean;
   isBaseline: boolean;
   isFirst: boolean;
-  selected: boolean;
   onUpdateSelectedDate: (date: Date) => void;
+  selected: boolean;
 }
 
 export enum Dialog {
index dca1b0e056c9a571bf31190fc37c22cde54827df..0b0b03406207940f5b35ec42c4f8d4ee01e462b5 100644 (file)
@@ -46,9 +46,9 @@ import ProjectActivityAppRenderer from './ProjectActivityAppRenderer';
 export interface State {
   analyses: ParsedAnalysis[];
   analysesLoading: boolean;
-  leakPeriodDate?: Date;
   graphLoading: boolean;
   initialized: boolean;
+  leakPeriodDate?: Date;
   measuresHistory: MeasureHistory[];
   query: Query;
 }
index 781cd0bbb17b9c7ccf413496503365ec18c0b1e5..6feb7c9302c2b7ed52aa190ea107913223691600 100644 (file)
@@ -41,13 +41,13 @@ interface Props {
   analyses: ParsedAnalysis[];
   analysesLoading: boolean;
   graphLoading: boolean;
-  leakPeriodDate?: Date;
   initializing: boolean;
-  project: Pick<Component, 'configuration' | 'key' | 'leakPeriodDate' | 'qualifier'>;
-  metrics: Metric[];
+  leakPeriodDate?: Date;
   measuresHistory: MeasureHistory[];
-  query: Query;
+  metrics: Metric[];
   onUpdateQuery: (changes: Partial<Query>) => void;
+  project: Pick<Component, 'configuration' | 'key' | 'leakPeriodDate' | 'qualifier'>;
+  query: Query;
 }
 
 export default function ProjectActivityAppRenderer(props: Props) {
index 345c0840b963fed8c4b189fc558fcbb66b70918e..1cdec36bf1c7482f22567102c798a8341d53b3a4 100644 (file)
@@ -24,8 +24,8 @@ import { Query } from '../utils';
 
 interface Props {
   from?: Date;
-  to?: Date;
   onChange: (changes: Partial<Query>) => void;
+  to?: Date;
 }
 
 export default class ProjectActivityDateInput extends React.PureComponent<Props> {
index c3eb54a28ab4e2e1546dde4a862fba70f476557e..a406dbd8d0e2203ae557b206ce8a4cd82a9da924 100644 (file)
@@ -61,10 +61,10 @@ interface Props {
 }
 
 interface State {
-  graphStartDate?: Date;
   graphEndDate?: Date;
-  series: Serie[];
+  graphStartDate?: Date;
   graphs: Serie[][];
+  series: Serie[];
 }
 
 const MAX_GRAPH_NB = 2;
index d47cf48b690226b49ae1699d46adedc8a9f88b7e..6041eb64164ab1527e112c6cac89eea2b5ad14e6 100644 (file)
@@ -24,9 +24,9 @@ import { useCreateEventMutation } from '../../../../queries/project-analyses';
 import { ParsedAnalysis } from '../../../../types/project-activity';
 
 interface Props {
-  category?: string;
   addEventButtonText: string;
   analysis: ParsedAnalysis;
+  category?: string;
   onClose: () => void;
 }
 
index 50c36f74f1aefa10ac62cce04ee8c9d579368bf9..d3d55255c9ca2376c856f861631102fcd036b87d 100644 (file)
@@ -27,8 +27,8 @@ export interface RemoveEventFormProps {
   analysisKey: string;
   event: AnalysisEvent;
   header: string;
-  removeEventQuestion: string;
   onClose: () => void;
+  removeEventQuestion: string;
 }
 
 export default function RemoveEventForm(props: RemoveEventFormProps) {
index c64d34fa0fbe91454be20afdec9f1ca14a7d33c2..93e6703bfc24fb768241a5e7b59204f36902f50f 100644 (file)
@@ -64,8 +64,8 @@ export function historyQueryChanged(prevQuery: Query, nextQuery: Query) {
 
 export interface AnalysesByDay {
   byDay: Dict<ParsedAnalysis[]>;
-  version: string | null;
   key: string | null;
+  version: string | null;
 }
 
 export function getAnalysesByVersionByDay(
index 3e7def28b8a9781d7b8974b49129c99485e75d46..a6cd0ba1bba04179b6caeeb5c3837e1cbbf64f38 100644 (file)
@@ -42,8 +42,8 @@ interface Props extends WithAvailableFeaturesProps {
   branchLike?: BranchLike;
   component: Component;
   currentUser: CurrentUser;
-  onComponentChange: (changes: {}) => void;
   metrics: Dict<Metric>;
+  onComponentChange: (changes: {}) => void;
 }
 
 function ProjectInformationApp(props: Props) {
index 382bf84c832c95287ccb8af630e786093a40e2e9..af612975d1d58ed4573b8f0f5512908aba1f7f93 100644 (file)
@@ -104,8 +104,8 @@ export default function AboutProject(props: AboutProjectProps) {
 }
 
 interface ProjectInformationSectionProps {
-  last?: boolean;
   className?: string;
+  last?: boolean;
 }
 
 function ProjectInformationSection(props: PropsWithChildren<ProjectInformationSectionProps>) {
index 103b591e1887a73f17557885d71403e73e840df8..746fab901f234161a3285a4c16f2b3fe5b7de651 100644 (file)
@@ -83,9 +83,9 @@ function ProfileItem({
   languages,
   deprecatedByKey,
 }: {
-  profile: ComponentQualityProfile;
-  languages: Languages;
   deprecatedByKey: Dict<number>;
+  languages: Languages;
+  profile: ComponentQualityProfile;
 }) {
   const languageFromStore = languages[profile.language];
   const languageName = languageFromStore ? languageFromStore.name : profile.language;
index d4f68baff00a3bb938a6bb989a3dc884fd82c468..b1c3435804bd0d880ff8db4fd418d719028288a9 100644 (file)
@@ -27,8 +27,8 @@ export type BadgeFormats = 'md' | 'url';
 export interface BadgeOptions {
   branch?: string;
   format?: BadgeFormats;
-  project?: string;
   metric?: string;
+  project?: string;
   pullRequest?: string;
 }
 
index bcac8e01fc5823887ad2dd6707343a32735bff84..70307484945e0ebe51d7193dfd380a2cda48e11f 100644 (file)
@@ -42,8 +42,8 @@ import { BranchLike } from '../../../types/branch-like';
 import { Component } from '../../../types/types';
 
 interface Props {
-  component: Pick<Component, 'key' | 'name'>;
   branchLike?: BranchLike;
+  component: Pick<Component, 'key' | 'name'>;
 }
 
 export default function RegulatoryReport({ component, branchLike }: Props) {
index 0dfeac5cc3afa31917a673e06e4272fe0411a1a2..c9b863805192ea3220d764d425cdc08f208bf292 100644 (file)
@@ -41,8 +41,8 @@ import BranchNewCodeDefinitionSettingModal from './BranchNewCodeDefinitionSettin
 interface Props {
   branchList: Branch[];
   component: Component;
-  inheritedSetting: NewCodeDefinition;
   globalNewCodeDefinition: NewCodeDefinition;
+  inheritedSetting: NewCodeDefinition;
 }
 
 interface State {
index 9050575e1217e518d99f8a9bf7a270b0b34e76cc..3ea6f12303f3d7ced92680f7e744569dc7624ea1 100644 (file)
@@ -37,9 +37,9 @@ interface Props {
   branch: BranchWithNewCodePeriod;
   branchList: Branch[];
   component: string;
-  onClose: (branch?: string, newSetting?: NewCodeDefinition) => void;
-  inheritedSetting: NewCodeDefinition;
   globalNewCodeDefinition: NewCodeDefinition;
+  inheritedSetting: NewCodeDefinition;
+  onClose: (branch?: string, newSetting?: NewCodeDefinition) => void;
 }
 
 interface State {
index f89946bbc3cded3c71f78f086782f1ab02d562e9..3cadd905aa872480102e6ada6f941c2341c50518 100644 (file)
@@ -30,11 +30,11 @@ import { NewCodeDefinitionType } from '../../../types/new-code-definition';
 import { Analysis } from '../../../types/project-activity';
 
 export interface Props {
-  onSelect: (selection: NewCodeDefinitionType) => void;
-  selected: boolean;
   analysis: string;
   branch: string;
   component: string;
+  onSelect: (selection: NewCodeDefinitionType) => void;
+  selected: boolean;
 }
 
 export default function NewCodeDefinitionSettingAnalysis({
index 76fa8185cc54595a4c525458ece6fe55155f46f2..972c76b4b12413761a85a5fd2ac5e536ada4cd12 100644 (file)
@@ -30,6 +30,7 @@ export interface BaselineSettingReferenceBranchProps {
   branchList: BranchOption[];
   className?: string;
   disabled?: boolean;
+  inputSelectMenuPlacement?: MenuPlacement;
   onChangeReferenceBranch: (value: string) => void;
   onSelect: (selection: NewCodeDefinitionType) => void;
   referenceBranch: string;
@@ -38,7 +39,6 @@ export interface BaselineSettingReferenceBranchProps {
     NewCodeDefinitionLevels,
     NewCodeDefinitionLevels.NewProject | NewCodeDefinitionLevels.Global
   >;
-  inputSelectMenuPlacement?: MenuPlacement;
 }
 
 export interface BranchOption {
index 1d56019cc441b2a3c2e78bf8615eca61856fe12c..440a8d74b05cee086e7aded1e8dab4786d009469 100644 (file)
@@ -51,10 +51,10 @@ import BranchList from './BranchList';
 import ProjectNewCodeDefinitionSelector from './ProjectNewCodeDefinitionSelector';
 
 interface ProjectNewCodeDefinitionAppProps extends WithAvailableFeaturesProps {
+  appState: AppState;
   branchLike: Branch;
   branchLikes: BranchLike[];
   component: Component;
-  appState: AppState;
 }
 
 function ProjectNewCodeDefinitionApp(props: Readonly<ProjectNewCodeDefinitionAppProps>) {
index ced1729d12ded9f21d44ecdfa4e3e860231ad0b0..65e436e3250cb52f308ea130ea5960cffc879f8a 100644 (file)
@@ -35,8 +35,8 @@ import NewCodeDefinitionSettingReferenceBranch from './NewCodeDefinitionSettingR
 export interface ProjectBaselineSelectorProps {
   analysis?: string;
   branch?: Branch;
-  branchesEnabled?: boolean;
   branchList: Branch[];
+  branchesEnabled?: boolean;
   component: string;
   days: string;
   globalNewCodeDefinition: NewCodeDefinition;
index 8f21bfd7f112f9e728c0f4c98d7cce00b93e462f..f8a6651cd2dfefb820174570fff6af672fa49b23 100644 (file)
@@ -39,7 +39,7 @@ export interface AddLanguageModalProps {
 export function AddLanguageModal(props: AddLanguageModalProps) {
   const { languages, profilesByLanguage, unavailableLanguages } = props;
 
-  const [{ language, key }, setSelected] = React.useState<{ language?: string; key?: string }>({
+  const [{ language, key }, setSelected] = React.useState<{ key?: string; language?: string }>({
     language: undefined,
     key: undefined,
   });
index a73449bc2323db1be39ddf458043f689382713f7..582c48c0a3f4bef4f195f2cc69ed08d509d74c0f 100644 (file)
@@ -26,8 +26,8 @@ import { LabelValueSelectOption } from '../../../helpers/search';
 import { getQualityProfileUrl } from '../../../helpers/urls';
 
 export interface ProfileOption extends LabelValueSelectOption {
-  language: string;
   isDisabled: boolean;
+  language: string;
 }
 
 export type LanguageProfileSelectOptionProps = OptionProps<ProfileOption, false>;
index 132052c53c971b9d03dc841e7c17d4c82725c78b..f8857e08eda412755ffa63188bf9c190f95d9c39 100644 (file)
@@ -148,8 +148,8 @@ describe('fetchProjects', () => {
         projects: components.map(
           (
             component: Component & {
-              measures: { languages?: string; new_coverage?: string };
               isScannable: boolean;
+              measures: { languages?: string; new_coverage?: string };
             },
           ) => {
             // eslint-disable-next-line jest/no-conditional-in-test
index 18518ea0133dbfd7cb16451848f04aff97c855d3..e43f16359def737656263bf750788f6acda8e0f3 100644 (file)
@@ -148,8 +148,8 @@ export class AllProjects extends React.PureComponent<Props, State> {
 
   handlePerspectiveChange = ({ view }: { view?: string }) => {
     const query: {
-      view: string | undefined;
       sort?: string;
+      view: string | undefined;
     } = {
       view: view === 'overall' ? undefined : view,
     };
index 2d4a69f12f3b09d42007962659da5d3b9eec46a2..693721f51cc0c60f38729eabefccfd45c6a71fdc 100644 (file)
@@ -28,8 +28,8 @@ interface Props {
 }
 
 export interface PerspectiveOption {
-  value: string;
   label: string;
+  value: string;
 }
 
 export default class PerspectiveSelect extends React.PureComponent<Props> {
index 918592fceeb886477d0c5bf7d82765d360bbbb79..3b680c306f19ce4d3256cf61bbff1bf13c43fe11 100644 (file)
@@ -44,8 +44,8 @@ interface Props {
   handleFavorite: (component: string, isFavorite: boolean) => void;
   isFavorite: boolean;
   isFiltered: boolean;
-  loading: boolean;
   loadMore: () => void;
+  loading: boolean;
   projects: Project[];
   query: Query;
   total?: number;
index 41e106aab5f975a7e1fc8a70cb234d187ad649bc..3458e060d211e310c460a800cd31bd22c6c75440 100644 (file)
@@ -41,10 +41,10 @@ interface Props {
 }
 
 export interface Option {
-  label: string;
-  value: string;
   className?: string;
+  label: string;
   short?: string;
+  value: string;
 }
 
 export default class ProjectsSortingSelect extends React.PureComponent<Props> {
index 054d0c39570c4f40c0ddecc5898cbee680815201..201c00fd9688b96738e1affedcf40c0f4279ffa6 100644 (file)
@@ -117,8 +117,8 @@ function renderDefaultPageSelector({
   path = '/projects',
   currentUser = mockLoggedInUser(),
 }: {
-  path?: string;
   currentUser?: CurrentUser;
+  path?: string;
 } = {}) {
   return render(
     <MemoryRouter initialEntries={[path]}>
index e5b1ca342dcd35488a8e22099ef5daf7a9c14684..2047d0f73c2f3625c2c6da6d6b2c7d36a91e308d 100644 (file)
@@ -21,9 +21,9 @@ import classNames from 'classnames';
 import * as React from 'react';
 
 export interface ProjectCardMeasureProps {
+  className?: string;
   label: string;
   metricKey: string;
-  className?: string;
 }
 
 export default function ProjectCardMeasure(
index b34bdd750f6768e7696dd33361df3a0704071b2e..e7cfe3abf6b71c8b4a63d47cb1389a309aa8267e 100644 (file)
@@ -37,9 +37,9 @@ import { Dict } from '../../../../types/types';
 import ProjectCardMeasure from './ProjectCardMeasure';
 
 export interface ProjectCardMeasuresProps {
+  componentQualifier: ComponentQualifier;
   isNewCode: boolean;
   measures: Dict<string | undefined>;
-  componentQualifier: ComponentQualifier;
 }
 
 function renderNewIssues(props: ProjectCardMeasuresProps) {
index e11d3046248f1e06d49b4e5aa2b6a19d7fe42b7f..b80678c43504b5305b5fe6feb21f761458dae40a 100644 (file)
@@ -30,24 +30,24 @@ import { Facet } from '../types';
 export type Option = string | number;
 
 interface Props {
-  property: string;
   className?: string;
-  onQueryChange: (change: RawQuery) => void;
-  options: Option[];
-  renderAccessibleLabel: (option: Option) => string;
-  renderOption: (option: Option, isSelected: boolean) => React.ReactNode;
-
-  value?: Option;
   facet?: Facet;
+  getFacetValueForOption?: (facet: Facet, option: Option) => number;
+  header: string;
+  highlightUnder?: number;
+  highlightUnderMax?: number;
+
   maxFacetValue?: number;
+  onQueryChange: (change: RawQuery) => void;
   optionClassName?: string;
+  options: Option[];
 
-  getFacetValueForOption?: (facet: Facet, option: Option) => number;
+  property: string;
 
-  highlightUnder?: number;
-  highlightUnderMax?: number;
+  renderAccessibleLabel: (option: Option) => string;
+  renderOption: (option: Option, isSelected: boolean) => React.ReactNode;
 
-  header: string;
+  value?: Option;
 }
 
 const defaultGetFacetValueForOption = (facet: Facet, option: string | number) => facet[option];
index 2635b966faf9a51418361c356a67b0504d2760c0..3ccf4a0d176a2eaf5d68ba7cc42945001a766a31 100644 (file)
@@ -24,28 +24,28 @@ import { Dict } from '../../types/types';
 type Level = 'ERROR' | 'WARN' | 'OK';
 
 export interface Query {
+  [x: string]: string | number | string[] | undefined;
+  coverage?: number;
+  duplications?: number;
   gate?: Level;
-  reliability?: number;
-  new_reliability?: number;
-  security?: number;
-  new_security?: number;
-  security_review_rating?: number;
-  new_security_review_rating?: number;
+  languages?: string[];
   maintainability?: number;
-  new_maintainability?: number;
-  coverage?: number;
   new_coverage?: number;
-  duplications?: number;
   new_duplications?: number;
-  size?: number;
   new_lines?: number;
-  languages?: string[];
+  new_maintainability?: number;
+  new_reliability?: number;
+  new_security?: number;
+  new_security_review_rating?: number;
   qualifier?: ComponentQualifier;
-  tags?: string[];
+  reliability?: number;
   search?: string;
+  security?: number;
+  security_review_rating?: number;
+  size?: number;
   sort?: string;
+  tags?: string[];
   view?: string;
-  [x: string]: string | number | string[] | undefined;
 }
 
 export function parseUrlQuery(urlQuery: RawQuery): Query {
index 4abea9916c0aa93cb04adf141fdd30b0ef1a57fa..8d6b00a6f0120acb375153cc4c524dd3ec76f3ae 100644 (file)
@@ -23,6 +23,7 @@ import { Dict } from '../../types/types';
 export interface Project {
   analysisDate?: string;
   isFavorite?: boolean;
+  isScannable: boolean;
   key: string;
   leakPeriodDate?: string;
   measures: Dict<string>;
@@ -31,7 +32,6 @@ export interface Project {
   qualifier: ComponentQualifier;
   tags: string[];
   visibility: Visibility;
-  isScannable: boolean;
 }
 
 export interface Facet {
index a59ea6ea7b9ecdc814ccc90d7c06a7f5c53b4b1f..854d057f476d82fd1d8a34f68cdb62aebbe2dd87 100644 (file)
@@ -154,7 +154,7 @@ export function localizeSorting(sort?: string): string {
   return translate('projects.sort', sort ?? 'name');
 }
 
-export function parseSorting(sort: string): { sortValue: string; sortDesc: boolean } {
+export function parseSorting(sort: string): { sortDesc: boolean; sortValue: string } {
   const desc = sort.startsWith('-');
 
   return { sortValue: desc ? sort.substring(1) : sort, sortDesc: desc };
@@ -178,9 +178,9 @@ export function fetchProjects({
   query,
   pageIndex = 1,
 }: {
-  query: Query;
   isFavorite: boolean;
   pageIndex?: number;
+  query: Query;
 }) {
   const ps = PAGE_SIZE;
 
@@ -271,7 +271,7 @@ export function fetchProjectMeasures(projects: Array<{ key: string }>, query: Qu
   return getMeasuresForProjects(projectKeys, metrics);
 }
 
-function mapFacetValues(values: Array<{ val: string; count: number }>) {
+function mapFacetValues(values: Array<{ count: number; val: string }>) {
   const map: Dict<number> = {};
 
   values.forEach((value) => {
@@ -324,7 +324,7 @@ function getFacetsMap(facets: Facet[]) {
   return map;
 }
 
-export function convertToSorting({ sort }: Query): { s?: string; asc?: boolean } {
+export function convertToSorting({ sort }: Query): { asc?: boolean; s?: string } {
   if (sort?.startsWith('-')) {
     return { s: propertyToMetricMap[sort.substring(1)], asc: false };
   }
@@ -338,7 +338,7 @@ const ONE_DAY = 24 * ONE_HOUR;
 const ONE_MONTH = 30 * ONE_DAY;
 const ONE_YEAR = 12 * ONE_MONTH;
 
-function format(periods: Array<{ value: number; label: string }>) {
+function format(periods: Array<{ label: string; value: number }>) {
   let result = '';
   let count = 0;
   let lastId = -1;
index 8fe725ef81630df24972d6b253c3e3ab52e75704..a699ef58aadcc748cde1ee930ead1fe030e3ba95 100644 (file)
@@ -43,21 +43,21 @@ import DeleteModal from './DeleteModal';
 
 export interface Props {
   analyzedBefore: Date | undefined;
+  appState: AppState;
   onAllDeselected: () => void;
   onAllSelected: () => void;
   onDateChanged: (analyzedBefore: Date | undefined) => void;
   onDeleteProjects: () => void;
   onProvisionedChanged: (provisioned: boolean) => void;
   onQualifierChanged: (qualifier: string) => void;
-  onVisibilityChanged: (qualifier: string) => void;
   onSearch: (query: string) => void;
+  onVisibilityChanged: (qualifier: string) => void;
   projects: Project[];
   provisioned: boolean;
   qualifiers: string;
   query: string;
   ready: boolean;
   selection: any[];
-  appState: AppState;
   total: number;
   visibility?: Visibility;
 }
index 68532aff7e57f760f48a11de7a1474a7b2791a83..62b4c5fd332057cb5a4de22d74f845b02c59a0fd 100644 (file)
@@ -27,8 +27,8 @@ import { DocLink } from '../../../helpers/doc-links';
 import { translate } from '../../../helpers/l10n';
 
 interface Props {
-  renderCaycModal: ({ onClose }: { onClose: () => void }) => React.ReactNode;
   isOptimizing?: boolean;
+  renderCaycModal: ({ onClose }: { onClose: () => void }) => React.ReactNode;
 }
 
 export default function CaycNonCompliantBanner({ renderCaycModal, isOptimizing }: Readonly<Props>) {
index d225dc4c5f06555dd19a8137270c7d57a54ba027..51ba56ea28d18f8f88d4c6eb71c5e676ddc0a943 100644 (file)
@@ -52,12 +52,12 @@ export enum ConditionChange {
 }
 
 interface Props {
-  condition: ConditionType;
   canEdit: boolean;
+  condition: ConditionType;
+  isCaycModal?: boolean;
   metric: Metric;
   qualityGate: QualityGate;
   showEdit?: boolean;
-  isCaycModal?: boolean;
 }
 
 export default function ConditionComponent({
index cc5e8ba28f1ca08f73f03867a25825f59f54ed98..70d264e7afbe8f76d2d3c54d3dab43bfc06b7097 100644 (file)
@@ -32,13 +32,13 @@ import ConditionsTable from './ConditionsTable';
 
 interface Props {
   canEdit: boolean;
-  metrics: Dict<Metric>;
   conditions: Condition[];
-  scope: 'new' | 'overall' | 'new-cayc';
-  onClose: () => void;
+  isOptimizing?: boolean;
   lockEditing: () => void;
+  metrics: Dict<Metric>;
+  onClose: () => void;
   qualityGate: QualityGate;
-  isOptimizing?: boolean;
+  scope: 'new' | 'overall' | 'new-cayc';
 }
 
 export default function CaycReviewUpdateConditionsModal(props: Readonly<Props>) {
index e01c9af08051bca505868a1af71be26d9f089405..181516dce08b7b1b746801c6f615c06143ff8c98 100644 (file)
@@ -28,9 +28,9 @@ import ConditionValueDescription from './ConditionValueDescription';
 
 interface Props {
   condition: Condition;
+  isCaycCompliantAndOverCompliant?: boolean;
   isCaycModal?: boolean;
   metric: Metric;
-  isCaycCompliantAndOverCompliant?: boolean;
 }
 
 function ConditionValue({
index 4f0bf6c5542a257dd6b98b99fc8a5e7c47a6c8f7..e713be7ed20581c29654567eef4ef3167f244606 100644 (file)
@@ -36,8 +36,8 @@ const NO_DESCRIPTION_CONDITION = [
 
 interface Props {
   condition: Condition;
-  metric: Metric;
   isToBeModified?: boolean;
+  metric: Metric;
 }
 
 export default function ConditionValueDescription({
index fa10bd4300d90de20bd641df2c217a5aaf85a20d..425469380090bebe21b25eb8db6cf776988d875c 100644 (file)
@@ -56,8 +56,8 @@ import ConditionsTable from './ConditionsTable';
 import QGRecommendedIcon from './QGRecommendedIcon';
 
 interface Props {
-  qualityGate: QualityGate;
   isFetching?: boolean;
+  qualityGate: QualityGate;
 }
 
 const FORBIDDEN_METRIC_TYPES = ['DATA', 'DISTRIB', 'STRING', 'BOOL'];
index 1d22170598b91342214d31166610dca6a5ab8d24..63ab8c16e652a7e8396a2e646afdc9795bff6876 100644 (file)
@@ -25,12 +25,12 @@ import Condition from './Condition';
 
 interface Props {
   canEdit: boolean;
+  conditions: ConditionType[];
+  isCaycModal?: boolean;
   metrics: Dict<Metric>;
   qualityGate: QualityGate;
-  conditions: ConditionType[];
   scope: 'new' | 'overall' | 'new-cayc';
   showEdit?: boolean;
-  isCaycModal?: boolean;
 }
 
 function Header() {
index 2e371a1cd9ede0919b634cff03acff9857e0d960..6b8a8fa5a3df2a9c02629895795dd2d25c51493f 100644 (file)
@@ -27,8 +27,8 @@ import Projects from './Projects';
 import QualityGatePermissions from './QualityGatePermissions';
 
 export interface DetailsContentProps {
-  qualityGate: QualityGate;
   isFetching?: boolean;
+  qualityGate: QualityGate;
 }
 
 export function DetailsContent(props: DetailsContentProps) {
index 24faa55b0504885b39fd747f67f64b9d3f143cef..c12319f7aa827da5df1b1345df033452aab5e991 100644 (file)
@@ -29,8 +29,8 @@ import ThresholdInput from './ThresholdInput';
 
 interface Props {
   condition: Condition;
-  metric: Metric;
   header: string;
+  metric: Metric;
   onClose: () => void;
   qualityGate: QualityGate;
 }
index 56dba85252b026a50f47c790a4476c05e8efc964..2948d4663dbca5e61fa7e6f4d1f0f32502a41976 100644 (file)
@@ -29,8 +29,8 @@ import BuiltInQualityGateBadge from './BuiltInQualityGateBadge';
 import QGRecommendedIcon from './QGRecommendedIcon';
 
 interface Props {
-  qualityGates: QualityGate[];
   currentQualityGate?: string;
+  qualityGates: QualityGate[];
 }
 
 export default function List({ qualityGates, currentQualityGate }: Props) {
index a10525a0858582bd4550315cbaf0b38f03365fec..dd098646e4525aba3844670b516b8cd11d92afdf 100644 (file)
@@ -28,8 +28,8 @@ import { getLocalizedMetricNameNoDiffMetric } from '../utils';
 
 interface Props {
   metric?: Metric;
-  metricsArray: Metric[];
   metrics: Dict<Metric>;
+  metricsArray: Metric[];
   onMetricChange: (metric: Metric) => void;
 }
 
index 2808769074cc6ca0f82a6512ed249af87bbd379e..163ce1bc8a06c3413da0b05c68f8588c99be97fb 100644 (file)
@@ -32,8 +32,8 @@ import { Group, isUser } from '../../../types/quality-gates';
 import { UserBase } from '../../../types/users';
 
 export interface PermissionItemProps {
-  onClickDelete: (item: UserBase | Group) => void;
   item: UserBase | Group;
+  onClickDelete: (item: UserBase | Group) => void;
 }
 
 export default function PermissionItem(props: PermissionItemProps) {
index 76bbc5e227f3eeecdf2f20829ed6008b9678aaa6..3eaf42adf06011c7cfd6105bb29ebd7bc371876f 100644 (file)
@@ -38,8 +38,8 @@ interface Props {
 }
 
 interface State {
-  needToReload: boolean;
   lastSearchParams?: SelectListSearchParams;
+  needToReload: boolean;
   projects: Project[];
   projectsTotalCount?: number;
   selectedProjects: string[];
index 52d3ff63fec54b38a7220c5626de7ad9cb888244..668238bf60d77c6a40a113aa72e640c45b60b690 100644 (file)
@@ -38,10 +38,10 @@ interface Props {
 
 interface State {
   groups: Group[];
-  submitting: boolean;
   loading: boolean;
-  showAddModal: boolean;
   permissionToDelete?: UserBase | Group;
+  showAddModal: boolean;
+  submitting: boolean;
   users: UserBase[];
 }
 
index 363abc3a087febcc67dd73de3874bbe4cd3d6e13..edd4db2b41dcdb3a6f03f8d49964078c8a8a42d8 100644 (file)
@@ -35,14 +35,14 @@ import { Group as UserGroup, isUser } from '../../../types/quality-gates';
 import { UserBase } from '../../../types/users';
 
 export interface QualityGatePermissionsAddModalRendererProps {
-  onClose: () => void;
   handleSearch: (
     q: string,
     resolve: (options: Options<LabelValueSelectOption<UserBase | UserGroup>>) => void,
   ) => void;
+  onClose: () => void;
   onSelection: (selection: SingleValue<LabelValueSelectOption<UserBase | UserGroup>>) => void;
-  selection?: UserBase | UserGroup;
   onSubmit: (event: React.SyntheticEvent<HTMLFormElement>) => void;
+  selection?: UserBase | UserGroup;
   submitting: boolean;
 }
 
index bfa4287702331f753e92f73a0cd39d6baede68d2..fb01e1f21657921c9426a65e13b860a577ad1867 100644 (file)
@@ -40,11 +40,11 @@ export interface QualityGatePermissionsRendererProps {
   groups: Group[];
   loading: boolean;
   onClickAddPermission: () => void;
+  onClickDeletePermission: (item: UserBase | Group) => void;
   onCloseAddPermission: () => void;
-  onSubmitAddPermission: (item: UserBase | Group) => void;
   onCloseDeletePermission: () => void;
   onConfirmDeletePermission: (item: UserBase | Group) => void;
-  onClickDeletePermission: (item: UserBase | Group) => void;
+  onSubmitAddPermission: (item: UserBase | Group) => void;
   permissionToDelete?: UserBase | Group;
   qualityGate: QualityGate;
   showAddModal: boolean;
index de3c5df65055e4993b10f22222d914ceb6ceb50a..9e2a95efbf52640d0a47b9140a3fd88f34bebb17 100644 (file)
@@ -23,11 +23,11 @@ import { LabelValueSelectOption } from '../../../helpers/search';
 import { Metric } from '../../../types/types';
 
 interface Props {
-  name: string;
-  value: string;
   disabled?: boolean;
   metric: Metric;
+  name: string;
   onChange: (value: string) => void;
+  value: string;
 }
 
 export default class ThresholdInput extends React.PureComponent<Props> {
index ab487e58aa5595afe9a11f6161b929d29f89a79b..fe1cff639065354f25a5bc8ea7d767593f8b841b 100644 (file)
@@ -24,9 +24,9 @@ import { isDiffMetric } from '../../helpers/measures';
 import { CaycStatus, Condition, Dict, Metric, QualityGate } from '../../types/types';
 
 interface GroupedByMetricConditions {
-  overallCodeConditions: Condition[];
-  newCodeConditions: Condition[];
   caycConditions: Condition[];
+  newCodeConditions: Condition[];
+  overallCodeConditions: Condition[];
 }
 
 type CommonCaycMetricKeys =
@@ -181,8 +181,8 @@ function isWeakCondition(key: AllCaycMetricKeys, selectedCondition: Condition) {
 
 export function getWeakMissingAndNonCaycConditions(conditions: Condition[]) {
   const result: {
-    weakConditions: Condition[];
     missingConditions: Condition[];
+    weakConditions: Condition[];
   } = {
     weakConditions: [],
     missingConditions: [],
index 1680149c4ab187b3ced2921549cdf40e631d5c75..723dd1764c1a5ce4ea83894c00a368dea5b454f0 100644 (file)
@@ -32,8 +32,8 @@ import ChangelogEmpty from './ChangelogEmpty';
 import ChangelogSearch from './ChangelogSearch';
 
 interface Props {
-  profile: Profile;
   location: Location;
+  profile: Profile;
   router: Router;
 }
 
index b686d7ce31e7dbd34ef3012e4bc282599e32167e..c3c6a9e5fb621b3b2eca44527864ac1ced1447d9 100644 (file)
@@ -22,10 +22,10 @@ import { useIntl } from 'react-intl';
 import { CleanCodeAttribute, CleanCodeAttributeCategory } from '../../../types/clean-code-taxonomy';
 
 interface Props {
-  oldCleanCodeAttribute: CleanCodeAttribute;
-  oldCleanCodeAttributeCategory: CleanCodeAttributeCategory;
   newCleanCodeAttribute: CleanCodeAttribute;
   newCleanCodeAttributeCategory: CleanCodeAttributeCategory;
+  oldCleanCodeAttribute: CleanCodeAttribute;
+  oldCleanCodeAttributeCategory: CleanCodeAttributeCategory;
 }
 
 export default function CleanCodeAttributeChange(props: Readonly<Props>) {
index 0446064fca56a52312ae503f3234b097abf3f426..a157b450d1b943bfd0f08801b0a54fbf244f5e6f 100644 (file)
@@ -25,16 +25,16 @@ import Tooltip from '../../../components/controls/Tooltip';
 import { Profile } from '../types';
 
 interface Props {
+  onCompare: (rule: string) => void;
   profile: Profile;
   profiles: Profile[];
-  onCompare: (rule: string) => void;
   withKey?: string;
 }
 
 interface Option {
-  value: string;
-  label: string;
   isDefault: boolean | undefined;
+  label: string;
+  value: string;
 }
 
 export default function ComparisonForm(props: Readonly<Props>) {
index 59a91f7d5130a7b7f19959ea43c11f1d1486c1e9..e650a8ac36c189e46f49ec718dd0008daf842073 100644 (file)
@@ -26,10 +26,10 @@ import ConfirmButton from '../../../components/controls/ConfirmButton';
 import Tooltip from '../../../components/controls/Tooltip';
 
 interface Props {
+  canDeactivateInheritedRules: boolean;
   onDone: () => Promise<void>;
   profile: Profile;
   ruleKey: string;
-  canDeactivateInheritedRules: boolean;
 }
 
 export default function ComparisonResultDeactivation(props: React.PropsWithChildren<Props>) {
index 4d97300f812e4770c542e2b89c87706cfcb5714c..066ec051989bc0e9314b2586b60b8df85593bc74 100644 (file)
@@ -35,10 +35,10 @@ import ComparisonResultsSummary from './ComparisonResultsSummary';
 type Params = Dict<string>;
 
 interface Props extends CompareResponse {
+  canDeactivateInheritedRules: boolean;
   leftProfile: Profile;
   refresh: () => Promise<void>;
   rightProfile?: Profile;
-  canDeactivateInheritedRules: boolean;
 }
 
 export default function ComparisonResults(props: Readonly<Props>) {
index 9f90123ed47db697e6e6dbb5b60985ca7351f604..a72e426d868a41db80268a80f40746e112d1f1de 100644 (file)
@@ -22,10 +22,10 @@ import React from 'react';
 import { FormattedMessage, useIntl } from 'react-intl';
 
 interface Props {
-  profileName: string;
-  comparedProfileName?: string;
   additionalCount: number;
+  comparedProfileName?: string;
   fewerCount: number;
+  profileName: string;
 }
 
 export default function ComparisonResultsSummary(props: Readonly<Props>) {
index 49b037cc9f8106fe3255f0023d1497effd85f36d..db150e2c0d60008e17a69ab119533d0fbc1691a3 100644 (file)
@@ -49,9 +49,9 @@ import DeleteProfileForm from './DeleteProfileForm';
 import ProfileModalForm from './ProfileModalForm';
 
 interface Props {
+  isComparable: boolean;
   profile: Profile;
   router: Router;
-  isComparable: boolean;
   updateProfiles: () => Promise<void>;
 }
 
index cc003710d69ee75dadac285bdd13233db7090de0..47a63dc59e414ab37393f802dac535fc7f31f1d9 100644 (file)
@@ -22,8 +22,8 @@ import * as React from 'react';
 import { getProfilePath } from '../utils';
 
 interface Props {
-  className?: string;
   children?: React.ReactElement<any> | string;
+  className?: string;
   language: string;
   name: string;
 }
index 76231c544ccba7378069b2a8a24777111d4a5080..dcc2d61c4d9016c8c366c084b0bd073a394624ff 100644 (file)
@@ -37,8 +37,8 @@ interface Props {
 
 interface State {
   actions?: Actions;
-  loading: boolean;
   exporters?: Exporter[];
+  loading: boolean;
   profiles?: Profile[];
 }
 
index b5f81519bfae1b601b150b16acf1a8e1149f23ea..d5f7851a994da80c95a2c0ccede69d59383c4127 100644 (file)
@@ -39,8 +39,8 @@ interface Props {
 }
 
 interface State {
-  needToReload: boolean;
   lastSearchParams?: SelectListSearchParams;
+  needToReload: boolean;
   projects: ProfileProject[];
   projectsTotalCount?: number;
   selectedProjects: string[];
index 615ce883cf3ac8be3d9599fd87150f4c219ba9cd..c34c384bb7f04d1d81152c04f44bf9f8baeee9eb 100644 (file)
@@ -36,8 +36,8 @@ import {
 } from '../utils';
 
 interface Props {
-  profile: Profile;
   isComparable: boolean;
+  profile: Profile;
   updateProfiles: () => Promise<void>;
 }
 
index 2ee069e3340e6c37c6873ed040a9dbeb424f719c..b23f72ebb9cf132d233f67ae3310d5e1772447e0 100644 (file)
@@ -51,8 +51,8 @@ interface Props {
 }
 
 interface ByType {
-  val: string;
   count: number | null;
+  val: string;
 }
 
 export default function ProfileRules({ profile }: Readonly<Props>) {
@@ -65,9 +65,9 @@ export default function ProfileRules({ profile }: Readonly<Props>) {
   const [countsBySoftwareImpact, setCountsBySoftwareImpact] = useState<Dict<ByType>>({});
   const [totalBySoftwareQuality, setTotalBySoftwareQuality] = useState<Dict<ByType>>({});
   const [sonarWayDiff, setSonarWayDiff] = useState<{
+    missingRuleCount: number;
     profile: string;
     profileName: string;
-    missingRuleCount: number;
   } | null>(null);
 
   useEffect(() => {
index ef2d3973ec217e54f34aaf55df206787b6349e8d..698eb5e917feac4cec9f62b70e46a00391ec13ae 100644 (file)
@@ -27,15 +27,15 @@ import { getRulesUrl } from '../../../helpers/urls';
 import { RulesFacetName } from '../../../types/rules';
 
 interface Props {
-  title: string;
   className?: string;
   count: number | null;
-  qprofile: string;
-  total: number | null;
   propertyName:
     | RulesFacetName.CleanCodeAttributeCategories
     | RulesFacetName.ImpactSoftwareQualities;
   propertyValue: string;
+  qprofile: string;
+  title: string;
+  total: number | null;
 }
 
 export default function ProfileRulesRow(props: Readonly<Props>) {
index 38951ce78b7ac7a5015dbe5b2616fec1782bbc04..6e24853ed66f08765602770c86c836573d8d8d3e 100644 (file)
@@ -27,8 +27,8 @@ import { getRulesUrl } from '../../../helpers/urls';
 interface Props {
   language: string;
   profile: string;
-  sonarway: string;
   sonarWayMissingRules: number;
+  sonarway: string;
 }
 
 export default function ProfileRulesSonarWayComparison(props: Props) {
index a35dcd8b9fa202be26c5c2553e4ec8a0dd128d72..e95012d7908a3e1a6cf220fb5fb2afad35a2dd97 100644 (file)
@@ -29,9 +29,9 @@ import ProfileLink from '../components/ProfileLink';
 import { Profile } from '../types';
 
 export interface ProfilesListRowProps {
+  isComparable: boolean;
   profile: Profile;
   updateProfiles: () => Promise<void>;
-  isComparable: boolean;
 }
 
 export function ProfilesListRow(props: Readonly<ProfilesListRowProps>) {
index 2d2f4e2c4e63604c3b6bad718fa323cfc079f14b..d6e380ca375fec619aa3646afe779162a675ccd6 100644 (file)
@@ -28,40 +28,40 @@ import { IssueSeverity } from '../../types/issues';
 import { Dict } from '../../types/types';
 
 export interface Profile extends BaseProfile {
-  depth: number;
   childrenCount: number;
+  depth: number;
 }
 
 export interface Exporter {
   key: string;
-  name: string;
   languages: string[];
+  name: string;
 }
 
 export interface ProfileChangelogEventImpactChange {
-  oldSoftwareQuality?: SoftwareQuality;
+  newSeverity?: SoftwareImpactSeverity;
   newSoftwareQuality?: SoftwareQuality;
   oldSeverity?: SoftwareImpactSeverity;
-  newSeverity?: SoftwareImpactSeverity;
+  oldSoftwareQuality?: SoftwareQuality;
 }
 
 export interface ProfileChangelogEvent {
   action: string;
   authorName?: string;
   cleanCodeAttributeCategory?: CleanCodeAttributeCategory;
+  date: string;
   // impacts should be always set in the wild. But Next currently has a specific database state for which this field is undefined. May be possible to make this field required in the future.
   impacts?: {
-    softwareQuality: SoftwareQuality;
     severity: SoftwareImpactSeverity;
+    softwareQuality: SoftwareQuality;
   }[];
-  date: string;
   params?: {
-    severity?: IssueSeverity;
-    oldCleanCodeAttribute?: CleanCodeAttribute;
-    oldCleanCodeAttributeCategory?: CleanCodeAttributeCategory;
+    impactChanges?: ProfileChangelogEventImpactChange[];
     newCleanCodeAttribute?: CleanCodeAttribute;
     newCleanCodeAttributeCategory?: CleanCodeAttributeCategory;
-    impactChanges?: ProfileChangelogEventImpactChange[];
+    oldCleanCodeAttribute?: CleanCodeAttribute;
+    oldCleanCodeAttributeCategory?: CleanCodeAttributeCategory;
+    severity?: IssueSeverity;
   } & Dict<string | ProfileChangelogEventImpactChange[] | null>;
   ruleKey: string;
   ruleName: string;
index fb4ba64d883a66856af4ac0606b8070b5885c92b..ad7e8adf121dc91d838b4c9243a480d8a92e099f 100644 (file)
@@ -54,15 +54,15 @@ const PAGE_SIZE = 500;
 
 interface Props {
   branchLike?: BranchLike;
-  currentUser: CurrentUser;
   component: Component;
+  currentUser: CurrentUser;
   location: Location;
   router: Router;
 }
 
 interface State {
-  filterByCategory?: { standard: SecurityStandard; category: string };
   filterByCWE?: string;
+  filterByCategory?: { category: string; standard: SecurityStandard };
   filterByFile?: string;
   filters: HotspotFilters;
   hotspotKeys?: string[];
@@ -340,14 +340,14 @@ export class SecurityHotspotsApp extends React.PureComponent<Props, State> {
     filterByFile,
     page,
   }: {
+    filterByCWE: string | undefined;
+
     filterByCategory:
       | {
-          standard: SecurityStandard;
           category: string;
+          standard: SecurityStandard;
         }
       | undefined;
-
-    filterByCWE: string | undefined;
     filterByFile: string | undefined;
     page: number;
   }) {
index cfb76f48202766cab8eee3a715338a88b0d60f44..ca6afaeebb801c80b38b094d2892895c91521584 100644 (file)
@@ -52,11 +52,11 @@ import HotspotViewer from './components/HotspotViewer';
 export interface SecurityHotspotsAppRendererProps {
   branchLike?: BranchLike;
   component: Component;
+  filterByCWE?: string;
   filterByCategory?: {
-    standard: SecurityStandard;
     category: string;
+    standard: SecurityStandard;
   };
-  filterByCWE?: string;
   filterByFile?: string;
   filters: HotspotFilters;
   hotspots: RawHotspot[];
index 2becfc24363809e228dc047734c1c75891a0b16f..a586ffcc6a23d2919bdc38244de65b6550ed915a 100644 (file)
@@ -26,8 +26,8 @@ import { DocLink } from '../../../helpers/doc-links';
 import { translate } from '../../../helpers/l10n';
 
 export interface EmptyHotspotsPageProps {
-  filtered: boolean;
   filterByFile: boolean;
+  filtered: boolean;
   isStaticListOfHotspots: boolean;
 }
 
index c864e02ac0a98cdfa500a0ab39663b80ab50fcf1..f14527b75975730212f9c50802fa2ee3eb24d721 100644 (file)
@@ -25,11 +25,11 @@ import HotspotListItem from './HotspotListItem';
 
 interface HotspotCategoryProps {
   expanded: boolean;
-  onSetExpanded: (expanded: boolean) => void;
   hotspots: RawHotspot[];
   isLastAndIncomplete: boolean;
   onHotspotClick: (hotspot: RawHotspot) => void;
   onLocationClick: (index: number) => void;
+  onSetExpanded: (expanded: boolean) => void;
   rating: HotspotRatingEnum;
   selectedHotspot: RawHotspot;
   selectedHotspotLocation?: number;
index 9b429fe03e430e19c52ed8007b6584d4b99e17d3..bd19b600e5450dc81c1707e0d706f466ce95924b 100644 (file)
@@ -23,9 +23,9 @@ import FormattingTips from '../../../components/common/FormattingTips';
 import { translate } from '../../../helpers/l10n';
 
 export interface HotspotCommentPopupProps {
-  value?: string;
-  onSubmit: (comment: string) => void;
   onCancel: () => void;
+  onSubmit: (comment: string) => void;
+  value?: string;
 }
 
 export default function HotspotCommentModal(props: HotspotCommentPopupProps) {
index 2fb0a348ab43cef83b9e6f778610e1f68a750d5c..bd4d70e44bd95f9d818bd9552f4d12ab894fa874 100644 (file)
@@ -39,11 +39,11 @@ import HotspotHeaderRightSection from './HotspotHeaderRightSection';
 import Status from './status/Status';
 
 export interface HotspotHeaderProps {
-  hotspot: Hotspot;
-  component: Component;
   branchLike?: BranchLike;
-  standards?: Standards;
+  component: Component;
+  hotspot: Hotspot;
   onUpdateHotspot: (statusUpdate?: boolean, statusOption?: HotspotStatusOption) => Promise<void>;
+  standards?: Standards;
 }
 
 export function HotspotHeader(props: HotspotHeaderProps) {
index 64ea79d48049d840e6f87774da684c464ee0cb2e..0cc28d8a11fc5c626d7ed84e07430a0626cedbb8 100644 (file)
@@ -26,8 +26,8 @@ import { Hotspot, HotspotStatusOption } from '../../../types/security-hotspots';
 import Assignee from './Assignee';
 
 interface Props {
-  hotspot: Hotspot;
   categoryStandard?: string;
+  hotspot: Hotspot;
   onUpdateHotspot: (statusUpdate?: boolean, statusOption?: HotspotStatusOption) => Promise<void>;
 }
 
@@ -64,8 +64,8 @@ export default function HotspotHeaderRightSection(props: Props) {
 
 interface HotspotHeaderInfoProps {
   children: React.ReactNode;
-  title: string;
   className?: string;
+  title: string;
 }
 
 function HotspotHeaderInfo({ children, title, className }: HotspotHeaderInfoProps) {
index a3c15d653348dea27fe89ea47354e21892552266..a0c98c9183f6247b76b776cb4bcbbe064b429681 100644 (file)
@@ -47,8 +47,8 @@ interface Props {
 interface State {
   expandedCategories: Dict<boolean>;
   groupedHotspots: Array<{
+    categories: Array<{ hotspots: RawHotspot[]; key: string; title: string }>;
     risk: HotspotRatingEnum;
-    categories: Array<{ key: string; hotspots: RawHotspot[]; title: string }>;
   }>;
 }
 
index 6b067444615ec94d402fbf1a49ba4526329089b7..29368488d8873df1dbb1eaefb7d86336e4b5cb93 100644 (file)
@@ -35,13 +35,13 @@ import { openHotspot, probeSonarLintServers } from '../../../helpers/sonarlint';
 import { Ide } from '../../../types/sonarlint';
 
 interface Props {
-  projectKey: string;
   hotspotKey: string;
+  projectKey: string;
 }
 
 interface State {
-  loading: boolean;
   ides: Ide[];
+  loading: boolean;
 }
 
 export default class HotspotOpenInIdeButton extends React.PureComponent<Props, State> {
index c39192787a44260f959a3e5a3cec973e87ad350c..7773b01d047f6d703a859179f950a8a487807b77 100644 (file)
@@ -34,18 +34,18 @@ import { SECURITY_STANDARD_RENDERER } from '../utils';
 import HotspotListItem from './HotspotListItem';
 
 export interface HotspotSimpleListProps {
+  filterByCWE?: string;
   filterByCategory?: {
-    standard: SecurityStandard;
     category: string;
+    standard: SecurityStandard;
   };
-  filterByCWE?: string;
   filterByFile?: string;
   hotspots: RawHotspot[];
   hotspotsTotal: number;
   loadingMore: boolean;
   onHotspotClick: (hotspot: RawHotspot) => void;
-  onLocationClick: (index?: number) => void;
   onLoadMore: () => void;
+  onLocationClick: (index?: number) => void;
   selectedHotspot: RawHotspot;
   selectedHotspotLocation?: number;
   standards: Standards;
index 1462abbb52bf781a2dde3401b0137e291bc2d5ed..8f301649c649f0850691233bc8352f37b7ab4f95 100644 (file)
@@ -39,8 +39,8 @@ interface State {
   highlightedSymbols: string[];
   lastLine?: number;
   loading: boolean;
-  sourceLines: SourceLine[];
   secondaryLocations: FlowLocation[];
+  sourceLines: SourceLine[];
 }
 
 const BUFFER_LINES = 10;
index 7ff7023ca183ca9979cf06ba757854b1b949f261..43179dd7c4410f5ac47acec8e2685e3b867d89b1 100644 (file)
@@ -38,13 +38,13 @@ export interface HotspotSnippetContainerRendererProps {
   hotspot: Hotspot;
   loading: boolean;
   locations: { [line: number]: LinearIssueLocation[] };
-  selectedHotspotLocation?: number;
   onExpandBlock: (direction: ExpandDirection) => Promise<void>;
-  onSymbolClick: (symbols: string[]) => void;
   onLocationSelect: (index: number) => void;
+  onSymbolClick: (symbols: string[]) => void;
+  secondaryLocations: FlowLocation[];
+  selectedHotspotLocation?: number;
   sourceLines: SourceLine[];
   sourceViewerFile: SourceViewerFile;
-  secondaryLocations: FlowLocation[];
 }
 
 const noop = () => undefined;
index 54673c08fcdc4645db0be9ccff8909825bfffaa7..29add9012d1444b13ae1b01595ed39fbbc9dec8f 100644 (file)
@@ -35,10 +35,10 @@ import { CurrentUser, isLoggedIn } from '../../../types/users';
 import HotspotOpenInIdeButton from './HotspotOpenInIdeButton';
 
 export interface HotspotSnippetHeaderProps {
-  hotspot: Hotspot;
-  currentUser: CurrentUser;
-  component: Component;
   branchLike?: BranchLike;
+  component: Component;
+  currentUser: CurrentUser;
+  hotspot: Hotspot;
 }
 
 function HotspotSnippetHeader(props: HotspotSnippetHeaderProps) {
index fabc1c7735326dc417be9a56a7a5f2d4e03e5511..22801e6f3f5ec40685ec79047dcac6046f0c6ea6 100644 (file)
@@ -44,13 +44,13 @@ import StatusReviewButton from './status/StatusReviewButton';
 
 interface Props {
   activityTabContent: React.ReactNode;
+  branchLike?: BranchLike;
   codeTabContent: React.ReactNode;
+  component: Component;
   hotspot: Hotspot;
   onUpdateHotspot: (statusUpdate?: boolean, statusOption?: HotspotStatusOption) => Promise<void>;
   ruleDescriptionSections?: RuleDescriptionSection[];
   ruleLanguage?: string;
-  component: Component;
-  branchLike?: BranchLike;
 }
 
 interface Tab {
@@ -244,7 +244,7 @@ export default function HotspotViewerTabs(props: Props) {
   );
 }
 
-const StickyTabs = styled.div<{ top: number; isSticky: boolean }>`
+const StickyTabs = styled.div<{ isSticky: boolean; top: number }>`
   background-color: ${themeColor('pageBlock')};
   box-shadow: ${({ isSticky }) => (isSticky ? themeShadow('sm') : 'none')};
   top: ${({ top }) => top}px;
index 8a54b54ba883daf9a30d52f73544f045d20dd8f2..1379cce6366280f6e2b5de074748997379d91e67 100644 (file)
@@ -28,8 +28,8 @@ import StatusSelectionRenderer from './StatusSelectionRenderer';
 
 interface Props {
   hotspot: Hotspot;
-  onStatusOptionChange: (statusOption: HotspotStatusOption) => Promise<void>;
   onClose: () => void;
+  onStatusOptionChange: (statusOption: HotspotStatusOption) => Promise<void>;
 }
 
 export default function StatusSelection(props: Props) {
index 94752ffb2884cfa9eca0a4f3bd577c8296c10a5a..67d15a1fcf66ee22036c77c3ed65fa51c9472c80 100644 (file)
@@ -24,13 +24,13 @@ import { translate } from '../../../../helpers/l10n';
 import { HotspotStatusOption } from '../../../../types/security-hotspots';
 
 export interface StatusSelectionRendererProps {
-  status: HotspotStatusOption;
-  onStatusChange: (statusOption: HotspotStatusOption) => void;
   comment?: string;
-  onCommentChange: (comment: string) => void;
+  loading: boolean;
   onCancel: () => void;
+  onCommentChange: (comment: string) => void;
+  onStatusChange: (statusOption: HotspotStatusOption) => void;
   onSubmit: () => Promise<void>;
-  loading: boolean;
+  status: HotspotStatusOption;
   submitDisabled: boolean;
 }
 
index 5d98fa70ead01a5b07734a9f1f93f1385a52756a..07e218e7db32e0bd63091d229f2e5b6d810e91fa 100644 (file)
@@ -20,8 +20,8 @@
 import { useEffect, useState } from 'react';
 
 interface Options {
-  offset: number;
   direction?: 'HORIZONTAL' | 'VERTICAL';
+  offset: number;
 }
 
 /*
index c5f6dd41bbe418ea3905730cfbd054af6274fd6c..047a6e69a06eb3ff8e8f698be71aefc60ccf65ab 100644 (file)
@@ -42,9 +42,9 @@ import OAuthProviders from './OAuthProviders';
 export interface LoginProps {
   identityProviders: IdentityProvider[];
   loading: boolean;
+  location: Location;
   message?: string;
   onSubmit: (login: string, password: string) => Promise<void>;
-  location: Location;
 }
 
 export default function Login(props: Readonly<LoginProps>) {
index 99718a5a0a7cd8845bbf92a6b211571f479aac03..ffdf20a0f9d144f5ce92f0f82aad2f18915833ce 100644 (file)
@@ -38,14 +38,14 @@ import PullRequestDecorationBinding from './pullRequestDecorationBinding/PRDecor
 
 export interface AdditionalCategoryComponentProps {
   categories: string[];
-  definitions: ExtendedSettingDefinition[];
   component: Component | undefined;
+  definitions: ExtendedSettingDefinition[];
   selectedCategory: string;
 }
 
 export interface AdditionalCategory {
-  availableGlobally: boolean;
   availableForProject: boolean;
+  availableGlobally: boolean;
   displayTab: boolean;
   key: string;
   name: string;
index 92d95141b5b4e072bb86945162c33a30d3c33fcc..285422ffdcdc16cd9ee260f7dd2400b6ea728e65 100644 (file)
@@ -32,9 +32,9 @@ interface Props {
   category: string;
   component?: Component;
   definitions: ExtendedSettingDefinition[];
-  subCategory?: string;
   displaySubCategoryTitle?: boolean;
   noPadding?: boolean;
+  subCategory?: string;
 }
 
 interface State {
index 13715d82b6d1198eefad9e40b3ff4a2213e3bac5..4dfa5c975414a60d94a1c04654d1115070719493 100644 (file)
@@ -40,12 +40,12 @@ interface Props {
 }
 
 interface State {
+  error?: string;
+  loading: boolean;
+  message: string;
   recipient: string;
   subject: string;
-  message: string;
-  loading: boolean;
   success?: string;
-  error?: string;
 }
 
 export class EmailForm extends React.PureComponent<Props, State> {
index 361dd3306a8abc2dab6fa1d48bebbdf1105b456f..c51f3bbf7e561476b6d2ea45ac3592fb8125ae16 100644 (file)
@@ -36,8 +36,8 @@ import CategoryDefinitionsList from './CategoryDefinitionsList';
 import PageHeader from './PageHeader';
 
 export interface SettingsAppRendererProps {
-  definitions: ExtendedSettingDefinition[];
   component?: Component;
+  definitions: ExtendedSettingDefinition[];
   loading: boolean;
   location: Location;
 }
index 56b3e3b0488ef2bb9190776e5a6808b8ddce42fc..ad11a8197ad04b7755f5496338bbcb7c1ab9add1 100644 (file)
@@ -38,15 +38,15 @@ import { buildSettingLink, isRealSettingKey } from '../utils';
 const SEARCH_INPUT_ID = 'settings-search-input';
 export interface SettingsSearchRendererProps {
   component?: Component;
-  results?: ExtendedSettingDefinition[];
-  searchQuery: string;
-  selectedResult?: string;
-  showResults: boolean;
   onClickOutside: () => void;
   onMouseOverResult: (key: string) => void;
   onSearchInputChange: (query: string) => void;
   onSearchInputFocus: () => void;
   onSearchInputKeyDown: (event: React.KeyboardEvent) => void;
+  results?: ExtendedSettingDefinition[];
+  searchQuery: string;
+  selectedResult?: string;
+  showResults: boolean;
 }
 
 export default function SettingsSearchRenderer(props: Readonly<SettingsSearchRendererProps>) {
index 6ed1d1d198722755b054fac17d318600819ecbf8..cbc93409ded7a46f1c8cb799307a781a1acccae2 100644 (file)
@@ -32,11 +32,11 @@ import EmailForm from './EmailForm';
 export interface SubCategoryDefinitionsListProps {
   category: string;
   component?: Component;
+  displaySubCategoryTitle?: boolean;
   location: Location;
+  noPadding?: boolean;
   settings: Array<SettingDefinitionAndValue>;
   subCategory?: string;
-  displaySubCategoryTitle?: boolean;
-  noPadding?: boolean;
 }
 
 class SubCategoryDefinitionsList extends React.PureComponent<SubCategoryDefinitionsListProps> {
index 2f38beab91483fe11be68575cb69303876c53865..df0104f8119e516ca42dd9e2cdbd0c4374a2c7dd 100644 (file)
@@ -48,28 +48,28 @@ import { BITBUCKET_CLOUD_WORKSPACE_ID_FORMAT } from '../../constants';
 import AlmBindingDefinitionFormRenderer from './AlmBindingDefinitionFormRenderer';
 
 export interface AlmBindingDefinitionFormProps {
+  afterSubmit: (data: AlmBindingDefinitionBase) => void;
   alm: AlmKeys;
   bindingDefinition?: AlmBindingDefinition;
-  onCancel: () => void;
-  afterSubmit: (data: AlmBindingDefinitionBase) => void;
   enforceValidation?: boolean;
+  onCancel: () => void;
 }
 
 interface State {
+  alreadySavedFormData?: AlmBindingDefinition;
+  bitbucketVariant?: AlmKeys.BitbucketServer | AlmKeys.BitbucketCloud;
   formData: AlmBindingDefinition;
-  touched: boolean;
   submitting: boolean;
-  bitbucketVariant?: AlmKeys.BitbucketServer | AlmKeys.BitbucketCloud;
-  alreadySavedFormData?: AlmBindingDefinition;
+  touched: boolean;
   validationError?: string;
 }
 
 const BINDING_PER_ALM: {
   [key in AlmKeys]: {
     createApi: (def: AlmBindingDefinition) => Promise<void>;
-    updateApi: (def: AlmBindingDefinition) => Promise<void>;
     defaultBinding: AlmBindingDefinition;
     optionalFields: Dict<boolean>;
+    updateApi: (def: AlmBindingDefinition) => Promise<void>;
   };
 } = {
   [AlmKeys.Azure]: {
index 0d0429fd133ac449b0a47bfc9936452b003c0789..2a11ebe6f3541ef366d899658d20e12420a5931d 100644 (file)
@@ -39,6 +39,7 @@ export interface AlmBindingDefinitionFormFieldProps<B extends AlmBindingDefiniti
   help?: React.ReactNode;
   id: string;
   isInvalid?: boolean;
+  isSecret?: boolean;
   isTextArea?: boolean;
   maxLength?: number;
   onFieldChange: (id: keyof B, value: string) => void;
@@ -46,7 +47,6 @@ export interface AlmBindingDefinitionFormFieldProps<B extends AlmBindingDefiniti
   overwriteOnly?: boolean;
   propKey: keyof B;
   value: string;
-  isSecret?: boolean;
 }
 
 export function AlmBindingDefinitionFormField<B extends AlmBindingDefinitionBase>(
index ba2e2d3b0e154b5fe7c64f73c5336cb4a14a1792..f72477945d5f1b7884ef63d1e5ad5a502f443d91 100644 (file)
@@ -36,19 +36,19 @@ import GitlabForm from './GitlabForm';
 
 export interface Props {
   alm: AlmKeys;
-  isUpdate: boolean;
+  bitbucketVariant?: AlmKeys.BitbucketServer | AlmKeys.BitbucketCloud;
   canSubmit: boolean;
-  onCancel: () => void;
-  onSubmit: () => void;
-  onFieldChange: (fieldId: keyof AlmBindingDefinition, value: string) => void;
+  errorListElementRef: React.RefObject<HTMLDivElement>;
   formData: AlmBindingDefinition;
-  submitting: boolean;
-  bitbucketVariant?: AlmKeys.BitbucketServer | AlmKeys.BitbucketCloud;
+  isUpdate: boolean;
   onBitbucketVariantChange: (
     bitbucketVariant: AlmKeys.BitbucketServer | AlmKeys.BitbucketCloud,
   ) => void;
+  onCancel: () => void;
+  onFieldChange: (fieldId: keyof AlmBindingDefinition, value: string) => void;
+  onSubmit: () => void;
+  submitting: boolean;
   validationError?: string;
-  errorListElementRef: React.RefObject<HTMLDivElement>;
 }
 
 export default class AlmBindingDefinitionFormRenderer extends React.PureComponent<Readonly<Props>> {
index 4f60586bf1bbc6955234f39956183b6b4dca8193..99cdc5ce918dcc682ac951a54731e107f3d419db 100644 (file)
@@ -52,8 +52,8 @@ export type AlmTabs = AlmKeys.Azure | AlmKeys.GitHub | AlmKeys.GitLab | AlmKeys.
 interface State {
   currentAlmTab: AlmTabs;
   definitionKeyForDeletion?: string;
-  definitions: AlmSettingsBindingDefinitions;
   definitionStatus: Dict<AlmSettingsBindingStatus>;
+  definitions: AlmSettingsBindingDefinitions;
   loadingAlmDefinitions: boolean;
   loadingProjectCount: boolean;
   projectCount?: number;
index 73da55bf78f9ad476ae98c22e72c146abc55fd7a..7ebcb57b0b53c807f2fce58fecffcd63e7373124 100644 (file)
@@ -41,8 +41,8 @@ export interface AlmIntegrationRendererProps {
   branchesEnabled: boolean;
   currentAlmTab: AlmTabs;
   definitionKeyForDeletion?: string;
-  definitions: AlmSettingsBindingDefinitions;
   definitionStatus: Dict<AlmSettingsBindingStatus>;
+  definitions: AlmSettingsBindingDefinitions;
   loadingAlmDefinitions: boolean;
   loadingProjectCount: boolean;
   multipleAlmEnabled: boolean;
index 2a7e94cf238dca517eff3715c70887b1c3fef95b..fb277d721a1ac1713df217f4bd613f5e56cffc06 100644 (file)
@@ -30,8 +30,8 @@ import AlmTabRenderer from './AlmTabRenderer';
 interface Props {
   almTab: AlmTabs;
   branchesEnabled: boolean;
-  definitions: AlmBindingDefinition[];
   definitionStatus: Dict<AlmSettingsBindingStatus>;
+  definitions: AlmBindingDefinition[];
   loadingAlmDefinitions: boolean;
   loadingProjectCount: boolean;
   multipleAlmEnabled: boolean;
@@ -41,8 +41,8 @@ interface Props {
 }
 
 interface State {
-  editedDefinition?: AlmBindingDefinition;
   editDefinition?: boolean;
+  editedDefinition?: AlmBindingDefinition;
 }
 
 export default class AlmTab extends React.PureComponent<Props, State> {
index 151e080a27ce657eaefe8409c314d364d55ba379..161c0051952f83b6bf1988a09c0f87b7349fa5c6 100644 (file)
@@ -35,12 +35,13 @@ import { AlmTabs } from './AlmIntegration';
 import CreationTooltip from './CreationTooltip';
 
 export interface AlmTabRendererProps {
+  afterSubmit: (config: AlmBindingDefinitionBase) => void;
   almTab: AlmTabs;
   branchesEnabled: boolean;
   definitionStatus: Dict<AlmSettingsBindingStatus>;
+  definitions: AlmBindingDefinition[];
   editDefinition?: boolean;
   editedDefinition?: AlmBindingDefinition;
-  definitions: AlmBindingDefinition[];
   loadingAlmDefinitions: boolean;
   loadingProjectCount: boolean;
   multipleAlmEnabled: boolean;
@@ -49,7 +50,6 @@ export interface AlmTabRendererProps {
   onCreate: () => void;
   onDelete: (definitionKey: string) => void;
   onEdit: (definitionKey: string) => void;
-  afterSubmit: (config: AlmBindingDefinitionBase) => void;
 }
 
 const AUTHENTICATION_AVAILABLE_PLATFORMS = [
index ddb1abfeaca86aa1c0946f4153d89ea14f55c523..08aef939c041847394f22f1e51a61b7a5b576354 100644 (file)
@@ -35,8 +35,8 @@ export interface BitbucketFormProps {
     fieldId: keyof (BitbucketServerBindingDefinition & BitbucketCloudBindingDefinition),
     value: string,
   ) => void;
-  variant?: AlmKeys.BitbucketServer | AlmKeys.BitbucketCloud;
   onVariantChange: (variant: AlmKeys.BitbucketServer | AlmKeys.BitbucketCloud) => void;
+  variant?: AlmKeys.BitbucketServer | AlmKeys.BitbucketCloud;
 }
 
 export default function BitbucketForm(props: Readonly<BitbucketFormProps>) {
index 1752f19a26200561f1d2644c7221a1a93fae344d..96b25eaea18655b2a7c73e6c3115b7115a7c0816 100644 (file)
@@ -24,9 +24,9 @@ import { translate, translateWithParameters } from '../../../../helpers/l10n';
 
 export interface DeleteModalProps {
   id: string;
-  projectCount?: number;
-  onDelete: (id: string) => void;
   onCancel: () => void;
+  onDelete: (id: string) => void;
+  projectCount?: number;
 }
 
 function showProjectCountWarning(projectCount?: number) {
index 17b4380adb58a5d3ff25c327e20f992b78c3bacf..511c6d8b8f195d5a744909eb58c46a02e9f08c8c 100644 (file)
@@ -37,13 +37,13 @@ import AuthenticationSecuredField from './AuthenticationSecuredField';
 import AuthenticationToggleFormField from './AuthenticationToggleField';
 
 interface Props {
-  settingValue?: string | boolean | string[];
+  className?: string;
   definition: ExtendedSettingDefinition | DefinitionV2;
+  error?: string;
+  isNotSet: boolean;
   mandatory?: boolean;
   onFieldChange: (key: string, value: string | boolean | string[]) => void;
-  isNotSet: boolean;
-  error?: string;
-  className?: string;
+  settingValue?: string | boolean | string[];
 }
 
 export default function AuthenticationFormField(props: Readonly<Props>) {
index d10f23ab05d93d91b5eb8ea3ce39b43fb35217c0..209497489daa80806878979c59064f574c768117 100644 (file)
@@ -24,9 +24,9 @@ import { DefinitionV2, ExtendedSettingDefinition } from '../../../../types/setti
 import { getPropertyName } from '../../utils';
 
 interface Props {
+  definition: ExtendedSettingDefinition | DefinitionV2;
   onFieldChange: (value: string[]) => void;
   settingValue?: string[];
-  definition: ExtendedSettingDefinition | DefinitionV2;
 }
 
 export default function AuthenticationMultiValueField(props: Props) {
index 7aea38525257889105934c2c5ee29fc9fad3564d..bed6bf52c4ac11fffedddd2ff2fa1e15663a0e26 100644 (file)
@@ -24,11 +24,11 @@ import { DefinitionV2, ExtendedSettingDefinition, SettingType } from '../../../.
 import { isSecuredDefinition } from '../../utils';
 
 interface SamlToggleFieldProps {
-  onFieldChange: (key: string, value: string) => void;
-  settingValue?: string;
   definition: ExtendedSettingDefinition | DefinitionV2;
-  optional?: boolean;
   isNotSet: boolean;
+  onFieldChange: (key: string, value: string) => void;
+  optional?: boolean;
+  settingValue?: string;
 }
 
 export default function AuthenticationSecuredField(props: SamlToggleFieldProps) {
index 95f3f8cf6715ae52b08d7ff32be1028b1a360c97..ce51bac0d1644c8cb2582593967b9e551e4e57a3 100644 (file)
@@ -23,9 +23,9 @@ import { DefinitionV2, ExtendedSettingDefinition } from '../../../../types/setti
 import { getPropertyName } from '../../utils';
 
 interface SamlToggleFieldProps {
+  definition: ExtendedSettingDefinition | DefinitionV2;
   onChange: (value: boolean) => void;
   settingValue?: string | boolean;
-  definition: ExtendedSettingDefinition | DefinitionV2;
 }
 
 export default function AuthenticationToggleField(props: SamlToggleFieldProps) {
index b2bd2d3948c9715917d232e59ba17ebc257a7241..5a5c948305f81ebd08e7f8abdacc266d404418b1 100644 (file)
@@ -29,15 +29,15 @@ import React, { ReactElement } from 'react';
 import { translate } from '../../../../helpers/l10n';
 
 interface Props {
-  title: string;
-  url: string | string[] | undefined;
   canDisable: boolean;
-  onEdit: () => void;
-  onDelete: () => void;
-  onToggle: () => void;
+  enabled: boolean;
   extraActions?: ReactElement;
   isDeleting: boolean;
-  enabled: boolean;
+  onDelete: () => void;
+  onEdit: () => void;
+  onToggle: () => void;
+  title: string;
+  url: string | string[] | undefined;
 }
 
 export default function ConfigurationDetails(props: Readonly<Props>) {
index b6a8dc3e13c9a526576ed65dc33ceef0db846076..7b430578b8bd9c58a5247e9f4a4b5a5213a89837 100644 (file)
@@ -26,11 +26,11 @@ import { Provider } from '../../../../types/types';
 
 interface Props {
   allowUsersToSignUp?: boolean;
-  provider: Provider.Github | Provider.Gitlab;
+  hasProvisioningTypeChange?: boolean;
   isAllowListEmpty: boolean;
   onClose: VoidFunction;
   onConfirm: VoidFunction;
-  hasProvisioningTypeChange?: boolean;
+  provider: Provider.Github | Provider.Gitlab;
   provisioningStatus: ProvisioningType;
 }
 
index d22e7f0bf55cdef3e1eb66e39a21ca159eeb29ac..a13456ad010a5e3cbbf619ae499871f2e0a741ad 100644 (file)
@@ -45,14 +45,14 @@ import { GitHubMapping } from '../../../../types/provisioning';
 
 interface Props {
   mapping: GitHubMapping[] | null;
-  setMapping: React.Dispatch<React.SetStateAction<GitHubMapping[] | null>>;
   onClose: () => void;
+  setMapping: React.Dispatch<React.SetStateAction<GitHubMapping[] | null>>;
 }
 
 interface PermissionCellProps {
+  list?: GitHubMapping[];
   mapping: GitHubMapping;
   setMapping: React.Dispatch<React.SetStateAction<GitHubMapping[] | null>>;
-  list?: GitHubMapping[];
 }
 
 const DEFAULT_CUSTOM_ROLE_PERMISSIONS: GitHubMapping['permissions'] = {
index 3ec7e17a066df7dcc8aa74dc3866f61fcf71acdd..00f377de25fb79b7035b04ee675a5f87d9ce5949 100644 (file)
@@ -47,10 +47,10 @@ import ProvisioningSection from './ProvisioningSection';
 import TabHeader from './TabHeader';
 
 interface ChangesForm {
-  provisioningType?: GitLabConfigurationUpdateBody['provisioningType'];
   allowUsersToSignUp?: GitLabConfigurationUpdateBody['allowUsersToSignUp'];
-  provisioningToken?: GitLabConfigurationUpdateBody['provisioningToken'];
   allowedGroups?: GitLabConfigurationUpdateBody['allowedGroups'];
+  provisioningToken?: GitLabConfigurationUpdateBody['provisioningToken'];
+  provisioningType?: GitLabConfigurationUpdateBody['provisioningType'];
 }
 
 const getDefinitions = (
index b14f2999d8cefbe94e5f4cad431caf8cbadda504..d40ed733154cbe002e39cb8a262482b0e2a3277e 100644 (file)
@@ -44,9 +44,9 @@ interface ErrorValue {
 }
 
 interface FormData {
-  value: string | boolean | string[];
-  required: boolean;
   definition: DefinitionV2;
+  required: boolean;
+  value: string | boolean | string[];
 }
 
 const DEFAULT_URL = 'https://gitlab.com';
index 99b3caffb8d6b60c422396121099688d3627efb8..e670aa781b36ad9d9567ca46619a306a50b76d26 100644 (file)
@@ -53,8 +53,8 @@ import useGithubConfiguration, {
 } from './hook/useGithubConfiguration';
 
 interface GithubAuthenticationProps {
-  definitions: ExtendedSettingDefinition[];
   currentTab: AuthenticationTabs;
+  definitions: ExtendedSettingDefinition[];
 }
 
 const GITHUB_EXCLUDED_FIELD = ['sonar.auth.github.enabled', ...GITHUB_ADDITIONAL_FIELDS];
index ce0c4fd037fdc040f91582c2e082784ca6de3532..1d86f614874165d0af97b9ab33e0e1a3190f188d 100644 (file)
@@ -31,27 +31,27 @@ import { translate } from '../../../../helpers/l10n';
 import { ProvisioningType } from '../../../../types/provisioning';
 
 interface Props {
-  isLoading?: boolean;
-  provisioningType: ProvisioningType;
-  onChangeProvisioningType: (val: ProvisioningType) => void;
-  disabledConfigText: string;
-  jitTitle: string;
-  jitDescription: string | ReactElement;
-  jitSettings?: ReactElement;
-  autoTitle: string;
   autoDescription: ReactElement;
-  synchronizationDetails?: ReactElement;
-  autoSettings?: ReactElement;
-  hasFeatureEnabled: boolean;
-  hasDifferentProvider: boolean;
   autoFeatureDisabledText: string | ReactElement;
-  onSave: (e: FormEvent) => void;
-  onSyncNow?: () => void;
-  onCancel: () => void;
-  hasUnsavedChanges: boolean;
+  autoSettings?: ReactElement;
+  autoTitle: string;
   canSave?: boolean;
   canSync?: boolean;
+  disabledConfigText: string;
   enabled: boolean;
+  hasDifferentProvider: boolean;
+  hasFeatureEnabled: boolean;
+  hasUnsavedChanges: boolean;
+  isLoading?: boolean;
+  jitDescription: string | ReactElement;
+  jitSettings?: ReactElement;
+  jitTitle: string;
+  onCancel: () => void;
+  onChangeProvisioningType: (val: ProvisioningType) => void;
+  onSave: (e: FormEvent) => void;
+  onSyncNow?: () => void;
+  provisioningType: ProvisioningType;
+  synchronizationDetails?: ReactElement;
 }
 
 export default function ProvisioningSection(props: Readonly<Props>) {
index 5b9daefc18bd2e5866c6582ddabefa5e3a06631f..44dcf633d15fbe00fdb832ae4f278074896ca5d8 100644 (file)
@@ -22,10 +22,10 @@ import React, { ReactElement } from 'react';
 import { translate } from '../../../../helpers/l10n';
 
 interface Props {
-  title: string;
-  showCreate: boolean;
-  onCreate: () => void;
   configurationValidity?: ReactElement;
+  onCreate: () => void;
+  showCreate: boolean;
+  title: string;
 }
 
 export default function TabHeader({
index 91bbc0774129c7bfad108b5c79f07fa327510e03..18ced49b36ab14521555bde496eb42e8600ab1f7 100644 (file)
@@ -25,11 +25,11 @@ import { translate } from '../../../../helpers/l10n';
 const intlPrefix = 'settings.authentication.configuration';
 
 interface Props {
-  loading: boolean;
-  onTestConf: () => void;
-  flagMessageVariant: Variant;
   flagMessageContent: React.ReactNode;
   flagMessageTitle: string;
+  flagMessageVariant: Variant;
+  loading: boolean;
+  onTestConf: () => void;
 }
 
 export default function GitLabConfigurationValidity(props: Readonly<Props>) {
index edd550dc35cf78a50f468cb0c260ae158e0647da..c9d835f057a3f8f14e2b76fe0fde8ff7fde54176 100644 (file)
@@ -26,22 +26,22 @@ import { Dict } from '../../../../../types/types';
 
 export type SettingValue =
   | {
+      definition: ExtendedSettingDefinition;
+      isNotSet: boolean;
       key: string;
-      multiValues: false;
       mandatory: boolean;
-      isNotSet: boolean;
-      value?: string;
+      multiValues: false;
       newValue?: string | boolean;
-      definition: ExtendedSettingDefinition;
+      value?: string;
     }
   | {
+      definition: ExtendedSettingDefinition;
+      isNotSet: boolean;
       key: string;
-      multiValues: true;
       mandatory: boolean;
-      isNotSet: boolean;
-      value?: string[];
+      multiValues: true;
       newValue?: string[];
-      definition: ExtendedSettingDefinition;
+      value?: string[];
     };
 
 export default function useConfiguration(
index 6890c9c8e0c38939b71c4dc4c0e78c578dddf9c5..4593b87f7d27e40c33c3d1df60212c816d9e5884 100644 (file)
@@ -49,12 +49,12 @@ export const OPTIONAL_FIELDS = [
 ];
 
 export interface SamlSettingValue {
+  definition: ExtendedSettingDefinition;
+  isNotSet: boolean;
   key: string;
   mandatory: boolean;
-  isNotSet: boolean;
-  value?: string;
   newValue?: string | boolean;
-  definition: ExtendedSettingDefinition;
+  value?: string;
 }
 
 export const isOrganizationListEmpty = (values: Record<string, SettingValue>) =>
index 80b4f8caeb573e5c22c17b3e7c5360ec11ec3436..d33e8defbb0a98e4a6386c5eafe3d55a56542f24 100644 (file)
@@ -38,8 +38,8 @@ import { Dict } from '../../../../types/types';
 
 export interface AlmSpecificFormProps extends WithAvailableFeaturesProps {
   alm: AlmKeys;
-  instances: AlmSettingsInstance[];
   formData: Omit<ProjectAlmBindingResponse, 'alm'>;
+  instances: AlmSettingsInstance[];
   onFieldChange: (id: keyof ProjectAlmBindingResponse, value: string | boolean) => void;
 }
 
@@ -50,8 +50,8 @@ interface LabelProps {
 
 interface CommonFieldProps extends LabelProps {
   help?: boolean;
-  helpParams?: Dict<string | JSX.Element>;
   helpExample?: JSX.Element;
+  helpParams?: Dict<string | JSX.Element>;
   onFieldChange: (id: keyof ProjectAlmBindingResponse, value: string | boolean) => void;
   propKey: keyof ProjectAlmBindingResponse;
 }
@@ -103,8 +103,8 @@ function renderLabel(props: LabelProps) {
 
 function renderBooleanField(
   props: Omit<CommonFieldProps, 'optional'> & {
-    value: boolean;
     inputExtra?: React.ReactNode;
+    value: boolean;
   },
 ) {
   const { id, value, onFieldChange, propKey, inputExtra } = props;
index a56bf2fcb1a7fe0e4b517f6974a079c07f429dea..a5054de5ee8c9c66e7b371003459720b96512cf4 100644 (file)
@@ -46,6 +46,8 @@ interface Props {
 }
 
 interface State {
+  checkingConfiguration: boolean;
+  configurationErrors?: ProjectAlmBindingConfigurationErrors;
   formData: FormData;
   instances: AlmSettingsInstance[];
   isChanged: boolean;
@@ -53,10 +55,8 @@ interface State {
   isValid: boolean;
   loading: boolean;
   originalData?: FormData;
-  updating: boolean;
   successfullyUpdated: boolean;
-  checkingConfiguration: boolean;
-  configurationErrors?: ProjectAlmBindingConfigurationErrors;
+  updating: boolean;
 }
 
 const REQUIRED_FIELDS_BY_ALM: {
index 47e215da6fd2edb287bb954f38b0b4c94afb3431..28a1093d711cee99061226c34dd58b5c7a82e868 100644 (file)
@@ -45,21 +45,21 @@ import { ALM_INTEGRATION_CATEGORY } from '../../constants';
 import AlmSpecificForm from './AlmSpecificForm';
 
 export interface PRDecorationBindingRendererProps {
+  checkingConfiguration: boolean;
+  configurationErrors?: ProjectAlmBindingConfigurationErrors;
   formData: Omit<ProjectAlmBindingResponse, 'alm'>;
   instances: AlmSettingsInstance[];
   isChanged: boolean;
   isConfigured: boolean;
+  isSysAdmin: boolean;
   isValid: boolean;
   loading: boolean;
+  onCheckConfiguration: () => void;
   onFieldChange: (id: keyof ProjectAlmBindingResponse, value: string | boolean) => void;
   onReset: () => void;
   onSubmit: () => void;
-  updating: boolean;
   successfullyUpdated: boolean;
-  onCheckConfiguration: () => void;
-  checkingConfiguration: boolean;
-  configurationErrors?: ProjectAlmBindingConfigurationErrors;
-  isSysAdmin: boolean;
+  updating: boolean;
 }
 
 export default function PRDecorationBindingRenderer(props: PRDecorationBindingRendererProps) {
index b698dc4b9cc7502ffccb2326ccc8e6141d7c9f2f..22abab10298cbe0692d2d21e78ba01ab819ff770 100644 (file)
@@ -87,7 +87,7 @@ it.each([
   },
 ])(
   'should get, set, delete and validate binding for $alm',
-  async ({ key, alm }: { key: string; alm: AlmKeys }) => {
+  async ({ key, alm }: { alm: AlmKeys; key: string }) => {
     const { ui, user } = getPageObjects();
     almSettings.setProjectBindingConfigurationErrors({
       scope: ProjectAlmBindingConfigurationErrorScope.Global,
index d23d290e956c9dd58c70bd08319de397b88efc74..538c0dceae88d1c6e54be3ab9ebe0961cea5e001 100644 (file)
@@ -37,8 +37,8 @@ import { Component, Dict } from '../../types/types';
 export const DEFAULT_CATEGORY = 'general';
 
 export type DefaultSpecializedInputProps = DefaultInputProps & {
-  className?: string;
   autoComplete?: string;
+  className?: string;
   isDefault: boolean;
   name: string;
   type?: string;
@@ -46,15 +46,15 @@ export type DefaultSpecializedInputProps = DefaultInputProps & {
 
 export interface DefaultInputProps {
   autoFocus?: boolean;
+  hasValueChanged?: boolean;
   isEditing?: boolean;
   isInvalid?: boolean;
-  size?: InputSizeKeys;
-  hasValueChanged?: boolean;
   onCancel?: () => void;
   onChange: (value: any) => void;
   onEditing?: () => void;
   onSave?: () => void;
   setting: Setting;
+  size?: InputSizeKeys;
   value: any;
 }
 
index a3b75cbf96d08512a2356858056db5ea0a9b76c9..a9e10bea8affc6f7c2f840b61580e5d48a34cb6d 100644 (file)
@@ -28,11 +28,11 @@ import { AppState } from '../../../types/appstate';
 import PageActions from './PageActions';
 
 export interface Props {
+  appState: AppState;
   isCluster: boolean;
   loading: boolean;
   logLevel: string;
   onLogLevelChange: () => void;
-  appState: AppState;
   serverId?: string;
   version?: string;
 }
index 73551380dc5ab3cefc979e01a75f323b1d965023..ad723d90ffcc01ddea7a7c56704b0f9dee20496d 100644 (file)
@@ -29,9 +29,9 @@ import Section from './Section';
 interface Props {
   health?: HealthTypes;
   healthCauses?: string[];
+  name: string;
   onClick: (toggledCard: string) => void;
   open: boolean;
-  name: string;
   sysInfoData: SysInfoValueObject;
 }
 
index 9b1988e7fab5e4694f5af03fba9f501ca2b2638d..5b6ffb280e7719d62508b78feb942c39d154ed3a 100644 (file)
@@ -26,10 +26,10 @@ import { HealthTypes } from '../../../../types/types';
 import HealthCauseItem from './HealthCauseItem';
 
 interface Props {
-  name?: string;
   className?: string;
   health: HealthTypes;
   healthCauses?: string[];
+  name?: string;
 }
 
 export default function HealthItem({ className, name, health, healthCauses }: Readonly<Props>) {
index 6c333478732e6a2f78f2b98c36c02c7d2d8cd9f7..331249eba2c5537748cdd6da1cfff38838763b7d 100644 (file)
@@ -24,8 +24,8 @@ import { SysInfoValueObject } from '../../../../types/types';
 import SysInfoItem from './SysInfoItem';
 
 interface Props {
-  name?: string;
   items: SysInfoValueObject;
+  name?: string;
 }
 
 const COLUMNS = ['0', 'auto'];
index 40178bb16e06c7c5af0f8e6047feaa5e30c17575..05f957b3325e0e10772ce64b15e7996e66770d5e 100644 (file)
@@ -27,8 +27,8 @@ import UserListItem from './components/UserListItem';
 
 interface Props {
   identityProviders: IdentityProvider[];
-  users: RestUserDetailed[];
   manageProvider: Provider | undefined;
+  users: RestUserDetailed[];
 }
 
 export default function UsersList({ identityProviders, users, manageProvider }: Props) {
index ff745df2e81327bb7ccc204150e9c23a037a9b7d..1fd491db24fde48f0b765beee3e7fd2723a1a658 100644 (file)
@@ -71,7 +71,7 @@ export function TokensForm(props: Readonly<Props>) {
   );
 
   const [tokenExpirationOptions, setTokenExpirationOptions] =
-    React.useState<{ value: TokenExpiration; label: string }[]>(EXPIRATION_OPTIONS);
+    React.useState<{ label: string; value: TokenExpiration }[]>(EXPIRATION_OPTIONS);
 
   const { mutateAsync: generate, isPending: generating } = useGenerateTokenMutation();
 
index 0b0bdcb570215ccea83907a03091c6ceb5a88f3d..5404d2b3393d850193c9d67b87cd224a04bc86a9 100644 (file)
@@ -26,8 +26,8 @@ import { RestUserDetailed } from '../../../types/users';
 import TokensForm from './TokensForm';
 
 interface Props {
-  user: RestUserDetailed;
   onClose: () => void;
+  user: RestUserDetailed;
 }
 
 export default function TokensFormModal(props: Readonly<Props>) {
index 2bac4faced2d8453d32370227c67a0de1266cce7..59a775528c13f2788643b8d99af9b721909ba36a 100644 (file)
@@ -34,8 +34,8 @@ import PasswordForm from './PasswordForm';
 import UserForm from './UserForm';
 
 interface Props {
-  user: RestUserDetailed;
   manageProvider: Provider | undefined;
+  user: RestUserDetailed;
 }
 
 export default function UserActions(props: Props) {
index 8fd2f938a4609de54ef7145acc921d4520d245b4..408bf512da04ad635b7b5c16f9f3613a5e1fd7c2 100644 (file)
@@ -38,9 +38,9 @@ import { RestUserDetailed } from '../../../types/users';
 import UserScmAccountInput from './UserScmAccountInput';
 
 export interface Props {
+  isInstanceManaged: boolean;
   onClose: () => void;
   user?: RestUserDetailed;
-  isInstanceManaged: boolean;
 }
 
 const BAD_REQUEST = 400;
index c3f434223a05b539349ddc12b070bd2b81bd5f6b..9d8855acb1568c4afb8968137e99e3d5d1551805 100644 (file)
@@ -34,8 +34,8 @@ import UserScmAccounts from './UserScmAccounts';
 
 export interface UserListItemProps {
   identityProvider?: IdentityProvider;
-  user: RestUserDetailed;
   manageProvider: Provider | undefined;
+  user: RestUserDetailed;
 }
 
 export default function UserListItem(props: Readonly<UserListItemProps>) {
index ce64e3bae5508fbdd9a730f75281e2835062284b..8d96b903376b41fbe6d97449539e34b99fe897a6 100644 (file)
@@ -29,8 +29,8 @@ import { RestUserDetailed } from '../../../types/users';
 
 export interface Props {
   identityProvider?: IdentityProvider;
-  user: RestUserDetailed;
   manageProvider: Provider | undefined;
+  user: RestUserDetailed;
 }
 
 export default function UserListItemIdentity({ identityProvider, user, manageProvider }: Props) {
index 0b09928f069584b3aeff2f6c2c688d7aa199c498..6f2fa92b800f41d953b13a3748130244a2a6fdc3 100644 (file)
@@ -23,9 +23,9 @@ import { translate, translateWithParameters } from '../../../helpers/l10n';
 
 export interface Props {
   idx: number;
-  scmAccount: string;
   onChange: (idx: number, scmAccount: string) => void;
   onRemove: (idx: number) => void;
+  scmAccount: string;
 }
 
 export default function UserScmAccountInput(props: Props) {
index 419131862f5b67af52a3e779baa0ad33d38868aa..afd3d42e8f3fb204ada7ac79af68b2c97b727518 100644 (file)
@@ -22,8 +22,8 @@ import { RawQuery } from '~sonar-aligned/types/router';
 import { cleanQuery, parseAsString, serializeString } from '../../helpers/query';
 
 export interface Query {
-  search: string;
   managed?: boolean;
+  search: string;
 }
 
 export const parseQuery = memoize(
index 15ee749833ad0fe8458a6eb66620373a75e1d323..01f90af23b73724243123675bd1bcaac90a673fa 100644 (file)
@@ -20,8 +20,8 @@
 import { Dispatch, SetStateAction, createContext } from 'react';
 
 const ApiFilterContext = createContext<{
-  showInternal: boolean;
   setShowInternal: Dispatch<SetStateAction<boolean>>;
+  showInternal: boolean;
 }>({
   showInternal: false,
   setShowInternal: () => {},
index d6da453d68eea1af810b2ded752977d0e488b755..8ce64e9b22d20e5feee53b9cb3a9e38448ea8aee 100644 (file)
@@ -28,10 +28,10 @@ import ApiResponses from './ApiResponses';
 import RestMethodPill from './RestMethodPill';
 
 interface Props {
-  data: ExcludeReferences<OpenAPIV3.OperationObject<InternalExtension>>;
   apiUrl: string;
-  name: string;
+  data: ExcludeReferences<OpenAPIV3.OperationObject<InternalExtension>>;
   method: string;
+  name: string;
 }
 
 export default function ApiInformation({ name, data, method, apiUrl }: Readonly<Props>) {
index 9cb06472608417309840ad8fe15ec2389ea7adf2..64c2948f6d0b2c0d3b05cb668ceca2a0e5a4815e 100644 (file)
@@ -24,10 +24,10 @@ import { translate } from '../../../helpers/l10n';
 import { Query } from '../utils';
 
 interface Props {
-  query: Query;
   onSearch: (search: string) => void;
-  onToggleInternal: () => void;
   onToggleDeprecated: () => void;
+  onToggleInternal: () => void;
+  query: Query;
 }
 
 export default function Search(props: Props) {
index 6ee0e211f0587a7ab7bbd38197331963d8b641ef..44679081db07401ea8114148c6478a3ad5665130 100644 (file)
@@ -203,7 +203,7 @@ export class WebApiApp extends React.PureComponent<Props, State> {
   }
 }
 
-function WebApiAppWithParams(props: { router: Router; location: Location }) {
+function WebApiAppWithParams(props: { location: Location; router: Router }) {
   const params = useParams();
 
   return <WebApiApp {...props} params={{ splat: params['*'] }} />;
index 63fb68f4b3f17c8a2bb128024633b2be77ef919e..5a0c87e2e80b4f0c097934e23fc9193451d101dd 100644 (file)
@@ -28,9 +28,9 @@ import {
 import { WebApi } from '../../types/types';
 
 export interface Query {
-  search: string;
   deprecated: boolean;
   internal: boolean;
+  search: string;
 }
 
 export function actionsFilter(query: Query, domain: WebApi.Domain, action: WebApi.Action) {
index 3006544685665497146e2944ff3e575749111b4d..6c9827abee73335d3baa7ec294f24b718f899de2 100644 (file)
@@ -79,10 +79,10 @@ export function App({ component }: AppProps) {
   }
 
   async function handleUpdate(data: {
-    webhook: string;
     name: string;
     secret?: string;
     url: string;
+    webhook: string;
   }) {
     await updateWebhook({ ...data });
     setWebhooks((webhooks) =>
index 71e222bb7229dbf9096931ce52c0764b69846497..afd67cec2efef992d237a1b49293e1b4dc5ef4a5 100644 (file)
@@ -295,7 +295,7 @@ function getPageObject() {
     },
     checkWebhookRow: (
       index: number,
-      expected: { name: string; url: string; secret: boolean; lastDeliveryDate?: string },
+      expected: { lastDeliveryDate?: string; name: string; secret: boolean; url: string },
     ) => {
       const row = ui.getWebhookRow(index);
       const [name, url, secret, lastDelivery] = within(row).getAllByRole('cell');
index be701bad8bb0e237cc37a07aac3e93e6d9def61e..9243f006f31c6af46731a5698dbcff880aaf19c8 100644 (file)
@@ -69,17 +69,17 @@ interface Props {
   issues: Issue[] | undefined;
   issuesByLine: { [line: number]: Issue[] };
   loadDuplications: (line: SourceLine) => void;
-  loadingSourcesAfter: boolean;
-  loadingSourcesBefore: boolean;
   loadSourcesAfter: () => void;
   loadSourcesBefore: () => void;
+  loadingSourcesAfter: boolean;
+  loadingSourcesBefore: boolean;
   metricKey?: string;
   onIssueChange: (issue: Issue) => void;
   onIssuePopupToggle: (issue: string, popupName: string, open?: boolean) => void;
-  onIssuesClose: (line: SourceLine) => void;
   onIssueSelect: (issueKey: string) => void;
-  onIssuesOpen: (line: SourceLine) => void;
   onIssueUnselect: () => void;
+  onIssuesClose: (line: SourceLine) => void;
+  onIssuesOpen: (line: SourceLine) => void;
   onLocationSelect: ((index: number) => void) | undefined;
   onSymbolClick: (symbols: string[]) => void;
   openIssuesByLine: { [line: number]: boolean };
index 0258c42c04a41fdaf3ef50e98a09687034b51e0c..98dbcb80733f1c966461a3605e0b4488380e17b3 100644 (file)
@@ -39,8 +39,8 @@ interface Props {
   blocks: DuplicationBlock[];
   branchLike: BranchLike | undefined;
   duplicatedFiles?: Dict<DuplicatedFile>;
-  inRemovedComponent: boolean;
   duplicationHeader: string;
+  inRemovedComponent: boolean;
   openComponent: WorkspaceContextShape['openComponent'];
   sourceViewerFile: SourceViewerFile;
 }
index 8612925d3cc4d48ea9e7f9fcf772c29cb0c7045c..93fb814431552bcf89aa599fb99cc204e0634b0b 100644 (file)
@@ -36,14 +36,17 @@ export interface LineProps {
   children?: React.ReactNode;
   displayAllIssues?: boolean;
   displayCoverage: boolean;
+  displayCoverageUnderline: boolean;
   displayDuplications: boolean;
   displayIssues: boolean;
   displayLineNumberOptions?: boolean;
   displayLocationMarkers?: boolean;
+  displayNewCodeUnderline: boolean;
   displaySCM?: boolean;
   duplications: number[];
   duplicationsCount: number;
   firstLineNumber: number;
+  hideLocationIndex?: boolean;
   highlighted: boolean;
   highlightedLocationMessage: { index: number; text: string | undefined } | undefined;
   highlightedSymbols: string[] | undefined;
@@ -51,10 +54,12 @@ export interface LineProps {
   issues: Issue[];
   line: SourceLine;
   loadDuplications: (line: SourceLine) => void;
-  onIssuesClose: (line: SourceLine) => void;
   onIssueSelect: (issueKey: string) => void;
-  onIssuesOpen: (line: SourceLine) => void;
   onIssueUnselect: () => void;
+  onIssuesClose: (line: SourceLine) => void;
+  onIssuesOpen: (line: SourceLine) => void;
+  onLineMouseEnter: (line: number) => void;
+  onLineMouseLeave: (line: number) => void;
   onLocationSelect: ((x: number) => void) | undefined;
   onSymbolClick: (symbols: string[]) => void;
   openIssues: boolean;
@@ -62,11 +67,6 @@ export interface LineProps {
   renderDuplicationPopup: (index: number, line: number) => React.ReactNode;
   scrollToUncoveredLine?: boolean;
   secondaryIssueLocations: LinearIssueLocation[];
-  onLineMouseEnter: (line: number) => void;
-  onLineMouseLeave: (line: number) => void;
-  displayCoverageUnderline: boolean;
-  displayNewCodeUnderline: boolean;
-  hideLocationIndex?: boolean;
 }
 
 export default function Line(props: LineProps) {
index 87d2428dde8aae459fe64b818c498ab948f572b1..492d6313156eb22a1fff5aa7a2fd2576dba34990 100644 (file)
@@ -26,9 +26,9 @@ export interface LineIssuesListProps {
   branchLike: BranchLike | undefined;
   displayAllIssues?: boolean;
   displayWhyIsThisAnIssue: boolean;
-  issuesForLine: TypeIssue[];
-  issuePopup: { issue: string; name: string } | undefined;
   issueLocationsByLine: { [line: number]: LinearIssueLocation[] };
+  issuePopup: { issue: string; name: string } | undefined;
+  issuesForLine: TypeIssue[];
   line: SourceLine;
   onIssueChange: (issue: TypeIssue) => void;
   onIssueClick: (issueKey: string) => void;
index dc233d431565867fc2154b280eebcb253a785e80..8519a9ccb7cfa20a650c6f806733cc7c81145de9 100644 (file)
@@ -34,8 +34,8 @@ export interface DataTableModalProps {
   analyses: ParsedAnalysis[];
   graphEndDate?: Date;
   graphStartDate?: Date;
-  series: Serie[];
   onClose: () => void;
+  series: Serie[];
 }
 
 type DataTableEntry = { date: Date } & { [x: string]: string | undefined };
index 64b5b6b3ed777c7ba4ea90f8fb3f96ab32c7d6ff..363e77fd65fe7ca0799dc7984169b96cd1ff36a3 100644 (file)
@@ -78,10 +78,10 @@ export class DefinitionChangeEventInner extends React.PureComponent<Props, State
   );
 
   renderProjectChange(project: {
+    branch?: string;
     changeType: DefinitionChangeType;
     key: string;
     name: string;
-    branch?: string;
     newBranch?: string;
     oldBranch?: string;
   }) {
index db43f9edb8f1d1e80ba227f973c8aabfb5b2f639..dd5510c9501f85a191c5b6fe4a28afaeb51357b0 100644 (file)
@@ -37,17 +37,17 @@ interface Props {
   analyses: ParsedAnalysis[];
   canShowDataAsTable?: boolean;
   graph: string;
+  graphDescription: string;
   graphEndDate?: Date;
   graphStartDate?: Date;
-  leakPeriodDate?: Date;
   isCustom?: boolean;
+  leakPeriodDate?: Date;
   measuresHistory: MeasureHistory[];
   metricsType: string;
   removeCustomMetric?: (metric: string) => void;
-  showAreas: boolean;
-  series: Serie[];
   selectedDate?: Date;
-  graphDescription: string;
+  series: Serie[];
+  showAreas: boolean;
   updateGraphZoom?: (from?: Date, to?: Date) => void;
   updateSelectedDate?: (selectedDate?: Date) => void;
   updateTooltip: (selectedDate?: Date) => void;
index 4aa49ca4b3f20895749e168d19395941ce5c05f6..2997e847dd863428b223bd644e6d6926acf5e846 100644 (file)
@@ -34,14 +34,14 @@ import AddGraphMetric from './AddGraphMetric';
 import { getGraphTypes, isCustomGraph } from './utils';
 
 interface Props {
-  onAddCustomMetric?: (metric: string) => void;
   className?: string;
-  onRemoveCustomMetric?: (metric: string) => void;
   graph: GraphType;
   metrics: Metric[];
   metricsTypeFilter?: string[];
-  selectedMetrics?: string[];
+  onAddCustomMetric?: (metric: string) => void;
+  onRemoveCustomMetric?: (metric: string) => void;
   onUpdateGraph: (graphType: string) => void;
+  selectedMetrics?: string[];
 }
 
 export default function GraphsHeader(props: Props) {
index 9b51e8a5c14af7be11d694c96ca3d1bc23ae44e4..5bf2137e1d84a5c892deafb89cd4649bddab726b 100644 (file)
@@ -30,9 +30,9 @@ interface Props {
   ariaLabel?: string;
   canShowDataAsTable?: boolean;
   graph: GraphType;
-  graphs: Serie[][];
   graphEndDate?: Date;
   graphStartDate?: Date;
+  graphs: Serie[][];
   leakPeriodDate?: Date;
   loading: boolean;
   measuresHistory: MeasureHistory[];
index 239a868a50d8ba3c351dc7361bdc449d49f9066b..a701dff75965c41b7ccea36fdcb705696d8a7b6d 100644 (file)
@@ -43,8 +43,8 @@ interface Props {
   index: number;
   metric: string;
   name: string;
-  showWarning?: boolean;
   removeMetric?: (metric: string) => void;
+  showWarning?: boolean;
 }
 
 export function GraphsLegendItem({
index 8617d043ed55d9059b5695b9c2f22606df14c37b..10386c772c78e7feb63e9f6a225fea84d1a6fbd6 100644 (file)
@@ -21,8 +21,8 @@ import * as React from 'react';
 import { ChartLegend } from './ChartLegend';
 
 interface Props {
-  name: string;
   index: number;
+  name: string;
   translatedName: string;
   value: string;
 }
index c6efe9cb35d72f3f5fa1e2705d2c3ea13de76964..d702f3ebd117e00d7f01f40a2662eacc70964308 100644 (file)
@@ -29,9 +29,9 @@ interface GraphsZoomProps {
   leakPeriodDate?: Date;
   loading: boolean;
   metricsType: string;
+  onUpdateGraphZoom: (from?: Date, to?: Date) => void;
   series: Serie[];
   showAreas?: boolean;
-  onUpdateGraphZoom: (from?: Date, to?: Date) => void;
 }
 
 const ZOOM_TIMELINE_PADDING_TOP = 0;
index 2f769d4e58b70f2f402d4200c64b298fe008db47..54dbc17e42c1696964233d56015b5a0ba4bf870d 100644 (file)
@@ -175,7 +175,7 @@ export function saveActivityGraph(
 export function getActivityGraph(
   namespace: string,
   project: string,
-): { graph: GraphType; customGraphs: string[] } {
+): { customGraphs: string[]; graph: GraphType } {
   const customGraphs = get(`${namespace}.custom`, project);
 
   return {
index 0c9bc7a15a0fba6972a5b3bb6e7dcb9877765447..d53df833e7bb5e9021a4f25a7a97425a95c94aef 100644 (file)
@@ -41,15 +41,14 @@ import './AdvancedTimeline.css';
 import './LineChart.css';
 
 export interface PropsWithoutTheme {
-  graphDescription?: string;
   basisCurve?: boolean;
-  endDate?: Date;
   disableZoom?: boolean;
+  endDate?: Date;
   formatYTick?: (tick: number | string) => string;
+  graphDescription?: string;
+  height: number;
   hideGrid?: boolean;
   hideXAxis?: boolean;
-  height: number;
-  width: number;
   leakPeriodDate?: Date;
   // used to avoid same y ticks labels
   maxYTicksCount?: number;
@@ -62,6 +61,7 @@ export interface PropsWithoutTheme {
   updateSelectedDate?: (selectedDate?: Date) => void;
   updateTooltip?: (selectedDate?: Date, tooltipXPos?: number, tooltipIdx?: number) => void;
   updateZoom?: (start?: Date, endDate?: Date) => void;
+  width: number;
   zoomSpeed?: number;
 }
 
@@ -79,10 +79,10 @@ interface State {
   maxXRange: number[];
   mouseOver?: boolean;
   selectedDate?: Date;
-  selectedDateXPos?: number;
   selectedDateIdx?: number;
-  yScale: YScale;
+  selectedDateXPos?: number;
   xScale: XScale;
+  yScale: YScale;
 }
 
 export class AdvancedTimelineClass extends React.PureComponent<Props, State> {
index 139442b5c5220f4f0ae2edc0ac550b5399ba1e35..a57479679377baf0527f93a7ad733c1a7660a2dc 100644 (file)
@@ -26,9 +26,10 @@ interface Props {
   className?: string;
   colorScale:
     | ScaleOrdinal<string, string> // used for LEVEL type
-    | ScaleLinear<string, string | number>; // used for RATING or PERCENT type
-  naColors?: [CSSColor, CSSColor];
+    | ScaleLinear<string, string | number>;
   height: number;
+  // used for RATING or PERCENT type
+  naColors?: [CSSColor, CSSColor];
   padding?: [number, number, number, number];
   showColorNA?: boolean;
   width: number;
index d4a023a72398104a40bd24847c0a1f4b9c9f3738..ddf8eee8e4ece8a23f4c096f44adcdcad2fc221a 100644 (file)
@@ -46,8 +46,8 @@ export interface Props {
 export type PropsWithDefaults = Props & typeof ZoomTimeLine.defaultProps;
 
 interface State {
-  overlayLeftPos?: number;
   newZoomStart?: number;
+  overlayLeftPos?: number;
 }
 
 type XScale = ScaleTime<number, number>;
@@ -246,12 +246,12 @@ export class ZoomTimeLine extends React.PureComponent<Props, State> {
   };
 
   renderZoomHandle = (options: {
-    xScale: XScale;
-    xPos: number;
+    direction: string;
     fixedPos: number;
-    yDim: number[];
     xDim: number[];
-    direction: string;
+    xPos: number;
+    xScale: XScale;
+    yDim: number[];
   }) => (
     <Draggable
       axis="x"
index 2d70f784cb37fb5af0ffac3c0264b989162b2a40..a5a962d15f9572b80c6605ffef31d9c18eaf2442 100644 (file)
@@ -22,9 +22,9 @@ import Tooltip from '../../components/controls/Tooltip';
 
 export interface DisableableSelectOptionProps {
   className?: string;
-  disabledReason?: string;
-  option: { label?: string; value?: string | number | boolean; isDisabled?: boolean };
   disableTooltipOverlay: () => React.ReactNode;
+  disabledReason?: string;
+  option: { isDisabled?: boolean; label?: string; value?: string | number | boolean };
 }
 
 export default function DisableableSelectOption(props: DisableableSelectOptionProps) {
index b6cdc6a26f8b125ffdd879a6f75ead2d79188ab4..1942843ef1f336b6cbc2e2b5cf35bc5e6c7aa37b 100644 (file)
@@ -23,7 +23,7 @@ import * as React from 'react';
 import { DocLink } from '../../helpers/doc-links';
 import { useDocUrl } from '../../helpers/docs';
 
-type Props = Omit<LinkProps, 'to'> & { to: DocLink; innerRef?: React.Ref<HTMLAnchorElement> };
+type Props = Omit<LinkProps, 'to'> & { innerRef?: React.Ref<HTMLAnchorElement>; to: DocLink };
 
 export default function DocumentationLink({ to, innerRef, ...props }: Props) {
   const toStatic = useDocUrl(to);
index 999082de04211dd5a017e0858302d2dbcbab9aae..e155cd1f508f638a3ec324c703f57eefd8e5b3a3 100644 (file)
@@ -21,8 +21,8 @@ import { debounce } from 'lodash';
 import * as React from 'react';
 
 interface Props {
+  children: (position: { left: number; top: number }) => React.ReactElement<any>;
   className?: string;
-  children: (position: { top: number; left: number }) => React.ReactElement<any>;
 }
 
 export const SCREEN_POSITION_COMPUTE_DELAY = 250;
index 71c9b0e7242501229271796a3c6c351d27d72bfb..ab68ccc44c1fb0bb7f04207af1abee4d6434edb1 100644 (file)
@@ -26,10 +26,10 @@ import { translate } from '../../helpers/l10n';
 export interface VisibilitySelectorProps {
   canTurnToPrivate?: boolean;
   className?: string;
-  onChange: (visibility: Visibility) => void;
-  visibility?: Visibility;
   disabled?: boolean;
   loading?: boolean;
+  onChange: (visibility: Visibility) => void;
+  visibility?: Visibility;
 }
 
 export default function VisibilitySelector(props: Readonly<VisibilitySelectorProps>) {
index b4877182d8dd12885314746106caecbdbfbd1f56..661b6a255e4ae2167885855601da0672ae8e993c 100644 (file)
@@ -38,8 +38,8 @@ import ComponentReportActionsRenderer from './ComponentReportActionsRenderer';
 
 interface Props {
   appState: AppState;
-  component: Component;
   branch?: Branch;
+  component: Component;
   currentUser: CurrentUser;
 }
 
index cb50c7fff8253ca1a3572054e0a604dea0176f42..222c3668d5758c0e02ce292815dc51f5c37a8a9f 100644 (file)
@@ -33,14 +33,14 @@ import { Branch } from '../../types/branch-like';
 import { Component } from '../../types/types';
 
 export interface ComponentReportActionsRendererProps {
-  component: Component;
   branch?: Branch;
-  frequency: string;
-  subscribed: boolean;
   canSubscribe: boolean;
+  component: Component;
   currentUserHasEmail: boolean;
+  frequency: string;
   handleSubscription: () => void;
   handleUnsubscription: () => void;
+  subscribed: boolean;
 }
 
 const getSubscriptionText = ({
index 07e81ed46192c2b679b0933be40194b456696216..c5f7941da77c5fda52a2a20e1a17685c908805b7 100644 (file)
@@ -28,8 +28,8 @@ interface Props {
   component: string;
   componentName?: string;
   favorite: boolean;
-  qualifier: string;
   handleFavorite?: (component: string, isFavorite: boolean) => void;
+  qualifier: string;
 }
 
 interface State {
index 37423d033373396f92894ef74f63d2b6529e145a..f1ba687b8267253167891b29f2fbb242085cd25e 100644 (file)
@@ -20,8 +20,8 @@
 import * as React from 'react';
 
 interface Props extends React.BaseHTMLAttributes<HTMLDivElement> {
-  onFocusOut: () => void;
   innerRef?: (instance: HTMLDivElement) => void;
+  onFocusOut: () => void;
 }
 
 export default class FocusOutHandler extends React.PureComponent<React.PropsWithChildren<Props>> {
index cdcc08970a6272c8990ff0c7287ca07dea30a0ea..de41934095f2f1a273b55b6fc6525075c76389ac 100644 (file)
@@ -34,10 +34,10 @@ interface Props {
   onBlur: (event: React.FocusEvent<HTMLInputElement>) => void;
   onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
   placeholder?: string;
+  required?: boolean;
   touched: boolean | undefined;
   type?: string;
   value: string;
-  required?: boolean;
 }
 
 export default function InputValidationField({ ...props }: Readonly<Props>) {
index 8ba6e18feb60e6ff0472d8838773d9fe4b1f53a4..ac622c08ca04e3f761bb0d29e359d99066055c74 100644 (file)
@@ -26,15 +26,15 @@ import { MetricType } from '~sonar-aligned/types/metrics';
 import { translate, translateWithParameters } from '../../helpers/l10n';
 
 export interface ListFooterProps {
-  loadMoreAriaLabel?: string;
-  count: number;
   className?: string;
-  loading?: boolean;
+  count: number;
   loadMore?: () => void;
+  loadMoreAriaLabel?: string;
+  loading?: boolean;
   needReload?: boolean;
   pageSize?: number;
-  reload?: () => void;
   ready?: boolean;
+  reload?: () => void;
   total?: number;
 }
 
index 1f3e82c8f2aad610662053a5f90c0d45e674804b..533c3673e3f70408eb04ede7b1e2e3d77b376516 100644 (file)
@@ -23,8 +23,8 @@ import { translate } from '../../helpers/l10n';
 import { Provider } from '../../types/types';
 
 interface ManagedFilterProps {
-  manageProvider: Provider | undefined;
   loading: boolean;
+  manageProvider: Provider | undefined;
   managed: boolean | undefined;
   setManaged: (managed: boolean | undefined) => void;
 }
index 2ae7e857c6fe9da28e350ca79522a435a8b0d050..94fe045a27a234a301db8ffb709985a301b7ee5f 100644 (file)
@@ -31,12 +31,13 @@ export enum SelectListFilter {
 
 type Props = {
   allowBulkSelection?: boolean;
+  autoFocusSearch?: boolean;
+  disabledElements?: string[];
   elements: string[];
   elementsTotalCount?: number;
-  disabledElements?: string[];
+  labelAll?: string;
   labelSelected?: string;
   labelUnselected?: string;
-  labelAll?: string;
   needToReload?: boolean;
   onSelect: (element: string) => Promise<void>;
   onUnselect: (element: string) => Promise<void>;
@@ -45,11 +46,10 @@ type Props = {
   renderElement: (element: string) => React.ReactNode;
   selectedElements: string[];
   withPaging?: boolean;
-  autoFocusSearch?: boolean;
 } & (
   | {
-      onSearch: (searchParams: SelectListSearchParams) => Promise<void>;
       loading?: never;
+      onSearch: (searchParams: SelectListSearchParams) => Promise<void>;
     }
   | {
       loading: boolean;
index 7bc0a07e075eaa1f814919f79b62374126bfe233..c718565b9d96285625a278d231e1df2d64628334 100644 (file)
@@ -26,8 +26,8 @@ import SelectListListElement from './SelectListListElement';
 
 interface Props {
   allowBulkSelection?: boolean;
-  elements: string[];
   disabledElements: string[];
+  elements: string[];
   filter: SelectListFilter;
   onSelect: (element: string) => Promise<void>;
   onUnselect: (element: string) => Promise<void>;
index ad75ca864d36ab75b6876ea397b94aaf46876733..13f2648015a77a5549bc2f84cfe97605901a8a41 100644 (file)
@@ -32,20 +32,20 @@ import './Tooltip.css';
 export type Placement = 'bottom' | 'right' | 'left' | 'top';
 
 interface TooltipProps {
-  classNameSpace?: string;
   children: React.ReactElement;
-  mouseEnterDelay?: number;
-  mouseLeaveDelay?: number;
-  onShow?: () => void;
-  onHide?: () => void;
+  classNameInner?: string;
+  classNameSpace?: string;
   content: React.ReactNode;
-  side?: Placement;
-  isOpen?: boolean;
   // If tooltip overlay has interactive content (links for instance) we may set this to true to stop
   // default behavior of tabbing (other changes should be done outside of this component to make it work)
   // See example DocHelpTooltip
   isInteractive?: boolean;
-  classNameInner?: string;
+  isOpen?: boolean;
+  mouseEnterDelay?: number;
+  mouseLeaveDelay?: number;
+  onHide?: () => void;
+  onShow?: () => void;
+  side?: Placement;
 }
 
 interface Measurements {
index 3375b2f1bf18e85da992649a9381eee77cb8dbdf..761920d4b19dbd432b04fd911bdc9641c9881013 100644 (file)
@@ -51,11 +51,11 @@ function orgToOption(alm: AlmInstanceBase) {
 }
 
 interface Props {
-  instances: AlmInstanceBase[];
-  initialValue?: string;
-  onChange: (instance: AlmInstanceBase) => void;
   className: string;
+  initialValue?: string;
   inputId: string;
+  instances: AlmInstanceBase[];
+  onChange: (instance: AlmInstanceBase) => void;
 }
 
 export default function AlmSettingsInstanceSelector(props: Props) {
index 6e3102a68aee76a94427d72784f9517ac7db1897..61251a5db8c274ffa0c74768a724a02a5b7b62f7 100644 (file)
@@ -29,8 +29,8 @@ import { SoftwareImpactSeverity } from '../../types/clean-code-taxonomy';
 import { Dict } from '../../types/types';
 
 interface Props extends IconProps {
-  severity: string | null | undefined;
   disabled?: boolean;
+  severity: string | null | undefined;
 }
 
 const severityIcons: Dict<(props: IconProps) => React.ReactElement> = {
index 8cafe6ba36b96bf5af9648d1337a07342115925a..980f08ef931c6da2052ef0db6776b47dc59dfc56 100644 (file)
@@ -37,8 +37,8 @@ interface Props {
   issue: TypeIssue;
   onChange: (issue: TypeIssue) => void;
   onCheck?: (issue: string) => void;
-  onSelect: (issueKey: string) => void;
   onPopupToggle: (issue: string, popupName: string, open?: boolean) => void;
+  onSelect: (issueKey: string) => void;
   openPopup?: string;
   selected: boolean;
 }
index 6daa8e98ec95621cb13ca6039cb83a806cddde81..10b2c7336a16caf3cab2d08f55a1a13d74d29ac1 100644 (file)
@@ -27,14 +27,14 @@ import IssueTransition from './IssueTransition';
 import SonarLintBadge from './SonarLintBadge';
 
 interface Props {
-  issue: Issue;
+  canSetTags?: boolean;
   currentPopup?: string;
+  issue: Issue;
   onAssign: (login: string) => void;
   onChange: (issue: Issue) => void;
-  togglePopup: (popup: string, show?: boolean) => void;
   showSonarLintBadge?: boolean;
   showTags?: boolean;
-  canSetTags?: boolean;
+  togglePopup: (popup: string, show?: boolean) => void;
 }
 
 export default function IssueActionsBar(props: Readonly<Props>) {
index b7a778f6c00e445a7900d2f2d7b218787e9499e2..25b64de6e525810dbaaff5a1cd2ae2696c66479e 100644 (file)
@@ -28,9 +28,9 @@ import { RestUser, isLoggedIn, isUserActive } from '../../../types/users';
 import Avatar from '../../ui/Avatar';
 
 interface Props {
-  issue: Issue;
-  isOpen: boolean;
   canAssign: boolean;
+  isOpen: boolean;
+  issue: Issue;
   onAssign: (login: string) => void;
   togglePopup: (popup: string, show?: boolean) => void;
 }
index f3e26bb78a28e3a166ff7430faad84ee4685cab3..f01da2387682810bdeb90de4d29f01448d92ddd1 100644 (file)
@@ -30,9 +30,9 @@ import { BranchLike } from '../../../types/branch-like';
 import { Issue } from '../../../types/types';
 
 export interface IssueMessageProps {
-  issue: Issue;
   branchLike?: BranchLike;
   displayWhyIsThisAnIssue?: boolean;
+  issue: Issue;
 }
 
 export default function IssueMessage(props: IssueMessageProps) {
index 5a5e35a177bb7cce9bfdeaf8ed69ec4f3019732c..0e16b83a7968eab87a906730802f533592d6c69a 100644 (file)
@@ -33,8 +33,8 @@ interface Props extends ComponentContextShape {
   issue: Pick<Issue, 'key' | 'tags'>;
   onChange: (issue: Issue) => void;
   open?: boolean;
-  togglePopup: (popup: string, show?: boolean) => void;
   tagsToDisplay?: number;
+  togglePopup: (popup: string, show?: boolean) => void;
 }
 
 export class IssueTags extends React.PureComponent<Props> {
index 3777c8b68ad11c95fb2eef5392f1aa31b9c16b25..7fadcb6fa4fa4365078330a99eb931a3cab7ee55 100644 (file)
@@ -26,9 +26,9 @@ import HelpTooltip from '../../../sonar-aligned/components/controls/HelpTooltip'
 import { IssueTransition } from '../../../types/issues';
 
 type Props = {
-  transition: IssueTransition;
-  selected: boolean;
   onSelectTransition: (transition: IssueTransition) => void;
+  selected: boolean;
+  transition: IssueTransition;
 };
 
 export function IssueTransitionItem({ transition, selected, onSelectTransition }: Readonly<Props>) {
index 8d24a2174f24f56b97d4cad6ffb2fb541664ccda..efbceff8d458dd4fb9094a9cf712dc6da7df5f40 100644 (file)
@@ -36,11 +36,11 @@ import { isTransitionDeprecated, isTransitionHidden, transitionRequiresComment }
 import { IssueTransitionItem } from './IssueTransitionItem';
 
 export type Props = {
+  guideStepIndex: number;
   issue: Pick<Issue, 'transitions' | 'actions'>;
+  loading?: boolean;
   onClose: () => void;
   onSetTransition: (transition: IssueTransition, comment?: string) => void;
-  guideStepIndex: number;
-  loading?: boolean;
 };
 
 export function IssueTransitionOverlay(props: Readonly<Props>) {
index 20a8dff1469c3e162049368c0f24fdf95a002613..ae799a3e19ff3e73a2faf821a972b6a081bb6d81 100644 (file)
@@ -27,12 +27,12 @@ import LocationMessage from '../common/LocationMessage';
 import './SingleFileLocationNavigator.css';
 
 interface Props {
+  concealedMarker?: boolean;
   index: number;
   message: string | undefined;
   messageFormattings?: MessageFormatting[];
   onClick: (index: number) => void;
   selected: boolean;
-  concealedMarker?: boolean;
 }
 
 export default class SingleFileLocationNavigator extends React.PureComponent<Props> {
index b8949c702f05e8ef7323a8a3b15e4185520a4f85..460ca3b7fd8e7c9eda14a65506807992b37e5698 100644 (file)
@@ -23,8 +23,8 @@ import { isDefined } from '../../helpers/types';
 
 interface Props {
   className?: string;
-  size?: number;
   description?: React.ReactNode;
+  size?: number;
 }
 
 export function SonarLintLogo({ className, description, size }: Readonly<Props>) {
index 923953e56e95866ce471696267bce73678c6f36f..f49479708dfc9ddcc42b09190ae05c1be3389d8b 100644 (file)
@@ -43,18 +43,18 @@ import { NewCodeDefinitionLevels } from './utils';
 
 export interface Props {
   className?: string;
-  days: string;
   currentDaysValue?: string;
-  previousNonCompliantValue?: string;
-  projectKey?: string;
-  updatedAt?: number;
+  days: string;
   disabled?: boolean;
   isChanged: boolean;
   isValid: boolean;
   onChangeDays: (value: string) => void;
   onSelect: (selection: NewCodeDefinitionType) => void;
+  previousNonCompliantValue?: string;
+  projectKey?: string;
   selected: boolean;
   settingLevel: NewCodeDefinitionLevels;
+  updatedAt?: number;
 }
 
 export default function NewCodeDefinitionDaysOption(props: Props) {
index 5e04198f0a56581bd9e2582a0f01dcd272eaa7ad..0a1a5384b8abef471cc50672353a2d68f2461ed8 100644 (file)
@@ -44,8 +44,8 @@ import NewCodeDefinitionPreviousVersionOption from './NewCodeDefinitionPreviousV
 import { NewCodeDefinitionLevels } from './utils';
 
 interface Props {
-  onNcdChanged: (ncd: NewCodeDefinitiondWithCompliance) => void;
   isMultipleProjects?: boolean;
+  onNcdChanged: (ncd: NewCodeDefinitiondWithCompliance) => void;
 }
 
 export default function NewCodeDefinitionSelector(props: Props) {
index 5350a3ea9c3e798ba0d246d8e3a39612fc4c9d77..9ee04386a93393c13f6f3d1b5c134de753bc651e 100644 (file)
@@ -32,22 +32,22 @@ import SearchForm, { FilterOption } from './SearchForm';
 
 interface Props {
   filter: FilterOption;
-  query: string;
-  onFilter: (filter: string) => void;
-  onQuery: (query: string) => void;
   groups: PermissionGroup[];
   groupsPaging?: Paging;
-  onRevokePermissionFromGroup: (group: string, permission: string) => Promise<void>;
+  loading?: boolean;
+  onFilter: (filter: string) => void;
   onGrantPermissionToGroup: (group: string, permission: string) => Promise<void>;
-  users: PermissionUser[];
-  usersPaging?: Paging;
-  onRevokePermissionFromUser: (user: string, permission: string) => Promise<void>;
   onGrantPermissionToUser: (user: string, permission: string) => Promise<void>;
-  permissions: Array<PermissionDefinition | PermissionDefinitionGroup>;
   onLoadMore: () => void;
-  selectedPermission?: string;
+  onQuery: (query: string) => void;
+  onRevokePermissionFromGroup: (group: string, permission: string) => Promise<void>;
+  onRevokePermissionFromUser: (user: string, permission: string) => Promise<void>;
   onSelectPermission?: (permissions?: string) => void;
-  loading?: boolean;
+  permissions: Array<PermissionDefinition | PermissionDefinitionGroup>;
+  query: string;
+  selectedPermission?: string;
+  users: PermissionUser[];
+  usersPaging?: Paging;
 }
 
 export default class AllHoldersList extends React.PureComponent<Props> {
index fb2d9b3e3821e409e1e134454423d4f0564d8e28..2ced9099bdbfac4a12320329f1993a550e080274 100644 (file)
@@ -30,13 +30,13 @@ import PermissionCell from './PermissionCell';
 import usePermissionChange from './usePermissionChange';
 
 interface Props {
+  disabled?: boolean;
   group: PermissionGroup;
   isComponentPrivate?: boolean;
   onToggle: (group: PermissionGroup, permission: string) => Promise<void>;
   permissions: PermissionDefinitions;
-  selectedPermission?: string;
-  disabled?: boolean;
   removeOnly?: boolean;
+  selectedPermission?: string;
 }
 
 export const ANYONE = 'Anyone';
index 7d4d56c78ab6f76a6a87a1db20c8ed2931e9a340..5146ce3bead48571f7260c94ff3b24e634a8ef66 100644 (file)
@@ -31,13 +31,13 @@ import {
 
 export interface PermissionCellProps {
   disabled?: boolean;
-  removeOnly?: boolean;
   loading: string[];
   onCheck: (checked: boolean, permission?: string) => void;
   permission: PermissionDefinition | PermissionDefinitionGroup;
   permissionItem: PermissionGroup | PermissionUser;
-  selectedPermission?: string;
   prefixID: string;
+  removeOnly?: boolean;
+  selectedPermission?: string;
 }
 
 export default function PermissionCell(props: PermissionCellProps) {
index de523fdd992741f65e0323391161fe1f343caceb..34d2dd9eb036bb52e636f0761d2e69ee67e778ea 100644 (file)
@@ -29,12 +29,12 @@ import PermissionCell from './PermissionCell';
 import usePermissionChange from './usePermissionChange';
 
 interface Props {
+  disabled?: boolean;
   onToggle: (user: PermissionUser, permission: string) => Promise<void>;
   permissions: PermissionDefinitions;
+  removeOnly?: boolean;
   selectedPermission?: string;
   user: PermissionUser;
-  disabled?: boolean;
-  removeOnly?: boolean;
 }
 
 export default function UserHolder(props: Props) {
index 227d8d96ef97a1e4970b55dda90c0011eb6c1216..2bfb7c3a38471d331be089f3183a3233721a113d 100644 (file)
@@ -32,9 +32,9 @@ import ConfirmModal from '../controls/ConfirmModal';
 
 interface Props<T extends PermissionGroup | PermissionUser> {
   holder: T;
-  removeOnly?: boolean;
-  permissions: PermissionDefinitions;
   onToggle: (holder: T, permission: string) => Promise<void>;
+  permissions: PermissionDefinitions;
+  removeOnly?: boolean;
 }
 
 export default function usePermissionChange<T extends PermissionGroup | PermissionUser>(
index 39eef8e6f55c2dae6da1609faa0409fbd40ffbd6..b43525899e89cc959ea7fde4ce768255ed27e9e8 100644 (file)
@@ -39,30 +39,30 @@ import MoreInfoRuleDescription from './MoreInfoRuleDescription';
 import RuleDescription from './RuleDescription';
 
 interface IssueTabViewerProps extends CurrentUserContextInterface {
-  ruleDetails: RuleDetails;
-  extendedDescription?: string;
-  ruleDescriptionContextKey?: string;
-  codeTabContent?: React.ReactNode;
   activityTabContent?: React.ReactNode;
+  codeTabContent?: React.ReactNode;
+  extendedDescription?: string;
+  issue: Issue;
   location: Location;
+  onIssueChange: (issue: Issue) => void;
+  ruleDescriptionContextKey?: string;
+  ruleDetails: RuleDetails;
   selectedFlowIndex?: number;
   selectedLocationIndex?: number;
-  issue: Issue;
-  onIssueChange: (issue: Issue) => void;
 }
 interface State {
-  tabs: Tab[];
-  selectedTab?: Tab;
   displayEducationalPrinciplesNotification?: boolean;
   educationalPrinciplesNotificationHasBeenDismissed?: boolean;
+  selectedTab?: Tab;
+  tabs: Tab[];
 }
 
 export interface Tab {
-  value: TabKeys;
-  key: TabKeys;
-  label: string;
   content: React.ReactNode;
   counter?: number;
+  key: TabKeys;
+  label: string;
+  value: TabKeys;
 }
 
 export enum TabKeys {
index 3579636780438112c63cb4bc91425c0fd03fb889..2f0f9f34f49759012e351693e76158d37f59e6c3 100644 (file)
@@ -50,8 +50,8 @@ interface State {
 }
 
 interface RuleDescriptionContextDisplay {
-  displayName: string;
   content: string;
+  displayName: string;
   key: string;
 }
 
index 2b17144f473efafe051d2d1599880af80156b51e..b400b60359cf925c82b9753aad89950acf66260d 100644 (file)
@@ -34,22 +34,22 @@ import MoreInfoRuleDescription from './MoreInfoRuleDescription';
 import RuleDescription from './RuleDescription';
 
 interface RuleTabViewerProps extends CurrentUserContextInterface {
-  ruleDetails: RuleDetails;
   location: Location;
+  ruleDetails: RuleDetails;
 }
 
 interface State {
-  tabs: Tab[];
-  selectedTab?: Tab;
   displayEducationalPrinciplesNotification?: boolean;
   educationalPrinciplesNotificationHasBeenDismissed?: boolean;
+  selectedTab?: Tab;
+  tabs: Tab[];
 }
 
 export interface Tab {
-  value: TabKeys;
-  label: string;
   content: React.ReactNode;
   counter?: number;
+  label: string;
+  value: TabKeys;
 }
 
 export enum TabKeys {
index c1d0c4ea32e91b1ac9a21bc33a9d7ebb56874efe..f625d4f7c26d494ccfc62a4342554adf991c56f2 100644 (file)
@@ -25,9 +25,9 @@ import { DocLink } from '../../helpers/doc-links';
 import DocumentationLink from '../common/DocumentationLink';
 
 interface AnalysisMissingInfoMessageProps {
+  className?: string;
   hide?: boolean;
   qualifier: string;
-  className?: string;
 }
 
 export default function AnalysisMissingInfoMessage({
index ca2aed6d41642016070ee97a5783deb605a8f25f..20ec0c2b7df1169a3d43ecc4cc3c2177a0c79cc4 100644 (file)
@@ -27,9 +27,9 @@ import { CleanCodeAttribute, CleanCodeAttributeCategory } from '../../types/clea
 
 export interface Props {
   className?: string;
-  type?: 'issue' | 'rule';
-  cleanCodeAttributeCategory: CleanCodeAttributeCategory;
   cleanCodeAttribute?: CleanCodeAttribute;
+  cleanCodeAttributeCategory: CleanCodeAttributeCategory;
+  type?: 'issue' | 'rule';
 }
 
 export function CleanCodeAttributePill(props: Readonly<Props>) {
index c72a4c72373cb77dd93ae71902d73dfac900d718..e1687e5e53a54d21bd28abaa606fc0aaee59b44e 100644 (file)
@@ -31,8 +31,8 @@ interface Props {
   children?: React.ReactNode;
   className?: string;
   component: string;
-  metric: string;
   inNewCodePeriod?: boolean;
+  metric: string;
 }
 
 export default class DrilldownLink extends React.PureComponent<Props> {
index c40f58220b2cd8d93e8aa8b9e8d3c5b77b5cd421..f0ae5848ac202bd4d1a8c5107baf921866fc98fd 100644 (file)
@@ -30,9 +30,9 @@ import SoftwareImpactSeverityIcon from '../icon-mappers/SoftwareImpactSeverityIc
 
 export interface Props {
   className?: string;
+  quality: string;
   severity: SoftwareImpactSeverity;
   type?: 'issue' | 'rule';
-  quality: string;
 }
 
 export default function SoftwareImpactPill(props: Props) {
index e031f03e73f2b0453b906b3d45af9c4180f92e5d..3bc09b6b130f0f2b5b93c7dab6863e2bfc7deaaa 100644 (file)
@@ -28,8 +28,8 @@ import {
 import SoftwareImpactPill from './SoftwareImpactPill';
 
 interface SoftwareImpactPillListProps extends React.HTMLAttributes<HTMLUListElement> {
-  softwareImpacts: SoftwareImpact[];
   className?: string;
+  softwareImpacts: SoftwareImpact[];
   type?: Parameters<typeof SoftwareImpactPill>[0]['type'];
 }
 
index a24db5de119ae18c9cdc24f3ffa1df319fe2cbc4..888f95d7a16a3ca176343fe79e34fcafb0188c7c 100644 (file)
@@ -25,8 +25,8 @@ import Tooltip from '../controls/Tooltip';
 interface Props {
   allowUpdate?: boolean;
   className?: string;
-  tags: string[];
   overlay?: React.ReactNode;
+  tags: string[];
   tagsClassName?: string;
   tagsToDisplay?: number;
 }
index 71e77125e2bc00acb5f5f9a9ecfdf2fd2f1acf45..de5310699d255a30c0e3788171466fa65054dd8b 100644 (file)
@@ -37,8 +37,8 @@ import { TutorialModes } from './types';
 export interface TutorialSelectionProps {
   component: Component;
   currentUser: LoggedInUser;
-  willRefreshAutomatically?: boolean;
   location: Location;
+  willRefreshAutomatically?: boolean;
 }
 
 export function TutorialSelection(props: Readonly<TutorialSelectionProps>) {
index 5335b08ffbfe612436a98d51df784e51e512aa0b..e4f852ffa286434e091d5c11347cf12e8b926c8c 100644 (file)
@@ -27,8 +27,8 @@ import { BuildTools } from '../types';
 import AnalysisCommand from './commands/AnalysisCommand';
 
 export interface BranchesAnalysisStepProps {
-  languages: Languages;
   component: Component;
+  languages: Languages;
   onDone: (done: boolean) => void;
 }
 
index 889d705ad0f5a0d6f9acae502de4e17f57d2dc9a..d87b5abfcbeb4988871e3ee6687f45bc37b2a71e 100644 (file)
@@ -26,10 +26,10 @@ import JavaMaven from './JavaMaven';
 import Other from './Other';
 
 export interface AnalysisCommandProps {
-  projectKey: string;
-  projectName: string;
   buildTool?: BuildTools;
   onStepValidationChange: (isValid: boolean) => void;
+  projectKey: string;
+  projectName: string;
 }
 
 export default function AnalysisCommand(props: AnalysisCommandProps) {
index 9dc7432201ca89dc88b763025a8beaa6ef68bc2c..01f1ed48956783b78c32c817fa84fe43d4b69ef5 100644 (file)
@@ -37,8 +37,8 @@ import PrepareAnalysisCommand, { PrepareType } from './PrepareAnalysisCommand';
 import PublishSteps from './PublishSteps';
 
 export interface ClangGCCProps {
-  projectKey: string;
   onStepValidationChange: (isValid: boolean) => void;
+  projectKey: string;
 }
 
 type OsConstant = {
index b30a010816c4dc086ab5cf05c5e74977f45672d1..fbcc35f2633c0f4d2adbbb4808ff265b61311ab8 100644 (file)
@@ -36,8 +36,8 @@ import othersExample from './commands/Others';
 
 export interface AnalysisCommandProps extends WithAvailableFeaturesProps {
   buildTool: BuildTools;
-  mainBranchName: string;
   component: Component;
+  mainBranchName: string;
 }
 
 const YamlTemplate: Dictionary<
index 302acfd01ca1edca163e65f6353da133c5fb5840..723165918536516968edf024d0481082f4348a06 100644 (file)
@@ -52,9 +52,9 @@ import ProjectTokenScopeInfo from './ProjectTokenScopeInfo';
 interface State {
   loading: boolean;
   token?: string;
-  tokenName: string;
   tokenExpiration: TokenExpiration;
-  tokenExpirationOptions: { value: TokenExpiration; label: string }[];
+  tokenExpirationOptions: { label: string; value: TokenExpiration }[];
+  tokenName: string;
 }
 
 interface Props {
index a22c87b5e666b878c4fec817941df7c2f461c405..b7c07a68335dd9f781c98d499d8eb2f0fbd49a29 100644 (file)
@@ -27,9 +27,9 @@ import { Image } from '../../common/Image';
 import { OSs, TutorialModes } from '../types';
 
 export interface GithubCFamilyExampleRepositoriesProps {
+  ci?: TutorialModes;
   className?: string;
   os?: OSs;
-  ci?: TutorialModes;
 }
 
 const OS_SEARCH_MAP = {
index 5b13102ac22ed47e3c32f0b820d70e422eea672c..0b6a70584c99762b40b1d7e5cfffc36bf923525e 100644 (file)
@@ -22,8 +22,8 @@ import React from 'react';
 import { GradleBuildDSL } from '../types';
 
 interface Props {
-  className?: string;
   children: (build: GradleBuildDSL) => React.ReactNode;
+  className?: string;
 }
 
 export default function GradleBuildSelection({ children, className }: Props) {
index 7a2c9bc3986fbe7acba67d7535ab5f7ddeac29a7..b972264dfc2de584998532f9e4d37536a566b2ce 100644 (file)
@@ -27,8 +27,8 @@ export interface RenderOptionsProps {
   onCheck: (checked: string) => void;
   optionLabelKey: string;
   options: string[];
-  titleLabelKey?: string;
   setDone?: (doneStatus: boolean) => void;
+  titleLabelKey?: string;
 }
 
 export default function RenderOptions({
index 836a6e89abba3551ae04fd7a1026b6894dacc30d..9769acf5faa65155ef313d6ab03ee8727191a1a5 100644 (file)
@@ -24,8 +24,8 @@ import { Dict } from '../../../types/types';
 
 export interface SentenceWithHighlightsProps {
   highlightKeys: string[];
-  translationKey: string;
   highlightPrefixKeys?: string;
+  translationKey: string;
 }
 
 export default function SentenceWithHighlights({
index 63b119c5516b71c98b1a796de2c80785f3bf5b1f..81cc14e14af52e0bf7197647b88d7c12dcb0fc3e 100644 (file)
@@ -32,8 +32,8 @@ import Others from './commands/Others';
 
 export interface AnalysisCommandProps extends WithAvailableFeaturesProps {
   buildTool: BuildTools;
-  mainBranchName: string;
   component: Component;
+  mainBranchName: string;
   monorepo?: boolean;
 }
 
index 013652103b29d0ddf9f163a8557075ffb8f662f8..bbb62cc3dfa7df8c3c46a135303ae7d11a440731 100644 (file)
@@ -33,8 +33,8 @@ export interface GitHubActionTutorialProps {
   baseUrl: string;
   component: Component;
   currentUser: LoggedInUser;
-  monorepo?: boolean;
   mainBranchName: string;
+  monorepo?: boolean;
   willRefreshAutomatically?: boolean;
 }
 
index cfe75e6fe70e2783bf5c8ac48a28889eed0e8c03..9f01849c1e2a716be4cbc6cb4fa197d21d50d8fc 100644 (file)
@@ -32,9 +32,9 @@ import MonorepoDocLinkFallback from './MonorepoDocLinkFallback';
 
 export interface CFamilyProps {
   branchesEnabled?: boolean;
+  component: Component;
   mainBranchName: string;
   monorepo?: boolean;
-  component: Component;
 }
 
 const STEPS = {
index 98f02aac2a4fcd6907245f28fa1214cd274033c6..3478dfa49d42a1fc523efdc00472527f2dce859e 100644 (file)
@@ -26,9 +26,9 @@ import MonorepoDocLinkFallback from './MonorepoDocLinkFallback';
 
 export interface DotNetProps {
   branchesEnabled?: boolean;
+  component: Component;
   mainBranchName: string;
   monorepo?: boolean;
-  component: Component;
 }
 
 function dotnetYamlSteps(projectKey: string) {
index 0aaaa78d00f88cf2ff0fdaaa786629d1fba4be2b..85ae9f9b7c2d9ba9304d886be9cd7c96f5652b01 100644 (file)
@@ -27,9 +27,9 @@ import MonorepoDocLinkFallback from './MonorepoDocLinkFallback';
 
 export interface GradleProps {
   branchesEnabled?: boolean;
+  component: Component;
   mainBranchName: string;
   monorepo?: boolean;
-  component: Component;
 }
 
 const GRADLE_YAML_STEPS = `
index 2b3f89d7fcd386dc4b2af9cc2c92d2e3e49625ca..946766e52f72fa4cabab00e86ca9bb666b786910 100644 (file)
@@ -26,9 +26,9 @@ import MonorepoDocLinkFallback from './MonorepoDocLinkFallback';
 
 export interface JavaMavenProps {
   branchesEnabled?: boolean;
+  component: Component;
   mainBranchName: string;
   monorepo?: boolean;
-  component: Component;
 }
 
 function mavenYamlSteps(projectKey: string, projectName: string) {
index b4e5bbc07fbd0efa6ec21a8c196bb2b78725e5a8..44381ff0716e504f87c66e05f7752ed6b05a32c1 100644 (file)
@@ -27,9 +27,9 @@ import MonorepoDocLinkFallback from './MonorepoDocLinkFallback';
 
 export interface OthersProps {
   branchesEnabled?: boolean;
+  component: Component;
   mainBranchName: string;
   monorepo?: boolean;
-  component: Component;
 }
 
 function otherYamlSteps(branchesEnabled: boolean) {
index 22148f40f3aa9d55a8b1a4e73e9e3430eda13c84..4090603fe7ce374087521108516bdbbacece91c4 100644 (file)
@@ -54,9 +54,9 @@ export interface JenkinsfileStepProps {
 }
 
 export interface LanguageProps {
-  onDone: (done: boolean) => void;
-  component: Component;
   baseUrl: string;
+  component: Component;
+  onDone: (done: boolean) => void;
 }
 
 export function JenkinsfileStep(props: JenkinsfileStepProps) {
index b4690eb05078de596f9617c18df80f77f5db1b6b..61287f945f1e4dda4071cbb1e7b5c9190a5b46f1 100644 (file)
@@ -24,7 +24,7 @@ import { OSs } from '../../types';
 import { DotNetCoreFrameworkProps, OSDotNet } from './DotNet';
 import DotNetPrereqsScanner from './DotNetPrereqsScanner';
 
-const OSS_DEP: { [key in OSDotNet]: { shell: string; pathSeparator: string } } = {
+const OSS_DEP: { [key in OSDotNet]: { pathSeparator: string; shell: string } } = {
   [OSs.Linux]: { shell: 'sh', pathSeparator: '/' },
   [OSs.Windows]: { shell: 'bat', pathSeparator: '\\\\' },
 };
index 79cbc2aec68465d6b4c43d29074c606e98ba7da8..f790489a03c1463ef62984621f6693a3e20944e5 100644 (file)
@@ -26,8 +26,8 @@ import RenderOptions from '../components/RenderOptions';
 import { BuildTools, ManualTutorialConfig, OSs, TutorialModes } from '../types';
 
 interface Props {
-  hasCLanguageFeature: boolean;
   config?: ManualTutorialConfig;
+  hasCLanguageFeature: boolean;
   onDone: (config: ManualTutorialConfig) => void;
 }
 
index d5a39161ef9f9a6903422dab69cf79af92e1b177..8f01f1ff9e98c9f1dc9588a9a4cc323d05a6f640 100644 (file)
@@ -31,9 +31,9 @@ export enum Steps {
 }
 
 interface Props {
+  baseUrl: string;
   component: Component;
   currentUser: LoggedInUser;
-  baseUrl: string;
   isLocal?: boolean;
 }
 
index d615847448b7f353de475e7505074464adf75c01..799135f27b59de5c40f5933bc8af879d975b57ad 100644 (file)
@@ -27,12 +27,12 @@ import BuildToolForm from './BuildToolForm';
 import AnalysisCommand from './commands/AnalysisCommand';
 
 interface Props {
+  baseUrl: string;
   component: Component;
+  isLocal: boolean;
   onFinish?: (projectKey?: string) => void;
   open: boolean;
-  baseUrl: string;
   stepNumber: number;
-  isLocal: boolean;
   token?: string;
 }
 
index 417e999a5f1b8ef1af83653c8f2b03f31c882a1c..3045d4a407cd3f8273d62a5fffe430b094beab50 100644 (file)
@@ -58,24 +58,24 @@ import { getUniqueTokenName } from '../utils';
 
 interface Props {
   currentUser: Pick<LoggedInUser, 'login'>;
-  projectKey: string;
   finished: boolean;
   initialTokenName?: string;
-  stepNumber: number;
-  open: boolean;
   onContinue: (token: string) => void;
   onOpen: VoidFunction;
+  open: boolean;
+  projectKey: string;
+  stepNumber: number;
 }
 
 interface State {
   existingToken: string;
   loading: boolean;
   selection: string;
-  tokenName?: string;
   token?: string;
-  tokens?: UserToken[];
   tokenExpiration: TokenExpiration;
-  tokenExpirationOptions: { value: TokenExpiration; label: string }[];
+  tokenExpirationOptions: { label: string; value: TokenExpiration }[];
+  tokenName?: string;
+  tokens?: UserToken[];
 }
 
 const TOKEN_FORMAT_REGEX = /^[_a-z0-9]+$/;
index 78aff6019a5e3b853f42c3723008c7b6413e6f7b..bae1666034f18f2c0cad62951a07763ba0b3d1e6 100644 (file)
@@ -27,8 +27,8 @@ import JavaMaven from './JavaMaven';
 import Other from './Other';
 
 export interface AnalysisCommandProps {
-  component: Component;
   baseUrl: string;
+  component: Component;
   isLocal: boolean;
   languageConfig: ManualTutorialConfig;
   token?: string;
index 9a5fb3febab53138e530eff4673a11009d7c67c9..5e785c9ab0f5cdc8d1bbcd998705758c2e1db398 100644 (file)
@@ -27,8 +27,8 @@ import ExecBuildWrapper from './ExecBuildWrapper';
 import ExecScanner from './ExecScanner';
 
 export interface ClangGCCCustomProps {
-  component: Component;
   baseUrl: string;
+  component: Component;
   isLocal: boolean;
   os: OSs;
   token: string;
index 37ab68aab39e02e6b2b40bf275491b152c8480ff..6ff8bda1751af18bcf40331431b2f32eba3e0c03 100644 (file)
@@ -25,8 +25,8 @@ import DotNetCore from './DotNetCore';
 import DotNetFramework from './DotNetFramework';
 
 export interface DotNetProps {
-  component: Component;
   baseUrl: string;
+  component: Component;
   token: string;
 }
 
index ae24bfb34df10e71ae3cc7451fd2505fcdd1d992..4aef7392bc33344b6186594d84bcaeb7bd4a7643 100644 (file)
@@ -26,9 +26,9 @@ import { InlineSnippet } from '../../components/InlineSnippet';
 import { OSs } from '../../types';
 
 export interface DownloadBuildWrapperProps {
+  baseUrl: string;
   isLocal: boolean;
   os: OSs;
-  baseUrl: string;
 }
 
 const FILENAMES: { [x in OSs]: string } = {
index c208abb4b73e1bb4e3338fd1a59fda1b3df84359..41780dda9e66a5c66b597e9e72f25390c91c88e9 100644 (file)
@@ -31,12 +31,12 @@ import { quote } from '../../utils';
 import DoneNextSteps from '../DoneNextSteps';
 
 export interface ExecScannerProps {
-  component: Component;
   baseUrl: string;
+  cfamily?: boolean;
+  component: Component;
   isLocal: boolean;
   os: OSs;
   token: string;
-  cfamily?: boolean;
 }
 
 export default function ExecScanner(props: ExecScannerProps) {
index 858302848b487ff2c567c23ed46fec266d9aab89..21270d3a3d8d9fb18adaeb8bfa1ca2c945641f04 100644 (file)
@@ -33,8 +33,8 @@ import { GradleBuildDSL } from '../../types';
 import DoneNextSteps from '../DoneNextSteps';
 
 export interface JavaGradleProps {
-  component: Component;
   baseUrl: string;
+  component: Component;
   token: string;
 }
 
index 9fb6c7169437d2fc80f8a5a2dc3c13b9dab16f58..8b51d1b33fab3ceeab4388d27752e680ccc9b712 100644 (file)
@@ -29,8 +29,8 @@ import InstanceMessage from '../../../common/InstanceMessage';
 import DoneNextSteps from '../DoneNextSteps';
 
 export interface JavaMavenProps {
-  component: Component;
   baseUrl: string;
+  component: Component;
   token: string;
 }
 
index c2bbeeb83a39160c918228f0005242ab79e03f6c..81b72ded5e9bd381abc817bc82cd43c4b9632650 100644 (file)
@@ -24,9 +24,9 @@ import DownloadScanner from './DownloadScanner';
 import ExecScanner from './ExecScanner';
 
 export interface OtherProps {
+  baseUrl: string;
   component: Component;
   isLocal: boolean;
-  baseUrl: string;
   os: OSs;
   token: string;
 }
index c10de327d078782e3ba390bdfb16b5c4d43204d6..b378248c135c6f6da37f07ec9fbab7214651c511 100644 (file)
@@ -28,9 +28,9 @@ import SystemUpgradeItem from './SystemUpgradeItem';
 import { SYSTEM_VERSION_REGEXP, UpdateUseCase } from './utils';
 
 interface Props {
+  latestLTA?: string;
   onClose: () => void;
   systemUpgrades: SystemUpgrade[][];
-  latestLTA?: string;
   updateUseCase: UpdateUseCase;
 }
 
index 51fbcdd660129c06d2b9eacf54f7cbc54c77e438..f3762a582b38cadeb9e056c8988f95b3812bd6d5 100644 (file)
@@ -156,8 +156,8 @@ function TestComponent({
   componentKey,
   branchLike,
 }: {
-  componentKey: string;
   branchLike?: BranchLike;
+  componentKey: string;
 }) {
   const { openComponent } = React.useContext(WorkspaceContext);
 
index 3c6281a6a05f6d87e4e5e624b8c24e447ace5f0b..570a9872d0069eef46eb41f7879dde00780eca2d 100644 (file)
@@ -23,9 +23,9 @@ import { ReactElement } from 'react';
 type QueryHook<TData, TArgs extends any[]> = (...args: TArgs) => UseQueryResult<TData>;
 
 interface Props<TData, TArgs extends any[]> {
-  query: QueryHook<TData, TArgs>;
   args?: TArgs;
   children: (value: UseQueryResult<TData>) => ReactElement | null;
+  query: QueryHook<TData, TArgs>;
 }
 
 export default function UseQuery<TData, TArgs extends any[]>(props: Props<TData, TArgs>) {
index 41474a5f4e5b76fb60bcd7f9e7044d9a9069f93e..ff7653546b2047a8769b78ede18c7907b74bdb9f 100644 (file)
@@ -23,7 +23,7 @@ import { sanitizeString } from './sanitize';
 
 const NUMBER_OF_EXAMPLES = 2;
 
-type DiffBlock = { noncompliant: Element; compliant: Element };
+type DiffBlock = { compliant: Element; noncompliant: Element };
 
 export default function applyCodeDifferences(element: Element | null) {
   if (element === null) {
index ee5a816cfd414a816323479728f0aefcf3b2933d..9101c6cd327c797482d3d9932553a8d4515c1d11 100644 (file)
@@ -60,7 +60,7 @@ export function getAllEditionsAbove(currentEdition?: EditionKey) {
 
 export function getEditionUrl(
   edition: Edition,
-  data: { serverId?: string; ncloc?: number; sourceEdition?: EditionKey },
+  data: { ncloc?: number; serverId?: string; sourceEdition?: EditionKey },
 ) {
   let url = edition.homeUrl;
   const query = new URLSearchParams(omitNil(data)).toString();
index a86bed577dd180d047bab55c2fa47939a06ac18b..1a9d364edcc045be147ce415a5c4248ca8c3bdd6 100644 (file)
@@ -104,7 +104,7 @@ const FLOW_ORDER_MAP = {
 function splitFlows(
   issue: RawIssue,
   components: Component[] = [],
-): { secondaryLocations: FlowLocation[]; flows: FlowLocation[][]; flowsWithType: Flow[] } {
+): { flows: FlowLocation[][]; flowsWithType: Flow[]; secondaryLocations: FlowLocation[] } {
   if (issue.flows?.some((flow) => flow.type !== undefined)) {
     const flowsWithType = issue.flows.filter((flow) => flow.type !== undefined) as Flow[];
     flowsWithType.sort((f1, f2) => FLOW_ORDER_MAP[f1.type] - FLOW_ORDER_MAP[f2.type]);
index cd437aac6f3ff73e3fa47f84e91684b477c65d4b..ee23d40b0c2491ebab6b753c0032066cf97707d7 100644 (file)
@@ -88,7 +88,7 @@ class Request {
     private readonly options: { method?: string } = {},
   ) {}
 
-  getSubmitData(customHeaders: any = {}): { url: string; options: RequestInit } {
+  getSubmitData(customHeaders: any = {}): { options: RequestInit; url: string } {
     let { url } = this;
     const options: RequestInit = { ...DEFAULT_OPTIONS, ...this.options };
 
index d4fc042a59401c72b84386930c83c105934e777f..255e7ebf9a2649cf74c9ea607d330f22d90e7903 100644 (file)
@@ -799,7 +799,7 @@ export function mockUserGroupMember(overrides: Partial<UserGroupMember> = {}): U
 }
 
 export function mockDocumentationMarkdown(
-  overrides: Partial<{ content: string; title: string; key: string }> = {},
+  overrides: Partial<{ content: string; key: string; title: string }> = {},
 ): string {
   const content =
     overrides.content ||
index e4eb8400ac54964e2115ac99db1094190a4adc64..0dd27c4218d9d04481af0da246afe140a357a51b 100644 (file)
@@ -56,19 +56,19 @@ import { DEFAULT_METRICS } from './mocks/metrics';
 import { mockAppState, mockCurrentUser } from './testMocks';
 
 export interface RenderContext {
-  metrics?: Dict<Metric>;
   appState?: AppState;
-  languages?: Languages;
   currentUser?: CurrentUser;
-  navigateTo?: string;
   featureList?: Feature[];
+  languages?: Languages;
+  metrics?: Dict<Metric>;
+  navigateTo?: string;
 }
 
 export function renderAppWithAdminContext(
   indexPath: string,
   routes: () => JSX.Element,
   context: RenderContext = {},
-  overrides: { systemStatus?: SysStatus; adminPages?: Extension[] } = {},
+  overrides: { adminPages?: Extension[]; systemStatus?: SysStatus } = {},
 ): RenderResult {
   function MockAdminContainer() {
     return (
index 07e8c76ff0d6cdb5faaf84f1178de361ace53fde..bb9ed3be926dbd505313121a510f1469a444291b 100644 (file)
@@ -174,13 +174,13 @@ export function getIssuesUrl(query: Query): To {
  * Generate URL for a component's drilldown page
  */
 export function getComponentDrilldownUrl(options: {
+  asc?: boolean;
+  branchLike?: BranchLike;
   componentKey: string;
+  listView?: boolean;
   metric: string;
-  branchLike?: BranchLike;
   selectionKey?: string;
   treemapView?: boolean;
-  listView?: boolean;
-  asc?: boolean;
 }): To {
   const { componentKey, metric, branchLike, selectionKey, treemapView, listView, asc } = options;
   const query: Query = { id: componentKey, metric, ...getBranchLikeQuery(branchLike) };
index 7f1a3ad04a935a92f17cb8c9104fa461f18d591c..c00cab766caf0a9fd703e008c166887503a21ecd 100644 (file)
@@ -61,10 +61,10 @@ function LSComponent({
   initialValue,
   valueToSet,
 }: Readonly<{
-  lsKey: string;
   condition: (value: boolean | string) => boolean;
-  valueToSet: boolean | string;
   initialValue?: boolean | string;
+  lsKey: string;
+  valueToSet: boolean | string;
 }>) {
   const [value, setValue] = useLocalStorage(lsKey, initialValue);
 
index 5bca3426de31c97df53c1f59eb03b4a803cd24d1..5b6fd07edbc7f6ea3c2fb49755d1d825de1cf522 100644 (file)
@@ -228,7 +228,7 @@ export function useExcludeFromPurgeMutation() {
   const queryClient = useQueryClient();
   const invalidateKey = useMutateBranchQueryKey();
 
-  type ExcludeFromPurgeArg = { component: Component; key: string; exclude: boolean };
+  type ExcludeFromPurgeArg = { component: Component; exclude: boolean; key: string };
 
   return useMutation({
     mutationFn: async ({ component, key, exclude }: ExcludeFromPurgeArg) => {
@@ -286,7 +286,7 @@ export function useDeletBranchMutation() {
 }
 
 export function useRenameMainBranchMutation() {
-  type RenameMainBranchArg = { name: string; component: Component };
+  type RenameMainBranchArg = { component: Component; name: string };
   const queryClient = useQueryClient();
   const invalidateKey = useMutateBranchQueryKey();
 
@@ -349,8 +349,8 @@ export function useRefreshBranches() {
 }
 
 export interface WithBranchLikesProps {
-  branchLikes?: BranchLike[];
   branchLike?: BranchLike;
+  branchLikes?: BranchLike[];
   isFetchingBranch?: boolean;
 }
 
index 3a45dbda5719c5e09dd6bc9ac8f8792ef91df7d2..fca3618a211f3693be792c0ad8a0e11da2b0eac6 100644 (file)
@@ -27,8 +27,8 @@ import { Component } from '../types/types';
 const TASK_RETRY = 10_000;
 
 type QueryKeyData = {
-  metricKeys: string[];
   branchParameters: BranchParameters;
+  metricKeys: string[];
 };
 
 function getComponentQueryKey(key: string, type: 'tasks'): string[];
@@ -37,7 +37,7 @@ function getComponentQueryKey(key: string, type: string, data?: QueryKeyData): s
   return ['component', key, type, JSON.stringify(data)];
 }
 
-function extractQueryKeyData(queryKey: string[]): { key: string; data?: QueryKeyData } {
+function extractQueryKeyData(queryKey: string[]): { data?: QueryKeyData; key: string } {
   const [, key, , data] = queryKey;
   return { key, data: JSON.parse(data ?? 'null') };
 }
index 6c487127bf8e781d75688d73e5233338469275e2..344ba6c029ad62e339175b9f99e03ed9f1a8dc9e 100644 (file)
@@ -155,7 +155,7 @@ type SetBindingParams = ProjectAlmBindingParams & {
   repository: string;
 } & (
     | { alm: AlmKeys.Azure | AlmKeys.BitbucketServer; slug: string; summaryCommentEnabled?: never }
-    | { alm: AlmKeys.GitHub; summaryCommentEnabled: boolean; slug?: never }
+    | { alm: AlmKeys.GitHub; slug?: never; summaryCommentEnabled: boolean }
     | {
         alm: Exclude<AlmKeys, AlmKeys.Azure | AlmKeys.GitHub | AlmKeys.BitbucketServer>;
         slug?: never;
index 457040f34cf8d0d5538307a9c25a0334fc7590a2..26ffbb911f7f13c9da06738a3ed8839e902f7630 100644 (file)
@@ -36,9 +36,9 @@ const USER_SUB_DOMAIN = 'groups-of-user';
 
 export function useGroupMembersQuery(params: {
   filter?: SelectListFilter;
-  q?: string;
   groupId: string;
   pageIndex?: number;
+  q?: string;
 }) {
   return useInfiniteQuery({
     queryKey: [DOMAIN, GROUP_SUB_DOMAIN, 'list', params],
@@ -187,7 +187,7 @@ export function useRemoveGroupMembershipMutation() {
   const queryClient = useQueryClient();
 
   return useMutation({
-    mutationFn: async ({ userId, groupId }: { userId: string; groupId: string }) => {
+    mutationFn: async ({ userId, groupId }: { groupId: string; userId: string }) => {
       const memberships = await getGroupMemberships({ userId, groupId, pageSize: 1 });
       if (!memberships.page.total) {
         throw new Error(
index ac331a7047354fa2b6324a3dff9b327642e14c30..e41ea23d85034e87d49fe4acd2e1683d11399a17 100644 (file)
@@ -52,8 +52,8 @@ export function useUpdateGroupMutation() {
       id,
       data,
     }: {
-      id: Parameters<typeof updateGroup>[0];
       data: Parameters<typeof updateGroup>[1];
+      id: Parameters<typeof updateGroup>[0];
     }) => updateGroup(id, data),
     onSuccess() {
       queryClient.invalidateQueries({ queryKey: ['group', 'list'] });
index 4af3d08e2850bbd98dbce3b3002e7179844c7dd5..02ed747445c749182145e5789308f5f7f1db7daf 100644 (file)
@@ -63,8 +63,8 @@ export function useUpdateGitLabConfigurationMutation() {
       id,
       data,
     }: {
-      id: Parameters<typeof updateGitLabConfiguration>[0];
       data: Parameters<typeof updateGitLabConfiguration>[1];
+      id: Parameters<typeof updateGitLabConfiguration>[0];
     }) => updateGitLabConfiguration(id, data),
     onSuccess(data) {
       client.invalidateQueries({ queryKey: ['identity_provider', 'users_and_groups_provider'] });
index 996fdf94b24ceb23b4e87d5ad82e95168317bb98..5de84a7428d31238b19f912df31217e2c0466691 100644 (file)
@@ -32,19 +32,19 @@ import { CreateProjectModes } from '../apps/create/project/types';
 
 export type MutationArg<AlmImport extends ImportProjectParam = ImportProjectParam> =
   AlmImport extends {
-    creationMode: infer A;
     almSetting: string;
+    creationMode: infer A;
     monorepo: false;
     projects: (infer R)[];
   }
-    ? { creationMode: A; almSetting: string; monorepo: false } & R
+    ? { almSetting: string; creationMode: A; monorepo: false } & R
     :
         | {
             creationMode: CreateProjectModes.Manual;
-            project: string;
-            name: string;
             mainBranch: string;
             monorepo: false;
+            name: string;
+            project: string;
           }
         | {
             creationMode: CreateProjectModes;
index cf00c317e0e850a87e94904d942f7770d090a1ac..f3574e8defc1cfa60b4753db9cc9d283933d1792 100644 (file)
@@ -50,8 +50,8 @@ export function useNewCodeDefinitionMutation() {
 
   return useMutation({
     mutationFn: (newCodeDefinition: {
-      project?: string;
       branch?: string;
+      project?: string;
       type?: NewCodeDefinitionType;
       value?: string;
     }) => {
index 4f007a94a99c4e55456b6645c1f904bcd50041fb..9ba741783590fc54a10fd99481fd65e502f75ae3 100644 (file)
@@ -167,8 +167,8 @@ export function useFixQualityGateMutation(gateName: string) {
       weakConditions,
       missingConditions,
     }: {
-      weakConditions: Condition[];
       missingConditions: Condition[];
+      weakConditions: Condition[];
     }) => {
       const promiseArr = weakConditions
         .map((condition) => {
index 2d81f77f4703fb6e7478a7458b1ae76d64d59e87..47294f6124f29cd2efb243978f1ff492c76121cd 100644 (file)
@@ -46,7 +46,7 @@ export function useSearchRulesQuery(data: SearchRulesQuery) {
 }
 
 export function useRuleDetailsQuery<T = Awaited<ReturnType<typeof getRuleDetails>>>(
-  data: { key: string; actives?: boolean },
+  data: { actives?: boolean; key: string },
   options?: Omit<
     UseQueryOptions<Awaited<ReturnType<typeof getRuleDetails>>, Error, T>,
     'queryKey' | 'queryFn'
index 225957e384f5bb06a2e21b909da3502a2c51723f..164ee2a950a6fe9a85a65796961e2f0ae264af02 100644 (file)
@@ -46,7 +46,7 @@ export function useGetValueQuery(key: string, component?: string) {
 export function useResetSettingsMutation() {
   const queryClient = useQueryClient();
   return useMutation({
-    mutationFn: ({ keys, component }: { keys: string[]; component?: string }) =>
+    mutationFn: ({ keys, component }: { component?: string; keys: string[] }) =>
       resetSettingValue({ keys: keys.join(','), component }),
     onSuccess: (_, { keys }) => {
       keys.forEach((key) => {
@@ -62,8 +62,8 @@ export function useSaveValuesMutation() {
   return useMutation({
     mutationFn: (
       values: {
-        newValue?: SettingValue;
         definition: ExtendedSettingDefinition;
+        newValue?: SettingValue;
       }[],
     ) => {
       return Promise.all(
@@ -103,9 +103,9 @@ export function useSaveValueMutation() {
       definition,
       component,
     }: {
-      newValue: SettingValue;
-      definition: ExtendedSettingDefinition;
       component?: string;
+      definition: ExtendedSettingDefinition;
+      newValue: SettingValue;
     }) => {
       if (isDefaultValue(newValue, definition)) {
         return resetSettingValue({ keys: definition.key, component });
index c7391c0b002f967ebd94bbc4c7cb63f6b01e3662..9d7749d013ea980ecff7c50d0c267d773dfc2591 100644 (file)
@@ -68,8 +68,8 @@ export function useUpdateUserMutation() {
       id,
       data,
     }: {
-      id: Parameters<typeof updateUser>[0];
       data: Parameters<typeof updateUser>[1];
+      id: Parameters<typeof updateUser>[0];
     }) => updateUser(id, data),
     onSuccess() {
       queryClient.invalidateQueries({ queryKey: ['user', 'list'] });
index ba6908b1731214167d83868efc909053210d8bdc..74a82833b5450798dfed951891cf74e1ea572196 100644 (file)
@@ -22,8 +22,8 @@ import { A11ySkipLink } from '../../../types/types';
 
 export interface A11yContextShape {
   addA11ySkipLink: (link: A11ySkipLink) => void;
-  removeA11ySkipLink: (link: A11ySkipLink) => void;
   links: A11ySkipLink[];
+  removeA11ySkipLink: (link: A11ySkipLink) => void;
 }
 
 export const A11yContext = createContext<A11yContextShape>({
index 70b391f9ef64ca95f4aea47d17568f0d2fae899a..1729843f78fd9ae58812da7f4a3fc41c1c18e29c 100644 (file)
@@ -35,7 +35,7 @@ export interface DocHelpTooltipProps {
   content?: React.ReactNode;
   linkTextLabel?: string;
   links?: Array<
-    { label?: string; inPlace?: boolean } & (
+    { inPlace?: boolean; label?: string } & (
       | { doc?: true; href: DocLink }
       | { doc: false; href: string }
     )
index 0ab20b45acf83f0759738e1b7fd7336cbbc0d917..8af8804f9ac8da53252d47134b9a7c3911049897 100644 (file)
@@ -28,8 +28,8 @@ import { MetricType } from '~sonar-aligned/types/metrics';
 import RatingTooltipContent from '../../../components/measure/RatingTooltipContent';
 
 interface Props {
-  className?: string;
   badgeSize?: 'xs' | 'sm' | 'md';
+  className?: string;
   decimals?: number;
   fontClassName?: `sw-body-${string}` | `sw-heading-lg`;
   metricKey: string;
index 5043d5ab1e9c4251d66d9eb4a40a82b6cd69c335..c31351b65780ff7ccf42313520ad1e596792cf3b 100644 (file)
@@ -31,8 +31,8 @@ export interface Location extends LocationRouter {
 
 export interface Router {
   navigate: NavigateFunction;
-  replace: (location: string | Partial<Location>) => void;
   push: (location: string | Partial<Location>) => void;
+  replace: (location: string | Partial<Location>) => void;
   searchParams: URLSearchParams;
   setSearchParams: (
     nextInit: URLSearchParamsInit,
index 0e6060673ec6074ab9b028c7d89b4f585342d183..1932b08ffd62251ae70a9aea90c260e3623679d9 100644 (file)
@@ -20,8 +20,8 @@
 import { Dict } from './types';
 
 export interface AzureProject {
-  name: string;
   description: string;
+  name: string;
 }
 
 export interface AzureRepository {
@@ -41,16 +41,16 @@ export interface BitbucketRepository {
   id: number;
   name: string;
   projectKey: string;
-  sqProjectKey?: string;
   slug: string;
+  sqProjectKey?: string;
 }
 
 export interface BitbucketCloudRepository {
-  uuid: number;
   name: string;
   projectKey: string;
-  sqProjectKey?: string;
   slug: string;
+  sqProjectKey?: string;
+  uuid: number;
   workspace: string;
 }
 
@@ -68,8 +68,8 @@ export interface GithubRepository {
   id: string;
   key: string;
   name: string;
-  url: string;
   sqProjectKey?: string;
+  url: string;
 }
 
 export interface GitlabProject {
@@ -77,8 +77,8 @@ export interface GitlabProject {
   name: string;
   pathName: string;
   pathSlug: string;
+  slug: string;
   sqProjectKey?: string;
   sqProjectName?: string;
-  slug: string;
   url: string;
 }
index 0a9b89b5763a4841bfc6fdbdfc8cd4bb248f4ce2..845ba04b1887ec6f4e90a65a2d370aad91bd0633 100644 (file)
@@ -70,11 +70,11 @@ export interface GitlabBindingDefinition extends AlmBindingDefinitionBase {
 export interface ProjectAlmBindingResponse {
   alm: AlmKeys;
   key: string;
+  monorepo: boolean;
   repository: string;
   slug?: string;
-  url?: string;
   summaryCommentEnabled?: boolean;
-  monorepo: boolean;
+  url?: string;
 }
 
 export interface ProjectAzureBindingResponse extends ProjectAlmBindingResponse {
@@ -103,8 +103,8 @@ export interface ProjectGitLabBindingResponse extends ProjectAlmBindingResponse
 
 export interface ProjectAlmBindingParams {
   almSetting: string;
-  project: string;
   monorepo: boolean;
+  project: string;
 }
 
 export interface AzureProjectAlmBindingParams extends ProjectAlmBindingParams {
@@ -167,8 +167,8 @@ export enum ProjectAlmBindingConfigurationErrorScope {
 }
 
 export interface ProjectAlmBindingConfigurationErrors {
-  scope: ProjectAlmBindingConfigurationErrorScope;
   errors: { msg: string }[];
+  scope: ProjectAlmBindingConfigurationErrorScope;
 }
 
 export function isProjectBitbucketBindingResponse(
index 1684dab86f23b1805f437470268b2934ec2e2fa8..73400e894d46dfae922701c0600850c4d92f8345 100644 (file)
@@ -36,19 +36,19 @@ export interface Application {
 }
 
 export interface ApplicationProject {
+  accessible?: boolean;
   enabled?: boolean;
   key: string;
   name: string;
   selected?: boolean;
-  accessible?: boolean;
 }
 
 export interface ApplicationProjectBranch {
+  accessible?: boolean;
   branch: string;
   enabled?: boolean;
   isMain: boolean;
   key: string;
   name: string;
   selected?: boolean;
-  accessible?: boolean;
 }
index 308a01fa688e40f19b41ead6771760e31ddb8957..7f284ac36285ddb3ed92840c3ba5758a7f0b8f62 100644 (file)
@@ -25,6 +25,7 @@ export interface AppState {
   authenticationError?: boolean;
   authorizationError?: boolean;
   canAdmin?: boolean;
+  documentationUrl: string;
   edition?: EditionKey;
   globalPages?: Extension[];
   instanceUsesDefaultAdminCredentials?: boolean;
@@ -36,5 +37,4 @@ export interface AppState {
   version: string;
   versionEOL: string;
   webAnalyticsJsPath?: string;
-  documentationUrl: string;
 }
index 3b17f442de7ff965861cbdeb3099fcc296638bf8..340dc60e67e24351ebddb36d48153b92c2c8c7f6 100644 (file)
@@ -30,19 +30,19 @@ type OmitReadonly<T> = Pick<T, WritableKeys<T>>;
 
 declare module 'axios' {
   export interface AxiosInstance {
-    get<T = any>(url: string, config?: AxiosRequestConfig): Promise<T>;
+    defaults: Omit<AxiosDefaults, 'headers'> & {
+      headers: HeadersDefaults & {
+        [key: string]: AxiosHeaderValue;
+      };
+    };
     delete<T = void>(url: string, config?: AxiosRequestConfig): Promise<T>;
-    post<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>;
+    get<T = any>(url: string, config?: AxiosRequestConfig): Promise<T>;
     patch<T = any, D = Partial<OmitReadonly<T>>>(
       url: string,
       data?: D,
       config?: AxiosRequestConfig<D>,
     ): Promise<T>;
 
-    defaults: Omit<AxiosDefaults, 'headers'> & {
-      headers: HeadersDefaults & {
-        [key: string]: AxiosHeaderValue;
-      };
-    };
+    post<T = any, D = any>(url: string, data?: D, config?: AxiosRequestConfig<D>): Promise<T>;
   }
 }
index 653490301d0b96cd5e93ab5a60d3caa24faf338b..ee9b112f0738096e5da2bf6e75351f921e9252ef 100644 (file)
@@ -40,10 +40,10 @@ export interface BranchTree {
 }
 
 export interface BranchLikeTree {
-  mainBranchTree?: BranchTree;
   branchTree: BranchTree[];
-  parentlessPullRequests: PullRequest[];
+  mainBranchTree?: BranchTree;
   orphanPullRequests: PullRequest[];
+  parentlessPullRequests: PullRequest[];
 }
 
 export interface BranchWithNewCodePeriod extends Branch {
index 602084e817fa9a0ba6708286b9f600f4427cb963..dbcbb4543ba06395b5a9ee5843646c3323a23ab7 100644 (file)
@@ -23,11 +23,11 @@ import { SysStatus } from './types';
 
 export interface EnhancedWindow extends Window {
   baseUrl: string;
-  serverStatus: SysStatus;
   instance: InstanceType;
   official: boolean;
-
   registerExtension: (key: string, start: ExtensionStartMethod, providesCSSFile?: boolean) => void;
+
+  serverStatus: SysStatus;
   setWebAnalyticsPageChangeHandler: (pageHandler: (pathname: string) => void) => void;
   t: (...keys: string[]) => string;
   tp: (messageKey: string, ...parameters: Array<string | number>) => string;
@@ -36,8 +36,8 @@ export interface EnhancedWindow extends Window {
 export interface AppVariablesElement extends HTMLElement {
   dataset: {
     baseUrl: string;
-    serverStatus: SysStatus;
     instance: InstanceType;
     official: string;
+    serverStatus: SysStatus;
   };
 }
index 120a753bc91359699fc2cbb25e2d9c4eecd59d06..13bea9be601013310491df1494ed77e093c5f360 100644 (file)
@@ -54,8 +54,8 @@ export enum SoftwareQuality {
 }
 
 export interface SoftwareImpact {
-  softwareQuality: SoftwareQuality;
   severity: SoftwareImpactSeverity;
+  softwareQuality: SoftwareQuality;
 }
 
 export interface SoftwareImpactMeasureData {
index c85e4461a42d2455b5b81a7a45e784a8521a8d84..40e31dd5d8c17f252d48249023d99d6335afbd52 100644 (file)
@@ -33,6 +33,6 @@ export interface GetRulesAppResponse {
 export interface SearchRulesResponse {
   actives?: Dict<RuleActivation[]>;
   facets?: { property: string; values: { count: number; val: string }[] }[];
-  rules: Rule[];
   paging: Paging;
+  rules: Rule[];
 }
index 0855d59b3de2f6621182bea3931331bf369ca5ae..5553887957a4dfcede3639b88d3db0a47e89ce66 100644 (file)
@@ -75,8 +75,8 @@ export function isView(
 export interface ComponentContextShape {
   component?: Component;
   currentTask?: Task;
+  fetchComponent: () => Promise<void>;
   isInProgress?: boolean;
   isPending?: boolean;
   onComponentChange: (changes: Partial<Component>) => void;
-  fetchComponent: () => Promise<void>;
 }
index 48b5b1d9ab3f7817ccf049c34c6f0ee85c4a7873..0caa7eea7c0092ddd5de1987900eda0377d7b9c6 100644 (file)
@@ -34,9 +34,12 @@ export interface Edition {
 }
 
 export interface License {
+  canActivateGracePeriod: boolean;
   contactEmail: string;
   edition: string;
   expiresAt: string;
+  gracePeriodEndDate?: string;
+  gracePeriodExpired?: boolean;
   isExpired: boolean;
   isOfficialDistribution: boolean;
   isSupported: boolean;
@@ -48,7 +51,4 @@ export interface License {
   remainingLocThreshold: number;
   serverId: string;
   type: string;
-  canActivateGracePeriod: boolean;
-  gracePeriodEndDate?: string;
-  gracePeriodExpired?: boolean;
 }
index 593abc3b91562de1676d872bd3d48161e47c9648..ff6401e089ba6ec6eddc830389bf0e6751cf0866 100644 (file)
@@ -101,8 +101,8 @@ interface Comment {
 }
 
 export interface MessageFormatting {
-  start: number;
   end: number;
+  start: number;
   type: MessageFormattingType;
 }
 
@@ -120,39 +120,39 @@ export interface RawFlowLocation {
 
 export interface RawIssue {
   actions: string[];
-  transitions: IssueTransition[];
-  tags?: string[];
   assignee?: string;
   author?: string;
-  cleanCodeAttributeCategory: CleanCodeAttributeCategory;
   cleanCodeAttribute: CleanCodeAttribute;
-  impacts: SoftwareImpact[];
+  cleanCodeAttributeCategory: CleanCodeAttributeCategory;
   codeVariants?: string[];
   comments?: Comment[];
-  creationDate: string;
   component: string;
+  creationDate: string;
   flows?: Array<{
-    type?: string;
     description?: string;
     locations?: RawFlowLocation[];
+    type?: string;
   }>;
+  impacts: SoftwareImpact[];
+  issueStatus: IssueStatus;
   key: string;
   line?: number;
+  message?: string;
   messageFormattings?: MessageFormatting[];
   prioritizedRule?: boolean;
   project: string;
-  rule: string;
+  quickFixAvailable?: boolean;
   resolution?: string;
-  message?: string;
+  rule: string;
+  ruleDescriptionContextKey?: string;
+  ruleStatus?: string;
+  scope: string;
   severity: string;
   status: string;
-  issueStatus: IssueStatus;
+  tags?: string[];
   textRange?: TextRange;
+  transitions: IssueTransition[];
   type: IssueType;
-  scope: string;
-  ruleDescriptionContextKey?: string;
-  ruleStatus?: string;
-  quickFixAvailable?: boolean;
 }
 
 export interface IssueResponse {
@@ -198,11 +198,11 @@ export interface ListIssuesPromise {
 }
 
 export interface ReferencedComponent {
+  enabled?: boolean;
   key: string;
+  longName?: string;
   name: string;
   path?: string;
-  enabled?: boolean;
-  longName?: string;
   uuid: string;
 }
 
@@ -217,7 +217,7 @@ export interface ReferencedRule {
 
 export interface RawFacet {
   property: string;
-  values: Array<{ val: string; count: number }>;
+  values: Array<{ count: number; val: string }>;
 }
 
 export interface Facet {
index 07cd6107985fb3a56ae5df45e5c0887c60689e9c..86d1c6c835d3a7f1273d985d6aa3e07b4e485e2a 100644 (file)
@@ -30,7 +30,7 @@ export interface L10nBundleRequestResponse {
 }
 
 export interface L10nBundle {
-  timestamp?: string;
   locale?: string;
   messages?: Dict<string>;
+  timestamp?: string;
 }
index 50fd81832d8f044a8e70a1471846d2e4904b0aef..43508d55a78bded149ed8aaeac53cf10ef39da03 100644 (file)
@@ -26,22 +26,22 @@ export enum NewCodeDefinitionType {
 }
 
 export interface NewCodeDefinition {
-  projectKey?: string;
-  type: NewCodeDefinitionType;
-  value?: string;
   effectiveValue?: string;
   inherited?: boolean;
   previousNonCompliantValue?: string;
+  projectKey?: string;
+  type: NewCodeDefinitionType;
   updatedAt?: number;
+  value?: string;
 }
 
 export interface NewCodeDefinitiondWithCompliance {
+  isCompliant: boolean;
   type?: NewCodeDefinitionType;
   value?: string;
-  isCompliant: boolean;
 }
 
 export interface NewCodeDefinitionBranch extends NewCodeDefinition {
-  projectKey: string;
   branchKey: string;
+  projectKey: string;
 }
index 5f7c69a193aa6d99c9b38028048082bf801edaea..5a8dc969a887496d5fa0a51f6a4bfbc850b2e469 100644 (file)
@@ -54,6 +54,6 @@ export interface NotificationsResponse {
 
 export interface AddRemoveNotificationParameters {
   channel: string;
-  type: string;
   project?: string;
+  type: string;
 }
index c8fd4b1d9c3879a404366242125fa7ae1b77775d..4e0f98ee72f82f8c03506dbd53a70aef9376545e 100644 (file)
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
 export interface Plugin {
-  key: string;
-  name: string;
   category?: string;
   description?: string;
   editionBundled?: boolean;
+  homepageUrl?: string;
+  issueTrackerUrl?: string;
+  key: string;
   license?: string;
+  name: string;
   organizationName?: string;
-  homepageUrl?: string;
   organizationUrl?: string;
-  issueTrackerUrl?: string;
   termsAndConditionsUrl?: string;
 }
 
 export interface PendingPluginResult {
   installing: PendingPlugin[];
-  updating: PendingPlugin[];
   removing: PendingPlugin[];
+  updating: PendingPlugin[];
 }
 
 export interface AvailablePlugin extends Plugin {
@@ -43,32 +43,32 @@ export interface AvailablePlugin extends Plugin {
 }
 
 export interface PendingPlugin extends Plugin {
-  version: string;
   implementationBuild: string;
+  version: string;
 }
 
 export interface InstalledPlugin extends PendingPlugin {
   documentationPath?: string;
-  issueTrackerUrl?: string;
   filename: string;
   hash: string;
+  issueTrackerUrl?: string;
   sonarLintSupported: boolean;
   updatedAt: number;
   updates?: Update[];
 }
 
 export interface Release {
-  version: string;
+  changeLogUrl?: string;
   date: string;
   description?: string;
-  changeLogUrl?: string;
+  version: string;
 }
 
 export interface Update {
-  status: string;
+  previousUpdates?: Update[];
   release?: Release;
   requires: Plugin[];
-  previousUpdates?: Update[];
+  status: string;
 }
 
 export enum PluginType {
index 986484e57129e43e42911c6ecf1f9d01e86ba3f9..16611694225efd61d6bc4bfd723191c792288d4e 100644 (file)
@@ -39,14 +39,6 @@ export interface ParsedAnalysis extends BaseAnalysis {
 
 export interface AnalysisEvent {
   category: ProjectAnalysisEventCategory | ApplicationAnalysisEventCategory;
-  description?: string;
-  key: string;
-  name: string;
-  qualityGate?: {
-    failing: Array<{ branch: string; key: string; name: string }>;
-    status: Status;
-    stillFailing: boolean;
-  };
   definitionChange?: {
     projects: Array<{
       branch?: string;
@@ -57,6 +49,14 @@ export interface AnalysisEvent {
       oldBranch?: string;
     }>;
   };
+  description?: string;
+  key: string;
+  name: string;
+  qualityGate?: {
+    failing: Array<{ branch: string; key: string; name: string }>;
+    status: Status;
+    stillFailing: boolean;
+  };
   qualityProfile?: {
     key: string;
     languageKey: string;
@@ -97,8 +97,8 @@ export interface HistoryItem {
 }
 
 export interface MeasureHistory {
-  metric: MetricKey;
   history: HistoryItem[];
+  metric: MetricKey;
 }
 
 export interface Serie {
index c9b818c75fafcc3ebde5e1c3806b5a26001c4efb..26d8f5af5c0e724052aa5972741e95b919c06a09 100644 (file)
@@ -21,15 +21,14 @@ import { TaskStatuses } from './tasks';
 
 export type GithubStatusDisabled = {
   enabled: false;
-  nextSync?: never;
   lastSync?: never;
+  nextSync?: never;
 };
 export interface GithubStatusEnabled extends AlmSyncStatus {
   enabled: true;
 }
 
 export interface AlmSyncStatus {
-  nextSync?: { status: TaskStatuses.Pending | TaskStatuses.InProgress };
   lastSync?: {
     executionTimeMs: number;
     finishedAt: number;
@@ -37,16 +36,17 @@ export interface AlmSyncStatus {
     warningMessage?: string;
   } & (
     | {
+        errorMessage?: never;
         status: TaskStatuses.Success;
         summary?: string;
-        errorMessage?: never;
       }
     | {
+        errorMessage?: string;
         status: TaskStatuses.Canceled | TaskStatuses.Failed;
         summary?: never;
-        errorMessage?: string;
       }
   );
+  nextSync?: { status: TaskStatuses.Pending | TaskStatuses.InProgress };
 }
 
 export type GithubStatus = GithubStatusDisabled | GithubStatusEnabled;
@@ -58,70 +58,70 @@ export enum GitHubProvisioningStatus {
 
 type GitHubProvisioning =
   | {
-      status: GitHubProvisioningStatus.Success;
       errorMessage?: never;
+      status: GitHubProvisioningStatus.Success;
     }
   | {
-      status: GitHubProvisioningStatus.Failed;
       errorMessage: string;
+      status: GitHubProvisioningStatus.Failed;
     };
 
 export interface GitHubConfigurationStatus {
   application: {
-    jit: GitHubProvisioning;
     autoProvisioning: GitHubProvisioning;
+    jit: GitHubProvisioning;
   };
   installations: {
-    organization: string;
-    jit: GitHubProvisioning;
     autoProvisioning: GitHubProvisioning;
+    jit: GitHubProvisioning;
+    organization: string;
   }[];
 }
 
 export interface GitHubMapping {
-  readonly id: string;
-  readonly githubRole: string;
   readonly baseRole?: boolean;
+  readonly githubRole: string;
+  readonly id: string;
   permissions: {
-    user: boolean;
+    admin: boolean;
     codeViewer: boolean;
     issueAdmin: boolean;
-    securityHotspotAdmin: boolean;
-    admin: boolean;
     scan: boolean;
+    securityHotspotAdmin: boolean;
+    user: boolean;
   };
 }
 
 export interface GitLabConfigurationCreateBody {
   applicationId: string;
-  url: string;
   secret: string;
   synchronizeGroups: boolean;
+  url: string;
 }
 
 export type GitLabConfigurationUpdateBody = {
+  allowUsersToSignUp?: boolean;
+  allowedGroups?: string[];
   applicationId?: string;
-  url?: string;
-  secret?: string;
-  synchronizeGroups?: boolean;
   enabled?: boolean;
-  provisioningType?: ProvisioningType;
   provisioningToken?: string;
-  allowedGroups?: string[];
-  allowUsersToSignUp?: boolean;
+  provisioningType?: ProvisioningType;
+  secret?: string;
+  synchronizeGroups?: boolean;
+  url?: string;
 };
 
 export type GitlabConfiguration = {
-  id: string;
-  enabled: boolean;
-  applicationId: string;
-  synchronizeGroups: boolean;
-  url: string;
-  provisioningType: ProvisioningType;
-  allowedGroups: string[];
   allowUsersToSignUp: boolean;
+  allowedGroups: string[];
+  applicationId: string;
+  enabled: boolean;
   errorMessage?: string;
+  id: string;
   isProvisioningTokenSet: boolean;
+  provisioningType: ProvisioningType;
+  synchronizeGroups: boolean;
+  url: string;
 };
 
 export enum ProvisioningType {
index 308147bad967058ee6a2a35971364b1d1b772a53..a936351815d8c55b90f756ff1798e1624266cd22 100644 (file)
@@ -24,10 +24,10 @@ import { CaycStatus, MeasureEnhanced, Metric } from './types';
 import { UserBase } from './users';
 
 export interface QualityGateProjectStatus {
+  caycStatus: CaycStatus;
   conditions?: QualityGateProjectStatusCondition[];
   ignoredConditions: boolean;
   status: Status;
-  caycStatus: CaycStatus;
 }
 
 export interface QualityGateProjectStatusCondition {
@@ -49,30 +49,30 @@ export interface QualityGateApplicationStatusCondition {
   comparator: string;
   errorThreshold?: string;
   metric: string;
-  periodIndex?: number;
   onLeak?: boolean;
+  periodIndex?: number;
   status: Status;
   value: string;
   warningThreshold?: string;
 }
 
 export interface QualityGateApplicationStatusChildProject {
+  caycStatus: CaycStatus;
   conditions: QualityGateApplicationStatusCondition[];
   key: string;
   name: string;
   status: Status;
-  caycStatus: CaycStatus;
 }
 
 export interface QualityGateStatus {
+  branchLike?: BranchLike;
+  caycStatus: CaycStatus;
   conditions: QualityGateStatusConditionEnhanced[];
   failedConditions: QualityGateStatusConditionEnhanced[];
   ignoredConditions?: boolean;
-  caycStatus: CaycStatus;
   key: string;
   name: string;
   status: Status;
-  branchLike?: BranchLike;
 }
 
 export interface QualityGateStatusCondition {
index 761548feb9f896e95f9a54870072ad00b6af2088..1f5ca870388ba91441b1a7a21ea87ad119b17133 100644 (file)
@@ -33,6 +33,8 @@ export interface SearchRulesQuery {
   cwe?: string;
   f?: string;
   facets?: string;
+  impactSeverities?: string;
+  impactSoftwareQualities?: string;
   include_external?: boolean | string;
   inheritance?: string;
   is_template?: boolean | string;
@@ -40,20 +42,18 @@ export interface SearchRulesQuery {
   owaspTop10?: string;
   ['owaspTop10-2021']?: string;
   p?: number;
+  prioritizedRule?: boolean | string;
   ps?: number;
   q?: string;
   qprofile?: string;
   repositories?: string;
   rule_key?: string;
   s?: string;
-  impactSoftwareQualities?: string;
-  impactSeverities?: string;
   sonarsourceSecurity?: string;
   statuses?: string;
   tags?: string;
   template_key?: string;
   types?: string;
-  prioritizedRule?: boolean | string;
 }
 
 export enum RulesFacetName {
index 9b9934f19ddfb0288878acf414c165ae29aadc87..4c5c556ac75ee9bf9bec2d92e99918b716474fd4 100644 (file)
@@ -59,6 +59,9 @@ export interface RawHotspot {
   author?: string;
   component: string;
   creationDate: string;
+  flows?: Array<{
+    locations?: Array<Omit<FlowLocation, 'componentName'>>;
+  }>;
   key: string;
   line?: number;
   message: string;
@@ -70,9 +73,6 @@ export interface RawHotspot {
   status: HotspotStatus;
   updateDate: string;
   vulnerabilityProbability: HotspotRatingEnum;
-  flows?: Array<{
-    locations?: Array<Omit<FlowLocation, 'componentName'>>;
-  }>;
 }
 
 export interface Hotspot {
@@ -101,18 +101,18 @@ export interface Hotspot {
 }
 
 export interface HotspotComponent {
+  branch?: string;
   key: string;
-  qualifier: ComponentQualifier;
-  name: string;
   longName: string;
+  name: string;
   path: string;
-  branch?: string;
   pullRequest?: string;
+  qualifier: ComponentQualifier;
 }
 
 export interface HotspotUpdateFields {
-  status: HotspotStatus;
   resolution?: HotspotResolution;
+  status: HotspotStatus;
 }
 
 export interface HotspotUpdate extends HotspotUpdateFields {
@@ -127,24 +127,24 @@ export interface HotspotRule {
 }
 
 export interface HotspotComment {
-  key: string;
+  createdAt: string;
   htmlText: string;
+  key: string;
+  login: string;
   markdown: string;
   updatable: boolean;
-  createdAt: string;
-  login: string;
   user: UserBase;
 }
 
 export interface ReviewHistoryElement {
-  type: ReviewHistoryType;
   date: string;
-  user: Pick<UserBase, 'active' | 'avatar' | 'name'>;
   diffs?: IssueChangelogDiff[];
   html?: string;
   key?: string;
-  updatable?: boolean;
   markdown?: string;
+  type: ReviewHistoryType;
+  updatable?: boolean;
+  user: Pick<UserBase, 'active' | 'avatar' | 'name'>;
 }
 
 export enum ReviewHistoryType {
@@ -154,15 +154,15 @@ export enum ReviewHistoryType {
 }
 
 export interface HotspotSearchResponse {
-  components?: { key: string; qualifier: string; name: string }[];
+  components?: { key: string; name: string; qualifier: string }[];
   hotspots: RawHotspot[];
   paging: Paging;
 }
 
 export interface HotspotSetStatusRequest {
-  status: HotspotStatus;
-  resolution?: HotspotResolution;
   comment?: string;
+  resolution?: HotspotResolution;
+  status: HotspotStatus;
 }
 
 export interface HotspotAssignRequest {
index 200a9bf562b23ccf752e9eb6784b3de64172588e..2c4aff9923a1b206b46652d9cca8af794b4ccc47 100644 (file)
@@ -32,5 +32,5 @@ export enum SecurityStandard {
 export type StandardType = SecurityStandard;
 
 export type Standards = {
-  [key in StandardType]: Dict<{ title: string; description?: string; level?: string }>;
+  [key in StandardType]: Dict<{ description?: string; level?: string; title: string }>;
 };
index bf4720a3968864d235b9aca68f50419115538366..7722625a5eae043547419d8149926f2d41a5d2e7 100644 (file)
@@ -90,17 +90,17 @@ export interface ExtendedSettingDefinition extends SettingDefinition {
 }
 
 export interface DefinitionV2 {
-  name: string;
-  key: string;
   description?: string;
-  secured: boolean;
+  key: string;
   multiValues?: boolean;
+  name: string;
+  secured: boolean;
   type?: SettingType;
 }
 
 export interface SettingValueResponse {
-  settings: SettingValue[];
   setSecuredSettings: string[];
+  settings: SettingValue[];
 }
 
 export interface SettingValue {
index a7f3912f2a966915806a46925e7fde23a758c3d0..12ec0ea7bc8e402e2dd118c4190a8813470ab670 100644 (file)
@@ -46,10 +46,10 @@ export enum MigrationStatus {
 }
 
 export interface MigrationsStatusResponse {
-  status: MigrationStatus;
   completedSteps?: number;
-  totalSteps?: number;
-  startedAt?: string;
-  message?: string;
   expectedFinishTimestamp?: string;
+  message?: string;
+  startedAt?: string;
+  status: MigrationStatus;
+  totalSteps?: number;
 }
index 0208c9bee70180bc6da6d47e506dcce622158e72..83d73da3cc16d1f36ba7ea0a7b08cdeeebc906be 100644 (file)
@@ -42,7 +42,6 @@ export enum TaskStatuses {
 export interface Task {
   analysisId?: string;
   branch?: string;
-  nodeName?: string;
   componentKey?: string;
   componentName?: string;
   componentQualifier?: string;
@@ -54,6 +53,8 @@ export interface Task {
   hasErrorStacktrace?: boolean;
   hasScannerContext?: boolean;
   id: string;
+  infoMessages?: string[];
+  nodeName?: string;
   pullRequest?: string;
   pullRequestTitle?: string;
   scannerContext?: string;
@@ -64,23 +65,22 @@ export interface Task {
   type: TaskTypes;
   warningCount?: number;
   warnings?: string[];
-  infoMessages?: string[];
 }
 
 export interface TaskWarning {
+  dismissable: boolean;
   key: string;
   message: string;
-  dismissable: boolean;
 }
 
 export interface ActivityRequestParameters {
   component?: string;
+  maxExecutedAt?: string;
+  minSubmittedAt?: string;
+  onlyCurrents?: boolean;
   p?: number;
   ps?: number;
+  q?: string;
   status?: string;
   type?: string;
-  onlyCurrents?: boolean;
-  minSubmittedAt?: string;
-  maxExecutedAt?: string;
-  q?: string;
 }
index 1a397a6d47fa40001babfba7be77113b3aee33c7..7f6beac4171d94d39c233a6e1ea75bd86a2946bd 100644 (file)
@@ -31,13 +31,13 @@ export enum TokenExpiration {
 }
 
 export interface UserToken {
-  name: string;
   createdAt: string;
-  lastConnectionDate?: string;
   expirationDate?: string;
   isExpired: boolean;
+  lastConnectionDate?: string;
+  name: string;
+  project?: { key: string; name: string };
   type: TokenType;
-  project?: { name: string; key: string };
 }
 
 export interface NewUserToken extends UserToken {
index ea0fe08df087fad2a0ce27d8bde55a93986bb580..cfa5888abec6e11f8be8c71bbd5f45b38d1d82d9 100644 (file)
@@ -44,8 +44,8 @@ export interface AlmApplication extends IdentityProvider {
 }
 
 export interface AlmRepository {
-  label: string;
   installationKey: string;
+  label: string;
   linkedProjectKey?: string;
   linkedProjectName?: string;
   private?: boolean;
@@ -90,9 +90,9 @@ interface ComponentConfiguration {
   showBackgroundTasks?: boolean;
   showHistory?: boolean;
   showLinks?: boolean;
+  showPermissions?: boolean;
   showQualityGates?: boolean;
   showQualityProfiles?: boolean;
-  showPermissions?: boolean;
   showSettings?: boolean;
   showUpdateKey?: boolean;
 }
@@ -100,10 +100,10 @@ interface ComponentConfiguration {
 export interface ComponentMeasureIntern {
   analysisDate?: string;
   branch?: string;
+  canBrowseAllChildProjects?: boolean;
   description?: string;
   isFavorite?: boolean;
   isRecentlyBrowsed?: boolean;
-  canBrowseAllChildProjects?: boolean;
   key: string;
   match?: string;
   name: string;
@@ -118,17 +118,17 @@ export interface ComponentMeasure extends ComponentMeasureIntern {
 }
 
 export interface ComponentMeasureEnhanced extends ComponentMeasureIntern {
-  value?: string;
   leak?: string;
   measures: MeasureEnhanced[];
+  value?: string;
 }
 
 export interface Condition {
   error: string;
   id: string;
+  isCaycCondition?: boolean;
   metric: string;
   op?: string;
-  isCaycCondition?: boolean;
 }
 
 export interface CustomMeasure {
@@ -136,16 +136,16 @@ export interface CustomMeasure {
   description?: string;
   id: string;
   metric: {
+    domain?: string;
     key: string;
     name: string;
-    domain?: string;
     type: string;
   };
-  projectKey: string;
   pending?: boolean;
+  projectKey: string;
+  updatedAt?: string;
   user: UserBase;
   value: string;
-  updatedAt?: string;
 }
 
 export interface Duplication {
@@ -183,9 +183,9 @@ export enum FlowType {
 }
 
 export interface Flow {
-  type: FlowType;
   description?: string;
   locations: FlowLocation[];
+  type: FlowType;
 }
 
 export interface FlowLocation {
@@ -198,16 +198,16 @@ export interface FlowLocation {
 }
 
 export interface Group {
-  id: string;
   default?: boolean;
-  name: string;
   description?: string;
+  id: string;
   managed: boolean;
+  name: string;
 }
 
 export interface GroupMembership {
-  id: string;
   groupId: string;
+  id: string;
   userId: string;
 }
 
@@ -222,8 +222,8 @@ export interface IdentityProvider {
   helpMessage?: string;
   iconPath: string;
   key: string;
-  name: string;
   manage?: boolean;
+  name: string;
 }
 
 export interface Issue extends Omit<RawIssue, 'flows' | 'comments'> {
@@ -239,12 +239,12 @@ export interface Issue extends Omit<RawIssue, 'flows' | 'comments'> {
   componentUuid: string;
   effort?: string;
   externalRuleEngine?: string;
-  fromExternalRule?: boolean;
   flows: FlowLocation[][];
   flowsWithType: Flow[];
+  fromExternalRule?: boolean;
   message: string;
-  projectName: string;
   projectKey: string;
+  projectName: string;
   pullRequest?: string;
   ruleName: string;
   secondaryLocations: FlowLocation[];
@@ -254,10 +254,10 @@ export interface IssueChangelog {
   avatar?: string;
   creationDate: string;
   diffs: IssueChangelogDiff[];
-  user: string;
+  externalUser?: string;
   isUserActive: boolean;
+  user: string;
   userName: string;
-  externalUser?: string;
   webhookSource?: string;
 }
 
@@ -319,8 +319,8 @@ export interface Measure extends MeasureIntern {
 }
 
 export interface MeasureEnhanced extends MeasureIntern {
-  metric: Metric;
   leak?: string;
+  metric: Metric;
 }
 
 export interface MeasureIntern {
@@ -350,9 +350,9 @@ export interface MyProject {
   key: string;
   lastAnalysisDate?: string;
   links: Array<{
+    href: string;
     name: string;
     type: string;
-    href: string;
   }>;
   name: string;
   qualityGate?: string;
@@ -397,9 +397,9 @@ export interface Permission {
 }
 
 export interface PermissionDefinition {
+  description: string;
   key: string;
   name: string;
-  description: string;
 }
 
 export type PermissionDefinitions = Array<PermissionDefinition | PermissionDefinitionGroup>;
@@ -412,32 +412,32 @@ export interface PermissionDefinitionGroup {
 export interface PermissionGroup {
   description?: string;
   id?: string;
+  managed?: boolean;
   name: string;
   permissions: string[];
-  managed?: boolean;
 }
 
 export interface PermissionUser extends UserActive {
-  permissions: string[];
   managed?: boolean;
+  permissions: string[];
 }
 
 export interface PermissionTemplateGroup {
+  groupsCount: number;
   key: string;
   usersCount: number;
-  groupsCount: number;
   withProjectCreator?: boolean;
 }
 
 export interface PermissionTemplate {
+  createdAt: string;
   defaultFor: string[];
+  description?: string;
   id: string;
   name: string;
-  description?: string;
+  permissions: Array<PermissionTemplateGroup>;
   projectKeyPattern?: string;
-  createdAt: string;
   updatedAt?: string;
-  permissions: Array<PermissionTemplateGroup>;
 }
 
 export interface ProfileInheritanceDetails {
@@ -477,14 +477,14 @@ export interface QualityGate extends QualityGatePreview {
     rename?: boolean;
     setAsDefault?: boolean;
   };
+  caycStatus?: CaycStatus;
   conditions?: Condition[];
   isBuiltIn?: boolean;
-  caycStatus?: CaycStatus;
 }
 
 export interface Rule {
-  cleanCodeAttributeCategory?: CleanCodeAttributeCategory;
   cleanCodeAttribute?: CleanCodeAttribute;
+  cleanCodeAttributeCategory?: CleanCodeAttributeCategory;
   impacts: SoftwareImpact[];
   isTemplate?: boolean;
   key: string;
@@ -500,10 +500,9 @@ export interface Rule {
 }
 
 export interface RestRule {
-  cleanCodeAttributeCategory?: CleanCodeAttributeCategory;
   cleanCodeAttribute?: CleanCodeAttribute;
+  cleanCodeAttributeCategory?: CleanCodeAttributeCategory;
   impacts: SoftwareImpact[];
-  template?: boolean;
   key: string;
   language?: string;
   languageName?: string;
@@ -513,6 +512,7 @@ export interface RestRule {
   status: string;
   systemTags?: string[];
   tags?: string[];
+  template?: boolean;
   type: RuleType;
 }
 
@@ -520,8 +520,8 @@ export interface RuleActivation {
   createdAt: string;
   inherit: RuleInheritance;
   params: { key: string; value: string }[];
-  qProfile: string;
   prioritizedRule: boolean;
+  qProfile: string;
   severity: string;
 }
 
@@ -564,11 +564,11 @@ export interface RestRuleDetails extends RestRule {
   createdAt: string;
   descriptionSections?: RuleDescriptionSection[];
   educationPrinciples?: string[];
+  external?: boolean;
   gapDescription?: string;
   htmlDesc?: string;
   htmlNote?: string;
   internalKey?: string;
-  external?: boolean;
   markdownDescription?: string;
   markdownNote?: string;
   remFnBaseEffort?: string;
@@ -600,9 +600,9 @@ export type RuleScope = 'MAIN' | 'TEST' | 'ALL';
 export type RuleType = 'BUG' | 'VULNERABILITY' | 'CODE_SMELL' | 'SECURITY_HOTSPOT' | 'UNKNOWN';
 
 export interface Snippet {
-  start: number;
   end: number;
   index: number;
+  start: number;
   toDelete?: boolean;
 }
 
@@ -634,9 +634,11 @@ export interface SourceLine {
 export type SourceLineCoverageStatus = 'uncovered' | 'partially-covered' | 'covered';
 
 export interface SourceViewerFile {
+  canMarkAsFavorite?: boolean;
   fav?: boolean;
   key: string;
   leakPeriodDate?: string;
+  longName?: string;
   measures: {
     coverage?: string;
     duplicationDensity?: string;
@@ -644,17 +646,15 @@ export interface SourceViewerFile {
     lines?: string;
     tests?: string;
   };
-  canMarkAsFavorite?: boolean;
-  path: string;
   name?: string;
-  longName?: string;
+  path: string;
   project: string;
   projectName: string;
   q: ComponentQualifier;
   uuid: string;
 }
 
-export type StandardSecurityCategories = Dict<{ title: string; description?: string }>;
+export type StandardSecurityCategories = Dict<{ description?: string; title: string }>;
 
 export interface SubscriptionPlan {
   maxNcloc: number;
@@ -695,10 +695,10 @@ export interface SysInfoCluster extends SysInfoBase {
     ncloc: number;
   };
   System: {
+    'External Users and Groups Provisioning'?: Provider;
     'High Availability': true;
     'Server ID': string;
     Version: string;
-    'External Users and Groups Provisioning'?: Provider;
   };
 }
 
@@ -761,10 +761,10 @@ export interface TestCase {
 }
 
 export interface TextRange {
-  startLine: number;
-  startOffset: number;
   endLine: number;
   endOffset: number;
+  startLine: number;
+  startOffset: number;
 }
 
 export interface UserSelected extends UserActive {
@@ -772,20 +772,20 @@ export interface UserSelected extends UserActive {
 }
 
 export interface UserGroupMember {
-  selected: boolean;
   login: string;
-  name: string;
   managed: boolean;
+  name: string;
+  selected: boolean;
 }
 
 export namespace WebApi {
   export interface Action {
-    key: string;
     changelog: Changelog[];
-    description: string;
     deprecatedSince?: string;
+    description: string;
     hasResponseExample: boolean;
     internal: boolean;
+    key: string;
     params?: Param[];
     post: boolean;
     since?: string;
@@ -819,9 +819,9 @@ export namespace WebApi {
     exampleValue?: string;
     internal: boolean;
     key: string;
+    maxValuesAllowed?: number;
     maximumLength?: number;
     maximumValue?: number;
-    maxValuesAllowed?: number;
     minimumLength?: number;
     minimumValue?: number;
     possibleValues?: string[];
index e58243d7a799e5e4201f529bfd66a1b9b0393f53..b7090267fdfe4f54233c2bf216ed9fd46b89e61e 100644 (file)
  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
  */
 export interface CurrentUser {
+  dismissedNotices: { [key: string]: boolean };
   isLoggedIn: boolean;
   permissions?: { global: string[] };
   usingSonarLintConnectedMode?: boolean;
-  dismissedNotices: { [key: string]: boolean };
 }
 
 export interface Notice {
@@ -52,13 +52,13 @@ export interface LoggedInUser extends CurrentUser, UserActive {
 }
 
 export type HomePage =
-  | { type: 'APPLICATION'; branch: string | undefined; component: string }
+  | { branch: string | undefined; component: string; type: 'APPLICATION' }
   | { type: 'ISSUES' }
   | { type: 'MY_ISSUES' }
   | { type: 'MY_PROJECTS' }
-  | { type: 'PORTFOLIO'; component: string }
+  | { component: string; type: 'PORTFOLIO' }
   | { type: 'PORTFOLIOS' }
-  | { type: 'PROJECT'; branch: string | undefined; component: string }
+  | { branch: string | undefined; component: string; type: 'PROJECT' }
   | { type: 'PROJECTS' };
 
 export interface CurrentUserSetting {
@@ -81,10 +81,10 @@ export interface User extends UserBase {
   externalProvider?: string;
   groups?: string[];
   lastConnectionDate?: string;
-  sonarLintLastConnectionDate?: string;
   local: boolean;
   managed: boolean;
   scmAccounts?: string[];
+  sonarLintLastConnectionDate?: string;
   tokensCount?: number;
 }
 
@@ -103,19 +103,19 @@ export interface RestUserBase {
 }
 
 export interface RestUser extends RestUserBase {
-  email: string | null;
   active: boolean;
-  local: boolean;
-  externalProvider: string;
   avatar: string;
+  email: string | null;
+  externalProvider: string;
+  local: boolean;
 }
 
 export interface RestUserDetailed extends RestUser {
-  managed: boolean;
   externalLogin: string;
-  sonarQubeLastConnectionDate: string | null;
-  sonarLintLastConnectionDate: string | null;
+  managed: boolean;
   scmAccounts: string[];
+  sonarLintLastConnectionDate: string | null;
+  sonarQubeLastConnectionDate: string | null;
 }
 
 export const enum ChangePasswordResults {
index 2e3e25ddce38a0e2d3c4375f74db3d4e2361e2e3..06d52535e287441d7387afb1226e14575c377d8d 100644 (file)
@@ -50,7 +50,7 @@ export interface WebhookDelivery {
 export type WebhookSearchDeliveriesPayload = {
   ceTaskId?: string;
   componentKey?: string;
-  webhook?: string;
   p?: number;
   ps?: number;
+  webhook?: string;
 };
index a63a10564b43ecac1abbf5e97b08efcfa9b1a818..0f29b3d97d704a6669e5de1977c5bd13b1ff7ccc 100644 (file)
@@ -6025,6 +6025,7 @@ __metadata:
     eslint-plugin-react: "npm:7.33.2"
     eslint-plugin-react-hooks: "npm:4.6.0"
     eslint-plugin-testing-library: "npm:6.2.0"
+    eslint-plugin-typescript-sort-keys: "npm:3.2.0"
     formik: "npm:2.4.5"
     fs-extra: "npm:11.2.0"
     http-proxy: "npm:1.18.1"
@@ -8878,6 +8879,21 @@ __metadata:
   languageName: node
   linkType: hard
 
+"eslint-plugin-typescript-sort-keys@npm:3.2.0":
+  version: 3.2.0
+  resolution: "eslint-plugin-typescript-sort-keys@npm:3.2.0"
+  dependencies:
+    "@typescript-eslint/experimental-utils": "npm:^5.0.0"
+    json-schema: "npm:^0.4.0"
+    natural-compare-lite: "npm:^1.4.0"
+  peerDependencies:
+    "@typescript-eslint/parser": ^6 || ^7
+    eslint: ^7 || ^8
+    typescript: ^3 || ^4 || ^5
+  checksum: 10/6ef3273ed1a0a1c60dd6750b4c9884f6c43668f552021d622492c26f2f2d8f7d86ca7f9fbfff23e3b756854bf1014e5f8e690eddccfb6ad569987b88650a9d55
+  languageName: node
+  linkType: hard
+
 "eslint-scope@npm:^5.1.1":
   version: 5.1.1
   resolution: "eslint-scope@npm:5.1.1"