@spotify/backstage-plugin-soundcheck 0.19.2 → 0.19.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/config.d.ts +54 -1
  3. package/dist/alpha/integrations.esm.js +1 -1
  4. package/dist/alpha/pages.esm.js +1 -1
  5. package/dist/alpha.d.ts +2 -2
  6. package/dist/api.esm.js +1 -1
  7. package/dist/blueprints/IntegrationPageBlueprint.esm.js +1 -1
  8. package/dist/components/Badges/NoLevelBadge.esm.js +2 -2
  9. package/dist/components/CampaignCreatePage/CampaignCreatePage.esm.js +1 -1
  10. package/dist/components/CampaignForm/CampaignForm.esm.js +1 -1
  11. package/dist/components/CampaignForm/Steps/CampaignDetailsStep/CampaignOwnerField.esm.js +1 -1
  12. package/dist/components/CampaignForm/hooks/useCampaignForm.esm.js +1 -1
  13. package/dist/components/CampaignPage/CampaignPage.esm.js +2 -0
  14. package/dist/components/CampaignPage/CampaignPageBUI.esm.js +2 -0
  15. package/dist/components/CampaignPage/CampaignPageDeprecated.esm.js +2 -0
  16. package/dist/components/CampaignPage/CampaignStatusHistoryChart.esm.js +2 -0
  17. package/dist/components/CampaignPage/CampaignStatusHistoryTile.esm.js +2 -0
  18. package/dist/components/CampaignPage/CampaignStatusTile.esm.js +2 -0
  19. package/dist/components/CampaignPage/CampaignTechInsightsExplorerPage.esm.js +2 -0
  20. package/dist/components/CampaignsPage/CampaignListPage/CampaignListPageDeprecated.esm.js +2 -0
  21. package/dist/components/CampaignsPage/CampaignListPage/CampaignSummaryCard.esm.js +1 -1
  22. package/dist/components/CampaignsPage/CampaignListPageBUI.esm.js +2 -0
  23. package/dist/components/CampaignsPage/CampaignsPage.esm.js +1 -1
  24. package/dist/components/CampaignsPage/EditCampaignView.esm.js +1 -1
  25. package/dist/components/Cards/CheckStatusCard/CheckStatusCard.esm.js +2 -0
  26. package/dist/components/Cards/DescriptionCard/DescriptionCard.esm.js +2 -0
  27. package/dist/components/Cards/HistoricalCheckStatusCard/HistoricalCheckStatusCard.esm.js +2 -0
  28. package/dist/components/Cards/HistoricalTrackStatusCard/HistoricalTrackStatusCard.esm.js +2 -0
  29. package/dist/components/Cards/TrackStatusCard/TrackStatusCard.esm.js +2 -0
  30. package/dist/components/CertificationAccordion/CertificationAccordion.esm.js +1 -1
  31. package/dist/components/CertificationSidebar/CertificationSidebar.esm.js +1 -1
  32. package/dist/components/CertificationSidebar/CertificationSummary.esm.js +1 -1
  33. package/dist/components/CertificationSidebar/Check.esm.js +1 -1
  34. package/dist/components/CertificationSidebar/ExemptionJustificationDialog.esm.js +1 -1
  35. package/dist/components/CertificationSidebar/LevelSummary.esm.js +1 -1
  36. package/dist/components/CertificationsPage/CertificationTab.esm.js +1 -1
  37. package/dist/components/CertificationsPage/CertificationTabs.esm.js +1 -1
  38. package/dist/components/CertificationsPage/CertificationsPage.esm.js +1 -1
  39. package/dist/components/CertificationsPage/Playlist/PlaylistComponent.esm.js +1 -1
  40. package/dist/components/CertificationsPage/Playlist/PlaylistContext.esm.js +1 -1
  41. package/dist/components/CertificationsPage/Playlist/PlaylistSummary.esm.js +1 -1
  42. package/dist/components/Charts/chartUtils.esm.js +1 -1
  43. package/dist/components/CheckCreatePage/CheckCreatePage.esm.js +1 -1
  44. package/dist/components/CheckDetails/CheckDetails.esm.js +1 -1
  45. package/dist/components/CheckDetails/JustificationDetails.esm.js +1 -1
  46. package/dist/components/CheckDetails/ResultStateBox.esm.js +1 -1
  47. package/dist/components/CheckForm/CheckForm.esm.js +1 -1
  48. package/dist/components/CheckForm/FormFields/CheckPathResolverInput.esm.js +1 -1
  49. package/dist/components/CheckForm/FormFields/RuleInput/AddMenuButton.esm.js +1 -1
  50. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/RuleConditionInput.esm.js +1 -1
  51. package/dist/components/CheckForm/FormFields/RuleInput/Conditions/useRuleOptions.esm.js +1 -1
  52. package/dist/components/CheckForm/FormFields/RuleInput/RuleInputBox.esm.js +1 -1
  53. package/dist/components/CheckForm/FormFields/TeamDetailsInput/TeamDetailsInput.esm.js +1 -1
  54. package/dist/components/CheckForm/Steps/CheckApplicabilityStep.esm.js +1 -1
  55. package/dist/components/CheckForm/Steps/CheckDetailsStep.esm.js +1 -1
  56. package/dist/components/CheckForm/Steps/CheckRulesStep.esm.js +1 -1
  57. package/dist/components/CheckForm/useCheckForm.esm.js +1 -1
  58. package/dist/components/CheckPage/CheckEditPage.esm.js +1 -1
  59. package/dist/components/CheckPage/CheckEditView.esm.js +1 -1
  60. package/dist/components/CheckPage/CheckEntitiesTable/CheckEntitiesTableBUI.esm.js +2 -0
  61. package/dist/components/CheckPage/CheckPage.esm.js +2 -0
  62. package/dist/components/CheckPage/CheckPageBUI.esm.js +2 -0
  63. package/dist/components/CheckPage/CheckPageDeprecated.esm.js +2 -0
  64. package/dist/components/CheckPage/CheckStatusHistoryChart.esm.js +1 -1
  65. package/dist/components/CheckPage/CheckStatusHistoryChartBUI.esm.js +2 -0
  66. package/dist/components/CheckPage/CheckStatusTable.esm.js +1 -1
  67. package/dist/components/CheckPage/CheckStatusTableBUI.esm.js +2 -0
  68. package/dist/components/CheckPage/ExemptionsTableBUI.esm.js +2 -0
  69. package/dist/components/CheckPage/utils.esm.js +1 -1
  70. package/dist/components/CheckSelection/CheckPreview.esm.js +1 -1
  71. package/dist/components/CheckSelection/CheckSelection.esm.js +1 -1
  72. package/dist/components/CheckStatusBar/CheckStatusBar.esm.js +1 -1
  73. package/dist/components/CheckStatusBar/CheckStatusBarBUI.esm.js +2 -0
  74. package/dist/components/CheckTemplatesPage/CheckTemplatesPage.esm.js +1 -1
  75. package/dist/components/CheckTemplatesPage/CheckTemplatesPageBUI.esm.js +2 -0
  76. package/dist/components/CheckTemplatesPage/CheckTemplatesPageDeprecated.esm.js +2 -0
  77. package/dist/components/CheckTemplatesPage/TemplateCategoryBUI.esm.js +2 -0
  78. package/dist/components/ChecksPage/CheckListPage/CheckListPageDeprecated.esm.js +2 -0
  79. package/dist/components/ChecksPage/CheckListPage/CheckSummaryCard.esm.js +1 -1
  80. package/dist/components/ChecksPage/ChecksListPageBUI.esm.js +2 -0
  81. package/dist/components/ChecksPage/ChecksPage.esm.js +1 -1
  82. package/dist/components/ChecksTable/ChecksTable.esm.js +2 -0
  83. package/dist/components/ChipSelector/ChipSelector.esm.js +2 -0
  84. package/dist/components/CollapsablePanel/CollapsablePanel.esm.js +1 -1
  85. package/dist/components/CollectorPage/CollectorDetailsPage.esm.js +1 -1
  86. package/dist/components/CollectorPage/CollectorDetailsPageBUI.esm.js +2 -0
  87. package/dist/components/CollectorPage/CollectorDetailsPageDeprecated.esm.js +2 -0
  88. package/dist/components/CollectorPage/CollectorFactTable.esm.js +1 -1
  89. package/dist/components/CollectorPage/CollectorFactTableBUI.esm.js +2 -0
  90. package/dist/components/CollectorPage/CollectorPage.esm.js +1 -1
  91. package/dist/components/CollectorPage/Configurators/AzureDevOps/AzureDevOpsConfigurator.esm.js +1 -1
  92. package/dist/components/CollectorPage/Configurators/BigQuery/BigQueryConfigurator.esm.js +1 -1
  93. package/dist/components/CollectorPage/Configurators/Catalog/CatalogConfigurator.esm.js +1 -1
  94. package/dist/components/CollectorPage/Configurators/DataDog/DataDogConfigurator.esm.js +1 -1
  95. package/dist/components/CollectorPage/Configurators/DataRegistry/DataRegistryConfigurator.esm.js +1 -1
  96. package/dist/components/CollectorPage/Configurators/Github/CodeScanningAlertsFactDetails.esm.js +1 -1
  97. package/dist/components/CollectorPage/Configurators/Github/GithubConfigurator.esm.js +1 -1
  98. package/dist/components/CollectorPage/Configurators/Github/SecretScanningAlertsFactDetails.esm.js +1 -1
  99. package/dist/components/CollectorPage/Configurators/Github/SecurityAdvisoriesFactDetails.esm.js +1 -1
  100. package/dist/components/CollectorPage/Configurators/Gitlab/GitlabConfigurator.esm.js +1 -1
  101. package/dist/components/CollectorPage/Configurators/HTTP/HttpConfigurator.esm.js +1 -1
  102. package/dist/components/CollectorPage/Configurators/HTTP/HttpStatusesInput.esm.js +1 -1
  103. package/dist/components/CollectorPage/Configurators/Jira/IssuesFactDetailsComponent.esm.js +2 -0
  104. package/dist/components/CollectorPage/Configurators/Jira/JiraConfigurator.esm.js +1 -1
  105. package/dist/components/CollectorPage/Configurators/Jira/utils.esm.js +1 -1
  106. package/dist/components/CollectorPage/Configurators/Jira/validation.esm.js +1 -1
  107. package/dist/components/CollectorPage/Configurators/Kubernetes/KubernetesConfigurator.esm.js +1 -1
  108. package/dist/components/CollectorPage/Configurators/NewRelic/NewRelicConfigurator.esm.js +1 -1
  109. package/dist/components/CollectorPage/Configurators/PagerDuty/PagerDutyConfigurator.esm.js +1 -1
  110. package/dist/components/CollectorPage/Configurators/SCM/ScmConfigurator.esm.js +1 -1
  111. package/dist/components/CollectorPage/Configurators/SonarQube/SonarQubeConfigurator.esm.js +1 -1
  112. package/dist/components/CollectorPage/DependantCheckCard.esm.js +2 -0
  113. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPageDeprecated.esm.js +2 -0
  114. package/dist/components/CollectorsPage/CollectorListPage/CollectorSummaryCard.esm.js +1 -1
  115. package/dist/components/CollectorsPage/CollectorsPage.esm.js +1 -1
  116. package/dist/components/CollectorsPage/IntegrationLogoBUI.esm.js +2 -0
  117. package/dist/components/CollectorsPage/IntegrationsListPageBUI.esm.js +2 -0
  118. package/dist/components/CustomCell/CustomCell.esm.js +2 -0
  119. package/dist/components/DescriptionCell/DescriptionCell.esm.js +2 -0
  120. package/dist/components/DocLinkButton/DocLinkButton.esm.js +2 -0
  121. package/dist/components/EmptyState/EmptyStateBUI.esm.js +2 -0
  122. package/dist/components/EmptyState/EmptyStateNoCampaigns.esm.js +2 -0
  123. package/dist/components/EmptyState/EmptyStateNoChecks.esm.js +2 -0
  124. package/dist/components/EmptyState/EmptyStateNoTracks.esm.js +2 -0
  125. package/dist/components/EntitiesAutocompletePicker/EntitiesAutocompletePicker.esm.js +1 -1
  126. package/dist/components/EntitySoundcheckCard/Card.esm.js +1 -1
  127. package/dist/components/ExpandableSection/ExpandableSection.esm.js +1 -1
  128. package/dist/components/FactExplorer/FactExplorer.esm.js +1 -1
  129. package/dist/components/FactExplorer/FactExplorerDialogBUI.esm.js +2 -0
  130. package/dist/components/FactExplorer/useFactOptions.esm.js +1 -1
  131. package/dist/components/Filter/EntityAutocompletePicker.esm.js +1 -1
  132. package/dist/components/Filter/FilterComponent.esm.js +1 -1
  133. package/dist/components/Filter/FilterPreviewTable/FilterPreviewTable.esm.js +1 -1
  134. package/dist/components/Filter/KeyValueInputDialog.esm.js +1 -1
  135. package/dist/components/FilterMenu/FilterMenu.esm.js +2 -0
  136. package/dist/components/FilterSidebar/FilterSidebar.esm.js +1 -1
  137. package/dist/components/FilterSidebar/StateFilter.esm.js +1 -1
  138. package/dist/components/FilterSidebar/useTrackFilterSidebar.esm.js +1 -1
  139. package/dist/components/FilterSidebar/util.esm.js +1 -1
  140. package/dist/components/FormControlledAutocomplete/FormControlledAutocomplete.esm.js +1 -1
  141. package/dist/components/FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js +1 -1
  142. package/dist/components/FormControlledAutocomplete/useLabelValueOptions.esm.js +2 -0
  143. package/dist/components/FormMarkdownInput/FormMarkdownInput.esm.js +1 -1
  144. package/dist/components/FormattedPreview/FormattedPreview.esm.js +1 -1
  145. package/dist/components/GroupHierarchySelector/GroupHierarchyGroupInfo.esm.js +1 -1
  146. package/dist/components/GroupHierarchySelector/GroupHierarchySelector.esm.js +1 -1
  147. package/dist/components/GroupSelectorBUI/GroupSelectList.esm.js +2 -0
  148. package/dist/components/GroupSelectorBUI/GroupSelectionHistory.esm.js +2 -0
  149. package/dist/components/GroupSelectorBUI/GroupSelectorBUI.esm.js +2 -0
  150. package/dist/components/GroupSelectorBUI/GroupTag.esm.js +2 -0
  151. package/dist/components/GroupSelectorBUI/useGroupHistory.esm.js +2 -0
  152. package/dist/components/GroupSelectorBUI/usePreviousSelectedGroups.esm.js +2 -0
  153. package/dist/components/HierarchicalTechInsightsPage/HierarchicalTechInsightsPage.esm.js +1 -1
  154. package/dist/components/HierarchicalTechInsightsPage/HierarchyTable.esm.js +1 -1
  155. package/dist/components/HierarchicalTechInsightsPage/SelectedNodeSidebar.esm.js +1 -1
  156. package/dist/components/HierarchicalTechInsightsPage/visualizations/hierarchyToNivo.esm.js +1 -1
  157. package/dist/components/ImportExportPanel/ImportExportPanelBUI.esm.js +2 -0
  158. package/dist/components/ImportExportPanel/{ImportExportPanel.esm.js → ImportExportPanelDeprecated.esm.js} +2 -2
  159. package/dist/components/LevelUpParty/LevelUpParty.esm.js +1 -1
  160. package/dist/components/LevelsTable/CheckRowContent.esm.js +1 -1
  161. package/dist/components/LevelsTable/LevelsTable.esm.js +1 -1
  162. package/dist/components/ListPageCustomActions/ListPageCustomActions.esm.js +2 -0
  163. package/dist/components/LoadingTableSkeleton/LoadingTableSkeleton.esm.js +2 -0
  164. package/dist/components/Menus/SimpleMenu.esm.js +2 -0
  165. package/dist/components/Menus/useCampaignActions.esm.js +2 -0
  166. package/dist/components/Menus/useCheckActions.esm.js +2 -0
  167. package/dist/components/Menus/useTrackActions.esm.js +2 -0
  168. package/dist/components/OverviewPage/OverviewPage.esm.js +1 -1
  169. package/dist/components/OverviewPage/OverviewPageContent.esm.js +1 -1
  170. package/dist/components/OverviewTable/Cell/CheckCellTooltip.esm.js +1 -1
  171. package/dist/components/OverviewTable/Cell/CheckLabelCell.esm.js +1 -1
  172. package/dist/components/OverviewTable/OverviewTable.esm.js +1 -1
  173. package/dist/components/OverviewTable/ResultsTable.esm.js +1 -1
  174. package/dist/components/PageCustomActions/PageCustomActions.esm.js +2 -0
  175. package/dist/components/PassRateTable/PassRateTable.esm.js +1 -1
  176. package/dist/components/QuickstartPage/QuickstartPage.esm.js +2 -2
  177. package/dist/components/RefetchingIndicator/RefetchingIndicator.esm.js +1 -1
  178. package/dist/components/Router.esm.js +1 -1
  179. package/dist/components/RoutingPage/RoutingMainMenu.esm.js +2 -0
  180. package/dist/components/RoutingPage/RoutingPage.esm.js +1 -1
  181. package/dist/components/RoutingPage/RoutingPageBUI.esm.js +2 -0
  182. package/dist/components/RoutingPage/RoutingPageDeprecated.esm.js +2 -0
  183. package/dist/components/RoutingPage/RoutingPageWrapper.esm.js +2 -0
  184. package/dist/components/RoutingPage/RoutingPageWrapperBUI.esm.js +2 -0
  185. package/dist/components/RoutingPage/RoutingPageWrapperDeprecated.esm.js +2 -0
  186. package/dist/components/RoutingPage/index.esm.js +1 -1
  187. package/dist/components/SearchFilters/SearchFilters.esm.js +1 -1
  188. package/dist/components/SendCampaignNotificationDialog/SendCampaignNotificationDialog.esm.js +1 -1
  189. package/dist/components/SoundcheckHeader/SoundcheckHeaderBUI.esm.js +2 -0
  190. package/dist/components/SoundcheckMarkdownContent/ComponentRenders.esm.js +1 -1
  191. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js +2 -0
  192. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js +2 -0
  193. package/dist/components/StatusBar/StatusBar.esm.js +2 -0
  194. package/dist/components/SummaryCard/SummaryCard.esm.js +1 -1
  195. package/dist/components/SummaryCard/SummaryCardActionsMenu.esm.js +1 -1
  196. package/dist/components/TableRowWithOwner/TableRowWithOwner.esm.js +2 -0
  197. package/dist/components/TeamStatusBar/TeamStatusBar.esm.js +1 -1
  198. package/dist/components/TechHealth/Filters/FacetFilter.esm.js +1 -1
  199. package/dist/components/TechHealth/Filters/useFacetOptions.esm.js +1 -1
  200. package/dist/components/TechHealth/Loading/TechHealthLoading.esm.js +1 -1
  201. package/dist/components/TechHealth/TechHealth.esm.js +1 -1
  202. package/dist/components/TechHealthSummary/SummaryAggregationsProvider.esm.js +1 -1
  203. package/dist/components/TechHealthTabs/CampaignResultsTab/CampaignResultsTab.esm.js +1 -1
  204. package/dist/components/TechHealthTabs/CheckResultsTab/CheckResultsTab.esm.js +1 -1
  205. package/dist/components/TechHealthTabs/EntityResultsTab/EntityResultsTab.esm.js +1 -1
  206. package/dist/components/TechHealthTabs/GroupResultsTab/GroupResultsTab.esm.js +1 -1
  207. package/dist/components/TechHealthTabs/NameColumn.esm.js +1 -1
  208. package/dist/components/TechHealthTabs/TrackResultsTab/TrackResultsTab.esm.js +1 -1
  209. package/dist/components/TechInsights/FilterControls.esm.js +1 -1
  210. package/dist/components/TechInsights/SummaryTiles.esm.js +1 -1
  211. package/dist/components/TechInsights/SummaryTilesBUI.esm.js +2 -0
  212. package/dist/components/TechInsights/TechInsightsPage.esm.js +1 -1
  213. package/dist/components/TechInsights/TechInsightsPageBUI.esm.js +2 -0
  214. package/dist/components/TechInsights/TechInsightsPageDeprecated.esm.js +2 -0
  215. package/dist/components/TechInsights/TechInsightsTableBUI.esm.js +2 -0
  216. package/dist/components/TechInsights/TechInsightsTableView.esm.js +1 -1
  217. package/dist/components/TechInsightsExplorerTable/TechInsightsExplorerTable.esm.js +2 -0
  218. package/dist/components/TechInsightsGroupSelector/TechInsightsGroupSelector.esm.js +1 -1
  219. package/dist/components/TimePeriodBar/TimePeriodBar.esm.js +1 -1
  220. package/dist/components/TimePeriodBar/TimePeriodBarBUI.esm.js +2 -0
  221. package/dist/components/TopAndBottomPerformingTeams/TopAndBottomPerformingTeams.esm.js +2 -0
  222. package/dist/components/TopFailingChecksTable/TopFailingChecksTableBUI.esm.js +2 -0
  223. package/dist/components/TrackCreatePage/TrackCreatePage.esm.js +1 -1
  224. package/dist/components/TrackEditPage/TrackEditPage.esm.js +1 -1
  225. package/dist/components/TrackEditPage/TrackEditView.esm.js +1 -1
  226. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackBadgeTypeSelect/TrackBadgeTypeSelect.esm.js +1 -1
  227. package/dist/components/TrackForm/Steps/TrackDetailsStep/TrackOwnerSelect/TrackOwnerSelect.esm.js +1 -1
  228. package/dist/components/TrackForm/TrackForm.esm.js +1 -1
  229. package/dist/components/TrackForm/utils/useTrackForm.esm.js +1 -1
  230. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTable.esm.js +1 -1
  231. package/dist/components/TrackPage/TrackEntitiesTable/TrackEntitiesTableBUI.esm.js +2 -0
  232. package/dist/components/TrackPage/TrackHistoryChart.esm.js +1 -1
  233. package/dist/components/TrackPage/TrackHistoryChartBUI.esm.js +2 -0
  234. package/dist/components/TrackPage/TrackPage.esm.js +1 -1
  235. package/dist/components/TrackPage/TrackPageBUI.esm.js +2 -0
  236. package/dist/components/TrackPage/TrackPageDeprecated.esm.js +2 -0
  237. package/dist/components/TrackPage/TrackStatusBarBUI.esm.js +2 -0
  238. package/dist/components/TrackPage/TrackStatusTableBUI.esm.js +2 -0
  239. package/dist/components/TrackPage/TrackTechInsightsExplorerPage.esm.js +2 -0
  240. package/dist/components/TrackSelection/TrackSelection.esm.js +1 -1
  241. package/dist/components/TracksPage/TrackListPage/TrackListPageDeprecated.esm.js +2 -0
  242. package/dist/components/TracksPage/TrackListPage/TrackSummaryCard.esm.js +1 -1
  243. package/dist/components/TracksPage/TracksListPageBUI.esm.js +2 -0
  244. package/dist/components/TracksPage/TracksPage.esm.js +1 -1
  245. package/dist/graphql/generated/index.esm.js +126 -117
  246. package/dist/hooks/aggregations/useCheckStatus.esm.js +1 -1
  247. package/dist/hooks/catalog/useGetEntityRefs.esm.js +1 -1
  248. package/dist/hooks/catalog/useGetLimitedEntityRefs.esm.js +1 -1
  249. package/dist/hooks/catalog/useProfileImages.esm.js +2 -0
  250. package/dist/hooks/checks/useCheckDetails.esm.js +1 -1
  251. package/dist/hooks/entities/useTrackEntities.esm.js +1 -1
  252. package/dist/hooks/filters/useFilters.esm.js +2 -0
  253. package/dist/hooks/graphqlKeys.esm.js +1 -1
  254. package/dist/hooks/groups/useAllGroups.esm.js +1 -1
  255. package/dist/hooks/groups/useGroupOptions.esm.js +1 -1
  256. package/dist/hooks/groups/useUsersGroupClaims.esm.js +1 -1
  257. package/dist/hooks/heirarchy/useBatchedHierarchicalTrackStatuses.esm.js +1 -1
  258. package/dist/hooks/heirarchy/useGroupHierarchy.esm.js +1 -1
  259. package/dist/hooks/tracks/useRecertifyTrack.esm.js +2 -0
  260. package/dist/hooks/tracks/useTracksApplicableToGroup.esm.js +1 -1
  261. package/dist/hooks/useConfirmationModal.esm.js +1 -1
  262. package/dist/hooks/useLoadTimeReporting.esm.js +2 -0
  263. package/dist/hooks/usePagination.esm.js +2 -0
  264. package/dist/hooks/useSearchName.esm.js +2 -0
  265. package/dist/hooks/useSortTableLocalStorage.esm.js +2 -0
  266. package/dist/routes.esm.js +1 -1
  267. package/dist/utils/charts.esm.js +1 -1
  268. package/dist/utils/formStyles.esm.js +1 -1
  269. package/dist/utils/formatters.esm.js +1 -1
  270. package/dist/utils/helpers.esm.js +1 -1
  271. package/dist/utils/lcpReporting.esm.js +1 -1
  272. package/dist/utils/time.esm.js +1 -1
  273. package/package.json +25 -33
  274. package/dist/components/CampaignInsightsPage/CampaignInsightsPage.esm.js +0 -2
  275. package/dist/components/CampaignInsightsPage/CampaignStatusHistoryTile.esm.js +0 -2
  276. package/dist/components/CampaignInsightsPage/CampaignStatusTile.esm.js +0 -2
  277. package/dist/components/CampaignsPage/CampaignListPage/CampaignListPage.esm.js +0 -2
  278. package/dist/components/CheckPage/CheckInsightsPage.esm.js +0 -2
  279. package/dist/components/ChecksPage/CheckListPage/CheckListPage.esm.js +0 -2
  280. package/dist/components/CollectorPage/Configurators/Jira/IssuesSearchFactDetailsComponent.esm.js +0 -2
  281. package/dist/components/CollectorsPage/CollectorListPage/CollectorListPage.esm.js +0 -2
  282. package/dist/components/GroupHierarchySelector/usePreviousSelectedGroups.esm.js +0 -2
  283. package/dist/components/SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js +0 -2
  284. package/dist/components/TechInsights/TechInsightsCardsView.esm.js +0 -2
  285. package/dist/components/TechInsights/TrackStatusCard.esm.js +0 -2
  286. package/dist/components/TechInsights/ViewModeControls.esm.js +0 -2
  287. package/dist/components/TechInsights/convertToCommonTrackStatus.esm.js +0 -2
  288. package/dist/components/TracksPage/TrackListPage/TrackListPage.esm.js +0 -2
  289. /package/dist/components/{CampaignInsightsPage → CampaignPage}/DaysRemainingTile.esm.js +0 -0
  290. /package/dist/{components/GroupHierarchySelector → utils}/getAllOwnedEntityCount.esm.js +0 -0
