@spinnaker/core 2026.2.2 → 2026.3.0

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 (1937) hide show
  1. package/dist/account/AccountService.d.ts +14 -14
  2. package/dist/account/AccountTag.d.ts +2 -1
  3. package/dist/account/management/AccountManagementPage.d.ts +2 -0
  4. package/dist/account/management/AccountManagementPageContainer.d.ts +2 -0
  5. package/dist/account/management/AccountManagementService.d.ts +17 -0
  6. package/dist/account/management/CreateEditAccountModal.d.ts +17 -0
  7. package/dist/account/management/DeleteAccountButton.d.ts +6 -0
  8. package/dist/account/management/accountSamples.d.ts +16 -0
  9. package/dist/account/management/index.d.ts +6 -0
  10. package/dist/api/ApiService.d.ts +44 -22
  11. package/dist/api/iapSessionRefresh.d.ts +15 -0
  12. package/dist/api/mock/jasmine.d.ts +19 -0
  13. package/dist/api/mock/mockHttpClient.d.ts +7 -11
  14. package/dist/api/mock/mockHttpUtils.d.ts +0 -6
  15. package/dist/api/mock/receivedRequest.d.ts +1 -1
  16. package/dist/apitoken/ApiTokenService.d.ts +5 -5
  17. package/dist/apitoken/apitoken.states.d.ts +1 -1
  18. package/dist/apitoken/index.d.ts +0 -1
  19. package/dist/application/application.initializers.d.ts +0 -1
  20. package/dist/application/application.model.d.ts +7 -13
  21. package/dist/application/application.module.d.ts +4 -1
  22. package/dist/application/application.state.provider.d.ts +2 -6
  23. package/dist/application/applicationState.registration.d.ts +8 -0
  24. package/dist/application/applications.state.provider.d.ts +1 -1
  25. package/dist/application/config/ApplicationConfig.d.ts +70 -1
  26. package/dist/application/config/appConfig.dataSource.d.ts +1 -2
  27. package/dist/application/config/appConfig.states.d.ts +1 -1
  28. package/dist/application/index.d.ts +5 -2
  29. package/dist/application/modal/ApplicationProviderFields.d.ts +16 -0
  30. package/dist/application/modal/CreateApplicationModal.d.ts +42 -0
  31. package/dist/application/modal/validation/ApplicationNameValidator.d.ts +1 -1
  32. package/dist/application/nav/navigationCategory.registry.d.ts +1 -0
  33. package/dist/application/search/Applications.d.ts +6 -2
  34. package/dist/application/service/ApplicationDataSourceRegistry.d.ts +1 -0
  35. package/dist/application/service/ApplicationReader.d.ts +4 -4
  36. package/dist/application/service/ApplicationWriter.d.ts +3 -3
  37. package/dist/application/service/applicationDataSource.d.ts +6 -12
  38. package/dist/artifact/index.d.ts +0 -8
  39. package/dist/artifact/react/ArtifactAccountSelector.d.ts +0 -1
  40. package/dist/artifact/react/ExpectedArtifactEditor.d.ts +0 -1
  41. package/dist/artifact/react/ExpectedArtifactKindSelector.d.ts +0 -1
  42. package/dist/artifact/react/ExpectedArtifactSelector.d.ts +0 -1
  43. package/dist/artifact/react/ExpectedArtifactSourceSelector.d.ts +0 -1
  44. package/dist/artifact/react/StageArtifactSelector.d.ts +0 -1
  45. package/dist/authentication/AuthenticationInitializer.d.ts +9 -1
  46. package/dist/authentication/AuthenticationService.d.ts +2 -1
  47. package/dist/authentication/authentication.module.d.ts +2 -1
  48. package/dist/banner/global/CreateEditBannerModal.d.ts +13 -0
  49. package/dist/banner/global/DeleteBannerButton.d.ts +6 -0
  50. package/dist/banner/global/GlobalBannerAdminPage.d.ts +2 -0
  51. package/dist/banner/global/GlobalBannerAdminPageContainer.d.ts +2 -0
  52. package/dist/banner/global/GlobalBannerDisplay.d.ts +7 -0
  53. package/dist/banner/global/GlobalBannerService.d.ts +28 -0
  54. package/dist/banner/global/index.d.ts +6 -0
  55. package/dist/bootstrap/DeckRuntime.d.ts +18 -0
  56. package/dist/bootstrap/DeckRuntimeContext.d.ts +10 -0
  57. package/dist/bootstrap/DeckRuntimeServices.d.ts +79 -0
  58. package/dist/bootstrap/SpinnakerContainer.d.ts +3 -2
  59. package/dist/bootstrap/bootstrapDeck.d.ts +24 -0
  60. package/dist/bootstrap/index.d.ts +3 -10
  61. package/dist/bootstrap/runtimeInitializers.d.ts +23 -0
  62. package/dist/cache/cacheInitializer.service.d.ts +6 -8
  63. package/dist/certificates/certificate.read.service.d.ts +2 -2
  64. package/dist/ci/CIReader.d.ts +3 -3
  65. package/dist/ci/ci.dataSource.d.ts +1 -2
  66. package/dist/ci/ci.module.d.ts +2 -2
  67. package/dist/ci/ci.states.d.ts +1 -2
  68. package/dist/ci/igor.service.d.ts +8 -8
  69. package/dist/cloudProvider/CloudProviderRegistry.d.ts +7 -0
  70. package/dist/cloudProvider/providerSelection/ProviderSelectionService.d.ts +2 -2
  71. package/dist/cloudProvider/providerService.delegate.d.ts +8 -7
  72. package/dist/cluster/AllClusters.d.ts +27 -0
  73. package/dist/cluster/AllClustersGroupings.d.ts +6 -3
  74. package/dist/cluster/ClusterMaster.d.ts +11 -0
  75. package/dist/cluster/cluster.module.d.ts +0 -1
  76. package/dist/cluster/cluster.service.d.ts +4 -6
  77. package/dist/cluster/filter/ClusterFilterService.fixture.d.ts +35 -0
  78. package/dist/cluster/index.d.ts +3 -0
  79. package/dist/cluster/onDemand/OnDemandClusterPicker.d.ts +17 -0
  80. package/dist/config/VersionChecker.d.ts +2 -0
  81. package/dist/config/settings.d.ts +2 -0
  82. package/dist/confirmationModal/ConfirmModal.d.ts +1 -1
  83. package/dist/confirmationModal/confirmationModal.service.d.ts +3 -1
  84. package/dist/deploymentStrategy/deploymentStrategy.module.d.ts +0 -1
  85. package/dist/deploymentStrategy/deploymentStrategy.registry.d.ts +0 -1
  86. package/dist/diffs/ChangesModal.d.ts +3 -3
  87. package/dist/diffs/index.d.ts +0 -2
  88. package/dist/domain/IStageOrTriggerTypeConfig.d.ts +0 -3
  89. package/dist/domain/IStageTypeConfig.d.ts +17 -5
  90. package/dist/domain/ITask.d.ts +1 -1
  91. package/dist/domain/index.d.ts +0 -1
  92. package/dist/entityTag/EntityTagsReader.d.ts +2 -2
  93. package/dist/entityTag/entityTags.dataSource.d.ts +1 -1
  94. package/dist/entityTag/entityTags.module.d.ts +1 -1
  95. package/dist/entityTag/entityTags.write.service.d.ts +2 -2
  96. package/dist/entityTag/notifications/DataSourceNotifications.d.ts +0 -1
  97. package/dist/filterModel/FilterCollapse.d.ts +5 -2
  98. package/dist/filterModel/IFilterModel.d.ts +5 -0
  99. package/dist/function/CreateFunctionButton.d.ts +3 -0
  100. package/dist/function/filter/FunctionFilters.d.ts +4 -14
  101. package/dist/function/function.dataSource.d.ts +4 -1
  102. package/dist/function/function.read.service.d.ts +3 -5
  103. package/dist/function/function.states.d.ts +1 -1
  104. package/dist/function/function.transformer.d.ts +0 -2
  105. package/dist/function/function.write.service.d.ts +2 -2
  106. package/dist/header/customBanner/CustomBanner.d.ts +6 -2
  107. package/dist/history/recentHistory.service.d.ts +3 -8
  108. package/dist/image/image.reader.d.ts +2 -4
  109. package/dist/index.d.ts +4 -3
  110. package/dist/index.js +38 -38
  111. package/dist/index.js.map +1 -1
  112. package/dist/insight/InsightLayout.d.ts +11 -0
  113. package/dist/insight/InsightMenu.d.ts +5 -5
  114. package/dist/instance/InstanceList.d.ts +6 -4
  115. package/dist/instance/InstanceListBody.d.ts +6 -4
  116. package/dist/instance/InstanceReader.d.ts +2 -2
  117. package/dist/instance/details/MultipleInstancesDetails.d.ts +7 -0
  118. package/dist/instance/details/StandaloneInstanceDetails.d.ts +18 -0
  119. package/dist/instance/instance.module.d.ts +1 -2
  120. package/dist/instance/instance.states.d.ts +3 -1
  121. package/dist/instance/instance.write.service.d.ts +16 -15
  122. package/dist/instance/instanceType.service.d.ts +22 -7
  123. package/dist/loadBalancer/CreateLoadBalancerButton.d.ts +3 -0
  124. package/dist/loadBalancer/LoadBalancers.d.ts +4 -14
  125. package/dist/loadBalancer/LoadBalancersTag.d.ts +4 -10
  126. package/dist/loadBalancer/details/LoadBalancerDetailsWrapper.d.ts +1 -2
  127. package/dist/loadBalancer/details/TargetGroupDetailsWrapper.d.ts +18 -0
  128. package/dist/loadBalancer/details/index.d.ts +1 -0
  129. package/dist/loadBalancer/filter/LoadBalancerFilters.d.ts +4 -15
  130. package/dist/loadBalancer/loadBalancer.dataSource.d.ts +3 -1
  131. package/dist/loadBalancer/loadBalancer.module.d.ts +1 -1
  132. package/dist/loadBalancer/loadBalancer.read.service.d.ts +6 -8
  133. package/dist/loadBalancer/loadBalancer.states.d.ts +0 -1
  134. package/dist/loadBalancer/loadBalancer.transformer.d.ts +4 -2
  135. package/dist/loadBalancer/loadBalancer.write.service.d.ts +2 -2
  136. package/dist/loadBalancer/loadBalancerDataUtils.d.ts +1 -1
  137. package/dist/managed/ManagedReader.d.ts +2 -2
  138. package/dist/managed/ManagedWriter.d.ts +2 -2
  139. package/dist/managed/constraints/registry.d.ts +1 -1
  140. package/dist/managed/externals/ManagedResourceConfig.d.ts +2 -1
  141. package/dist/managed/externals/toggleResourceManagement.d.ts +2 -2
  142. package/dist/managed/index.d.ts +0 -2
  143. package/dist/managed/managed.dataSource.d.ts +1 -1
  144. package/dist/managed/managed.states.d.ts +0 -1
  145. package/dist/managed/resources/resourceRegistry.d.ts +1 -1
  146. package/dist/manifest/ManifestReader.d.ts +1 -1
  147. package/dist/manifest/ManifestWriter.d.ts +7 -7
  148. package/dist/manifest/stage/JobManifestPodLogs.d.ts +6 -0
  149. package/dist/modal/index.d.ts +0 -1
  150. package/dist/modal/wizard/WizardModal.d.ts +1 -0
  151. package/dist/naming/nameUtils.d.ts +1 -1
  152. package/dist/navigation/RoutingState.d.ts +11 -0
  153. package/dist/navigation/coreRoutes.d.ts +20 -0
  154. package/dist/navigation/directRouter.d.ts +3 -0
  155. package/dist/navigation/index.d.ts +3 -0
  156. package/dist/navigation/rootState.registration.d.ts +6 -0
  157. package/dist/navigation/routeLifecycles.d.ts +4 -0
  158. package/dist/navigation/router.d.ts +5 -0
  159. package/dist/navigation/routerContext.d.ts +17 -0
  160. package/dist/navigation/state.provider.d.ts +9 -17
  161. package/dist/navigation/stateHelper.provider.d.ts +5 -7
  162. package/dist/navigation/urlParser.d.ts +0 -3
  163. package/dist/network/NetworkReader.d.ts +2 -2
  164. package/dist/notification/AppNotificationsService.d.ts +2 -2
  165. package/dist/notification/NotificationService.d.ts +1 -1
  166. package/dist/notification/NotificationsList.d.ts +1 -1
  167. package/dist/notification/index.d.ts +0 -1
  168. package/dist/notification/notification.types.d.ts +2 -1
  169. package/dist/notification/notifications.module.d.ts +2 -3
  170. package/dist/overrideRegistry/override.registry.d.ts +1 -7
  171. package/dist/pagerDuty/PageModal.d.ts +4 -11
  172. package/dist/pagerDuty/Pager.d.ts +7 -2
  173. package/dist/pagerDuty/PagerDutySelectField.d.ts +21 -0
  174. package/dist/pagerDuty/index.d.ts +1 -2
  175. package/dist/pagerDuty/pager.states.d.ts +1 -1
  176. package/dist/pagerDuty/pagerDuty.write.service.d.ts +3 -3
  177. package/dist/pipeline/config/PipelineConfigPage.d.ts +15 -0
  178. package/dist/pipeline/config/PipelineRegistry.d.ts +3 -0
  179. package/dist/pipeline/config/TargetSelect.d.ts +12 -0
  180. package/dist/pipeline/config/graph/PipelineGraph.d.ts +8 -0
  181. package/dist/pipeline/config/pipelineConfig.module.d.ts +1 -2
  182. package/dist/pipeline/config/preconditions/EditPreconditionModal.d.ts +20 -0
  183. package/dist/pipeline/config/preconditions/PreconditionList.d.ts +18 -0
  184. package/dist/pipeline/config/preconditions/PreconditionSelector.d.ts +34 -0
  185. package/dist/pipeline/config/preconditions/preconditionTypes.d.ts +13 -0
  186. package/dist/pipeline/config/preconditions/types/stageStatus/StageStatusPreconditionConfig.d.ts +0 -1
  187. package/dist/pipeline/config/services/PipelineConfigService.d.ts +9 -9
  188. package/dist/pipeline/config/stages/StageName.d.ts +0 -1
  189. package/dist/pipeline/config/stages/applySourceServerGroupCapacity/applySourceServerGroupCapacityStage.module.d.ts +2 -1
  190. package/dist/pipeline/config/stages/bake/BakeryReader.d.ts +3 -3
  191. package/dist/pipeline/config/stages/bake/bakeStage.d.ts +11 -2
  192. package/dist/pipeline/config/stages/bake/bakeStage.transformer.d.ts +3 -2
  193. package/dist/pipeline/config/stages/bakeManifest/helmfile/BakeHelmfileConfigForm.d.ts +4 -0
  194. package/dist/pipeline/config/stages/baseProviderStage/BaseProviderStageConfig.d.ts +8 -0
  195. package/dist/pipeline/config/stages/checkPreconditions/CheckPreconditionsStageConfig.d.ts +3 -0
  196. package/dist/pipeline/config/stages/checkPreconditions/checkPreconditionsStage.d.ts +2 -1
  197. package/dist/pipeline/config/stages/cloneServerGroup/CloneServerGroupExecutionDetails.d.ts +9 -3
  198. package/dist/pipeline/config/stages/cloneServerGroup/cloneServerGroupStage.module.d.ts +2 -1
  199. package/dist/pipeline/config/stages/common/ExecutionBarLabel.d.ts +5 -2
  200. package/dist/pipeline/config/stages/common/NoConfigurationStageConfig.d.ts +2 -0
  201. package/dist/pipeline/config/stages/common/StepExecutionDetails.d.ts +9 -5
  202. package/dist/pipeline/config/stages/common/index.d.ts +1 -0
  203. package/dist/pipeline/config/stages/createLoadBalancer/CreateLoadBalancerExecutionDetails.d.ts +18 -0
  204. package/dist/pipeline/config/stages/createLoadBalancer/CreateLoadBalancerStageConfig.d.ts +23 -0
  205. package/dist/pipeline/config/stages/createLoadBalancer/createLoadBalancerStage.d.ts +13 -2
  206. package/dist/pipeline/config/stages/createLoadBalancer/openLoadBalancerModal.d.ts +4 -0
  207. package/dist/pipeline/config/stages/deploy/DeployExecutionDetails.d.ts +65 -0
  208. package/dist/pipeline/config/stages/deploy/DeployStageConfig.d.ts +66 -0
  209. package/dist/pipeline/config/stages/deploy/deployStage.d.ts +4 -2
  210. package/dist/pipeline/config/stages/deploy/deployStage.transformer.d.ts +3 -2
  211. package/dist/pipeline/config/stages/deployService/deployServiceStage.d.ts +11 -1
  212. package/dist/pipeline/config/stages/destroyAsg/destroyAsgStage.d.ts +2 -1
  213. package/dist/pipeline/config/stages/destroyService/destroyServiceStage.d.ts +11 -1
  214. package/dist/pipeline/config/stages/disableAsg/disableAsgStage.module.d.ts +2 -1
  215. package/dist/pipeline/config/stages/disableCluster/disableClusterStage.d.ts +2 -1
  216. package/dist/pipeline/config/stages/enableAsg/enableAsgStage.d.ts +2 -1
  217. package/dist/pipeline/config/stages/evaluateArtifacts/EvaluateArtifactsExecutionDetails.d.ts +6 -0
  218. package/dist/pipeline/config/stages/evaluateArtifacts/EvaluateArtifactsStageConfig.d.ts +4 -0
  219. package/dist/pipeline/config/stages/evaluateArtifacts/EvaluateArtifactsStageForm.d.ts +3 -0
  220. package/dist/pipeline/config/stages/evaluateArtifacts/EvaluateArtifactsStageModal.d.ts +11 -0
  221. package/dist/pipeline/config/stages/evaluateArtifacts/evaluateArtifactsStage.d.ts +3 -0
  222. package/dist/pipeline/config/stages/executionWindows/ExecutionWindowActions.d.ts +3 -0
  223. package/dist/pipeline/config/stages/executionWindows/executionWindowsStage.d.ts +10 -1
  224. package/dist/pipeline/config/stages/findAmi/findAmiStage.d.ts +2 -1
  225. package/dist/pipeline/config/stages/findArtifactFromExecution/FindArtifactFromExecutionStageConfig.d.ts +3 -0
  226. package/dist/pipeline/config/stages/findArtifactFromExecution/findArtifactFromExecutionStage.d.ts +3 -1
  227. package/dist/pipeline/config/stages/findImageFromTags/findImageFromTagsStage.d.ts +8 -2
  228. package/dist/pipeline/config/stages/group/GroupExecutionLabel.d.ts +3 -0
  229. package/dist/pipeline/config/stages/group/groupStage.d.ts +2 -4
  230. package/dist/pipeline/config/stages/jenkins/AddCiBuildParameterModal.d.ts +14 -0
  231. package/dist/pipeline/config/stages/jenkins/CiBuildExecutionDetails.d.ts +9 -0
  232. package/dist/pipeline/config/stages/jenkins/CiBuildStageConfig.d.ts +63 -0
  233. package/dist/pipeline/config/stages/jenkins/JenkinsExecutionDetails.d.ts +4 -0
  234. package/dist/pipeline/config/stages/jenkins/JenkinsStageConfig.d.ts +2 -0
  235. package/dist/pipeline/config/stages/jenkins/jenkinsStage.d.ts +25 -2
  236. package/dist/pipeline/config/stages/manualJudgment/ManualJudgmentApproval.d.ts +3 -0
  237. package/dist/pipeline/config/stages/manualJudgment/ManualJudgmentStageConfig.d.ts +3 -0
  238. package/dist/pipeline/config/stages/manualJudgment/manualJudgment.service.d.ts +1 -3
  239. package/dist/pipeline/config/stages/manualJudgment/manualJudgmentStage.d.ts +19 -2
  240. package/dist/pipeline/config/stages/monitorPipeline/monitorPipelineStage.d.ts +12 -2
  241. package/dist/pipeline/config/stages/monitoreddeploy/DeploymentMonitorReader.d.ts +1 -1
  242. package/dist/pipeline/config/stages/monitoreddeploy/evaluateHealthStage.d.ts +2 -1
  243. package/dist/pipeline/config/stages/monitoreddeploy/notifyDeployStartingStage.d.ts +2 -1
  244. package/dist/pipeline/config/stages/pipeline/PipelineStageConfig.d.ts +3 -0
  245. package/dist/pipeline/config/stages/pipeline/pipelineStage.d.ts +18 -2
  246. package/dist/pipeline/config/stages/preconfiguredJob/preconfiguredJob.reader.d.ts +1 -1
  247. package/dist/pipeline/config/stages/preconfiguredJob/preconfiguredJobStage.d.ts +1 -1
  248. package/dist/pipeline/config/stages/producesArtifacts/ProducesArtifacts.d.ts +0 -1
  249. package/dist/pipeline/config/stages/resizeAsg/ResizeAsgExecutionDetails.d.ts +6 -0
  250. package/dist/pipeline/config/stages/resizeAsg/resizeAsgStage.d.ts +2 -1
  251. package/dist/pipeline/config/stages/rollbackCluster/rollbackClusterStage.d.ts +2 -1
  252. package/dist/pipeline/config/stages/runJob/runJobStage.d.ts +9 -2
  253. package/dist/pipeline/config/stages/runMultiplePipelines/InputYamlForm.d.ts +11 -0
  254. package/dist/pipeline/config/stages/runMultiplePipelines/RunMultiplePipelinesStageConfig.d.ts +3 -0
  255. package/dist/pipeline/config/stages/runMultiplePipelines/RunMultiplePipelinesStageExecutionDetails.d.ts +6 -0
  256. package/dist/pipeline/config/stages/runMultiplePipelines/modals/CancelAllModal.d.ts +3 -0
  257. package/dist/pipeline/config/stages/runMultiplePipelines/modals/CancelModal.d.ts +3 -0
  258. package/dist/pipeline/config/stages/runMultiplePipelines/modals/RollbackAllAppsModal.d.ts +3 -0
  259. package/dist/pipeline/config/stages/runMultiplePipelines/modals/RollbackModal.d.ts +3 -0
  260. package/dist/pipeline/config/stages/scaleDownCluster/scaleDownClusterStage.d.ts +2 -1
  261. package/dist/pipeline/config/stages/script/scriptStage.d.ts +1 -1
  262. package/dist/pipeline/config/stages/shareService/shareServiceStage.d.ts +11 -1
  263. package/dist/pipeline/config/stages/shrinkCluster/shrinkClusterStage.d.ts +2 -1
  264. package/dist/pipeline/config/stages/tagImage/tagImageStage.d.ts +8 -2
  265. package/dist/pipeline/config/stages/templates/index.d.ts +1 -3
  266. package/dist/pipeline/config/stages/travis/TravisExecutionDetails.d.ts +4 -0
  267. package/dist/pipeline/config/stages/travis/TravisStageConfig.d.ts +2 -0
  268. package/dist/pipeline/config/stages/travis/travisStage.d.ts +24 -42
  269. package/dist/pipeline/config/stages/unmatchedStageTypeStage/UnmatchedStageTypeStageConfig.d.ts +3 -0
  270. package/dist/pipeline/config/stages/unmatchedStageTypeStage/unmatchedStageTypeStage.d.ts +2 -1
  271. package/dist/pipeline/config/stages/unshareService/unshareServiceStage.d.ts +11 -1
  272. package/dist/pipeline/config/stages/wait/SkipWait.d.ts +3 -0
  273. package/dist/pipeline/config/stages/waitForCondition/waitForConditionStage.d.ts +10 -1
  274. package/dist/pipeline/config/stages/waitForParentTasks/WaitForParentTasksExecutionDetails.d.ts +6 -0
  275. package/dist/pipeline/config/stages/waitForParentTasks/waitForParentTasks.d.ts +8 -2
  276. package/dist/pipeline/config/stages/waitForParentTasks/waitForParentTasks.transformer.d.ts +3 -2
  277. package/dist/pipeline/config/stages/webhook/WebhookExecutionDetails.d.ts +10 -0
  278. package/dist/pipeline/config/stages/webhook/WebhookStageConfig.d.ts +35 -0
  279. package/dist/pipeline/config/stages/webhook/webhookStage.d.ts +7 -51
  280. package/dist/pipeline/config/templates/ConfigurePipelineTemplateModal.d.ts +42 -0
  281. package/dist/pipeline/config/templates/PipelineTemplateConfigurationAdapters.d.ts +25 -0
  282. package/dist/pipeline/config/templates/PipelineTemplateReader.d.ts +5 -5
  283. package/dist/pipeline/config/templates/PipelineTemplateWriter.d.ts +2 -2
  284. package/dist/pipeline/config/templates/index.d.ts +2 -0
  285. package/dist/pipeline/config/templates/templateVariableRegistrations.d.ts +9 -0
  286. package/dist/pipeline/config/templates/v2/PipelineTemplatesV2.d.ts +5 -1
  287. package/dist/pipeline/config/templates/v2/createPipelineFromTemplate/CreatePipelineFromTemplate.d.ts +5 -1
  288. package/dist/pipeline/config/templates/v2/pipelineTemplateV2.states.d.ts +1 -1
  289. package/dist/pipeline/config/triggers/artifactory/artifactoryReader.service.d.ts +1 -1
  290. package/dist/pipeline/config/triggers/artifacts/ArtifactService.d.ts +3 -3
  291. package/dist/pipeline/config/triggers/baseBuild/BaseBuildTriggerTemplate.d.ts +1 -1
  292. package/dist/pipeline/config/triggers/concourse/concourse.service.d.ts +4 -4
  293. package/dist/pipeline/config/triggers/cron/cronValidator.service.d.ts +1 -1
  294. package/dist/pipeline/config/triggers/helm/HelmManualTriggerConfig.d.ts +1 -1
  295. package/dist/pipeline/config/triggers/nexus/nexusReader.service.d.ts +1 -1
  296. package/dist/pipeline/config/triggers/pipeline/PipelineTriggerTemplate.d.ts +9 -3
  297. package/dist/pipeline/config/validation/PipelineConfigValidator.d.ts +1 -1
  298. package/dist/pipeline/create/CreatePipelineButton.d.ts +4 -7
  299. package/dist/pipeline/details/ExecutionDetailsSectionNav.d.ts +7 -6
  300. package/dist/pipeline/details/SingleExecutionDetails.d.ts +10 -2
  301. package/dist/pipeline/details/StageExecutionDetails.d.ts +10 -6
  302. package/dist/pipeline/details/StageFailureMessage.d.ts +14 -2
  303. package/dist/pipeline/details/StageSummaryWrapper.d.ts +5 -1
  304. package/dist/pipeline/details/StepDetails.d.ts +0 -2
  305. package/dist/pipeline/details/StepExecutionDetailsWrapper.d.ts +9 -3
  306. package/dist/pipeline/details/executionDetailsSection.service.d.ts +4 -7
  307. package/dist/pipeline/executionBuild/ExecutionBuildTitle.d.ts +0 -1
  308. package/dist/pipeline/executionBuild/buildDisplayName.filter.d.ts +0 -1
  309. package/dist/pipeline/executions/Executions.d.ts +13 -5
  310. package/dist/pipeline/executions/execution/Execution.d.ts +8 -4
  311. package/dist/pipeline/executions/executionGroup/ExecutionGroup.d.ts +8 -4
  312. package/dist/pipeline/executions/executionGroup/ExecutionGroups.d.ts +7 -3
  313. package/dist/pipeline/filter/ExecutionFilters.d.ts +4 -24
  314. package/dist/pipeline/index.d.ts +2 -0
  315. package/dist/pipeline/manualExecution/ManualPipelineExecutionModal.d.ts +2 -1
  316. package/dist/pipeline/manualExecution/StageManualComponents.d.ts +1 -4
  317. package/dist/pipeline/pipeline.dataSource.d.ts +1 -2
  318. package/dist/pipeline/pipeline.module.d.ts +36 -2
  319. package/dist/pipeline/pipeline.states.d.ts +1 -1
  320. package/dist/pipeline/service/execution.service.d.ts +17 -20
  321. package/dist/plugins/deck.plugin.d.ts +2 -2
  322. package/dist/plugins/plugin.module.d.ts +3 -1
  323. package/dist/plugins/plugin.registry.d.ts +12 -6
  324. package/dist/presentation/ReactModal.d.ts +7 -1
  325. package/dist/presentation/SpinErrorBoundary.d.ts +2 -1
  326. package/dist/presentation/anyFieldFilter/anyField.filter.d.ts +1 -8
  327. package/dist/presentation/forms/hooks/useFormInputValueMapper.hook.d.ts +1 -0
  328. package/dist/presentation/forms/inputs/interface.d.ts +1 -0
  329. package/dist/presentation/index.d.ts +0 -1
  330. package/dist/presentation/modal/ErrorModalService.d.ts +9 -0
  331. package/dist/presentation/modal/index.d.ts +1 -0
  332. package/dist/presentation/navigation/PageNavigator.d.ts +5 -17
  333. package/dist/presentation/replace.filter.d.ts +1 -1
  334. package/dist/presentation/robotToHumanFilter/robotToHuman.filter.d.ts +0 -1
  335. package/dist/presentation/spel/SpelService.d.ts +1 -1
  336. package/dist/projects/dashboard/ProjectCluster.d.ts +11 -0
  337. package/dist/projects/dashboard/ProjectClusterModel.d.ts +52 -0
  338. package/dist/projects/dashboard/ProjectDashboard.d.ts +9 -0
  339. package/dist/projects/dashboard/RegionFilter.d.ts +11 -0
  340. package/dist/projects/dashboard/pipeline/ProjectPipeline.d.ts +4 -6
  341. package/dist/projects/projects.states.d.ts +1 -3
  342. package/dist/projects/service/ProjectReader.d.ts +3 -3
  343. package/dist/projects/service/ProjectWriter.d.ts +2 -2
  344. package/dist/pubsub/PubsubSubscriptionReader.d.ts +1 -1
  345. package/dist/reactShims/index.d.ts +0 -6
  346. package/dist/retry/retry.service.d.ts +1 -1
  347. package/dist/search/global/GlobalSearch.d.ts +4 -28
  348. package/dist/search/infrastructure/SearchV1.d.ts +32 -0
  349. package/dist/search/infrastructure/SearchV2.d.ts +7 -4
  350. package/dist/search/infrastructure/infrastructure.states.d.ts +1 -1
  351. package/dist/search/infrastructure/infrastructureSearch.service.d.ts +6 -11
  352. package/dist/search/infrastructure/infrastructureSearchV2.service.d.ts +1 -1
  353. package/dist/search/search.service.d.ts +1 -1
  354. package/dist/search/searchRank.filter.d.ts +0 -1
  355. package/dist/search/widgets/searchFilterTypeRegistrations.d.ts +1 -0
  356. package/dist/securityGroup/SecurityGroupWriter.d.ts +2 -2
  357. package/dist/securityGroup/StandaloneSecurityGroupDetails.d.ts +14 -0
  358. package/dist/securityGroup/filter/SecurityGroupFilterModel.d.ts +0 -1
  359. package/dist/securityGroup/securityGroup.dataSource.d.ts +2 -1
  360. package/dist/securityGroup/securityGroup.module.d.ts +1 -2
  361. package/dist/securityGroup/securityGroup.states.d.ts +3 -1
  362. package/dist/securityGroup/securityGroupReader.service.d.ts +9 -12
  363. package/dist/securityGroup/securityGroupTransformer.service.d.ts +1 -3
  364. package/dist/serverGroup/ServerGroup.d.ts +7 -3
  365. package/dist/serverGroup/configure/common/DeployInitializer.d.ts +21 -3
  366. package/dist/serverGroup/configure/common/InstanceArchetypeSelector.d.ts +7 -1
  367. package/dist/serverGroup/configure/common/InstanceTypeSelector.d.ts +5 -0
  368. package/dist/serverGroup/configure/common/index.d.ts +2 -2
  369. package/dist/serverGroup/configure/common/serverGroupCommandBuilder.service.d.ts +1 -3
  370. package/dist/serverGroup/configure/common/serverGroupCommandRegistry.provider.d.ts +1 -4
  371. package/dist/serverGroup/details/MultipleServerGroupsDetails.d.ts +7 -0
  372. package/dist/serverGroup/details/ServerGroupDetails.d.ts +11 -5
  373. package/dist/serverGroup/details/ServerGroupDetailsWrapper.d.ts +3 -5
  374. package/dist/serverGroup/index.d.ts +0 -1
  375. package/dist/serverGroup/metrics/CloudMetricsReader.d.ts +2 -2
  376. package/dist/serverGroup/serverGroup.dataSource.d.ts +2 -1
  377. package/dist/serverGroup/serverGroup.module.d.ts +1 -1
  378. package/dist/serverGroup/serverGroup.states.d.ts +4 -1
  379. package/dist/serverGroup/serverGroupReader.service.d.ts +2 -2
  380. package/dist/serverGroup/serverGroupWriter.service.d.ts +9 -11
  381. package/dist/serverGroupManager/ServerGroupManager.d.ts +6 -1
  382. package/dist/serverGroupManager/ServerGroupManagerHeading.d.ts +2 -1
  383. package/dist/serverGroupManager/ServerGroupManagerReader.d.ts +1 -1
  384. package/dist/serverGroupManager/ServerGroupManagerTag.d.ts +4 -6
  385. package/dist/serverGroupManager/serverGroupManager.dataSource.d.ts +1 -1
  386. package/dist/serverGroupManager/serverGroupManager.states.d.ts +0 -1
  387. package/dist/serviceAccount/ServiceAccountReader.d.ts +2 -2
  388. package/dist/services/ServicesReader.d.ts +1 -1
  389. package/dist/slack/SlackReader.d.ts +1 -1
  390. package/dist/slack/index.d.ts +0 -1
  391. package/dist/snapshot/SnapshotReader.d.ts +1 -1
  392. package/dist/snapshot/SnapshotWriter.d.ts +2 -2
  393. package/dist/storage/StorageAccountReader.d.ts +1 -1
  394. package/dist/styleguide/StyleguideRoute.d.ts +2 -0
  395. package/dist/styleguide/styleguide.states.d.ts +2 -1
  396. package/dist/subnet/subnet.read.service.d.ts +4 -4
  397. package/dist/task/Tasks.d.ts +8 -0
  398. package/dist/task/TrafficGuardHelperLink.d.ts +2 -4
  399. package/dist/task/displayableTasks.filter.d.ts +0 -1
  400. package/dist/task/modal/TaskReason.d.ts +1 -0
  401. package/dist/task/monitor/TaskMonitor.d.ts +9 -12
  402. package/dist/task/monitor/TaskMonitorError.d.ts +4 -5
  403. package/dist/task/task.dataSource.d.ts +1 -2
  404. package/dist/task/task.read.service.d.ts +6 -5
  405. package/dist/task/task.states.d.ts +2 -1
  406. package/dist/task/task.write.service.d.ts +2 -2
  407. package/dist/task/taskExecutor.d.ts +1 -1
  408. package/dist/task/verification/UserVerification.d.ts +1 -0
  409. package/dist/types/index.d.ts +0 -1
  410. package/dist/utils/cancellableTimeout.d.ts +11 -0
  411. package/dist/utils/consoleDebug.d.ts +1 -6
  412. package/dist/utils/deferred.d.ts +6 -0
  413. package/dist/utils/diagnosticLogger.d.ts +4 -0
  414. package/dist/utils/index.d.ts +5 -5
  415. package/dist/utils/interpolate.d.ts +2 -0
  416. package/dist/utils/json/JsonUtils.d.ts +2 -2
  417. package/dist/utils/nativePromiseService.d.ts +12 -0
  418. package/dist/utils/q.d.ts +1 -1
  419. package/dist/utils/retryablePromise.d.ts +7 -2
  420. package/dist/utils/timeFormatters.d.ts +0 -1
  421. package/dist/widgets/AccountRegionClusterSelector.d.ts +4 -0
  422. package/dist/widgets/cluster/ClusterMatches.d.ts +5 -1
  423. package/dist/widgets/index.d.ts +1 -1
  424. package/dist/widgets/spelText/SpelAutocompleteService.d.ts +4 -4
  425. package/dist/widgets/spelText/SpelText.d.ts +3 -0
  426. package/dist/yamlEditor/index.d.ts +0 -1
  427. package/package.json +10 -28
  428. package/src/account/AccountSelectInput.spec.tsx +36 -46
  429. package/src/account/AccountSelectInput.tsx +6 -9
  430. package/src/account/AccountService.spec.ts +3 -9
  431. package/src/account/AccountService.ts +34 -32
  432. package/src/account/AccountTag.spec.tsx +12 -0
  433. package/src/account/AccountTag.tsx +14 -4
  434. package/src/account/management/AccountManagementPage.tsx +182 -0
  435. package/src/account/management/AccountManagementPageContainer.tsx +48 -0
  436. package/src/account/management/AccountManagementService.spec.ts +77 -0
  437. package/src/account/management/AccountManagementService.ts +38 -0
  438. package/src/account/management/CreateEditAccountModal.spec.ts +48 -0
  439. package/src/account/management/CreateEditAccountModal.tsx +212 -0
  440. package/src/account/management/DeleteAccountButton.tsx +65 -0
  441. package/src/account/management/accountSamples.ts +107 -0
  442. package/src/account/management/accountmanagement.states.ts +23 -0
  443. package/src/account/management/index.ts +6 -0
  444. package/src/analytics/react.ga.ts +15 -0
  445. package/src/api/ApiService.spec.ts +854 -3
  446. package/src/api/ApiService.ts +240 -55
  447. package/src/api/ApiServiceDeprecated.spec.ts +107 -219
  448. package/src/api/iapSessionRefresh.ts +92 -0
  449. package/src/api/mock/jasmine.spec.ts +22 -0
  450. package/src/api/mock/jasmine.ts +60 -7
  451. package/src/api/mock/mockHttpClient.spec.ts +36 -0
  452. package/src/api/mock/mockHttpClient.ts +22 -36
  453. package/src/api/mock/mockHttpUtils.ts +0 -14
  454. package/src/api/mock/receivedRequest.ts +2 -2
  455. package/src/apitoken/ApiTokenService.ts +5 -5
  456. package/src/apitoken/apitoken.states.ts +18 -24
  457. package/src/apitoken/index.ts +0 -1
  458. package/src/application/ApplicationComponent.spec.tsx +32 -0
  459. package/src/application/ApplicationComponent.tsx +7 -1
  460. package/src/application/application.initializers.ts +0 -11
  461. package/src/application/application.less +0 -6
  462. package/src/application/application.model.spec.ts +100 -67
  463. package/src/application/application.model.ts +18 -20
  464. package/src/application/application.module.ts +4 -22
  465. package/src/application/application.state.provider.ts +9 -16
  466. package/src/application/applicationState.registration.spec.ts +93 -0
  467. package/src/application/applicationState.registration.ts +43 -0
  468. package/src/application/applications.state.provider.ts +21 -28
  469. package/src/application/config/ApplicationConfig.spec.tsx +929 -0
  470. package/src/application/config/ApplicationConfig.tsx +1753 -11
  471. package/src/application/config/DeleteApplicationSection.tsx +3 -2
  472. package/src/application/config/appConfig.dataSource.js +4 -7
  473. package/src/application/config/appConfig.states.ts +21 -27
  474. package/src/application/index.ts +5 -6
  475. package/src/application/modal/ApplicationProviderFields.spec.tsx +129 -0
  476. package/src/application/modal/ApplicationProviderFields.tsx +98 -0
  477. package/src/application/modal/CreateApplicationModal.spec.tsx +406 -0
  478. package/src/application/modal/CreateApplicationModal.tsx +596 -0
  479. package/src/application/modal/PermissionsConfigurer.spec.tsx +5 -11
  480. package/src/application/modal/validation/ApplicationNameValidator.spec.ts +29 -35
  481. package/src/application/modal/validation/ApplicationNameValidator.ts +1 -1
  482. package/src/application/nav/AppRefresherIcon.tsx +1 -2
  483. package/src/application/nav/ApplicationNavigation.spec.tsx +30 -17
  484. package/src/application/nav/ApplicationNavigation.tsx +6 -8
  485. package/src/application/nav/navigationCategory.registry.ts +5 -0
  486. package/src/application/search/Applications.spec.tsx +40 -0
  487. package/src/application/search/Applications.tsx +21 -32
  488. package/src/application/service/ApplicationDataSourceRegistry.ts +4 -0
  489. package/src/application/service/ApplicationReader.spec.ts +34 -43
  490. package/src/application/service/ApplicationReader.ts +4 -4
  491. package/src/application/service/ApplicationWriter.spec.ts +1 -11
  492. package/src/application/service/ApplicationWriter.ts +3 -3
  493. package/src/application/service/applicationDataSource.spec.ts +62 -0
  494. package/src/application/service/applicationDataSource.ts +23 -27
  495. package/src/application/service/directDataSources.spec.ts +493 -0
  496. package/src/artifact/index.ts +0 -8
  497. package/src/artifact/react/ArtifactAccountSelector.tsx +0 -14
  498. package/src/artifact/react/ExpectedArtifactEditor.tsx +2 -30
  499. package/src/artifact/react/ExpectedArtifactKindSelector.tsx +0 -15
  500. package/src/artifact/react/ExpectedArtifactSelector.spec.tsx +2 -2
  501. package/src/artifact/react/ExpectedArtifactSelector.tsx +0 -26
  502. package/src/artifact/react/ExpectedArtifactSourceSelector.tsx +0 -15
  503. package/src/artifact/react/StageArtifactSelector.tsx +0 -18
  504. package/src/authentication/AuthenticationInitializer.spec.ts +483 -49
  505. package/src/authentication/AuthenticationInitializer.ts +80 -41
  506. package/src/authentication/AuthenticationService.spec.ts +38 -2
  507. package/src/authentication/AuthenticationService.ts +14 -2
  508. package/src/authentication/authentication.module.ts +36 -30
  509. package/src/authentication/userMenu/UserMenu.spec.tsx +20 -0
  510. package/src/authentication/userMenu/UserMenu.tsx +17 -1
  511. package/src/banner/BannerContainer.tsx +1 -6
  512. package/src/banner/global/CreateEditBannerModal.spec.tsx +255 -0
  513. package/src/banner/global/CreateEditBannerModal.tsx +331 -0
  514. package/src/banner/global/DeleteBannerButton.tsx +75 -0
  515. package/src/banner/global/GlobalBannerAdminPage.tsx +138 -0
  516. package/src/banner/global/GlobalBannerAdminPageContainer.tsx +62 -0
  517. package/src/banner/global/GlobalBannerDisplay.tsx +73 -0
  518. package/src/banner/global/GlobalBannerService.spec.ts +131 -0
  519. package/src/banner/global/GlobalBannerService.ts +65 -0
  520. package/src/banner/global/globalbanner.states.ts +37 -0
  521. package/src/banner/global/index.ts +20 -0
  522. package/src/bootstrap/DeckRuntime.spec.ts +310 -0
  523. package/src/bootstrap/DeckRuntime.ts +47 -0
  524. package/src/bootstrap/DeckRuntimeContext.spec.tsx +66 -0
  525. package/src/bootstrap/DeckRuntimeContext.tsx +39 -0
  526. package/src/bootstrap/DeckRuntimeServices.ts +260 -0
  527. package/src/bootstrap/SpinnakerContainer.spec.tsx +51 -0
  528. package/src/bootstrap/SpinnakerContainer.tsx +30 -21
  529. package/src/bootstrap/bootstrapDeck.spec.tsx +935 -0
  530. package/src/bootstrap/bootstrapDeck.tsx +181 -0
  531. package/src/bootstrap/index.ts +3 -11
  532. package/src/bootstrap/runtimeInitializers.spec.ts +260 -0
  533. package/src/bootstrap/runtimeInitializers.ts +110 -0
  534. package/src/cache/cacheInitializer.service.spec.ts +74 -73
  535. package/src/cache/cacheInitializer.service.ts +14 -20
  536. package/src/cache/deckCacheFactory.ts +1 -1
  537. package/src/cache/infrastructureCaches.spec.ts +6 -0
  538. package/src/certificates/certificate.read.service.ts +2 -2
  539. package/src/ci/CIReader.ts +3 -3
  540. package/src/ci/ci.dataSource.ts +59 -62
  541. package/src/ci/ci.module.ts +2 -10
  542. package/src/ci/ci.states.ts +30 -38
  543. package/src/ci/components/Builds.spec.tsx +82 -0
  544. package/src/ci/components/Builds.tsx +22 -18
  545. package/src/ci/components/builds.less +9 -0
  546. package/src/ci/igor.service.ts +10 -12
  547. package/src/cloudProvider/CloudProviderRegistry.spec.ts +53 -48
  548. package/src/cloudProvider/CloudProviderRegistry.ts +8 -3
  549. package/src/cloudProvider/providerSelection/ProviderSelectionService.spec.ts +104 -99
  550. package/src/cloudProvider/providerSelection/ProviderSelectionService.ts +36 -17
  551. package/src/cloudProvider/providerService.delegate.spec.ts +129 -0
  552. package/src/cloudProvider/providerService.delegate.ts +37 -21
  553. package/src/cluster/AllClusters.spec.tsx +51 -0
  554. package/src/cluster/AllClusters.tsx +243 -0
  555. package/src/cluster/AllClustersGroupings.spec.tsx +102 -0
  556. package/src/cluster/AllClustersGroupings.tsx +21 -25
  557. package/src/cluster/ClusterMaster.spec.tsx +117 -0
  558. package/src/cluster/ClusterMaster.tsx +60 -0
  559. package/src/cluster/ClusterPodTitleWrapper.tsx +1 -2
  560. package/src/cluster/cluster.module.ts +0 -13
  561. package/src/cluster/cluster.service.spec.ts +92 -25
  562. package/src/cluster/cluster.service.ts +7 -11
  563. package/src/cluster/clusterSearchResultType.spec.ts +38 -0
  564. package/src/cluster/clusterSearchResultType.tsx +2 -4
  565. package/src/cluster/filter/ClusterFilterService.fixture.ts +151 -0
  566. package/src/cluster/filter/ClusterFilterService.spec.ts +40 -13
  567. package/src/cluster/filter/ClusterFilterService.ts +12 -7
  568. package/src/cluster/filter/MultiselectModel.spec.ts +26 -12
  569. package/src/cluster/filter/MultiselectModel.ts +7 -7
  570. package/src/cluster/index.ts +3 -0
  571. package/src/cluster/onDemand/OnDemandClusterPicker.spec.tsx +228 -0
  572. package/src/cluster/onDemand/OnDemandClusterPicker.tsx +114 -0
  573. package/src/cluster/onDemand/onDemandClusterPicker.component.less +7 -2
  574. package/src/cluster/rollups.less +0 -8
  575. package/src/config/VersionChecker.spec.tsx +39 -0
  576. package/src/config/VersionChecker.tsx +22 -6
  577. package/src/config/settings.ts +4 -0
  578. package/src/confirmationModal/ConfirmModal.spec.tsx +211 -0
  579. package/src/confirmationModal/ConfirmModal.tsx +38 -13
  580. package/src/confirmationModal/confirmationModal.service.spec.ts +105 -0
  581. package/src/confirmationModal/confirmationModal.service.ts +22 -9
  582. package/src/deploymentStrategy/DeploymentStrategySelector.tsx +1 -2
  583. package/src/deploymentStrategy/deploymentStrategy.module.ts +0 -6
  584. package/src/deploymentStrategy/deploymentStrategy.registry.ts +0 -1
  585. package/src/deploymentStrategy/strategies/PipelineSelector.tsx +1 -1
  586. package/src/diffs/ChangesModal.spec.tsx +34 -0
  587. package/src/diffs/ChangesModal.tsx +8 -8
  588. package/src/diffs/ViewChangesLink.tsx +4 -3
  589. package/src/diffs/index.ts +0 -8
  590. package/src/domain/IStageOrTriggerTypeConfig.ts +0 -3
  591. package/src/domain/IStageTypeConfig.ts +27 -6
  592. package/src/domain/ITask.ts +1 -1
  593. package/src/domain/index.ts +0 -2
  594. package/src/entityTag/EntitySource.tsx +6 -8
  595. package/src/entityTag/EntityTagEditor.tsx +1 -3
  596. package/src/entityTag/EntityTagsReader.ts +4 -6
  597. package/src/entityTag/entityTags.dataSource.ts +48 -53
  598. package/src/entityTag/entityTags.module.ts +1 -16
  599. package/src/entityTag/entityTags.write.service.ts +1 -1
  600. package/src/entityTag/notifications/DataSourceNotifications.tsx +0 -15
  601. package/src/filterModel/FilterCollapse.spec.tsx +33 -0
  602. package/src/filterModel/FilterCollapse.tsx +8 -11
  603. package/src/filterModel/FilterModelService.spec.ts +34 -0
  604. package/src/filterModel/FilterModelService.ts +14 -7
  605. package/src/filterModel/IFilterModel.ts +4 -0
  606. package/src/filterModel/filter.model.service.spec.js +52 -40
  607. package/src/forms/mapEditor/MapPair.tsx +4 -2
  608. package/src/function/CreateFunctionButton.tsx +14 -7
  609. package/src/function/Functions.tsx +1 -3
  610. package/src/function/filter/FunctionFilterService.ts +1 -1
  611. package/src/function/filter/FunctionFilters.tsx +13 -5
  612. package/src/function/function.dataSource.ts +71 -41
  613. package/src/function/function.read.service.ts +3 -12
  614. package/src/function/function.states.ts +7 -10
  615. package/src/function/function.transformer.ts +0 -40
  616. package/src/function/function.write.service.ts +2 -2
  617. package/src/header/SpinnakerHeader.spec.tsx +40 -0
  618. package/src/header/SpinnakerHeader.tsx +47 -43
  619. package/src/header/customBanner/CustomBanner.spec.tsx +8 -2
  620. package/src/header/customBanner/CustomBanner.tsx +10 -7
  621. package/src/healthCounts/healthCounts.less +0 -4
  622. package/src/help/help.contents.ts +36 -0
  623. package/src/history/recentHistory.service.ts +10 -24
  624. package/src/image/image.reader.ts +4 -10
  625. package/src/index.ts +4 -4
  626. package/src/insight/InsightLayout.spec.ts +163 -0
  627. package/src/insight/InsightLayout.tsx +98 -20
  628. package/src/insight/InsightMenu.spec.tsx +21 -13
  629. package/src/insight/InsightMenu.tsx +20 -33
  630. package/src/insight/insight.less +1 -15
  631. package/src/instance/InstanceList.spec.tsx +50 -0
  632. package/src/instance/InstanceList.tsx +17 -12
  633. package/src/instance/InstanceListBody.tsx +27 -19
  634. package/src/instance/InstanceReader.ts +2 -2
  635. package/src/instance/details/InstanceDetailsHeader.tsx +5 -8
  636. package/src/instance/details/InstanceDetailsPane.tsx +3 -4
  637. package/src/instance/details/InstanceLinks.tsx +2 -2
  638. package/src/instance/details/MultipleInstancesDetails.spec.tsx +193 -0
  639. package/src/instance/details/MultipleInstancesDetails.tsx +324 -0
  640. package/src/instance/details/StandaloneInstanceDetails.spec.tsx +43 -0
  641. package/src/instance/details/StandaloneInstanceDetails.tsx +49 -0
  642. package/src/instance/details/console/ConsoleOutputModal.spec.tsx +200 -0
  643. package/src/instance/details/console/ConsoleOutputModal.tsx +20 -2
  644. package/src/instance/details/multipleInstanceServerGroup.less +22 -0
  645. package/src/instance/instance.module.js +1 -23
  646. package/src/instance/instance.states.spec.ts +82 -0
  647. package/src/instance/instance.states.ts +96 -102
  648. package/src/instance/instance.write.service.spec.ts +90 -30
  649. package/src/instance/instance.write.service.ts +81 -29
  650. package/src/instance/instanceSelection.less +1 -3
  651. package/src/instance/instanceType.service.ts +16 -14
  652. package/src/instance/instanceTypeService.spec.ts +18 -59
  653. package/src/loadBalancer/CreateLoadBalancerButton.tsx +11 -26
  654. package/src/loadBalancer/LoadBalancers.tsx +13 -9
  655. package/src/loadBalancer/LoadBalancersTag.spec.tsx +48 -39
  656. package/src/loadBalancer/LoadBalancersTag.tsx +19 -10
  657. package/src/loadBalancer/details/LoadBalancerDetailsWrapper.spec.tsx +78 -0
  658. package/src/loadBalancer/details/LoadBalancerDetailsWrapper.tsx +3 -30
  659. package/src/loadBalancer/details/TargetGroupDetailsWrapper.spec.tsx +50 -0
  660. package/src/loadBalancer/details/TargetGroupDetailsWrapper.tsx +37 -0
  661. package/src/loadBalancer/details/index.ts +1 -0
  662. package/src/loadBalancer/filter/LoadBalancerFilterService.spec.ts +4 -1
  663. package/src/loadBalancer/filter/LoadBalancerFilterService.ts +10 -5
  664. package/src/loadBalancer/filter/LoadBalancerFilters.tsx +13 -5
  665. package/src/loadBalancer/loadBalancer.dataSource.spec.ts +33 -0
  666. package/src/loadBalancer/loadBalancer.dataSource.ts +45 -37
  667. package/src/loadBalancer/loadBalancer.module.ts +1 -8
  668. package/src/loadBalancer/loadBalancer.read.service.spec.ts +56 -0
  669. package/src/loadBalancer/loadBalancer.read.service.ts +7 -18
  670. package/src/loadBalancer/loadBalancer.states.ts +49 -10
  671. package/src/loadBalancer/loadBalancer.transformer.js +28 -36
  672. package/src/loadBalancer/loadBalancer.transformer.spec.ts +91 -0
  673. package/src/loadBalancer/loadBalancer.write.service.ts +2 -2
  674. package/src/loadBalancer/loadBalancerDataUtils.ts +1 -4
  675. package/src/managed/ManagedReader.ts +2 -2
  676. package/src/managed/ManagedWriter.ts +2 -2
  677. package/src/managed/externals/ManagedMenuItem.tsx +1 -2
  678. package/src/managed/externals/ManagedResourceConfig.tsx +1 -10
  679. package/src/managed/externals/ManagedResourceDetailsIndicator.tsx +3 -2
  680. package/src/managed/externals/toggleResourceManagement.tsx +2 -3
  681. package/src/managed/index.ts +0 -2
  682. package/src/managed/managed.dataSource.ts +45 -50
  683. package/src/managed/managed.states.ts +35 -41
  684. package/src/managed/useEnvironmentTypeFromResources.hooks.ts +3 -4
  685. package/src/manifest/ManifestReader.ts +1 -1
  686. package/src/manifest/ManifestWriter.ts +7 -7
  687. package/src/manifest/stage/JobManifestPodLogs.spec.tsx +197 -0
  688. package/src/manifest/stage/JobManifestPodLogs.tsx +61 -11
  689. package/src/modal/index.ts +0 -1
  690. package/src/modal/modals.less +1 -177
  691. package/src/modal/wizard/WizardModal.tsx +2 -0
  692. package/src/modal/wizard/modalWizard.less +0 -1
  693. package/src/naming/nameUtils.ts +1 -5
  694. package/src/navigation/RoutingState.spec.ts +32 -0
  695. package/src/navigation/RoutingState.ts +52 -0
  696. package/src/navigation/UrlBuilder.spec.ts +30 -0
  697. package/src/navigation/UrlBuilder.ts +6 -2
  698. package/src/navigation/coreRoutes.ts +20 -0
  699. package/src/navigation/directRouter.spec.ts +15 -0
  700. package/src/navigation/directRouter.ts +11 -0
  701. package/src/navigation/index.ts +3 -0
  702. package/src/navigation/rootState.registration.spec.ts +65 -0
  703. package/src/navigation/rootState.registration.ts +33 -0
  704. package/src/navigation/routeLifecycles.ts +34 -0
  705. package/src/navigation/router.spec.ts +574 -0
  706. package/src/navigation/router.ts +66 -0
  707. package/src/navigation/routerContext.spec.tsx +121 -0
  708. package/src/navigation/routerContext.tsx +54 -0
  709. package/src/navigation/state.provider.spec.ts +65 -0
  710. package/src/navigation/state.provider.ts +17 -54
  711. package/src/navigation/stateHelper.provider.spec.ts +84 -0
  712. package/src/navigation/stateHelper.provider.ts +46 -19
  713. package/src/navigation/urlParser.ts +0 -4
  714. package/src/network/NetworkReader.ts +1 -1
  715. package/src/notification/AppNotificationsService.ts +2 -2
  716. package/src/notification/NotificationService.ts +1 -1
  717. package/src/notification/index.ts +0 -1
  718. package/src/notification/notification.types.ts +23 -14
  719. package/src/notification/notifications.module.spec.ts +263 -0
  720. package/src/notification/notifications.module.ts +33 -19
  721. package/src/orchestratedItem/orchestratedItem.transformer.spec.ts +50 -0
  722. package/src/orchestratedItem/orchestratedItem.transformer.ts +6 -5
  723. package/src/overrideRegistry/Overridable.spec.tsx +74 -0
  724. package/src/overrideRegistry/Overridable.tsx +1 -36
  725. package/src/overrideRegistry/override.registry.ts +3 -28
  726. package/src/pagerDuty/PageModal.tsx +12 -14
  727. package/src/pagerDuty/Pager.spec.tsx +75 -0
  728. package/src/pagerDuty/Pager.tsx +17 -14
  729. package/src/pagerDuty/PagerDutySelectField.spec.tsx +93 -0
  730. package/src/pagerDuty/PagerDutySelectField.tsx +88 -0
  731. package/src/pagerDuty/index.ts +1 -2
  732. package/src/pagerDuty/pager.states.ts +64 -71
  733. package/src/pagerDuty/pagerDuty.read.service.spec.ts +2 -7
  734. package/src/pagerDuty/pagerDuty.write.service.spec.ts +38 -0
  735. package/src/pagerDuty/pagerDuty.write.service.ts +17 -13
  736. package/src/pipeline/config/CreatePipeline.tsx +5 -5
  737. package/src/pipeline/config/PipelineConfigPage.spec.tsx +1781 -0
  738. package/src/pipeline/config/PipelineConfigPage.tsx +1472 -0
  739. package/src/pipeline/config/PipelineRegistry.spec.ts +294 -246
  740. package/src/pipeline/config/PipelineRegistry.ts +29 -8
  741. package/src/pipeline/config/TargetSelect.tsx +79 -0
  742. package/src/pipeline/config/actions/delete/DeletePipelineModal.tsx +5 -5
  743. package/src/pipeline/config/copyStage/CopyStageModal.tsx +1 -1
  744. package/src/pipeline/config/graph/PipelineGraph.spec.tsx +98 -0
  745. package/src/pipeline/config/graph/PipelineGraph.tsx +55 -1
  746. package/src/pipeline/config/graph/pipelineGraph.less +0 -1
  747. package/src/pipeline/config/graph/pipelineGraph.service.ts +6 -6
  748. package/src/pipeline/config/pipelineConfig.less +21 -19
  749. package/src/pipeline/config/pipelineConfig.module.js +0 -29
  750. package/src/pipeline/config/preconditions/EditPreconditionModal.spec.tsx +78 -0
  751. package/src/pipeline/config/preconditions/EditPreconditionModal.tsx +104 -0
  752. package/src/pipeline/config/preconditions/PreconditionList.spec.tsx +78 -0
  753. package/src/pipeline/config/preconditions/PreconditionList.tsx +111 -0
  754. package/src/pipeline/config/preconditions/PreconditionSelector.spec.tsx +427 -0
  755. package/src/pipeline/config/preconditions/PreconditionSelector.tsx +350 -0
  756. package/src/pipeline/config/preconditions/preconditionTypes.spec.ts +21 -0
  757. package/src/pipeline/config/preconditions/preconditionTypes.ts +31 -0
  758. package/src/pipeline/config/preconditions/types/stageStatus/StageStatusPreconditionConfig.tsx +1 -13
  759. package/src/pipeline/config/services/PipelineConfigService.spec.ts +8 -23
  760. package/src/pipeline/config/services/PipelineConfigService.ts +21 -14
  761. package/src/pipeline/config/stages/StageConfigWrapper.tsx +2 -5
  762. package/src/pipeline/config/stages/StageName.tsx +0 -10
  763. package/src/pipeline/config/stages/applySourceServerGroupCapacity/applySourceServerGroupCapacityStage.module.ts +9 -12
  764. package/src/pipeline/config/stages/bake/BakeryReader.ts +6 -7
  765. package/src/pipeline/config/stages/bake/bakeStage.js +14 -24
  766. package/src/pipeline/config/stages/bake/bakeStage.spec.ts +17 -0
  767. package/src/pipeline/config/stages/bake/bakeStage.transformer.js +20 -26
  768. package/src/pipeline/config/stages/bake/bakeStage.transformer.spec.js +2 -10
  769. package/src/pipeline/config/stages/bakeManifest/BakeManifestConfig.tsx +14 -1
  770. package/src/pipeline/config/stages/bakeManifest/helm/BakeHelmConfigForm.spec.tsx +0 -5
  771. package/src/pipeline/config/stages/bakeManifest/helmfile/BakeHelmfileConfigForm.spec.tsx +0 -5
  772. package/src/pipeline/config/stages/bakeManifest/helmfile/BakeHelmfileConfigForm.tsx +101 -0
  773. package/src/pipeline/config/stages/baseProviderStage/BaseProviderStageConfig.spec.tsx +120 -0
  774. package/src/pipeline/config/stages/baseProviderStage/BaseProviderStageConfig.tsx +63 -0
  775. package/src/pipeline/config/stages/checkPreconditions/CheckPreconditionsStageConfig.spec.tsx +73 -0
  776. package/src/pipeline/config/stages/checkPreconditions/CheckPreconditionsStageConfig.tsx +20 -0
  777. package/src/pipeline/config/stages/checkPreconditions/checkPreconditionsStage.spec.ts +28 -0
  778. package/src/pipeline/config/stages/checkPreconditions/checkPreconditionsStage.ts +12 -26
  779. package/src/pipeline/config/stages/cloneServerGroup/CloneServerGroupExecutionDetails.spec.tsx +37 -0
  780. package/src/pipeline/config/stages/cloneServerGroup/CloneServerGroupExecutionDetails.tsx +12 -7
  781. package/src/pipeline/config/stages/cloneServerGroup/cloneServerGroupStage.module.ts +13 -16
  782. package/src/pipeline/config/stages/common/ExecutionBarLabel.spec.tsx +51 -0
  783. package/src/pipeline/config/stages/common/ExecutionBarLabel.tsx +22 -12
  784. package/src/pipeline/config/stages/common/NoConfigurationStageConfig.tsx +5 -0
  785. package/src/pipeline/config/stages/common/StepExecutionDetails.spec.tsx +38 -0
  786. package/src/pipeline/config/stages/common/StepExecutionDetails.tsx +33 -14
  787. package/src/pipeline/config/stages/common/index.ts +1 -0
  788. package/src/pipeline/config/stages/createLoadBalancer/CreateLoadBalancerExecutionDetails.spec.ts +86 -0
  789. package/src/pipeline/config/stages/createLoadBalancer/CreateLoadBalancerExecutionDetails.tsx +114 -0
  790. package/src/pipeline/config/stages/createLoadBalancer/CreateLoadBalancerStageConfig.spec.tsx +128 -0
  791. package/src/pipeline/config/stages/createLoadBalancer/CreateLoadBalancerStageConfig.tsx +187 -0
  792. package/src/pipeline/config/stages/createLoadBalancer/createLoadBalancerStage.js +17 -103
  793. package/src/pipeline/config/stages/createLoadBalancer/createLoadBalancerStage.spec.js +99 -88
  794. package/src/pipeline/config/stages/createLoadBalancer/openLoadBalancerModal.ts +27 -0
  795. package/src/pipeline/config/stages/deploy/DeployChangesExecutionDetails.spec.tsx +165 -0
  796. package/src/pipeline/config/stages/deploy/DeployExecutionDetails.spec.ts +202 -0
  797. package/src/pipeline/config/stages/deploy/DeployExecutionDetails.tsx +402 -0
  798. package/src/pipeline/config/stages/deploy/DeployStageConfig.spec.tsx +76 -0
  799. package/src/pipeline/config/stages/deploy/DeployStageConfig.tsx +431 -0
  800. package/src/pipeline/config/stages/deploy/deployStage.transformer.js +45 -56
  801. package/src/pipeline/config/stages/deploy/deployStage.ts +69 -0
  802. package/src/pipeline/config/stages/deployService/deployServiceStage.ts +6 -3
  803. package/src/pipeline/config/stages/destroyAsg/destroyAsgStage.ts +12 -14
  804. package/src/pipeline/config/stages/destroyService/destroyServiceStage.ts +6 -3
  805. package/src/pipeline/config/stages/disableAsg/disableAsgStage.module.ts +12 -14
  806. package/src/pipeline/config/stages/disableCluster/disableClusterStage.ts +13 -14
  807. package/src/pipeline/config/stages/enableAsg/enableAsgStage.ts +12 -14
  808. package/src/pipeline/config/stages/evaluateArtifacts/EvaluateArtifactsExecutionDetails.tsx +21 -0
  809. package/src/pipeline/config/stages/evaluateArtifacts/EvaluateArtifactsStage.less +44 -0
  810. package/src/pipeline/config/stages/evaluateArtifacts/EvaluateArtifactsStageConfig.tsx +23 -0
  811. package/src/pipeline/config/stages/evaluateArtifacts/EvaluateArtifactsStageForm.tsx +64 -0
  812. package/src/pipeline/config/stages/evaluateArtifacts/EvaluateArtifactsStageModal.tsx +100 -0
  813. package/src/pipeline/config/stages/evaluateArtifacts/evaluateArtifactsStage.spec.ts +35 -0
  814. package/src/pipeline/config/stages/evaluateArtifacts/evaluateArtifactsStage.ts +18 -0
  815. package/src/pipeline/config/stages/evaluateVariables/EvaluateVariablesStageConfig.tsx +1 -4
  816. package/src/pipeline/config/stages/evaluateVariables/ExecutionAndStagePicker.tsx +2 -2
  817. package/src/pipeline/config/stages/executionWindows/ExecutionWindowActions.tsx +5 -2
  818. package/src/pipeline/config/stages/executionWindows/executionWindows.less +0 -1
  819. package/src/pipeline/config/stages/executionWindows/executionWindowsStage.ts +6 -3
  820. package/src/pipeline/config/stages/findAmi/findAmiStage.ts +11 -13
  821. package/src/pipeline/config/stages/findArtifactFromExecution/FindArtifactFromExecutionStageConfig.tsx +160 -0
  822. package/src/pipeline/config/stages/findArtifactFromExecution/findArtifactFromExecutionStage.spec.ts +35 -0
  823. package/src/pipeline/config/stages/findArtifactFromExecution/findArtifactFromExecutionStage.ts +18 -27
  824. package/src/pipeline/config/stages/findImageFromTags/findImageFromTagsStage.js +10 -12
  825. package/src/pipeline/config/stages/group/GroupExecutionLabel.tsx +5 -2
  826. package/src/pipeline/config/stages/group/groupStage.spec.ts +20 -0
  827. package/src/pipeline/config/stages/group/groupStage.ts +14 -22
  828. package/src/pipeline/config/stages/jenkins/AddCiBuildParameterModal.tsx +80 -0
  829. package/src/pipeline/config/stages/jenkins/CiBuildExecutionDetails.spec.tsx +31 -0
  830. package/src/pipeline/config/stages/jenkins/CiBuildExecutionDetails.tsx +112 -0
  831. package/src/pipeline/config/stages/jenkins/CiBuildStageConfig.spec.tsx +245 -0
  832. package/src/pipeline/config/stages/jenkins/CiBuildStageConfig.tsx +473 -0
  833. package/src/pipeline/config/stages/jenkins/JenkinsExecutionDetails.tsx +9 -0
  834. package/src/pipeline/config/stages/jenkins/JenkinsStageConfig.tsx +20 -0
  835. package/src/pipeline/config/stages/jenkins/jenkinsStage.spec.js +37 -0
  836. package/src/pipeline/config/stages/jenkins/jenkinsStage.ts +30 -0
  837. package/src/pipeline/config/stages/manualJudgment/ManualJudgmentApproval.tsx +25 -5
  838. package/src/pipeline/config/stages/manualJudgment/ManualJudgmentStageConfig.spec.tsx +127 -0
  839. package/src/pipeline/config/stages/manualJudgment/ManualJudgmentStageConfig.tsx +151 -0
  840. package/src/pipeline/config/stages/manualJudgment/manualJudgment.service.spec.ts +40 -86
  841. package/src/pipeline/config/stages/manualJudgment/manualJudgment.service.ts +5 -11
  842. package/src/pipeline/config/stages/manualJudgment/manualJudgmentStage.js +19 -76
  843. package/src/pipeline/config/stages/manualJudgment/manualJudgmentStage.spec.ts +35 -0
  844. package/src/pipeline/config/stages/monitorPipeline/monitorPipelineStage.js +12 -16
  845. package/src/pipeline/config/stages/monitoreddeploy/DeploymentMonitorReader.ts +1 -1
  846. package/src/pipeline/config/stages/monitoreddeploy/evaluateHealthStage.ts +9 -10
  847. package/src/pipeline/config/stages/monitoreddeploy/notifyDeployStartingStage.ts +9 -10
  848. package/src/pipeline/config/stages/pipeline/PipelineStageConfig.spec.tsx +109 -0
  849. package/src/pipeline/config/stages/pipeline/PipelineStageConfig.tsx +351 -0
  850. package/src/pipeline/config/stages/pipeline/pipelineStage.js +14 -176
  851. package/src/pipeline/config/stages/pipeline/pipelineStage.spec.ts +30 -0
  852. package/src/pipeline/config/stages/preconfiguredJob/preconfiguredJob.reader.ts +1 -1
  853. package/src/pipeline/config/stages/preconfiguredJob/preconfiguredJobStage.spec.ts +49 -0
  854. package/src/pipeline/config/stages/preconfiguredJob/preconfiguredJobStage.ts +3 -7
  855. package/src/pipeline/config/stages/producesArtifacts/ProducesArtifacts.tsx +0 -13
  856. package/src/pipeline/config/stages/resizeAsg/ResizeAsgExecutionDetails.tsx +57 -0
  857. package/src/pipeline/config/stages/resizeAsg/resizeAsgStage.ts +13 -14
  858. package/src/pipeline/config/stages/rollbackCluster/rollbackClusterStage.ts +12 -13
  859. package/src/pipeline/config/stages/runJob/runJobStage.js +11 -14
  860. package/src/pipeline/config/stages/runJob/runJobStage.spec.ts +15 -0
  861. package/src/pipeline/config/stages/runMultiplePipelines/InputYamlForm.tsx +33 -0
  862. package/src/pipeline/config/stages/runMultiplePipelines/RunMultiplePipelinesStageConfig.tsx +13 -0
  863. package/src/pipeline/config/stages/runMultiplePipelines/RunMultiplePipelinesStageExecutionDetails.tsx +230 -0
  864. package/src/pipeline/config/stages/runMultiplePipelines/modals/CancelAllModal.tsx +83 -0
  865. package/src/pipeline/config/stages/runMultiplePipelines/modals/CancelModal.tsx +92 -0
  866. package/src/pipeline/config/stages/runMultiplePipelines/modals/RollbackAllAppsModal.tsx +177 -0
  867. package/src/pipeline/config/stages/runMultiplePipelines/modals/RollbackModal.tsx +185 -0
  868. package/src/pipeline/config/stages/runMultiplePipelines/runMultiplePipelinesStage.ts +12 -0
  869. package/src/pipeline/config/stages/scaleDownCluster/scaleDownClusterStage.ts +13 -14
  870. package/src/pipeline/config/stages/script/ScriptExecutionDetails.tsx +1 -1
  871. package/src/pipeline/config/stages/script/scriptStage.spec.ts +68 -0
  872. package/src/pipeline/config/stages/script/scriptStage.ts +8 -5
  873. package/src/pipeline/config/stages/shareService/shareServiceStage.ts +6 -3
  874. package/src/pipeline/config/stages/shrinkCluster/shrinkClusterStage.ts +12 -14
  875. package/src/pipeline/config/stages/stageComponentRegistration.spec.ts +67 -0
  876. package/src/pipeline/config/stages/tagImage/tagImageStage.js +10 -11
  877. package/src/pipeline/config/stages/templates/index.ts +1 -3
  878. package/src/pipeline/config/stages/travis/TravisExecutionDetails.tsx +9 -0
  879. package/src/pipeline/config/stages/travis/TravisStageConfig.tsx +32 -0
  880. package/src/pipeline/config/stages/travis/travisStage.spec.ts +36 -0
  881. package/src/pipeline/config/stages/travis/travisStage.ts +26 -178
  882. package/src/pipeline/config/stages/unmatchedStageTypeStage/UnmatchedStageTypeStageConfig.spec.tsx +85 -0
  883. package/src/pipeline/config/stages/unmatchedStageTypeStage/UnmatchedStageTypeStageConfig.tsx +85 -0
  884. package/src/pipeline/config/stages/unmatchedStageTypeStage/unmatchedStageTypeStage.ts +8 -11
  885. package/src/pipeline/config/stages/unshareService/unshareServiceStage.ts +6 -3
  886. package/src/pipeline/config/stages/wait/SkipWait.tsx +5 -3
  887. package/src/pipeline/config/stages/waitForCondition/SkipConditionWait.tsx +5 -3
  888. package/src/pipeline/config/stages/waitForCondition/waitForConditionStage.ts +6 -3
  889. package/src/pipeline/config/stages/waitForParentTasks/WaitForParentTasksExecutionDetails.tsx +29 -0
  890. package/src/pipeline/config/stages/waitForParentTasks/waitForParentTasks.js +12 -22
  891. package/src/pipeline/config/stages/waitForParentTasks/waitForParentTasks.transformer.js +31 -49
  892. package/src/pipeline/config/stages/webhook/WebhookExecutionDetails.spec.tsx +57 -0
  893. package/src/pipeline/config/stages/webhook/WebhookExecutionDetails.tsx +130 -0
  894. package/src/pipeline/config/stages/webhook/WebhookStageConfig.tsx +635 -0
  895. package/src/pipeline/config/stages/webhook/webhookStage.spec.ts +98 -0
  896. package/src/pipeline/config/stages/webhook/webhookStage.ts +55 -232
  897. package/src/pipeline/config/targetSelect.component.spec.tsx +61 -0
  898. package/src/pipeline/config/templates/ConfigurePipelineTemplateModal.spec.tsx +497 -0
  899. package/src/pipeline/config/templates/ConfigurePipelineTemplateModal.tsx +268 -0
  900. package/src/pipeline/config/templates/PipelineTemplateConfigurationAdapters.spec.ts +263 -0
  901. package/src/pipeline/config/templates/PipelineTemplateConfigurationAdapters.ts +199 -0
  902. package/src/pipeline/config/templates/PipelineTemplateReader.ts +6 -8
  903. package/src/pipeline/config/templates/PipelineTemplateWriter.ts +3 -7
  904. package/src/pipeline/config/templates/Variable.spec.tsx +0 -7
  905. package/src/pipeline/config/templates/index.ts +2 -0
  906. package/src/pipeline/config/templates/templateVariableRegistrations.ts +9 -0
  907. package/src/pipeline/config/templates/v2/PipelineTemplatesV2.spec.tsx +57 -0
  908. package/src/pipeline/config/templates/v2/PipelineTemplatesV2.tsx +9 -7
  909. package/src/pipeline/config/templates/v2/createPipelineFromTemplate/CreatePipelineFromTemplate.spec.tsx +28 -0
  910. package/src/pipeline/config/templates/v2/createPipelineFromTemplate/CreatePipelineFromTemplate.tsx +11 -5
  911. package/src/pipeline/config/templates/v2/pipelineTemplateV2.states.ts +27 -34
  912. package/src/pipeline/config/triggers/Triggers.tsx +1 -2
  913. package/src/pipeline/config/triggers/artifactory/artifactoryReader.service.ts +1 -1
  914. package/src/pipeline/config/triggers/artifacts/ArtifactService.ts +3 -3
  915. package/src/pipeline/config/triggers/artifacts/bitbucket/BitbucketArtifactEditor.tsx +228 -18
  916. package/src/pipeline/config/triggers/artifacts/github/GithubArtifactEditor.tsx +112 -9
  917. package/src/pipeline/config/triggers/artifacts/gitlab/GitlabArtifactEditor.tsx +125 -11
  918. package/src/pipeline/config/triggers/artifacts/helm-image/HelmImageArtifactEditor.tsx +58 -142
  919. package/src/pipeline/config/triggers/baseBuild/BaseBuildTriggerTemplate.tsx +2 -3
  920. package/src/pipeline/config/triggers/concourse/concourse.service.ts +4 -4
  921. package/src/pipeline/config/triggers/helm/HelmManualTriggerConfig.tsx +2 -3
  922. package/src/pipeline/config/triggers/nexus/nexusReader.service.ts +1 -1
  923. package/src/pipeline/config/triggers/pipeline/PipelineTriggerTemplate.spec.tsx +94 -6
  924. package/src/pipeline/config/triggers/pipeline/PipelineTriggerTemplate.tsx +13 -7
  925. package/src/pipeline/config/validation/PipelineConfigValidator.ts +33 -35
  926. package/src/pipeline/config/validation/pipelineConfig.validator.spec.ts +111 -110
  927. package/src/pipeline/config/validation/stageOrTriggerBeforeType.validator.ts +10 -18
  928. package/src/pipeline/create/CreatePipelineButton.tsx +14 -7
  929. package/src/pipeline/create/CreatePipelineModal.spec.tsx +194 -238
  930. package/src/pipeline/create/CreatePipelineModal.tsx +6 -6
  931. package/src/pipeline/details/ExecutionDetailsSectionNav.tsx +22 -24
  932. package/src/pipeline/details/SingleExecutionDetails.tsx +29 -14
  933. package/src/pipeline/details/StageExecutionDetails.tsx +58 -37
  934. package/src/pipeline/details/StageFailureMessage.spec.tsx +21 -0
  935. package/src/pipeline/details/StageFailureMessage.tsx +27 -14
  936. package/src/pipeline/details/StageSummary.tsx +2 -12
  937. package/src/pipeline/details/StageSummaryWrapper.tsx +217 -1
  938. package/src/pipeline/details/StepDetails.tsx +4 -18
  939. package/src/pipeline/details/StepExecutionDetailsWrapper.tsx +40 -3
  940. package/src/pipeline/details/executionDetailsSection.service.spec.ts +48 -30
  941. package/src/pipeline/details/executionDetailsSection.service.ts +10 -19
  942. package/src/pipeline/details/reactBridgeWrappers.spec.tsx +411 -0
  943. package/src/pipeline/executionBuild/ExecutionBuildTitle.tsx +0 -11
  944. package/src/pipeline/executionBuild/buildDisplayName.filter.ts +0 -5
  945. package/src/pipeline/executions/ExecutionNotFound.tsx +2 -2
  946. package/src/pipeline/executions/Executions.spec.tsx +129 -32
  947. package/src/pipeline/executions/Executions.tsx +53 -36
  948. package/src/pipeline/executions/execution/Execution.spec.tsx +120 -0
  949. package/src/pipeline/executions/execution/Execution.tsx +46 -35
  950. package/src/pipeline/executions/execution/ExecutionPermalink.tsx +5 -3
  951. package/src/pipeline/executions/execution/execution.less +0 -4
  952. package/src/pipeline/executions/executionGroup/ExecutionGroup.spec.tsx +122 -0
  953. package/src/pipeline/executions/executionGroup/ExecutionGroup.tsx +46 -31
  954. package/src/pipeline/executions/executionGroup/ExecutionGroups.spec.tsx +88 -0
  955. package/src/pipeline/executions/executionGroup/ExecutionGroups.tsx +17 -12
  956. package/src/pipeline/filter/ExecutionFilterModel.ts +9 -7
  957. package/src/pipeline/filter/ExecutionFilters.tsx +14 -7
  958. package/src/pipeline/filter/executionFilter.service.spec.ts +16 -1
  959. package/src/pipeline/filter/executionFilter.service.ts +6 -4
  960. package/src/pipeline/filter/executionFilters.less +0 -1
  961. package/src/pipeline/index.ts +2 -0
  962. package/src/pipeline/manualExecution/ManualPipelineExecutionModal.tsx +3 -2
  963. package/src/pipeline/manualExecution/StageManualComponents.tsx +1 -4
  964. package/src/pipeline/pipeline.dataSource.js +104 -102
  965. package/src/pipeline/pipeline.dataSource.spec.ts +77 -66
  966. package/src/pipeline/pipeline.module.ts +36 -108
  967. package/src/pipeline/pipeline.states.spec.ts +143 -0
  968. package/src/pipeline/pipeline.states.ts +59 -52
  969. package/src/pipeline/service/execution.service.spec.ts +78 -49
  970. package/src/pipeline/service/execution.service.ts +30 -45
  971. package/src/pipeline/status/Artifact.spec.tsx +0 -5
  972. package/src/pipeline/status/ArtifactList.spec.tsx +0 -5
  973. package/src/pipeline/status/ExecutionParameters.spec.tsx +0 -5
  974. package/src/pipeline/status/ResolvedArtifactList.spec.tsx +0 -5
  975. package/src/pipeline/triggers/useQuietPeriod.hook.ts +1 -1
  976. package/src/plugins/deck.plugin.spec.ts +99 -16
  977. package/src/plugins/deck.plugin.ts +41 -13
  978. package/src/plugins/plugin.module.spec.ts +168 -0
  979. package/src/plugins/plugin.module.ts +30 -32
  980. package/src/plugins/plugin.registry.spec.ts +256 -23
  981. package/src/plugins/plugin.registry.ts +80 -45
  982. package/src/presentation/ReactModal.spec.tsx +304 -1
  983. package/src/presentation/ReactModal.tsx +105 -9
  984. package/src/presentation/SpinErrorBoundary.tsx +19 -24
  985. package/src/presentation/TetheredSelect.spec.tsx +20 -0
  986. package/src/presentation/TetheredSelect.tsx +1 -1
  987. package/src/presentation/anyFieldFilter/anyField.filter.ts +1 -12
  988. package/src/presentation/details.less +0 -5
  989. package/src/presentation/filterHelpers.spec.ts +18 -0
  990. package/src/presentation/forms/inputs/DayPickerInput.less +3 -2
  991. package/src/presentation/forms/inputs/ReactSelectInput.spec.tsx +75 -0
  992. package/src/presentation/forms/inputs/ReactSelectInput.tsx +6 -7
  993. package/src/presentation/forms/inputs/interface.ts +1 -0
  994. package/src/presentation/forms/inputs/utils.spec.ts +61 -0
  995. package/src/presentation/forms/inputs/utils.ts +4 -3
  996. package/src/presentation/index.ts +0 -1
  997. package/src/presentation/main.less +18 -116
  998. package/src/presentation/modal/ErrorModalService.tsx +39 -0
  999. package/src/presentation/modal/index.ts +1 -0
  1000. package/src/presentation/modal/showModal.tsx +1 -4
  1001. package/src/presentation/navigation/PageNavigator.spec.tsx +76 -0
  1002. package/src/presentation/navigation/PageNavigator.tsx +12 -7
  1003. package/src/presentation/navigation/pageNavigation.less +28 -2
  1004. package/src/presentation/percent.filter.js +3 -9
  1005. package/src/presentation/replace.filter.ts +5 -18
  1006. package/src/presentation/robotToHumanFilter/robotToHuman.filter.ts +0 -5
  1007. package/src/projects/ProjectHeader.spec.tsx +48 -0
  1008. package/src/projects/ProjectHeader.tsx +8 -4
  1009. package/src/projects/Projects.spec.tsx +16 -15
  1010. package/src/projects/configure/ConfigureProjectModal.tsx +2 -2
  1011. package/src/projects/dashboard/ProjectCluster.spec.tsx +156 -0
  1012. package/src/projects/dashboard/ProjectCluster.tsx +181 -0
  1013. package/src/projects/dashboard/ProjectClusterModel.spec.ts +144 -0
  1014. package/src/projects/dashboard/ProjectClusterModel.ts +202 -0
  1015. package/src/projects/dashboard/ProjectDashboard.spec.tsx +166 -0
  1016. package/src/projects/dashboard/ProjectDashboard.tsx +223 -0
  1017. package/src/projects/dashboard/RegionFilter.tsx +64 -0
  1018. package/src/projects/dashboard/cluster/projectCluster.less +1 -1
  1019. package/src/projects/dashboard/pipeline/ProjectPipeline.tsx +12 -5
  1020. package/src/projects/dashboard/pipeline/projectPipeline.less +1 -1
  1021. package/src/projects/dashboard/regionFilter/regionFilter.component.less +3 -1
  1022. package/src/projects/projects.states.ts +8 -20
  1023. package/src/projects/service/ProjectReader.ts +3 -3
  1024. package/src/projects/service/ProjectWriter.ts +2 -2
  1025. package/src/pubsub/PubsubSubscriptionReader.ts +1 -1
  1026. package/src/reactShims/index.ts +0 -6
  1027. package/src/region/RegionSelectField.spec.tsx +32 -0
  1028. package/src/region/RegionSelectField.tsx +0 -3
  1029. package/src/retry/retry.service.spec.ts +104 -34
  1030. package/src/retry/retry.service.ts +53 -7
  1031. package/src/scheduler/SchedulerFactory.spec.ts +143 -14
  1032. package/src/scheduler/SchedulerFactory.ts +76 -18
  1033. package/src/search/global/GlobalSearch.tsx +15 -9
  1034. package/src/search/global/globalSearch.less +0 -4
  1035. package/src/search/global/utils.spec.ts +22 -0
  1036. package/src/search/infrastructure/ProjectSummaryPod.tsx +0 -2
  1037. package/src/search/infrastructure/RecentlyViewedItems.tsx +5 -5
  1038. package/src/search/infrastructure/SearchResultPodItem.tsx +0 -2
  1039. package/src/search/infrastructure/SearchResultPods.spec.tsx +23 -0
  1040. package/src/search/infrastructure/SearchResultPods.tsx +1 -1
  1041. package/src/search/infrastructure/SearchV1.spec.tsx +237 -0
  1042. package/src/search/infrastructure/SearchV1.tsx +289 -0
  1043. package/src/search/infrastructure/SearchV2.spec.tsx +34 -0
  1044. package/src/search/infrastructure/SearchV2.tsx +17 -11
  1045. package/src/search/infrastructure/infrastructure.states.spec.ts +55 -0
  1046. package/src/search/infrastructure/infrastructure.states.ts +40 -39
  1047. package/src/search/infrastructure/infrastructureSearch.service.ts +15 -24
  1048. package/src/search/infrastructure/infrastructureSearchV2.service.spec.ts +23 -0
  1049. package/src/search/infrastructure/infrastructureSearchV2.service.ts +6 -6
  1050. package/src/search/search.service.ts +4 -6
  1051. package/src/search/searchRank.filter.ts +0 -5
  1052. package/src/search/searchResult/SearchResultTabs.tsx +0 -2
  1053. package/src/search/widgets/searchFilterTypeRegistrations.ts +7 -0
  1054. package/src/securityGroup/CreateSecurityGroupButton.spec.tsx +117 -0
  1055. package/src/securityGroup/CreateSecurityGroupButton.tsx +12 -34
  1056. package/src/securityGroup/SecurityGroup.tsx +3 -3
  1057. package/src/securityGroup/SecurityGroupWriter.ts +4 -4
  1058. package/src/securityGroup/SecurityGroups.tsx +1 -1
  1059. package/src/securityGroup/StandaloneSecurityGroupDetails.spec.tsx +47 -0
  1060. package/src/securityGroup/StandaloneSecurityGroupDetails.tsx +45 -0
  1061. package/src/securityGroup/filter/SecurityGroupFilterModel.ts +0 -4
  1062. package/src/securityGroup/filter/SecurityGroupFilterService.ts +1 -1
  1063. package/src/securityGroup/securityGroup.dataSource.ts +37 -36
  1064. package/src/securityGroup/securityGroup.module.js +1 -13
  1065. package/src/securityGroup/securityGroup.states.spec.ts +56 -0
  1066. package/src/securityGroup/securityGroup.states.ts +70 -74
  1067. package/src/securityGroup/securityGroupReader.service.spec.ts +48 -54
  1068. package/src/securityGroup/securityGroupReader.service.ts +19 -31
  1069. package/src/securityGroup/securityGroupTransformer.service.ts +6 -13
  1070. package/src/serverGroup/ServerGroup.router.spec.tsx +81 -0
  1071. package/src/serverGroup/ServerGroup.tsx +11 -10
  1072. package/src/serverGroup/configure/common/DeployInitializer.tsx +31 -10
  1073. package/src/serverGroup/configure/common/InstanceArchetypeSelector.spec.tsx +345 -0
  1074. package/src/serverGroup/configure/common/InstanceArchetypeSelector.tsx +171 -1
  1075. package/src/serverGroup/configure/common/InstanceTypeSelector.spec.tsx +143 -0
  1076. package/src/serverGroup/configure/common/InstanceTypeSelector.tsx +179 -0
  1077. package/src/serverGroup/configure/common/index.ts +2 -2
  1078. package/src/serverGroup/configure/common/serverGroupCommandBuilder.service.ts +2 -11
  1079. package/src/serverGroup/configure/common/serverGroupCommandRegistry.provider.ts +1 -9
  1080. package/src/serverGroup/details/MultipleServerGroupsDetails.spec.tsx +176 -0
  1081. package/src/serverGroup/details/MultipleServerGroupsDetails.tsx +213 -0
  1082. package/src/serverGroup/details/ServerGroupDetails.tsx +52 -24
  1083. package/src/serverGroup/details/ServerGroupDetailsWrapper.spec.tsx +183 -0
  1084. package/src/serverGroup/details/ServerGroupDetailsWrapper.tsx +18 -41
  1085. package/src/serverGroup/details/multipleServerGroup.component.less +1 -1
  1086. package/src/serverGroup/index.ts +0 -1
  1087. package/src/serverGroup/metrics/CloudMetricsReader.ts +2 -2
  1088. package/src/serverGroup/serverGroup.dataSource.ts +46 -50
  1089. package/src/serverGroup/serverGroup.module.ts +1 -28
  1090. package/src/serverGroup/serverGroup.states.spec.ts +73 -0
  1091. package/src/serverGroup/serverGroup.states.ts +73 -70
  1092. package/src/serverGroup/serverGroup.transformer.js +0 -31
  1093. package/src/serverGroup/serverGroupReader.service.ts +3 -5
  1094. package/src/serverGroup/serverGroupWriter.service.spec.ts +50 -17
  1095. package/src/serverGroup/serverGroupWriter.service.ts +9 -20
  1096. package/src/serverGroupManager/ServerGroupManager.spec.tsx +53 -0
  1097. package/src/serverGroupManager/ServerGroupManager.tsx +24 -16
  1098. package/src/serverGroupManager/ServerGroupManagerHeading.tsx +9 -2
  1099. package/src/serverGroupManager/ServerGroupManagerReader.ts +1 -1
  1100. package/src/serverGroupManager/ServerGroupManagerTag.tsx +9 -5
  1101. package/src/serverGroupManager/serverGroupManager.dataSource.ts +19 -24
  1102. package/src/serverGroupManager/serverGroupManager.states.ts +33 -35
  1103. package/src/serviceAccount/ServiceAccountReader.ts +4 -6
  1104. package/src/services/ServicesReader.ts +1 -1
  1105. package/src/slack/SlackReader.ts +1 -1
  1106. package/src/slack/index.ts +0 -1
  1107. package/src/snapshot/SnapshotReader.ts +1 -1
  1108. package/src/snapshot/SnapshotWriter.ts +4 -5
  1109. package/src/storage/StorageAccountReader.ts +1 -1
  1110. package/src/styleguide/StyleguideRoute.spec.tsx +15 -0
  1111. package/src/styleguide/StyleguideRoute.tsx +9 -0
  1112. package/src/styleguide/styleguide.states.spec.ts +11 -0
  1113. package/src/styleguide/styleguide.states.ts +20 -23
  1114. package/src/subnet/subnet.read.service.spec.ts +2 -17
  1115. package/src/subnet/subnet.read.service.ts +5 -5
  1116. package/src/task/TaskNotFound.tsx +2 -2
  1117. package/src/task/TaskProgressBar.spec.tsx +15 -0
  1118. package/src/task/TaskProgressBar.tsx +4 -2
  1119. package/src/task/Tasks.spec.tsx +105 -0
  1120. package/src/task/Tasks.tsx +482 -0
  1121. package/src/task/TrafficGuardHelperLink.tsx +15 -18
  1122. package/src/task/displayableTasks.filter.ts +0 -5
  1123. package/src/task/modal/TaskMonitorModal.tsx +1 -3
  1124. package/src/task/modal/TaskReason.tsx +5 -2
  1125. package/src/task/monitor/TaskMonitor.ts +70 -60
  1126. package/src/task/monitor/TaskMonitorError.tsx +9 -7
  1127. package/src/task/monitor/TaskMonitorStatus.tsx +3 -2
  1128. package/src/task/monitor/TaskMonitorWrapper.spec.tsx +39 -0
  1129. package/src/task/monitor/TaskMonitorWrapper.tsx +6 -1
  1130. package/src/task/monitor/taskMonitor.spec.ts +268 -38
  1131. package/src/task/monitor/useTaskMonitor.ts +1 -2
  1132. package/src/task/task.dataSource.js +64 -62
  1133. package/src/task/task.dataSource.spec.ts +40 -35
  1134. package/src/task/task.read.service.spec.js +120 -24
  1135. package/src/task/task.read.service.ts +51 -17
  1136. package/src/task/task.states.spec.ts +44 -0
  1137. package/src/task/task.states.ts +63 -65
  1138. package/src/task/task.write.service.spec.ts +45 -12
  1139. package/src/task/task.write.service.ts +2 -2
  1140. package/src/task/taskExecutor.ts +6 -6
  1141. package/src/task/verification/UserVerification.spec.tsx +46 -0
  1142. package/src/task/verification/UserVerification.tsx +3 -1
  1143. package/src/task/verification/userVerification.less +22 -0
  1144. package/src/types/index.d.ts +0 -1
  1145. package/src/utils/RenderWhenVisible.spec.tsx +31 -0
  1146. package/src/utils/RenderWhenVisible.tsx +11 -1
  1147. package/src/utils/cancellableTimeout.spec.ts +105 -0
  1148. package/src/utils/cancellableTimeout.ts +75 -0
  1149. package/src/utils/consoleDebug.ts +2 -19
  1150. package/src/utils/deferred.spec.ts +37 -0
  1151. package/src/utils/deferred.ts +16 -0
  1152. package/src/utils/diagnosticLogger.spec.ts +18 -0
  1153. package/src/utils/diagnosticLogger.ts +16 -0
  1154. package/src/utils/index.ts +5 -6
  1155. package/src/utils/interpolate.spec.ts +15 -0
  1156. package/src/utils/interpolate.ts +13 -0
  1157. package/src/utils/json/JsonUtils.ts +5 -14
  1158. package/src/utils/json/json.utility.service.spec.ts +20 -0
  1159. package/src/utils/nativePromiseService.spec.ts +66 -0
  1160. package/src/utils/nativePromiseService.ts +31 -0
  1161. package/src/utils/q.ts +5 -4
  1162. package/src/utils/retryablePromise.ts +22 -9
  1163. package/src/utils/scrollTo/scrollTo.service.spec.ts +37 -0
  1164. package/src/utils/scrollTo/scrollTo.service.ts +1 -2
  1165. package/src/utils/timeFormatters.spec.ts +25 -47
  1166. package/src/utils/timeFormatters.ts +0 -14
  1167. package/src/utils/uuid.service.ts +0 -1
  1168. package/src/widgets/AccountRegionClusterSelector.spec.tsx +223 -0
  1169. package/src/widgets/AccountRegionClusterSelector.tsx +192 -0
  1170. package/src/widgets/ScopeClusterSelector.spec.tsx +33 -0
  1171. package/src/widgets/ScopeClusterSelector.tsx +5 -5
  1172. package/src/widgets/cluster/ClusterMatches.tsx +5 -1
  1173. package/src/widgets/index.ts +1 -1
  1174. package/src/widgets/spelText/SpelAutocompleteService.spec.ts +4 -5
  1175. package/src/widgets/spelText/SpelAutocompleteService.ts +5 -8
  1176. package/src/widgets/spelText/SpelText.spec.tsx +38 -0
  1177. package/src/widgets/spelText/SpelText.tsx +18 -10
  1178. package/src/widgets/spelText/spel.less +0 -9
  1179. package/src/widgets/spinners/Spinner.spec.tsx +13 -0
  1180. package/src/widgets/spinners/Spinner.tsx +10 -8
  1181. package/src/yamlEditor/YamlEditor.tsx +2 -2
  1182. package/src/yamlEditor/index.ts +0 -1
  1183. package/dist/account/account.module.d.ts +0 -2
  1184. package/dist/account/accountSelect.wrapper.d.ts +0 -1
  1185. package/dist/account/accountSelectField.component.d.ts +0 -1
  1186. package/dist/account/accountTag.component.d.ts +0 -4
  1187. package/dist/account/collapsibleAccountTag.directive.d.ts +0 -2
  1188. package/dist/account/providerToggles.directive.d.ts +0 -2
  1189. package/dist/analytics/GoogleAnalyticsInitializer.d.ts +0 -2
  1190. package/dist/analytics/angulartics.module.d.ts +0 -2
  1191. package/dist/api/network.interceptor.d.ts +0 -24
  1192. package/dist/apitoken/apitoken.module.d.ts +0 -1
  1193. package/dist/application/config/applicationAttributes.directive.d.ts +0 -2
  1194. package/dist/application/config/applicationConfig.controller.d.ts +0 -2
  1195. package/dist/application/config/applicationNotifications.directive.d.ts +0 -2
  1196. package/dist/application/config/applicationSnapshotSection.component.d.ts +0 -2
  1197. package/dist/application/config/customBanner/customBannerConfig.component.d.ts +0 -1
  1198. package/dist/application/config/dataSources/applicationDataSourceEditor.component.d.ts +0 -20
  1199. package/dist/application/config/defaultTagFilter/defaultTagFilterConfig.component.d.ts +0 -1
  1200. package/dist/application/config/deleteApplicationSection.module.d.ts +0 -1
  1201. package/dist/application/config/footer/configSectionFooter.component.d.ts +0 -21
  1202. package/dist/application/config/links/applicationLinks.component.d.ts +0 -2
  1203. package/dist/application/config/links/editLinks.modal.controller.d.ts +0 -2
  1204. package/dist/application/config/trafficGuard/trafficGuardConfig.component.d.ts +0 -31
  1205. package/dist/application/modal/applicationProviderFields.component.d.ts +0 -2
  1206. package/dist/application/modal/createApplication.modal.controller.d.ts +0 -2
  1207. package/dist/application/modal/editApplication.controller.modal.d.ts +0 -2
  1208. package/dist/application/modal/permissionsConfigurer.component.d.ts +0 -1
  1209. package/dist/application/modal/platformHealthOverride.directive.d.ts +0 -2
  1210. package/dist/application/modal/validation/applicationNameValidationMessages.component.d.ts +0 -1
  1211. package/dist/application/modal/validation/validateApplicationName.directive.d.ts +0 -1
  1212. package/dist/artifact/ExpectedArtifactSelectorViewController.d.ts +0 -31
  1213. package/dist/artifact/ExpectedArtifactSelectorViewControllerAngularDelegate.d.ts +0 -15
  1214. package/dist/artifact/NgAppEngineDeployArtifactDelegate.d.ts +0 -18
  1215. package/dist/artifact/NgAppengineConfigArtifactDelegate.d.ts +0 -25
  1216. package/dist/artifact/NgBakeManifestArtifactDelegate.d.ts +0 -23
  1217. package/dist/artifact/NgGCEImageArtifactDelegate.d.ts +0 -18
  1218. package/dist/artifact/NgGenericArtifactDelegate.d.ts +0 -20
  1219. package/dist/artifact/artifact.module.d.ts +0 -1
  1220. package/dist/artifact/artifactTab.d.ts +0 -1
  1221. package/dist/artifact/expectedArtifactMultiSelector.component.d.ts +0 -2
  1222. package/dist/artifact/imageSourceSelector.component.d.ts +0 -1
  1223. package/dist/artifact/stageArtifactSelectorDelegate.d.ts +0 -1
  1224. package/dist/authentication/authentication.interceptor.service.d.ts +0 -8
  1225. package/dist/banner/bannerContainer.component.d.ts +0 -2
  1226. package/dist/banner/bannerContainer.module.d.ts +0 -2
  1227. package/dist/bootstrap/bootstrap.module.d.ts +0 -3
  1228. package/dist/bootstrap/spinnakerContainer.component.d.ts +0 -1
  1229. package/dist/bootstrap/stateChange.logger.d.ts +0 -1
  1230. package/dist/bootstrap/transitionTrace.toggle.d.ts +0 -1
  1231. package/dist/bootstrap/uiBootstrap.config.d.ts +0 -1
  1232. package/dist/bootstrap/uiRouterRxjs.d.ts +0 -1
  1233. package/dist/bootstrap/uiRouterVisualizer.toggle.d.ts +0 -1
  1234. package/dist/bootstrap/uiSelect.config.d.ts +0 -1
  1235. package/dist/chaosMonkey/chaosMonkeyConfig.component.d.ts +0 -32
  1236. package/dist/chaosMonkey/chaosMonkeyExceptions.component.d.ts +0 -19
  1237. package/dist/chaosMonkey/chaosMonkeyNewApplicationConfig.component.d.ts +0 -6
  1238. package/dist/cloudProvider/cloudProvider.module.d.ts +0 -1
  1239. package/dist/cloudProvider/cloudProviderLabel.directive.d.ts +0 -2
  1240. package/dist/cloudProvider/cloudProviderLogo.component.d.ts +0 -1
  1241. package/dist/cloudProvider/providerSelection/providerSelector.directive.d.ts +0 -2
  1242. package/dist/cluster/allClusters.controller.d.ts +0 -2
  1243. package/dist/cluster/allClustersGroupings.component.d.ts +0 -1
  1244. package/dist/cluster/filter/clusterFilter.component.d.ts +0 -1
  1245. package/dist/cluster/filter/labelFilter.component.d.ts +0 -1
  1246. package/dist/cluster/onDemand/onDemandClusterPicker.component.d.ts +0 -2
  1247. package/dist/core.module.d.ts +0 -17
  1248. package/dist/deploymentStrategy/deploymentStrategySelector.component.d.ts +0 -1
  1249. package/dist/diffs/viewChangesLink.component.d.ts +0 -1
  1250. package/dist/domain/IDeckRootScope.d.ts +0 -9
  1251. package/dist/entityTag/addEntityTagLinks.component.d.ts +0 -1
  1252. package/dist/entityTag/entitySource.component.d.ts +0 -1
  1253. package/dist/entityTag/notifications/entityNotifications.component.d.ts +0 -1
  1254. package/dist/filterModel/filterCollapse.component.d.ts +0 -1
  1255. package/dist/filterModel/filterTags.component.d.ts +0 -1
  1256. package/dist/forms/autofocus/autofocus.directive.d.ts +0 -10
  1257. package/dist/forms/checklist/checklist.directive.d.ts +0 -2
  1258. package/dist/forms/checkmap/checkmap.directive.d.ts +0 -2
  1259. package/dist/forms/forms.module.d.ts +0 -2
  1260. package/dist/forms/ignoreEmptyDelete.directive.d.ts +0 -2
  1261. package/dist/forms/mapEditor/mapEditor.component.d.ts +0 -2
  1262. package/dist/forms/mapObjectEditor/mapObjectEditor.component.d.ts +0 -2
  1263. package/dist/forms/numberList/numberList.component.d.ts +0 -1
  1264. package/dist/forms/validateOnSubmit/validateOnSubmit.directive.d.ts +0 -2
  1265. package/dist/function/function.module.d.ts +0 -1
  1266. package/dist/healthCounts/healthCounts.component.d.ts +0 -1
  1267. package/dist/healthCounts/healthCounts.module.d.ts +0 -1
  1268. package/dist/help/help.module.d.ts +0 -2
  1269. package/dist/help/helpField.component.d.ts +0 -14
  1270. package/dist/help/helpFieldReact.component.d.ts +0 -1
  1271. package/dist/insight/insight.module.d.ts +0 -2
  1272. package/dist/insight/insightFilterState.model.d.ts +0 -7
  1273. package/dist/insight/insightLayout.component.d.ts +0 -1
  1274. package/dist/insight/insightmenu.directive.d.ts +0 -1
  1275. package/dist/instance/details/console/consoleOutputLink.component.d.ts +0 -2
  1276. package/dist/instance/details/instanceActions.component.d.ts +0 -2
  1277. package/dist/instance/details/instanceDetailsHeader.component.d.ts +0 -2
  1278. package/dist/instance/details/instanceInsights.component.d.ts +0 -2
  1279. package/dist/instance/details/instanceLinks.component.d.ts +0 -2
  1280. package/dist/instance/details/multipleInstanceServerGroup.directive.d.ts +0 -2
  1281. package/dist/instance/details/multipleInstances.controller.d.ts +0 -2
  1282. package/dist/instance/loadBalancer/instanceLoadBalancerHealth.directive.d.ts +0 -2
  1283. package/dist/interceptor/debug.interceptor.d.ts +0 -6
  1284. package/dist/interceptor/interceptor.module.d.ts +0 -1
  1285. package/dist/managed/externals/managedResourceDetailsIndicator.component.d.ts +0 -1
  1286. package/dist/managed/managed.module.d.ts +0 -1
  1287. package/dist/modal/buttons/modalClose.component.d.ts +0 -1
  1288. package/dist/modal/buttons/submitButton.component.d.ts +0 -3
  1289. package/dist/modal/modal.module.d.ts +0 -2
  1290. package/dist/modal/modalOverlay.directive.d.ts +0 -2
  1291. package/dist/modal/modalPage.directive.d.ts +0 -2
  1292. package/dist/modal/wizard/v2modalWizard.component.d.ts +0 -14
  1293. package/dist/modal/wizard/v2wizardPage.component.d.ts +0 -67
  1294. package/dist/modal/wizard/wizardSubFormValidation.service.d.ts +0 -5
  1295. package/dist/notification/notificationList.module.d.ts +0 -1
  1296. package/dist/pageTitle/index.d.ts +0 -1
  1297. package/dist/pageTitle/pageTitle.module.d.ts +0 -1
  1298. package/dist/pageTitle/pageTitle.service.d.ts +0 -43
  1299. package/dist/pagerDuty/pageApplicationOwner.modal.controller.d.ts +0 -14
  1300. package/dist/pagerDuty/pagerDuty.module.d.ts +0 -1
  1301. package/dist/pagerDuty/pagerDutySelectField.component.d.ts +0 -15
  1302. package/dist/pagerDuty/pagerDutyTag.component.d.ts +0 -11
  1303. package/dist/pipeline/config/actions/history/diffSummary.component.d.ts +0 -1
  1304. package/dist/pipeline/config/actions/pipelineConfigActions.module.d.ts +0 -1
  1305. package/dist/pipeline/config/createPipeline.component.d.ts +0 -1
  1306. package/dist/pipeline/config/graph/pipeline.graph.component.d.ts +0 -1
  1307. package/dist/pipeline/config/health/stagePlatformHealthOverride.directive.d.ts +0 -2
  1308. package/dist/pipeline/config/parameters/parameters.module.d.ts +0 -1
  1309. package/dist/pipeline/config/parameters/pipeline.module.d.ts +0 -2
  1310. package/dist/pipeline/config/pipelineConfig.controller.d.ts +0 -2
  1311. package/dist/pipeline/config/pipelineConfigView.d.ts +0 -2
  1312. package/dist/pipeline/config/pipelineConfigurer.d.ts +0 -2
  1313. package/dist/pipeline/config/preconditions/modal/editPrecondition.controller.modal.d.ts +0 -2
  1314. package/dist/pipeline/config/preconditions/precondition.details.filter.d.ts +0 -2
  1315. package/dist/pipeline/config/preconditions/preconditionList.directive.d.ts +0 -2
  1316. package/dist/pipeline/config/preconditions/preconditionType.service.d.ts +0 -2
  1317. package/dist/pipeline/config/preconditions/preconditionTypeConfig.provider.d.ts +0 -2
  1318. package/dist/pipeline/config/preconditions/preconditions.module.d.ts +0 -2
  1319. package/dist/pipeline/config/preconditions/selector/preconditionSelector.directive.d.ts +0 -2
  1320. package/dist/pipeline/config/preconditions/types/clusterSize/clusterSize.precondition.type.module.d.ts +0 -2
  1321. package/dist/pipeline/config/preconditions/types/expression/expression.precondition.type.module.d.ts +0 -2
  1322. package/dist/pipeline/config/preconditions/types/stageStatus/stageStatus.precondition.type.module.d.ts +0 -1
  1323. package/dist/pipeline/config/stages/bake/bakeStage.module.d.ts +0 -2
  1324. package/dist/pipeline/config/stages/bake/bakeStageChooseManagedImage.component.d.ts +0 -16
  1325. package/dist/pipeline/config/stages/bake/bakeStageChooseOs.component.d.ts +0 -19
  1326. package/dist/pipeline/config/stages/bake/modal/addExtendedAttribute.controller.modal.d.ts +0 -2
  1327. package/dist/pipeline/config/stages/baseProviderStage/baseProviderStage.d.ts +0 -2
  1328. package/dist/pipeline/config/stages/checkPreconditions/checkPreconditionsStage.module.d.ts +0 -1
  1329. package/dist/pipeline/config/stages/common/baseExecutionDetails.controller.d.ts +0 -18
  1330. package/dist/pipeline/config/stages/common/executionStepDetails.component.d.ts +0 -1
  1331. package/dist/pipeline/config/stages/common/stage.common.module.d.ts +0 -1
  1332. package/dist/pipeline/config/stages/common/stageConfigField/stageConfigField.directive.d.ts +0 -2
  1333. package/dist/pipeline/config/stages/createLoadBalancer/createLoadBalancerExecutionDetails.controller.d.ts +0 -13
  1334. package/dist/pipeline/config/stages/createLoadBalancer/createLoadBalancerStage.module.d.ts +0 -1
  1335. package/dist/pipeline/config/stages/deploy/clusterName.filter.d.ts +0 -2
  1336. package/dist/pipeline/config/stages/deploy/deployExecutionDetails.controller.d.ts +0 -2
  1337. package/dist/pipeline/config/stages/deploy/deployStage.module.d.ts +0 -2
  1338. package/dist/pipeline/config/stages/executionWindows/executionWindows.module.d.ts +0 -1
  1339. package/dist/pipeline/config/stages/failOnFailedExpressions/failOnFailedExpressions.directive.d.ts +0 -2
  1340. package/dist/pipeline/config/stages/findArtifactFromExecution/findArtifactFromExecution.controller.d.ts +0 -33
  1341. package/dist/pipeline/config/stages/findImageFromTags/findImageFromTagsStage.module.d.ts +0 -2
  1342. package/dist/pipeline/config/stages/group/groupStage.module.d.ts +0 -1
  1343. package/dist/pipeline/config/stages/jenkins/jenkinsExecutionDetails.controller.d.ts +0 -2
  1344. package/dist/pipeline/config/stages/jenkins/jenkinsStage.module.d.ts +0 -2
  1345. package/dist/pipeline/config/stages/manualJudgment/manualJudgmentStage.module.d.ts +0 -2
  1346. package/dist/pipeline/config/stages/monitorPipeline/monitorPipelineStage.module.d.ts +0 -2
  1347. package/dist/pipeline/config/stages/optionalStage/optionalStage.directive.d.ts +0 -2
  1348. package/dist/pipeline/config/stages/overrideFailure/overrideFailure.module.d.ts +0 -1
  1349. package/dist/pipeline/config/stages/overrideTimeout/overrideTimeout.module.d.ts +0 -1
  1350. package/dist/pipeline/config/stages/pipeline/pipelineStage.module.d.ts +0 -2
  1351. package/dist/pipeline/config/stages/preconfiguredJob/preconfiguredJobStage.module.d.ts +0 -1
  1352. package/dist/pipeline/config/stages/runJob/runJobStage.module.d.ts +0 -2
  1353. package/dist/pipeline/config/stages/stage.module.d.ts +0 -2
  1354. package/dist/pipeline/config/stages/tagImage/tagImageStage.module.d.ts +0 -2
  1355. package/dist/pipeline/config/stages/travis/modal/addParameter.controller.modal.d.ts +0 -10
  1356. package/dist/pipeline/config/stages/travis/travisExecutionDetails.controller.d.ts +0 -18
  1357. package/dist/pipeline/config/stages/travis/travisStage.module.d.ts +0 -1
  1358. package/dist/pipeline/config/stages/unmatchedStageTypeStage/unmatchedStageTypeStage.controller.d.ts +0 -15
  1359. package/dist/pipeline/config/stages/webhook/modal/addCustomHeader.controller.modal.d.ts +0 -10
  1360. package/dist/pipeline/config/stages/webhook/webhookExecutionDetails.controller.d.ts +0 -23
  1361. package/dist/pipeline/config/stages/webhook/webhookStage.module.d.ts +0 -1
  1362. package/dist/pipeline/config/targetSelect.component.d.ts +0 -11
  1363. package/dist/pipeline/config/templates/configurePipelineTemplateModal.controller.d.ts +0 -52
  1364. package/dist/pipeline/config/templates/pipelineTemplate.module.d.ts +0 -10
  1365. package/dist/pipeline/config/templates/templatePlanErrors.component.d.ts +0 -1
  1366. package/dist/pipeline/config/templates/v2/configurePipelineTemplateModalV2.controller.d.ts +0 -53
  1367. package/dist/pipeline/config/templates/variable.component.d.ts +0 -1
  1368. package/dist/pipeline/config/triggers/triggers.module.d.ts +0 -1
  1369. package/dist/pipeline/details/executionDetailsSectionNav.component.d.ts +0 -1
  1370. package/dist/pipeline/details/stageFailureMessage.component.d.ts +0 -1
  1371. package/dist/pipeline/details/stageSummary.component.d.ts +0 -34
  1372. package/dist/pipeline/details/stepExecutionDetails.component.d.ts +0 -19
  1373. package/dist/pipeline/status/artifactList.component.d.ts +0 -1
  1374. package/dist/presentation/autoScroll/autoScroll.directive.d.ts +0 -27
  1375. package/dist/presentation/collapsibleSection/collapsibleSection.directive.d.ts +0 -2
  1376. package/dist/presentation/isVisible/isVisible.directive.d.ts +0 -2
  1377. package/dist/presentation/label.component.d.ts +0 -1
  1378. package/dist/presentation/linkWithClipboard.component.d.ts +0 -1
  1379. package/dist/presentation/markdown.component.d.ts +0 -1
  1380. package/dist/presentation/navigation/pageNavigator.component.d.ts +0 -2
  1381. package/dist/presentation/navigation/pageSection.component.d.ts +0 -1
  1382. package/dist/presentation/percent.filter.d.ts +0 -2
  1383. package/dist/presentation/presentation.module.d.ts +0 -2
  1384. package/dist/presentation/sortToggle/sorttoggle.directive.d.ts +0 -2
  1385. package/dist/projects/dashboard/cluster/projectCluster.directive.d.ts +0 -2
  1386. package/dist/projects/dashboard/dashboard.controller.d.ts +0 -2
  1387. package/dist/projects/dashboard/pipeline/projectPipeline.component.d.ts +0 -1
  1388. package/dist/projects/dashboard/regionFilter/regionFilter.component.d.ts +0 -2
  1389. package/dist/projects/dashboard/regionFilter/regionFilter.service.d.ts +0 -2
  1390. package/dist/projects/projects.module.d.ts +0 -3
  1391. package/dist/reactShims/AngularJSAdapter.d.ts +0 -25
  1392. package/dist/reactShims/modal.injector.d.ts +0 -10
  1393. package/dist/reactShims/ngReact.d.ts +0 -21
  1394. package/dist/reactShims/react.injector.d.ts +0 -49
  1395. package/dist/reactShims/react.module.d.ts +0 -3
  1396. package/dist/reactShims/state.events.d.ts +0 -17
  1397. package/dist/region/region.module.d.ts +0 -1
  1398. package/dist/region/regionSelectField.directive.d.ts +0 -2
  1399. package/dist/search/global/globalSearch.module.d.ts +0 -2
  1400. package/dist/search/global/globalsearch.component.d.ts +0 -1
  1401. package/dist/search/infrastructure/infrastructure.controller.d.ts +0 -2
  1402. package/dist/search/infrastructure/infrastructureSearchV2.component.d.ts +0 -1
  1403. package/dist/search/infrastructure/projectSummaryPod.component.d.ts +0 -1
  1404. package/dist/search/infrastructure/recentlyViewedItems.component.d.ts +0 -1
  1405. package/dist/search/infrastructure/search.infrastructure.module.d.ts +0 -1
  1406. package/dist/search/infrastructure/searchResult.component.d.ts +0 -1
  1407. package/dist/search/search.module.d.ts +0 -2
  1408. package/dist/search/widgets/search.component.d.ts +0 -1
  1409. package/dist/securityGroup/filter/securityGroup.filter.component.d.ts +0 -1
  1410. package/dist/securityGroup/label/firewallLabel.component.d.ts +0 -1
  1411. package/dist/serverGroup/configure/common/basicSettingsMixin.controller.d.ts +0 -2
  1412. package/dist/serverGroup/configure/common/costFactor.d.ts +0 -2
  1413. package/dist/serverGroup/configure/common/deployInitializer.component.d.ts +0 -43
  1414. package/dist/serverGroup/configure/common/serverGroupConfiguration.service.d.ts +0 -10
  1415. package/dist/serverGroup/configure/common/targetHealthyPercentageSelector.component.d.ts +0 -1
  1416. package/dist/serverGroup/configure/common/v2InstanceTypeSelector.component.d.ts +0 -4
  1417. package/dist/serverGroup/configure/common/v2instanceArchetypeSelector.component.d.ts +0 -3
  1418. package/dist/serverGroup/details/multipleServerGroup.component.d.ts +0 -2
  1419. package/dist/serverGroup/details/multipleServerGroups.controller.d.ts +0 -2
  1420. package/dist/serverGroup/details/runningTasks.component.d.ts +0 -1
  1421. package/dist/serverGroup/details/scalingActivities/viewScalingActivitiesLink.component.d.ts +0 -1
  1422. package/dist/serverGroup/serverGroup.transformer.d.ts +0 -2
  1423. package/dist/serverGroup/templates/index.d.ts +0 -3
  1424. package/dist/serverGroupManager/serverGroupManager.module.d.ts +0 -1
  1425. package/dist/slack/slackChannelSelector.component.d.ts +0 -1
  1426. package/dist/snapshot/diff/snapshotDiff.modal.controller.d.ts +0 -2
  1427. package/dist/snapshot/diff/viewSnapshotDiffButton.component.d.ts +0 -2
  1428. package/dist/styleguide/styleguide.module.d.ts +0 -1
  1429. package/dist/subnet/subnet.module.d.ts +0 -1
  1430. package/dist/subnet/subnetTag.component.d.ts +0 -2
  1431. package/dist/task/modal/reason.directive.d.ts +0 -2
  1432. package/dist/task/monitor/taskMonitor.directive.d.ts +0 -2
  1433. package/dist/task/monitor/taskMonitor.module.d.ts +0 -2
  1434. package/dist/task/platformHealthOverrideMessage.component.d.ts +0 -1
  1435. package/dist/task/statusGlyph.component.d.ts +0 -1
  1436. package/dist/task/task.module.d.ts +0 -2
  1437. package/dist/task/taskProgressBar.directive.d.ts +0 -2
  1438. package/dist/task/tasks.controller.d.ts +0 -2
  1439. package/dist/task/verification/userVerification.directive.d.ts +0 -2
  1440. package/dist/types/promise.d.ts +0 -148
  1441. package/dist/utils/clipboard/copyToClipboard.component.d.ts +0 -1
  1442. package/dist/utils/failedToInstantiateModule.d.ts +0 -1
  1443. package/dist/utils/infiniteScroll.directive.d.ts +0 -2
  1444. package/dist/utils/json/diffView.component.d.ts +0 -1
  1445. package/dist/utils/renderIfFeature.component.d.ts +0 -1
  1446. package/dist/utils/selectOnDblClick.directive.d.ts +0 -1
  1447. package/dist/utils/uibModalRejections.d.ts +0 -1
  1448. package/dist/utils/utils.module.d.ts +0 -2
  1449. package/dist/utils/waypoints/waypoint.directive.d.ts +0 -2
  1450. package/dist/utils/waypoints/waypoint.service.d.ts +0 -8
  1451. package/dist/utils/waypoints/waypointContainer.directive.d.ts +0 -2
  1452. package/dist/validation/triggerValidation.directive.d.ts +0 -2
  1453. package/dist/validation/validateUnique.directive.d.ts +0 -2
  1454. package/dist/validation/validation.module.d.ts +0 -2
  1455. package/dist/validation/validationError.directive.d.ts +0 -2
  1456. package/dist/widgets/accountNamespaceClusterSelector.component.d.ts +0 -2
  1457. package/dist/widgets/accountRegionClusterSelector.component.d.ts +0 -2
  1458. package/dist/widgets/accountRegionClusterSelectorWrapper.component.d.ts +0 -3
  1459. package/dist/widgets/actionIcons/actionIcons.component.d.ts +0 -2
  1460. package/dist/widgets/cluster/clusterMatches.component.d.ts +0 -6
  1461. package/dist/widgets/scopeClusterSelector.directive.d.ts +0 -2
  1462. package/dist/widgets/spelText/spelAutocomplete.service.d.ts +0 -2
  1463. package/dist/widgets/spelText/spelSelect.component.d.ts +0 -2
  1464. package/dist/widgets/spelText/spelText.decorator.d.ts +0 -2
  1465. package/dist/widgets/spinners/spinner.component.d.ts +0 -1
  1466. package/dist/widgets/widgets.module.d.ts +0 -1
  1467. package/dist/yamlEditor/yamlEditor.component.d.ts +0 -1
  1468. package/src/account/account.module.js +0 -19
  1469. package/src/account/accountSelect.wrapper.ts +0 -19
  1470. package/src/account/accountSelectField.component.ts +0 -40
  1471. package/src/account/accountTag.component.ts +0 -33
  1472. package/src/account/collapsibleAccountTag.directive.html +0 -6
  1473. package/src/account/collapsibleAccountTag.directive.js +0 -33
  1474. package/src/account/providerToggles.directive.js +0 -36
  1475. package/src/analytics/GoogleAnalyticsInitializer.ts +0 -13
  1476. package/src/analytics/angulartics.module.d.ts +0 -2
  1477. package/src/analytics/angulartics.module.ts +0 -7
  1478. package/src/api/network.interceptor.ts +0 -86
  1479. package/src/apitoken/apitoken.module.ts +0 -20
  1480. package/src/application/config/applicationAttributes.directive.html +0 -65
  1481. package/src/application/config/applicationAttributes.directive.js +0 -119
  1482. package/src/application/config/applicationAttributes.directive.spec.js +0 -52
  1483. package/src/application/config/applicationConfig.controller.js +0 -111
  1484. package/src/application/config/applicationConfig.view.html +0 -70
  1485. package/src/application/config/applicationNotifications.directive.html +0 -7
  1486. package/src/application/config/applicationNotifications.directive.js +0 -31
  1487. package/src/application/config/applicationSnapshotSection.component.html +0 -11
  1488. package/src/application/config/applicationSnapshotSection.component.js +0 -46
  1489. package/src/application/config/customBanner/customBannerConfig.component.ts +0 -16
  1490. package/src/application/config/dataSources/applicationDataSourceEditor.component.html +0 -30
  1491. package/src/application/config/dataSources/applicationDataSourceEditor.component.less +0 -11
  1492. package/src/application/config/dataSources/applicationDataSourceEditor.component.spec.ts +0 -174
  1493. package/src/application/config/dataSources/applicationDataSourceEditor.component.ts +0 -104
  1494. package/src/application/config/defaultTagFilter/defaultTagFilterConfig.component.ts +0 -15
  1495. package/src/application/config/deleteApplicationSection.module.ts +0 -10
  1496. package/src/application/config/footer/configSectionFooter.component.html +0 -31
  1497. package/src/application/config/footer/configSectionFooter.component.spec.ts +0 -109
  1498. package/src/application/config/footer/configSectionFooter.component.ts +0 -74
  1499. package/src/application/config/links/applicationLinks.component.html +0 -128
  1500. package/src/application/config/links/applicationLinks.component.js +0 -132
  1501. package/src/application/config/links/applicationLinks.component.less +0 -51
  1502. package/src/application/config/links/editLinks.modal.controller.js +0 -29
  1503. package/src/application/config/links/editLinks.modal.html +0 -29
  1504. package/src/application/config/trafficGuard/trafficGuardConfig.component.html +0 -98
  1505. package/src/application/config/trafficGuard/trafficGuardConfig.component.ts +0 -132
  1506. package/src/application/modal/applicationProviderFields.component.html +0 -1
  1507. package/src/application/modal/applicationProviderFields.component.js +0 -47
  1508. package/src/application/modal/applicationProviderFields.component.spec.js +0 -106
  1509. package/src/application/modal/createApplication.modal.controller.js +0 -140
  1510. package/src/application/modal/createApplication.modal.controller.spec.js +0 -25
  1511. package/src/application/modal/editApplication.controller.modal.js +0 -132
  1512. package/src/application/modal/editApplication.html +0 -262
  1513. package/src/application/modal/newapplication.html +0 -287
  1514. package/src/application/modal/permissionsConfigurer.component.ts +0 -15
  1515. package/src/application/modal/platformHealthOverride.directive.js +0 -41
  1516. package/src/application/modal/platformHealthOverrideCheckbox.directive.html +0 -7
  1517. package/src/application/modal/validation/applicationNameValidationMessages.component.ts +0 -47
  1518. package/src/application/modal/validation/applicationNameValidationMessages.directive.html +0 -12
  1519. package/src/application/modal/validation/validateApplicationName.directive.spec.ts +0 -142
  1520. package/src/application/modal/validation/validateApplicationName.directive.ts +0 -60
  1521. package/src/artifact/ExpectedArtifactSelectorViewController.ts +0 -72
  1522. package/src/artifact/ExpectedArtifactSelectorViewControllerAngularDelegate.ts +0 -31
  1523. package/src/artifact/NgAppEngineDeployArtifactDelegate.ts +0 -56
  1524. package/src/artifact/NgAppengineConfigArtifactDelegate.ts +0 -70
  1525. package/src/artifact/NgBakeManifestArtifactDelegate.ts +0 -68
  1526. package/src/artifact/NgGCEImageArtifactDelegate.ts +0 -61
  1527. package/src/artifact/NgGenericArtifactDelegate.ts +0 -82
  1528. package/src/artifact/artifact.module.ts +0 -18
  1529. package/src/artifact/artifactTab.ts +0 -13
  1530. package/src/artifact/expectedArtifactMultiSelector.component.ts +0 -71
  1531. package/src/artifact/imageSourceSelector.component.ts +0 -40
  1532. package/src/artifact/stageArtifactSelectorDelegate.ts +0 -24
  1533. package/src/authentication/authentication.interceptor.service.ts +0 -44
  1534. package/src/authentication/authentication.interceptor.spec.ts +0 -94
  1535. package/src/banner/bannerContainer.component.ts +0 -13
  1536. package/src/banner/bannerContainer.module.js +0 -9
  1537. package/src/bootstrap/angular.config.ts +0 -41
  1538. package/src/bootstrap/appInit.ts +0 -23
  1539. package/src/bootstrap/bootstrap.module.ts +0 -11
  1540. package/src/bootstrap/spinnaker.component.ts +0 -27
  1541. package/src/bootstrap/spinnakerContainer.component.ts +0 -11
  1542. package/src/bootstrap/stateChange.logger.ts +0 -29
  1543. package/src/bootstrap/transitionTrace.toggle.ts +0 -28
  1544. package/src/bootstrap/uiBootstrap.config.ts +0 -24
  1545. package/src/bootstrap/uiRouterRxjs.ts +0 -12
  1546. package/src/bootstrap/uiRouterVisualizer.toggle.ts +0 -75
  1547. package/src/bootstrap/uiSelect.config.ts +0 -93
  1548. package/src/chaosMonkey/chaosMonkeyConfig.component.html +0 -76
  1549. package/src/chaosMonkey/chaosMonkeyConfig.component.less +0 -43
  1550. package/src/chaosMonkey/chaosMonkeyConfig.component.ts +0 -84
  1551. package/src/chaosMonkey/chaosMonkeyExceptions.component.html +0 -70
  1552. package/src/chaosMonkey/chaosMonkeyExceptions.component.less +0 -5
  1553. package/src/chaosMonkey/chaosMonkeyExceptions.component.spec.ts +0 -67
  1554. package/src/chaosMonkey/chaosMonkeyExceptions.component.ts +0 -89
  1555. package/src/chaosMonkey/chaosMonkeyNewApplicationConfig.component.ts +0 -53
  1556. package/src/cloudProvider/cloudProvider.module.ts +0 -12
  1557. package/src/cloudProvider/cloudProviderLabel.directive.js +0 -25
  1558. package/src/cloudProvider/cloudProviderLogo.component.ts +0 -16
  1559. package/src/cloudProvider/providerSelection/providerSelector.directive.js +0 -65
  1560. package/src/cloudProvider/providerSelection/providerSelector.html +0 -21
  1561. package/src/cluster/allClusters.controller.js +0 -151
  1562. package/src/cluster/allClusters.html +0 -82
  1563. package/src/cluster/allClustersGroupings.component.ts +0 -11
  1564. package/src/cluster/filter/clusterFilter.component.ts +0 -11
  1565. package/src/cluster/filter/collapsibleFilterSection.directive.js +0 -31
  1566. package/src/cluster/filter/collapsibleFilterSection.html +0 -10
  1567. package/src/cluster/filter/labelFilter.component.ts +0 -11
  1568. package/src/cluster/filter/mockApplicationData.js +0 -153
  1569. package/src/cluster/onDemand/onDemandClusterPicker.component.ts +0 -68
  1570. package/src/cluster/onDemand/onDemandOptionTemplate.html +0 -1
  1571. package/src/core.module.ts +0 -180
  1572. package/src/deploymentStrategy/deploymentStrategySelector.component.ts +0 -17
  1573. package/src/diffs/viewChangesLink.component.ts +0 -16
  1574. package/src/domain/IDeckRootScope.ts +0 -10
  1575. package/src/entityTag/addEntityTagLinks.component.ts +0 -19
  1576. package/src/entityTag/entitySource.component.ts +0 -11
  1577. package/src/entityTag/notifications/entityNotifications.component.ts +0 -47
  1578. package/src/filterModel/filterCollapse.component.ts +0 -11
  1579. package/src/filterModel/filterTags.component.ts +0 -11
  1580. package/src/forms/autofocus/autofocus.directive.js +0 -27
  1581. package/src/forms/checklist/checklist.directive.html +0 -25
  1582. package/src/forms/checklist/checklist.directive.js +0 -114
  1583. package/src/forms/checklist/checklist.directive.spec.js +0 -156
  1584. package/src/forms/checkmap/checkmap.directive.html +0 -18
  1585. package/src/forms/checkmap/checkmap.directive.js +0 -63
  1586. package/src/forms/checkmap/checkmap.directive.spec.js +0 -56
  1587. package/src/forms/forms.module.js +0 -25
  1588. package/src/forms/ignoreEmptyDelete.directive.js +0 -52
  1589. package/src/forms/mapEditor/mapEditor.component.html +0 -55
  1590. package/src/forms/mapEditor/mapEditor.component.js +0 -91
  1591. package/src/forms/mapEditor/mapEditor.component.less +0 -9
  1592. package/src/forms/mapEditor/mapEditor.component.spec.js +0 -193
  1593. package/src/forms/mapObjectEditor/mapObjectEditor.component.html +0 -56
  1594. package/src/forms/mapObjectEditor/mapObjectEditor.component.js +0 -113
  1595. package/src/forms/mapObjectEditor/mapObjectEditor.component.less +0 -9
  1596. package/src/forms/mapObjectEditor/mapObjectEditor.component.spec.js +0 -85
  1597. package/src/forms/numberList/numberList.component.ts +0 -11
  1598. package/src/forms/validateOnSubmit/validateOnSubmit.directive.js +0 -49
  1599. package/src/function/function.module.ts +0 -8
  1600. package/src/healthCounts/healthCounts.component.ts +0 -15
  1601. package/src/healthCounts/healthCounts.module.ts +0 -6
  1602. package/src/help/help.module.ts +0 -8
  1603. package/src/help/helpField.component.ts +0 -37
  1604. package/src/help/helpFieldReact.component.ts +0 -19
  1605. package/src/insight/insight.module.ts +0 -10
  1606. package/src/insight/insightFilterState.model.ts +0 -22
  1607. package/src/insight/insightLayout.component.ts +0 -11
  1608. package/src/insight/insightmenu.directive.html +0 -33
  1609. package/src/insight/insightmenu.directive.ts +0 -19
  1610. package/src/instance/details/console/consoleOutputLink.component.ts +0 -13
  1611. package/src/instance/details/instanceActions.component.ts +0 -13
  1612. package/src/instance/details/instanceDetailsHeader.component.ts +0 -20
  1613. package/src/instance/details/instanceInsights.component.ts +0 -18
  1614. package/src/instance/details/instanceLinks.component.js +0 -19
  1615. package/src/instance/details/multipleInstanceServerGroup.directive.html +0 -19
  1616. package/src/instance/details/multipleInstanceServerGroup.directive.js +0 -23
  1617. package/src/instance/details/multipleInstanceServerGroup.directive.less +0 -22
  1618. package/src/instance/details/multipleInstances.controller.js +0 -271
  1619. package/src/instance/details/multipleInstances.controller.spec.js +0 -273
  1620. package/src/instance/details/multipleInstances.view.html +0 -67
  1621. package/src/instance/loadBalancer/instanceLoadBalancerHealth.directive.js +0 -18
  1622. package/src/interceptor/debug.interceptor.ts +0 -32
  1623. package/src/interceptor/interceptor.module.ts +0 -6
  1624. package/src/managed/externals/managedResourceDetailsIndicator.component.ts +0 -14
  1625. package/src/managed/managed.module.js +0 -8
  1626. package/src/modal/buttons/modalClose.component.ts +0 -18
  1627. package/src/modal/buttons/submitButton.component.ts +0 -23
  1628. package/src/modal/modal.module.js +0 -33
  1629. package/src/modal/modalOverlay.directive.js +0 -37
  1630. package/src/modal/modalPage.directive.js +0 -52
  1631. package/src/modal/wizard/v2modalWizard.component.html +0 -36
  1632. package/src/modal/wizard/v2modalWizard.component.ts +0 -48
  1633. package/src/modal/wizard/v2wizardPage.component.html +0 -15
  1634. package/src/modal/wizard/v2wizardPage.component.ts +0 -113
  1635. package/src/modal/wizard/wizardSubFormValidation.service.js +0 -87
  1636. package/src/modal/wizard/wizardSubFormValidation.service.spec.js +0 -96
  1637. package/src/navigation/stateactive.directive.js +0 -28
  1638. package/src/notification/notificationList.module.ts +0 -19
  1639. package/src/pageTitle/index.ts +0 -1
  1640. package/src/pageTitle/pageTitle.module.ts +0 -6
  1641. package/src/pageTitle/pageTitle.service.spec.js +0 -187
  1642. package/src/pageTitle/pageTitle.service.ts +0 -144
  1643. package/src/pagerDuty/pageApplicationOwner.html +0 -30
  1644. package/src/pagerDuty/pageApplicationOwner.modal.controller.ts +0 -33
  1645. package/src/pagerDuty/pagerDuty.module.ts +0 -14
  1646. package/src/pagerDuty/pagerDutySelectField.component.ts +0 -67
  1647. package/src/pagerDuty/pagerDutyTag.component.spec.ts +0 -72
  1648. package/src/pagerDuty/pagerDutyTag.component.ts +0 -53
  1649. package/src/pipeline/config/actions/history/diffSummary.component.ts +0 -11
  1650. package/src/pipeline/config/actions/pipelineConfigActions.module.ts +0 -21
  1651. package/src/pipeline/config/createPipeline.component.ts +0 -11
  1652. package/src/pipeline/config/graph/pipeline.graph.component.ts +0 -17
  1653. package/src/pipeline/config/health/stagePlatformHealthOverride.directive.js +0 -23
  1654. package/src/pipeline/config/health/stagePlatformHealthOverrideCheckbox.directive.html +0 -3
  1655. package/src/pipeline/config/parameters/parameters.module.ts +0 -18
  1656. package/src/pipeline/config/parameters/pipeline.module.js +0 -9
  1657. package/src/pipeline/config/pipelineConfig.controller.js +0 -81
  1658. package/src/pipeline/config/pipelineConfig.controller.spec.js +0 -63
  1659. package/src/pipeline/config/pipelineConfig.html +0 -31
  1660. package/src/pipeline/config/pipelineConfigView.html +0 -22
  1661. package/src/pipeline/config/pipelineConfigView.js +0 -25
  1662. package/src/pipeline/config/pipelineConfigurer.controller.spec.ts +0 -214
  1663. package/src/pipeline/config/pipelineConfigurer.html +0 -204
  1664. package/src/pipeline/config/pipelineConfigurer.js +0 -549
  1665. package/src/pipeline/config/preconditions/modal/editPrecondition.controller.modal.js +0 -32
  1666. package/src/pipeline/config/preconditions/modal/editPrecondition.html +0 -32
  1667. package/src/pipeline/config/preconditions/precondition.details.filter.js +0 -12
  1668. package/src/pipeline/config/preconditions/preconditionList.directive.html +0 -47
  1669. package/src/pipeline/config/preconditions/preconditionList.directive.js +0 -93
  1670. package/src/pipeline/config/preconditions/preconditionType.service.js +0 -29
  1671. package/src/pipeline/config/preconditions/preconditionTypeConfig.provider.js +0 -28
  1672. package/src/pipeline/config/preconditions/preconditions.module.js +0 -21
  1673. package/src/pipeline/config/preconditions/selector/preconditionSelector.directive.js +0 -112
  1674. package/src/pipeline/config/preconditions/selector/preconditionSelector.html +0 -12
  1675. package/src/pipeline/config/preconditions/types/clusterSize/additionalFields.html +0 -76
  1676. package/src/pipeline/config/preconditions/types/clusterSize/clusterSize.precondition.type.module.js +0 -17
  1677. package/src/pipeline/config/preconditions/types/expression/additionalFields.html +0 -28
  1678. package/src/pipeline/config/preconditions/types/expression/expression.precondition.type.module.js +0 -17
  1679. package/src/pipeline/config/preconditions/types/stageStatus/additionalFields.html +0 -5
  1680. package/src/pipeline/config/preconditions/types/stageStatus/stageStatus.precondition.type.module.ts +0 -15
  1681. package/src/pipeline/config/stages/bake/bakeStage.module.js +0 -17
  1682. package/src/pipeline/config/stages/bake/bakeStageChooseManagedImage.component.html +0 -12
  1683. package/src/pipeline/config/stages/bake/bakeStageChooseManagedImage.component.ts +0 -49
  1684. package/src/pipeline/config/stages/bake/bakeStageChooseOs.component.html +0 -23
  1685. package/src/pipeline/config/stages/bake/bakeStageChooseOs.component.ts +0 -52
  1686. package/src/pipeline/config/stages/bake/modal/addExtendedAttribute.controller.modal.js +0 -24
  1687. package/src/pipeline/config/stages/bake/modal/addExtendedAttribute.html +0 -47
  1688. package/src/pipeline/config/stages/baseProviderStage/baseProviderStage.html +0 -12
  1689. package/src/pipeline/config/stages/baseProviderStage/baseProviderStage.js +0 -90
  1690. package/src/pipeline/config/stages/checkPreconditions/checkPreconditionsStage.html +0 -6
  1691. package/src/pipeline/config/stages/checkPreconditions/checkPreconditionsStage.module.ts +0 -12
  1692. package/src/pipeline/config/stages/common/baseExecutionDetails.controller.ts +0 -44
  1693. package/src/pipeline/config/stages/common/executionStepDetails.component.ts +0 -12
  1694. package/src/pipeline/config/stages/common/executionSummary.html +0 -90
  1695. package/src/pipeline/config/stages/common/stage.common.module.ts +0 -8
  1696. package/src/pipeline/config/stages/common/stageConfigField/stageConfigField.directive.html +0 -9
  1697. package/src/pipeline/config/stages/common/stageConfigField/stageConfigField.directive.js +0 -35
  1698. package/src/pipeline/config/stages/common/stageConfigField/stageConfigField.directive.less +0 -9
  1699. package/src/pipeline/config/stages/common/stageConfigField/stageConfigField.directive.spec.js +0 -53
  1700. package/src/pipeline/config/stages/common/stepLabel.html +0 -1
  1701. package/src/pipeline/config/stages/createLoadBalancer/createLoadBalancerExecutionDetails.controller.ts +0 -64
  1702. package/src/pipeline/config/stages/createLoadBalancer/createLoadBalancerExecutionDetails.html +0 -53
  1703. package/src/pipeline/config/stages/createLoadBalancer/createLoadBalancerStage.html +0 -46
  1704. package/src/pipeline/config/stages/createLoadBalancer/createLoadBalancerStage.module.ts +0 -11
  1705. package/src/pipeline/config/stages/deploy/clusterName.filter.ts +0 -16
  1706. package/src/pipeline/config/stages/deploy/deployExecutionDetails.controller.js +0 -183
  1707. package/src/pipeline/config/stages/deploy/deployExecutionDetails.controller.spec.js +0 -224
  1708. package/src/pipeline/config/stages/deploy/deployExecutionDetails.html +0 -111
  1709. package/src/pipeline/config/stages/deploy/deployStage.html +0 -93
  1710. package/src/pipeline/config/stages/deploy/deployStage.js +0 -252
  1711. package/src/pipeline/config/stages/deploy/deployStage.module.js +0 -27
  1712. package/src/pipeline/config/stages/executionWindows/executionWindows.html +0 -172
  1713. package/src/pipeline/config/stages/executionWindows/executionWindows.module.ts +0 -16
  1714. package/src/pipeline/config/stages/failOnFailedExpressions/failOnFailedExpressions.directive.html +0 -16
  1715. package/src/pipeline/config/stages/failOnFailedExpressions/failOnFailedExpressions.directive.js +0 -16
  1716. package/src/pipeline/config/stages/findArtifactFromExecution/findArtifactFromExecution.controller.spec.ts +0 -112
  1717. package/src/pipeline/config/stages/findArtifactFromExecution/findArtifactFromExecution.controller.ts +0 -83
  1718. package/src/pipeline/config/stages/findArtifactFromExecution/findArtifactFromExecutionConfig.html +0 -44
  1719. package/src/pipeline/config/stages/findImageFromTags/findImageFromTagsStage.module.js +0 -16
  1720. package/src/pipeline/config/stages/group/groupStage.html +0 -1
  1721. package/src/pipeline/config/stages/group/groupStage.module.ts +0 -6
  1722. package/src/pipeline/config/stages/jenkins/jenkinsExecutionDetails.controller.js +0 -54
  1723. package/src/pipeline/config/stages/jenkins/jenkinsExecutionDetails.controller.spec.js +0 -70
  1724. package/src/pipeline/config/stages/jenkins/jenkinsExecutionDetails.html +0 -82
  1725. package/src/pipeline/config/stages/jenkins/jenkinsStage.controller.spec.js +0 -142
  1726. package/src/pipeline/config/stages/jenkins/jenkinsStage.html +0 -227
  1727. package/src/pipeline/config/stages/jenkins/jenkinsStage.js +0 -165
  1728. package/src/pipeline/config/stages/jenkins/jenkinsStage.module.js +0 -19
  1729. package/src/pipeline/config/stages/manualJudgment/manualJudgmentStage.html +0 -80
  1730. package/src/pipeline/config/stages/manualJudgment/manualJudgmentStage.module.ts +0 -17
  1731. package/src/pipeline/config/stages/monitorPipeline/monitorPipelineStage.module.js +0 -12
  1732. package/src/pipeline/config/stages/optionalStage/optionalStage.directive.html +0 -24
  1733. package/src/pipeline/config/stages/optionalStage/optionalStage.directive.js +0 -37
  1734. package/src/pipeline/config/stages/overrideFailure/overrideFailure.module.ts +0 -16
  1735. package/src/pipeline/config/stages/overrideTimeout/overrideTimeout.module.ts +0 -15
  1736. package/src/pipeline/config/stages/pipeline/pipelineStage.html +0 -125
  1737. package/src/pipeline/config/stages/pipeline/pipelineStage.module.js +0 -9
  1738. package/src/pipeline/config/stages/preconfiguredJob/preconfiguredJobStage.module.ts +0 -14
  1739. package/src/pipeline/config/stages/resizeAsg/resizeAsgExecutionDetails.html +0 -38
  1740. package/src/pipeline/config/stages/runJob/runJobStage.module.js +0 -9
  1741. package/src/pipeline/config/stages/stage.html +0 -163
  1742. package/src/pipeline/config/stages/stage.module.js +0 -403
  1743. package/src/pipeline/config/stages/tagImage/tagImageStage.module.js +0 -15
  1744. package/src/pipeline/config/stages/travis/modal/addParameter.controller.modal.ts +0 -19
  1745. package/src/pipeline/config/stages/travis/modal/addParameter.html +0 -48
  1746. package/src/pipeline/config/stages/travis/travisExecutionDetails.controller.spec.ts +0 -76
  1747. package/src/pipeline/config/stages/travis/travisExecutionDetails.controller.ts +0 -56
  1748. package/src/pipeline/config/stages/travis/travisExecutionDetails.html +0 -67
  1749. package/src/pipeline/config/stages/travis/travisStage.controller.spec.ts +0 -148
  1750. package/src/pipeline/config/stages/travis/travisStage.html +0 -156
  1751. package/src/pipeline/config/stages/travis/travisStage.module.ts +0 -18
  1752. package/src/pipeline/config/stages/unmatchedStageTypeStage/unmatchedStageTypeStage.controller.spec.ts +0 -76
  1753. package/src/pipeline/config/stages/unmatchedStageTypeStage/unmatchedStageTypeStage.controller.ts +0 -81
  1754. package/src/pipeline/config/stages/unmatchedStageTypeStage/unmatchedStageTypeStage.html +0 -21
  1755. package/src/pipeline/config/stages/waitForParentTasks/waitForParentTasksExecutionDetails.html +0 -16
  1756. package/src/pipeline/config/stages/webhook/modal/addCustomHeader.controller.modal.ts +0 -20
  1757. package/src/pipeline/config/stages/webhook/modal/addCustomHeader.html +0 -48
  1758. package/src/pipeline/config/stages/webhook/webhookExecutionDetails.controller.ts +0 -96
  1759. package/src/pipeline/config/stages/webhook/webhookExecutionDetails.html +0 -82
  1760. package/src/pipeline/config/stages/webhook/webhookStage.html +0 -265
  1761. package/src/pipeline/config/stages/webhook/webhookStage.module.ts +0 -18
  1762. package/src/pipeline/config/targetSelect.component.ts +0 -22
  1763. package/src/pipeline/config/targetSelect.html +0 -7
  1764. package/src/pipeline/config/templates/configurePipelineTemplateModal.controller.spec.ts +0 -300
  1765. package/src/pipeline/config/templates/configurePipelineTemplateModal.controller.ts +0 -247
  1766. package/src/pipeline/config/templates/configurePipelineTemplateModal.html +0 -54
  1767. package/src/pipeline/config/templates/pipelineTemplate.module.ts +0 -23
  1768. package/src/pipeline/config/templates/templatePlanErrors.component.ts +0 -11
  1769. package/src/pipeline/config/templates/v2/configurePipelineTemplateModalV2.controller.spec.ts +0 -305
  1770. package/src/pipeline/config/templates/v2/configurePipelineTemplateModalV2.controller.ts +0 -263
  1771. package/src/pipeline/config/templates/v2/configurePipelineTemplateModalV2.html +0 -54
  1772. package/src/pipeline/config/templates/variable.component.ts +0 -11
  1773. package/src/pipeline/config/triggers/triggers.module.ts +0 -18
  1774. package/src/pipeline/config/warnings.popover.html +0 -18
  1775. package/src/pipeline/details/defaultExecutionDetails.html +0 -7
  1776. package/src/pipeline/details/executionDetailsSectionNav.component.ts +0 -11
  1777. package/src/pipeline/details/stageFailureMessage.component.ts +0 -11
  1778. package/src/pipeline/details/stageSummary.component.ts +0 -163
  1779. package/src/pipeline/details/stepExecutionDetails.component.ts +0 -52
  1780. package/src/pipeline/status/artifactList.component.ts +0 -11
  1781. package/src/presentation/autoScroll/autoScroll.directive.spec.js +0 -181
  1782. package/src/presentation/autoScroll/autoScroll.directive.ts +0 -79
  1783. package/src/presentation/collapsibleSection/collapsibleSection.directive.html +0 -12
  1784. package/src/presentation/collapsibleSection/collapsibleSection.directive.js +0 -57
  1785. package/src/presentation/isVisible/isVisible.directive.js +0 -13
  1786. package/src/presentation/label.component.ts +0 -11
  1787. package/src/presentation/linkWithClipboard.component.ts +0 -11
  1788. package/src/presentation/markdown.component.ts +0 -11
  1789. package/src/presentation/navigation/pageNavigator.component.spec.ts +0 -92
  1790. package/src/presentation/navigation/pageNavigator.component.ts +0 -131
  1791. package/src/presentation/navigation/pageSection.component.ts +0 -65
  1792. package/src/presentation/presentation.module.js +0 -39
  1793. package/src/presentation/sortToggle/sorttoggle.directive.html +0 -11
  1794. package/src/presentation/sortToggle/sorttoggle.directive.js +0 -43
  1795. package/src/presentation/standalone.view.html +0 -5
  1796. package/src/projects/configure/configureProject.modal.html +0 -28
  1797. package/src/projects/dashboard/cluster/inconsistentBuilds.tooltip.html +0 -3
  1798. package/src/projects/dashboard/cluster/projectCluster.controller.spec.js +0 -114
  1799. package/src/projects/dashboard/cluster/projectCluster.directive.html +0 -93
  1800. package/src/projects/dashboard/cluster/projectCluster.directive.js +0 -186
  1801. package/src/projects/dashboard/cluster/projectCluster.directive.spec.js +0 -119
  1802. package/src/projects/dashboard/cluster/projectClusterRefresh.tooltip.html +0 -7
  1803. package/src/projects/dashboard/clusterRefresh.tooltip.html +0 -7
  1804. package/src/projects/dashboard/dashboard.controller.js +0 -156
  1805. package/src/projects/dashboard/dashboard.controller.spec.js +0 -146
  1806. package/src/projects/dashboard/dashboard.html +0 -41
  1807. package/src/projects/dashboard/executionRefresh.tooltip.html +0 -7
  1808. package/src/projects/dashboard/pipeline/projectPipeline.component.ts +0 -11
  1809. package/src/projects/dashboard/regionFilter/regionFilter.component.html +0 -17
  1810. package/src/projects/dashboard/regionFilter/regionFilter.component.js +0 -28
  1811. package/src/projects/dashboard/regionFilter/regionFilter.service.js +0 -39
  1812. package/src/projects/projects.module.ts +0 -8
  1813. package/src/reactShims/AngularJSAdapter.tsx +0 -77
  1814. package/src/reactShims/modal.injector.ts +0 -18
  1815. package/src/reactShims/ngReact.ts +0 -42
  1816. package/src/reactShims/react.ga.ts +0 -15
  1817. package/src/reactShims/react.injector.ts +0 -91
  1818. package/src/reactShims/react.module.ts +0 -20
  1819. package/src/reactShims/react.uirouter.css +0 -5
  1820. package/src/reactShims/state.events.ts +0 -37
  1821. package/src/region/region.module.ts +0 -5
  1822. package/src/region/regionSelectField.directive.js +0 -59
  1823. package/src/region/regionSelectField.directive.spec.js +0 -67
  1824. package/src/search/global/globalSearch.module.ts +0 -8
  1825. package/src/search/global/globalsearch.component.ts +0 -11
  1826. package/src/search/infrastructure/infrastructure.controller.js +0 -185
  1827. package/src/search/infrastructure/infrastructure.html +0 -105
  1828. package/src/search/infrastructure/infrastructureSearchV2.component.ts +0 -15
  1829. package/src/search/infrastructure/projectSummaryPod.component.ts +0 -11
  1830. package/src/search/infrastructure/recentlyViewedItems.component.ts +0 -11
  1831. package/src/search/infrastructure/search.infrastructure.module.js +0 -20
  1832. package/src/search/infrastructure/searchResult.component.ts +0 -11
  1833. package/src/search/search.module.js +0 -11
  1834. package/src/search/widgets/search.component.ts +0 -15
  1835. package/src/securityGroup/AllSecurityGroupsCtrl.js +0 -122
  1836. package/src/securityGroup/filter/securityGroup.filter.component.ts +0 -11
  1837. package/src/securityGroup/label/firewallLabel.component.ts +0 -21
  1838. package/src/serverGroup/configure/common/basicSettingsMixin.controller.js +0 -103
  1839. package/src/serverGroup/configure/common/basicSettingsMixin.controller.spec.js +0 -127
  1840. package/src/serverGroup/configure/common/costFactor.html +0 -4
  1841. package/src/serverGroup/configure/common/costFactor.js +0 -36
  1842. package/src/serverGroup/configure/common/deployInitializer.component.html +0 -72
  1843. package/src/serverGroup/configure/common/deployInitializer.component.spec.ts +0 -75
  1844. package/src/serverGroup/configure/common/deployInitializer.component.ts +0 -156
  1845. package/src/serverGroup/configure/common/dirtyInstanceTypeNotification.component.html +0 -19
  1846. package/src/serverGroup/configure/common/dirtyInstanceTypeNotification.component.js +0 -16
  1847. package/src/serverGroup/configure/common/instanceArchetypeDirective.html +0 -52
  1848. package/src/serverGroup/configure/common/instanceArchetypeSelector.js +0 -72
  1849. package/src/serverGroup/configure/common/instanceArchtypeSelector.spec.js +0 -59
  1850. package/src/serverGroup/configure/common/instanceTypeDirective.html +0 -52
  1851. package/src/serverGroup/configure/common/instanceTypeSelector.directive.less +0 -7
  1852. package/src/serverGroup/configure/common/instanceTypeSelector.js +0 -78
  1853. package/src/serverGroup/configure/common/serverGroupConfiguration.service.ts +0 -26
  1854. package/src/serverGroup/configure/common/targetHealthyPercentageSelector.component.html +0 -13
  1855. package/src/serverGroup/configure/common/targetHealthyPercentageSelector.component.ts +0 -11
  1856. package/src/serverGroup/configure/common/v2InstanceTypeSelector.component.ts +0 -109
  1857. package/src/serverGroup/configure/common/v2instanceArchetype.directive.html +0 -39
  1858. package/src/serverGroup/configure/common/v2instanceArchetypeSelector.component.ts +0 -120
  1859. package/src/serverGroup/details/multipleServerGroup.component.html +0 -11
  1860. package/src/serverGroup/details/multipleServerGroup.component.js +0 -15
  1861. package/src/serverGroup/details/multipleServerGroups.controller.js +0 -148
  1862. package/src/serverGroup/details/multipleServerGroups.controller.spec.js +0 -130
  1863. package/src/serverGroup/details/multipleServerGroups.view.html +0 -39
  1864. package/src/serverGroup/details/runningTasks.component.ts +0 -65
  1865. package/src/serverGroup/details/scalingActivities/viewScalingActivitiesLink.component.ts +0 -12
  1866. package/src/serverGroup/details/userData.html +0 -14
  1867. package/src/serverGroup/templates/index.ts +0 -3
  1868. package/src/serverGroupManager/serverGroupManager.module.ts +0 -7
  1869. package/src/slack/slackChannelSelector.component.ts +0 -12
  1870. package/src/snapshot/diff/snapshotDiff.modal.controller.js +0 -129
  1871. package/src/snapshot/diff/snapshotDiff.modal.controller.spec.js +0 -71
  1872. package/src/snapshot/diff/snapshotDiff.modal.html +0 -58
  1873. package/src/snapshot/diff/viewSnapshotDiffButton.component.js +0 -51
  1874. package/src/styleguide/styleguide.module.ts +0 -7
  1875. package/src/subnet/subnet.module.ts +0 -5
  1876. package/src/subnet/subnetTag.component.html +0 -0
  1877. package/src/subnet/subnetTag.component.js +0 -14
  1878. package/src/task/modal/reason.directive.html +0 -11
  1879. package/src/task/modal/reason.directive.js +0 -18
  1880. package/src/task/monitor/taskMonitor.directive.less +0 -8
  1881. package/src/task/monitor/taskMonitor.directive.ts +0 -13
  1882. package/src/task/monitor/taskMonitor.module.js +0 -9
  1883. package/src/task/platformHealthOverrideMessage.component.ts +0 -60
  1884. package/src/task/platformHealthOverrideMessage.html +0 -10
  1885. package/src/task/statusGlyph.component.ts +0 -11
  1886. package/src/task/task.module.js +0 -27
  1887. package/src/task/taskProgressBar.directive.js +0 -14
  1888. package/src/task/tasks.controller.js +0 -300
  1889. package/src/task/tasks.controller.spec.js +0 -236
  1890. package/src/task/tasks.html +0 -204
  1891. package/src/task/verification/userVerification.directive.html +0 -18
  1892. package/src/task/verification/userVerification.directive.js +0 -62
  1893. package/src/task/verification/userVerification.directive.less +0 -23
  1894. package/src/task/verification/userVerification.directive.spec.js +0 -119
  1895. package/src/types/promise.d.ts +0 -148
  1896. package/src/utils/angular-messages.d.ts +0 -3
  1897. package/src/utils/angular-sanitize.d.ts +0 -3
  1898. package/src/utils/angular-spinner.d.ts +0 -5
  1899. package/src/utils/clipboard/copyToClipboard.component.ts +0 -19
  1900. package/src/utils/failedToInstantiateModule.ts +0 -12
  1901. package/src/utils/infiniteScroll.directive.js +0 -79
  1902. package/src/utils/json/diffView.component.ts +0 -8
  1903. package/src/utils/renderIfFeature.component.ts +0 -23
  1904. package/src/utils/selectOnDblClick.directive.ts +0 -37
  1905. package/src/utils/ui-select.d.ts +0 -3
  1906. package/src/utils/uibModalRejections.ts +0 -18
  1907. package/src/utils/utils.module.js +0 -25
  1908. package/src/utils/waypoints/waypoint.directive.js +0 -18
  1909. package/src/utils/waypoints/waypoint.service.ts +0 -78
  1910. package/src/utils/waypoints/waypointContainer.directive.js +0 -23
  1911. package/src/validation/triggerValidation.directive.js +0 -22
  1912. package/src/validation/validateUnique.directive.js +0 -36
  1913. package/src/validation/validateUnique.directive.spec.js +0 -110
  1914. package/src/validation/validation.module.js +0 -15
  1915. package/src/validation/validationError.directive.js +0 -15
  1916. package/src/validation/validationError.html +0 -1
  1917. package/src/widgets/accountNamespaceClusterSelector.component.html +0 -31
  1918. package/src/widgets/accountNamespaceClusterSelector.component.js +0 -101
  1919. package/src/widgets/accountRegionClusterSelector.component.html +0 -43
  1920. package/src/widgets/accountRegionClusterSelector.component.js +0 -133
  1921. package/src/widgets/accountRegionClusterSelectorWrapper.component.ts +0 -31
  1922. package/src/widgets/actionIcons/actionIcons.component.html +0 -10
  1923. package/src/widgets/actionIcons/actionIcons.component.js +0 -16
  1924. package/src/widgets/cluster/clusterMatches.component.ts +0 -17
  1925. package/src/widgets/scopeClusterSelector.directive.html +0 -32
  1926. package/src/widgets/scopeClusterSelector.directive.js +0 -52
  1927. package/src/widgets/spelText/spelAutocomplete.service.js +0 -20
  1928. package/src/widgets/spelText/spelSelect.component.js +0 -85
  1929. package/src/widgets/spelText/spelText.decorator.js +0 -77
  1930. package/src/widgets/spinners/spinner.component.ts +0 -12
  1931. package/src/widgets/widgets.module.ts +0 -20
  1932. package/src/yamlEditor/yamlEditor.component.ts +0 -11
  1933. /package/dist/{bootstrap/angular.config.d.ts → account/management/accountmanagement.states.d.ts} +0 -0
  1934. /package/dist/{reactShims → analytics}/react.ga.d.ts +0 -0
  1935. /package/dist/{bootstrap/appInit.d.ts → banner/global/globalbanner.states.d.ts} +0 -0
  1936. /package/dist/{bootstrap/spinnaker.component.d.ts → pipeline/config/stages/runMultiplePipelines/runMultiplePipelinesStage.d.ts} +0 -0
  1937. /package/src/pipeline/config/preconditions/{preconditionList.directive.less → preconditionList.less} +0 -0
