@rancher/shell 0.3.14 → 0.3.16

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 (400) hide show
  1. package/assets/images/providers/nutanix.svg +1 -0
  2. package/assets/translations/en-us.yaml +84 -3
  3. package/assets/translations/zh-hans.yaml +68 -26
  4. package/chart/gatekeeper.vue +2 -2
  5. package/chart/monitoring/alerting/index.vue +3 -3
  6. package/chart/monitoring/index.vue +2 -2
  7. package/chart/monitoring/prometheus/index.vue +1 -1
  8. package/chart/rancher-backup/index.vue +2 -2
  9. package/cloud-credential/generic.vue +1 -1
  10. package/cloud-credential/harvester.vue +2 -2
  11. package/components/AssignTo.vue +1 -1
  12. package/components/AwsComplianceBanner.vue +1 -1
  13. package/components/BackLink.vue +7 -0
  14. package/components/BannerGraphic.vue +1 -0
  15. package/components/BrandImage.vue +3 -3
  16. package/components/ClusterProviderIcon.vue +1 -1
  17. package/components/CommunityLinks.vue +2 -2
  18. package/components/ConsumptionGauge.vue +17 -2
  19. package/components/CruResource.vue +3 -2
  20. package/components/DashboardMetrics.vue +8 -0
  21. package/components/DetailTop.vue +1 -1
  22. package/components/EmberPage.vue +1 -0
  23. package/components/ExplorerMembers.vue +8 -8
  24. package/components/ExplorerProjectsNamespaces.vue +9 -9
  25. package/components/FixedBanner.vue +1 -1
  26. package/components/GlobalRoleBindings.vue +11 -11
  27. package/components/GrafanaDashboard.vue +14 -2
  28. package/components/GrowlManager.vue +1 -1
  29. package/components/HarvesterServiceAddOnConfig.vue +4 -3
  30. package/components/IconOrSvg.vue +10 -3
  31. package/components/LandingPagePreference.vue +2 -2
  32. package/components/MoveModal.vue +1 -1
  33. package/components/PodSecurityAdmission.vue +3 -3
  34. package/components/ProgressBarMulti.vue +2 -2
  35. package/components/PromptRemove.vue +52 -28
  36. package/components/PromptRestore.vue +3 -3
  37. package/components/Questions/index.vue +5 -5
  38. package/components/RelatedWorkloadsTable.vue +1 -1
  39. package/components/ResourceList/Masthead.vue +1 -1
  40. package/components/ResourceTable.vue +3 -3
  41. package/components/ResourceYaml.vue +1 -1
  42. package/components/RoleBindings.vue +2 -2
  43. package/components/SimpleBox.vue +1 -0
  44. package/components/SingleClusterInfo.vue +1 -1
  45. package/components/SortableTable/actions.js +3 -3
  46. package/components/SortableTable/advanced-filtering.js +7 -7
  47. package/components/SortableTable/filtering.js +1 -1
  48. package/components/SortableTable/index.vue +14 -10
  49. package/components/SortableTable/selection.js +5 -5
  50. package/components/SortableTable/sorting.js +5 -5
  51. package/components/Tabbed/index.vue +7 -7
  52. package/components/TableSparkLine.vue +1 -1
  53. package/components/Wizard.vue +11 -23
  54. package/components/__tests__/Collapse.spec.ts +1 -1
  55. package/components/__tests__/CruResource.test.ts +74 -0
  56. package/components/__tests__/SimpleBox.spec.ts +1 -1
  57. package/components/auth/RoleDetailEdit.vue +7 -3
  58. package/components/auth/SelectPrincipal.vue +3 -3
  59. package/components/fleet/FleetResources.vue +1 -1
  60. package/components/fleet/FleetStatus.vue +4 -4
  61. package/components/fleet/FleetSummary.vue +1 -1
  62. package/components/fleet/ForceDirectedTreeChart/chartIcons.js +1 -1
  63. package/components/fleet/ForceDirectedTreeChart/index.vue +1 -1
  64. package/components/form/ArrayList.vue +11 -3
  65. package/components/form/ArrayListSelect.vue +2 -2
  66. package/components/form/FileSelector.vue +6 -0
  67. package/components/form/GitPicker.vue +528 -0
  68. package/components/form/KeyValue.vue +82 -41
  69. package/components/form/LabeledSelect.vue +2 -2
  70. package/components/form/MatchExpressions.vue +2 -2
  71. package/components/form/Members/ClusterMembershipEditor.vue +1 -2
  72. package/components/form/Members/ClusterPermissionsEditor.vue +6 -5
  73. package/components/form/Members/MembershipEditor.vue +4 -4
  74. package/components/form/Members/ProjectMembershipEditor.vue +1 -2
  75. package/components/form/NameNsDescription.vue +13 -6
  76. package/components/form/Networking.vue +2 -2
  77. package/components/form/NodeScheduling.vue +1 -1
  78. package/components/form/PodAffinity.vue +7 -2
  79. package/components/form/ProjectMemberEditor.vue +4 -4
  80. package/components/form/ResourceQuota/Namespace.vue +2 -2
  81. package/components/form/ResourceQuota/NamespaceRow.vue +2 -2
  82. package/components/form/ResourceQuota/Project.vue +1 -1
  83. package/components/form/ResourceQuota/shared.js +2 -2
  84. package/components/form/ResourceSelector.vue +1 -1
  85. package/components/form/ResourceTabs/index.vue +1 -1
  86. package/components/form/RuleSelector.vue +1 -1
  87. package/components/form/SecretSelector.vue +4 -4
  88. package/components/form/Select.vue +2 -2
  89. package/components/form/SelectOrCreateAuthSecret.vue +3 -3
  90. package/components/form/ServiceNameSelect.vue +1 -1
  91. package/components/form/ServicePorts.vue +1 -1
  92. package/components/form/ShellInput.vue +1 -1
  93. package/components/form/SimpleSecretSelector.vue +4 -4
  94. package/components/form/Taints.vue +1 -1
  95. package/components/form/ValueFromResource.vue +3 -3
  96. package/components/form/WorkloadPorts.vue +8 -7
  97. package/components/form/__tests__/Error.test.ts +1 -1
  98. package/components/form/__tests__/KeyValue.test.ts +21 -0
  99. package/components/formatter/ClusterLink.vue +1 -1
  100. package/components/formatter/ClusterProvider.vue +13 -2
  101. package/components/formatter/Endpoints.vue +1 -1
  102. package/components/formatter/FleetSummaryGraph.vue +2 -2
  103. package/components/formatter/IngressTarget.vue +2 -2
  104. package/components/formatter/PodImages.vue +1 -1
  105. package/components/formatter/PrincipalGroupBindings.vue +1 -1
  106. package/components/formatter/ReceiverIcons.vue +3 -3
  107. package/components/formatter/ServiceType.vue +1 -1
  108. package/components/formatter/WorkloadDetailEndpoints.vue +1 -1
  109. package/components/formatter/WorkloadHealthScale.vue +1 -1
  110. package/components/formatter/__tests__/LiveDate.test.ts +1 -1
  111. package/components/graph/Bar.vue +1 -1
  112. package/components/graph/LinePlot.vue +3 -3
  113. package/components/nav/Group.vue +2 -2
  114. package/components/nav/Header.vue +5 -5
  115. package/components/nav/NamespaceFilter.vue +14 -14
  116. package/components/nav/TopLevelMenu.vue +76 -11
  117. package/components/nav/WindowManager/ContainerLogs.vue +2 -2
  118. package/components/nav/WindowManager/ContainerShell.vue +1 -1
  119. package/components/nav/WorkspaceSwitcher.vue +1 -1
  120. package/config/home-links.js +4 -4
  121. package/config/labels-annotations.js +8 -9
  122. package/config/pod-security-admission.ts +1 -1
  123. package/config/product/auth.js +5 -5
  124. package/config/product/explorer.js +14 -0
  125. package/config/store.js +2 -0
  126. package/config/table-headers.js +13 -13
  127. package/config/uiplugins.js +8 -1
  128. package/core/plugin-routes.ts +3 -2
  129. package/core/plugin.ts +3 -3
  130. package/core/plugins.js +7 -7
  131. package/creators/pkg/files/index.ts +1 -1
  132. package/detail/catalog.cattle.io.clusterrepo.vue +8 -1
  133. package/detail/cis.cattle.io.clusterscan.vue +3 -3
  134. package/detail/fleet.cattle.io.bundle.vue +1 -1
  135. package/detail/helm.cattle.io.projecthelmchart.vue +16 -29
  136. package/detail/management.cattle.io.user.vue +12 -12
  137. package/detail/namespace.vue +4 -4
  138. package/detail/networking.k8s.io.ingress.vue +3 -3
  139. package/detail/node.vue +2 -2
  140. package/detail/provisioning.cattle.io.cluster.vue +9 -10
  141. package/detail/service.vue +1 -1
  142. package/detail/workload/index.vue +3 -3
  143. package/dialog/AddProjectMemberDialog.vue +2 -2
  144. package/dialog/DrainNode.vue +1 -1
  145. package/dialog/GenericPrompt.vue +9 -5
  146. package/dialog/RotateEncryptionKeyDialog.vue +2 -2
  147. package/dialog/ScaleMachineDownDialog.vue +2 -2
  148. package/edit/__tests__/monitoring.coreos.com.prometheusrule.test.ts +56 -0
  149. package/edit/auth/azuread.vue +3 -3
  150. package/edit/autoscaling.horizontalpodautoscaler/index.vue +5 -5
  151. package/edit/cis.cattle.io.clusterscan.vue +5 -5
  152. package/edit/cloudcredential.vue +4 -4
  153. package/edit/constraints.gatekeeper.sh.constraint/NamespaceList.vue +1 -1
  154. package/edit/constraints.gatekeeper.sh.constraint/index.vue +4 -4
  155. package/edit/fleet.cattle.io.gitrepo.vue +6 -6
  156. package/edit/helm.cattle.io.projecthelmchart.vue +3 -3
  157. package/edit/logging-flow/index.vue +4 -4
  158. package/edit/logging.banzaicloud.io.output/index.vue +3 -3
  159. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
  160. package/edit/logging.banzaicloud.io.output/providers/forward.vue +1 -1
  161. package/edit/logging.banzaicloud.io.output/providers/logz.vue +1 -1
  162. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +1 -1
  163. package/edit/logging.banzaicloud.io.output/providers/redis.vue +1 -1
  164. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +1 -1
  165. package/edit/management.cattle.io.clusterroletemplatebinding.vue +1 -1
  166. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +1 -1
  167. package/edit/management.cattle.io.project.vue +3 -3
  168. package/edit/management.cattle.io.projectroletemplatebinding.vue +2 -2
  169. package/edit/management.cattle.io.setting.vue +1 -1
  170. package/edit/management.cattle.io.user.vue +2 -2
  171. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +2 -2
  172. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  173. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +1 -1
  174. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +3 -3
  175. package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +5 -5
  176. package/edit/monitoring.coreos.com.prometheusrule/duration.js +1 -1
  177. package/edit/monitoring.coreos.com.prometheusrule/index.vue +8 -3
  178. package/edit/monitoring.coreos.com.receiver/auth.vue +2 -2
  179. package/edit/monitoring.coreos.com.receiver/tls.vue +3 -4
  180. package/edit/monitoring.coreos.com.receiver/types/__tests__/email.test.ts +53 -0
  181. package/edit/monitoring.coreos.com.receiver/types/email.vue +2 -0
  182. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +3 -3
  183. package/edit/monitoring.coreos.com.receiver/types/webhook.add.vue +1 -1
  184. package/edit/monitoring.coreos.com.route.vue +2 -2
  185. package/edit/namespace.vue +21 -13
  186. package/edit/networking.k8s.io.ingress/Certificate.vue +2 -2
  187. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  188. package/edit/networking.k8s.io.ingress/RulePath.vue +2 -2
  189. package/edit/networking.k8s.io.ingress/Rules.vue +2 -2
  190. package/edit/networking.k8s.io.ingress/index.vue +4 -4
  191. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +3 -3
  192. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  193. package/edit/persistentvolume/index.vue +4 -4
  194. package/edit/persistentvolumeclaim.vue +3 -3
  195. package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +1 -1
  196. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +2 -2
  197. package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
  198. package/edit/provisioning.cattle.io.cluster/index.vue +7 -7
  199. package/edit/provisioning.cattle.io.cluster/rke2.vue +28 -29
  200. package/edit/resources.cattle.io.backup.vue +2 -2
  201. package/edit/resources.cattle.io.restore.vue +3 -3
  202. package/edit/secret/generic.vue +1 -1
  203. package/edit/secret/index.vue +3 -3
  204. package/edit/service.vue +3 -21
  205. package/edit/serviceaccount.vue +2 -2
  206. package/edit/storage.k8s.io.storageclass/index.vue +4 -4
  207. package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +1 -1
  208. package/edit/token.vue +5 -5
  209. package/edit/workload/index.vue +1 -1
  210. package/edit/workload/mixins/workload.js +8 -8
  211. package/edit/workload/storage/ContainerMountPaths.vue +9 -9
  212. package/edit/workload/storage/Mount.vue +2 -2
  213. package/edit/workload/storage/csi/index.vue +1 -1
  214. package/edit/workload/storage/ephemeralVolume/index.vue +1 -1
  215. package/edit/workload/storage/index.vue +6 -6
  216. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +2 -2
  217. package/initialize/client.js +8 -8
  218. package/initialize/index.js +1 -4
  219. package/layouts/default.vue +38 -11
  220. package/list/catalog.cattle.io.clusterrepo.vue +9 -1
  221. package/list/cis.cattle.io.clusterscan.vue +1 -1
  222. package/list/fleet.cattle.io.cluster.vue +2 -2
  223. package/list/group.principal.vue +1 -1
  224. package/list/helm.cattle.io.projecthelmchart.vue +2 -2
  225. package/list/management.cattle.io.cluster.vue +1 -1
  226. package/list/management.cattle.io.feature.vue +1 -1
  227. package/list/management.cattle.io.user.vue +2 -2
  228. package/list/node.vue +5 -5
  229. package/list/provisioning.cattle.io.cluster.vue +4 -5
  230. package/machine-config/amazonec2.vue +2 -2
  231. package/machine-config/digitalocean.vue +4 -4
  232. package/machine-config/linode.vue +4 -4
  233. package/machine-config/vmwarevsphere.vue +12 -12
  234. package/middleware/authenticated.js +7 -6
  235. package/mixins/brand.js +1 -1
  236. package/mixins/chart.js +6 -6
  237. package/mixins/fetch.client.js +2 -2
  238. package/mixins/form-validation.js +7 -7
  239. package/mixins/resource-fetch-namespaced.js +1 -1
  240. package/mixins/resource-fetch.js +2 -2
  241. package/models/apps.statefulset.js +2 -2
  242. package/models/batch.cronjob.js +1 -1
  243. package/models/catalog.cattle.io.app.js +4 -4
  244. package/models/cis.cattle.io.clusterscan.js +1 -1
  245. package/models/cis.cattle.io.clusterscanbenchmark.js +1 -1
  246. package/models/cis.cattle.io.clusterscanreport.js +1 -1
  247. package/models/cloudcredential.js +1 -1
  248. package/models/cluster/node.js +5 -5
  249. package/models/cluster.x-k8s.io.machinedeployment.js +2 -2
  250. package/models/fleet.cattle.io.gitrepo.js +3 -3
  251. package/models/group.principal.js +4 -4
  252. package/models/helm.cattle.io.projecthelmchart.js +2 -2
  253. package/models/logging.banzaicloud.io.clusterflow.js +2 -2
  254. package/models/logging.banzaicloud.io.flow.js +5 -5
  255. package/models/logging.banzaicloud.io.output.js +2 -2
  256. package/models/management.cattle.io.cluster.js +10 -14
  257. package/models/management.cattle.io.globalrole.js +4 -4
  258. package/models/management.cattle.io.node.js +2 -2
  259. package/models/management.cattle.io.nodepool.js +3 -3
  260. package/models/management.cattle.io.nodetemplate.js +4 -4
  261. package/models/management.cattle.io.project.js +2 -2
  262. package/models/management.cattle.io.roletemplate.js +1 -1
  263. package/models/management.cattle.io.setting.js +1 -1
  264. package/models/management.cattle.io.user.js +5 -5
  265. package/models/monitoring.coreos.com.receiver.js +9 -9
  266. package/models/namespace.js +1 -1
  267. package/models/networking.k8s.io.ingress.js +5 -5
  268. package/models/persistentvolume.js +3 -3
  269. package/models/pod.js +3 -3
  270. package/models/provisioning.cattle.io.cluster.js +39 -27
  271. package/models/rbac.authorization.k8s.io.clusterrole.js +2 -2
  272. package/models/rbac.authorization.k8s.io.role.js +3 -3
  273. package/models/secret.js +1 -1
  274. package/models/service.js +2 -2
  275. package/models/storage.k8s.io.storageclass.js +2 -2
  276. package/models/token.js +1 -1
  277. package/models/workload.js +6 -6
  278. package/models/workload.service.js +5 -21
  279. package/package.json +3 -2
  280. package/pages/about.vue +9 -9
  281. package/pages/account/index.vue +2 -2
  282. package/pages/auth/login.vue +25 -12
  283. package/pages/auth/setup.vue +4 -0
  284. package/pages/auth/verify.vue +6 -0
  285. package/pages/c/_cluster/apps/charts/index.vue +4 -4
  286. package/pages/c/_cluster/apps/charts/install.vue +28 -20
  287. package/pages/c/_cluster/auth/roles/index.vue +10 -10
  288. package/pages/c/_cluster/explorer/index.vue +41 -16
  289. package/pages/c/_cluster/explorer/tools/index.vue +8 -8
  290. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +1 -1
  291. package/pages/c/_cluster/fleet/index.vue +11 -11
  292. package/pages/c/_cluster/monitoring/index.vue +1 -1
  293. package/pages/c/_cluster/settings/links.vue +3 -3
  294. package/pages/c/_cluster/settings/performance.vue +1 -1
  295. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +6 -6
  296. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +3 -3
  297. package/pages/c/_cluster/uiplugins/InstallDialog.vue +3 -3
  298. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +1 -1
  299. package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +3 -3
  300. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +6 -6
  301. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +4 -4
  302. package/pages/c/_cluster/uiplugins/index.vue +22 -19
  303. package/pages/diagnostic.vue +6 -6
  304. package/pages/home.vue +8 -3
  305. package/pages/prefs.vue +2 -2
  306. package/pages/rio/mesh.vue +3 -3
  307. package/pages/support/index.vue +10 -1
  308. package/pkg/auto-import.js +1 -1
  309. package/pkg/tsconfig.json +1 -0
  310. package/pkg/vue.config.js +1 -1
  311. package/plugins/axios.js +1 -1
  312. package/plugins/clean-html-directive.js +1 -1
  313. package/plugins/dashboard-store/__tests__/mutations.spec.js +4 -4
  314. package/plugins/dashboard-store/actions.js +4 -4
  315. package/plugins/dashboard-store/getters.js +1 -1
  316. package/plugins/dashboard-store/index.js +1 -1
  317. package/plugins/dashboard-store/mutations.js +2 -2
  318. package/plugins/dashboard-store/resource-class.js +8 -8
  319. package/plugins/i18n.js +1 -1
  320. package/plugins/plugin.js +5 -1
  321. package/plugins/steve/actions.js +25 -3
  322. package/plugins/steve/getters.js +3 -3
  323. package/plugins/steve/hybrid-class.js +1 -1
  324. package/plugins/steve/mutations.js +1 -1
  325. package/plugins/steve/performanceTesting.js +1 -1
  326. package/plugins/steve/resourceWatcher.js +1 -1
  327. package/plugins/steve/subscribe.js +6 -6
  328. package/plugins/steve/worker/web-worker.basic.js +1 -1
  329. package/promptRemove/management.cattle.io.project.vue +3 -3
  330. package/promptRemove/mixin/roleDeletionCheck.js +4 -4
  331. package/promptRemove/pod.vue +1 -1
  332. package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +2 -2
  333. package/rancher-components/components/Form/Checkbox/Checkbox.vue +1 -1
  334. package/rancher-components/components/Form/Radio/RadioButton.test.ts +1 -1
  335. package/rancher-components/components/Form/Radio/RadioButton.vue +2 -2
  336. package/rancher-components/components/Form/Radio/RadioGroup.vue +2 -2
  337. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +1 -0
  338. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +1 -1
  339. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -7
  340. package/rancher-components/components/StringList/StringList.test.ts +10 -9
  341. package/rancher-components/components/StringList/StringList.vue +5 -5
  342. package/scripts/extension/helm/charts/ui-plugin-server/Chart.yaml +1 -1
  343. package/store/action-menu.js +4 -4
  344. package/store/auth.js +40 -7
  345. package/store/aws.js +1 -1
  346. package/store/catalog.js +12 -11
  347. package/store/digitalocean.js +4 -4
  348. package/store/features.js +1 -0
  349. package/store/github.js +70 -213
  350. package/store/gitlab.js +159 -0
  351. package/store/growl.js +1 -1
  352. package/store/i18n.js +7 -7
  353. package/store/index.js +63 -22
  354. package/store/linode.js +1 -1
  355. package/store/plugins.js +5 -5
  356. package/store/pnap.js +1 -1
  357. package/store/prefs.js +6 -6
  358. package/store/resource-fetch.js +3 -3
  359. package/store/type-map.js +61 -42
  360. package/store/uiplugins.ts +2 -1
  361. package/store/wm.js +5 -4
  362. package/tsconfig.default.json +10 -0
  363. package/tsconfig.json +2 -9
  364. package/types/shell/index.d.ts +10 -2
  365. package/utils/__tests__/version.test.ts +28 -0
  366. package/utils/alertmanagerconfig.js +4 -4
  367. package/utils/array.ts +4 -4
  368. package/utils/async.ts +1 -1
  369. package/utils/auth.js +3 -3
  370. package/utils/axios.js +5 -5
  371. package/utils/cluster.js +4 -3
  372. package/utils/color.js +10 -0
  373. package/utils/create-yaml.js +4 -4
  374. package/utils/crypto/browserHashUtils.js +1 -1
  375. package/utils/crypto/browserMd5.js +1 -1
  376. package/utils/crypto/browserSha1.js +1 -1
  377. package/utils/crypto/browserSha256.js +1 -1
  378. package/utils/crypto/index.js +3 -3
  379. package/utils/favicon.js +2 -3
  380. package/utils/gatekeeper/util.js +3 -3
  381. package/utils/gc/gc.ts +2 -2
  382. package/utils/git.ts +92 -0
  383. package/utils/grafana.js +4 -4
  384. package/utils/monitoring.js +2 -2
  385. package/utils/nuxt.js +2 -2
  386. package/utils/object.js +5 -5
  387. package/utils/pod-security-admission.ts +1 -1
  388. package/utils/projectAndNamespaceFiltering.utils.ts +1 -1
  389. package/utils/select.js +2 -2
  390. package/utils/selector.js +2 -2
  391. package/utils/settings.ts +17 -2
  392. package/utils/socket.js +30 -6
  393. package/utils/sort.js +1 -1
  394. package/utils/string.js +1 -1
  395. package/utils/url.ts +1 -1
  396. package/utils/validators/formRules/index.ts +3 -3
  397. package/utils/validators/role-template.js +4 -4
  398. package/utils/version.js +14 -1
  399. package/vue.config.js +19 -13
  400. package/components/form/GithubPicker.vue +0 -390