@@ -1,2 +1,2 @@
1
- import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as y,FormProvider as v}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as R}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as b}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as D}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as w}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as x}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as N,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToDataRegistryCollectorConfig as M,defaultDataRegistryConfig as P,mapDataRegistryCollectorConfigToConfig as j}from"./utils.esm.js";const k=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:e})=>{const r=y({defaultValues:e?M(e.config):P(),mode:"onChange"}),{formState:{errors:n},handleSubmit:i}=r,a=k(),s=!!n.datasetSchema,{mutateAsync:c}=D(),[l,p]=b(B),{showModal:f}=R(),m=async d=>{if(!await f(T(e)))return;const g=j(d);await c({collectorId:e.id,config:g})&&p()};return w(N(e)),C(u,{children:[o(S,{className:a.form,children:o(v,{...r,children:o("form",{onSubmit:i(m),children:o(x,{name:"datasetSchema",label:"Dataset Schema",description:"Collects fields (name, type, description) from a dataset in Data Registry.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:l,saveButtonText:"Save",isLoading:!1,onSave:i(m),disableSave:s})})]})};export{H as DataRegistryConfigurator};
1
+ import{jsxs as C,Fragment as u,jsx as o}from"react/jsx-runtime";import{makeStyles as h,Paper as S}from"@material-ui/core";import{useForm as y,FormProvider as v}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as R}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as b}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as D}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as w}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as x}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as N,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToDataRegistryCollectorConfig as M,defaultDataRegistryConfig as P,mapDataRegistryCollectorConfigToConfig as j}from"./utils.esm.js";const k=h(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:r})=>{const e=y({defaultValues:r?M(r.config):P(),mode:"onChange"}),{formState:{errors:n},handleSubmit:i}=e,a=k(),s=!!n.datasetSchema,{mutateAsync:c}=D(),[l,p]=b(B),{showModal:f}=R(),m=async d=>{if(!await f(T(r)))return;const g=j(d);await c({collectorId:r.id,config:g})&&p()};return w(N(r)),C(u,{children:[o(S,{className:a.form,children:o(v,{...e,children:o("form",{onSubmit:i(m),children:o(x,{name:"datasetSchema",label:"Dataset Schema",description:"Collects fields (name, type, description) from a dataset in Data Registry.",disabled:t})})})}),o("div",{className:a.section,children:o(F,{onCancel:l,saveButtonText:"Save",isLoading:!1,onSave:i(m),disableSave:s})})]})};export{H as DataRegistryConfigurator};
2
2
  //# sourceMappingURL=DataRegistryConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as u,jsx as e}from"react/jsx-runtime";import{Typography as n,Box as m,TextField as c}from"@material-ui/core";import{useFormContext as S,Controller as s}from"react-hook-form";import{FormControlledAutocomplete as p}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as f}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{FormFieldLabel as d}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as x}from"./GithubConfigurator.esm.js";import{CODE_SCANNING_ALERTS_STATE_OPTIONS as T,CODE_SCANNING_ALERTS_SEVERITY_OPTIONS as v}from"./types.esm.js";const b=({name:r,disabled:a})=>{const l=x(),{control:i}=S(),h=f(T.map(t=>({label:t,value:t}))),N=f(v.map(t=>({label:t,value:t})));return u("div",{className:l.root,children:[e(d,{title:"Fact Name"}),e(n,{variant:"caption",children:"Fact name must be unique"}),e(m,{children:e(s,{name:`${r}.factName`,control:i,render:({field:t,fieldState:{error:o}})=>e(c,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:l.formInput,disabled:a,error:!!o,helperText:o?.message,FormHelperTextProps:{className:l.helperText}})})}),e(d,{title:"Code Scanning Tool Name"}),e(n,{variant:"caption",children:"Optional, if not provided results by all code scanning tools will be collected"}),e(m,{children:e(s,{name:`${r}.toolName`,control:i,render:({field:t,fieldState:{error:o}})=>e(c,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Example: CodeQL",className:l.formInput,disabled:a,error:!!o,helperText:o?.message,FormHelperTextProps:{className:l.helperText}})})}),e(d,{title:"Code Scanning Alert State"}),e(n,{variant:"caption",children:"Optional, if not provided code scanning alerts with all states will be collected"}),e(m,{className:l.formInput,children:e(p,{name:`${r}.state`,control:i,fullWidth:!0,freeSolo:!1,disabled:a,placeholder:"Example: open",...h})}),e(d,{title:"Code Scanning Alert Severity"}),e(n,{variant:"caption",children:"Optional, if not provided code scanning alerts with all severities will be collected"}),e(m,{className:l.formInput,children:e(p,{name:`${r}.severity`,control:i,fullWidth:!0,freeSolo:!1,disabled:a,placeholder:"Example: critical",...N})})]})};export{b as CodeScanningAlertsFactDetails};
1
+ import{jsxs as u,jsx as e}from"react/jsx-runtime";import{Typography as n,Box as m,TextField as c}from"@material-ui/core";import{useFormContext as S,Controller as s}from"react-hook-form";import{FormControlledAutocomplete as p}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import"react";import{useLabelValueOptions as f}from"../../../FormControlledAutocomplete/useLabelValueOptions.esm.js";import"../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{FormFieldLabel as d}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as x}from"./GithubConfigurator.esm.js";import{CODE_SCANNING_ALERTS_STATE_OPTIONS as T,CODE_SCANNING_ALERTS_SEVERITY_OPTIONS as v}from"./types.esm.js";const b=({name:r,disabled:a})=>{const l=x(),{control:i}=S(),h=f(T.map(t=>({label:t,value:t}))),N=f(v.map(t=>({label:t,value:t})));return u("div",{className:l.root,children:[e(d,{title:"Fact Name"}),e(n,{variant:"caption",children:"Fact name must be unique"}),e(m,{children:e(s,{name:`${r}.factName`,control:i,render:({field:t,fieldState:{error:o}})=>e(c,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:l.formInput,disabled:a,error:!!o,helperText:o?.message,FormHelperTextProps:{className:l.helperText}})})}),e(d,{title:"Code Scanning Tool Name"}),e(n,{variant:"caption",children:"Optional, if not provided results by all code scanning tools will be collected"}),e(m,{children:e(s,{name:`${r}.toolName`,control:i,render:({field:t,fieldState:{error:o}})=>e(c,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Example: CodeQL",className:l.formInput,disabled:a,error:!!o,helperText:o?.message,FormHelperTextProps:{className:l.helperText}})})}),e(d,{title:"Code Scanning Alert State"}),e(n,{variant:"caption",children:"Optional, if not provided code scanning alerts with all states will be collected"}),e(m,{className:l.formInput,children:e(p,{name:`${r}.state`,control:i,fullWidth:!0,freeSolo:!1,disabled:a,placeholder:"Example: open",...h})}),e(d,{title:"Code Scanning Alert Severity"}),e(n,{variant:"caption",children:"Optional, if not provided code scanning alerts with all severities will be collected"}),e(m,{className:l.formInput,children:e(p,{name:`${r}.severity`,control:i,fullWidth:!0,freeSolo:!1,disabled:a,placeholder:"Example: critical",...N})})]})};export{b as CodeScanningAlertsFactDetails};
2
2
  //# sourceMappingURL=CodeScanningAlertsFactDetails.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as d,Fragment as S,jsx as e}from"react/jsx-runtime";import{zodResolver as A}from"@hookform/resolvers/zod";import{makeStyles as F,Paper as v,Divider as r}from"@material-ui/core";import{useForm as D,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as B}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as L}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as T}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as N}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as w,confirmationModalContent as G}from"../Common/utils.esm.js";import{CodeScanningAlertsFactDetails as E}from"./CodeScanningAlertsFactDetails.esm.js";import{DependabotAlertsFactDetails as I}from"./DependabotAlertsFactDetails.esm.js";import{SecretScanningAlertsFactDetails as M}from"./SecretScanningAlertsFactDetails.esm.js";import{SecurityAdvisoriesFactDetails as O}from"./SecurityAdvisoriesFactDetails.esm.js";import{mapConfigToGithubCollectorConfig as _,defaultGithubConfig as j,DEFAULT_NEW_COLLECTOR_CONFIG as n,mapGithubCollectorConfigToConfig as k}from"./utils.esm.js";import{githubCollectorFormSchema as H}from"./validation.esm.js";const p=F(o=>({spacer:{height:o.spacing(8),width:"100%"},section:{marginBottom:o.spacing(2)},form:{marginBottom:o.spacing(2)},root:{paddingTop:o.spacing(1)},formInput:{marginTop:0,marginBottom:o.spacing(2),width:"500px"},helperText:{marginLeft:0}})),U=({disabled:o,selectedCollector:a})=>{const s=D({defaultValues:a?_(a.config):j(),mode:"onChange",resolver:A(H)}),{formState:{errors:t},handleSubmit:l}=s,c=p(),f=!!t.branchProtections||!!t.branchRules||!!t.codeScanningAlerts||!!t.dependabotAlerts||!!t.repositoryDetails||!!t.repositoryLanguages||!!t.secretScanningAlerts||!!t.securityAdvisories,{mutateAsync:u}=T(),[g,b]=L(x),{showModal:C}=B(),m=async y=>{if(!await C(G(a)))return;const h=k(y);await u({collectorId:a.id,config:h})&&b()};return P(w(a)),d(S,{children:[e(v,{className:c.form,children:e(R,{...s,children:d("form",{onSubmit:l(m),children:[e(i,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"branchRules",label:"Branch Rules",description:"Collects branch rules information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"codeScanningAlerts",label:"Code Scanning Alerts",description:"Collects details about code scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:E,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"dependabotAlerts",label:"Dependabot Alerts",description:"Collects details about dependabot alerts for an entity's repository.",disabled:o,FactDetailsComponent:I,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"repositoryLanguages",label:"Repository Languages",description:"Collects details about the languages used in an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"secretScanningAlerts",label:"Secret Scanning Alerts",description:"Collects details about secret scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:M,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"securityAdvisories",label:"Security Advisories",description:"Collects details about security advisories for an entity's repository.",disabled:o,FactDetailsComponent:O,multipleCollectors:{enable:!0,defaultConfig:n}})]})})}),e("div",{className:c.section,children:e(N,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:l(m),disableSave:f})})]})};export{U as GithubConfigurator,p as useStyles};