@@ -1,22 +1,1764 @@
1
+ import type { StateService } from '@uirouter/core';
2
+ import { useRouter } from '@uirouter/react';
3
+ import { cloneDeep, get, has, set } from 'lodash';
1
4
  import React from 'react';
5
+ import { Modal } from 'react-bootstrap';
2
6
 
7
+ import { DeleteApplicationSection } from './DeleteApplicationSection';
8
+ import type { IAccountDetails, IAggregatedAccounts } from '../../account/AccountService';
9
+ import { AccountService } from '../../account/AccountService';
10
+ import type { Application } from '../application.model';
11
+ import { ClusterMatcher } from '../../cluster';
12
+ import { SETTINGS } from '../../config/settings';
13
+ import { ConfirmationModalService } from '../../confirmationModal';
14
+ import type { ICustomBannerConfig } from './customBanner/CustomBannerConfig';
15
+ import { CustomBannerConfig } from './customBanner/CustomBannerConfig';
16
+ import type { IDefaultTagFilterConfig } from './defaultTagFilter/DefaultTagFilterConfig';
17
+ import { DefaultTagFilterConfig } from './defaultTagFilter/DefaultTagFilterConfig';
18
+ import type { INotification } from '../../domain';
19
+ import { ConfigSectionFooter } from './footer/ConfigSectionFooter';
20
+ import { HelpField } from '../../help';
21
+ import { ManagedResourceConfig } from '../../managed/externals/ManagedResourceConfig';
22
+ import { ModalClose } from '../../modal';
23
+ import type { IPermissions } from '../modal/PermissionsConfigurer';
24
+ import { PermissionsConfigurer } from '../modal/PermissionsConfigurer';
25
+ import { NotificationsList } from '../../notification';
3
26
  import type { IOverridableProps } from '../../overrideRegistry';
