@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
@@ -0,0 +1,1781 @@
1
+ import { UIRouterContext, UIRouterReact } from '@uirouter/react';
2
+ import { mount } from 'enzyme';
3
+ import { cloneDeep } from 'lodash';
4
+ import React from 'react';
5
+ import { act } from 'react-dom/test-utils';
6
+
7
+ import { AccountService } from '../../account/AccountService';
8
+ import type { IAccountDetails } from '../../account/AccountService';
9
+ import { ApplicationModelBuilder } from '../../application/applicationModel.builder';
10
+ import { ApplicationReader } from '../../application/service/ApplicationReader';
11
+ import type { DeckRuntime } from '../../bootstrap/DeckRuntime';
12
+ import { createDeckRuntime } from '../../bootstrap/DeckRuntime';
13
+ import { DeckRuntimeContext } from '../../bootstrap/DeckRuntimeContext';
14
+ import { ViewStateCache } from '../../cache';
15
+ import { SETTINGS } from '../../config';
16
+ import { PageNavigator, ReactSelectInput } from '../../presentation';
17
+ import { ReactModal } from '../../presentation/ReactModal';
18
+ import { Registry } from '../../registry';
19
+ import { PipelineConfigActions } from './actions/PipelineConfigActions';
20
+ import {
21
+ applyStageConfigDefaults,
22
+ COMMON_STAGE_FIELDS,
23
+ PipelineConfigPageComponent,
24
+ STAGE_IDENTITY_FIELDS,
25
+ } from './PipelineConfigPage';
26
+ import { PipelineGraph } from './graph/PipelineGraph';
27
+ import { PipelineConfigService } from './services/PipelineConfigService';
28
+ import { StageConfigWrapper } from './stages/StageConfigWrapper';
29
+ import { BaseProviderStageConfig } from './stages/baseProviderStage/BaseProviderStageConfig';
30
+ import { StageConfigField } from './stages/common/stageConfigField/StageConfigField';
31
+ import type { IPipeline, IStageTypeConfig } from '../../domain';
32
+ import { ConfigurePipelineTemplateModal } from './templates/ConfigurePipelineTemplateModal';
33
+ import { PipelineTemplateReader } from './templates/PipelineTemplateReader';
34
+
35
+ describe('PipelineConfigPage', () => {
36
+ let $stateParams: { executionId?: string; new?: string; pipelineId?: string };
37
+ let fiatEnabled: boolean;
38
+ let providerRenderStates: boolean[];
39
+ let router: UIRouterReact;
40
+ let runtime: DeckRuntime;
41
+ let stateGo: jasmine.Spy;
42
+ let transitionCleanup: jasmine.Spy;
43
+ let transitionOnBefore: jasmine.Spy;
44
+
45
+ const PipelineConfigPage = (props: any) => (
46
+ <UIRouterContext.Provider value={router}>
47
+ <DeckRuntimeContext.Provider value={runtime}>
48
+ <PipelineConfigPageComponent
49
+ {...props}
50
+ router={router}
51
+ stateParams={$stateParams}
52
+ stateService={{ go: stateGo } as any}
53
+ />
54
+ </DeckRuntimeContext.Provider>
55
+ </UIRouterContext.Provider>
56
+ );
57
+
58
+ const AwsStageConfig = () => <div className="aws-stage-config">AWS stage config</div>;
59
+ const EcsStageConfig = ({ stage }: { stage: any }) => {
60
+ providerRenderStates.push(stage.cloudProvider === 'ecs' && stage.cloudProviderType === 'ecs');
61
+ return <div className="ecs-stage-config">ECS stage config</div>;
62
+ };
63
+ const RegularStageConfig = () => <div className="regular-stage-config">Regular stage config</div>;
64
+
65
+ const account = (cloudProvider: string): IAccountDetails =>
66
+ ({
67
+ accountId: `${cloudProvider}-account-id`,
68
+ accountType: cloudProvider,
69
+ authorized: true,
70
+ challengeDestructiveActions: false,
71
+ cloudProvider,
72
+ environment: 'test',
73
+ name: `${cloudProvider}-account`,
74
+ primaryAccount: false,
75
+ regions: [],
76
+ requiredGroupMembership: [],
77
+ type: cloudProvider,
78
+ } as IAccountDetails);
79
+
80
+ const pipeline = (id: string, name: string): IPipeline => ({
81
+ application: 'app',
82
+ id,
83
+ name,
84
+ stages: [],
85
+ triggers: [],
86
+ parameterConfig: [],
87
+ notifications: [],
88
+ limitConcurrent: true,
89
+ keepWaitingPipelines: false,
90
+ });
91
+
92
+ const createApp = (pipelines: IPipeline[], strategies: IPipeline[] = []) => {
93
+ const app = ApplicationModelBuilder.createApplicationForTests(
94
+ 'app',
95
+ { key: 'pipelineConfigs', lazy: true, defaultData: [] as IPipeline[] },
96
+ { key: 'strategyConfigs', lazy: true, defaultData: [] as IPipeline[] },
97
+ );
98
+ app.pipelineConfigs.data = pipelines;
99
+ app.strategyConfigs.data = strategies;
100
+ spyOn(app.pipelineConfigs, 'activate').and.callThrough();
101
+ spyOn(app.pipelineConfigs, 'refresh').and.returnValue(Promise.resolve(pipelines) as any);
102
+ spyOn(app.strategyConfigs, 'activate').and.callThrough();
103
+ spyOn(app.strategyConfigs, 'refresh').and.returnValue(Promise.resolve(strategies) as any);
104
+ return app;
105
+ };
106
+
107
+ const flush = async () => {
108
+ await Promise.resolve();
109
+ await new Promise((resolve) => setTimeout(resolve, 0));
110
+ await Promise.resolve();
111
+ };
112
+
113
+ const deferred = <T,>() => {
114
+ let resolve: (value: T) => void;
115
+ let reject: (reason?: any) => void;
116
+ const promise = new Promise<T>((resolvePromise, rejectPromise) => {
117
+ resolve = resolvePromise;
118
+ reject = rejectPromise;
119
+ });
120
+ return { promise, resolve, reject };
121
+ };
122
+
123
+ const templatedV1 = (isNew = false, source = 'spinnaker://template-id') => {
124
+ const config = pipeline('template-pipeline-id', 'Template Pipeline') as any;
125
+ config.type = 'templatedPipeline';
126
+ config.isNew = isNew || undefined;
127
+ config.config = {
128
+ schema: '1',
129
+ pipeline: {
130
+ application: 'app',
131
+ name: config.name,
132
+ pipelineConfigId: config.id,
133
+ template: { source },
134
+ variables: {},
135
+ },
136
+ };
137
+ return config as IPipeline;
138
+ };
139
+
140
+ const templatedV2 = (isNew = false) => {
141
+ const config = pipeline('template-pipeline-id', 'Template Pipeline') as any;
142
+ config.type = 'templatedPipeline';
143
+ config.isNew = isNew || undefined;
144
+ config.schema = 'v2';
145
+ config.template = {
146
+ artifactAccount: 'front50ArtifactCredentials',
147
+ reference: 'spinnaker://template-id',
148
+ type: 'front50/pipelineTemplate',
149
+ };
150
+ config.variables = {};
151
+ return config as IPipeline;
152
+ };
153
+
154
+ const showStageConfig = (pipelineId: string, stageIndex = 0) => {
155
+ ViewStateCache.get('pipelineConfig').put(`app:${pipelineId}`, { section: 'stage', stageIndex });
156
+ };
157
+
158
+ const registerStageTypes = () => {
159
+ Registry.pipeline.registerStage({
160
+ key: 'wait',
161
+ label: 'Wait',
162
+ } as IStageTypeConfig);
163
+ Registry.pipeline.registerStage({
164
+ key: 'manualJudgment',
165
+ label: 'Manual Judgment',
166
+ } as IStageTypeConfig);
167
+ };
168
+
169
+ const registerBaseProviderStages = (ecsKey = 'destroyServerGroup') => {
170
+ Registry.pipeline.registerStage({
171
+ key: 'destroyServerGroup',
172
+ label: 'Destroy Server Group',
173
+ useBaseProvider: true,
174
+ } as IStageTypeConfig);
175
+ Registry.pipeline.registerStage({
176
+ key: 'destroyServerGroup',
177
+ provides: 'destroyServerGroup',
178
+ cloudProvider: 'aws',
179
+ component: AwsStageConfig,
180
+ } as IStageTypeConfig);
181
+ Registry.pipeline.registerStage({
182
+ key: ecsKey,
183
+ provides: 'destroyServerGroup',
184
+ providesFor: ['ecs'],
185
+ component: EcsStageConfig,
186
+ } as IStageTypeConfig);
187
+ };
188
+
189
+ const commonStageFields = {
190
+ comments: 'Keep this comment',
191
+ notifications: [{ type: 'email', address: 'team@example.com', level: 'stage' }],
192
+ sendNotifications: true,
193
+ failPipeline: true,
194
+ continuePipeline: false,
195
+ completeOtherBranchesThenFail: true,
196
+ failOnFailedExpressions: true,
197
+ stageEnabled: { type: 'expression', expression: '${ parameters.deploy }' },
198
+ restrictExecutionDuringTimeWindow: true,
199
+ restrictedExecutionWindow: { days: [1], startHour: 9, startMin: 30, endHour: 17, endMin: 0 },
200
+ skipWindowText: true,
201
+ stageTimeoutMs: 900000,
202
+ expectedArtifacts: [{ id: 'artifact-id', displayName: 'manifest', matchArtifact: { type: 'kubernetes/manifest' } }],
203
+ };
204
+
205
+ const providerStage = (provider: 'aws' | 'ecs') =>
206
+ ({
207
+ refId: '2',
208
+ requisiteStageRefIds: ['1'],
209
+ isNew: true,
210
+ name: 'Custom destroy name',
211
+ type: 'destroyServerGroup',
212
+ cloudProvider: provider,
213
+ cloudProviderType: provider,
214
+ credentials: `${provider}-account`,
215
+ regions: [`${provider}-region`],
216
+ cluster: `${provider}-cluster`,
217
+ target: `${provider}-target`,
218
+ account: `${provider}-account`,
219
+ region: `${provider}-region`,
220
+ availabilityZones: { [`${provider}-region`]: ['zone-a'] },
221
+ capacity: { min: 1, max: 2, desired: 1 },
222
+ source: { account: `${provider}-source` },
223
+ [`${provider}ProviderField`]: `${provider}-specific`,
224
+ ...cloneDeep(commonStageFields),
225
+ } as any);
226
+
227
+ const expectCommonFieldsPreserved = (stage: any) => {
228
+ expect(stage).toEqual(
229
+ jasmine.objectContaining({
230
+ refId: '2',
231
+ requisiteStageRefIds: ['1'],
232
+ isNew: true,
233
+ name: 'Custom destroy name',
234
+ ...commonStageFields,
235
+ }),
236
+ );
237
+ };
238
+
239
+ const expectProviderFieldsRemoved = (stage: any, previousProvider: 'aws' | 'ecs') => {
240
+ [
241
+ 'credentials',
242
+ 'regions',
243
+ 'cluster',
244
+ 'target',
245
+ 'account',
246
+ 'region',
247
+ 'availabilityZones',
248
+ 'capacity',
249
+ 'source',
250
+ `${previousProvider}ProviderField`,
251
+ ].forEach((field) => expect(stage[field]).toBeUndefined());
252
+ };
253
+
254
+ it('defines distinct minimal retention policies for stage type and provider changes', () => {
255
+ expect(STAGE_IDENTITY_FIELDS).toEqual(['requisiteStageRefIds', 'refId', 'isNew', 'name', 'type']);
256
+ expect(COMMON_STAGE_FIELDS).toEqual([
257
+ ...STAGE_IDENTITY_FIELDS,
258
+ 'comments',
259
+ 'notifications',
260
+ 'sendNotifications',
261
+ 'failPipeline',
262
+ 'continuePipeline',
263
+ 'completeOtherBranchesThenFail',
264
+ 'failOnFailedExpressions',
265
+ 'stageEnabled',
266
+ 'restrictExecutionDuringTimeWindow',
267
+ 'restrictedExecutionWindow',
268
+ 'skipWindowText',
269
+ 'stageTimeoutMs',
270
+ 'expectedArtifacts',
271
+ ]);
272
+ });
273
+
274
+ it('reports serialized changes and clones defaults when applying stage configuration', () => {
275
+ const defaults = { nested: { value: 'default value' } };
276
+ const stage = { refId: '1', name: '', type: 'regular', requisiteStageRefIds: [] } as any;
277
+ const config = {
278
+ key: 'regular',
279
+ label: 'Regular',
280
+ alias: 'legacyRegular',
281
+ addAliasToConfig: true,
282
+ defaults,
283
+ } as IStageTypeConfig;
284
+
285
+ expect(applyStageConfigDefaults(stage, config)).toBe(true);
286
+ expect(stage).toEqual(
287
+ jasmine.objectContaining({ name: 'Regular', alias: 'legacyRegular', nested: { value: 'default value' } }),
288
+ );
289
+ expect(stage.nested).not.toBe(defaults.nested);
290
+ expect(defaults).toEqual({ nested: { value: 'default value' } });
291
+ expect(applyStageConfigDefaults(stage, config)).toBe(false);
292
+ });
293
+
294
+ beforeEach(() => {
295
+ $stateParams = {};
296
+ router = new UIRouterReact();
297
+ runtime = createDeckRuntime(router);
298
+ stateGo = jasmine.createSpy('stateGo');
299
+ transitionCleanup = jasmine.createSpy('transitionCleanup');
300
+ transitionOnBefore = spyOn(router.transitionService, 'onBefore').and.returnValue(transitionCleanup);
301
+ fiatEnabled = SETTINGS.feature.fiatEnabled;
302
+ providerRenderStates = [];
303
+ Registry.reinitialize();
304
+ ViewStateCache.get('pipelineConfig').removeAll();
305
+ spyOn(AccountService, 'applicationAccounts').and.callFake(() => Promise.resolve([account('aws')]) as any);
306
+ spyOn(ApplicationReader, 'getApplicationPermissions').and.returnValue(Promise.resolve({}) as any);
307
+ spyOn(runtime.services.executionService, 'getExecutionsForConfigIds').and.returnValue(Promise.resolve([]));
308
+ });
309
+
310
+ afterEach(() => {
311
+ router.dispose();
312
+ runtime.dispose();
313
+ SETTINGS.feature = { ...SETTINGS.feature, fiatEnabled };
314
+ Registry.reinitialize();
315
+ ViewStateCache.get('pipelineConfig').removeAll();
316
+ });
317
+
318
+ it('refreshes configs and renders the requested pipeline configurer by id', async () => {
319
+ const requested = pipeline('target-id', 'Requested Pipeline');
320
+ const app = createApp([pipeline('first-id', 'First Pipeline'), requested]);
321
+ $stateParams.pipelineId = requested.id;
322
+
323
+ const wrapper = mount(<PipelineConfigPage app={app} className="flex-fill" />);
324
+ await flush();
325
+ wrapper.update();
326
+
327
+ expect(app.pipelineConfigs.activate).toHaveBeenCalled();
328
+ expect(app.pipelineConfigs.refresh).toHaveBeenCalled();
329
+ expect(wrapper.find('.pipeline-configurer').exists()).toBe(true);
330
+ expect(wrapper.find('.pipeline-config-heading h3').text()).toContain('Requested Pipeline');
331
+
332
+ wrapper.unmount();
333
+ });
334
+
335
+ it('uses the injected router for transition guarding and back navigation', async () => {
336
+ const requested = pipeline('target-id', 'Requested Pipeline');
337
+ const app = createApp([requested]);
338
+ $stateParams.pipelineId = requested.id;
339
+
340
+ const wrapper = mount(<PipelineConfigPage app={app} />);
341
+ await flush();
342
+ wrapper.update();
343
+
344
+ wrapper.find('.btn-configure').simulate('click');
345
+ expect(stateGo).toHaveBeenCalledWith('^.executions');
346
+ expect(transitionOnBefore).toHaveBeenCalledWith({}, jasmine.any(Function));
347
+
348
+ wrapper.unmount();
349
+ expect(transitionCleanup).toHaveBeenCalled();
350
+ });
351
+
352
+ it('renders the React pipeline config layout wrappers', async () => {
353
+ const app = createApp([pipeline('target-id', 'Requested Pipeline')]);
354
+ $stateParams.pipelineId = 'target-id';
355
+
356
+ const wrapper = mount(<PipelineConfigPage app={app} className="flex-fill" />);
357
+ await flush();
358
+ wrapper.update();
359
+
360
+ expect(wrapper.find('pipeline-configurer').exists()).toBe(false);
361
+ expect(wrapper.find('.pipeline-config-page.container-fluid').exists()).toBe(true);
362
+ expect(wrapper.find('.pipeline-config-page.full-width').exists()).toBe(true);
363
+ expect(wrapper.find('.pipeline-config-page.flex-fill').exists()).toBe(true);
364
+ expect(wrapper.find('.pipeline-configurer').exists()).toBe(true);
365
+ expect(wrapper.find('.pipeline-configurer').closest('.col-md-10.col-md-offset-1').exists()).toBe(true);
366
+ expect(wrapper.find('.pipeline-config-view .row.horizontal > .col-md-12').exists()).toBe(true);
367
+
368
+ wrapper.unmount();
369
+ });
370
+
371
+ it('uses the pipeline config page as the scroll container for page navigation', async () => {
372
+ const app = createApp([pipeline('target-id', 'Requested Pipeline')]);
373
+ $stateParams.pipelineId = 'target-id';
374
+
375
+ const wrapper = mount(<PipelineConfigPage app={app} />);
376
+ await flush();
377
+ wrapper.update();
378
+
379
+ expect(wrapper.find(PageNavigator).prop('scrollableContainer')).toBe('.pipeline-config-page');
380
+
381
+ wrapper.unmount();
382
+ });
383
+
384
+ it('uses the custom stage type selector when adding a stage', async () => {
385
+ registerStageTypes();
386
+ const requested = pipeline('target-id', 'Requested Pipeline');
387
+ requested.stages = [{ refId: '1', name: '', type: '', isNew: true, requisiteStageRefIds: [] } as any];
388
+ const app = createApp([requested]);
389
+ $stateParams.pipelineId = requested.id;
390
+ showStageConfig(requested.id);
391
+
392
+ const wrapper = mount(<PipelineConfigPage app={app} />);
393
+ await flush();
394
+ wrapper.update();
395
+
396
+ const typeSelect = wrapper.find(ReactSelectInput).filterWhere((node) => node.prop('name') === 'type');
397
+ expect(typeSelect.exists()).toBe(true);
398
+ expect(typeSelect.prop('inputClassName')).not.toContain('input-sm');
399
+ expect((typeSelect.prop('options') as any[]).map((option) => option.label)).toEqual(['Manual Judgment', 'Wait']);
400
+ expect(wrapper.find('.pipeline-stage-config-heading select').exists()).toBe(false);
401
+
402
+ const renderedOption = mount(
403
+ (typeSelect.prop('optionRenderer') as any)({
404
+ label: 'Wait',
405
+ value: 'wait',
406
+ description: 'Pauses execution before continuing.',
407
+ }),
408
+ );
409
+ expect(renderedOption.find('.stage-choice').exists()).toBe(true);
410
+ expect(renderedOption.text()).toContain('Pauses execution before continuing.');
411
+
412
+ renderedOption.unmount();
413
+ wrapper.unmount();
414
+ });
415
+
416
+ it('keeps focus on a stage field after the new-stage type selector initially autofocuses', async () => {
417
+ registerStageTypes();
418
+ const requested = pipeline('target-id', 'Requested Pipeline');
419
+ requested.stages = [{ refId: '1', name: 'Build', type: 'wait', isNew: true, requisiteStageRefIds: [] } as any];
420
+ const app = createApp([requested]);
421
+ $stateParams.pipelineId = requested.id;
422
+ showStageConfig(requested.id);
423
+ const host = document.createElement('div');
424
+ document.body.appendChild(host);
425
+ const wrapper = mount(<PipelineConfigPage app={app} />, { attachTo: host });
426
+
427
+ try {
428
+ await flush();
429
+ wrapper.update();
430
+
431
+ const typeInput = host.querySelector('.pipeline-stage-type-select input[role="combobox"]') as HTMLInputElement;
432
+ const stageNameInput = wrapper
433
+ .find('.pipeline-stage-config-heading input[type="text"]')
434
+ .filterWhere((node) => node.prop('value') === 'Build');
435
+ const stageNameElement = stageNameInput.getDOMNode() as HTMLInputElement;
436
+
437
+ expect(document.activeElement).toBe(typeInput);
438
+
439
+ stageNameElement.focus();
440
+ expect(document.activeElement).toBe(stageNameElement);
441
+
442
+ await act(async () => {
443
+ stageNameInput.prop('onChange')({ target: { value: 'Updated Build' } } as any);
444
+ await flush();
445
+ });
446
+ wrapper.update();
447
+
448
+ expect(document.activeElement).toBe(stageNameElement);
449
+ } finally {
450
+ wrapper.unmount();
451
+ host.remove();
452
+ }
453
+ });
454
+
455
+ it('uses the custom multi selector for stage dependencies', async () => {
456
+ registerStageTypes();
457
+ const requested = pipeline('target-id', 'Requested Pipeline');
458
+ requested.stages = [
459
+ { refId: '1', name: 'Build', type: 'wait', requisiteStageRefIds: [] } as any,
460
+ { refId: '2', name: 'Deploy', type: 'wait', requisiteStageRefIds: ['1'] } as any,
461
+ ];
462
+ const app = createApp([requested]);
463
+ $stateParams.pipelineId = requested.id;
464
+ showStageConfig(requested.id, 1);
465
+
466
+ const wrapper = mount(<PipelineConfigPage app={app} />);
467
+ await flush();
468
+ wrapper.update();
469
+
470
+ const dependencySelect = wrapper
471
+ .find(ReactSelectInput)
472
+ .filterWhere((node) => node.prop('name') === 'requisiteStageRefIds');
473
+ expect(dependencySelect.exists()).toBe(true);
474
+ expect(dependencySelect.prop('multi')).toBe(true);
475
+ expect(dependencySelect.prop('inputClassName')).toContain('pipeline-stage-dependency-select');
476
+ expect(dependencySelect.prop('inputClassName')).not.toContain('input-sm');
477
+ expect(dependencySelect.prop('options')).toContain(jasmine.objectContaining({ label: 'Build', value: '1' }));
478
+ expect(wrapper.find('.pipeline-stage-config-heading select[multiple]').exists()).toBe(false);
479
+
480
+ wrapper.unmount();
481
+ });
482
+
483
+ it('keeps the stage header labels close to their controls', async () => {
484
+ registerStageTypes();
485
+ const requested = pipeline('target-id', 'Requested Pipeline');
486
+ requested.stages = [
487
+ { refId: '1', name: 'Build', type: 'wait', requisiteStageRefIds: [] } as any,
488
+ { refId: '2', name: 'Deploy', type: 'wait', requisiteStageRefIds: ['1'] } as any,
489
+ ];
490
+ const app = createApp([requested]);
491
+ $stateParams.pipelineId = requested.id;
492
+ showStageConfig(requested.id, 1);
493
+
494
+ const wrapper = mount(<PipelineConfigPage app={app} />);
495
+ await flush();
496
+ wrapper.update();
497
+
498
+ const headerFields = wrapper
499
+ .find(StageConfigField)
500
+ .filterWhere((node) => ['Stage Name', 'Depends On'].includes(node.prop('label')));
501
+
502
+ expect(headerFields.length).toBe(2);
503
+ headerFields.forEach((field) => {
504
+ expect(field.prop('labelColumns')).toBe(2);
505
+ expect(field.prop('fieldColumns')).toBe(9);
506
+ });
507
+
508
+ wrapper.unmount();
509
+ });
510
+
511
+ it('replaces the graph pipeline when stage dependencies change', async () => {
512
+ registerStageTypes();
513
+ const requested = pipeline('target-id', 'Requested Pipeline');
514
+ requested.stages = [
515
+ { refId: '1', name: 'Build', type: 'wait', requisiteStageRefIds: [] } as any,
516
+ { refId: '2', name: 'Deploy', type: 'wait', requisiteStageRefIds: [] } as any,
517
+ ];
518
+ const app = createApp([requested]);
519
+ $stateParams.pipelineId = requested.id;
520
+ showStageConfig(requested.id, 1);
521
+
522
+ const wrapper = mount(<PipelineConfigPage app={app} />);
523
+ await flush();
524
+ wrapper.update();
525
+
526
+ const originalGraphPipeline = wrapper.find(PipelineGraph).prop('pipeline') as IPipeline;
527
+ const dependencySelect = wrapper
528
+ .find(ReactSelectInput)
529
+ .filterWhere((node) => node.prop('name') === 'requisiteStageRefIds');
530
+
531
+ await act(async () => {
532
+ dependencySelect.prop('onChange')({ target: { value: ['1'] } } as any);
533
+ await flush();
534
+ });
535
+ wrapper.update();
536
+
537
+ const updatedGraphPipeline = wrapper.find(PipelineGraph).prop('pipeline') as IPipeline;
538
+ expect(updatedGraphPipeline).not.toBe(originalGraphPipeline);
539
+ expect(updatedGraphPipeline.stages[1].requisiteStageRefIds).toEqual(['1']);
540
+
541
+ wrapper.unmount();
542
+ });
543
+
544
+ it('replaces the graph pipeline when stage fields change', async () => {
545
+ registerStageTypes();
546
+ const requested = pipeline('target-id', 'Requested Pipeline');
547
+ requested.stages = [{ refId: '1', name: 'Build', type: 'wait', requisiteStageRefIds: [] } as any];
548
+ const app = createApp([requested]);
549
+ $stateParams.pipelineId = requested.id;
550
+ showStageConfig(requested.id);
551
+
552
+ const wrapper = mount(<PipelineConfigPage app={app} />);
553
+ await flush();
554
+ wrapper.update();
555
+
556
+ const originalGraphPipeline = wrapper.find(PipelineGraph).prop('pipeline') as IPipeline;
557
+ const stageNameInput = wrapper
558
+ .find('.pipeline-stage-config-heading input[type="text"]')
559
+ .filterWhere((node) => node.prop('value') === 'Build');
560
+
561
+ await act(async () => {
562
+ stageNameInput.prop('onChange')({ target: { value: 'Bake' } } as any);
563
+ await flush();
564
+ });
565
+ wrapper.update();
566
+
567
+ const updatedGraphPipeline = wrapper.find(PipelineGraph).prop('pipeline') as IPipeline;
568
+ expect(updatedGraphPipeline).not.toBe(originalGraphPipeline);
569
+ expect(updatedGraphPipeline.stages[0].name).toBe('Bake');
570
+
571
+ wrapper.unmount();
572
+ });
573
+
574
+ it('renders direct React common execution controls for stages', async () => {
575
+ registerStageTypes();
576
+ const requested = pipeline('target-id', 'Requested Pipeline');
577
+ requested.stages = [
578
+ {
579
+ refId: '1',
580
+ name: 'Build',
581
+ type: 'wait',
582
+ requisiteStageRefIds: [],
583
+ failOnFailedExpressions: false,
584
+ } as any,
585
+ ];
586
+ const app = createApp([requested]);
587
+ $stateParams.pipelineId = requested.id;
588
+ showStageConfig(requested.id);
589
+
590
+ const wrapper = mount(<PipelineConfigPage app={app} />);
591
+ await flush();
592
+ wrapper.update();
593
+
594
+ await act(async () => {
595
+ wrapper.find('[data-test-id="fail-on-failed-expressions"]').first().prop('onChange')({
596
+ target: { checked: true },
597
+ } as any);
598
+ wrapper.find('[data-test-id="optional-stage-enabled"]').first().prop('onChange')({
599
+ target: { checked: true },
600
+ } as any);
601
+ await flush();
602
+ });
603
+ wrapper.update();
604
+
605
+ await act(async () => {
606
+ wrapper.find('[data-test-id="optional-stage-expression"]').first().prop('onChange')({
607
+ target: { value: '${ parameters.deploy }' },
608
+ } as any);
609
+ await flush();
610
+ });
611
+ wrapper.update();
612
+
613
+ const updatedPipeline = wrapper.find(PipelineGraph).prop('pipeline') as IPipeline;
614
+ expect(updatedPipeline.stages[0].failOnFailedExpressions).toBe(true);
615
+ expect(updatedPipeline.stages[0].stageEnabled).toEqual({
616
+ type: 'expression',
617
+ expression: '${ parameters.deploy }',
618
+ });
619
+
620
+ wrapper.unmount();
621
+ });
622
+
623
+ it('preserves existing stage notifications when generic notification sending is disabled', async () => {
624
+ registerStageTypes();
625
+ const requested = pipeline('target-id', 'Requested Pipeline');
626
+ requested.stages = [
627
+ {
628
+ refId: '1',
629
+ name: 'Build',
630
+ type: 'wait',
631
+ requisiteStageRefIds: [],
632
+ sendNotifications: true,
633
+ notifications: [{ type: 'email', address: 'team@example.com' }],
634
+ } as any,
635
+ ];
636
+ const app = createApp([requested]);
637
+ $stateParams.pipelineId = requested.id;
638
+ showStageConfig(requested.id);
639
+
640
+ const wrapper = mount(<PipelineConfigPage app={app} />);
641
+ await flush();
642
+ wrapper.update();
643
+
644
+ const notificationsToggle = wrapper
645
+ .find('input[type="checkbox"]')
646
+ .filterWhere((node) => node.prop('checked') === true);
647
+ await act(async () => {
648
+ notificationsToggle.last().prop('onChange')({ target: { checked: false } } as any);
649
+ await flush();
650
+ });
651
+ wrapper.update();
652
+
653
+ const updatedPipeline = wrapper.find(PipelineGraph).prop('pipeline') as IPipeline;
654
+ expect(updatedPipeline.stages[0].sendNotifications).toBeUndefined();
655
+ expect(updatedPipeline.stages[0].notifications).toEqual([{ type: 'email', address: 'team@example.com' }]);
656
+
657
+ wrapper.unmount();
658
+ });
659
+
660
+ it('renders manual judgment authorized groups from application permissions', async () => {
661
+ SETTINGS.feature = { ...SETTINGS.feature, fiatEnabled: true };
662
+ (ApplicationReader.getApplicationPermissions as jasmine.Spy).and.returnValue(
663
+ Promise.resolve({ READ: ['readers'], WRITE: ['writers'], EXECUTE: ['executors'] }) as any,
664
+ );
665
+ registerStageTypes();
666
+ const requested = pipeline('target-id', 'Requested Pipeline');
667
+ requested.stages = [
668
+ {
669
+ refId: '1',
670
+ name: 'Judge',
671
+ type: 'manualJudgment',
672
+ requisiteStageRefIds: [],
673
+ selectedStageRoles: ['writers'],
674
+ } as any,
675
+ ];
676
+ const app = createApp([requested]);
677
+ $stateParams.pipelineId = requested.id;
678
+ showStageConfig(requested.id);
679
+
680
+ const wrapper = mount(<PipelineConfigPage app={app} />);
681
+ await flush();
682
+ wrapper.update();
683
+
684
+ const authorizedGroupsSelect = wrapper
685
+ .find(ReactSelectInput)
686
+ .filterWhere((node) => node.prop('name') === 'selectedStageRoles');
687
+ expect(authorizedGroupsSelect.exists()).toBe(true);
688
+ expect(authorizedGroupsSelect.prop('multi')).toBe(true);
689
+ expect(authorizedGroupsSelect.prop('options')).toContain(
690
+ jasmine.objectContaining({ label: 'readers', value: 'readers' }),
691
+ );
692
+ expect(authorizedGroupsSelect.prop('options')).toContain(
693
+ jasmine.objectContaining({ label: 'writers', value: 'writers' }),
694
+ );
695
+ expect(authorizedGroupsSelect.prop('options')).toContain(
696
+ jasmine.objectContaining({ label: 'executors', value: 'executors' }),
697
+ );
698
+
699
+ await act(async () => {
700
+ authorizedGroupsSelect.prop('onChange')({ target: { value: ['executors'] } } as any);
701
+ await flush();
702
+ });
703
+ wrapper.update();
704
+
705
+ const updatedPipeline = wrapper.find(PipelineGraph).prop('pipeline') as IPipeline;
706
+ expect(updatedPipeline.stages[0].selectedStageRoles).toEqual(['executors']);
707
+
708
+ wrapper.unmount();
709
+ });
710
+
711
+ it('shows template configuration controls', async () => {
712
+ const requested = templatedV1();
713
+ const plan = { ...pipeline(requested.id, requested.name), stages: [] } as IPipeline;
714
+ const app = createApp([requested]);
715
+ $stateParams.pipelineId = requested.id;
716
+ spyOn(PipelineTemplateReader, 'getPipelinePlan').and.returnValue(Promise.resolve(plan));
717
+
718
+ const wrapper = mount(<PipelineConfigPage app={app} />);
719
+ await flush();
720
+ wrapper.update();
721
+
722
+ const configureTemplateButtons = wrapper
723
+ .find('button')
724
+ .filterWhere((node) => node.text().includes('Configure Template'));
725
+ expect(configureTemplateButtons.exists()).toBe(true);
726
+
727
+ wrapper.unmount();
728
+ });
729
+
730
+ it('opens the shared React modal with a clone and makes successful configuration revertible', async () => {
731
+ const requested = templatedV1();
732
+ const originalPlan = { ...pipeline(requested.id, requested.name), stages: [] } as IPipeline;
733
+ (originalPlan as any).executionId = 'rendered-execution-id';
734
+ const app = createApp([requested]);
735
+ $stateParams.pipelineId = requested.id;
736
+ $stateParams.executionId = 'route-execution-id';
737
+ spyOn(PipelineTemplateReader, 'getPipelinePlan').and.returnValue(Promise.resolve(originalPlan));
738
+ const modalResult = deferred<{ plan: IPipeline; config: IPipeline }>();
739
+ const showModal = spyOn(ReactModal, 'show').and.returnValue(modalResult.promise);
740
+
741
+ const wrapper = mount(<PipelineConfigPage app={app} />);
742
+ await flush();
743
+ wrapper.update();
744
+
745
+ const configure = wrapper.find('[data-test-id="configure-template"]');
746
+ configure.prop('onClick')();
747
+ const modalProps = showModal.calls.mostRecent().args[1] as any;
748
+ expect(showModal.calls.mostRecent().args[0]).toBe(ConfigurePipelineTemplateModal);
749
+ expect(modalProps).toEqual(
750
+ jasmine.objectContaining({
751
+ application: app,
752
+ executionId: 'rendered-execution-id',
753
+ isNew: requested.isNew,
754
+ pipelineId: requested.id,
755
+ }),
756
+ );
757
+ expect(modalProps.pipelineTemplateConfig).toEqual(requested);
758
+ expect(modalProps.pipelineTemplateConfig).not.toBe(requested);
759
+ modalProps.pipelineTemplateConfig.name = 'mutated clone';
760
+ expect((wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).name).toBe('Template Pipeline');
761
+
762
+ const configured = { ...requested, isNew: true, name: 'Configured Pipeline' } as IPipeline;
763
+ const configuredPlan = { ...originalPlan, name: 'Configured Pipeline' } as IPipeline;
764
+ await act(async () => {
765
+ modalResult.resolve({ plan: configuredPlan, config: configured });
766
+ await flush();
767
+ });
768
+ wrapper.update();
769
+
770
+ expect((wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).name).toBe('Configured Pipeline');
771
+ expect(wrapper.text()).toContain('Save Changes');
772
+ expect(wrapper.find('[data-test-id="Pipeline.revertChanges"]').exists()).toBe(true);
773
+
774
+ await act(async () => {
775
+ wrapper.find('[data-test-id="Pipeline.revertChanges"]').prop('onClick')();
776
+ await flush();
777
+ });
778
+ wrapper.update();
779
+
780
+ expect((wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).name).toBe('Template Pipeline');
781
+ expect(wrapper.find('[data-test-id="Pipeline.revertChanges"]').exists()).toBe(false);
782
+
783
+ wrapper.unmount();
784
+ });
785
+
786
+ it('applies a template modal result after execution enrichment replaces the same pipeline model', async () => {
787
+ const requested = templatedV1(false, 'https://templates.example/{{ execution.id }}');
788
+ const originalPlan = { ...pipeline(requested.id, requested.name), stages: [] } as IPipeline;
789
+ (originalPlan as any).executionId = 'rendered-execution-id';
790
+ const app = createApp([requested]);
791
+ $stateParams.pipelineId = requested.id;
792
+ spyOn(PipelineTemplateReader, 'getPipelinePlan').and.returnValue(Promise.resolve(originalPlan));
793
+ const executionEnrichment = deferred<any[]>();
794
+ (runtime.services.executionService.getExecutionsForConfigIds as jasmine.Spy).and.returnValue(
795
+ executionEnrichment.promise,
796
+ );
797
+ const modalResult = deferred<{ plan: IPipeline; config: IPipeline }>();
798
+ spyOn(ReactModal, 'show').and.returnValue(modalResult.promise);
799
+
800
+ const wrapper = mount(<PipelineConfigPage app={app} />);
801
+ await flush();
802
+ wrapper.update();
803
+ wrapper.find('[data-test-id="configure-template"]').prop('onClick')();
804
+
805
+ await act(async () => {
806
+ executionEnrichment.resolve([
807
+ { id: 'rendered-execution-id', name: 'Enriched execution', stages: [], trigger: {} },
808
+ ]);
809
+ await flush();
810
+ });
811
+ wrapper.update();
812
+
813
+ expect(wrapper.text()).toContain('Enriched execution');
814
+ expect(wrapper.find('[data-test-id="configure-template"]').prop('disabled')).toBe(true);
815
+
816
+ const configured = { ...requested, name: 'Configured Pipeline' } as IPipeline;
817
+ const configuredPlan = { ...pipeline(requested.id, 'Configured Pipeline'), stages: [] } as IPipeline;
818
+ await act(async () => {
819
+ modalResult.resolve({ plan: configuredPlan, config: configured });
820
+ await flush();
821
+ });
822
+ wrapper.update();
823
+
824
+ const rendered = wrapper.find(PipelineGraph).prop('pipeline') as IPipeline;
825
+ expect(rendered.name).toBe('Configured Pipeline');
826
+ expect((rendered as any).executionId).toBe('rendered-execution-id');
827
+ expect(wrapper.text()).toContain('Enriched execution');
828
+ expect(wrapper.text()).toContain('Save Changes');
829
+ expect(wrapper.find('[data-test-id="configure-template"]').prop('disabled')).toBe(false);
830
+
831
+ wrapper.unmount();
832
+ });
833
+
834
+ it('applies only the latest template modal result and keeps loading until it completes', async () => {
835
+ const requested = templatedV1();
836
+ const originalPlan = { ...pipeline(requested.id, requested.name), stages: [] } as IPipeline;
837
+ const app = createApp([requested]);
838
+ $stateParams.pipelineId = requested.id;
839
+ spyOn(PipelineTemplateReader, 'getPipelinePlan').and.returnValue(Promise.resolve(originalPlan));
840
+ const firstModal = deferred<{ plan: IPipeline; config: IPipeline }>();
841
+ const secondModal = deferred<{ plan: IPipeline; config: IPipeline }>();
842
+ const showModal = spyOn(ReactModal, 'show').and.returnValues(firstModal.promise, secondModal.promise);
843
+
844
+ const wrapper = mount(<PipelineConfigPage app={app} />);
845
+ await flush();
846
+ wrapper.update();
847
+
848
+ const configure = wrapper.find('[data-test-id="configure-template"]').prop('onClick') as () => void;
849
+ await act(async () => {
850
+ configure();
851
+ configure();
852
+ await flush();
853
+ });
854
+ wrapper.update();
855
+
856
+ expect(showModal).toHaveBeenCalledTimes(2);
857
+ expect(wrapper.find('[data-test-id="configure-template"]').prop('disabled')).toBe(true);
858
+
859
+ const firstConfig = { ...requested, name: 'Stale First Config' } as IPipeline;
860
+ const firstPlan = { ...originalPlan, name: 'Stale First Plan' } as IPipeline;
861
+ await act(async () => {
862
+ firstModal.resolve({ plan: firstPlan, config: firstConfig });
863
+ await flush();
864
+ });
865
+ wrapper.update();
866
+
867
+ expect((wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).name).toBe(requested.name);
868
+ expect(wrapper.find('[data-test-id="configure-template"]').prop('disabled')).toBe(true);
869
+
870
+ const secondConfig = { ...requested, name: 'Latest Config' } as IPipeline;
871
+ const secondPlan = { ...originalPlan, name: 'Latest Plan' } as IPipeline;
872
+ await act(async () => {
873
+ secondModal.resolve({ plan: secondPlan, config: secondConfig });
874
+ await flush();
875
+ });
876
+ wrapper.update();
877
+
878
+ expect((wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).name).toBe('Latest Plan');
879
+ expect(wrapper.find('[data-test-id="configure-template"]').prop('disabled')).toBe(false);
880
+ expect(wrapper.text()).toContain('Save Changes');
881
+ wrapper.unmount();
882
+ });
883
+
884
+ it('ignores a template modal result after a different pipeline load supersedes it', async () => {
885
+ const requested = templatedV1();
886
+ const originalPlan = { ...pipeline(requested.id, requested.name), stages: [] } as IPipeline;
887
+ const app = createApp([requested]);
888
+ $stateParams.pipelineId = requested.id;
889
+ const reloaded = { ...templatedV1(), id: 'reloaded-pipeline-id', name: 'Reloaded Pipeline' } as IPipeline;
890
+ (reloaded as any).config.pipeline.name = reloaded.name;
891
+ (reloaded as any).config.pipeline.pipelineConfigId = reloaded.id;
892
+ const reloadedPlan = { ...pipeline(reloaded.id, reloaded.name), stages: [] } as IPipeline;
893
+ const reloadedApp = createApp([reloaded]);
894
+ spyOn(PipelineTemplateReader, 'getPipelinePlan').and.callFake((config: IPipeline) =>
895
+ Promise.resolve(config.name === reloaded.name ? reloadedPlan : originalPlan),
896
+ );
897
+ const modalResult = deferred<{ plan: IPipeline; config: IPipeline }>();
898
+ spyOn(ReactModal, 'show').and.returnValue(modalResult.promise);
899
+
900
+ const wrapper = mount(<PipelineConfigPage app={app} />);
901
+ await flush();
902
+ wrapper.update();
903
+ wrapper.find('[data-test-id="configure-template"]').prop('onClick')();
904
+
905
+ $stateParams.pipelineId = reloaded.id;
906
+ wrapper.setProps({ app: reloadedApp });
907
+ await flush();
908
+ wrapper.update();
909
+ expect((wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).name).toBe(reloaded.name);
910
+
911
+ await act(async () => {
912
+ modalResult.resolve({
913
+ plan: { ...originalPlan, name: 'Stale Modal Plan' },
914
+ config: { ...requested, name: 'Stale Modal Config' },
915
+ });
916
+ await flush();
917
+ });
918
+ wrapper.update();
919
+
920
+ expect((wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).name).toBe(reloaded.name);
921
+ expect(wrapper.text()).not.toContain('Save Changes');
922
+ expect(wrapper.find('[data-test-id="configure-template"]').prop('disabled')).toBe(false);
923
+ wrapper.unmount();
924
+ });
925
+
926
+ it('always marks a successful template configuration dirty and only save establishes the new baseline', async () => {
927
+ const requested = templatedV1();
928
+ const originalPlan = { ...pipeline(requested.id, requested.name), stages: [] } as IPipeline;
929
+ const app = createApp([requested]);
930
+ $stateParams.pipelineId = requested.id;
931
+ spyOn(PipelineTemplateReader, 'getPipelinePlan').and.returnValue(Promise.resolve(originalPlan));
932
+ spyOn(PipelineConfigService, 'savePipeline').and.returnValue(Promise.resolve());
933
+ spyOn(ReactModal, 'show').and.returnValue(
934
+ Promise.resolve({ plan: cloneDeep(originalPlan), config: cloneDeep(requested) }),
935
+ );
936
+
937
+ const wrapper = mount(<PipelineConfigPage app={app} />);
938
+ await flush();
939
+ wrapper.update();
940
+
941
+ await act(async () => {
942
+ wrapper.find('[data-test-id="configure-template"]').prop('onClick')();
943
+ await flush();
944
+ });
945
+ wrapper.update();
946
+ expect(wrapper.text()).toContain('Save Changes');
947
+
948
+ await act(async () => {
949
+ wrapper
950
+ .find('button.btn-primary')
951
+ .filterWhere((button) => button.text().includes('Save Changes'))
952
+ .prop('onClick')();
953
+ await flush();
954
+ });
955
+ wrapper.update();
956
+
957
+ expect(PipelineConfigService.savePipeline).toHaveBeenCalledWith(
958
+ jasmine.objectContaining({ id: requested.id, name: requested.name }),
959
+ );
960
+ expect(wrapper.text()).toContain('In sync with server');
961
+ expect(wrapper.find('[data-test-id="Pipeline.revertChanges"]').exists()).toBe(false);
962
+
963
+ wrapper.unmount();
964
+ });
965
+
966
+ it('auto-opens a new static V1 template exactly once and does not reopen after dismissal', async () => {
967
+ const requested = templatedV1(true);
968
+ const app = createApp([requested]);
969
+ $stateParams.pipelineId = requested.id;
970
+ $stateParams.new = '1';
971
+ const modalResult = deferred<any>();
972
+ const showModal = spyOn(ReactModal, 'show').and.returnValue(modalResult.promise);
973
+
974
+ const wrapper = mount(<PipelineConfigPage app={app} />);
975
+ await flush();
976
+ wrapper.update();
977
+ expect(showModal).toHaveBeenCalledTimes(1);
978
+
979
+ await act(async () => {
980
+ modalResult.reject('dismissed');
981
+ await flush();
982
+ });
983
+ wrapper.setProps({ app });
984
+ await flush();
985
+ wrapper.update();
986
+
987
+ expect(showModal).toHaveBeenCalledTimes(1);
988
+ expect((wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).name).toBe(requested.name);
989
+ expect(wrapper.find('[data-test-id="configure-template"]').prop('disabled')).toBe(false);
990
+
991
+ wrapper.unmount();
992
+ });
993
+
994
+ it('auto-opens a new V2 template exactly once', async () => {
995
+ const requested = templatedV2(true);
996
+ const plan = { ...pipeline(requested.id, requested.name), stages: [] } as IPipeline;
997
+ const app = createApp([requested]);
998
+ $stateParams.pipelineId = requested.id;
999
+ $stateParams.new = '1';
1000
+ spyOn(PipelineTemplateReader, 'getPipelinePlan').and.returnValue(Promise.resolve(plan));
1001
+ const modalResult = deferred<any>();
1002
+ const showModal = spyOn(ReactModal, 'show').and.returnValue(modalResult.promise);
1003
+
1004
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1005
+ await flush();
1006
+ wrapper.update();
1007
+ expect(showModal).toHaveBeenCalledTimes(1);
1008
+
1009
+ await act(async () => {
1010
+ modalResult.reject('dismissed');
1011
+ await flush();
1012
+ });
1013
+ wrapper.setProps({ app });
1014
+ await flush();
1015
+ expect(showModal).toHaveBeenCalledTimes(1);
1016
+
1017
+ wrapper.unmount();
1018
+ });
1019
+
1020
+ it('does not auto-open a new dynamic V1 template', async () => {
1021
+ const requested = templatedV1(true, 'https://templates.example/{{ execution.id }}');
1022
+ const app = createApp([requested]);
1023
+ $stateParams.pipelineId = requested.id;
1024
+ $stateParams.new = '1';
1025
+ const showModal = spyOn(ReactModal, 'show');
1026
+
1027
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1028
+ await flush();
1029
+ wrapper.update();
1030
+
1031
+ expect(showModal).not.toHaveBeenCalled();
1032
+
1033
+ wrapper.unmount();
1034
+ });
1035
+
1036
+ it('ignores template modal completion after unmount', async () => {
1037
+ const requested = templatedV1();
1038
+ const originalPlan = { ...pipeline(requested.id, requested.name), stages: [] } as IPipeline;
1039
+ const app = createApp([requested]);
1040
+ $stateParams.pipelineId = requested.id;
1041
+ spyOn(PipelineTemplateReader, 'getPipelinePlan').and.returnValue(Promise.resolve(originalPlan));
1042
+ const modalResult = deferred<{ plan: IPipeline; config: IPipeline }>();
1043
+ spyOn(ReactModal, 'show').and.returnValue(modalResult.promise);
1044
+ const consoleError = spyOn(console, 'error');
1045
+
1046
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1047
+ await flush();
1048
+ wrapper.update();
1049
+ wrapper.find('[data-test-id="configure-template"]').prop('onClick')();
1050
+ wrapper.unmount();
1051
+
1052
+ await act(async () => {
1053
+ modalResult.resolve({ plan: originalPlan, config: requested });
1054
+ await flush();
1055
+ });
1056
+
1057
+ expect(consoleError).not.toHaveBeenCalled();
1058
+ });
1059
+
1060
+ it('saves the selected history revision when restoring pipeline history', async () => {
1061
+ const requested = pipeline('target-id', 'Current Pipeline');
1062
+ const restored = { ...pipeline('target-id', 'Restored Pipeline'), updateTs: 'old-revision' };
1063
+ const app = createApp([requested]);
1064
+ $stateParams.pipelineId = requested.id;
1065
+ spyOn(ReactModal, 'show').and.returnValue(Promise.resolve(restored));
1066
+ spyOn(PipelineConfigService, 'savePipeline').and.returnValue(Promise.resolve());
1067
+
1068
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1069
+ await flush();
1070
+ wrapper.update();
1071
+
1072
+ await act(async () => {
1073
+ wrapper.find(PipelineConfigActions).prop('showHistory')();
1074
+ await flush();
1075
+ });
1076
+
1077
+ expect(PipelineConfigService.savePipeline).toHaveBeenCalledWith(
1078
+ jasmine.objectContaining({
1079
+ name: 'Restored Pipeline',
1080
+ }),
1081
+ );
1082
+
1083
+ wrapper.unmount();
1084
+ });
1085
+
1086
+ it('loads accounts once for an app, shows pending state, and ignores completion after unmount', async () => {
1087
+ registerStageTypes();
1088
+ const requested = pipeline('target-id', 'Requested Pipeline');
1089
+ requested.stages = [{ refId: '1', name: '', type: '', isNew: true, requisiteStageRefIds: [] } as any];
1090
+ const app = createApp([requested]);
1091
+ $stateParams.pipelineId = requested.id;
1092
+ showStageConfig(requested.id);
1093
+ let resolveAccounts: (accounts: IAccountDetails[]) => void;
1094
+ const accountRequest = new Promise<IAccountDetails[]>((resolve) => (resolveAccounts = resolve));
1095
+ (AccountService.applicationAccounts as jasmine.Spy).and.returnValue(accountRequest as any);
1096
+
1097
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1098
+ await flush();
1099
+ wrapper.update();
1100
+
1101
+ expect(AccountService.applicationAccounts).toHaveBeenCalledOnceWith(app);
1102
+ expect(wrapper.text()).toContain('Loading application accounts...');
1103
+ expect(
1104
+ wrapper
1105
+ .find(StageConfigField)
1106
+ .filterWhere((node) => node.prop('label') === 'Stage Name')
1107
+ .exists(),
1108
+ ).toBe(true);
1109
+ expect(wrapper.find('[data-test-id="fail-on-failed-expressions"]').exists()).toBe(true);
1110
+ expect(wrapper.text()).toContain('Remove stage');
1111
+ expect(wrapper.text()).toContain('Edit stage as JSON');
1112
+ expect(
1113
+ wrapper
1114
+ .find(ReactSelectInput)
1115
+ .filterWhere((node) => node.prop('name') === 'type')
1116
+ .exists(),
1117
+ ).toBe(false);
1118
+
1119
+ wrapper.setProps({ app });
1120
+ await flush();
1121
+ expect(AccountService.applicationAccounts).toHaveBeenCalledTimes(1);
1122
+
1123
+ wrapper.unmount();
1124
+ await act(async () => {
1125
+ resolveAccounts([account('aws')]);
1126
+ await flush();
1127
+ });
1128
+
1129
+ expect(AccountService.applicationAccounts).toHaveBeenCalledTimes(1);
1130
+ });
1131
+
1132
+ it('renders an account loading error without unfiltered stage type choices', async () => {
1133
+ registerStageTypes();
1134
+ const requested = pipeline('target-id', 'Requested Pipeline');
1135
+ requested.stages = [{ refId: '1', name: '', type: '', isNew: true, requisiteStageRefIds: [] } as any];
1136
+ const app = createApp([requested]);
1137
+ $stateParams.pipelineId = requested.id;
1138
+ showStageConfig(requested.id);
1139
+ (AccountService.applicationAccounts as jasmine.Spy).and.callFake(() =>
1140
+ Promise.reject(new Error('accounts failed')),
1141
+ );
1142
+ const getConfigurableStageTypes = spyOn(Registry.pipeline, 'getConfigurableStageTypes').and.callThrough();
1143
+
1144
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1145
+ await flush();
1146
+ wrapper.update();
1147
+
1148
+ expect(wrapper.text()).toContain('Could not load application accounts: accounts failed');
1149
+ expect(
1150
+ wrapper
1151
+ .find(StageConfigField)
1152
+ .filterWhere((node) => node.prop('label') === 'Stage Name')
1153
+ .exists(),
1154
+ ).toBe(true);
1155
+ expect(wrapper.find('[data-test-id="fail-on-failed-expressions"]').exists()).toBe(true);
1156
+ expect(wrapper.text()).toContain('Remove stage');
1157
+ expect(wrapper.text()).toContain('Edit stage as JSON');
1158
+ expect(
1159
+ wrapper
1160
+ .find(ReactSelectInput)
1161
+ .filterWhere((node) => node.prop('name') === 'type')
1162
+ .exists(),
1163
+ ).toBe(false);
1164
+ expect(getConfigurableStageTypes).not.toHaveBeenCalled();
1165
+
1166
+ wrapper.unmount();
1167
+ });
1168
+
1169
+ it('renders a successful empty account state without unfiltered stage type choices', async () => {
1170
+ registerStageTypes();
1171
+ const requested = pipeline('target-id', 'Requested Pipeline');
1172
+ requested.stages = [{ refId: '1', name: '', type: '', isNew: true, requisiteStageRefIds: [] } as any];
1173
+ const app = createApp([requested]);
1174
+ $stateParams.pipelineId = requested.id;
1175
+ showStageConfig(requested.id);
1176
+ (AccountService.applicationAccounts as jasmine.Spy).and.returnValue(Promise.resolve([]) as any);
1177
+ const getConfigurableStageTypes = spyOn(Registry.pipeline, 'getConfigurableStageTypes').and.callThrough();
1178
+
1179
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1180
+ await flush();
1181
+ wrapper.update();
1182
+
1183
+ expect(wrapper.text()).toContain('No application accounts are available.');
1184
+ expect(
1185
+ wrapper
1186
+ .find(StageConfigField)
1187
+ .filterWhere((node) => node.prop('label') === 'Stage Name')
1188
+ .exists(),
1189
+ ).toBe(true);
1190
+ expect(wrapper.find('[data-test-id="fail-on-failed-expressions"]').exists()).toBe(true);
1191
+ expect(wrapper.text()).toContain('Remove stage');
1192
+ expect(wrapper.text()).toContain('Edit stage as JSON');
1193
+ expect(
1194
+ wrapper
1195
+ .find(ReactSelectInput)
1196
+ .filterWhere((node) => node.prop('name') === 'type')
1197
+ .exists(),
1198
+ ).toBe(false);
1199
+ expect(getConfigurableStageTypes).not.toHaveBeenCalled();
1200
+
1201
+ wrapper.unmount();
1202
+ });
1203
+
1204
+ it('filters an unselected base stage to ECS accounts and renders only the ECS implementation', async () => {
1205
+ registerBaseProviderStages();
1206
+ const requested = pipeline('target-id', 'Requested Pipeline');
1207
+ requested.stages = [
1208
+ {
1209
+ refId: '1',
1210
+ name: 'Destroy Server Group',
1211
+ type: 'destroyServerGroup',
1212
+ isNew: true,
1213
+ requisiteStageRefIds: [],
1214
+ } as any,
1215
+ ];
1216
+ const app = createApp([requested]);
1217
+ const accounts = [account('ecs')];
1218
+ $stateParams.pipelineId = requested.id;
1219
+ showStageConfig(requested.id);
1220
+ (AccountService.applicationAccounts as jasmine.Spy).and.returnValue(Promise.resolve(accounts) as any);
1221
+ const getConfigurableStageTypes = spyOn(Registry.pipeline, 'getConfigurableStageTypes').and.callThrough();
1222
+
1223
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1224
+ await flush();
1225
+ wrapper.update();
1226
+
1227
+ const updatedPipeline = wrapper.find(PipelineGraph).prop('pipeline') as IPipeline;
1228
+ expect(getConfigurableStageTypes).toHaveBeenCalledWith(accounts);
1229
+ expect(
1230
+ (wrapper
1231
+ .find(ReactSelectInput)
1232
+ .filterWhere((node) => node.prop('name') === 'type')
1233
+ .prop('options') as any[])[0],
1234
+ ).toEqual(jasmine.objectContaining({ key: 'destroyServerGroup', cloudProviders: ['ecs'] }));
1235
+ expect(updatedPipeline.stages[0]).toEqual(
1236
+ jasmine.objectContaining({
1237
+ type: 'destroyServerGroup',
1238
+ cloudProvider: 'ecs',
1239
+ cloudProviderType: 'ecs',
1240
+ }),
1241
+ );
1242
+ expect(wrapper.find('.ecs-stage-config').exists()).toBe(true);
1243
+ expect(wrapper.find('.aws-stage-config').exists()).toBe(false);
1244
+
1245
+ wrapper.unmount();
1246
+ });
1247
+
1248
+ it('infers a persisted singleton provider without deleting existing stage configuration', async () => {
1249
+ registerBaseProviderStages('customDestroyServerGroup');
1250
+ registerStageTypes();
1251
+ const requested = pipeline('target-id', 'Requested Pipeline');
1252
+ const persistedStage = providerStage('ecs');
1253
+ delete persistedStage.isNew;
1254
+ delete persistedStage.cloudProvider;
1255
+ delete persistedStage.cloudProviderType;
1256
+ const originalStage = cloneDeep(persistedStage);
1257
+ requested.stages = [{ refId: '1', name: 'Build', type: 'wait', requisiteStageRefIds: [] } as any, persistedStage];
1258
+ const app = createApp([requested]);
1259
+ $stateParams.pipelineId = requested.id;
1260
+ showStageConfig(requested.id, 1);
1261
+ (AccountService.applicationAccounts as jasmine.Spy).and.returnValue(Promise.resolve([account('ecs')]) as any);
1262
+
1263
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1264
+ await flush();
1265
+ wrapper.update();
1266
+
1267
+ const inferredStage = (wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).stages[1];
1268
+ expect(inferredStage).toEqual({
1269
+ ...originalStage,
1270
+ type: 'customDestroyServerGroup',
1271
+ cloudProvider: 'ecs',
1272
+ cloudProviderType: 'ecs',
1273
+ } as any);
1274
+ expect(wrapper.find(BaseProviderStageConfig).prop('readOnly')).toBe(true);
1275
+ expect(wrapper.find(BaseProviderStageConfig).prop('selectedProvider')).toBe('ecs');
1276
+ expect(wrapper.find('.ecs-stage-config').exists()).toBe(true);
1277
+ expect(wrapper.find('.aws-stage-config').exists()).toBe(false);
1278
+ expect(providerRenderStates.length).toBeGreaterThan(0);
1279
+ expect(providerRenderStates).not.toContain(false);
1280
+ expect(wrapper.find('.pipeline-configurer').prop('data-revision')).toBe(1);
1281
+ expect(wrapper.text()).toContain('Save Changes');
1282
+
1283
+ wrapper.setProps({ app });
1284
+ await flush();
1285
+ wrapper.update();
1286
+
1287
+ expect(wrapper.find('.pipeline-configurer').prop('data-revision')).toBe(1);
1288
+ expect(providerRenderStates).not.toContain(false);
1289
+
1290
+ wrapper.unmount();
1291
+ });
1292
+
1293
+ [
1294
+ { presentField: 'cloudProvider', missingField: 'cloudProviderType' },
1295
+ { presentField: 'cloudProviderType', missingField: 'cloudProvider' },
1296
+ ].forEach(({ presentField, missingField }) => {
1297
+ it(`normalizes a persisted stage with only ${presentField} before rendering its provider implementation`, async () => {
1298
+ registerBaseProviderStages();
1299
+ const requested = pipeline('target-id', 'Requested Pipeline');
1300
+ requested.stages = [
1301
+ {
1302
+ refId: '1',
1303
+ name: 'Destroy Server Group',
1304
+ type: 'destroyServerGroup',
1305
+ requisiteStageRefIds: [],
1306
+ [presentField]: 'ecs',
1307
+ } as any,
1308
+ ];
1309
+ const app = createApp([requested]);
1310
+ $stateParams.pipelineId = requested.id;
1311
+ showStageConfig(requested.id);
1312
+ (AccountService.applicationAccounts as jasmine.Spy).and.returnValue(
1313
+ Promise.resolve([account('aws'), account('ecs')]) as any,
1314
+ );
1315
+
1316
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1317
+ await flush();
1318
+ wrapper.update();
1319
+
1320
+ const updatedPipeline = wrapper.find(PipelineGraph).prop('pipeline') as IPipeline;
1321
+ expect(updatedPipeline.stages[0].cloudProvider).toBe('ecs');
1322
+ expect(updatedPipeline.stages[0].cloudProviderType).toBe('ecs');
1323
+ expect(updatedPipeline.stages[0][missingField]).toBe('ecs');
1324
+ expect(wrapper.find(BaseProviderStageConfig).prop('readOnly')).toBe(true);
1325
+ expect(
1326
+ wrapper
1327
+ .find(ReactSelectInput)
1328
+ .filterWhere((node) => node.prop('name') === 'cloudProviderType')
1329
+ .exists(),
1330
+ ).toBe(false);
1331
+ expect(wrapper.find('.ecs-stage-config').exists()).toBe(true);
1332
+ expect(providerRenderStates).not.toContain(false);
1333
+ expect(wrapper.find('.pipeline-configurer').prop('data-revision')).toBe(1);
1334
+ expect(wrapper.text()).toContain('Save Changes');
1335
+
1336
+ wrapper.unmount();
1337
+ });
1338
+ });
1339
+
1340
+ it('normalizes the same persisted stage again if JSON editing makes its provider fields incoherent', async () => {
1341
+ registerBaseProviderStages();
1342
+ const requested = pipeline('target-id', 'Requested Pipeline');
1343
+ requested.stages = [
1344
+ {
1345
+ refId: '1',
1346
+ name: 'Destroy Server Group',
1347
+ type: 'destroyServerGroup',
1348
+ requisiteStageRefIds: [],
1349
+ cloudProvider: 'ecs',
1350
+ } as any,
1351
+ ];
1352
+ const app = createApp([requested]);
1353
+ $stateParams.pipelineId = requested.id;
1354
+ showStageConfig(requested.id);
1355
+ (AccountService.applicationAccounts as jasmine.Spy).and.returnValue(
1356
+ Promise.resolve([account('aws'), account('ecs')]) as any,
1357
+ );
1358
+ spyOn(ReactModal, 'show').and.callFake((_component, props: { stage: IStage }) => {
1359
+ delete props.stage.cloudProviderType;
1360
+ return Promise.resolve();
1361
+ });
1362
+
1363
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1364
+ await flush();
1365
+ wrapper.update();
1366
+ expect(wrapper.find('.pipeline-configurer').prop('data-revision')).toBe(1);
1367
+
1368
+ const editJsonButton = wrapper.find('button').filterWhere((node) => node.text().includes('Edit stage as JSON'));
1369
+ await act(async () => {
1370
+ editJsonButton.prop('onClick')();
1371
+ await flush();
1372
+ });
1373
+ wrapper.update();
1374
+
1375
+ const normalizedStage = (wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).stages[0];
1376
+ expect(normalizedStage.cloudProvider).toBe('ecs');
1377
+ expect(normalizedStage.cloudProviderType).toBe('ecs');
1378
+ expect(wrapper.find('.pipeline-configurer').prop('data-revision')).toBe(3);
1379
+ expect(providerRenderStates).not.toContain(false);
1380
+
1381
+ wrapper.unmount();
1382
+ });
1383
+
1384
+ it('waits for provider selection, switches provider implementations, and updates once per selection', async () => {
1385
+ registerBaseProviderStages();
1386
+ const requested = pipeline('target-id', 'Requested Pipeline');
1387
+ requested.stages = [
1388
+ {
1389
+ refId: '1',
1390
+ name: 'Destroy Server Group',
1391
+ type: 'destroyServerGroup',
1392
+ isNew: true,
1393
+ requisiteStageRefIds: [],
1394
+ } as any,
1395
+ ];
1396
+ const app = createApp([requested]);
1397
+ $stateParams.pipelineId = requested.id;
1398
+ showStageConfig(requested.id);
1399
+ (AccountService.applicationAccounts as jasmine.Spy).and.returnValue(
1400
+ Promise.resolve([account('aws'), account('ecs')]) as any,
1401
+ );
1402
+
1403
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1404
+ await flush();
1405
+ wrapper.update();
1406
+
1407
+ expect(wrapper.find(BaseProviderStageConfig).prop('providers')).toEqual(['aws', 'ecs']);
1408
+ expect(wrapper.find('.aws-stage-config').exists()).toBe(false);
1409
+ expect(wrapper.find('.ecs-stage-config').exists()).toBe(false);
1410
+ expect(wrapper.find(StageConfigWrapper).exists()).toBe(false);
1411
+ const initialRevision = wrapper.find('.pipeline-configurer').prop('data-revision') as number;
1412
+
1413
+ const providerSelect = () =>
1414
+ wrapper.find(ReactSelectInput).filterWhere((node) => node.prop('name') === 'cloudProviderType');
1415
+ await act(async () => {
1416
+ providerSelect().prop('onChange')({ target: { value: 'ecs' } } as any);
1417
+ await flush();
1418
+ });
1419
+ wrapper.update();
1420
+
1421
+ expect(wrapper.find('.ecs-stage-config').exists()).toBe(true);
1422
+ expect(wrapper.find('.aws-stage-config').exists()).toBe(false);
1423
+ expect(wrapper.find('.pipeline-configurer').prop('data-revision')).toBe(initialRevision + 1);
1424
+ expect(wrapper.find('.stage-details').first().childAt(0).is(BaseProviderStageConfig)).toBe(true);
1425
+ expect(wrapper.find('.stage-details').first().childAt(1).is(StageConfigWrapper)).toBe(true);
1426
+
1427
+ await act(async () => {
1428
+ providerSelect().prop('onChange')({ target: { value: 'aws' } } as any);
1429
+ await flush();
1430
+ });
1431
+ wrapper.update();
1432
+
1433
+ const updatedPipeline = wrapper.find(PipelineGraph).prop('pipeline') as IPipeline;
1434
+ expect(updatedPipeline.stages[0]).toEqual(
1435
+ jasmine.objectContaining({ cloudProvider: 'aws', cloudProviderType: 'aws' }),
1436
+ );
1437
+ expect(wrapper.find('.aws-stage-config').exists()).toBe(true);
1438
+ expect(wrapper.find('.ecs-stage-config').exists()).toBe(false);
1439
+ expect(wrapper.find('.pipeline-configurer').prop('data-revision')).toBe(initialRevision + 2);
1440
+ expect(() => wrapper.find(BaseProviderStageConfig).prop('onProviderChange')('gcp')).toThrowError(
1441
+ /destroyServerGroup.*gcp/,
1442
+ );
1443
+
1444
+ wrapper.unmount();
1445
+ });
1446
+
1447
+ it('removes ECS-specific fields while preserving common controls when switching from ECS to AWS', async () => {
1448
+ registerBaseProviderStages();
1449
+ registerStageTypes();
1450
+ const requested = pipeline('target-id', 'Requested Pipeline');
1451
+ requested.stages = [
1452
+ { refId: '1', name: 'Build', type: 'wait', requisiteStageRefIds: [] } as any,
1453
+ providerStage('ecs'),
1454
+ ];
1455
+ const app = createApp([requested]);
1456
+ $stateParams.pipelineId = requested.id;
1457
+ showStageConfig(requested.id, 1);
1458
+ (AccountService.applicationAccounts as jasmine.Spy).and.returnValue(
1459
+ Promise.resolve([account('aws'), account('ecs')]) as any,
1460
+ );
1461
+
1462
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1463
+ await flush();
1464
+ wrapper.update();
1465
+
1466
+ await act(async () => {
1467
+ wrapper.find(BaseProviderStageConfig).prop('onProviderChange')('aws');
1468
+ await flush();
1469
+ });
1470
+ wrapper.update();
1471
+
1472
+ const switchedStage = (wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).stages[1];
1473
+ expectCommonFieldsPreserved(switchedStage);
1474
+ expectProviderFieldsRemoved(switchedStage, 'ecs');
1475
+ expect(switchedStage).toEqual(
1476
+ jasmine.objectContaining({ type: 'destroyServerGroup', cloudProvider: 'aws', cloudProviderType: 'aws' }),
1477
+ );
1478
+ expect(wrapper.find('.aws-stage-config').exists()).toBe(true);
1479
+ expect(wrapper.find('.ecs-stage-config').exists()).toBe(false);
1480
+
1481
+ wrapper.unmount();
1482
+ });
1483
+
1484
+ it('removes AWS-specific fields while preserving common controls when switching from AWS to ECS', async () => {
1485
+ registerBaseProviderStages('customDestroyServerGroup');
1486
+ registerStageTypes();
1487
+ const requested = pipeline('target-id', 'Requested Pipeline');
1488
+ requested.stages = [
1489
+ { refId: '1', name: 'Build', type: 'wait', requisiteStageRefIds: [] } as any,
1490
+ providerStage('aws'),
1491
+ ];
1492
+ const app = createApp([requested]);
1493
+ $stateParams.pipelineId = requested.id;
1494
+ showStageConfig(requested.id, 1);
1495
+ (AccountService.applicationAccounts as jasmine.Spy).and.returnValue(
1496
+ Promise.resolve([account('aws'), account('ecs')]) as any,
1497
+ );
1498
+
1499
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1500
+ await flush();
1501
+ wrapper.update();
1502
+
1503
+ await act(async () => {
1504
+ wrapper.find(BaseProviderStageConfig).prop('onProviderChange')('ecs');
1505
+ await flush();
1506
+ });
1507
+ wrapper.update();
1508
+
1509
+ const switchedStage = (wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).stages[1];
1510
+ expectCommonFieldsPreserved(switchedStage);
1511
+ expectProviderFieldsRemoved(switchedStage, 'aws');
1512
+ expect(switchedStage).toEqual(
1513
+ jasmine.objectContaining({
1514
+ type: 'customDestroyServerGroup',
1515
+ cloudProvider: 'ecs',
1516
+ cloudProviderType: 'ecs',
1517
+ }),
1518
+ );
1519
+ expect(wrapper.find('.ecs-stage-config').exists()).toBe(true);
1520
+ expect(wrapper.find('.aws-stage-config').exists()).toBe(false);
1521
+
1522
+ wrapper.unmount();
1523
+ });
1524
+
1525
+ it('retains only stage identity fields when changing stage type', async () => {
1526
+ registerBaseProviderStages();
1527
+ registerStageTypes();
1528
+ const requested = pipeline('target-id', 'Requested Pipeline');
1529
+ requested.stages = [
1530
+ { refId: '1', name: 'Build', type: 'wait', requisiteStageRefIds: [] } as any,
1531
+ providerStage('ecs'),
1532
+ ];
1533
+ const app = createApp([requested]);
1534
+ $stateParams.pipelineId = requested.id;
1535
+ showStageConfig(requested.id, 1);
1536
+ (AccountService.applicationAccounts as jasmine.Spy).and.returnValue(Promise.resolve([account('ecs')]) as any);
1537
+
1538
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1539
+ await flush();
1540
+ wrapper.update();
1541
+
1542
+ const typeSelect = wrapper.find(ReactSelectInput).filterWhere((node) => node.prop('name') === 'type');
1543
+ await act(async () => {
1544
+ typeSelect.prop('onChange')({ target: { value: 'wait' } } as any);
1545
+ await flush();
1546
+ });
1547
+ wrapper.update();
1548
+
1549
+ const changedStage = (wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).stages[1];
1550
+ expect(changedStage).toEqual({
1551
+ refId: '2',
1552
+ requisiteStageRefIds: ['1'],
1553
+ isNew: true,
1554
+ name: 'Custom destroy name',
1555
+ type: 'wait',
1556
+ } as any);
1557
+
1558
+ wrapper.unmount();
1559
+ });
1560
+
1561
+ it('persists an implementation-specific stage key when selecting its provider', async () => {
1562
+ registerBaseProviderStages('customDestroyServerGroup');
1563
+ const requested = pipeline('target-id', 'Requested Pipeline');
1564
+ requested.stages = [
1565
+ {
1566
+ refId: '1',
1567
+ name: 'Destroy Server Group',
1568
+ type: 'destroyServerGroup',
1569
+ isNew: true,
1570
+ requisiteStageRefIds: [],
1571
+ } as any,
1572
+ ];
1573
+ const app = createApp([requested]);
1574
+ $stateParams.pipelineId = requested.id;
1575
+ showStageConfig(requested.id);
1576
+ (AccountService.applicationAccounts as jasmine.Spy).and.returnValue(Promise.resolve([account('ecs')]) as any);
1577
+
1578
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1579
+ await flush();
1580
+ wrapper.update();
1581
+
1582
+ const updatedPipeline = wrapper.find(PipelineGraph).prop('pipeline') as IPipeline;
1583
+ expect(updatedPipeline.stages[0]).toEqual(
1584
+ jasmine.objectContaining({
1585
+ type: 'customDestroyServerGroup',
1586
+ cloudProvider: 'ecs',
1587
+ cloudProviderType: 'ecs',
1588
+ }),
1589
+ );
1590
+ expect(wrapper.find('.ecs-stage-config').exists()).toBe(true);
1591
+
1592
+ wrapper.unmount();
1593
+ });
1594
+
1595
+ it('preserves direct rendering for non-base React stage configs', async () => {
1596
+ Registry.pipeline.registerStage({
1597
+ key: 'regular',
1598
+ label: 'Regular',
1599
+ component: RegularStageConfig,
1600
+ } as IStageTypeConfig);
1601
+ const requested = pipeline('target-id', 'Requested Pipeline');
1602
+ requested.stages = [{ refId: '1', name: 'Regular', type: 'regular', requisiteStageRefIds: [] } as any];
1603
+ const app = createApp([requested]);
1604
+ $stateParams.pipelineId = requested.id;
1605
+ showStageConfig(requested.id);
1606
+
1607
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1608
+ await flush();
1609
+ wrapper.update();
1610
+
1611
+ expect(wrapper.find('.regular-stage-config').exists()).toBe(true);
1612
+ expect(wrapper.find(BaseProviderStageConfig).exists()).toBe(false);
1613
+
1614
+ wrapper.unmount();
1615
+ });
1616
+
1617
+ it('applies cloned defaults, alias, and default label once through the dirty-state update path', async () => {
1618
+ const defaults = { nested: { value: 'default value' }, credentials: 'default-account' };
1619
+ Registry.pipeline.registerStage({
1620
+ key: 'regularWithDefaults',
1621
+ label: 'Regular With Defaults',
1622
+ alias: 'legacyRegular',
1623
+ addAliasToConfig: true,
1624
+ defaults,
1625
+ component: RegularStageConfig,
1626
+ } as IStageTypeConfig);
1627
+ const requested = pipeline('target-id', 'Requested Pipeline');
1628
+ requested.stages = [
1629
+ { refId: '1', name: '', type: 'regularWithDefaults', isNew: true, requisiteStageRefIds: [] } as any,
1630
+ ];
1631
+ const app = createApp([requested]);
1632
+ $stateParams.pipelineId = requested.id;
1633
+ showStageConfig(requested.id);
1634
+
1635
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1636
+ await flush();
1637
+ wrapper.update();
1638
+
1639
+ const defaultedStage = (wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).stages[0] as any;
1640
+ expect(defaultedStage).toEqual(
1641
+ jasmine.objectContaining({
1642
+ name: 'Regular With Defaults',
1643
+ alias: 'legacyRegular',
1644
+ nested: { value: 'default value' },
1645
+ credentials: 'default-account',
1646
+ }),
1647
+ );
1648
+ expect(defaultedStage.nested).not.toBe(defaults.nested);
1649
+ expect(wrapper.find('.pipeline-configurer').prop('data-revision')).toBe(1);
1650
+ expect(wrapper.text()).toContain('Save Changes');
1651
+
1652
+ wrapper.setProps({ app });
1653
+ await flush();
1654
+ wrapper.update();
1655
+
1656
+ expect(wrapper.find('.pipeline-configurer').prop('data-revision')).toBe(1);
1657
+
1658
+ wrapper.unmount();
1659
+ });
1660
+
1661
+ it('preserves strategy stage type filtering after accounts load', async () => {
1662
+ Registry.pipeline.registerStage({ key: 'pipelineOnly', label: 'Pipeline Only' } as IStageTypeConfig);
1663
+ Registry.pipeline.registerStage({
1664
+ key: 'strategyStage',
1665
+ label: 'Strategy Stage',
1666
+ strategy: true,
1667
+ } as IStageTypeConfig);
1668
+ const requested = pipeline('target-id', 'Requested Strategy');
1669
+ requested.strategy = true;
1670
+ requested.stages = [{ refId: '1', name: '', type: '', isNew: true, requisiteStageRefIds: [] } as any];
1671
+ const app = createApp([], [requested]);
1672
+ $stateParams.pipelineId = requested.id;
1673
+ showStageConfig(requested.id);
1674
+
1675
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1676
+ await flush();
1677
+ wrapper.update();
1678
+
1679
+ const options = wrapper
1680
+ .find(ReactSelectInput)
1681
+ .filterWhere((node) => node.prop('name') === 'type')
1682
+ .prop('options') as any[];
1683
+ expect(options.map((option) => option.value)).toEqual(['strategyStage']);
1684
+
1685
+ wrapper.unmount();
1686
+ });
1687
+
1688
+ it('ignores an old account request that resolves after the application changes', async () => {
1689
+ registerBaseProviderStages();
1690
+ const oldPipeline = pipeline('target-id', 'Old Pipeline');
1691
+ oldPipeline.stages = [{ refId: '1', name: 'Destroy Server Group', type: 'destroyServerGroup', isNew: true } as any];
1692
+ const newPipeline = pipeline('target-id', 'New Pipeline');
1693
+ newPipeline.stages = [{ refId: '1', name: 'Destroy Server Group', type: 'destroyServerGroup', isNew: true } as any];
1694
+ const oldApp = createApp([oldPipeline]);
1695
+ const newApp = createApp([newPipeline]);
1696
+ $stateParams.pipelineId = 'target-id';
1697
+ showStageConfig('target-id');
1698
+ let resolveOldAccounts: (accounts: IAccountDetails[]) => void;
1699
+ let resolveNewAccounts: (accounts: IAccountDetails[]) => void;
1700
+ const oldRequest = new Promise<IAccountDetails[]>((resolve) => (resolveOldAccounts = resolve));
1701
+ const newRequest = new Promise<IAccountDetails[]>((resolve) => (resolveNewAccounts = resolve));
1702
+ (AccountService.applicationAccounts as jasmine.Spy).and.callFake((requestedApp) =>
1703
+ requestedApp === oldApp ? oldRequest : newRequest,
1704
+ );
1705
+
1706
+ const wrapper = mount(<PipelineConfigPage app={oldApp} />);
1707
+ await flush();
1708
+ wrapper.setProps({ app: newApp });
1709
+ await flush();
1710
+
1711
+ await act(async () => {
1712
+ resolveNewAccounts([account('ecs')]);
1713
+ await flush();
1714
+ });
1715
+ wrapper.update();
1716
+ expect(wrapper.find(BaseProviderStageConfig).prop('providers')).toEqual(['ecs']);
1717
+
1718
+ await act(async () => {
1719
+ resolveOldAccounts([account('aws')]);
1720
+ await flush();
1721
+ });
1722
+ wrapper.update();
1723
+ expect(wrapper.find(BaseProviderStageConfig).prop('providers')).toEqual(['ecs']);
1724
+ expect(wrapper.find('.ecs-stage-config').exists()).toBe(true);
1725
+ expect(wrapper.find('.aws-stage-config').exists()).toBe(false);
1726
+
1727
+ wrapper.unmount();
1728
+ });
1729
+
1730
+ it('marks a copied provider stage as new so its provider remains editable', async () => {
1731
+ registerBaseProviderStages();
1732
+ registerStageTypes();
1733
+ const requested = pipeline('target-id', 'Requested Pipeline');
1734
+ requested.stages = [{ refId: '1', name: 'Build', type: 'wait', requisiteStageRefIds: [] } as any];
1735
+ const app = createApp([requested]);
1736
+ const copiedStage = providerStage('ecs');
1737
+ copiedStage.isNew = false;
1738
+ $stateParams.pipelineId = requested.id;
1739
+ (AccountService.applicationAccounts as jasmine.Spy).and.returnValue(
1740
+ Promise.resolve([account('aws'), account('ecs')]) as any,
1741
+ );
1742
+ spyOn(ReactModal, 'show').and.returnValue(Promise.resolve(copiedStage));
1743
+
1744
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1745
+ await flush();
1746
+ wrapper.update();
1747
+
1748
+ const copyButton = wrapper.find('button').filterWhere((node) => node.text().includes('Copy an existing stage'));
1749
+ await act(async () => {
1750
+ copyButton.prop('onClick')();
1751
+ await flush();
1752
+ });
1753
+ wrapper.update();
1754
+
1755
+ const copied = (wrapper.find(PipelineGraph).prop('pipeline') as IPipeline).stages[1];
1756
+ expect(copied.isNew).toBe(true);
1757
+ expect(wrapper.find(BaseProviderStageConfig).prop('readOnly')).toBe(false);
1758
+ expect(
1759
+ wrapper
1760
+ .find(ReactSelectInput)
1761
+ .filterWhere((node) => node.prop('name') === 'cloudProviderType')
1762
+ .exists(),
1763
+ ).toBe(true);
1764
+
1765
+ wrapper.unmount();
1766
+ });
1767
+
1768
+ it('does not fall back to the first pipeline or match by name when the id is missing', async () => {
1769
+ const app = createApp([pipeline('first-id', 'missing-id')]);
1770
+ $stateParams.pipelineId = 'missing-id';
1771
+
1772
+ const wrapper = mount(<PipelineConfigPage app={app} />);
1773
+ await flush();
1774
+ wrapper.update();
1775
+
1776
+ expect(wrapper.find('.pipeline-configurer').exists()).toBe(false);
1777
+ expect(wrapper.text()).toContain('No pipeline found with that name.');
1778
+
1779
+ wrapper.unmount();
1780
+ });
1781
+ });