1
+ import{jsxs as p,Fragment as S,jsx as e}from"react/jsx-runtime";import{zodResolver as A}from"@hookform/resolvers/zod";import{makeStyles as F,Paper as v,Divider as r}from"@material-ui/core";import{useForm as D,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as B}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as L}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as T}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as N}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as w,confirmationModalContent as G}from"../Common/utils.esm.js";import{CodeScanningAlertsFactDetails as E}from"./CodeScanningAlertsFactDetails.esm.js";import{DependabotAlertsFactDetails as I}from"./DependabotAlertsFactDetails.esm.js";import{SecretScanningAlertsFactDetails as M}from"./SecretScanningAlertsFactDetails.esm.js";import{SecurityAdvisoriesFactDetails as O}from"./SecurityAdvisoriesFactDetails.esm.js";import{mapConfigToGithubCollectorConfig as _,defaultGithubConfig as j,DEFAULT_NEW_COLLECTOR_CONFIG as n,mapGithubCollectorConfigToConfig as k}from"./utils.esm.js";import{githubCollectorFormSchema as H}from"./validation.esm.js";const d=F(o=>({spacer:{height:o.spacing(8),width:"100%"},section:{marginBottom:o.spacing(2)},form:{marginBottom:o.spacing(2)},root:{paddingTop:o.spacing(1)},formInput:{marginTop:0,marginBottom:o.spacing(2),width:"500px"},helperText:{marginLeft:0}})),U=({disabled:o,selectedCollector:a})=>{const s=D({defaultValues:a?_(a.config):j(),mode:"onChange",resolver:A(H)}),{formState:{errors:t},handleSubmit:l}=s,c=d(),f=!!t.branchProtections||!!t.branchRules||!!t.codeScanningAlerts||!!t.dependabotAlerts||!!t.repositoryDetails||!!t.repositoryLanguages||!!t.secretScanningAlerts||!!t.securityAdvisories,{mutateAsync:u}=T(),[g,b]=L(x),{showModal:C}=B(),m=async y=>{if(!await C(G(a)))return;const h=k(y);await u({collectorId:a.id,config:h})&&b()};return P(w(a)),p(S,{children:[e(v,{className:c.form,children:e(R,{...s,children:p("form",{onSubmit:l(m),children:[e(i,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"branchRules",label:"Branch Rules",description:"Collects branch rules information from an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"codeScanningAlerts",label:"Code Scanning Alerts",description:"Collects details about code scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:E,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"dependabotAlerts",label:"Dependabot Alerts",description:"Collects details about dependabot alerts for an entity's repository.",disabled:o,FactDetailsComponent:I,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"repositoryDetails",label:"Repository Details",description:"Collects details about an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"repositoryLanguages",label:"Repository Languages",description:"Collects details about the languages used in an entity's repository.",disabled:o}),e(r,{}),e(i,{name:"secretScanningAlerts",label:"Secret Scanning Alerts",description:"Collects details about secret scanning alerts for an entity's repository.",disabled:o,FactDetailsComponent:M,multipleCollectors:{enable:!0,defaultConfig:n}}),e(r,{}),e(i,{name:"securityAdvisories",label:"Security Advisories",description:"Collects details about security advisories for an entity's repository.",disabled:o,FactDetailsComponent:O,multipleCollectors:{enable:!0,defaultConfig:n}})]})})}),e("div",{className:c.section,children:e(N,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:l(m),disableSave:f})})]})};export{U as GithubConfigurator,d as useStyles};
2
2
  //# sourceMappingURL=GithubConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as f,jsx as e}from"react/jsx-runtime";import{Typography as i,Box as n,TextField as S}from"@material-ui/core";import{useFormContext as u,Controller as h}from"react-hook-form";import{FormControlledAutocomplete as N}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{FormControlledMultipleAutocomplete as T}from"../../../FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js";import{useLabelOptions as s}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{FormFieldLabel as m}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as v}from"./GithubConfigurator.esm.js";import{SECRET_SCANNING_ALERTS_STATE_OPTIONS as x,SECRET_SCANNING_ALERTS_VALIDITY_OPTIONS as b}from"./types.esm.js";const A=({name:r,disabled:o})=>{const l=v(),{control:a}=u(),d=s(x.map(t=>({label:t,value:t}))),p=s(b.map(t=>({label:t,value:t})));return f("div",{className:l.root,children:[e(m,{title:"Fact Name"}),e(i,{variant:"caption",children:"Fact name must be unique"}),e(n,{children:e(h,{name:`${r}.factName`,control:a,render:({field:t,fieldState:{error:c}})=>e(S,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:l.formInput,disabled:o,error:!!c,helperText:c?.message,FormHelperTextProps:{className:l.helperText}})})}),e(m,{title:"Secret Scanning Alert State"}),e(i,{variant:"caption",children:"Optional, if not provided secret scanning alerts with all states will be collected"}),e(n,{className:l.formInput,children:e(N,{name:`${r}.state`,control:a,fullWidth:!0,freeSolo:!1,disabled:o,placeholder:"Example: open",...d})}),e(m,{title:"Secret Scanning Alert Validities"}),e(i,{variant:"caption",children:"Optional, if not provided secret scanning alerts with all validities will be collected"}),e(n,{className:l.formInput,children:e(T,{name:`${r}.validities`,control:a,fullWidth:!0,freeSolo:!1,disabled:o,placeholder:"Example: active",...p})})]})};export{A as SecretScanningAlertsFactDetails};
1
+ import{jsxs as d,jsx as e}from"react/jsx-runtime";import{Typography as i,Box as n,TextField as f}from"@material-ui/core";import{useFormContext as u,Controller as S}from"react-hook-form";import{FormControlledAutocomplete as h}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import{FormControlledMultipleAutocomplete as N}from"../../../FormControlledAutocomplete/FormControlledMultipleAutocomplete.esm.js";import{useLabelOptions as T}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import{useLabelValueOptions as b}from"../../../FormControlledAutocomplete/useLabelValueOptions.esm.js";import"../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{FormFieldLabel as m}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as v}from"./GithubConfigurator.esm.js";import{SECRET_SCANNING_ALERTS_STATE_OPTIONS as x,SECRET_SCANNING_ALERTS_VALIDITY_OPTIONS as A}from"./types.esm.js";const F=({name:r,disabled:o})=>{const l=v(),{control:a}=u(),s=b(x.map(t=>({label:t,value:t}))),p=T(A.map(t=>({label:t,value:t})));return d("div",{className:l.root,children:[e(m,{title:"Fact Name"}),e(i,{variant:"caption",children:"Fact name must be unique"}),e(n,{children:e(S,{name:`${r}.factName`,control:a,render:({field:t,fieldState:{error:c}})=>e(f,{...t,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:l.formInput,disabled:o,error:!!c,helperText:c?.message,FormHelperTextProps:{className:l.helperText}})})}),e(m,{title:"Secret Scanning Alert State"}),e(i,{variant:"caption",children:"Optional, if not provided secret scanning alerts with all states will be collected"}),e(n,{className:l.formInput,children:e(h,{name:`${r}.state`,control:a,fullWidth:!0,freeSolo:!1,disabled:o,placeholder:"Example: open",...s})}),e(m,{title:"Secret Scanning Alert Validities"}),e(i,{variant:"caption",children:"Optional, if not provided secret scanning alerts with all validities will be collected"}),e(n,{className:l.formInput,children:e(N,{name:`${r}.validities`,control:a,fullWidth:!0,freeSolo:!1,disabled:o,placeholder:"Example: active",...p})})]})};export{F as SecretScanningAlertsFactDetails};
2
2
  //# sourceMappingURL=SecretScanningAlertsFactDetails.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as d,jsx as e}from"react/jsx-runtime";import{Typography as m,Box as s,TextField as c}from"@material-ui/core";import{useFormContext as u,Controller as f}from"react-hook-form";import{FormControlledAutocomplete as h}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as x}from"../../../FormControlledAutocomplete/useLabelOptions.esm.js";import"../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{FormFieldLabel as n}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as S}from"./GithubConfigurator.esm.js";import{SECURITY_ADVISORIES_STATE_OPTIONS as F}from"./types.esm.js";const b=({name:o,disabled:l})=>{const t=S(),{control:i}=u(),p=x(F.map(r=>({label:r,value:r})));return d("div",{className:t.root,children:[e(n,{title:"Fact Name"}),e(m,{variant:"caption",children:"Fact name must be unique"}),e(s,{children:e(f,{name:`${o}.factName`,control:i,render:({field:r,fieldState:{error:a}})=>e(c,{...r,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:t.formInput,disabled:l,error:!!a,helperText:a?.message,FormHelperTextProps:{className:t.helperText}})})}),e(n,{title:"Security Advisory State"}),e(m,{variant:"caption",children:"Optional, if not provided security advisories with all states will be collected"}),e(s,{className:t.formInput,children:e(h,{name:`${o}.state`,control:i,fullWidth:!0,freeSolo:!1,disabled:l,placeholder:"Example: published",...p})})]})};export{b as SecurityAdvisoriesFactDetails};
1
+ import{jsxs as d,jsx as e}from"react/jsx-runtime";import{Typography as m,Box as s,TextField as c}from"@material-ui/core";import{useFormContext as u,Controller as f}from"react-hook-form";import{FormControlledAutocomplete as h}from"../../../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"@material-ui/lab";import"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import"react";import{useLabelValueOptions as x}from"../../../FormControlledAutocomplete/useLabelValueOptions.esm.js";import"../../../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{FormFieldLabel as p}from"../../../FormFieldLabel/FormFieldLabel.esm.js";import{useStyles as S}from"./GithubConfigurator.esm.js";import{SECURITY_ADVISORIES_STATE_OPTIONS as F}from"./types.esm.js";const b=({name:o,disabled:l})=>{const t=S(),{control:i}=u(),n=x(F.map(r=>({label:r,value:r})));return d("div",{className:t.root,children:[e(p,{title:"Fact Name"}),e(m,{variant:"caption",children:"Fact name must be unique"}),e(s,{children:e(f,{name:`${o}.factName`,control:i,render:({field:r,fieldState:{error:a}})=>e(c,{...r,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:t.formInput,disabled:l,error:!!a,helperText:a?.message,FormHelperTextProps:{className:t.helperText}})})}),e(p,{title:"Security Advisory State"}),e(m,{variant:"caption",children:"Optional, if not provided security advisories with all states will be collected"}),e(s,{className:t.formInput,children:e(h,{name:`${o}.state`,control:i,fullWidth:!0,freeSolo:!1,disabled:l,placeholder:"Example: published",...n})})]})};export{b as SecurityAdvisoriesFactDetails};
2
2
  //# sourceMappingURL=SecurityAdvisoriesFactDetails.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as l,Fragment as h,jsx as o}from"react/jsx-runtime";import{makeStyles as j,Paper as v,Divider as c}from"@material-ui/core";import{useForm as P,FormProvider as S}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as D}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as G,confirmationModalContent as L}from"../Common/utils.esm.js";import{mapConfigToGitlabCollectorConfig as N,defaultGitlabConfig as T,mapGitlabCollectorConfigToConfig as M}from"./utils.esm.js";const k=j(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:e})=>{const a=P({defaultValues:e?N(e.config):T(),mode:"onChange"}),{formState:{errors:i},handleSubmit:n}=a,m=k(),p=!!i.branchProtections||!!i.projectDetails||!!i.projectLanguages,{mutateAsync:d}=F(),[f,g]=B(w),{showModal:u}=y(),s=async C=>{if(!await u(L(e)))return;const b=M(C);await d({collectorId:e.id,config:b})&&g()};return D(G(e)),l(h,{children:[o(v,{className:m.form,children:o(S,{...a,children:l("form",{onSubmit:n(s),children:[o(r,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectDetails",label:"Project Details",description:"Collects details about an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectLanguages",label:"Project Languages",description:"Collects details about the languages used in an entity's project.",disabled:t})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:p})})]})};export{H as GitlabConfigurator};
1
+ import{jsxs as l,Fragment as h,jsx as o}from"react/jsx-runtime";import{makeStyles as j,Paper as v,Divider as c}from"@material-ui/core";import{useForm as P,FormProvider as S}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as y}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as D}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as G,confirmationModalContent as L}from"../Common/utils.esm.js";import{mapConfigToGitlabCollectorConfig as N,defaultGitlabConfig as T,mapGitlabCollectorConfigToConfig as M}from"./utils.esm.js";const k=j(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)},form:{marginBottom:t.spacing(2)}})),H=({disabled:t,selectedCollector:e})=>{const a=P({defaultValues:e?N(e.config):T(),mode:"onChange"}),{formState:{errors:i},handleSubmit:n}=a,m=k(),p=!!i.branchProtections||!!i.projectDetails||!!i.projectLanguages,{mutateAsync:d}=F(),[f,g]=B(w),{showModal:u}=y(),s=async C=>{if(!await u(L(e)))return;const b=M(C);await d({collectorId:e.id,config:b})&&g()};return D(G(e)),l(h,{children:[o(v,{className:m.form,children:o(S,{...a,children:l("form",{onSubmit:n(s),children:[o(r,{name:"branchProtections",label:"Branch Protections",description:"Collects branch protection information from an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectDetails",label:"Project Details",description:"Collects details about an entity's project.",disabled:t}),o(c,{}),o(r,{name:"projectLanguages",label:"Project Languages",description:"Collects details about the languages used in an entity's project.",disabled:t})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:p})})]})};export{H as GitlabConfigurator};
2
2
  //# sourceMappingURL=GitlabConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as b,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as H,Paper as S}from"@material-ui/core";import{useCallback as q}from"react";import{useForm as N,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as x}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as y}from"../../../../routes.esm.js";import{FooterButtons as B}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as I}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as M,confirmationModalContent as U}from"../Common/utils.esm.js";import{RequestFactDetailsComponent as j}from"./RequestFactDetailsComponent.esm.js";import{mapConfigToHttpCollectorConfig as A,defaultHttpConfig as D,defaultRequestCollectorConfig as V,mapHttpCollectorConfigToConfig as z}from"./utils.esm.js";import{httpCollectorFormSchema as L}from"./validation.esm.js";const O=H(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),E=({disabled:e,selectedCollector:t})=>{const s=q(async(r,...i)=>{const g={enabled:!1,collectors:[]},h={request:r.request.enabled?r.request:g};return F(L)(h,...i)},[]),n=N({defaultValues:t?A(t.config):D(),mode:"onChange",resolver:s}),{formState:{isValid:c},handleSubmit:a}=n,m=O(),p=!c,{mutateAsync:f}=x(),[d,u]=w(y),{showModal:C}=T(),l=async r=>{if(!await C(U(t)))return;const i=z(r);await f({collectorId:t.id,config:i})&&u()};return P(M(t)),b(v,{children:[o(I,{collectorName:"Http",collectorId:t.id,hasNonUIOptions:!0}),o(S,{className:m.section,children:o(R,{...n,children:o("form",{onSubmit:a(l),children:o(k,{name:"request",label:"Request",description:"Collects data from HTTP endpoint.",disabled:e,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:V()}})})})}),o("div",{className:m.section,children:o(B,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:a(l),disableSave:p})})]})};export{E as HttpConfigurator};
1
+ import{jsxs as b,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as H,Paper as S}from"@material-ui/core";import{useCallback as q}from"react";import{useForm as N,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as w}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as x}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as y}from"../../../../routes.esm.js";import{FooterButtons as B}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as P}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as k}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as I}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as M,confirmationModalContent as U}from"../Common/utils.esm.js";import{RequestFactDetailsComponent as j}from"./RequestFactDetailsComponent.esm.js";import{mapConfigToHttpCollectorConfig as A,defaultHttpConfig as D,defaultRequestCollectorConfig as V,mapHttpCollectorConfigToConfig as z}from"./utils.esm.js";import{httpCollectorFormSchema as L}from"./validation.esm.js";const O=H(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)}})),E=({disabled:e,selectedCollector:t})=>{const s=q(async(r,...i)=>{const g={enabled:!1,collectors:[]},h={request:r.request.enabled?r.request:g};return F(L)(h,...i)},[]),m=N({defaultValues:t?A(t.config):D(),mode:"onChange",resolver:s}),{formState:{isValid:c},handleSubmit:n}=m,a=O(),p=!c,{mutateAsync:f}=x(),[d,u]=w(y),{showModal:C}=T(),l=async r=>{if(!await C(U(t)))return;const i=z(r);await f({collectorId:t.id,config:i})&&u()};return P(M(t)),b(v,{children:[o(I,{collectorName:"Http",collectorId:t.id,hasNonUIOptions:!0}),o(S,{className:a.section,children:o(R,{...m,children:o("form",{onSubmit:n(l),children:o(k,{name:"request",label:"Request",description:"Collects data from HTTP endpoint.",disabled:e,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:V()}})})})}),o("div",{className:a.section,children:o(B,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:n(l),disableSave:p})})]})};export{E as HttpConfigurator};
2
2
  //# sourceMappingURL=HttpConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as b,jsx as o}from"react/jsx-runtime";import{makeStyles as x,Box as c,Chip as g,TextField as T,FormControlLabel as C,Checkbox as S}from"@material-ui/core";import v from"@material-ui/icons/CheckBox";import N from"@material-ui/icons/CheckBoxOutlineBlank";import{Autocomplete as k}from"@material-ui/lab";import{useState as I,useEffect as L}from"react";import{ListboxVirtualized as z}from"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{HTTP_STATUSES as p}from"./utils.esm.js";const H=x(a=>({statusInput:{marginTop:0},statusChips:{marginBottom:a.spacing(1)},helperText:{marginLeft:0}})),P=({value:a,onChange:i,disabled:r,errors:m,helperText:d})=>{const n=H(),[s,u]=I(a??[]);L(()=>{i&&i(s.map(e=>Number(e)))},[s,i]);const f=(e,t)=>{u(s?.filter(l=>l!==t))},h=(e,t)=>{const l=t.length?t[t.length-1]:void 0;l&&isNaN(Number(l))||u(t)};return b(c,{children:[o(c,{children:s.map(e=>o(g,{label:e,size:"small",className:n.statusChips,onDelete:t=>f(t,e),clickable:!1,disabled:r},e))}),o(k,{disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:!0,popupIcon:null,renderTags:()=>null,disabled:r,options:p.map(e=>e.value),getOptionLabel:e=>p.find(t=>t.value===e)?.label??"",value:s,onChange:(e,t)=>h(e,t),ListboxComponent:z,ListboxProps:{itemHeight:40},renderInput:e=>o(T,{...e,variant:"outlined",margin:"dense",className:n.statusInput,placeholder:"Example: 500",disabled:r,error:!!m,helperText:m?.message??d,FormHelperTextProps:{className:n.helperText}}),renderOption:(e,{selected:t})=>o(C,{onClick:l=>l.preventDefault(),control:o(S,{icon:o(N,{fontSize:"small"}),checkedIcon:o(v,{fontSize:"small"}),checked:t,disabled:r}),label:p.find(l=>l.value===e)?.label??""})})]})};export{P as HttpStatusesInput};
1
+ import{jsxs as b,jsx as o}from"react/jsx-runtime";import{makeStyles as x,Box as c,Chip as g,TextField as T,FormControlLabel as C,Checkbox as S}from"@material-ui/core";import v from"@material-ui/icons/CheckBox";import N from"@material-ui/icons/CheckBoxOutlineBlank";import{Autocomplete as k}from"@material-ui/lab";import{useState as I,useEffect as L}from"react";import{ListboxVirtualized as z}from"../../../ListboxVirtualized/ListboxVirtualized.esm.js";import{HTTP_STATUSES as p}from"./utils.esm.js";const H=x(a=>({statusInput:{marginTop:0},statusChips:{marginBottom:a.spacing(1)},helperText:{marginLeft:0}})),E=({value:a,onChange:i,disabled:r,errors:m,helperText:d})=>{const n=H(),[s,u]=I(a??[]);L(()=>{i&&i(s.map(e=>Number(e)))},[s,i]);const f=(e,t)=>{u(s?.filter(l=>l!==t))},h=(e,t)=>{const l=t.length?t[t.length-1]:void 0;l&&isNaN(Number(l))||u(t)};return b(c,{children:[o(c,{children:s.map(e=>o(g,{label:e,size:"small",className:n.statusChips,onDelete:t=>f(t,e),clickable:!1,disabled:r},e))}),o(k,{disableCloseOnSelect:!0,fullWidth:!0,multiple:!0,freeSolo:!0,popupIcon:null,renderTags:()=>null,disabled:r,options:p.map(e=>e.value),getOptionLabel:e=>p.find(t=>t.value===e)?.label??"",value:s,onChange:(e,t)=>h(e,t),ListboxComponent:z,ListboxProps:{itemHeight:40},renderInput:e=>o(T,{...e,variant:"outlined",margin:"dense",className:n.statusInput,placeholder:"Example: 500",disabled:r,error:!!m,helperText:m?.message??d,FormHelperTextProps:{className:n.helperText}}),renderOption:(e,{selected:t})=>o(C,{onClick:l=>l.preventDefault(),control:o(S,{icon:o(N,{fontSize:"small"}),checkedIcon:o(v,{fontSize:"small"}),checked:t,disabled:r}),label:p.find(l=>l.value===e)?.label??""})})]})};export{E as HttpStatusesInput};
2
2
  //# sourceMappingURL=HttpStatusesInput.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as o,jsx as e}from"react/jsx-runtime";import{makeStyles as x,Grid as l,Typography as m,Box as c,TextField as d}from"@material-ui/core";import{useFormContext as u,Controller as p}from"react-hook-form";import{FormFieldLabel as h}from"../../../FormFieldLabel/FormFieldLabel.esm.js";const g=x(a=>({root:{paddingTop:a.spacing(1)},textInput:{marginTop:0,width:"500px"},helperText:{marginLeft:0}})),T=({name:a,disabled:i})=>{const t=g(),{control:s}=u();return o(l,{container:!0,spacing:1,direction:"column",className:t.root,children:[o(l,{item:!0,children:[e(h,{title:"Fact Name"}),e(m,{variant:"caption",children:"Fact name must be unique"}),e(c,{children:e(p,{name:`${a}.factName`,control:s,render:({field:n,fieldState:{error:r}})=>e(d,{...n,type:"text",variant:"outlined",margin:"dense",placeholder:"Fact Name",className:t.textInput,disabled:i,error:!!r,helperText:r?.message,FormHelperTextProps:{className:t.helperText}})})})]}),o(l,{item:!0,children:[e(h,{title:"Jira Query Language (Optional)",docLink:"https://www.atlassian.com/software/jira/guides/jql/cheat-sheet"}),e(m,{variant:"caption",children:"The value will be concatenated with JQL from 'atlassian.net/jql' annotation."}),e(c,{children:e(p,{name:`${a}.jql`,control:s,render:({field:n,fieldState:{error:r}})=>e(d,{...n,type:"text",variant:"outlined",margin:"dense",placeholder:'Example: status = "To Do" AND created >= -30d',className:t.textInput,disabled:i,error:!!r,helperText:r?.message,FormHelperTextProps:{className:t.helperText}})})})]})]})};export{T as IssuesFactDetailsComponent};