@@ -21,12 +21,12 @@ import Scope, { SCOPE_OPTIONS } from './Scope';
21
21
 
22
22
  function findConstraintTypes(schemas) {
23
23
  return schemas
24
- .filter(schema => schema?.attributes?.group === 'constraints.gatekeeper.sh');
24
+ .filter((schema) => schema?.attributes?.group === 'constraints.gatekeeper.sh');
25
25
  }
26
26
 
27
27
  function findConstraintTypesIds(schemas) {
28
28
  return findConstraintTypes(schemas)
29
- .map(schema => schema.id);
29
+ .map((schema) => schema.id);
30
30
  }
31
31
 
32
32
  const CONSTRAINT_PREFIX = 'constraints.gatekeeper.sh.';
@@ -145,8 +145,8 @@ export default {
145
145
  },
146
146
  systemNamespaceIds() {
147
147
  return this.$store.getters['cluster/all'](NAMESPACE)
148
- .filter(namespace => namespace.isSystem)
149
- .map(namespace => namespace.id);
148
+ .filter((namespace) => namespace.isSystem)
149
+ .map((namespace) => namespace.id);
150
150
  },
151
151
  emptyDefaults() {
152
152
  return {
@@ -185,7 +185,7 @@ export default {
185
185
  .filter((x) => {
186
186
  return x.metadata.namespace === this.value.metadata.namespace;
187
187
  })
188
- .filter(x => !isHarvesterCluster(x))
188
+ .filter((x) => !isHarvesterCluster(x))
189
189
  .map((x) => {
190
190
  return { label: x.nameDisplay, value: `cluster://${ x.metadata.name }` };
191
191
  });
@@ -202,7 +202,7 @@ export default {
202
202
  }
203
203
 
204
204
  const groups = this.allClusterGroups
205
- .filter(x => x.metadata.namespace === this.value.metadata.namespace)
205
+ .filter((x) => x.metadata.namespace === this.value.metadata.namespace)
206
206
  .map((x) => {
207
207
  return { label: x.nameDisplay, value: `group://${ x.metadata.name }` };
208
208
  });
@@ -223,16 +223,16 @@ export default {
223
223
 
224
224
  clusterNames() {
225
225
  const out = this.allClusters
226
- .filter(x => x.metadata.namespace === this.value.metadata.namespace)
227
- .map(x => x.metadata.name);
226
+ .filter((x) => x.metadata.namespace === this.value.metadata.namespace)
227
+ .map((x) => x.metadata.name);
228
228
 
229
229
  return out;
230
230
  },
231
231
 
232
232
  clusterGroupNames() {
233
233
  const out = this.allClusterGroups
234
- .filter(x => x.metadata.namespace === this.value.metadata.namespace)
235
- .map(x => x.metadata.name);
234
+ .filter((x) => x.metadata.namespace === this.value.metadata.namespace)
235
+ .map((x) => x.metadata.name);
236
236
 
237
237
  return out;
238
238
  },
@@ -63,20 +63,20 @@ export default {
63
63
  selectedNamespaceQuestions() {
64
64
  const inStore = this.$store.getters['currentStore']();
65
65
 
66
- const configMapRelationship = this.currentNamespace?.metadata?.relationships.find(relationship => relationship?.toType === 'configmap');
66
+ const configMapRelationship = this.currentNamespace?.metadata?.relationships.find((relationship) => relationship?.toType === 'configmap');
67
67
 
68
68
  const questionsYaml = this.$store.getters[`${ inStore }/byId`](configMapRelationship?.toType, configMapRelationship?.toId)?.data?.['questions.yaml'];
69
69
 
70
70
  return jsyaml.load(questionsYaml)?.questions;
71
71
  },
72
72
  currentNamespace() {
73
- return this.namespaces.find(namespace => namespace.id === this.value?.metadata?.namespace);
73
+ return this.namespaces.find((namespace) => namespace.id === this.value?.metadata?.namespace);
74
74
  }
75
75
  },
76
76
 
77
77
  methods: {
78
78
  getNamespaceConfigMapId(namespace) {
79
- return this.currentNamespace?.metadata?.relationships.find(relationship => relationship?.toType === 'configmap')?.toId;
79
+ return this.currentNamespace?.metadata?.relationships.find((relationship) => relationship?.toType === 'configmap')?.toId;
80
80
  },
81
81
  async getConfigMap(id) {
82
82
  return await this.$store.dispatch('cluster/find', { type: CONFIG_MAP, id });
@@ -109,8 +109,8 @@ export default {
109
109
  matches.push(emptyMatch(true));
110
110
  }
111
111
 
112
- const globalOutputRefs = (this.value.spec.globalOutputRefs || []).map(ref => ({ label: ref, value: ref }));
113
- const localOutputRefs = (this.value.spec.localOutputRefs || []).map(ref => ({ label: ref, value: ref }));
112
+ const globalOutputRefs = (this.value.spec.globalOutputRefs || []).map((ref) => ({ label: ref, value: ref }));
113
+ const localOutputRefs = (this.value.spec.localOutputRefs || []).map((ref) => ({ label: ref, value: ref }));
114
114
 
115
115
  return {
116
116
  formSupported,
@@ -309,7 +309,7 @@ export default {
309
309
 
310
310
  const select = match.select || {};
311
311
  const exclude = match.exclude || {};
312
- const allValuesAreEmpty = o => Object.values(o).every(isEmpty);
312
+ const allValuesAreEmpty = (o) => Object.values(o).every(isEmpty);
313
313
 
314
314
  return allValuesAreEmpty(select) && allValuesAreEmpty(exclude);
315
315
  });
@@ -329,7 +329,7 @@ export default {
329
329
  cm.execCommand('unfold');
330
330
  },
331
331
  isTag(options, option) {
332
- return !options.find(o => o.value === option.value);
332
+ return !options.find((o) => o.value === option.value);
333
333
  }
334
334
  }
335
335
  };
@@ -37,7 +37,7 @@ export default {
37
37
 
38
38
  set(this.value, 'spec', this.value.spec || {});
39
39
 
40
- const providers = PROVIDERS.map(provider => ({
40
+ const providers = PROVIDERS.map((provider) => ({
41
41
  ...provider,
42
42
  value: provider.name,
43
43
  label: this.t(provider.labelKey)
@@ -89,7 +89,7 @@ export default {
89
89
  return EDITOR_MODES;
90
90
  },
91
91
  enabledProviders() {
92
- return this.providers.filter(p => p.enabled);
92
+ return this.providers.filter((p) => p.enabled);
93
93
  },
94
94
  isNamespaced() {
95
95
  return this.value.type !== LOGGING?.CLUSTER_OUTPUT;
@@ -114,7 +114,7 @@ export default {
114
114
  const t = this.$store.getters['i18n/t'];
115
115
 
116
116
  if (this.selectedProvider === 'loki') {
117
- const urlCheck = ['https://', 'http://'].some(checkValue => this.value.spec['loki'].url.toLowerCase().startsWith(checkValue));
117
+ const urlCheck = ['https://', 'http://'].some((checkValue) => this.value.spec['loki'].url.toLowerCase().startsWith(checkValue));
118
118
  const isLokiHttps = this.value.spec['loki'].url ? urlCheck : undefined;
119
119
 
120
120
  if (!isLokiHttps) {
@@ -60,7 +60,7 @@ export default {
60
60
  return this.value.port;
61
61
  },
62
62
  set(port) {
63
- updatePort(value => this.$set(this.value, 'port', value), port);
63
+ updatePort((value) => this.$set(this.value, 'port', value), port);
64
64
  }
65
65
  }
66
66
  }
@@ -31,7 +31,7 @@ export default {
31
31
  return this.value.servers[0].port;
32
32
  },
33
33
  set(port) {
34
- updatePort(value => this.$set(this.value.servers[0], 'port', value), port);
34
+ updatePort((value) => this.$set(this.value.servers[0], 'port', value), port);
35
35
  }
36
36
  }
37
37
  }
@@ -34,7 +34,7 @@ export default {
34
34
  return this.value.endpoint.port;
35
35
  },
36
36
  set(port) {
37
- updatePort(value => this.$set(this.value.endpoint, 'port', value), port);
37
+ updatePort((value) => this.$set(this.value.endpoint, 'port', value), port);
38
38
  }
39
39
  }
40
40
  }
@@ -60,7 +60,7 @@ export default {
60
60
  return this.value.port;
61
61
  },
62
62
  set(port) {
63
- updatePort(value => this.$set(this.value, 'port', value), port);
63
+ updatePort((value) => this.$set(this.value, 'port', value), port);
64
64
  }
65
65
  }
66
66
  }
@@ -41,7 +41,7 @@ export default {
41
41
  return this.value.port;
42
42
  },
43
43
  set(port) {
44
- updatePort(value => this.$set(this.value, 'port', value), port);
44
+ updatePort((value) => this.$set(this.value, 'port', value), port);
45
45
  }
46
46
  }
47
47
  }
@@ -40,7 +40,7 @@ export default {
40
40
  return this.value.hec_port;
41
41
  },
42
42
  set(port) {
43
- updatePort(value => this.$set(this.value, 'hec_port', value), port);
43
+ updatePort((value) => this.$set(this.value, 'hec_port', value), port);
44
44
  }
45
45
  }
46
46
  }
@@ -32,7 +32,7 @@ export default {
32
32
  async saveOverride(btnCb) {
33
33
  this.errors = [];
34
34
  try {
35
- await Promise.all(this.bindings.map(binding => binding.save()));
35
+ await Promise.all(this.bindings.map((binding) => binding.save()));
36
36
 
37
37
  btnCb(true);
38
38
  } catch (err) {
@@ -71,7 +71,7 @@ export default (Vue as VueConstructor<Vue & InstanceType<typeof CreateEditView>>
71
71
  if (!this.value.configuration) {
72
72
  this.value.configuration = {
73
73
  defaults: {},
74
- exemptions: Object.assign({}, ...PSADimensions.map(dimension => ({ [dimension]: [] }))),
74
+ exemptions: Object.assign({}, ...PSADimensions.map((dimension) => ({ [dimension]: [] }))),
75
75
  } as PSAConfig;
76
76
  }
77
77
  }
@@ -14,8 +14,8 @@ import NameNsDescription from '@shell/components/form/NameNsDescription';
14
14
  import { MANAGEMENT } from '@shell/config/types';
15
15
  import { NAME } from '@shell/config/product/explorer';
16
16
  import { PROJECT_ID, _VIEW, _CREATE, _EDIT } from '@shell/config/query-params';
17
- import ProjectMembershipEditor from '@shell/components/form/Members/ProjectMembershipEditor';
18
- import { canViewProjectMembershipEditor } from '@shell/components/form/Members/ProjectMembershipEditor.vue';
17
+ import ProjectMembershipEditor, { canViewProjectMembershipEditor } from '@shell/components/form/Members/ProjectMembershipEditor';
18
+
19
19
  import { HARVESTER_NAME as HARVESTER } from '@shell/config/features';
20
20
  import { Banner } from '@components/Banner';
21
21
 
@@ -109,7 +109,7 @@ export default {
109
109
 
110
110
  const cur = this.value.status?.podSecurityPolicyTemplateId;
111
111
 
112
- if ( cur && !out.find(x => x.value === cur) ) {
112
+ if ( cur && !out.find((x) => x.value === cur) ) {
113
113
  out.unshift({ label: this.t('project.psp.current', { value: cur }), value: cur });
114
114
  }
115
115
 
@@ -47,7 +47,7 @@ export default {
47
47
  this.$set(this, 'principalId', principalId);
48
48
  },
49
49
  async saveOverride() {
50
- const asyncBindings = this.binding.roleTemplateIds.map(roleTemplateId => this.$store.dispatch(`management/create`, {
50
+ const asyncBindings = this.binding.roleTemplateIds.map((roleTemplateId) => this.$store.dispatch(`management/create`, {
51
51
  type: MANAGEMENT.PROJECT_ROLE_TEMPLATE_BINDING,
52
52
  roleTemplateName: roleTemplateId,
53
53
  principalName: this.member.principalId,
@@ -56,7 +56,7 @@ export default {
56
56
 
57
57
  const bindings = await Promise.all(asyncBindings);
58
58
 
59
- await Promise.all(bindings.map(binding => binding.save()));
59
+ await Promise.all(bindings.map((binding) => binding.save()));
60
60
  await this.$store.dispatch(`management/findAll`, { type: MANAGEMENT.PROJECT_ROLE_TEMPLATE_BINDING, opt: { force: true } });
61
61
 
62
62
  this.$router.replace(this.doneLocationOverride);
@@ -39,7 +39,7 @@ export default {
39
39
 
40
40
  created() {
41
41
  this.value.value = this.value.value || this.value.default;
42
- this.enumOptions = this.setting?.kind === 'enum' ? this.setting.options.map(id => ({
42
+ this.enumOptions = this.setting?.kind === 'enum' ? this.setting.options.map((id) => ({
43
43
  label: `advancedSettings.enum.${ this.value.id }.${ id }`,
44
44
  value: id,
45
45
  })) : [];
@@ -120,7 +120,7 @@ export default {
120
120
  // Ensure username is unique (this does not happen in the backend)
121
121
  const users = await this.$store.dispatch('management/findAll', { type: MANAGEMENT.USER });
122
122
 
123
- if (users.find(u => u.username === this.form.username)) {
123
+ if (users.find((u) => u.username === this.form.username)) {
124
124
  throw new Error(this.t('user.edit.credentials.username.exists'));
125
125
  }
126
126
 
@@ -159,7 +159,7 @@ export default {
159
159
  // - Fetching the norman user again sometimes shows the correct value, sometimes not
160
160
  // - Even if the fetched norman user shows the correct value, it doesn't show up in the steve user
161
161
  // - Looks like we re-request the stale version via socket?
162
- await new Promise(resolve => setTimeout(resolve, 5000));
162
+ await new Promise((resolve) => setTimeout(resolve, 5000));
163
163
  }
164
164
 
165
165
  // Save user updates
@@ -39,9 +39,9 @@ export default {
39
39
  default: {},
40
40
  },
41
41
  ];
42
- const authTypes = authOptions.map(option => option.value);
42
+ const authTypes = authOptions.map((option) => option.value);
43
43
  const authType =
44
- authTypes.find(authType => !isEmpty(this.value[authType])) ||
44
+ authTypes.find((authType) => !isEmpty(this.value[authType])) ||
45
45
  authTypes[0];
46
46
 
47
47
  this.initializeType(authOptions, authType);
@@ -50,7 +50,7 @@ export default {
50
50
  const defaultReceiverValues = {};
51
51
  const receiverSchema = this.$store.getters['cluster/schemaFor'](MONITORING.SPOOFED.ALERTMANAGERCONFIG_RECEIVER_SPEC);
52
52
  const routeSchema = this.$store.getters['cluster/schemaFor'](MONITORING.SPOOFED.ALERTMANAGERCONFIG_ROUTE_SPEC);
53
- const receiverOptions = (this.value?.spec?.receivers || []).map(receiver => receiver.name);
53
+ const receiverOptions = (this.value?.spec?.receivers || []).map((receiver) => receiver.name);
54
54
 
55
55
  return {
56
56
  actionMenuTargetElement: null,
@@ -185,7 +185,7 @@ export default {
185
185
  return {
186
186
  duplicateName: () => {
187
187
  const receiversArray = this.alertmanagerConfigResource.spec.receivers;
188
- const receiverNamesArray = receiversArray.map(R => R.name);
188
+ const receiverNamesArray = receiversArray.map((R) => R.name);
189
189
  const receiversSet = new Set(receiverNamesArray);
190
190
 
191
191
  if (receiversArray.length !== receiversSet.size) {
@@ -65,7 +65,7 @@ export default {
65
65
  this.$set(this.value, 'responders', this.value.responders || []);
66
66
 
67
67
  const responders = this.value.responders.map((responder) => {
68
- const target = TARGETS.find(target => responder[target.value]);
68
+ const target = TARGETS.find((target) => responder[target.value]);
69
69
 
70
70
  return {
71
71
  type: responder.type,
@@ -118,10 +118,10 @@ export default {
118
118
  row.value = text;
119
119
  },
120
120
  typeLabel(type) {
121
- return TYPES.find(t => t.value === type).label;
121
+ return TYPES.find((t) => t.value === type).label;
122
122
  },
123
123
  targetLabel(target) {
124
- return TARGETS.find(t => t.value === target).label;
124
+ return TARGETS.find((t) => t.value === target).label;
125
125
  },
126
126
  updateApiKeySecretName(name) {
127
127
  const existingKey = this.value.apiKey?.key || '';
@@ -51,18 +51,18 @@ export default {
51
51
  recordingRules() {
52
52
  const { value: rules } = this;
53
53
 
54
- return rules.filter(rule => has(rule, 'record'));
54
+ return rules.filter((rule) => has(rule, 'record'));
55
55
  },
56
56
  alertingRules() {
57
57
  const { value: rules } = this;
58
58
 
59
- return rules.filter(rule => has(rule, 'alert'));
59
+ return rules.filter((rule) => has(rule, 'alert'));
60
60
  },
61
61
  customRules() {
62
62
  const { value: rules } = this;
63
63
 
64
64
  return rules.filter(
65
- rule => !has(rule, 'alert') && !has(rule, 'record')
65
+ (rule) => !has(rule, 'alert') && !has(rule, 'record')
66
66
  );
67
67
  },
68
68
  hideRecordingRulesOnView() {
@@ -77,12 +77,12 @@ export default {
77
77
  disableAddRecord() {
78
78
  const { value: rules } = this;
79
79
 
80
- return rules.find(rule => has(rule, 'alert'));
80
+ return rules.find((rule) => has(rule, 'alert'));
81
81
  },
82
82
  disableAddAlert() {
83
83
  const { value: rules } = this;
84
84
 
85
- return rules.find(rule => has(rule, 'record'));
85
+ return rules.find((rule) => has(rule, 'record'));
86
86
  },
87
87
  },
88
88
 
@@ -21,7 +21,7 @@ export function toMilliseconds(input) {
21
21
 
22
22
  if (d) {
23
23
  const properties = d.slice(1);
24
- const numberD = properties.map(value => ([null, undefined].includes(value) ? 0 : Number(value)));
24
+ const numberD = properties.map((value) => ([null, undefined].includes(value) ? 0 : Number(value)));
25
25
  const data = {};
26
26
 
27
27
  [
@@ -42,7 +42,10 @@ export default {
42
42
  },
43
43
 
44
44
  data() {
45
- return { fvFormRuleSets: [{ path: 'metadata.name', rules: ['dnsLabel'] }] };
45
+ return {
46
+ fvFormRuleSets: [{ path: 'metadata.name', rules: ['dnsLabel'] }],
47
+ closedErrorMessages: []
48
+ };
46
49
  },
47
50
 
48
51
  computed: {
@@ -54,7 +57,7 @@ export default {
54
57
  return [this.t('validation.prometheusRule.noEdit')];
55
58
  }
56
59
 
57
- return this.fvUnreportedValidationErrors;
60
+ return this.fvUnreportedValidationErrors.filter((e) => !this.closedErrorMessages.includes(e));
58
61
  }
59
62
  },
60
63
 
@@ -102,6 +105,8 @@ export default {
102
105
  }
103
106
  });
104
107
 
108
+ this.closedErrorMessages = [];
109
+
105
110
  return true;
106
111
  },
107
112
 
@@ -125,7 +130,7 @@ export default {
125
130
  :mode="mode"
126
131
  :resource="value"
127
132
  :validation-passed="fvFormIsValid"
128
- @error="(e) => (errors = e)"
133
+ @error="(_, closedError) => closedErrorMessages.push(closedError)"
129
134
  @finish="save"
130
135
  >
131
136
  <div class="row">
@@ -47,8 +47,8 @@ export default {
47
47
  default: ''
48
48
  }
49
49
  ];
50
- const authTypes = authOptions.map(option => option.value);
51
- const authType = authTypes.find(authType => !isEmpty(this.value[authType])) || authTypes[0];
50
+ const authTypes = authOptions.map((option) => option.value);
51
+ const authType = authTypes.find((authType) => !isEmpty(this.value[authType])) || authTypes[0];
52
52
 
53
53
  this.initializeType(authOptions, authType);
54
54
 
@@ -35,10 +35,9 @@ export default {
35
35
  <div class="row">
36
36
  <div class="col span-12">
37
37
  <h3>{{ t('monitoring.receiver.tls.label') }}</h3>
38
- <Banner
39
- v-clean-html="t('monitoring.receiver.tls.secretsBanner', {}, true)"
40
- color="info"
41
- />
38
+ <Banner color="info">
39
+ <span v-clean-html="t('monitoring.receiver.tls.secretsBanner', {}, true)" />
40
+ </Banner>
42
41
  </div>
43
42
  </div>
44
43
  <div class="row mb-20">
@@ -0,0 +1,53 @@
1
+ import { mount } from '@vue/test-utils';
2
+ import Email from '@shell/edit/monitoring.coreos.com.receiver/types/email.vue';
3
+
4
+ describe('page: Routes and Receivers', () => {
5
+ it('should have host field with a valid integer value under Email form', () => {
6
+ const wrapper = mount(Email, {
7
+ propsData: {
8
+ mode: 'create',
9
+ value: {}
10
+ },
11
+ mocks: {
12
+ t: (text: string) => text, // Mock i18n global function used as alternative to the getter
13
+ $store: {
14
+ getters: {
15
+ 'i18n/t': jest.fn(),
16
+ 'i18n/exists': jest.fn()
17
+ }
18
+ }
19
+ },
20
+ });
21
+
22
+ const host = wrapper.find('[data-testid="input-email-host"]');
23
+
24
+ host.setValue('10.2.300.3');
25
+
26
+ expect(host.exists()).toBe(true);
27
+ expect(host.element.value).toStrictEqual('10.2.300.3');
28
+ });
29
+ it('should have port field with a valid integer value under Email form', () => {
30
+ const wrapper = mount(Email, {
31
+ propsData: {
32
+ mode: 'create',
33
+ value: {}
34
+ },
35
+ mocks: {
36
+ t: (text: string) => text, // Mock i18n global function used as alternative to the getter
37
+ $store: {
38
+ getters: {
39
+ 'i18n/t': jest.fn(),
40
+ 'i18n/exists': jest.fn()
41
+ }
42
+ }
43
+ },
44
+ });
45
+
46
+ const port = wrapper.find('[data-testid="input-email-port"]');
47
+
48
+ port.setValue('8080');
49
+
50
+ expect(port.exists()).toBe(true);
51
+ expect(port.element.value).toStrictEqual('8080');
52
+ });
53
+ });
@@ -78,6 +78,7 @@ export default {
78
78
  v-model="value.host"
79
79
  :mode="mode"
80
80
  label="Host"
81
+ data-testid="input-email-host"
81
82
  placeholder="e.g. 192.168.1.121"
82
83
  />
83
84
  </div>
@@ -86,6 +87,7 @@ export default {
86
87
  v-model="value.port"
87
88
  :mode="mode"
88
89
  label="Port"
90
+ data-testid="input-email-port"
89
91
  placeholder="e.g. 80"
90
92
  />
91
93
  </div>
@@ -68,7 +68,7 @@ export default {
68
68
  this.$set(this.value, 'responders', this.value.responders || []);
69
69
 
70
70
  const responders = this.value.responders.map((responder) => {
71
- const target = TARGETS.find(target => responder[target.value]);
71
+ const target = TARGETS.find((target) => responder[target.value]);
72
72
 
73
73
  return {
74
74
  type: responder.type,
@@ -117,10 +117,10 @@ export default {
117
117
  row.value = text;
118
118
  },
119
119
  typeLabel(type) {
120
- return TYPES.find(t => t.value === type).label;
120
+ return TYPES.find((t) => t.value === type).label;
121
121
  },
122
122
  targetLabel(target) {
123
- return TARGETS.find(t => t.value === target).label;
123
+ return TARGETS.find((t) => t.value === target).label;
124
124
  }
125
125
  }
126
126
  };
@@ -34,7 +34,7 @@ export default {
34
34
  value: 'alibaba-cloud-sms'
35
35
  }
36
36
  ],
37
- webhookType: RECEIVERS_TYPES.find(type => type.name === 'webhook'),
37
+ webhookType: RECEIVERS_TYPES.find((type) => type.name === 'webhook'),
38
38
  isView: this.mode === _VIEW
39
39
  };
40
40
  },
@@ -39,10 +39,10 @@ export default {
39
39
  const receivers = this.$store.dispatch('cluster/findAll', { type: MONITORING.SPOOFED.RECEIVER });
40
40
  const routes = this.$store.dispatch('cluster/findAll', { type: MONITORING.SPOOFED.ROUTE });
41
41
 
42
- this.receiverOptions = (await receivers).map(receiver => receiver.spec.name);
42
+ this.receiverOptions = (await receivers).map((receiver) => receiver.spec.name);
43
43
 
44
44
  if (this.isCreate) {
45
- const nonRootRoutes = (await routes).filter(route => !route.isRoot);
45
+ const nonRootRoutes = (await routes).filter((route) => !route.isRoot);
46
46
 
47
47
  this.$set(this.value.spec, 'name', createDefaultRouteName(nonRootRoutes.length));
48
48
  }