4
- import { Overridable } from '../../overrideRegistry';
5
- import { AngularJSAdapter } from '../../reactShims';
27
+ import { overridableComponent } from '../../overrideRegistry';
28
+ import type { IModalComponentProps } from '../../presentation';
29
+ import { ReactModal, ReactSelectInput } from '../../presentation';
30
+ import { Markdown } from '../../presentation/Markdown';
31
+ import { PageNavigator, PageSection } from '../../presentation/navigation';
32
+ import { ApplicationReader } from '../service/ApplicationReader';
33
+ import { ApplicationWriter } from '../service/ApplicationWriter';
34
+ import { SnapshotReader } from '../../snapshot/SnapshotReader';
35
+ import { SnapshotWriter } from '../../snapshot/SnapshotWriter';
36
+ import { TaskReader } from '../../task';
37
+ import { DiffView } from '../../utils/json/DiffView';
38
+ import { JsonUtils } from '../../utils/json/JsonUtils';
39
+ import { UUIDGenerator } from '../../utils/uuid.service';
40
+ import type { IClusterMatch } from '../../widgets';
41
+ import { ClusterMatches } from '../../widgets';
6
42
 
7
- export interface IApplicationConfigDetailsProps extends IOverridableProps {}
43
+ export interface IApplicationConfigDetailsProps extends IOverridableProps {
44
+ app: Application;
45
+ }
46
+
47
+ interface IApplicationConfigComponentProps extends IApplicationConfigDetailsProps {
48
+ stateService: StateService;
49
+ }
50
+
51
+ interface ISaveState {
52
+ isSaving: boolean;
53
+ saveError: boolean;
54
+ }
55
+
56
+ interface IApplicationConfigState {
57
+ bannerConfigProps: ISaveState;
58
+ defaultTagFilterProps: ISaveState;
59
+ hasManagedResources: boolean;
60
+ notifications: INotification[];
61
+ configured: boolean;
62
+ }
63
+
64
+ export class ApplicationConfigComponent extends React.Component<
65
+ IApplicationConfigComponentProps,
66
+ IApplicationConfigState
67
+ > {
68
+ public state: IApplicationConfigState = {
69
+ bannerConfigProps: {
70
+ isSaving: false,
71
+ saveError: false,
72
+ },
73
+ defaultTagFilterProps: {
74
+ isSaving: false,
75
+ saveError: false,
76
+ },
77
+ hasManagedResources: false,
78
+ notifications: getInitialNotifications(this.props.app),
79
+ configured: Boolean(this.props.app.attributes && this.props.app.attributes.email),
80
+ };
81
+
82
+ public componentDidMount(): void {
83
+ const { app } = this.props;
84
+
85
+ if (app.notFound || app.hasError) {
86
+ this.props.stateService.go('home.infrastructure', null, { location: 'replace' });
87
+ return;
88
+ }
89
+
90
+ app.attributes.instancePort = app.attributes.instancePort || SETTINGS.defaultInstancePort || null;
91
+
92
+ if (SETTINGS.feature.managedResources) {
93
+ app
94
+ .getDataSource('managedResources')
95
+ .ready()
96
+ .then(({ hasManagedResources }: { hasManagedResources: boolean }) => this.setState({ hasManagedResources }));
97
+ }
98
+ }
99
+
100
+ private updateBannerConfigs = (bannerConfigs: ICustomBannerConfig[]) => {
101
+ const applicationAttributes = cloneDeep(this.props.app.attributes);
102
+ applicationAttributes.customBanners = bannerConfigs;
103
+ this.setState({ bannerConfigProps: { isSaving: true, saveError: false } });
104
+ ApplicationWriter.updateApplication(applicationAttributes)
105
+ .then(() => {
106
+ this.props.app.attributes = applicationAttributes;
107
+ this.setState({ bannerConfigProps: { isSaving: false, saveError: false } });
108
+ })
109
+ .catch(() => this.setState({ bannerConfigProps: { isSaving: false, saveError: true } }));
110
+ };
111
+
112
+ private updateDefaultTagFilterConfigs = (tagConfigs: IDefaultTagFilterConfig[]) => {
113
+ const applicationAttributes = cloneDeep(this.props.app.attributes);
114
+ applicationAttributes.defaultFilteredTags = tagConfigs;
115
+ this.setState({ defaultTagFilterProps: { isSaving: true, saveError: false } });
116
+ ApplicationWriter.updateApplication(applicationAttributes)
117
+ .then(() => {
118
+ this.props.app.attributes = applicationAttributes;
119
+ this.setState({ defaultTagFilterProps: { isSaving: false, saveError: false } });
120
+ })
121
+ .catch(() => this.setState({ defaultTagFilterProps: { isSaving: false, saveError: true } }));
122
+ };
123
+
124
+ private updateNotifications = (notifications: INotification[]) => {
125
+ this.setState({ notifications });
126
+ };
127
+
128
+ private onAttributesSaved = (attributes: any) => {
129
+ this.props.app.attributes = attributes;
130
+ this.setState({ configured: Boolean(attributes.email) });
131
+ };
132
+
133
+ public render() {
134
+ return (
135
+ <div
136
+ className="application-config-page"
137
+ style={{
138
+ boxSizing: 'border-box',
139
+ margin: 0,
140
+ overflowY: 'auto',
141
+ paddingLeft: 0,
142
+ paddingRight: 15,
143
+ width: '100%',
144
+ }}
145
+ data-sticky-headers={true}
146
+ >
147
+ <PageNavigator scrollableContainer="[data-sticky-headers]" deepLinkParam="section">
148
+ {this.renderSections()}
149
+ </PageNavigator>
150
+ </div>
151
+ );
152
+ }
153
+
154
+ private renderSections(): React.ReactNode[] {
155
+ const { app } = this.props;
156
+ const sections = [
157
+ <PageSection key="location" pageKey="location" label="Application Attributes">
158
+ <ApplicationAttributes application={app} onAttributesSaved={this.onAttributesSaved} />
159
+ </PageSection>,
160
+ ];
161
+
162
+ return this.state.configured ? sections.concat(this.renderConfiguredSections()) : sections;
163
+ }
164
+
165
+ private renderConfiguredSections(): React.ReactElement[] {
166
+ const { app } = this.props;
167
+ const { bannerConfigProps, defaultTagFilterProps, hasManagedResources, notifications } = this.state;
168
+
169
+ return [
170
+ <PageSection
171
+ key="managed-resources"
172
+ pageKey="managed-resources"
173
+ label="Managed Resources"
174
+ visible={Boolean(SETTINGS.feature.managedResources && hasManagedResources)}
175
+ >
176
+ <ManagedResourceConfig application={app} />
177
+ </PageSection>,
178
+ <PageSection key="notifications" pageKey="notifications" label="Notifications">
179
+ <p>You can edit notification settings for this application</p>
180
+ <NotificationsList
181
+ application={app}
182
+ level="application"
183
+ notifications={notifications}
184
+ updateNotifications={this.updateNotifications}
185
+ />
186
+ </PageSection>,
187
+ <PageSection key="features" pageKey="features" label="Features">
188
+ <ApplicationDataSourceEditor application={app} />
189
+ </PageSection>,
190
+ <PageSection key="links" pageKey="links" label="Links" noWrapper={true}>
191
+ <ApplicationLinksConfig application={app} />
192
+ </PageSection>,
193
+ <PageSection key="chaos" pageKey="chaos" label="Chaos Monkey" visible={SETTINGS.feature.chaosMonkey}>
194
+ <ChaosMonkeyConfigSection application={app} />
195
+ </PageSection>,
196
+ <PageSection key="traffic-guards" pageKey="traffic-guards" label="Traffic Guards">
197
+ <TrafficGuardConfigSection application={app} />
198
+ </PageSection>,
199
+ <PageSection key="snapshot" pageKey="snapshot" label="Serialize Application" visible={SETTINGS.feature.snapshots}>
200
+ <ApplicationSnapshotSection application={app} />
201
+ </PageSection>,
202
+ <PageSection key="banner" pageKey="banner" label="Custom Banners">
203
+ <CustomBannerConfig
204
+ bannerConfigs={app.attributes.customBanners}
205
+ isSaving={bannerConfigProps.isSaving}
206
+ saveError={bannerConfigProps.saveError}
207
+ updateBannerConfigs={this.updateBannerConfigs}
208
+ />
209
+ </PageSection>,
210
+ <PageSection key="default-filters" pageKey="default-filters" label="Default Filters">
211
+ <DefaultTagFilterConfig
212
+ defaultTagFilterConfigs={app.attributes.defaultFilteredTags}
213
+ isSaving={defaultTagFilterProps.isSaving}
214
+ saveError={defaultTagFilterProps.saveError}
215
+ updateDefaultTagFilterConfigs={this.updateDefaultTagFilterConfigs}
216
+ />
217
+ </PageSection>,
218
+ <PageSection key="delete" pageKey="delete" label="Delete Application">
219
+ <DeleteApplicationSection application={app} />
220
+ </PageSection>,
221
+ ];
222
+ }
223
+ }
224
+
225
+ const OverridableApplicationConfig = overridableComponent(ApplicationConfigComponent, 'applicationConfigView');
226
+
227
+ export function ApplicationConfig(props: IApplicationConfigDetailsProps) {
228
+ const { stateService } = useRouter();
229
+ return <OverridableApplicationConfig {...props} stateService={stateService} />;
230
+ }
231
+
232
+ function getInitialNotifications(application: Application): INotification[] {
233
+ const notifications = get(application, 'attributes.notifications', []);
234
+ return Array.isArray(notifications) ? notifications : [];
235
+ }
236
+
237
+ export function ApplicationAttributes({
238
+ application,
239
+ onAttributesSaved,
240
+ }: {
241
+ application: Application;
242
+ onAttributesSaved: (attributes: any) => void;
243
+ }) {
244
+ const attributes = application.attributes || {};
245
+ const permissions = SETTINGS.feature.fiatEnabled ? formatPermissions(attributes.permissions) : null;
246
+ const showEditor = () => {
247
+ ReactModal.show<IApplicationAttributesFormProps>(
248
+ ApplicationAttributesForm,
249
+ { application, isConfigured: Boolean(attributes.email), onAttributesSaved },
250
+ { dialogClassName: 'modal-lg' },
251
+ );
252
+ };
253
+
254
+ return (
255
+ <>
256
+ <dl className="dl-horizontal">
257
+ <dt>Owner</dt>
258
+ <dd>{attributes.email}</dd>
259
+ {attributes.appGroup && <dt>App Group</dt>}
260
+ {attributes.appGroup && <dd>{attributes.appGroup}</dd>}
261
+ {attributes.aliases && <dt>Alias(es)</dt>}
262
+ {attributes.aliases && <dd>{attributes.aliases}</dd>}
263
+ {SETTINGS.feature.pagerDuty && attributes.pdApiKey && <dt>Pager Duty</dt>}
264
+ {SETTINGS.feature.pagerDuty && attributes.pdApiKey && <dd>{attributes.pdApiKey}</dd>}
265
+ {SETTINGS.feature.slack && attributes.slackChannel && attributes.slackChannel.name && <dt>Slack Channel</dt>}
266
+ {SETTINGS.feature.slack && attributes.slackChannel && attributes.slackChannel.name && (
267
+ <dd>
268
+ <a
269
+ target="_blank"
270
+ href={`${get(SETTINGS, 'slack.baseUrl', '')}/app_redirect?channel=${encodeURIComponent(
271
+ attributes.slackChannel.id,
272
+ )}`}
273
+ >
274
+ #{attributes.slackChannel.name}
275
+ </a>
276
+ </dd>
277
+ )}
278
+ {attributes.repoType && <dt>Source Repo Type</dt>}
279
+ {attributes.repoType && <dd>{attributes.repoType}</dd>}
280
+ {attributes.repoProjectKey && <dt>Source Repo Project</dt>}
281
+ {attributes.repoProjectKey && <dd>{attributes.repoProjectKey}</dd>}
282
+ {attributes.repoSlug && <dt>Source Repo</dt>}
283
+ {attributes.repoSlug && <dd>{attributes.repoSlug}</dd>}
284
+ <dt>Description</dt>
285
+ <dd>{attributes.description}</dd>
286
+ <dt>Account(s)</dt>
287
+ <dd>{(attributes.accounts || []).join(', ')}</dd>
288
+ {!!(attributes.cloudProviders || []).length && <dt>Cloud Provider(s)</dt>}
289
+ {!!(attributes.cloudProviders || []).length && <dd>{attributes.cloudProviders.join(', ')}</dd>}
290
+ {(attributes.platformHealthOnly || attributes.platformHealthOnlyShowOverride) && <dt>Instance health</dt>}
291
+ {(attributes.platformHealthOnly || attributes.platformHealthOnlyShowOverride) && (
292
+ <dd>{getHealthMessage(attributes)}</dd>
293
+ )}
294
+ <dt>Instance Port</dt>
295
+ <dd>{attributes.instancePort}</dd>
296
+ {(attributes.enableRestartRunningExecutions || attributes.enableRerunActiveExecutions) && (
297
+ <dt>Pipeline Behavior</dt>
298
+ )}
299
+ {attributes.enableRestartRunningExecutions && <dd>Allows restarting running pipelines</dd>}
300
+ {attributes.enableRerunActiveExecutions && <dd>Allows re-running active executions</dd>}
301
+ {attributes.legacyUdf && <dt>User Data Format</dt>}
302
+ {attributes.legacyUdf && <dd>This application requires legacy user data format.</dd>}
303
+ {permissions && <dt>Permissions</dt>}
304
+ {permissions && <dd>{permissions}</dd>}
305
+ </dl>
306
+ {!attributes.email && <p>This application has not been configured.</p>}
307
+ <button className="btn btn-link" onClick={showEditor}>
308
+ <span className="glyphicon glyphicon-cog" />{' '}
309
+ {attributes.email ? 'Edit Application Attributes' : 'Create Application'}
310
+ </button>
311
+ </>
312
+ );
313
+ }
314
+
315
+ export interface IApplicationAttributesFormProps extends IModalComponentProps<any> {
316
+ application: Application;
317
+ isConfigured: boolean;
318
+ onAttributesSaved: (attributes: any) => void;
319
+ }
320
+
321
+ export function ApplicationAttributesForm({
322
+ application,
323
+ closeModal,
324
+ dismissModal,
325
+ isConfigured,
326
+ onAttributesSaved,
327
+ }: IApplicationAttributesFormProps) {
328
+ const [draft, setDraft] = React.useState<any>(() =>
329
+ attributesToDraft(application.attributes || {}, application.name),
330
+ );
331
+ const [saving, setSaving] = React.useState(false);
332
+ const [saveError, setSaveError] = React.useState(false);
333
+ const [validationError, setValidationError] = React.useState<string | null>(null);
334
+ const [availableCloudProviders, setAvailableCloudProviders] = React.useState<string[]>([]);
335
+ const update = (field: string, value: any) => setDraft((prev: any) => ({ ...prev, [field]: value }));
336
+ const selectedCloudProviders = splitCsv(draft.cloudProviders);
337
+ const updateCloudProviders = (event: React.ChangeEvent<HTMLInputElement>) => {
338
+ update('cloudProviders', ((event.target.value || []) as string[]).join(', '));
339
+ };
340
+ const updatePermissions = (permissions: IPermissions) => update('permissions', permissions);
341
+
342
+ React.useEffect(() => {
343
+ let mounted = true;
344
+ AccountService.listProviders().then((providers: string[]) => mounted && setAvailableCloudProviders(providers));
345
+ return () => {
346
+ mounted = false;
347
+ };
348
+ }, []);
349
+
350
+ const saveAttributes = (event: React.FormEvent<HTMLFormElement>) => {
351
+ event.preventDefault();
352
+ const draftError = validateApplicationAttributesDraft(draft, availableCloudProviders);
353
+ if (draftError) {
354
+ setValidationError(draftError);
355
+ return;
356
+ }
357
+
358
+ const nextAttributes = draftToAttributes(draft, application.attributes || {});
359
+ setSaving(true);
360
+ setSaveError(false);
361
+ setValidationError(null);
362
+ ApplicationWriter.updateApplication(nextAttributes)
363
+ .then((task) => TaskReader.waitUntilTaskCompletes(task))
364
+ .then(() => {
365
+ onAttributesSaved(nextAttributes);
366
+ application.refresh(true);
367
+ setSaving(false);
368
+ closeModal?.(nextAttributes);
369
+ })
370
+ .catch(() => {
371
+ setSaveError(true);
372
+ setSaving(false);
373
+ });
374
+ };
375
+
376
+ return (
377
+ <form role="form" className="container-fluid form-horizontal" noValidate onSubmit={saveAttributes}>
378
+ <ModalClose dismiss={dismissModal || (() => {})} />
379
+ <Modal.Header>
380
+ <Modal.Title>{isConfigured ? 'Edit Application' : 'Create Application'}</Modal.Title>
381
+ </Modal.Header>
382
+ <Modal.Body>
383
+ {!isConfigured && <p>This application has not been configured.</p>}
384
+ <div className="form-group row">
385
+ <div className="col-md-3 sm-label-right">Name</div>
386
+ <div className="col-md-7 form-control-static">{draft.name}</div>
387
+ </div>
388
+ <TextField label="Owner Email" value={draft.email} onChange={(value) => update('email', value)} />
389
+ <TextField label="App Group" value={draft.appGroup} onChange={(value) => update('appGroup', value)} />
390
+ <TextField label="Alias(es)" value={draft.aliases} onChange={(value) => update('aliases', value)} />
391
+ {SETTINGS.feature.pagerDuty && (
392
+ <TextField label="Pager Duty" value={draft.pdApiKey} onChange={(value) => update('pdApiKey', value)} />
393
+ )}
394
+ {SETTINGS.feature.slack && (
395
+ <>
396
+ <TextField
397
+ label="Slack Channel Name"
398
+ value={draft.slackChannelName}
399
+ onChange={(value) => update('slackChannelName', value)}
400
+ />
401
+ <TextField
402
+ label="Slack Channel ID"
403
+ value={draft.slackChannelId}
404
+ onChange={(value) => update('slackChannelId', value)}
405
+ />
406
+ </>
407
+ )}
408
+ <div className="form-group row">
409
+ <div className="col-md-3 sm-label-right">Repo Type</div>
410
+ <div className="col-md-7">
411
+ <select
412
+ className="form-control input-sm"
413
+ name="repoType"
414
+ value={draft.repoType || ''}
415
+ onChange={(event) => update('repoType', event.target.value)}
416
+ >
417
+ <option value="">Select Repo Type</option>
418
+ {(SETTINGS.gitSources || ['stash', 'github', 'bitbucket', 'gitlab']).map((repoType) => (
419
+ <option key={repoType} value={repoType}>
420
+ {repoType}
421
+ </option>
422
+ ))}
423
+ </select>
424
+ </div>
425
+ </div>
426
+ {draft.repoType && (
427
+ <>
428
+ <TextField
429
+ label="Repo Project"
430
+ value={draft.repoProjectKey}
431
+ placeholder="Enter your source repository project name"
432
+ onChange={(value) => update('repoProjectKey', value)}
433
+ />
434
+ <TextField
435
+ label="Repo Name"
436
+ value={draft.repoSlug}
437
+ placeholder="Enter your source repository name (not the url)"
438
+ onChange={(value) => update('repoSlug', value)}
439
+ />
440
+ </>
441
+ )}
442
+ <TextAreaField
443
+ label="Description"
444
+ value={draft.description}
445
+ onChange={(value) => update('description', value)}
446
+ />
447
+ <div className="form-group">
448
+ <label className="col-md-3 sm-label-right">Account(s)</label>
449
+ <div className="col-md-7 form-control-static">
450
+ {draft.accounts || '(none)'}
451
+ <div className="small text-muted">Accounts are managed by Front50 and cannot be changed here.</div>
452
+ </div>
453
+ </div>
454
+ <div className="form-group">
455
+ <label className="col-md-3 sm-label-right">Cloud Provider(s)</label>
456
+ <div className="col-md-7">
457
+ {availableCloudProviders.length ? (
458
+ <ReactSelectInput
459
+ name="cloudProviders"
460
+ multi={true}
461
+ value={selectedCloudProviders}
462
+ stringOptions={availableCloudProviders}
463
+ onChange={updateCloudProviders}
464
+ />
465
+ ) : (
466
+ <p className="form-control-static">{draft.cloudProviders || '(none)'}</p>
467
+ )}
468
+ </div>
469
+ </div>
470
+ <CheckboxField
471
+ groupLabel="Instance Health"
472
+ label="Consider only cloud provider health when executing tasks"
473
+ helpFieldId="application.platformHealthOnly"
474
+ checked={draft.platformHealthOnly}
475
+ onChange={(value) => update('platformHealthOnly', value)}
476
+ />
477
+ <CheckboxField
478
+ label="Show a health override option for each operation"
479
+ helpFieldId="application.showPlatformHealthOverride"
480
+ checked={draft.platformHealthOnlyShowOverride}
481
+ offset={true}
482
+ onChange={(value) => update('platformHealthOnlyShowOverride', value)}
483
+ />
484
+ <TextField
485
+ label="Instance Port"
486
+ helpFieldId="application.instance.port"
487
+ value={draft.instancePort}
488
+ onChange={(value) => update('instancePort', value)}
489
+ />
490
+ <CheckboxField
491
+ groupLabel="Pipeline Behavior"
492
+ label="Allow restarting running pipelines"
493
+ helpFieldId="application.enableRestartRunningExecutions"
494
+ checked={draft.enableRestartRunningExecutions}
495
+ onChange={(value) => update('enableRestartRunningExecutions', value)}
496
+ />
497
+ <CheckboxField
498
+ label="Allow re-running active executions"
499
+ helpFieldId="application.enableRerunActiveExecutions"
500
+ checked={draft.enableRerunActiveExecutions}
501
+ offset={true}
502
+ onChange={(value) => update('enableRerunActiveExecutions', value)}
503
+ />
504
+ <CheckboxField
505
+ label="This application requires legacy user data format"
506
+ checked={draft.legacyUdf}
507
+ onChange={(value) => update('legacyUdf', value)}
508
+ />
509
+ {SETTINGS.feature.fiatEnabled && (
510
+ <div className="form-group">
511
+ <label className="col-md-3 sm-label-right">
512
+ Permissions <HelpField id="application.permissions" />
513
+ </label>
514
+ <div className="col-md-7">
515
+ <PermissionsConfigurer
516
+ permissions={draft.permissions}
517
+ requiredGroupMembership={[]}
518
+ onPermissionsChange={updatePermissions}
519
+ />
520
+ </div>
521
+ </div>
522
+ )}
523
+ {validationError && <div className="error-message">{validationError}</div>}
524
+ </Modal.Body>
525
+ <Modal.Footer>
526
+ <div className="text-right">
527
+ {isConfigured && (
528
+ <button type="button" className="btn btn-default" onClick={dismissModal || (() => {})} disabled={saving}>
529
+ Cancel
530
+ </button>
531
+ )}{' '}
532
+ <button type="submit" className="btn btn-primary" disabled={saving || !draft.email}>
533
+ {saving ? 'Saving...' : 'Save Changes'}
534
+ </button>
535
+ {saveError && <div className="error-message">There was an error saving your changes. Please try again.</div>}
536
+ </div>
537
+ </Modal.Footer>
538
+ </form>
539
+ );
540
+ }
541
+
542
+ interface IApplicationDataSourceEditorState {
543
+ explicitlyDisabled: string[];
544
+ explicitlyEnabled: string[];
545
+ model: { [key: string]: boolean };
546
+ original: string;
547
+ saveError: boolean;
548
+ saving: boolean;
549
+ }
550
+
551
+ export class ApplicationDataSourceEditor extends React.Component<
552
+ { application: Application },
553
+ IApplicationDataSourceEditorState
554
+ > {
555
+ public state: IApplicationDataSourceEditorState = this.getInitialState();
556
+
557
+ private getVisibleDataSources() {
558
+ return this.props.application.dataSources.filter((ds) => ds.visible && ds.optional && !ds.hidden);
559
+ }
560
+
561
+ private getInitialState(): IApplicationDataSourceEditorState {
562
+ const { application } = this.props;
563
+ if (!application.attributes) {
564
+ application.attributes = {};
565
+ }
566
+ if (!application.attributes.dataSources) {
567
+ application.attributes.dataSources = { enabled: [], disabled: [] };
568
+ }
569
+ const model: { [key: string]: boolean } = {};
570
+ this.getVisibleDataSources().forEach((ds) => {
571
+ model[ds.key] = !ds.disabled;
572
+ });
573
+
574
+ return {
575
+ explicitlyDisabled: application.attributes.dataSources.disabled,
576
+ explicitlyEnabled: application.attributes.dataSources.enabled,
577
+ model,
578
+ original: JSON.stringify(model),
579
+ saveError: false,
580
+ saving: false,
581
+ };
582
+ }
583
+
584
+ private isDirty(): boolean {
585
+ return JSON.stringify(this.state.model) !== this.state.original;
586
+ }
587
+
588
+ private dataSourceChanged = (key: string) => {
589
+ this.setState((state) => {
590
+ const model = { ...state.model, [key]: !state.model[key] };
591
+ const explicitlyEnabled = model[key]
592
+ ? addUnique(state.explicitlyEnabled, key)
593
+ : removeValue(state.explicitlyEnabled, key);
594
+ const explicitlyDisabled = model[key]
595
+ ? removeValue(state.explicitlyDisabled, key)
596
+ : addUnique(state.explicitlyDisabled, key);
597
+
598
+ return { explicitlyDisabled, explicitlyEnabled, model };
599
+ });
600
+ };
601
+
602
+ private revert = () => {
603
+ this.setState(this.getInitialState());
604
+ };
605
+
606
+ private save = () => {
607
+ const { application } = this.props;
608
+ const newDataSources = { enabled: this.state.explicitlyEnabled, disabled: this.state.explicitlyDisabled };
609
+ this.setState({ saving: true, saveError: false });
610
+
611
+ ApplicationWriter.updateApplication({
612
+ name: application.name,
613
+ accounts: application.attributes.accounts,
614
+ dataSources: newDataSources,
615
+ })
616
+ .then((task) => TaskReader.waitUntilTaskCompletes(task))
617
+ .then(() => {
618
+ application.attributes.dataSources = newDataSources;
619
+ ApplicationReader.setDisabledDataSources(application);
620
+ application.refresh(true);
621
+ this.setState({ ...this.getInitialState(), saving: false });
622
+ })
623
+ .catch(() => this.setState({ saving: false, saveError: true }));
624
+ };
8
625
 
9
- @Overridable('applicationConfigView')
10
- export class ApplicationConfig extends React.Component<IApplicationConfigDetailsProps> {
11
626
  public render() {
12
- const templateUrl = require('./applicationConfig.view.html');
627
+ const dataSources = this.getVisibleDataSources();
628
+
13
629
  return (
14
- <AngularJSAdapter
15
- {...this.props}
16
- templateUrl={templateUrl}
17
- controller="ApplicationConfigController"
18
- controllerAs="config"
630
+ <>
631
+ <p>If you don't need or want certain features for your application, you can disable them here.</p>
632
+ <p>Disabling a feature only changes the display in Spinnaker - it won't delete any actual data.</p>
633
+ {dataSources.map((dataSource) => (
634
+ <div key={dataSource.key} className="checkbox application-feature-option">
635
+ <label className="application-feature-label">
636
+ <input
637
+ type="checkbox"
638
+ checked={this.state.model[dataSource.key]}
639
+ onChange={() => this.dataSourceChanged(dataSource.key)}
640
+ />{' '}
641
+ <strong className="application-feature-name">{dataSource.label}</strong>
642
+ </label>
643
+ {dataSource.description && (
644
+ <div className="application-feature-description">
645
+ <Markdown message={dataSource.description} />
646
+ </div>
647
+ )}
648
+ </div>
649
+ ))}
650
+ <ConfigSectionFooter
651
+ isDirty={this.isDirty()}
652
+ isValid={true}
653
+ isSaving={this.state.saving}
654
+ saveError={this.state.saveError}
655
+ onRevertClicked={this.revert}
656
+ onSaveClicked={this.save}
657
+ />
658
+ </>
659
+ );
660
+ }
661
+ }
662
+
663
+ type InstanceLink = { title: string; path: string };
664
+ type LinkSection = { title: string; cloudProviders?: string[]; links: InstanceLink[] };
665
+
666
+ function ApplicationLinksConfig({ application }: { application: Application }) {
667
+ const applicationCloudProviders = application.attributes.cloudProviders || [];
668
+ const initialSections = React.useMemo(() => getInitialLinkSections(application), [application]);
669
+ const [sections, setSections] = React.useState<LinkSection[]>(initialSections);
670
+ const [original, setOriginal] = React.useState(JSON.stringify(initialSections));
671
+ const [saving, setSaving] = React.useState(false);
672
+ const [saveError, setSaveError] = React.useState(false);
673
+ const isDirty = JSON.stringify(sections) !== original;
674
+
675
+ const updateSection = (index: number, updates: Partial<LinkSection>) => {
676
+ setSections((prev) => prev.map((section, i) => (i === index ? { ...section, ...updates } : section)));
677
+ };
678
+ const updateLink = (sectionIndex: number, linkIndex: number, updates: Partial<InstanceLink>) => {
679
+ setSections((prev) =>
680
+ prev.map((section, i) => {
681
+ if (i !== sectionIndex) {
682
+ return section;
683
+ }
684
+ return {
685
+ ...section,
686
+ links: section.links.map((link, j) => (j === linkIndex ? { ...link, ...updates } : link)),
687
+ };
688
+ }),
689
+ );
690
+ };
691
+ const toggleSectionProvider = (sectionIndex: number, provider: string) => {
692
+ setSections((prev) =>
693
+ prev.map((section, i) => {
694
+ if (i !== sectionIndex) {
695
+ return section;
696
+ }
697
+ const selected = section.cloudProviders || [];
698
+ return {
699
+ ...section,
700
+ cloudProviders: selected.includes(provider)
701
+ ? selected.filter((existing) => existing !== provider)
702
+ : selected.concat(provider),
703
+ };
704
+ }),
705
+ );
706
+ };
707
+ const save = () => {
708
+ saveApplicationConfig(application, 'instanceLinks', sections, setSaving, setSaveError).then((saved) => {
709
+ if (saved) {
710
+ setOriginal(JSON.stringify(sections));
711
+ }
712
+ });
713
+ };
714
+ const editJson = () => {
715
+ ReactModal.show<IEditLinksJsonModalProps, LinkSection[]>(
716
+ EditLinksJsonModal,
717
+ { sections },
718
+ { dialogClassName: 'modal-lg modal-fullscreen' },
719
+ )
720
+ .then((newSections) => setSections(newSections))
721
+ .catch(() => {});
722
+ };
723
+
724
+ return (
725
+ <div className="application-links-config form-horizontal">
726
+ <div className="row section-body">
727
+ <div className="col-md-9">
728
+ <p>
729
+ Links appear in the instance details panel and provide a shortcut to common features, such as logs, health,
730
+ etc.
731
+ </p>
732
+ <p>
733
+ Links paths are templates - you can customize them using a number of field attributes available on the
734
+ instance.
735
+ </p>
736
+ </div>
737
+ <div className="col-md-3 text-right">
738
+ <button className="btn btn-sm btn-default" onClick={editJson}>
739
+ <span className="small glyphicon glyphicon-cog" /> Edit as JSON
740
+ </button>
741
+ </div>
742
+ </div>
743
+ {sections.map((section, sectionIndex) => (
744
+ <div className="link-section section-body" key={sectionIndex}>
745
+ <TextField
746
+ label="Section Heading"
747
+ value={section.title || ''}
748
+ onChange={(value) => updateSection(sectionIndex, { title: value })}
749
+ />
750
+ <div className="form-group">
751
+ <label className="col-md-3 sm-label-right">Cloud Provider(s)</label>
752
+ <div className="col-md-7">
753
+ {applicationCloudProviders.map((provider: string) => (
754
+ <label className="checkbox-inline" key={provider}>
755
+ <input
756
+ type="checkbox"
757
+ checked={(section.cloudProviders || []).includes(provider)}
758
+ onChange={() => toggleSectionProvider(sectionIndex, provider)}
759
+ />{' '}
760
+ {provider}
761
+ </label>
762
+ ))}
763
+ {!applicationCloudProviders.length && (
764
+ <p className="form-control-static">No cloud providers configured.</p>
765
+ )}
766
+ </div>
767
+ </div>
768
+ {section.links.map((link, linkIndex) => (
769
+ <div className="application-link" key={linkIndex}>
770
+ <TextField
771
+ label="Label"
772
+ value={link.title || ''}
773
+ placeholder="Label, e.g. Health"
774
+ onChange={(value) => updateLink(sectionIndex, linkIndex, { title: value })}
775
+ />
776
+ <TextField
777
+ label="Path"
778
+ value={link.path || ''}
779
+ placeholder="Path, e.g. /health"
780
+ onChange={(value) => updateLink(sectionIndex, linkIndex, { path: value })}
781
+ />
782
+ <div className="form-group row">
783
+ <div className="col-md-7 col-md-offset-3">
784
+ <button
785
+ className="btn btn-link"
786
+ onClick={() =>
787
+ setSections((prev) =>
788
+ prev.map((existingSection, i) =>
789
+ i === sectionIndex
790
+ ? {
791
+ ...existingSection,
792
+ links: existingSection.links.filter((_link, j) => j !== linkIndex),
793
+ }
794
+ : existingSection,
795
+ ),
796
+ )
797
+ }
798
+ >
799
+ Remove Link
800
+ </button>
801
+ </div>
802
+ </div>
803
+ </div>
804
+ ))}
805
+ <button
806
+ className="btn btn-block add-new small"
807
+ onClick={() =>
808
+ setSections((prev) =>
809
+ prev.map((existingSection, i) =>
810
+ i === sectionIndex
811
+ ? { ...existingSection, links: existingSection.links.concat({ title: '', path: '' }) }
812
+ : existingSection,
813
+ ),
814
+ )
815
+ }
816
+ >
817
+ <span className="glyphicon glyphicon-plus-sign" /> Add Link
818
+ </button>
819
+ <button
820
+ className="btn btn-link"
821
+ onClick={() => setSections((prev) => prev.filter((_section, i) => i !== sectionIndex))}
822
+ >
823
+ Remove Section
824
+ </button>
825
+ </div>
826
+ ))}
827
+ <button
828
+ className="btn btn-block add-new"
829
+ onClick={() => setSections((prev) => prev.concat({ title: '', links: [{ title: '', path: '' }] }))}
830
+ >
831
+ <span className="glyphicon glyphicon-plus-sign" /> Add Section
832
+ </button>
833
+ {SETTINGS.defaultInstanceLinks && (
834
+ <button className="btn btn-link" onClick={() => setSections(cloneDeep(SETTINGS.defaultInstanceLinks))}>
835
+ Revert to default links
836
+ </button>
837
+ )}
838
+ <ConfigSectionFooter
839
+ isDirty={isDirty}
840
+ isValid={true}
841
+ isSaving={saving}
842
+ saveError={saveError}
843
+ onRevertClicked={() => setSections(JSON.parse(original))}
844
+ onSaveClicked={save}
845
+ />
846
+ </div>
847
+ );
848
+ }
849
+
850
+ interface IEditLinksJsonModalProps extends IModalComponentProps<LinkSection[]> {
851
+ sections: LinkSection[];
852
+ }
853
+
854
+ function EditLinksJsonModal({ closeModal, dismissModal, sections }: IEditLinksJsonModalProps) {
855
+ const [jsonValue, setJsonValue] = React.useState(JSON.stringify(sections, null, 2));
856
+ const [jsonError, setJsonError] = React.useState<string | null>(null);
857
+ const applyJson = (event: React.FormEvent<HTMLFormElement>) => {
858
+ event.preventDefault();
859
+ try {
860
+ const parsed = JSON.parse(jsonValue);
861
+ if (!Array.isArray(parsed)) {
862
+ setJsonError('Links JSON must be an array of link sections.');
863
+ return;
864
+ }
865
+ closeModal?.(parsed);
866
+ } catch (e) {
867
+ setJsonError((e as Error).message || 'Links JSON must be valid JSON.');
868
+ }
869
+ };
870
+
871
+ return (
872
+ <form role="form" className="container-fluid form-horizontal" noValidate onSubmit={applyJson}>
873
+ <ModalClose dismiss={dismissModal || (() => {})} />
874
+ <Modal.Header>
875
+ <Modal.Title>Edit Links JSON</Modal.Title>
876
+ </Modal.Header>
877
+ <Modal.Body>
878
+ <TextAreaField label="Links JSON" value={jsonValue} onChange={setJsonValue} />
879
+ {jsonError && <div className="error-message">{jsonError}</div>}
880
+ </Modal.Body>
881
+ <Modal.Footer>
882
+ <button type="button" className="btn btn-default" onClick={dismissModal || (() => {})}>
883
+ Cancel
884
+ </button>{' '}
885
+ <button type="submit" className="btn btn-primary">
886
+ Update
887
+ </button>
888
+ </Modal.Footer>
889
+ </form>
890
+ );
891
+ }
892
+
893
+ interface IChaosConfig {
894
+ enabled: boolean;
895
+ meanTimeBetweenKillsInWorkDays: number;
896
+ minTimeBetweenKillsInWorkDays: number;
897
+ grouping: string;
898
+ regionsAreIndependent: boolean;
899
+ exceptions: any[];
900
+ }
901
+
902
+ type ChaosMatchesStatus = 'loading' | 'ready' | 'unavailable';
903
+
904
+ function ChaosMonkeyConfigSection({ application }: { application: Application }) {
905
+ const initial = React.useMemo(() => getInitialChaosConfig(application), [application]);
906
+ const [config, setConfig] = React.useState<IChaosConfig>(initial);
907
+ const [original, setOriginal] = React.useState(JSON.stringify(initial));
908
+ const [exceptionKeys, setExceptionKeys] = React.useState<string[]>(() =>
909
+ initial.exceptions.map(() => UUIDGenerator.generateUuid()),
910
+ );
911
+ const [accounts, setAccounts] = React.useState<IAccountDetails[]>([]);
912
+ const [regionsByAccount, setRegionsByAccount] = React.useState<{ [account: string]: string[] }>({});
913
+ const [matchesStatus, setMatchesStatus] = React.useState<ChaosMatchesStatus>('loading');
914
+ const [saving, setSaving] = React.useState(false);
915
+ const [saveError, setSaveError] = React.useState(false);
916
+ const update = (updates: Partial<IChaosConfig>) => setConfig((prev) => ({ ...prev, ...updates }));
917
+ const updateException = (index: number, updates: any) =>
918
+ setConfig((prev) => ({
919
+ ...prev,
920
+ exceptions: prev.exceptions.map((ex, i) => (i === index ? { ...ex, ...updates } : ex)),
921
+ }));
922
+ React.useEffect(() => {
923
+ let mounted = true;
924
+ setMatchesStatus('loading');
925
+ AccountService.getCredentialsKeyedByAccount()
926
+ .then((aggregated: IAggregatedAccounts) => {
927
+ if (!mounted) {
928
+ return Promise.resolve();
929
+ }
930
+ const regionAccounts = Object.keys(aggregated)
931
+ .map((name) => aggregated[name])
932
+ .filter((details: any) => details.regions);
933
+ const nextRegionsByAccount: { [account: string]: string[] } = {};
934
+ regionAccounts.forEach((details: any) => {
935
+ nextRegionsByAccount[details.name] = ['*'].concat(details.regions.map((region: any) => region.name));
936
+ });
937
+ setAccounts(regionAccounts);
938
+ setRegionsByAccount(nextRegionsByAccount);
939
+ return application.getDataSource('serverGroups').ready();
940
+ })
941
+ .then(() => mounted && setMatchesStatus('ready'))
942
+ .catch(() => mounted && setMatchesStatus('unavailable'));
943
+ return () => {
944
+ mounted = false;
945
+ };
946
+ }, [application]);
947
+ const clusterMatches = React.useMemo(
948
+ () =>
949
+ config.exceptions.map((exception) =>
950
+ matchesStatus === 'ready' ? getChaosExceptionClusterMatches(application, exception) : [],
951
+ ),
952
+ [application, config.exceptions, matchesStatus],
953
+ );
954
+ const isValid = isChaosConfigValid(config);
955
+ const save = () => {
956
+ if (!isChaosConfigValid(config)) {
957
+ return;
958
+ }
959
+ saveApplicationConfig(application, 'chaosMonkey', normalizeChaosConfig(config), setSaving, setSaveError).then(
960
+ (saved) => {
961
+ if (saved) {
962
+ const normalized = normalizeChaosConfig(config);
963
+ setConfig(normalized);
964
+ setOriginal(JSON.stringify(normalized));
965
+ }
966
+ },
967
+ );
968
+ };
969
+
970
+ return (
971
+ <div className="form-inline">
972
+ <CheckboxField label="Enabled" checked={config.enabled} onChange={(value) => update({ enabled: value })} />
973
+ <h5 className="first-header">Termination frequency</h5>
974
+ <TextField
975
+ label="Mean time between terms"
976
+ value={String(config.meanTimeBetweenKillsInWorkDays)}
977
+ onChange={(value) => update({ meanTimeBetweenKillsInWorkDays: value as any })}
978
+ />
979
+ <TextField
980
+ label="Min time between terms"
981
+ value={String(config.minTimeBetweenKillsInWorkDays)}
982
+ onChange={(value) => update({ minTimeBetweenKillsInWorkDays: value as any })}
19
983
  />
984
+ <SelectField
985
+ label="Grouping"
986
+ value={config.grouping}
987
+ options={['app', 'stack', 'cluster']}
988
+ onChange={(value) => update({ grouping: value })}
989
+ />
990
+ <CheckboxField
991
+ label="Regions are independent"
992
+ checked={config.regionsAreIndependent}
993
+ onChange={(value) => update({ regionsAreIndependent: value })}
994
+ />
995
+ <h5>Exceptions</h5>
996
+ <table className="table table-condensed">
997
+ <thead>
998
+ <tr>
999
+ <th>Account</th>
1000
+ <th>Region</th>
1001
+ <th>Stack</th>
1002
+ <th>Detail</th>
1003
+ <th>Matched Clusters</th>
1004
+ <th />
1005
+ </tr>
1006
+ </thead>
1007
+ <tbody>
1008
+ {config.exceptions.map((exception, index) => {
1009
+ const accountNames = accounts.map((account) => account.name);
1010
+ const accountOptions = addSelectedOption(accountNames, exception.account);
1011
+ const regionOptions = addSelectedOption(regionsByAccount[exception.account] || ['*'], exception.region);
1012
+ return (
1013
+ <tr key={exceptionKeys[index]}>
1014
+ <td>
1015
+ <select
1016
+ className="form-control input-sm"
1017
+ name="chaosExceptionAccount"
1018
+ value={exception.account || ''}
1019
+ onChange={(event) => updateException(index, { account: event.target.value, region: '*' })}
1020
+ >
1021
+ <option value="">(select account)</option>
1022
+ {accountOptions.map((account) => (
1023
+ <option key={account} value={account}>
1024
+ {account}
1025
+ </option>
1026
+ ))}
1027
+ </select>
1028
+ </td>
1029
+ <td>
1030
+ {exception.account ? (
1031
+ <select
1032
+ className="form-control input-sm"
1033
+ name="chaosExceptionRegion"
1034
+ value={exception.region || '*'}
1035
+ onChange={(event) => updateException(index, { region: event.target.value })}
1036
+ >
1037
+ {regionOptions.map((region) => (
1038
+ <option key={region} value={region}>
1039
+ {region}
1040
+ </option>
1041
+ ))}
1042
+ </select>
1043
+ ) : (
1044
+ <span>(select account)</span>
1045
+ )}
1046
+ </td>
1047
+ <td>
1048
+ <input
1049
+ className="form-control input-sm"
1050
+ name="chaosExceptionStack"
1051
+ value={exception.stack || ''}
1052
+ onChange={(event) => updateException(index, { stack: event.target.value })}
1053
+ />
1054
+ </td>
1055
+ <td>
1056
+ <input
1057
+ className="form-control input-sm"
1058
+ name="chaosExceptionDetail"
1059
+ value={exception.detail || ''}
1060
+ onChange={(event) => updateException(index, { detail: event.target.value })}
1061
+ />
1062
+ </td>
1063
+ <td>
1064
+ {matchesStatus === 'unavailable' ? (
1065
+ <span className="chaos-matches-unavailable">(matches unavailable)</span>
1066
+ ) : matchesStatus === 'ready' ? (
1067
+ <ClusterMatches matches={clusterMatches[index]} />
1068
+ ) : (
1069
+ <span>(loading matches)</span>
1070
+ )}
1071
+ </td>
1072
+ <td>
1073
+ <button
1074
+ className="btn btn-link"
1075
+ onClick={() => {
1076
+ setConfig((prev) => ({
1077
+ ...prev,
1078
+ exceptions: prev.exceptions.filter((_ex, i) => i !== index),
1079
+ }));
1080
+ setExceptionKeys((prev) => prev.filter((_key, i) => i !== index));
1081
+ }}
1082
+ >
1083
+ Remove
1084
+ </button>
1085
+ </td>
1086
+ </tr>
1087
+ );
1088
+ })}
1089
+ </tbody>
1090
+ </table>
1091
+ <button
1092
+ className="btn btn-block btn-add-trigger add-new"
1093
+ onClick={() => {
1094
+ setConfig((prev) => ({
1095
+ ...prev,
1096
+ exceptions: prev.exceptions.concat({ account: '', region: '*', stack: '', detail: '' }),
1097
+ }));
1098
+ setExceptionKeys((prev) => prev.concat(UUIDGenerator.generateUuid()));
1099
+ }}
1100
+ >
1101
+ <span className="glyphicon glyphicon-plus-sign" /> Add Exception
1102
+ </button>
1103
+ <ConfigSectionFooter
1104
+ isDirty={JSON.stringify(config) !== original}
1105
+ isValid={isValid}
1106
+ isSaving={saving}
1107
+ saveError={saveError}
1108
+ onRevertClicked={() => {
1109
+ const reverted = JSON.parse(original);
1110
+ setConfig(reverted);
1111
+ setExceptionKeys(reverted.exceptions.map(() => UUIDGenerator.generateUuid()));
1112
+ }}
1113
+ onSaveClicked={save}
1114
+ />
1115
+ </div>
1116
+ );
1117
+ }
1118
+
1119
+ function TrafficGuardConfigSection({ application }: { application: Application }) {
1120
+ const initial = React.useMemo(() => cloneDeep(application.attributes.trafficGuards || []), [application]);
1121
+ const [guards, setGuards] = React.useState<any[]>(initial);
1122
+ const [original, setOriginal] = React.useState(JSON.stringify(initial));
1123
+ const [accounts, setAccounts] = React.useState<IAccountDetails[]>([]);
1124
+ const [locationsByAccount, setLocationsByAccount] = React.useState<{ [account: string]: string[] }>({});
1125
+ const [saving, setSaving] = React.useState(false);
1126
+ const [saveError, setSaveError] = React.useState(false);
1127
+ React.useEffect(() => {
1128
+ let mounted = true;
1129
+ AccountService.getCredentialsKeyedByAccount().then((aggregated: IAggregatedAccounts) => {
1130
+ if (!mounted) {
1131
+ return;
1132
+ }
1133
+ const allAccounts = Object.keys(aggregated).map((name) => aggregated[name]);
1134
+ const regionAccounts = allAccounts.filter((details: any) => details.regions && !details.namespaces);
1135
+ const namespaceAccounts = allAccounts.filter((details: any) => details.namespaces && !details.regions);
1136
+ const nextLocationsByAccount: { [account: string]: string[] } = {};
1137
+ regionAccounts.forEach((details: any) => {
1138
+ nextLocationsByAccount[details.name] = ['*'].concat(details.regions.map((region: any) => region.name));
1139
+ });
1140
+ namespaceAccounts.forEach((details: any) => {
1141
+ nextLocationsByAccount[details.name] = ['*'].concat(details.namespaces);
1142
+ });
1143
+ setAccounts(regionAccounts.concat(namespaceAccounts));
1144
+ setLocationsByAccount(nextLocationsByAccount);
1145
+ });
1146
+ return () => {
1147
+ mounted = false;
1148
+ };
1149
+ }, []);
1150
+ const updateGuard = (index: number, updates: any) =>
1151
+ setGuards((prev) => prev.map((guard, i) => (i === index ? { ...guard, ...updates } : guard)));
1152
+ const save = () =>
1153
+ saveApplicationConfig(application, 'trafficGuards', guards, setSaving, setSaveError).then(
1154
+ (saved) => saved && setOriginal(JSON.stringify(guards)),
20
1155
  );
1156
+
1157
+ return (
1158
+ <div>
1159
+ <p>Traffic Guards allow you to specify critical clusters that should always have active instances.</p>
1160
+ <table className="table table-condensed">
1161
+ <thead>
1162
+ <tr>
1163
+ <th>Enabled</th>
1164
+ <th>Account</th>
1165
+ <th>Region</th>
1166
+ <th>Stack</th>
1167
+ <th>Detail</th>
1168
+ <th />
1169
+ </tr>
1170
+ </thead>
1171
+ <tbody>
1172
+ {guards.map((guard, index) => (
1173
+ <tr key={index}>
1174
+ <td>
1175
+ <input
1176
+ type="checkbox"
1177
+ checked={guard.enabled}
1178
+ onChange={(e) => updateGuard(index, { enabled: e.target.checked })}
1179
+ />
1180
+ </td>
1181
+ <td>
1182
+ <AccountSelect
1183
+ value={guard.account || ''}
1184
+ accounts={accounts}
1185
+ onChange={(value) => updateGuard(index, { account: value, location: '*' })}
1186
+ />
1187
+ </td>
1188
+ <td>
1189
+ {guard.account ? (
1190
+ <select
1191
+ className="form-control input-sm"
1192
+ value={guard.location || '*'}
1193
+ onChange={(e) => updateGuard(index, { location: e.target.value })}
1194
+ >
1195
+ {(locationsByAccount[guard.account] || ['*']).map((location) => (
1196
+ <option key={location} value={location}>
1197
+ {location}
1198
+ </option>
1199
+ ))}
1200
+ </select>
1201
+ ) : (
1202
+ <span>(select account)</span>
1203
+ )}
1204
+ </td>
1205
+ <td>
1206
+ <input
1207
+ className="form-control input-sm"
1208
+ value={guard.stack || ''}
1209
+ onChange={(e) => updateGuard(index, { stack: e.target.value })}
1210
+ />
1211
+ </td>
1212
+ <td>
1213
+ <input
1214
+ className="form-control input-sm"
1215
+ value={guard.detail || ''}
1216
+ onChange={(e) => updateGuard(index, { detail: e.target.value })}
1217
+ />
1218
+ </td>
1219
+ <td>
1220
+ <button
1221
+ className="btn btn-link"
1222
+ onClick={() => setGuards((prev) => prev.filter((_guard, i) => i !== index))}
1223
+ >
1224
+ Remove
1225
+ </button>
1226
+ </td>
1227
+ </tr>
1228
+ ))}
1229
+ </tbody>
1230
+ </table>
1231
+ <button
1232
+ className="btn btn-block btn-add-trigger add-new"
1233
+ onClick={() =>
1234
+ setGuards((prev) => prev.concat({ enabled: true, account: '', location: '*', stack: '', detail: '' }))
1235
+ }
1236
+ >
1237
+ <span className="glyphicon glyphicon-plus-sign" /> Add Traffic Guard
1238
+ </button>
1239
+ <ConfigSectionFooter
1240
+ isDirty={JSON.stringify(guards) !== original}
1241
+ isValid={true}
1242
+ isSaving={saving}
1243
+ saveError={saveError}
1244
+ onRevertClicked={() => setGuards(JSON.parse(original))}
1245
+ onSaveClicked={save}
1246
+ />
1247
+ </div>
1248
+ );
1249
+ }
1250
+
1251
+ function ApplicationSnapshotSection({ application }: { application: Application }) {
1252
+ const [historyVisible, setHistoryVisible] = React.useState(false);
1253
+ const [account, setAccount] = React.useState((application.attributes.accounts || [])[0] || '');
1254
+ const [snapshots, setSnapshots] = React.useState<any[]>([]);
1255
+ const [selectedSnapshot, setSelectedSnapshot] = React.useState<any>(null);
1256
+ const [compareSnapshot, setCompareSnapshot] = React.useState<any>(null);
1257
+ const takeSnapshot = () =>
1258
+ ConfirmationModalService.confirm({
1259
+ header: `Are you sure you want to take a snapshot of: ${application.name}?`,
1260
+ buttonText: 'Take snapshot',
1261
+ taskMonitorConfig: { application, title: `Taking snapshot of ${application.name}` },
1262
+ submitMethod: () => SnapshotWriter.takeSnapshot(application),
1263
+ });
1264
+ const loadHistory = () =>
1265
+ SnapshotReader.getSnapshotHistory(application.name, account).then((history) => {
1266
+ setSnapshots(history);
1267
+ setSelectedSnapshot(history[0] || null);
1268
+ setCompareSnapshot(history[1] || null);
1269
+ });
1270
+ const restoreSnapshot = () =>
1271
+ selectedSnapshot &&
1272
+ ConfirmationModalService.confirm({
1273
+ header: `Restore snapshot for ${application.name}?`,
1274
+ buttonText: 'Restore snapshot',
1275
+ taskMonitorConfig: { application, title: `Restoring snapshot of ${application.name}` },
1276
+ submitMethod: () =>
1277
+ SnapshotWriter.restoreSnapshot(
1278
+ application,
1279
+ account,
1280
+ selectedSnapshot.timestamp || selectedSnapshot.createdAt || selectedSnapshot.id,
1281
+ ),
1282
+ });
1283
+
1284
+ return (
1285
+ <div>
1286
+ <p>
1287
+ Taking an application snapshot will save the current state of the infrastructure to a storage bucket using
1288
+ Terraform's config language.
1289
+ </p>
1290
+ <button className="btn btn-link" onClick={takeSnapshot}>
1291
+ <span className="glyphicon glyphicon-cloud-download" /> Take application snapshot
1292
+ </button>
1293
+ <button className="btn btn-link" onClick={() => setHistoryVisible(true)}>
1294
+ <span className="glyphicon glyphicon-cloud" /> View Snapshot History
1295
+ </button>
1296
+ {historyVisible && (
1297
+ <div className="well">
1298
+ <h4>Snapshot History</h4>
1299
+ <TextField label="Account" value={account} onChange={setAccount} />
1300
+ <button className="btn btn-default" onClick={loadHistory}>
1301
+ Load snapshots
1302
+ </button>
1303
+ <SnapshotSelect
1304
+ label="Snapshot"
1305
+ snapshots={snapshots}
1306
+ selectedSnapshot={selectedSnapshot}
1307
+ onChange={setSelectedSnapshot}
1308
+ />
1309
+ <SnapshotSelect
1310
+ label="Compare To"
1311
+ snapshots={snapshots}
1312
+ selectedSnapshot={compareSnapshot}
1313
+ onChange={setCompareSnapshot}
1314
+ />
1315
+ {selectedSnapshot && compareSnapshot && (
1316
+ <div className="horizontal middle snapshot-diff">
1317
+ <DiffView diff={buildSnapshotDiff(compareSnapshot, selectedSnapshot)} />
1318
+ </div>
1319
+ )}
1320
+ <button className="btn btn-primary" disabled={!selectedSnapshot} onClick={restoreSnapshot}>
1321
+ Restore selected snapshot
1322
+ </button>{' '}
1323
+ <button className="btn btn-default" onClick={() => setHistoryVisible(false)}>
1324
+ Close
1325
+ </button>
1326
+ </div>
1327
+ )}
1328
+ </div>
1329
+ );
1330
+ }
1331
+
1332
+ function SnapshotSelect({
1333
+ label,
1334
+ onChange,
1335
+ selectedSnapshot,
1336
+ snapshots,
1337
+ }: {
1338
+ label: string;
1339
+ onChange: (snapshot: any) => void;
1340
+ selectedSnapshot: any;
1341
+ snapshots: any[];
1342
+ }) {
1343
+ return (
1344
+ <div className="form-group row">
1345
+ <div className="col-md-3 sm-label-right">{label}</div>
1346
+ <div className="col-md-7">
1347
+ <select
1348
+ className="form-control input-sm"
1349
+ value={selectedSnapshot ? snapshots.indexOf(selectedSnapshot) : ''}
1350
+ onChange={(e) => onChange(snapshots[Number(e.target.value)] || null)}
1351
+ >
1352
+ <option value="">Select snapshot</option>
1353
+ {snapshots.map((snapshot, index) => (
1354
+ <option key={index} value={index}>
1355
+ {snapshot.timestamp || snapshot.createdAt || snapshot.id || index}
1356
+ </option>
1357
+ ))}
1358
+ </select>
1359
+ </div>
1360
+ </div>
1361
+ );
1362
+ }
1363
+
1364
+ function buildSnapshotDiff(left: any, right: any) {
1365
+ return JsonUtils.diff(JSON.stringify(left, null, 2), JSON.stringify(right, null, 2), false);
1366
+ }
1367
+
1368
+ function TextField({
1369
+ helpFieldId,
1370
+ label,
1371
+ onChange,
1372
+ placeholder,
1373
+ value,
1374
+ }: {
1375
+ helpFieldId?: string;
1376
+ label: string;
1377
+ onChange: (value: string) => void;
1378
+ placeholder?: string;
1379
+ value: any;
1380
+ }) {
1381
+ return (
1382
+ <div className="form-group row">
1383
+ <div className="col-md-3 sm-label-right">
1384
+ {label} {helpFieldId && <HelpField id={helpFieldId} />}
1385
+ </div>
1386
+ <div className="col-md-7">
1387
+ <input
1388
+ className="form-control input-sm"
1389
+ value={value || ''}
1390
+ placeholder={placeholder}
1391
+ onChange={(e) => onChange(e.target.value)}
1392
+ />
1393
+ </div>
1394
+ </div>
1395
+ );
1396
+ }
1397
+
1398
+ function TextAreaField({
1399
+ label,
1400
+ onChange,
1401
+ value,
1402
+ }: {
1403
+ label: string;
1404
+ onChange: (value: string) => void;
1405
+ value: string;
1406
+ }) {
1407
+ return (
1408
+ <div className="form-group row">
1409
+ <div className="col-md-3 sm-label-right">{label}</div>
1410
+ <div className="col-md-7">
1411
+ <textarea className="form-control input-sm" value={value || ''} onChange={(e) => onChange(e.target.value)} />
1412
+ </div>
1413
+ </div>
1414
+ );
1415
+ }
1416
+
1417
+ export function CheckboxField({
1418
+ checked,
1419
+ groupLabel,
1420
+ helpFieldId,
1421
+ label,
1422
+ offset,
1423
+ onChange,
1424
+ }: {
1425
+ checked: boolean;
1426
+ groupLabel?: string;
1427
+ helpFieldId?: string;
1428
+ label: string;
1429
+ offset?: boolean;
1430
+ onChange: (value: boolean) => void;
1431
+ }) {
1432
+ return (
1433
+ <div className="form-group row">
1434
+ {groupLabel && <div className="col-md-3 sm-label-right application-attributes-group-label">{groupLabel}</div>}
1435
+ {!groupLabel && !offset && <div className="col-md-3 sm-label-right" />}
1436
+ <div className={`col-md-7 sm-control-field checkbox ${offset ? 'col-md-offset-3' : ''}`}>
1437
+ <label>
1438
+ <input type="checkbox" checked={Boolean(checked)} onChange={(e) => onChange(e.target.checked)} /> {label}{' '}
1439
+ {helpFieldId && <HelpField id={helpFieldId} />}
1440
+ </label>
1441
+ </div>
1442
+ </div>
1443
+ );
1444
+ }
1445
+
1446
+ function SelectField({
1447
+ label,
1448
+ onChange,
1449
+ options,
1450
+ value,
1451
+ }: {
1452
+ label: string;
1453
+ onChange: (value: string) => void;
1454
+ options: string[];
1455
+ value: string;
1456
+ }) {
1457
+ return (
1458
+ <div className="form-group row">
1459
+ <div className="col-md-3 sm-label-right">{label}</div>
1460
+ <div className="col-md-7">
1461
+ <select className="form-control input-sm" value={value || ''} onChange={(e) => onChange(e.target.value)}>
1462
+ {options.map((option) => (
1463
+ <option key={option} value={option}>
1464
+ {option}
1465
+ </option>
1466
+ ))}
1467
+ </select>
1468
+ </div>
1469
+ </div>
1470
+ );
1471
+ }
1472
+
1473
+ function AccountSelect({
1474
+ accounts,
1475
+ onChange,
1476
+ value,
1477
+ }: {
1478
+ accounts: IAccountDetails[];
1479
+ onChange: (value: string) => void;
1480
+ value: string;
1481
+ }) {
1482
+ return accounts.length ? (
1483
+ <select className="form-control input-sm" value={value} onChange={(e) => onChange(e.target.value)}>
1484
+ <option value="">(select account)</option>
1485
+ {accounts.map((account) => (
1486
+ <option key={account.name} value={account.name}>
1487
+ {account.name}
1488
+ </option>
1489
+ ))}
1490
+ </select>
1491
+ ) : (
1492
+ <input
1493
+ className="form-control input-sm"
1494
+ value={value}
1495
+ onChange={(e) => onChange(e.target.value)}
1496
+ placeholder="account"
1497
+ />
1498
+ );
1499
+ }
1500
+
1501
+ function saveApplicationConfig(
1502
+ application: Application,
1503
+ field: string,
1504
+ value: any,
1505
+ setSaving: (saving: boolean) => void,
1506
+ setSaveError: (error: boolean) => void,
1507
+ ): Promise<boolean> {
1508
+ const nextAttributes = cloneDeep(application.attributes || {});
1509
+ nextAttributes[field] = value;
1510
+ setSaving(true);
1511
+ setSaveError(false);
1512
+ return Promise.resolve(ApplicationWriter.updateApplication(nextAttributes))
1513
+ .then((task) => TaskReader.waitUntilTaskCompletes(task))
1514
+ .then(() => {
1515
+ application.attributes = nextAttributes;
1516
+ application.refresh(true);
1517
+ setSaving(false);
1518
+ return true;
1519
+ })
1520
+ .catch(() => {
1521
+ setSaving(false);
1522
+ setSaveError(true);
1523
+ return false;
1524
+ });
1525
+ }
1526
+
1527
+ function getInitialLinkSections(application: Application): LinkSection[] {
1528
+ const cloudProviders = application.attributes.cloudProviders || [];
1529
+ return cloneDeep(application.attributes.instanceLinks || SETTINGS.defaultInstanceLinks || [])
1530
+ .filter(
1531
+ (section: LinkSection) =>
1532
+ !section.cloudProviders ||
1533
+ !section.cloudProviders.length ||
1534
+ section.cloudProviders.some((provider) => cloudProviders.includes(provider)),
1535
+ )
1536
+ .map((section: LinkSection) => ({
1537
+ ...section,
1538
+ cloudProviders: section.cloudProviders || [],
1539
+ links: section.links || [],
1540
+ }));
1541
+ }
1542
+
1543
+ function getInitialChaosConfig(application: Application): IChaosConfig {
1544
+ const config = {
1545
+ enabled: false,
1546
+ meanTimeBetweenKillsInWorkDays: 2,
1547
+ minTimeBetweenKillsInWorkDays: 1,
1548
+ grouping: 'cluster',
1549
+ regionsAreIndependent: true,
1550
+ exceptions: [],
1551
+ ...(application.attributes.chaosMonkey || {}),
1552
+ };
1553
+ return { ...config, exceptions: (config.exceptions || []).map(normalizeChaosException) };
1554
+ }
1555
+
1556
+ function isChaosConfigValid(config: IChaosConfig): boolean {
1557
+ return [config.meanTimeBetweenKillsInWorkDays, config.minTimeBetweenKillsInWorkDays].every((value) => {
1558
+ const parsed = Number(value);
1559
+ return Number.isFinite(parsed) && parsed >= 1;
1560
+ });
1561
+ }
1562
+
1563
+ function normalizeChaosConfig(config: IChaosConfig): IChaosConfig {
1564
+ return {
1565
+ ...config,
1566
+ meanTimeBetweenKillsInWorkDays: Number(config.meanTimeBetweenKillsInWorkDays),
1567
+ minTimeBetweenKillsInWorkDays: Number(config.minTimeBetweenKillsInWorkDays),
1568
+ exceptions: config.exceptions.map(normalizeChaosException),
1569
+ };
1570
+ }
1571
+
1572
+ function getChaosExceptionClusterMatches(application: Application, exception: any): IClusterMatch[] {
1573
+ const normalizedException = normalizeChaosException(exception);
1574
+ const { region: location, ...clusterMatchRule } = normalizedException;
1575
+ const rule = { ...clusterMatchRule, location };
1576
+ return application.clusters
1577
+ .filter((cluster) =>
1578
+ cluster.serverGroups.some(
1579
+ (serverGroup) =>
1580
+ ClusterMatcher.getMatchingRule(cluster.account, serverGroup.region, cluster.name, [rule]) !== null,
1581
+ ),
1582
+ )
1583
+ .map((cluster) => ({
1584
+ account: normalizedException.account,
1585
+ name: cluster.name,
1586
+ regions:
1587
+ normalizedException.region === '*'
1588
+ ? Array.from(new Set(cluster.serverGroups.map((serverGroup) => serverGroup.region))).sort()
1589
+ : [normalizedException.region],
1590
+ }))
1591
+ .sort((a, b) => a.name.localeCompare(b.name));
1592
+ }
1593
+
1594
+ function normalizeChaosException(exception: any): any {
1595
+ return { ...exception, region: exception.region || '*' };
1596
+ }
1597
+
1598
+ function addSelectedOption(options: string[], selected: string): string[] {
1599
+ return selected && !options.includes(selected) ? options.concat(selected) : options;
1600
+ }
1601
+
1602
+ function attributesToDraft(attributes: any, applicationName: string): any {
1603
+ return {
1604
+ name: attributes.name || applicationName,
1605
+ email: attributes.email || '',
1606
+ appGroup: attributes.appGroup || '',
1607
+ aliases: attributes.aliases || '',
1608
+ pdApiKey: attributes.pdApiKey || '',
1609
+ slackChannelName: get(attributes, 'slackChannel.name', ''),
1610
+ slackChannelId: get(attributes, 'slackChannel.id', ''),
1611
+ repoType: attributes.repoType || '',
1612
+ repoProjectKey: attributes.repoProjectKey || '',
1613
+ repoSlug: attributes.repoSlug || '',
1614
+ description: attributes.description || '',
1615
+ accounts: (attributes.accounts || []).join(', '),
1616
+ cloudProviders: (attributes.cloudProviders || []).join(', '),
1617
+ platformHealthOnly: Boolean(attributes.platformHealthOnly),
1618
+ platformHealthOnlyShowOverride: Boolean(attributes.platformHealthOnlyShowOverride),
1619
+ instancePort: attributes.instancePort || '',
1620
+ enableRestartRunningExecutions: Boolean(attributes.enableRestartRunningExecutions),
1621
+ enableRerunActiveExecutions: Boolean(attributes.enableRerunActiveExecutions),
1622
+ legacyUdf: Boolean(attributes.legacyUdf),
1623
+ permissions: normalizePermissions(attributes.permissions),
1624
+ };
1625
+ }
1626
+
1627
+ function draftToAttributes(draft: any, existing: any): any {
1628
+ const next = {
1629
+ ...existing,
1630
+ name: draft.name,
1631
+ email: draft.email,
1632
+ appGroup: draft.appGroup,
1633
+ aliases: normalizeAliases(draft.aliases),
1634
+ pdApiKey: draft.pdApiKey,
1635
+ repoType: draft.repoType,
1636
+ repoProjectKey: draft.repoProjectKey,
1637
+ repoSlug: draft.repoSlug,
1638
+ description: draft.description,
1639
+ accounts: existing.accounts,
1640
+ cloudProviders: splitCsv(draft.cloudProviders),
1641
+ platformHealthOnly: draft.platformHealthOnly,
1642
+ platformHealthOnlyShowOverride: draft.platformHealthOnlyShowOverride,
1643
+ instancePort: draft.instancePort === '' ? null : Number(draft.instancePort),
1644
+ enableRestartRunningExecutions: draft.enableRestartRunningExecutions,
1645
+ enableRerunActiveExecutions: draft.enableRerunActiveExecutions,
1646
+ legacyUdf: draft.legacyUdf,
1647
+ permissions: draft.permissions,
1648
+ };
1649
+
1650
+ if (draft.slackChannelName || draft.slackChannelId) {
1651
+ next.slackChannel = { name: draft.slackChannelName, id: draft.slackChannelId };
1652
+ } else {
1653
+ delete next.slackChannel;
1654
+ }
1655
+
1656
+ initializeProviderSettings(next);
1657
+ return next;
1658
+ }
1659
+
1660
+ function normalizePermissions(permissions: Partial<IPermissions> = {}): IPermissions {
1661
+ return {
1662
+ READ: permissions.READ || [],
1663
+ EXECUTE: permissions.EXECUTE || [],
1664
+ WRITE: permissions.WRITE || [],
1665
+ };
1666
+ }
1667
+
1668
+ function initializeProviderSettings(attributes: any): void {
1669
+ const providers =
1670
+ attributes.cloudProviders && attributes.cloudProviders.length
1671
+ ? attributes.cloudProviders
1672
+ : Object.keys(SETTINGS.providers || {});
1673
+ providers.forEach((provider: string) => {
1674
+ const providerDefaults = get(SETTINGS.providers, provider, {});
1675
+ Object.keys(providerDefaults).forEach((field) => {
1676
+ const fieldPath = `${provider}.${field}`;
1677
+ const applicationFieldPath = `providerSettings.${fieldPath}`;
1678
+ if (has(SETTINGS.providers, fieldPath) && !has(attributes, applicationFieldPath)) {
1679
+ set(attributes, applicationFieldPath, get(SETTINGS.providers, fieldPath));
1680
+ }
1681
+ });
1682
+ });
1683
+ }
1684
+
1685
+ function validateApplicationAttributesDraft(draft: any, availableCloudProviders: string[]): string | null {
1686
+ if (!draft.email || !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(draft.email)) {
1687
+ return 'Please enter a valid email address.';
1688
+ }
1689
+ if (SETTINGS.feature.fiatEnabled) {
1690
+ const permissions = normalizePermissions(draft.permissions);
1691
+ if ([...permissions.READ, ...permissions.WRITE, ...permissions.EXECUTE].some((group) => !group)) {
1692
+ return 'Permission groups cannot be empty.';
1693
+ }
1694
+ if (permissions.READ.length && !permissions.WRITE.length) {
1695
+ return 'Write permission is required when read permission is configured.';
1696
+ }
1697
+ }
1698
+ if (draft.repoSlug && draft.repoSlug.includes('://')) {
1699
+ return 'Enter your source repository name (not the URL).';
21
1700
  }
1701
+ if (draft.instancePort !== '') {
1702
+ const port = Number(draft.instancePort);
1703
+ if (!Number.isFinite(port) || !Number.isInteger(port) || port < 0 || port > 65535) {
1704
+ return 'Instance port must be a whole number between 0 and 65535.';
1705
+ }
1706
+ }
1707
+ const unknownProviders = splitCsv(draft.cloudProviders).filter(
1708
+ (provider) => !availableCloudProviders.includes(provider),
1709
+ );
1710
+ if (availableCloudProviders.length && unknownProviders.length) {
1711
+ return `Unknown cloud provider(s): ${unknownProviders.join(', ')}.`;
1712
+ }
1713
+
1714
+ return null;
1715
+ }
1716
+
1717
+ function splitCsv(value: string): string[] {
1718
+ return (value || '')
1719
+ .split(',')
1720
+ .map((item) => item.trim())
1721
+ .filter(Boolean);
1722
+ }
1723
+
1724
+ function normalizeAliases(value: string): string {
1725
+ return splitCsv(value).join(',');
1726
+ }
1727
+
1728
+ function getHealthMessage(attributes: any): string {
1729
+ const healthParts = [];
1730
+ if (attributes.platformHealthOnly) {
1731
+ healthParts.push('considers only cloud provider health when executing tasks');
1732
+ }
1733
+ if (attributes.platformHealthOnlyShowOverride) {
1734
+ healthParts.push('shows a health override option for each operation');
1735
+ }
1736
+ return `This application ${healthParts.join(' and ')}.`;
1737
+ }
1738
+
1739
+ function addUnique(values: string[], value: string): string[] {
1740
+ return values.includes(value) ? values : values.concat(value);
1741
+ }
1742
+
1743
+ function removeValue(values: string[], value: string): string[] {
1744
+ return values.filter((existing) => existing !== value);
1745
+ }
1746
+
1747
+ function formatPermissions(permissions: any): string | null {
1748
+ if (!permissions) {
1749
+ return null;
1750
+ }
1751
+
1752
+ const permissionsMap = new Map<string, string>();
1753
+ (permissions.READ || []).forEach((role: string) => permissionsMap.set(role, 'read'));
1754
+ (permissions.EXECUTE || []).forEach((role: string) => {
1755
+ permissionsMap.set(role, permissionsMap.has(role) ? `${permissionsMap.get(role)}, execute` : 'execute');
1756
+ });
1757
+ (permissions.WRITE || []).forEach((role: string) => {
1758
+ permissionsMap.set(role, permissionsMap.has(role) ? `${permissionsMap.get(role)}, write` : 'write');
1759
+ });
1760
+
1761
+ return Array.from(permissionsMap)
1762
+ .map(([role, accessTypes]) => `${role} (${accessTypes})`)
1763
+ .join(', ');
22
1764
  }