2
+ //# sourceMappingURL=IssuesFactDetailsComponent.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as u,Fragment as h,jsx as e}from"react/jsx-runtime";import{zodResolver as S}from"@hookform/resolvers/zod";import{makeStyles as v,Paper as b}from"@material-ui/core";import{useForm as F,FormProvider as J}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as N}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as I}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as w}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as B}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as T}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as j}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as k}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as y,confirmationModalContent as M}from"../Common/utils.esm.js";import{IssuesSearchFactDetailsComponent as P}from"./IssuesSearchFactDetailsComponent.esm.js";import{mapConfigToJiraCollectorConfig as R,defaultJiraConfig as U,issueSearchCollectorConfig as A,mapJiraCollectorConfigToConfig as D}from"./utils.esm.js";import{jiraCollectorFormSchema as H}from"./validation.esm.js";const z=v(r=>({spacer:{height:r.spacing(8),width:"100%"},section:{marginBottom:r.spacing(2)}})),G=({disabled:r,selectedCollector:o})=>{const t=F({defaultValues:o?R(o.config):U(),mode:"onChange",resolver:S(H)}),{formState:{errors:m},handleSubmit:i}=t,a=z(),s=!!m.issuesSearch,{mutateAsync:l}=w(),[c,f]=I(x),{showModal:p}=N(),n=async C=>{if(!await p(M(o)))return;const g=D(C);await l({collectorId:o.id,config:g})&&f()};T(y(o));const d=!o.config?.baseUrl||!o.config?.apiToken||!o.config?.username;return u(h,{children:[e(k,{collectorName:"Jira",collectorId:o.id,invalidConfig:d,hasNonUIOptions:!0}),e(b,{className:a.section,children:e(J,{...t,children:e("form",{onSubmit:i(n),children:e(j,{name:"issuesSearch",label:"Issues Search",description:"Collects details about Jira issues.",disabled:r,FactDetailsComponent:P,multipleCollectors:{enable:!0,defaultConfig:A()}})})})}),e("div",{className:a.section,children:e(B,{onCancel:c,saveButtonText:"Save",isLoading:!1,onSave:i(n),disableSave:s})})]})};export{G as JiraConfigurator};
1
+ import{jsxs as i,Fragment as N,jsx as o}from"react/jsx-runtime";import{DismissableBanner as w}from"@backstage/core-components";import{zodResolver as y}from"@hookform/resolvers/zod";import{makeStyles as D,Typography as F,Link as l,Paper as j,Divider as L}from"@material-ui/core";import{useForm as A,FormProvider as P}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as x}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as B}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as M}from"../../../../routes.esm.js";import{FooterButtons as R}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as U}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as m}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as q}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as H,confirmationModalContent as O}from"../Common/utils.esm.js";import{IssuesFactDetailsComponent as p}from"./IssuesFactDetailsComponent.esm.js";import{mapConfigToJiraCollectorConfig as Q,defaultJiraConfig as _,issuesCollectorConfig as d,mapJiraCollectorConfigToConfig as z}from"./utils.esm.js";import{jiraCollectorFormSchema as V}from"./validation.esm.js";const E=D(r=>({spacer:{height:r.spacing(8),width:"100%"},section:{marginBottom:r.spacing(2)},apiLink:{color:r.palette.text.primary}})),G=({disabled:r,selectedCollector:e})=>{const t=A({defaultValues:e?Q(e.config):_(),mode:"onChange",resolver:y(V)}),{formState:{errors:u},handleSubmit:n}=t,a=E(),f=!!u.issuesSearch,{mutateAsync:h}=B(),[g,C]=x(M),{showModal:S}=T(),c=async k=>{if(!await S(O(e)))return;const I=z(k);await h({collectorId:e.id,config:I})&&C()};U(H(e));const b=!e.config?.apiToken||!e.config?.username,v=!e.config?.personalAccessToken,J=!e.config?.baseUrl||b&&v,s={issuesSearchDeprecated:{name:"Search for issues using JQL",href:"https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-search/#api-rest-api-2-search-get"},issuesSearchNew:{name:"Search for issues using JQL enhanced search",href:"https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/#api-rest-api-3-search-jql-post"}};return i(N,{children:[o(q,{collectorName:"Jira",collectorId:e.id,invalidConfig:J,hasNonUIOptions:!0}),o(w,{message:i(F,{variant:"body2",children:["Issues Search fact collector now uses the updated",o(l,{href:s.issuesSearchNew.href,target:"_blank",children:i("span",{className:a.apiLink,children:[" ",s.issuesSearchNew.name," "]})}),"API, as the previous",o(l,{href:s.issuesSearchDeprecated.href,target:"_blank",children:i("span",{className:a.apiLink,children:[" ",s.issuesSearchDeprecated.name," "]})}),"API was deprecated and removed for Jira Cloud instances. Jira Cloud users may be required to update their dependent checks due to this minor API schema change."]}),variant:"warning",id:"jiraDeprecatedIssuesSearch"}),o(j,{className:a.section,children:o(P,{...t,children:i("form",{onSubmit:n(c),children:[o(m,{name:"issuesSearch",label:"Issues Search",description:"Collects details about Jira issues.",disabled:r,FactDetailsComponent:p,multipleCollectors:{enable:!0,defaultConfig:d(e.config)}}),o(L,{}),o(m,{name:"issuesCount",label:"Issues Count",description:"Collects details about a total number of Jira issues.",disabled:r,FactDetailsComponent:p,multipleCollectors:{enable:!0,defaultConfig:d(e.config)}})]})})}),o("div",{className:a.section,children:o(R,{onCancel:g,saveButtonText:"Save",isLoading:!1,onSave:n(c),disableSave:f})})]})};export{G as JiraConfigurator};
2
2
  //# sourceMappingURL=JiraConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{asArray as s}from"@spotify/backstage-plugin-soundcheck-common";import{defaultBaseCollectorOption as f}from"../Common/CollectorOption.esm.js";import{mapBackendConfigToFormIntegrationConfig as m,mapFormIntegrationConfigToBackendConfig as p}from"../Common/utils.esm.js";const c="issues-search",C={factDetails:{factName:{name:"Fact Name",helperText:"Fact name must be unique",placeholder:"Fact Name"},jql:{name:"Jira Query Language (JQL)",helperText:"Optional, the value will be concatenated with JQL from 'atlassian.net/jql' annotation.",placeholder:'Example: status = "To Do" AND created >= -30d'}}},i=(a,t)=>({...f(),factDetails:{factName:a??"",jql:t}}),r=()=>({issuesSearch:{enabled:!1,collectors:[i(c)]}});function u(a){const{issuesSearch:t}=a;if(t.enabled){const o={},n=[];return o.collects=n,t.collectors.forEach(e=>{const l=e.factDetails.jql?.trim();n.push(p({factType:c,configOption:e,additionalParams:{factName:e.factDetails.factName,jql:l?.length?l:void 0}}))}),o}return{collects:[]}}function g(a){const t=r();if(a){const o=a.collects;if(o){const n=s(o).filter(e=>e.type===c);n.length&&(t.issuesSearch={enabled:!0,collectors:n.map(e=>({...m({parentConfig:a,factTypeConfig:e}),factDetails:{factName:e.factName??c,jql:e.jql}}))})}}return t}export{c as ISSUES_SEARCH_COLLECTOR_TYPE,C as JIRA_COLLECTOR_FIELDS,r as defaultJiraConfig,i as issueSearchCollectorConfig,g as mapConfigToJiraCollectorConfig,u as mapJiraCollectorConfigToConfig};
1
+ import{asArray as p}from"@spotify/backstage-plugin-soundcheck-common";import{defaultBaseCollectorOption as g}from"../Common/CollectorOption.esm.js";import{mapBackendConfigToFormIntegrationConfig as r,mapFormIntegrationConfigToBackendConfig as m}from"../Common/utils.esm.js";const i="issues-search",l="issues-count",f=(e,o,c)=>({...g(e),factDetails:{factName:o??"",jql:c}}),C=e=>({issuesSearch:{enabled:!1,collectors:[f(e,i)]},issuesCount:{enabled:!1,collectors:[f(e,l)]}});function u(e){const{issuesSearch:o,issuesCount:c}=e;if(o.enabled||c.enabled){const s={},n=[];return s.collects=n,o.enabled&&o.collectors.forEach(a=>{const t=a.factDetails.jql?.trim();n.push(m({factType:i,configOption:a,additionalParams:{factName:a.factDetails.factName,jql:t?.length?t:void 0}}))}),c.enabled&&c.collectors.forEach(a=>{const t=a.factDetails.jql?.trim();n.push(m({factType:l,configOption:a,additionalParams:{factName:a.factDetails.factName,jql:t?.length?t:void 0}}))}),s}return{collects:[]}}function d(e){const o=C(e);if(e){const c=e.collects;if(c){const s=p(c),n=s.filter(t=>t.type===i);n.length&&(o.issuesSearch={enabled:!0,collectors:n.map(t=>({...r({parentConfig:e,factTypeConfig:t}),factDetails:{factName:t.factName??i,jql:t.jql}}))});const a=s.filter(t=>t.type===l);a.length&&(o.issuesCount={enabled:!0,collectors:a.map(t=>({...r({parentConfig:e,factTypeConfig:t}),factDetails:{factName:t.factName??l,jql:t.jql}}))})}}return o}export{l as ISSUES_COUNT_COLLECTOR_TYPE,i as ISSUES_SEARCH_COLLECTOR_TYPE,C as defaultJiraConfig,f as issuesCollectorConfig,d as mapConfigToJiraCollectorConfig,u as mapJiraCollectorConfigToConfig};
2
2
  //# sourceMappingURL=utils.esm.js.map
@@ -1,2 +1,2 @@
1
- import{validFactNameRegex as l,invalidFactNameErrorMessage as n}from"@spotify/backstage-plugin-soundcheck-common";import{z as e}from"zod";import{FIELD_IS_REQUIRED_MSG as f}from"../../../../utils/validation.esm.js";import{BaseCollectorSchema as d}from"../Common/CollectorOption.esm.js";const r="Fact name is not unique",i="Max 100 characters",_=d.extend({factDetails:e.strictObject({factName:e.string().min(1,f).max(100,i).regex(l,n),jql:e.string().optional()})}).strict(),S=e.strictObject({enabled:e.boolean(),collectors:e.array(_).superRefine((c,m)=>{const s=c.map(t=>t.factDetails.factName),o=s.filter((t,a)=>s.indexOf(t)!==a);o.length&&c.forEach((t,a)=>{o.includes(t.factDetails.factName)&&m.addIssue({code:e.ZodIssueCode.custom,message:r,path:[a,"factDetails","factName"]})})})}),p=e.strictObject({issuesSearch:S});export{r as FACT_NAME_IS_NOT_UNIQUE_MSG,i as MAX_100_CHARACTERS_MSG,p as jiraCollectorFormSchema};
1
+ import{validFactNameRegex as f,invalidFactNameErrorMessage as n}from"@spotify/backstage-plugin-soundcheck-common";import{z as s}from"zod";import{FIELD_IS_REQUIRED_MSG as u}from"../../../../utils/validation.esm.js";import{BaseCollectorSchema as d}from"../Common/CollectorOption.esm.js";const o="Fact name is not unique",l="Max 100 characters",h=d.extend({factDetails:s.strictObject({factName:s.string().min(1,u).max(100,l).regex(f,n),jql:s.string().optional()})}).strict(),m=s.strictObject({enabled:s.boolean(),collectors:s.array(h)}),N=s.strictObject({issuesSearch:m,issuesCount:m}).superRefine((a,r)=>{const i=[...a.issuesSearch.collectors.map(e=>e.factDetails.factName),...a.issuesCount.collectors.map(e=>e.factDetails.factName)],c=i.filter((e,t)=>i.indexOf(e)!==t);c.length&&(a.issuesSearch.collectors.forEach((e,t)=>{c.includes(e.factDetails.factName)&&r.addIssue({code:s.ZodIssueCode.custom,message:o,path:["issuesSearch","collectors",t,"factDetails","factName"]})}),a.issuesCount.collectors.forEach((e,t)=>{c.includes(e.factDetails.factName)&&r.addIssue({code:s.ZodIssueCode.custom,message:o,path:["issuesCount","collectors",t,"factDetails","factName"]})}))});export{o as FACT_NAME_IS_NOT_UNIQUE_MSG,l as MAX_100_CHARACTERS_MSG,N as jiraCollectorFormSchema};
2
2
  //# sourceMappingURL=validation.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as n,Fragment as b,jsx as o}from"react/jsx-runtime";import{zodResolver as h}from"@hookform/resolvers/zod";import{makeStyles as v,Paper as S,Divider as F}from"@material-ui/core";import{useForm as R,FormProvider as K}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as w}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as x}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as y}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as D}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as L}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as c}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{defaultCollectorOption as N}from"../Common/CollectorOption.esm.js";import{collectorHeaderContent as O,confirmationModalContent as T}from"../Common/utils.esm.js";import{KubernetesFactDetails as j}from"./KubernetesFactDetails.esm.js";import{mapConfigToKubernetesCollectorConfig as k,defaultKubernetesConfig as I,K8S_COLLECTOR_FIELDS as M,mapKubernetesCollectorConfigToConfig as P}from"./utils.esm.js";import{customResourceFormSchema as E}from"./validation.esm.js";const H=v(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),V=({disabled:t,selectedCollector:e})=>{const r=R({defaultValues:e?k(e.config):I(),mode:"onChange",resolver:h(E)}),a=H(),{mutateAsync:p}=y(),[d,f]=x(B),{isValid:u}=r.formState,{showModal:C}=w(),s=async m=>{if(!await C(T(e)))return;const i=P(m);await p({collectorId:e.id,config:i})&&f()};return L(O(e)),n(b,{children:[o(S,{className:a.section,children:o(K,{...r,children:n("form",{onSubmit:r.handleSubmit(s),children:[Object.entries(M).map(([m,i],l,g)=>n("div",{children:[o(c,{name:m,label:i.label,description:i.description,disabled:t}),l<g.length-1&&o(F,{})]},l)),o(c,{name:"customResources",label:"Custom Resources",description:"Collect facts from a kubernetes custom resource associated with an entity.",disabled:t,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:N(e.config)}})]})})}),o("div",{className:a.section,children:o(D,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:r.handleSubmit(s),disableSave:!u})})]})};export{V as KubernetesConfigurator};
1
+ import{jsxs as n,Fragment as b,jsx as o}from"react/jsx-runtime";import{zodResolver as h}from"@hookform/resolvers/zod";import{makeStyles as v,Paper as S,Divider as F}from"@material-ui/core";import{useForm as R,FormProvider as K}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as w}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as x}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as y}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as B}from"../../../../routes.esm.js";import{FooterButtons as D}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as L}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as c}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{defaultCollectorOption as N}from"../Common/CollectorOption.esm.js";import{collectorHeaderContent as O,confirmationModalContent as T}from"../Common/utils.esm.js";import{KubernetesFactDetails as j}from"./KubernetesFactDetails.esm.js";import{mapConfigToKubernetesCollectorConfig as k,defaultKubernetesConfig as I,K8S_COLLECTOR_FIELDS as M,mapKubernetesCollectorConfigToConfig as P}from"./utils.esm.js";import{customResourceFormSchema as E}from"./validation.esm.js";const H=v(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),V=({disabled:t,selectedCollector:e})=>{const r=R({defaultValues:e?k(e.config):I(),mode:"onChange",resolver:h(E)}),a=H(),{mutateAsync:p}=y(),[d,f]=x(B),{isValid:u}=r.formState,{showModal:C}=w(),s=async m=>{if(!await C(T(e)))return;const i=P(m);await p({collectorId:e.id,config:i})&&f()};return L(O(e)),n(b,{children:[o(S,{className:a.section,children:o(K,{...r,children:n("form",{onSubmit:r.handleSubmit(s),children:[Object.entries(M).map(([m,i],l,g)=>n("div",{children:[o(c,{name:m,label:i.label,description:i.description,disabled:t}),l<g.length-1&&o(F,{})]},l)),o(c,{name:"customResources",label:"Custom Resources",description:"Collect facts from a kubernetes custom resource associated with an entity.",disabled:t,FactDetailsComponent:j,multipleCollectors:{enable:!0,defaultConfig:N(e.config)}})]})})}),o("div",{className:a.section,children:o(D,{onCancel:d,saveButtonText:"Save",isLoading:!1,onSave:r.handleSubmit(s),disableSave:!u})})]})};export{V as KubernetesConfigurator};
2
2
  //# sourceMappingURL=KubernetesConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as m,Fragment as w,jsx as o}from"react/jsx-runtime";import{makeStyles as b,Paper as S,Divider as s}from"@material-ui/core";import{useForm as y,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as v}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as P}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as E}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as I}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as M,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToNewRelicCollectorConfig as j,defaultNewRelicConfig as k,mapNewRelicCollectorConfigToConfig as A}from"./utils.esm.js";const H=b(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)},form:{marginBottom:e.spacing(2)}})),U=({disabled:e,selectedCollector:i})=>{const a=y({defaultValues:i?j(i.config):k(),mode:"onChange"}),{formState:{errors:t},handleSubmit:c}=a,n=H(),p=!!t.entity||!!t.entitySearch||!!t.policiesSearch,{mutateAsync:d}=F(),[f,g]=B(x),{showModal:C}=v(),l=async h=>{if(!await C(T(i)))return;const N=A(h);await d({collectorId:i.id,config:N})&&g()};E(M(i));const u=!i.config?.apiKey;return m(w,{children:[o(I,{collectorName:"NewRelic",collectorId:i.id,invalidConfig:u,hasNonUIOptions:!0}),o(S,{className:n.form,children:o(R,{...a,children:m("form",{onSubmit:c(l),children:[o(r,{name:"entity",label:"Entity",description:"Collects details about New Relic entity with a specific id.",disabled:e}),o(s,{}),o(r,{name:"entitySearch",label:"Entity Search",description:"Collects details about New Relic entities with a specific tag.",disabled:e}),o(s,{}),o(r,{name:"policiesSearch",label:"Policies Search",description:"Collects details about New Relic policies for a specific account.",disabled:e})]})})}),o("div",{className:n.section,children:o(P,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:c(l),disableSave:p})})]})};export{U as NewRelicConfigurator};
1
+ import{jsxs as m,Fragment as w,jsx as o}from"react/jsx-runtime";import{makeStyles as b,Paper as S,Divider as s}from"@material-ui/core";import{useForm as y,FormProvider as R}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as v}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as B}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as F}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as x}from"../../../../routes.esm.js";import{FooterButtons as P}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as E}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as I}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as M,confirmationModalContent as T}from"../Common/utils.esm.js";import{mapConfigToNewRelicCollectorConfig as j,defaultNewRelicConfig as k,mapNewRelicCollectorConfigToConfig as A}from"./utils.esm.js";const H=b(e=>({spacer:{height:e.spacing(8),width:"100%"},section:{marginBottom:e.spacing(2)},form:{marginBottom:e.spacing(2)}})),U=({disabled:e,selectedCollector:i})=>{const a=y({defaultValues:i?j(i.config):k(),mode:"onChange"}),{formState:{errors:t},handleSubmit:c}=a,n=H(),p=!!t.entity||!!t.entitySearch||!!t.policiesSearch,{mutateAsync:d}=F(),[f,g]=B(x),{showModal:C}=v(),l=async h=>{if(!await C(T(i)))return;const N=A(h);await d({collectorId:i.id,config:N})&&g()};E(M(i));const u=!i.config?.apiKey;return m(w,{children:[o(I,{collectorName:"NewRelic",collectorId:i.id,invalidConfig:u,hasNonUIOptions:!0}),o(S,{className:n.form,children:o(R,{...a,children:m("form",{onSubmit:c(l),children:[o(r,{name:"entity",label:"Entity",description:"Collects details about New Relic entity with a specific id.",disabled:e}),o(s,{}),o(r,{name:"entitySearch",label:"Entity Search",description:"Collects details about New Relic entities with a specific tag.",disabled:e}),o(s,{}),o(r,{name:"policiesSearch",label:"Policies Search",description:"Collects details about New Relic policies for a specific account.",disabled:e})]})})}),o("div",{className:n.section,children:o(P,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:c(l),disableSave:p})})]})};export{U as NewRelicConfigurator};
2
2
  //# sourceMappingURL=NewRelicConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as m,Fragment as D,jsx as o}from"react/jsx-runtime";import{zodResolver as P}from"@hookform/resolvers/zod";import{makeStyles as b,Paper as h,Divider as c}from"@material-ui/core";import{useForm as S,FormProvider as T}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as L}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as E}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as N}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as I}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as R}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as O,confirmationModalContent as k}from"../Common/utils.esm.js";import{IncidentsFactDetailsComponent as _}from"./IncidentsFactDetailsComponent.esm.js";import{mapConfigToPagerDutyCollectorConfig as x,defaultPagerDutyConfig as A,SERVICE_COLLECTOR_TYPE as B,STANDARDS_COLLECTOR_TYPE as M,INCIDENTS_COLLECTOR_TYPE as Y,incidentsCollectorConfig as j,mapPagerDutyCollectorConfigToConfig as H}from"./utils.esm.js";import{pagerDutyCollectorFormSchema as U}from"./validation.esm.js";const V=b(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),z=({disabled:t,selectedCollector:e})=>{const a=S({defaultValues:e?x(e.config):A(),mode:"onChange",resolver:P(U)}),{formState:{errors:i},handleSubmit:n}=a,l=V(),d=!!i.service||!!i.standards||!!i.incidents,{mutateAsync:p}=N(),[f,C]=E(w),{showModal:g}=L(),s=async v=>{if(!await g(k(e)))return;const y=H(v);await p({collectorId:e.id,config:y})&&C()};I(O(e));const u=!e.config?.token||!e.config?.server;return m(D,{children:[o(R,{collectorName:"PagerDuty",collectorId:e.id,invalidConfig:u,hasNonUIOptions:!0}),o(h,{className:l.section,children:o(T,{...a,children:m("form",{onSubmit:n(s),children:[o(r,{name:B.toLowerCase(),label:"Service",description:"Collects details about PagerDuty service linked to an entity.",disabled:t}),o(c,{}),o(r,{name:M.toLowerCase(),label:"Standards",description:"Collects details about standards applied to a PagerDuty service linked to an entity.",disabled:t}),o(c,{}),o(r,{name:Y.toLowerCase(),label:"Incidents",description:"Collects details about incidents associated with a PagerDuty service linked to an entity.",disabled:t,FactDetailsComponent:_,multipleCollectors:{enable:!0,defaultConfig:j(e.config)}})]})})}),o("div",{className:l.section,children:o(F,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:d})})]})};export{z as PagerDutyConfigurator};
1
+ import{jsxs as m,Fragment as D,jsx as o}from"react/jsx-runtime";import{zodResolver as P}from"@hookform/resolvers/zod";import{makeStyles as b,Paper as h,Divider as c}from"@material-ui/core";import{useForm as S,FormProvider as T}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as L}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as E}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as N}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as w}from"../../../../routes.esm.js";import{FooterButtons as F}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as I}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as r}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as R}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as O,confirmationModalContent as k}from"../Common/utils.esm.js";import{IncidentsFactDetailsComponent as _}from"./IncidentsFactDetailsComponent.esm.js";import{mapConfigToPagerDutyCollectorConfig as x,defaultPagerDutyConfig as A,SERVICE_COLLECTOR_TYPE as B,STANDARDS_COLLECTOR_TYPE as M,INCIDENTS_COLLECTOR_TYPE as Y,incidentsCollectorConfig as j,mapPagerDutyCollectorConfigToConfig as H}from"./utils.esm.js";import{pagerDutyCollectorFormSchema as U}from"./validation.esm.js";const V=b(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),z=({disabled:t,selectedCollector:e})=>{const a=S({defaultValues:e?x(e.config):A(),mode:"onChange",resolver:P(U)}),{formState:{errors:i},handleSubmit:n}=a,l=V(),d=!!i.service||!!i.standards||!!i.incidents,{mutateAsync:p}=N(),[f,C]=E(w),{showModal:g}=L(),s=async v=>{if(!await g(k(e)))return;const y=H(v);await p({collectorId:e.id,config:y})&&C()};I(O(e));const u=!e.config?.token||!e.config?.server;return m(D,{children:[o(R,{collectorName:"PagerDuty",collectorId:e.id,invalidConfig:u,hasNonUIOptions:!0}),o(h,{className:l.section,children:o(T,{...a,children:m("form",{onSubmit:n(s),children:[o(r,{name:B.toLowerCase(),label:"Service",description:"Collects details about PagerDuty service linked to an entity.",disabled:t}),o(c,{}),o(r,{name:M.toLowerCase(),label:"Standards",description:"Collects details about standards applied to a PagerDuty service linked to an entity.",disabled:t}),o(c,{}),o(r,{name:Y.toLowerCase(),label:"Incidents",description:"Collects details about incidents associated with a PagerDuty service linked to an entity.",disabled:t,FactDetailsComponent:_,multipleCollectors:{enable:!0,defaultConfig:j(e.config)}})]})})}),o("div",{className:l.section,children:o(F,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:n(s),disableSave:d})})]})};export{z as PagerDutyConfigurator};
2
2
  //# sourceMappingURL=PagerDutyConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as f,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as y}from"@hookform/resolvers/zod";import{makeStyles as O,Paper as T,Divider as d}from"@material-ui/core";import{useCallback as L,useMemo as R}from"react";import{useForm as N,FormProvider as D}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as M}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as j}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as P}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as _}from"../../../../routes.esm.js";import{FooterButtons as w}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as J}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as s}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as Y,confirmationModalContent as B}from"../Common/utils.esm.js";import{ExistsFactDetailsComponent as k}from"./ExistsFactDetailsComponent.esm.js";import{JsonFactDetailsComponent as A}from"./JsonFactDetailsComponent.esm.js";import{RegexFactDetailsComponent as z}from"./RegexFactDetailsComponent.esm.js";import{mapConfigToScmCollectorConfig as H,defaultScmCollectorConfig as C,EXISTS_COLLECTOR_TYPE as I,REGEX_COLLECTOR_TYPE as V,JSON_COLLECTOR_TYPE as X,mapScmCollectorConfigToConfig as G}from"./utils.esm.js";import{scmCollectorFormSchema as U}from"./validation.esm.js";const q=O(i=>({spacer:{height:i.spacing(8),width:"100%"},section:{marginBottom:i.spacing(2)}})),K=({disabled:i,selectedCollector:t})=>{const g=L(async(e,...n)=>{const a={enabled:!1,collectors:[]},F={exists:e.exists.enabled?e.exists:a,json:e.json.enabled?e.json:a,regex:e.regex.enabled?e.regex:a};return y(U)(F,...n)},[]),l=N({defaultValues:t?H(t.config):C(),mode:"onChange",resolver:g}),r=R(()=>C(t.config),[t]),{formState:{isValid:u},handleSubmit:m}=l,c=q(),x=!u,{mutateAsync:b}=P(),[S,h]=j(_),{showModal:E}=M(),p=async e=>{if(!await E(B(t)))return;const n=G(e);await b({collectorId:t.id,config:n})&&h()};return J(Y(t)),f(v,{children:[o(T,{className:c.section,children:o(D,{...l,children:f("form",{onSubmit:m(p),children:[o(s,{name:I,label:"Exists",description:"Collects information on the existence of files within an entity's repository.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.exists.collectors[0]},FactDetailsComponent:k}),o(d,{}),o(s,{name:V,label:"Regex",description:"Executes regular expressions against a specified file in an entity's repository and collects its capture groups.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.regex.collectors[0]},FactDetailsComponent:z}),o(d,{}),o(s,{name:X,label:"JSON / YAML",description:"Collects data from a JSON/YAML file at specified JSON paths in an entity's repository.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.json.collectors[0]},FactDetailsComponent:A})]})})}),o("div",{className:c.section,children:o(w,{onCancel:S,saveButtonText:"Save",isLoading:!1,onSave:m(p),disableSave:x,noMargin:!0})})]})};export{K as ScmConfigurator};
1
+ import{jsxs as f,Fragment as v,jsx as o}from"react/jsx-runtime";import{zodResolver as y}from"@hookform/resolvers/zod";import{makeStyles as O,Paper as T,Divider as d}from"@material-ui/core";import{useCallback as L,useMemo as R}from"react";import{useForm as N,FormProvider as D}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"@spotify/backstage-plugin-soundcheck-common";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as M}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as j}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as P}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as _}from"../../../../routes.esm.js";import{FooterButtons as w}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as J}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as s}from"../Common/FactCollectionConfig.esm.js";import"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as Y,confirmationModalContent as B}from"../Common/utils.esm.js";import{ExistsFactDetailsComponent as k}from"./ExistsFactDetailsComponent.esm.js";import{JsonFactDetailsComponent as A}from"./JsonFactDetailsComponent.esm.js";import{RegexFactDetailsComponent as z}from"./RegexFactDetailsComponent.esm.js";import{mapConfigToScmCollectorConfig as H,defaultScmCollectorConfig as C,EXISTS_COLLECTOR_TYPE as I,REGEX_COLLECTOR_TYPE as V,JSON_COLLECTOR_TYPE as X,mapScmCollectorConfigToConfig as G}from"./utils.esm.js";import{scmCollectorFormSchema as U}from"./validation.esm.js";const q=O(i=>({spacer:{height:i.spacing(8),width:"100%"},section:{marginBottom:i.spacing(2)}})),K=({disabled:i,selectedCollector:t})=>{const g=L(async(e,...n)=>{const a={enabled:!1,collectors:[]},F={exists:e.exists.enabled?e.exists:a,json:e.json.enabled?e.json:a,regex:e.regex.enabled?e.regex:a};return y(U)(F,...n)},[]),l=N({defaultValues:t?H(t.config):C(),mode:"onChange",resolver:g}),r=R(()=>C(t.config),[t]),{formState:{isValid:u},handleSubmit:m}=l,c=q(),x=!u,{mutateAsync:b}=P(),[S,h]=j(_),{showModal:E}=M(),p=async e=>{if(!await E(B(t)))return;const n=G(e);await b({collectorId:t.id,config:n})&&h()};return J(Y(t)),f(v,{children:[o(T,{className:c.section,children:o(D,{...l,children:f("form",{onSubmit:m(p),children:[o(s,{name:I,label:"Exists",description:"Collects information on the existence of files within an entity's repository.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.exists.collectors[0]},FactDetailsComponent:k}),o(d,{}),o(s,{name:V,label:"Regex",description:"Executes regular expressions against a specified file in an entity's repository and collects its capture groups.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.regex.collectors[0]},FactDetailsComponent:z}),o(d,{}),o(s,{name:X,label:"JSON / YAML",description:"Collects data from a JSON/YAML file at specified JSON paths in an entity's repository.",disabled:i,multipleCollectors:{enable:!0,defaultConfig:r.json.collectors[0]},FactDetailsComponent:A})]})})}),o("div",{className:c.section,children:o(w,{onCancel:S,saveButtonText:"Save",isLoading:!1,onSave:m(p),disableSave:x,noMargin:!0})})]})};export{K as ScmConfigurator};
2
2
  //# sourceMappingURL=ScmConfigurator.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as p,Fragment as Q,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as y,Paper as k,Divider as s}from"@material-ui/core";import{asArray as w}from"@spotify/backstage-plugin-soundcheck-common";import{useForm as I,FormProvider as N}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as D}from"../../../../hooks/useNavigateBack.esm.js";import{useUpdateCollectorConfig as M}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as P}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as B}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as A}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as R,confirmationModalContent as H}from"../Common/utils.esm.js";import{IssuesFactDetailsInput as U}from"./IssuesFactDetailsInput.esm.js";import{MeasuresFactDetailsInput as z}from"./MeasuresFactDetailsInput.esm.js";import{mapConfigToSonarQubeCollectorConfig as E,defaultSonarQubeConfig as L,issuesCollectorConfig as O,measuresCollectorConfig as V,mapSonarQubeCollectorConfigToConfig as q}from"./utils.esm.js";import{sonarQubeCollectorFormSchema as G}from"./validation.esm.js";const J=y(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),K=({disabled:t,selectedCollector:e})=>{const n=I({defaultValues:e?E(e.config):L(),mode:"onChange",resolver:F(G)}),{formState:{errors:r},handleSubmit:l}=n,m=J(),d=!!r.projects||!!r.projectTags||!!r.issues||!!r.measures,{mutateAsync:u}=M(),[f,C]=D(P),{showModal:g}=T(),c=async j=>{if(!await g(H(e)))return;const v=q(j);await u({collectorId:e.id,config:v})&&C()};B(R(e));const a=w(e.config),b=a[0]?.token,S=a[0]?.username&&a[0]?.password,h=!b&&!S;return p(Q,{children:[o(A,{collectorName:"SonarQube",collectorId:e.id,invalidConfig:h,hasNonUIOptions:!0}),o(k,{className:m.section,children:o(N,{...n,children:p("form",{onSubmit:l(c),children:[o(i,{name:"projects",label:"Projects",description:"Collects details about SonarQube project linked to an entity.",disabled:t}),o(s,{}),o(i,{name:"projectTags",label:"Project Tags",description:"Collects details about tags set on a SonarQube project linked to an entity.",disabled:t}),o(s,{}),o(i,{name:"issues",label:"Issues",description:"Collects details about issues associated with a SonarQube project linked to an entity.",disabled:t,FactDetailsComponent:U,multipleCollectors:{enable:!0,defaultConfig:O(e.config)}}),o(s,{}),o(i,{name:"measures",label:"Measures",description:"Collects details about measures associated with a SonarQube project linked to an entity.",disabled:t,FactDetailsComponent:z,multipleCollectors:{enable:!0,defaultConfig:V(e.config)}})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:l(c),disableSave:d})})]})};export{K as SonarQubeConfigurator};
1
+ import{jsxs as p,Fragment as Q,jsx as o}from"react/jsx-runtime";import{zodResolver as F}from"@hookform/resolvers/zod";import{makeStyles as y,Paper as k,Divider as s}from"@material-ui/core";import{asArray as w}from"@spotify/backstage-plugin-soundcheck-common";import{useForm as I,FormProvider as N}from"react-hook-form";import"@backstage/catalog-model";import"@backstage/core-plugin-api";import"@tanstack/react-query";import"../../../../api.esm.js";import"../../../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"react";import"../../../../hooks/useSoundcheckAlert.esm.js";import{useConfirmationModal as T}from"../../../../hooks/useConfirmationModal.esm.js";import{useNavigateBack as D}from"../../../../hooks/useNavigateBack.esm.js";import"react-router-dom";import"react-use/lib/useLocalStorage";import{useUpdateCollectorConfig as M}from"../../../../hooks/collectors/useUpdateCollectorConfig.esm.js";import{integrationsPageRouteRef as P}from"../../../../routes.esm.js";import{FooterButtons as x}from"../../../FooterButtons/FooterButtons.esm.js";import"../../../SoundcheckHeader/SoundcheckHeader.esm.js";import"../../../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useHeader as B}from"../../../SoundcheckHeader/useHeader.esm.js";import{FactCollectionConfig as i}from"../Common/FactCollectionConfig.esm.js";import{CollectorConfigAlert as A}from"../Common/CollectorConfigAlert.esm.js";import{collectorHeaderContent as R,confirmationModalContent as H}from"../Common/utils.esm.js";import{IssuesFactDetailsInput as U}from"./IssuesFactDetailsInput.esm.js";import{MeasuresFactDetailsInput as z}from"./MeasuresFactDetailsInput.esm.js";import{mapConfigToSonarQubeCollectorConfig as E,defaultSonarQubeConfig as L,issuesCollectorConfig as O,measuresCollectorConfig as V,mapSonarQubeCollectorConfigToConfig as q}from"./utils.esm.js";import{sonarQubeCollectorFormSchema as G}from"./validation.esm.js";const J=y(t=>({spacer:{height:t.spacing(8),width:"100%"},section:{marginBottom:t.spacing(2)}})),K=({disabled:t,selectedCollector:e})=>{const n=I({defaultValues:e?E(e.config):L(),mode:"onChange",resolver:F(G)}),{formState:{errors:r},handleSubmit:l}=n,m=J(),d=!!r.projects||!!r.projectTags||!!r.issues||!!r.measures,{mutateAsync:u}=M(),[f,C]=D(P),{showModal:g}=T(),c=async j=>{if(!await g(H(e)))return;const v=q(j);await u({collectorId:e.id,config:v})&&C()};B(R(e));const a=w(e.config),b=a[0]?.token,S=a[0]?.username&&a[0]?.password,h=!b&&!S;return p(Q,{children:[o(A,{collectorName:"SonarQube",collectorId:e.id,invalidConfig:h,hasNonUIOptions:!0}),o(k,{className:m.section,children:o(N,{...n,children:p("form",{onSubmit:l(c),children:[o(i,{name:"projects",label:"Projects",description:"Collects details about SonarQube project linked to an entity.",disabled:t}),o(s,{}),o(i,{name:"projectTags",label:"Project Tags",description:"Collects details about tags set on a SonarQube project linked to an entity.",disabled:t}),o(s,{}),o(i,{name:"issues",label:"Issues",description:"Collects details about issues associated with a SonarQube project linked to an entity.",disabled:t,FactDetailsComponent:U,multipleCollectors:{enable:!0,defaultConfig:O(e.config)}}),o(s,{}),o(i,{name:"measures",label:"Measures",description:"Collects details about measures associated with a SonarQube project linked to an entity.",disabled:t,FactDetailsComponent:z,multipleCollectors:{enable:!0,defaultConfig:V(e.config)}})]})})}),o("div",{className:m.section,children:o(x,{onCancel:f,saveButtonText:"Save",isLoading:!1,onSave:l(c),disableSave:d})})]})};export{K as SonarQubeConfigurator};
2
2
  //# sourceMappingURL=SonarQubeConfigurator.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsxs as n,jsx as e}from"react/jsx-runtime";import{useRouteRef as g}from"@backstage/core-plugin-api";import{Card as x,CardHeader as y,CardBody as C,Box as o,Text as v,Button as R,Tooltip as k,CardFooter as b,ButtonLink as w}from"@backstage/ui";import{makeStyles as B}from"@material-ui/core";import{Alert as D}from"@material-ui/lab";import{parseFactRef as T}from"@spotify/backstage-plugin-soundcheck-common";import{uniq as j,isEmpty as S}from"lodash";import{useMemo as F}from"react";import{TooltipTrigger as H}from"react-aria-components";import{checkDetailsRouteRef as I}from"../../routes.esm.js";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"@backstage/core-components";import"react-markdown";import"rehype-raw";import"remark-gfm";import{SoundcheckMarkdownContentBUI as L}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";const M=B(()=>({cardDescription:{"& p":{marginTop:"var(--bui-space-0)",marginBottom:"var(--bui-space-0)"}},cardContent:{flexGrow:1},container:{padding:"0 var(--bui-space-5)"}})),N=({id:p,title:f,description:a,rules:c,integrationId:s,hasSchedule:h})=>{const d=M(),u=g(I),l=F(()=>{const r=[],m=i=>{for(const t of i.conditions??[])r.push(t.factRef),typeof t.value=="object"&&Object.hasOwn(t.value,"factRef")&&r.push(t.value.factRef);for(const t of i.expressions??[])m(t)};return c&&m(c),j(r).filter(i=>{try{return T(i).source===s}catch{return!1}})},[s,c]);return n(x,{children:[e(y,{title:f}),n(C,{className:d.cardContent,children:[a&&e(o,{style:{maxHeight:"200px",overflow:"auto"},children:e(L,{className:d.cardDescription,content:a})}),!S(l)&&n(o,{mt:"6",style:{maxHeight:"120px",overflow:"auto"},children:[e(v,{style:{fontWeight:"bold"},children:"Used Fact Refs"}),l.map(r=>e(o,{children:r},"factRef"))]}),h&&e(o,{mt:"6",children:n(H,{children:[e(R,{variant:"tertiary",style:{padding:0,height:"auto"},children:e(D,{severity:"warning",children:"Check Schedule Detected"})}),e(k,{children:"Configure this integration's collection schedule instead."})]})})]}),e(b,{children:e(o,{mt:"6",children:e(w,{href:u({checkId:p}),target:"_blank",children:"View"})})})]})};export{N as DependantCheckCard};
2
+ //# sourceMappingURL=DependantCheckCard.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{Grid as l}from"@material-ui/core";import{useMemo as g,useEffect as p}from"react";import{useGetCollectors as f}from"../../../hooks/collectors/useGetCollectors.esm.js";import{useLCPReporting as C}from"../../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as h}from"../../../hooks/useLoadTimeReporting.esm.js";import{CollectorListSkeleton as b}from"./CollectorListSkeleton.esm.js";import{CollectorSummaryCard as L}from"./CollectorSummaryCard.esm.js";const c=["github","gitlab","scm","pagerduty","datadog","kubernetes","jira","sonarqube","newrelic","bigquery","catalog","azure","http","data-registry"],P=({integrations:i})=>{const n=g(()=>({routeName:"soundcheck-integrations",additionalAttributes:{integrationsPerPage:i?.length}}),[i?.length]),{reportContentLoaded:d}=h(n),{reporter:m}=C(n),{data:u,isLoading:a}=f(),r=i?.map(e=>e.integrationId)??c,s=m?.getLCPValue();return p(()=>{a||d({lcp:s})},[a,d,s]),o(l,{container:!0,direction:"row",children:o(l,{container:!0,spacing:4,role:"list","aria-label":"checks",children:a?o(b,{}):u?.filter(e=>e.isConfigurable)?.sort((e,t)=>!r.includes(e.id)&&r.includes(t.id)?1:r.includes(e.id)&&!r.includes(t.id)?-1:(e.name??e.id).localeCompare(t.name??t.id))?.map(e=>o(l,{xs:12,sm:12,md:6,lg:4,xl:3,item:!0,role:"listitem","aria-label":`collector card ${e.id}`,children:o(L,{collector:e,hasNoCodeUI:r.includes(e.id),routePath:i?.find(t=>t.integrationId===e.id)?.routePath})},e.id))})})};export{P as CollectorListPageDeprecated,c as ConfigurableCollectorIds};
2
+ //# sourceMappingURL=CollectorListPageDeprecated.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as i,jsx as e}from"react/jsx-runtime";import{LinkButton as S}from"@backstage/core-components";import{useRouteRef as u}from"@backstage/core-plugin-api";import{usePermission as U}from"@backstage/plugin-permission-react";import{makeStyles as D,CardContent as f,CardHeader as R,Typography as c,Tooltip as B,Divider as H,CardActions as L,Button as j}from"@material-ui/core";import{soundcheckCollectorUpdatePermission as A}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as P}from"react-router-dom";import{integrationEditRouteRef as $,integrationDetailsRouteRef as M}from"../../../routes.esm.js";import{SoundcheckMarkdownContent as Y}from"../../SoundcheckMarkdownContent/SoundcheckMarkdownContent.esm.js";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import{useSummaryCardStyles as w,Card as z}from"../../SummaryCard/SummaryCard.esm.js";import{hasLogo as E,CollectorLogo as q}from"./CollectorLogo.esm.js";const F=D(t=>({cardContent:{flex:1,paddingTop:t.spacing(1)},logoHeader:{paddingBottom:0,flex:0},headerContent:{display:"flex",alignItems:"center",height:t.spacing(5),marginBottom:t.spacing(1.5)},headerTypography:{marginBottom:0},usageText:{marginTop:t.spacing(.5)},checkUsageHover:{textDecoration:"underline",textDecorationStyle:"dotted","&:hover":{cursor:"default"}}})),G=({collector:t,hasNoCodeUI:l,routePath:y})=>{const{description:C,id:o,isConfigurable:m,isEditable:g,name:v}=t,{loading:p,allowed:h}=U({permission:A}),N=P(),b=u($),k=u(M),r=w(),a=F(),x=l&&m&&g&&!p&&h,I=()=>{N(y??b({integrationId:o}))};let n;p||!h?n="You don't have permissions to configure this integration.":m?g?l?t.hasUIConfig&&(n="Configured via UI."):n="Integration can only be configured through YAML.":n="Integration is already configured via YAML and cannot be configured through the UI.":n="Integration is not configurable.";const s=t?.dependentChecks?.length??0,d=v??o;return i(z,{"data-testid":o,className:r.card,children:[E(o)?e(f,{className:a.logoHeader,children:e(q,{collectorId:o})}):e(R,{title:d,titleTypographyProps:{className:`${r.summaryName} ${a.headerTypography}`},classes:{content:a.headerContent}}),i(f,{className:a.cardContent,children:[e(c,{variant:"body1",component:"div",children:e(Y,{className:r.summaryDescription,content:C??""})}),e(c,{color:"textSecondary",variant:"body2",children:n}),s>0&&i(c,{className:a.usageText,color:"textSecondary",variant:"body2",children:[e(B,{title:t.dependentChecks?.map(T=>T.name).join(", ")??"",children:i("span",{className:a.checkUsageHover,children:[s," check",s>1?"s":""]})})," ","use facts from this integration."]})]}),i("div",{children:[e(H,{}),i(L,{className:r.actionArea,children:[e(S,{size:"medium",variant:"outlined",className:r.button,to:k({integrationId:o}),children:"Details"}),x&&e(j,{"aria-label":`${d}-edit`,"data-testid":`${d}-button`,size:"medium",role:"link",onClick:I,className:r.button,variant:"outlined",children:"Configure"})]})]})]})};export{G as CollectorSummaryCard};
1
+ import{jsxs as n,jsx as e}from"react/jsx-runtime";import{LinkButton as S}from"@backstage/core-components";import{useRouteRef as u}from"@backstage/core-plugin-api";import{usePermission as D}from"@backstage/plugin-permission-react";import{makeStyles as U,CardContent as f,CardHeader as R,Typography as c,Tooltip as B,Divider as H,CardActions as L,Button as j}from"@material-ui/core";import{soundcheckCollectorUpdatePermission as A}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as P}from"react-router-dom";import{integrationEditRouteRef as $,integrationDetailsRouteRef as M}from"../../../routes.esm.js";import{SoundcheckMarkdownContentDeprecated as Y}from"../../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import"../../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";import{useSummaryCardStyles as w,Card as z}from"../../SummaryCard/SummaryCard.esm.js";import{hasLogo as E,CollectorLogo as q}from"./CollectorLogo.esm.js";const F=U(t=>({cardContent:{flex:1,paddingTop:t.spacing(1)},logoHeader:{paddingBottom:0,flex:0},headerContent:{display:"flex",alignItems:"center",height:t.spacing(5),marginBottom:t.spacing(1.5)},headerTypography:{marginBottom:0},usageText:{marginTop:t.spacing(.5)},checkUsageHover:{textDecoration:"underline",textDecorationStyle:"dotted","&:hover":{cursor:"default"}}})),G=({collector:t,hasNoCodeUI:l,routePath:y})=>{const{description:C,id:o,isConfigurable:m,isEditable:p,name:v}=t,{loading:g,allowed:h}=D({permission:A}),N=P(),b=u($),k=u(M),r=w(),a=F(),x=l&&m&&p&&!g&&h,I=()=>{N(y??b({integrationId:o}))};let i;g||!h?i="You don't have permissions to configure this integration.":m?p?l?t.hasUIConfig&&(i="Configured via UI."):i="Integration can only be configured through YAML.":i="Integration is already configured via YAML and cannot be configured through the UI.":i="Integration is not configurable.";const s=t?.dependentChecks?.length??0,d=v??o;return n(z,{"data-testid":o,className:r.card,children:[E(o)?e(f,{className:a.logoHeader,children:e(q,{collectorId:o})}):e(R,{title:d,titleTypographyProps:{className:`${r.summaryName} ${a.headerTypography}`},classes:{content:a.headerContent}}),n(f,{className:a.cardContent,children:[e(c,{variant:"body1",component:"div",children:e(Y,{className:r.summaryDescription,content:C??""})}),e(c,{color:"textSecondary",variant:"body2",children:i}),s>0&&n(c,{className:a.usageText,color:"textSecondary",variant:"body2",children:[e(B,{title:t.dependentChecks?.map(T=>T.name).join(", ")??"",children:n("span",{className:a.checkUsageHover,children:[s," check",s>1?"s":""]})})," ","use facts from this integration."]})]}),n("div",{children:[e(H,{}),n(L,{className:r.actionArea,children:[e(S,{size:"medium",variant:"outlined",className:r.button,to:k({integrationId:o}),children:"Details"}),x&&e(j,{"aria-label":`${d}-edit`,"data-testid":`${d}-button`,size:"medium",role:"link",onClick:I,className:r.button,variant:"outlined",children:"Configure"})]})]})]})};export{G as CollectorSummaryCard};
2
2
  //# sourceMappingURL=CollectorSummaryCard.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as o}from"react/jsx-runtime";import{makeStyles as r}from"@material-ui/core";import{useLCPReporting as i}from"../../hooks/useLCPReporting.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as n}from"../SoundcheckHeader/useHeader.esm.js";import{CollectorListPage as a}from"./CollectorListPage/CollectorListPage.esm.js";const s=r(t=>({container:{padding:t.spacing(3)}})),m=({integrations:t})=>{const e=s();return n(),i({routeName:"soundcheck-integrations-page"}),o("div",{className:e.container,children:o(a,{integrations:t})})};export{m as CollectorsPage};
1
+ import{jsx as o}from"react/jsx-runtime";import{makeStyles as e}from"@material-ui/core";import{useFeatureFlag as i}from"../../hooks/useFeatureFlag.esm.js";import"../SoundcheckHeader/SoundcheckHeader.esm.js";import"../SoundcheckHeader/SoundcheckHeaderContext.esm.js";import{useSetHeaderDefault as a}from"../SoundcheckHeader/useHeader.esm.js";import{CollectorListPageDeprecated as n}from"./CollectorListPage/CollectorListPageDeprecated.esm.js";import{IntegrationsListPageBUI as s}from"./IntegrationsListPageBUI.esm.js";const m=e(t=>({container:{padding:t.spacing(3)}})),c=({integrations:t})=>{const r=m();return a(),i("backstage-ui")?o(s,{integrations:t}):o("div",{className:r.container,children:o(n,{integrations:t})})};export{c as CollectorsPage};
2
2
  //# sourceMappingURL=CollectorsPage.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as p}from"react/jsx-runtime";import{makeStyles as f,useTheme as s}from"@material-ui/core";import g from"../../images/azure-devops-rgb.svg";import n from"../../images/azure-devops-white.svg";import c from"../../images/bigquery-rgb.svg";import h from"../../images/bigquery-white.svg";import u from"../../images/cat-blk.svg";import l from"../../images/cat-wht.svg";import b from"../../images/data-registry-blk.svg";import d from"../../images/data-registry-wht.svg";import y from"../../images/dd_logo_h_rgb.svg";import k from"../../images/dd_logo_h_white.svg";import q from"../../images/GitHub_Logo.svg";import I from"../../images/GitHub_Logo_White.svg";import j from"../../images/gitlab-rgb.svg";import w from"../../images/gitlab-white.svg";import x from"../../images/http-rgb.svg";import B from"../../images/http-white.svg";import v from"../../images/jira-rgb.svg";import z from"../../images/jira-white.svg";import L from"../../images/k8s_blue.svg";import S from"../../images/k8s_white.svg";import T from"../../images/new-relic-rgb.svg";import D from"../../images/new-relic-white.svg";import F from"../../images/pd-black.svg";import M from"../../images/pd-white.svg";import $ from"../../images/SCM_DARK.svg";import A from"../../images/SCM_LIGHT.svg";import E from"../../images/sonarqube-rgb.svg";import G from"../../images/sonarqube-white.svg";import H from"../../images/soundcheck-black.svg";import K from"../../images/soundcheck-white.svg";import N from"../../images/tech-black.svg";import O from"../../images/tech-white.svg";import{isDarkTheme as Q}from"../Charts/chartUtils.esm.js";const m={github:q,gitlab:j,datadog:y,scm:A,pagerduty:F,catalog:u,soundcheck:H,techinsights:N,kubernetes:L,jira:v,sonarqube:E,newrelic:T,bigquery:c,azure:g,http:x,"data-registry":b},i={github:I,gitlab:w,datadog:k,scm:$,pagerduty:M,catalog:l,soundcheck:K,techinsights:O,kubernetes:S,jira:z,sonarqube:G,newrelic:D,bigquery:h,azure:n,http:B,"data-registry":d},R=new Set(["catalog","soundcheck","techinsights","sonarqube","data-registry"]),U=f(()=>({image:{objectFit:"contain",color:"white",height:"var(--bui-space-6)",maxWidth:"100%"},tallImage:{height:"var(--bui-space-8)",marginBottom:0}})),W=o=>!!m[o]&&!!i[o],_=({integrationId:o,noMargin:e})=>{const r=U(),a=s(),t=Q(a)?i[o]:m[o];return t?p("img",{src:t,alt:o,style:e?{marginBottom:0}:{},className:`${r.image} ${R.has(o)?r.tallImage:""}`}):null};export{_ as IntegrationLogoBUI,W as hasLogo};
2
+ //# sourceMappingURL=IntegrationLogoBUI.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as d,Fragment as j}from"react/jsx-runtime";import{useRouteRef as S}from"@backstage/core-plugin-api";import{usePermission as q}from"@backstage/plugin-permission-react";import{Box as k,HeaderPage as F,SearchField as M,Table as Y,TableHeader as z,Column as c,TableBody as G,Row as V,Cell as g,Button as $}from"@backstage/ui";import{makeStyles as J}from"@material-ui/core";import{soundcheckCollectorUpdatePermission as K}from"@spotify/backstage-plugin-soundcheck-common";import{sortBy as O,isEmpty as p}from"lodash";import{useState as C,useMemo as P,useEffect as Q}from"react";import{useNavigate as W}from"react-router-dom";import"@backstage/catalog-model";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/plugin-catalog-react";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import{useSearchName as X}from"../../hooks/useSearchName.esm.js";import"react-use/lib/useLocalStorage";import{useGetCollectors as Z}from"../../hooks/collectors/useGetCollectors.esm.js";import{useLCPReporting as _}from"../../hooks/useLCPReporting.esm.js";import{useLoadTimeReporting as ee}from"../../hooks/useLoadTimeReporting.esm.js";import{integrationDetailsRouteRef as te,integrationEditRouteRef as ie}from"../../routes.esm.js";import{CustomCell as oe}from"../CustomCell/CustomCell.esm.js";import"../EmptyState/EmptyState.esm.js";import{EmptyStateBUI as re}from"../EmptyState/EmptyStateBUI.esm.js";import"@remixicon/react";import{LoadingTableSkeleton as ne}from"../LoadingTableSkeleton/LoadingTableSkeleton.esm.js";import{IntegrationLogoBUI as ae,hasLogo as se}from"./IntegrationLogoBUI.esm.js";const de=J(()=>({container:{padding:"0 var(--bui-space-3) var(--bui-space-6)"}})),R=["github","gitlab","scm","pagerduty","datadog","kubernetes","jira","sonarqube","newrelic","bigquery","catalog","azure","http","data-registry"],L=t=>{const r=t.hasUIConfig?"UI":"YAML";return p(t.config)&&p(t.collectionConfigs)?"None":r},N=({integration:t,hasConfigPage:r})=>{const m=S(te),l=W(),n=S(ie);return d(V,{onAction:()=>l(m({integrationId:t.id})),children:[e(g,{leadingIcon:e(ae,{integrationId:t.id}),title:se(t.id)?"":t.name??t.id}),e(g,{title:t.description??"N/A"}),e(g,{title:`${String(t.dependentChecks?.length??0)} checks`}),e(g,{title:L(t)}),e(oe,{onClick:u=>u.stopPropagation(),children:e($,{onClick:()=>l(n({integrationId:t.id})),isDisabled:!r,variant:"tertiary",children:"Edit"})})]})},ce=({integrations:t})=>{const r=de(),[m,l]=C(""),[n,u]=C("ascending"),[a,B]=C(""),y=P(()=>({routeName:"soundcheck-integrations",additionalAttributes:{integrationsPerPage:t?.length}}),[t?.length]),{reportContentLoaded:b}=ee(y),{reporter:v}=_(y),{loading:T,allowed:U}=q({permission:K}),{data:A,isLoading:s}=Z(),h=t?.map(i=>i.integrationId)??R,w=X({items:A??[],searchTerm:m}),f=P(()=>{const i=O(w,o=>a==="name"?o.name??o.id:a==="dependent-checks"?o.dependentChecks?.length??0:a==="config-source"?L(o):h.includes(o.id)?1:2);return n==="descending"&&i.reverse(),i},[w,h,a,n]),I=v?.getLCPValue();Q(()=>{s||b({lcp:I})},[s,b,I]);const D=!s&&!p(f),E=s,x=!s&&p(f),H=e(re,{title:"No integrations found",body:"Your current search term did not return any integrations. Please try a different search term."});return d(j,{children:[e(k,{children:e(F,{customActions:e(M,{value:m,onChange:l,"aria-label":"Search Name"}),title:"Integrations"})}),d(k,{className:r.container,children:[E&&e(ne,{rowCount:10,rowHeight:36}),x&&H,D&&d(Y,{onSortChange:({direction:i,column:o})=>{B(String(o)),u(i)},sortDescriptor:{direction:n,column:a},children:[d(z,{children:[e(c,{id:"name",allowsSorting:!0,isRowHeader:!0,style:{width:"20%"},children:"Name"}),e(c,{style:{width:"54%"},children:"Description"}),e(c,{id:"dependent-checks",allowsSorting:!0,style:{width:"12%"},children:"Dependent Checks"}),e(c,{id:"config-source",allowsSorting:!0,style:{width:"12%"},children:"Config Source"}),e(c,{style:{width:"2%"}})]}),e(G,{children:f.map(i=>e(N,{integration:i,hasConfigPage:!T&&U&&h.includes(i.id)},i.id))})]})]})]})};export{R as ConfigurableIntegrationIds,N as IntegrationRow,ce as IntegrationsListPageBUI};
2
+ //# sourceMappingURL=IntegrationsListPageBUI.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{makeStyles as t}from"@material-ui/core";import{Cell as c}from"react-aria-components";const m=t(()=>({customCell:{padding:"0 var(--bui-space-3)"}})),s=({children:o,onClick:l})=>{const r=m();return e(c,{onClick:l,className:r.customCell,children:o})};export{s as CustomCell};
2
+ //# sourceMappingURL=CustomCell.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as o,jsxs as n}from"react/jsx-runtime";import{Link as a}from"@backstage/core-components";import{Flex as c,Text as m,TooltipTrigger as s,ButtonIcon as p,Tooltip as d,Box as h}from"@backstage/ui";import{makeStyles as x}from"@material-ui/core";import{RiInformationLine as g,RiExternalLinkLine as u}from"@remixicon/react";import{CustomCell as f}from"../CustomCell/CustomCell.esm.js";import"../SoundcheckMarkdownContent/SoundcheckMarkdownContentDeprecated.esm.js";import"react";import"react-markdown";import"rehype-raw";import"remark-gfm";import{SoundcheckMarkdownContentBUI as k}from"../SoundcheckMarkdownContent/SoundcheckMarkdownContentBUI.esm.js";const b=x(()=>({button:{boxShadow:"none !important",backgroundColor:"inherit !important"},tooltip:{maxWidth:"50em",padding:0},scrollBox:{maxHeight:"30em",overflow:"auto",padding:"0 var(--bui-space-3)"},docsUrlLink:{display:"flex",alignItems:"center",color:"var(--bui-fg-primary)"},docsUrlIcon:{width:"16px",height:"16px"}})),L=({title:e,description:r,documentationURL:i})=>{const t=b();return o(f,{children:n(c,{gap:"0",align:"center",children:[o(m,{children:e}),n(s,{children:[o(p,{className:t.button,isDisabled:!r,variant:"secondary",icon:o(g,{})}),o(d,{className:t.tooltip,children:o(h,{className:t.scrollBox,children:o(k,{content:r})})})]}),i&&o(a,{to:/^https?:\/\//i.test(i)?i:`http://${i}`,className:t.docsUrlLink,onClick:l=>{l.stopPropagation()},children:o(u,{className:t.docsUrlIcon})})]})})};export{L as DescriptionCell};
2
+ //# sourceMappingURL=DescriptionCell.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{ButtonLink as t}from"@backstage/ui";import{RiInformationLine as e}from"@remixicon/react";const i=({href:o,size:n})=>r(t,{iconStart:r(e,{}),href:o,target:"_blank",rel:"noopener noreferrer",variant:"secondary",size:n});export{i as DocLinkButton};
2
+ //# sourceMappingURL=DocLinkButton.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as e,jsxs as a}from"react/jsx-runtime";import{Box as r,Text as o,Button as p,ButtonLink as x}from"@backstage/ui";import{makeStyles as b}from"@material-ui/core";import{RiExternalLinkLine as u}from"@remixicon/react";const y=b(()=>({emptyStateContent:{display:"flex",flexDirection:"column",alignItems:"center",textAlign:"center",gridGap:"var(--bui-space-4)",maxWidth:"500px"},emptyStateContainer:{padding:"var(--bui-space-14)",width:"100%",display:"flex",justifyContent:"center",border:"2px dashed var(--bui-border)",borderRadius:"var(--bui-radius-3)"},actions:{display:"flex",alignItems:"center",gridGap:"var(--bui-space-2)"}})),h=({title:c,body:l,actionOnClick:t,actionButtonIcon:d,actionDisabled:s,actionText:m="Create",docLink:n})=>{const i=y();return e(r,{className:i.emptyStateContainer,children:a(r,{className:i.emptyStateContent,children:[e(o,{variant:"title-x-small",weight:"bold",children:c}),e(o,{variant:"body-medium",color:"secondary",children:l}),(t||n)&&a(r,{className:i.actions,children:[t&&e(p,{isDisabled:s,iconStart:d,onClick:t,children:m}),n&&e(x,{href:n,target:"_blank",rel:"noopener noreferrer",iconEnd:e(u,{}),variant:"secondary",children:"Learn More"})]})]})})};export{h as EmptyStateBUI};
2
+ //# sourceMappingURL=EmptyStateBUI.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as i}from"react/jsx-runtime";import{useRouteRef as r}from"@backstage/core-plugin-api";import{usePermission as m}from"@backstage/plugin-permission-react";import{RiAddLine as s}from"@remixicon/react";import{soundcheckCampaignCreatePermission as c}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as p}from"react-router-dom";import{campaignCreateRouteRef as g}from"../../routes.esm.js";import{EmptyStateBUI as d}from"./EmptyStateBUI.esm.js";const f=()=>{const t=r(g),a=p(),{loading:e,allowed:n}=m({permission:c}),o=!e&&n;return i(d,{title:o?"Create your first campaign":"No campaigns found",body:"Campaigns organize and manage coordinated initiatives across your organization.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/campaigns/",actionButtonIcon:i(s,{}),actionOnClick:o?()=>a(t()):()=>{},actionText:"Create a campaign",actionDisabled:!o})};export{f as EmptyStateNoCampaigns};
2
+ //# sourceMappingURL=EmptyStateNoCampaigns.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{useRouteRef as s}from"@backstage/core-plugin-api";import{usePermission as a}from"@backstage/plugin-permission-react";import{RiAddLine as n}from"@remixicon/react";import{soundcheckCheckCreatePermission as m}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as p}from"react-router-dom";import{checkTemplatesRouteRef as d}from"../../routes.esm.js";import{EmptyStateBUI as f}from"./EmptyStateBUI.esm.js";const h=()=>{const t=s(d),i=p(),{loading:c,allowed:r}=a({permission:m}),e=!c&&r;return o(f,{title:e?"Create your first check":"No checks found",body:"Checks indicate where the software aligns to or deviates from organizational standards and best practices.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/checks/",actionButtonIcon:o(n,{}),actionOnClick:e?()=>i(t()):()=>{},actionText:"Create a check",actionDisabled:!e})};export{h as EmptyStateNoChecks};
2
+ //# sourceMappingURL=EmptyStateNoChecks.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{useRouteRef as s}from"@backstage/core-plugin-api";import{usePermission as n}from"@backstage/plugin-permission-react";import{RiAddLine as m}from"@remixicon/react";import{soundcheckTrackCreatePermission as p}from"@spotify/backstage-plugin-soundcheck-common";import{useNavigate as d}from"react-router-dom";import{trackCreateRouteRef as u}from"../../routes.esm.js";import{EmptyStateBUI as f}from"./EmptyStateBUI.esm.js";const k=({title:r})=>{const e=s(u),a=d(),{loading:i,allowed:c}=n({permission:p}),t=!i&&c;return o(f,{title:r??(t?"Create your first track":"No tracks found"),body:"Tracks encourage alignment to architectural best practices and standards.",docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/tracks/",actionButtonIcon:o(m,{}),actionOnClick:t?()=>a(e()):()=>{},actionText:"Create a track",actionDisabled:!t})};export{k as EmptyStateNoTracks};
2
+ //# sourceMappingURL=EmptyStateNoTracks.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as T}from"react/jsx-runtime";import{makeStyles as F,FormControlLabel as O,Checkbox as z,Typography as A,Box as w,TextField as I}from"@material-ui/core";import j from"@material-ui/icons/CheckBox";import B from"@material-ui/icons/CheckBoxOutlineBlank";import E from"@material-ui/icons/ExpandMore";import{Autocomplete as G}from"@material-ui/lab";import{useState as N,useMemo as m,useCallback as p}from"react";import{useGetEntityRefs as P}from"../../hooks/catalog/useGetEntityRefs.esm.js";import{FormFieldLabel as D}from"../FormFieldLabel/FormFieldLabel.esm.js";import{ListboxVirtualized as H}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const M=F({container:{padding:0},formControl:{flexGrow:1},label:{lineHeight:"1em"}}),Q=({label:d,values:o,onChange:n,disabled:f,filter:g,renderOption:b,renderTags:h})=>{const i=M(),[C,a]=N(!1),{data:t,isLoading:u,error:k}=P(g),s=m(()=>o?.map(l=>l.toLocaleLowerCase("en-US"))??[],[o]),x=p((l,r)=>{n(r),t&&t.every(c=>r.includes(c))&&a(!1)},[t,n]),y=p(()=>{n(o?.length?o:void 0)},[o,n]),L=p((l,r)=>b?.(l,r)??e(O,{onClick:c=>c.preventDefault(),control:e(z,{icon:e(B,{fontSize:"small"}),checkedIcon:e(j,{fontSize:"small"}),checked:r.selected}),label:l,classes:{label:i.label}}),[b,i.label]),S=m(()=>f||u||!o?.length&&!t?.length,[f,u,o?.length,t?.length]),v=m(()=>Array.from(new Set([...t??[],...s])),[t,s]);return k?e(A,{color:"error",children:"Failed to load entities"}):T(w,{pb:1,pt:1,className:i.container,children:[e(D,{title:d,docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),e(G,{open:C,onOpen:()=>a(!0),onClose:()=>a(!1),className:i.formControl,multiple:!0,limitTags:4,disableCloseOnSelect:!0,"aria-label":d,options:v,value:s,onChange:x,onBlur:y,disabled:S,ListboxComponent:H,renderOption:L,renderTags:h,size:"small",popupIcon:e(E,{"data-testid":"selected-facets-expand"}),renderInput:l=>e(I,{...l,variant:"outlined"})})]})};export{Q as EntitiesAutocompletePicker};
1
+ import{jsx as t,jsxs as O}from"react/jsx-runtime";import{stringifyEntityRef as T}from"@backstage/catalog-model";import{makeStyles as z,FormControlLabel as A,Checkbox as E,Typography as G,Box as I,TextField as j}from"@material-ui/core";import B from"@material-ui/icons/CheckBox";import D from"@material-ui/icons/CheckBoxOutlineBlank";import N from"@material-ui/icons/ExpandMore";import{Autocomplete as R}from"@material-ui/lab";import{useState as V,useMemo as p,useCallback as d}from"react";import{useGetEntityRefs as $}from"../../hooks/catalog/useGetEntityRefs.esm.js";import{FormFieldLabel as H}from"../FormFieldLabel/FormFieldLabel.esm.js";import{ListboxVirtualized as M}from"../ListboxVirtualized/ListboxVirtualized.esm.js";const P=z({container:{padding:0},formControl:{flexGrow:1},label:{lineHeight:"1em"}}),U=({label:c,values:a,onChange:n,facet:u,disabled:f,filter:h,renderOption:b,renderTags:L})=>{const s=P(),[v,m]=V(!1),{data:g,isLoading:C,error:k}=$(h),i=p(()=>g?.items.map(e=>({label:e.metadata.title??e.metadata.name,value:T(e),description:e.metadata.description}))??[],[g]),x=p(()=>a?.map(e=>({...e,value:e.value.toLocaleLowerCase("en-US")}))??[],[a]),y=d((e,o)=>{n(o),i.every(l=>o.some(({value:r})=>l.value===r))&&m(!1)},[i,n]),S=d(()=>{n(a)},[a,n]),F=d((e,o)=>b?.(e,o)??t(A,{onClick:l=>l.preventDefault(),control:t(E,{icon:t(D,{fontSize:"small"}),checkedIcon:t(B,{fontSize:"small"}),checked:o.selected}),label:e.label,classes:{label:s.label}}),[b,s.label]),w=p(()=>f||C||!a?.length&&!i.length,[f,C,a?.length,i.length]);return k?t(G,{color:"error",children:u?`Failed to load facet: ${u}`:`Failed to load ${c}`}):O(I,{pb:1,pt:1,className:s.container,children:[t(H,{title:c,docLink:"https://backstage.spotify.com/docs/plugins/soundcheck/core-concepts/filters"}),t(R,{multiple:!0,open:v,onOpen:()=>m(!0),onClose:()=>m(!1),className:s.formControl,limitTags:4,disableCloseOnSelect:!0,"aria-label":c,value:x,onChange:y,onBlur:S,disabled:w,ListboxComponent:M,renderOption:F,renderTags:L,size:"small",popupIcon:t(N,{"data-testid":"selected-facets-expand"}),renderInput:e=>t(j,{...e,variant:"outlined"}),options:i,getOptionLabel:e=>e.label,getOptionSelected:(e,o)=>e.value===o.value,filterOptions:(e,o)=>{const l=o.inputValue.toLowerCase();return e.filter(r=>r.label.toLowerCase().includes(l)||r.value.toLowerCase().includes(l)||r.description?.toLowerCase().includes(l))}})]})};export{U as EntitiesAutocompletePicker};
2
2
  //# sourceMappingURL=EntitiesAutocompletePicker.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as i,jsxs as c}from"react/jsx-runtime";import{Link as g,InfoCard as v}from"@backstage/core-components";import{useRouteRef as d}from"@backstage/core-plugin-api";import{useEntity as C}from"@backstage/plugin-catalog-react";import{Divider as R}from"@material-ui/core";import S from"@material-ui/core/styles/makeStyles";import{SpotifyLicenseBanner as I}from"@spotify/backstage-plugin-core";import{Fragment as L}from"react";import{useAllCertifications as w}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as b}from"../../hooks/playlists/usePlaylists.esm.js";import{certificationTrackRouteRef as x,certificationPlaylistTrackRouteRef as E}from"../../routes.esm.js";import{soundcheckBackend as N,invalidLicenseMessage as j}from"../../utils/license.esm.js";import{AlertPanel as A}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as P}from"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{NoCertifications as T}from"../EmptyState/EmptyState.esm.js";import{CardSkeleton as B}from"./skeletons/CardSkeleton.esm.js";const m=S(t=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:t.spacing(2)},emptyState:{overflow:"hidden"}})),n=({children:t,title:e})=>{const o=m();return i(v,{title:e,children:c("div",{className:o.infoCard,children:[i(I,{inline:!0,backend:N,invalidLicenseMessage:j}),t]})})},D=(t,e)=>t.find(o=>o.trackIds.some(a=>a===e))?.id??"",M=({title:t="Soundcheck"})=>{const{entity:e}=C(),o=m(),{data:a,isError:l,isLoading:p}=w(e),{data:s,isError:f,isLoading:k}=b(e),y=d(x),h=d(E);return l||f?i(n,{title:t,children:i(A,{severity:"error",title:"Error loading certifications"})}):p||k||!a||!s?i(n,{title:t,children:i(B,{})}):a.length?i(n,{title:t,children:a.map((r,u)=>c(L,{children:[c("div",{className:o.certificationWrapper,"data-testid":"soundcheck-track-row",children:[i(P,{name:r.track.name,badge:r.track.badge,trackType:r.track?.type},r.track.id),i(g,{to:r.track.type==="playlist"?h({playlistId:D(s,r.track.id),trackId:r.track.id}):y({trackId:r.track.id}),children:"View Details"})]}),u<a.length-1?i(R,{}):null]},r.track.name))}):i(n,{title:t,children:i("div",{className:o.emptyState,children:i(T,{})})})};export{M as Card,m as useStyles};
1
+ import{jsx as i,jsxs as c}from"react/jsx-runtime";import{Link as g,InfoCard as v}from"@backstage/core-components";import{useRouteRef as d}from"@backstage/core-plugin-api";import{useEntity as C}from"@backstage/plugin-catalog-react";import{Divider as R}from"@material-ui/core";import S from"@material-ui/core/styles/makeStyles";import{SpotifyLicenseBanner as I}from"@spotify/backstage-plugin-core";import{Fragment as L}from"react";import{useAllCertifications as w}from"../../hooks/certifications/useAllCertifications.esm.js";import"@tanstack/react-query";import"../../api.esm.js";import"../../hooks/graphqlKeys.esm.js";import"@backstage/catalog-model";import"@spotify/backstage-plugin-soundcheck-common";import"../../hooks/useSoundcheckAlert.esm.js";import"../../hooks/useConfirmationModal.esm.js";import"react-router-dom";import{usePlaylists as b}from"../../hooks/playlists/usePlaylists.esm.js";import"react-use/lib/useLocalStorage";import{certificationTrackRouteRef as x,certificationPlaylistTrackRouteRef as E}from"../../routes.esm.js";import{soundcheckBackend as N,invalidLicenseMessage as j}from"../../utils/license.esm.js";import{AlertPanel as A}from"../AlertPanel/AlertPanel.esm.js";import"../CertificationSidebar/CertificationSidebar.esm.js";import{CertificationSummary as P}from"../CertificationSidebar/CertificationSummary.esm.js";import"@material-ui/lab";import"../CertificationSidebar/Check.esm.js";import"../CertificationSidebar/LevelSummary.esm.js";import{NoCertifications as T}from"../EmptyState/EmptyState.esm.js";import"../EmptyState/EmptyStateBUI.esm.js";import"@backstage/plugin-permission-react";import"@remixicon/react";import{CardSkeleton as B}from"./skeletons/CardSkeleton.esm.js";const m=S(t=>({certificationWrapper:{display:"flex",justifyContent:"space-between",alignItems:"center"},infoCard:{display:"grid",gridRowGap:t.spacing(2)},emptyState:{overflow:"hidden"}})),n=({children:t,title:e})=>{const o=m();return i(v,{title:e,children:c("div",{className:o.infoCard,children:[i(I,{inline:!0,backend:N,invalidLicenseMessage:j}),t]})})},D=(t,e)=>t.find(o=>o.trackIds.some(a=>a===e))?.id??"",M=({title:t="Soundcheck"})=>{const{entity:e}=C(),o=m(),{data:a,isError:p,isLoading:l}=w(e),{data:s,isError:f,isLoading:k}=b(e),y=d(x),h=d(E);return p||f?i(n,{title:t,children:i(A,{severity:"error",title:"Error loading certifications"})}):l||k||!a||!s?i(n,{title:t,children:i(B,{})}):a.length?i(n,{title:t,children:a.map((r,u)=>c(L,{children:[c("div",{className:o.certificationWrapper,"data-testid":"soundcheck-track-row",children:[i(P,{name:r.track.name,badge:r.track.badge,trackType:r.track?.type},r.track.id),i(g,{to:r.track.type==="playlist"?h({playlistId:D(s,r.track.id),trackId:r.track.id}):y({trackId:r.track.id}),children:"View Details"})]}),u<a.length-1?i(R,{}):null]},r.track.name))}):i(n,{title:t,children:i("div",{className:o.emptyState,children:i(T,{})})})};export{M as Card,m as useStyles};
2
2
  //# sourceMappingURL=Card.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsxs as a,jsx as e}from"react/jsx-runtime";import{Paper as d,Grid as n,IconButton as f,Typography as h,Collapse as g}from"@material-ui/core";import{makeStyles as x}from"@material-ui/core/styles";import u from"@material-ui/icons/ArrowDropDown";import y from"@material-ui/icons/ArrowRight";import{useState as S}from"react";const C=x(t=>({root:{display:"flex",flexDirection:"column",gap:0},button:{marginLeft:-t.spacing(1)},title:{fontWeight:700,color:t.palette.text.primary,cursor:"pointer"}})),N=({title:t,alwaysExpanded:o=!1,children:c,className:m,elevation:s=1})=>{const[r,p]=S(o),i=C(),l=()=>{o||p(!r)};return a(d,{elevation:s,className:`${i.root} ${m??""}`,children:[a(n,{container:!0,alignItems:"center",spacing:0,children:[e(n,{item:!0,children:!o&&e(f,{onClick:l,className:i.button,children:r?e(u,{fontSize:"large"}):e(y,{fontSize:"large"})})}),e(n,{item:!0,children:e(h,{onClick:l,className:i.title,children:t})})]}),e(g,{in:r,children:c})]})};export{N as ExpandableSection};
1
+ import{jsxs as a,jsx as e}from"react/jsx-runtime";import{Paper as d,Grid as n,IconButton as f,Typography as h,Collapse as g}from"@material-ui/core";import{makeStyles as x}from"@material-ui/core/styles";import u from"@material-ui/icons/ArrowDropDown";import y from"@material-ui/icons/ArrowRight";import{useState as S}from"react";const N=x(t=>({root:{display:"flex",flexDirection:"column",gap:0},button:{marginLeft:-t.spacing(1)},title:{fontWeight:700,color:t.palette.text.primary,cursor:"pointer"}})),b=({title:t,alwaysExpanded:o=!1,children:c,className:m,elevation:s=1})=>{const[r,p]=S(o),i=N(),l=()=>{o||p(!r)};return a(d,{elevation:s,className:`${i.root} ${m??""}`,children:[a(n,{container:!0,alignItems:"center",spacing:0,children:[e(n,{item:!0,children:!o&&e(f,{onClick:l,className:i.button,children:r?e(u,{fontSize:"large"}):e(y,{fontSize:"large"})})}),e(n,{item:!0,children:e(h,{onClick:l,className:i.title,children:t})})]}),e(g,{in:r,children:c})]})};export{b as ExpandableSection};
2
2
  //# sourceMappingURL=ExpandableSection.esm.js.map
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as a,Fragment as v}from"react/jsx-runtime";import{makeStyles as Y,Box as o,Typography as n,TextField as Z,Button as W}from"@material-ui/core";import{Alert as ee}from"@material-ui/lab";import{parseFactRef as te}from"@spotify/backstage-plugin-soundcheck-common";import ae from"lodash";import{useMemo as g,useState as x,useEffect as ie,useCallback as oe}from"react";import{useGetEntityRefs as ne}from"../../hooks/catalog/useGetEntityRefs.esm.js";import{useGetLimitedEntityRefs as re}from"../../hooks/catalog/useGetLimitedEntityRefs.esm.js";import{useGetCollectors as le}from"../../hooks/collectors/useGetCollectors.esm.js";import{useGetFactSchema as ce}from"../../hooks/collectors/useGetFactSchema.esm.js";import{useGetFact as se}from"../../hooks/useGetFact.esm.js";import{useGetPathResolvers as de}from"../../hooks/useGetPathResolvers.esm.js";import{generateJsonPaths as he}from"../CheckForm/utils/checkFormUtils.esm.js";import{hasLogo as pe,CollectorLogo as me}from"../CollectorsPage/CollectorListPage/CollectorLogo.esm.js";import{ExpandableSection as G}from"../ExpandableSection/ExpandableSection.esm.js";import{mapFiltersToCatalogFilter as fe}from"../Filter/utils.esm.js";import"../Filter/FilterComponent.esm.js";import{emptyFilters as ue}from"../Filter/types.esm.js";import{FormattedPreview as L}from"../FormattedPreview/FormattedPreview.esm.js";import"../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"react-hook-form";import"../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as ve}from"../FormControlledAutocomplete/useLabelOptions.esm.js";import{ControlledAutocomplete as y}from"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{LoadingIndicator as ge}from"../LoadingIndicator/LoadingIndicator.esm.js";import{useFactOptions as ye}from"./useFactOptions.esm.js";const be=800,Se=Y(t=>({content:{padding:t.spacing(2,3),width:be},section:{margin:t.spacing(2,0)},expandedSection:{borderTop:`1px solid ${t.palette.divider}`,padding:t.spacing(0,2)},loading:{margin:t.spacing(2)},preview:{maxHeight:500,overflow:"auto",border:`1px solid ${t.palette.divider}`},pathSection:{display:"flex",alignItems:"center",margin:t.spacing(1,0)},testPathButton:{margin:t.spacing(1,1,.5,0)},collectorName:{fontSize:24}})),xe=t=>{const p=!t||Object.values(t).every(h=>!h?.length)?{...ue(),selectedKinds:["Component","System"]}:t;return fe(p)},Fe=({factRef:t,updateFactRef:p,path:h,updatePath:T,entityRef:m,updateEntityRef:k,pathResolver:s,filters:F,onSave:w,hidePath:P})=>{const i=Se(),d=g(()=>{if(t)try{return te(t)}catch{return}},[t]),[N,O]=x(d?.source??null);ie(()=>{d?.source&&O(d.source)},[d?.source]);const[b,V]=x("jsonpath"),[R,j]=x(),[C,M]=x(),{data:B}=de(),A=g(()=>B?.map(r=>r.id)??[],[B]),{data:f}=ce(d?.source,d?.name,!0),D=g(()=>f?he(f.schema):[],[f]),{data:E,isLoading:J}=le(),$=E?.map(r=>r.id)?.sort()??[],S=!F||Object.values(F).every(r=>!r?.length),{data:z,isLoading:H}=ne(xe(F),1e3,!S),{entityRefs:K,allLoading:U}=re(500,S),l=g(()=>E?.find(r=>r.id===N),[E,N]),{factOptions:q}=ye({selectedCollector:l}),{options:Q,getOptionLabel:I}=ve(q),{data:c,isLoading:u}=se({factRef:t||"",entityRef:C||"",path:R,pathResolver:s??b??void 0},!!t&&!!C),X=oe(()=>{j(h),M(m)},[m,h]),_=g(()=>!!l?.config?.cache,[l]);return e(o,{className:i.content,"data-testid":"fact-explorer",children:a(o,{children:[a(o,{children:[e(n,{variant:"subtitle1",children:"Select an Integration"}),e(y,{options:$,onChange:r=>{O(r),p("")},value:N,placeholder:"Integration",disabled:J,fullWidth:!0,freeSolo:!0})]}),!l&&e(v,{children:a(o,{children:[e(n,{variant:"subtitle1",children:"Enter a Fact Ref Directly"}),e(Z,{value:t,onChange:r=>p(r.currentTarget.value),variant:"outlined",margin:"dense",placeholder:"Enter the full fact ref, i.e. custom:default/custom-fact",fullWidth:!0})]})}),!!l&&e(v,{children:a(o,{className:i.section,children:[pe(l.id)?e(me,{noMargin:!0,collectorId:l.id}):a(n,{variant:"h5",className:i.collectorName,component:"div",children:[l.name??l.id," "]}),!!l.description&&e(n,{variant:"body2",children:l.description}),e(y,{options:Q,onChange:p,value:t??null,placeholder:"Select Fact",getOptionLabel:I,noOptionsText:"No Facts",fullWidth:!0})]})}),!!t&&!!d&&a(v,{children:[!!f?.schema&&e(o,{className:i.section,children:e(G,{elevation:1,title:"JSON Schema",children:e("div",{className:i.preview,children:e(L,{data:f.schema})})})}),!P&&a(v,{children:[a(o,{className:i.section,children:[e(n,{variant:"subtitle1",children:"Path Resolver"}),!s&&e(n,{variant:"caption",children:"Defaults to jsonpath"}),s?e(n,{variant:"body1",children:s}):e(y,{options:A,onChange:V,value:s??b,placeholder:"Path Resolver (Optional)",getOptionLabel:I,fullWidth:!0,disabled:!!s,freeSolo:!0})]}),a(o,{className:i.section,children:[e(n,{variant:"subtitle1",children:"Path"}),e(y,{options:(s??b)==="jsonpath"?D:[],onChange:r=>{R&&j(void 0),T(r)},value:h??null,placeholder:"Path",fullWidth:!0,freeSolo:!0}),e("div",{className:i.pathSection,children:!!w&&e(W,{className:i.testPathButton,variant:"contained",onClick:()=>w({factRef:t,path:h??"",pathResolver:b??s??""}),disabled:!h,color:"primary",children:"Save"})})]})]})]}),!!t&&!!d&&e(G,{alwaysExpanded:P,elevation:0,title:"Sample Fact and Test Path",children:a(o,{className:i.expandedSection,children:[a(o,{marginBottom:1,children:[e(n,{variant:"subtitle1",children:"Select an Entity"}),a(n,{variant:"caption",children:["Fact will be sampled from this entity.",e("br",{}),"If you don't see the entity in the drop-down list, you can type its reference in the format ","<kind>:<namespace>/<name>","."]}),e(y,{options:S?K??[]:z??[],onChange:k,value:m??null,placeholder:"Entity Selection",isLoading:S?U:H,freeSolo:!0,fullWidth:!0})]}),e(o,{children:e(W,{className:i.testPathButton,variant:"contained",onClick:X,disabled:!m,color:"primary",children:"Sample Fact"})}),a(v,{children:[!!R&&!u&&a(o,{className:i.section,children:[e(n,{variant:"subtitle1",children:"Resolved Value"}),c?.resolvedValue!==null&&c?.resolvedValue!==void 0?e(o,{className:i.preview,children:e(L,{data:c?.resolvedValue})}):e(n,{color:"textSecondary",variant:"body2",children:"Could not resolve path"})]}),!!C&&a(o,{className:i.section,children:[e(n,{variant:"subtitle1",children:"Fact Data"}),_&&e(n,{variant:"caption",children:"Uses cache when available."}),!!u&&e("div",{className:i.loading,children:e(ge,{})}),!u&&!!c?.fact&&e(o,{className:i.preview,children:c?.fact?.sensitive&&ae.isEmpty(c?.fact?.data)?e(o,{children:e(ee,{severity:"info",children:"The associated fact contains potentially sensitive information and has been redacted."})}):e(L,{data:c?.fact?.data})}),!u&&!!c?.collectionError&&a(n,{color:"textSecondary",variant:"body2",children:["Failed to collect:"," ",c?.collectionError?.errorMessage]}),!u&&!c?.fact&&!c?.collectionError&&a(n,{color:"textSecondary",variant:"body2",children:["Fact ",t," unavailable for entity ",m]})]})]})]})})]})})};export{Fe as FactExplorer};
1
+ import{jsx as e,jsxs as a,Fragment as v}from"react/jsx-runtime";import{stringifyEntityRef as Z}from"@backstage/catalog-model";import{makeStyles as ee,Box as o,Typography as n,TextField as te,Button as T}from"@material-ui/core";import{Alert as ae}from"@material-ui/lab";import{parseFactRef as ie}from"@spotify/backstage-plugin-soundcheck-common";import oe from"lodash";import{useMemo as g,useState as F,useEffect as ne,useCallback as re}from"react";import{useGetEntityRefs as le}from"../../hooks/catalog/useGetEntityRefs.esm.js";import{useGetLimitedEntityRefs as ce}from"../../hooks/catalog/useGetLimitedEntityRefs.esm.js";import{useGetCollectors as se}from"../../hooks/collectors/useGetCollectors.esm.js";import{useGetFactSchema as de}from"../../hooks/collectors/useGetFactSchema.esm.js";import{useGetFact as pe}from"../../hooks/useGetFact.esm.js";import{useGetPathResolvers as he}from"../../hooks/useGetPathResolvers.esm.js";import{generateJsonPaths as me}from"../CheckForm/utils/checkFormUtils.esm.js";import{hasLogo as fe,CollectorLogo as ue}from"../CollectorsPage/CollectorListPage/CollectorLogo.esm.js";import{ExpandableSection as W}from"../ExpandableSection/ExpandableSection.esm.js";import{mapFiltersToCatalogFilter as ve}from"../Filter/utils.esm.js";import"../Filter/FilterComponent.esm.js";import{emptyFilters as ge}from"../Filter/types.esm.js";import{FormattedPreview as L}from"../FormattedPreview/FormattedPreview.esm.js";import"../FormControlledAutocomplete/FormControlledAutocomplete.esm.js";import"@material-ui/icons/CheckBox";import"@material-ui/icons/CheckBoxOutlineBlank";import"react-hook-form";import"../ListboxVirtualized/ListboxVirtualized.esm.js";import{useLabelOptions as ye}from"../FormControlledAutocomplete/useLabelOptions.esm.js";import{ControlledAutocomplete as y}from"../FormControlledAutocomplete/ControlledAutocomplete.esm.js";import{LoadingIndicator as be}from"../LoadingIndicator/LoadingIndicator.esm.js";import{useFactOptions as Se}from"./useFactOptions.esm.js";const Fe=800,Ne=ee(t=>({content:{padding:t.spacing(2,3),width:Fe},section:{margin:t.spacing(2,0)},expandedSection:{borderTop:`1px solid ${t.palette.divider}`,padding:t.spacing(0,2)},loading:{margin:t.spacing(2)},preview:{maxHeight:500,overflow:"auto",border:`1px solid ${t.palette.divider}`},pathSection:{display:"flex",alignItems:"center",margin:t.spacing(1,0)},testPathButton:{margin:t.spacing(1,1,.5,0)},collectorName:{fontSize:24}})),Re=t=>{const h=!t||Object.values(t).every(p=>!p?.length)?{...ge(),selectedKinds:["Component","System"]}:t;return ve(h)},xe=({factRef:t,updateFactRef:h,path:p,updatePath:G,entityRef:m,updateEntityRef:k,pathResolver:s,filters:N,onSave:w,hidePath:P})=>{const i=Ne(),d=g(()=>{if(t)try{return ie(t)}catch{return}},[t]),[R,O]=F(d?.source??null);ne(()=>{d?.source&&O(d.source)},[d?.source]);const[b,V]=F("jsonpath"),[x,j]=F(),[C,M]=F(),{data:B}=he(),A=g(()=>B?.map(r=>r.id)??[],[B]),{data:f}=de(d?.source,d?.name,!0),D=g(()=>f?me(f.schema):[],[f]),{data:E,isLoading:J}=se(),$=E?.map(r=>r.id)?.sort()??[],S=!N||Object.values(N).every(r=>!r?.length),{data:z,isLoading:H}=le(Re(N),1e3,!S),K=z?.items.map(r=>Z(r)),{entityRefs:U,allLoading:q}=ce(500,S),l=g(()=>E?.find(r=>r.id===R),[E,R]),{factOptions:Q}=Se({selectedCollector:l}),{options:X,getOptionLabel:I}=ye(Q),{data:c,isLoading:u}=pe({factRef:t||"",entityRef:C||"",path:x,pathResolver:s??b??void 0},!!t&&!!C),Y=re(()=>{j(p),M(m)},[m,p]),_=g(()=>!!l?.config?.cache,[l]);return e(o,{className:i.content,"data-testid":"fact-explorer",children:a(o,{children:[a(o,{children:[e(n,{variant:"subtitle1",children:"Select an Integration"}),e(y,{options:$,onChange:r=>{O(r),h("")},value:R,placeholder:"Integration",disabled:J,fullWidth:!0,freeSolo:!0})]}),!l&&e(v,{children:a(o,{children:[e(n,{variant:"subtitle1",children:"Enter a Fact Ref Directly"}),e(te,{value:t,onChange:r=>h(r.currentTarget.value),variant:"outlined",margin:"dense",placeholder:"Enter the full fact ref, i.e. custom:default/custom-fact",fullWidth:!0})]})}),!!l&&e(v,{children:a(o,{className:i.section,children:[fe(l.id)?e(ue,{noMargin:!0,collectorId:l.id}):a(n,{variant:"h5",className:i.collectorName,component:"div",children:[l.name??l.id," "]}),!!l.description&&e(n,{variant:"body2",children:l.description}),e(y,{options:X,onChange:h,value:t??null,placeholder:"Select Fact",getOptionLabel:I,noOptionsText:"No Facts",fullWidth:!0})]})}),!!t&&!!d&&a(v,{children:[!!f?.schema&&e(o,{className:i.section,children:e(W,{elevation:1,title:"JSON Schema",children:e("div",{className:i.preview,children:e(L,{data:f.schema})})})}),!P&&a(v,{children:[a(o,{className:i.section,children:[e(n,{variant:"subtitle1",children:"Path Resolver"}),!s&&e(n,{variant:"caption",children:"Defaults to jsonpath"}),s?e(n,{variant:"body1",children:s}):e(y,{options:A,onChange:V,value:s??b,placeholder:"Path Resolver (Optional)",getOptionLabel:I,fullWidth:!0,disabled:!!s,freeSolo:!0})]}),a(o,{className:i.section,children:[e(n,{variant:"subtitle1",children:"Path"}),e(y,{options:(s??b)==="jsonpath"?D:[],onChange:r=>{x&&j(void 0),G(r)},value:p??null,placeholder:"Path",fullWidth:!0,freeSolo:!0}),e("div",{className:i.pathSection,children:!!w&&e(T,{className:i.testPathButton,variant:"contained",onClick:()=>w({factRef:t,path:p??"",pathResolver:b??s??""}),disabled:!p,color:"primary",children:"Save"})})]})]})]}),!!t&&!!d&&e(W,{alwaysExpanded:P,elevation:0,title:"Sample Fact and Test Path",children:a(o,{className:i.expandedSection,children:[a(o,{marginBottom:1,children:[e(n,{variant:"subtitle1",children:"Select an Entity"}),a(n,{variant:"caption",children:["Fact will be sampled from this entity.",e("br",{}),"If you don't see the entity in the drop-down list, you can type its reference in the format ","<kind>:<namespace>/<name>","."]}),e(y,{options:S?U??[]:K??[],onChange:k,value:m??null,placeholder:"Entity Selection",isLoading:S?q:H,freeSolo:!0,fullWidth:!0})]}),e(o,{children:e(T,{className:i.testPathButton,variant:"contained",onClick:Y,disabled:!m,color:"primary",children:"Sample Fact"})}),a(v,{children:[!!x&&!u&&a(o,{className:i.section,children:[e(n,{variant:"subtitle1",children:"Resolved Value"}),c?.resolvedValue!==null&&c?.resolvedValue!==void 0?e(o,{className:i.preview,children:e(L,{data:c?.resolvedValue})}):e(n,{color:"textSecondary",variant:"body2",children:"Could not resolve path"})]}),!!C&&a(o,{className:i.section,children:[e(n,{variant:"subtitle1",children:"Fact Data"}),_&&e(n,{variant:"caption",children:"Uses cache when available."}),!!u&&e("div",{className:i.loading,children:e(be,{})}),!u&&!!c?.fact&&e(o,{className:i.preview,children:c?.fact?.sensitive&&oe.isEmpty(c?.fact?.data)?e(o,{children:e(ae,{severity:"info",children:"The associated fact contains potentially sensitive information and has been redacted."})}):e(L,{data:c?.fact?.data})}),!u&&!!c?.collectionError&&a(n,{color:"textSecondary",variant:"body2",children:["Failed to collect:"," ",c?.collectionError?.errorMessage]}),!u&&!c?.fact&&!c?.collectionError&&a(n,{color:"textSecondary",variant:"body2",children:["Fact ",t," unavailable for entity ",m]})]})]})]})})]})})};export{xe as FactExplorer};
2
2
  //# sourceMappingURL=FactExplorer.esm.js.map
@@ -0,0 +1,2 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{Button as v}from"@backstage/ui";import h from"@material-ui/icons/Search";import{useContext as R}from"react";import"../SoundcheckDialog/SoundcheckDialog.esm.js";import"./FactExplorer.esm.js";import{FactExplorerContext as F}from"./FactExplorerContext.esm.js";const B=({onSave:t,factRef:r,path:a,pathResolver:p,className:i,text:m="Explore Facts",hideIcon:n,variant:c="primary",size:s})=>{const{updateOpen:e,updateOnSave:l,updateFactRef:u,updatePath:f,updatePathResolver:d}=R(F);return o(v,{onClick:()=>{e(!0),u(r??""),f(a??""),d(p??""),l(()=>x=>{t&&t(x),e(!1)})},className:i,variant:c,size:s,iconStart:n?void 0:o(h,{}),children:m})};export{B as FactExplorerDialogButtonBUI};
2
+ //# sourceMappingURL=FactExplorerDialogBUI.esm.js.map