@rancher/shell 0.3.13 → 0.3.15

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 (396) hide show
  1. package/assets/images/providers/nutanix.svg +1 -0
  2. package/assets/translations/en-us.yaml +89 -2
  3. package/chart/gatekeeper.vue +2 -2
  4. package/chart/monitoring/alerting/index.vue +3 -3
  5. package/chart/monitoring/index.vue +2 -2
  6. package/chart/monitoring/prometheus/index.vue +1 -1
  7. package/chart/rancher-backup/index.vue +2 -2
  8. package/cloud-credential/harvester.vue +2 -2
  9. package/components/AssignTo.vue +1 -1
  10. package/components/AwsComplianceBanner.vue +1 -1
  11. package/components/BackLink.vue +7 -0
  12. package/components/BrandImage.vue +3 -3
  13. package/components/ClusterProviderIcon.vue +1 -1
  14. package/components/CommunityLinks.vue +2 -2
  15. package/components/ConsumptionGauge.vue +17 -2
  16. package/components/CruResource.vue +2 -1
  17. package/components/DashboardMetrics.vue +8 -0
  18. package/components/DetailTop.vue +1 -1
  19. package/components/ExplorerMembers.vue +8 -8
  20. package/components/ExplorerProjectsNamespaces.vue +9 -9
  21. package/components/FixedBanner.vue +1 -1
  22. package/components/GlobalRoleBindings.vue +11 -11
  23. package/components/GrafanaDashboard.vue +7 -1
  24. package/components/GrowlManager.vue +1 -1
  25. package/components/HarvesterServiceAddOnConfig.vue +117 -2
  26. package/components/IconOrSvg.vue +10 -3
  27. package/components/LandingPagePreference.vue +2 -2
  28. package/components/MoveModal.vue +1 -1
  29. package/components/PodSecurityAdmission.vue +3 -3
  30. package/components/ProgressBarMulti.vue +2 -2
  31. package/components/PromptRemove.vue +52 -28
  32. package/components/PromptRestore.vue +3 -3
  33. package/components/Questions/index.vue +5 -5
  34. package/components/RelatedWorkloadsTable.vue +1 -1
  35. package/components/ResourceList/Masthead.vue +1 -1
  36. package/components/ResourceTable.vue +3 -3
  37. package/components/ResourceYaml.vue +1 -1
  38. package/components/RoleBindings.vue +2 -2
  39. package/components/SingleClusterInfo.vue +1 -1
  40. package/components/SortableTable/actions.js +3 -3
  41. package/components/SortableTable/advanced-filtering.js +7 -7
  42. package/components/SortableTable/filtering.js +1 -1
  43. package/components/SortableTable/index.vue +9 -9
  44. package/components/SortableTable/selection.js +5 -5
  45. package/components/SortableTable/sorting.js +5 -5
  46. package/components/Tabbed/index.vue +7 -7
  47. package/components/TableSparkLine.vue +1 -1
  48. package/components/Wizard.vue +11 -23
  49. package/components/__tests__/Collapse.spec.ts +1 -1
  50. package/components/__tests__/CruResource.test.ts +74 -0
  51. package/components/__tests__/SimpleBox.spec.ts +1 -1
  52. package/components/auth/RoleDetailEdit.vue +7 -3
  53. package/components/auth/SelectPrincipal.vue +3 -3
  54. package/components/fleet/FleetResources.vue +1 -1
  55. package/components/fleet/FleetStatus.vue +4 -4
  56. package/components/fleet/FleetSummary.vue +1 -1
  57. package/components/fleet/ForceDirectedTreeChart/chartIcons.js +1 -1
  58. package/components/fleet/ForceDirectedTreeChart/index.vue +1 -1
  59. package/components/form/ArrayList.vue +11 -3
  60. package/components/form/ArrayListSelect.vue +2 -2
  61. package/components/form/FileSelector.vue +6 -0
  62. package/components/form/GitPicker.vue +528 -0
  63. package/components/form/KeyValue.vue +82 -41
  64. package/components/form/LabeledSelect.vue +2 -2
  65. package/components/form/MatchExpressions.vue +2 -2
  66. package/components/form/Members/ClusterMembershipEditor.vue +1 -2
  67. package/components/form/Members/ClusterPermissionsEditor.vue +6 -5
  68. package/components/form/Members/MembershipEditor.vue +4 -4
  69. package/components/form/Members/ProjectMembershipEditor.vue +1 -2
  70. package/components/form/NameNsDescription.vue +13 -6
  71. package/components/form/Networking.vue +2 -2
  72. package/components/form/NodeScheduling.vue +1 -1
  73. package/components/form/PodAffinity.vue +1 -1
  74. package/components/form/ProjectMemberEditor.vue +4 -4
  75. package/components/form/ResourceQuota/Namespace.vue +2 -2
  76. package/components/form/ResourceQuota/NamespaceRow.vue +2 -2
  77. package/components/form/ResourceQuota/Project.vue +1 -1
  78. package/components/form/ResourceQuota/shared.js +2 -2
  79. package/components/form/ResourceSelector.vue +1 -1
  80. package/components/form/ResourceTabs/index.vue +1 -1
  81. package/components/form/RuleSelector.vue +1 -1
  82. package/components/form/SecretSelector.vue +4 -4
  83. package/components/form/Select.vue +2 -2
  84. package/components/form/SelectOrCreateAuthSecret.vue +3 -3
  85. package/components/form/ServiceNameSelect.vue +1 -1
  86. package/components/form/ServicePorts.vue +1 -1
  87. package/components/form/ShellInput.vue +1 -1
  88. package/components/form/SimpleSecretSelector.vue +4 -4
  89. package/components/form/Taints.vue +1 -1
  90. package/components/form/ValueFromResource.vue +3 -3
  91. package/components/form/WorkloadPorts.vue +8 -7
  92. package/components/form/__tests__/Error.test.ts +1 -1
  93. package/components/form/__tests__/KeyValue.test.ts +21 -0
  94. package/components/formatter/ClusterLink.vue +1 -1
  95. package/components/formatter/ClusterProvider.vue +13 -2
  96. package/components/formatter/Endpoints.vue +1 -1
  97. package/components/formatter/FleetSummaryGraph.vue +2 -2
  98. package/components/formatter/IngressTarget.vue +2 -2
  99. package/components/formatter/PodImages.vue +1 -1
  100. package/components/formatter/PrincipalGroupBindings.vue +1 -1
  101. package/components/formatter/ReceiverIcons.vue +3 -3
  102. package/components/formatter/ServiceType.vue +1 -1
  103. package/components/formatter/WorkloadDetailEndpoints.vue +1 -1
  104. package/components/formatter/WorkloadHealthScale.vue +1 -1
  105. package/components/formatter/__tests__/LiveDate.test.ts +1 -1
  106. package/components/graph/Bar.vue +1 -1
  107. package/components/graph/LinePlot.vue +3 -3
  108. package/components/nav/Group.vue +2 -2
  109. package/components/nav/Header.vue +5 -5
  110. package/components/nav/NamespaceFilter.vue +14 -14
  111. package/components/nav/TopLevelMenu.vue +76 -11
  112. package/components/nav/WindowManager/ContainerLogs.vue +2 -2
  113. package/components/nav/WindowManager/ContainerShell.vue +1 -1
  114. package/components/nav/WorkspaceSwitcher.vue +1 -1
  115. package/config/home-links.js +4 -4
  116. package/config/labels-annotations.js +8 -8
  117. package/config/pod-security-admission.ts +1 -1
  118. package/config/product/auth.js +4 -4
  119. package/config/product/explorer.js +14 -0
  120. package/config/router.js +5 -0
  121. package/config/store.js +2 -0
  122. package/config/table-headers.js +13 -13
  123. package/config/uiplugins.js +8 -1
  124. package/core/plugin-routes.ts +3 -2
  125. package/core/plugin.ts +3 -3
  126. package/core/plugins.js +7 -7
  127. package/creators/app/files/.gitignore +0 -3
  128. package/creators/pkg/files/index.ts +1 -1
  129. package/detail/cis.cattle.io.clusterscan.vue +3 -3
  130. package/detail/fleet.cattle.io.bundle.vue +1 -1
  131. package/detail/helm.cattle.io.projecthelmchart.vue +16 -29
  132. package/detail/management.cattle.io.user.vue +12 -12
  133. package/detail/namespace.vue +4 -4
  134. package/detail/networking.k8s.io.ingress.vue +3 -3
  135. package/detail/node.vue +2 -2
  136. package/detail/provisioning.cattle.io.cluster.vue +9 -10
  137. package/detail/service.vue +1 -1
  138. package/detail/workload/index.vue +3 -3
  139. package/dialog/AddProjectMemberDialog.vue +2 -2
  140. package/dialog/DrainNode.vue +1 -1
  141. package/dialog/GenericPrompt.vue +9 -5
  142. package/dialog/RotateEncryptionKeyDialog.vue +2 -2
  143. package/dialog/ScaleMachineDownDialog.vue +2 -2
  144. package/edit/auth/azuread.vue +3 -3
  145. package/edit/autoscaling.horizontalpodautoscaler/index.vue +5 -5
  146. package/edit/cis.cattle.io.clusterscan.vue +5 -5
  147. package/edit/cloudcredential.vue +4 -4
  148. package/edit/constraints.gatekeeper.sh.constraint/NamespaceList.vue +1 -1
  149. package/edit/constraints.gatekeeper.sh.constraint/index.vue +4 -4
  150. package/edit/fleet.cattle.io.gitrepo.vue +6 -6
  151. package/edit/helm.cattle.io.projecthelmchart.vue +3 -3
  152. package/edit/logging-flow/index.vue +4 -4
  153. package/edit/logging.banzaicloud.io.output/index.vue +3 -3
  154. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
  155. package/edit/logging.banzaicloud.io.output/providers/forward.vue +1 -1
  156. package/edit/logging.banzaicloud.io.output/providers/logz.vue +1 -1
  157. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +1 -1
  158. package/edit/logging.banzaicloud.io.output/providers/redis.vue +1 -1
  159. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +1 -1
  160. package/edit/management.cattle.io.clusterroletemplatebinding.vue +1 -1
  161. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +1 -1
  162. package/edit/management.cattle.io.project.vue +3 -3
  163. package/edit/management.cattle.io.projectroletemplatebinding.vue +2 -2
  164. package/edit/management.cattle.io.setting.vue +1 -1
  165. package/edit/management.cattle.io.user.vue +2 -2
  166. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +2 -2
  167. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  168. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +1 -1
  169. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +3 -3
  170. package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +5 -5
  171. package/edit/monitoring.coreos.com.prometheusrule/duration.js +1 -1
  172. package/edit/monitoring.coreos.com.receiver/auth.vue +2 -2
  173. package/edit/monitoring.coreos.com.receiver/tls.vue +3 -4
  174. package/edit/monitoring.coreos.com.receiver/types/__tests__/email.test.ts +53 -0
  175. package/edit/monitoring.coreos.com.receiver/types/email.vue +2 -0
  176. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +3 -3
  177. package/edit/monitoring.coreos.com.receiver/types/webhook.add.vue +1 -1
  178. package/edit/monitoring.coreos.com.route.vue +2 -2
  179. package/edit/namespace.vue +21 -13
  180. package/edit/networking.k8s.io.ingress/Certificate.vue +2 -2
  181. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  182. package/edit/networking.k8s.io.ingress/RulePath.vue +2 -2
  183. package/edit/networking.k8s.io.ingress/Rules.vue +2 -2
  184. package/edit/networking.k8s.io.ingress/index.vue +4 -4
  185. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +3 -3
  186. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  187. package/edit/persistentvolume/index.vue +4 -4
  188. package/edit/persistentvolumeclaim.vue +3 -3
  189. package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +1 -1
  190. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +2 -2
  191. package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
  192. package/edit/provisioning.cattle.io.cluster/index.vue +7 -7
  193. package/edit/provisioning.cattle.io.cluster/rke2.vue +28 -29
  194. package/edit/resources.cattle.io.backup.vue +2 -2
  195. package/edit/resources.cattle.io.restore.vue +3 -3
  196. package/edit/secret/generic.vue +1 -1
  197. package/edit/secret/index.vue +3 -3
  198. package/edit/service.vue +3 -21
  199. package/edit/serviceaccount.vue +2 -2
  200. package/edit/storage.k8s.io.storageclass/index.vue +4 -4
  201. package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +1 -1
  202. package/edit/token.vue +5 -5
  203. package/edit/workload/index.vue +1 -1
  204. package/edit/workload/mixins/workload.js +8 -8
  205. package/edit/workload/storage/ContainerMountPaths.vue +9 -9
  206. package/edit/workload/storage/Mount.vue +2 -2
  207. package/edit/workload/storage/csi/index.vue +1 -1
  208. package/edit/workload/storage/ephemeralVolume/index.vue +1 -1
  209. package/edit/workload/storage/index.vue +6 -6
  210. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +2 -2
  211. package/initialize/client.js +8 -8
  212. package/initialize/index.js +1 -4
  213. package/layouts/default.vue +38 -11
  214. package/list/catalog.cattle.io.clusterrepo.vue +9 -1
  215. package/list/cis.cattle.io.clusterscan.vue +1 -1
  216. package/list/fleet.cattle.io.cluster.vue +2 -2
  217. package/list/group.principal.vue +1 -1
  218. package/list/helm.cattle.io.projecthelmchart.vue +2 -2
  219. package/list/management.cattle.io.cluster.vue +1 -1
  220. package/list/management.cattle.io.feature.vue +1 -1
  221. package/list/management.cattle.io.user.vue +2 -2
  222. package/list/node.vue +5 -5
  223. package/list/provisioning.cattle.io.cluster.vue +4 -5
  224. package/machine-config/amazonec2.vue +2 -2
  225. package/machine-config/digitalocean.vue +4 -4
  226. package/machine-config/linode.vue +4 -4
  227. package/machine-config/vmwarevsphere.vue +12 -12
  228. package/middleware/authenticated.js +7 -6
  229. package/mixins/brand.js +1 -1
  230. package/mixins/chart.js +6 -6
  231. package/mixins/fetch.client.js +2 -2
  232. package/mixins/form-validation.js +7 -7
  233. package/mixins/resource-fetch-namespaced.js +1 -1
  234. package/mixins/resource-fetch.js +2 -2
  235. package/models/apps.statefulset.js +2 -2
  236. package/models/batch.cronjob.js +1 -1
  237. package/models/catalog.cattle.io.app.js +4 -4
  238. package/models/cis.cattle.io.clusterscan.js +1 -1
  239. package/models/cis.cattle.io.clusterscanbenchmark.js +1 -1
  240. package/models/cis.cattle.io.clusterscanreport.js +1 -1
  241. package/models/cloudcredential.js +1 -1
  242. package/models/cluster/node.js +5 -5
  243. package/models/cluster.x-k8s.io.machinedeployment.js +2 -2
  244. package/models/fleet.cattle.io.gitrepo.js +3 -3
  245. package/models/group.principal.js +4 -4
  246. package/models/helm.cattle.io.projecthelmchart.js +2 -2
  247. package/models/logging.banzaicloud.io.clusterflow.js +2 -2
  248. package/models/logging.banzaicloud.io.flow.js +5 -5
  249. package/models/logging.banzaicloud.io.output.js +2 -2
  250. package/models/management.cattle.io.cluster.js +10 -14
  251. package/models/management.cattle.io.globalrole.js +4 -4
  252. package/models/management.cattle.io.node.js +2 -2
  253. package/models/management.cattle.io.nodepool.js +3 -3
  254. package/models/management.cattle.io.nodetemplate.js +4 -4
  255. package/models/management.cattle.io.project.js +2 -2
  256. package/models/management.cattle.io.roletemplate.js +1 -1
  257. package/models/management.cattle.io.setting.js +1 -1
  258. package/models/management.cattle.io.user.js +5 -5
  259. package/models/monitoring.coreos.com.receiver.js +9 -9
  260. package/models/namespace.js +1 -1
  261. package/models/networking.k8s.io.ingress.js +5 -5
  262. package/models/persistentvolume.js +3 -3
  263. package/models/pod.js +3 -3
  264. package/models/provisioning.cattle.io.cluster.js +39 -27
  265. package/models/rbac.authorization.k8s.io.clusterrole.js +2 -2
  266. package/models/rbac.authorization.k8s.io.role.js +3 -3
  267. package/models/secret.js +1 -1
  268. package/models/service.js +2 -2
  269. package/models/storage.k8s.io.storageclass.js +2 -2
  270. package/models/token.js +1 -1
  271. package/models/workload.js +6 -6
  272. package/models/workload.service.js +5 -21
  273. package/package.json +2 -1
  274. package/pages/about.vue +9 -9
  275. package/pages/account/index.vue +2 -2
  276. package/pages/auth/login.vue +15 -12
  277. package/pages/auth/verify.vue +6 -0
  278. package/pages/c/_cluster/apps/charts/index.vue +4 -4
  279. package/pages/c/_cluster/apps/charts/install.vue +28 -20
  280. package/pages/c/_cluster/auth/roles/index.vue +9 -9
  281. package/pages/c/_cluster/explorer/index.vue +41 -16
  282. package/pages/c/_cluster/explorer/tools/index.vue +8 -8
  283. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +1 -1
  284. package/pages/c/_cluster/fleet/index.vue +11 -11
  285. package/pages/c/_cluster/monitoring/index.vue +1 -1
  286. package/pages/c/_cluster/settings/links.vue +3 -3
  287. package/pages/c/_cluster/settings/performance.vue +1 -1
  288. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +6 -6
  289. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +3 -3
  290. package/pages/c/_cluster/uiplugins/InstallDialog.vue +3 -3
  291. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +1 -1
  292. package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +3 -3
  293. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +6 -6
  294. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +4 -4
  295. package/pages/c/_cluster/uiplugins/index.vue +22 -19
  296. package/pages/diagnostic.vue +6 -6
  297. package/pages/home.vue +3 -3
  298. package/pages/prefs.vue +2 -2
  299. package/pages/rio/mesh.vue +3 -3
  300. package/pages/support/index.vue +10 -1
  301. package/pkg/auto-import.js +1 -1
  302. package/pkg/tsconfig.json +1 -0
  303. package/pkg/vue.config.js +1 -1
  304. package/plugins/axios.js +1 -1
  305. package/plugins/clean-html-directive.js +1 -1
  306. package/plugins/dashboard-store/__tests__/mutations.spec.js +4 -4
  307. package/plugins/dashboard-store/actions.js +4 -4
  308. package/plugins/dashboard-store/getters.js +1 -1
  309. package/plugins/dashboard-store/index.js +1 -1
  310. package/plugins/dashboard-store/mutations.js +2 -2
  311. package/plugins/dashboard-store/resource-class.js +8 -8
  312. package/plugins/i18n.js +1 -1
  313. package/plugins/plugin.js +5 -1
  314. package/plugins/steve/actions.js +3 -3
  315. package/plugins/steve/getters.js +3 -3
  316. package/plugins/steve/hybrid-class.js +1 -1
  317. package/plugins/steve/mutations.js +1 -1
  318. package/plugins/steve/performanceTesting.js +1 -1
  319. package/plugins/steve/resourceWatcher.js +1 -1
  320. package/plugins/steve/subscribe.js +6 -6
  321. package/plugins/steve/worker/web-worker.basic.js +1 -1
  322. package/promptRemove/management.cattle.io.project.vue +3 -3
  323. package/promptRemove/mixin/roleDeletionCheck.js +4 -4
  324. package/promptRemove/pod.vue +1 -1
  325. package/rancher-components/StringList/StringList.test.ts +80 -0
  326. package/rancher-components/StringList/StringList.vue +577 -0
  327. package/rancher-components/StringList/index.ts +1 -0
  328. package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +2 -2
  329. package/rancher-components/components/Form/Checkbox/Checkbox.vue +1 -1
  330. package/rancher-components/components/Form/Radio/RadioButton.test.ts +1 -1
  331. package/rancher-components/components/Form/Radio/RadioButton.vue +2 -2
  332. package/rancher-components/components/Form/Radio/RadioGroup.vue +2 -2
  333. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +1 -0
  334. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +1 -1
  335. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -7
  336. package/rancher-components/components/StringList/StringList.test.ts +10 -9
  337. package/rancher-components/components/StringList/StringList.vue +5 -5
  338. package/scripts/extension/helm/charts/ui-plugin-server/Chart.yaml +1 -1
  339. package/store/action-menu.js +4 -4
  340. package/store/auth.js +40 -7
  341. package/store/aws.js +1 -1
  342. package/store/catalog.js +12 -11
  343. package/store/digitalocean.js +4 -4
  344. package/store/features.js +1 -0
  345. package/store/github.js +70 -213
  346. package/store/gitlab.js +159 -0
  347. package/store/growl.js +1 -1
  348. package/store/i18n.js +7 -7
  349. package/store/index.js +63 -22
  350. package/store/linode.js +1 -1
  351. package/store/plugins.js +5 -5
  352. package/store/pnap.js +1 -1
  353. package/store/prefs.js +6 -6
  354. package/store/resource-fetch.js +3 -3
  355. package/store/type-map.js +61 -42
  356. package/store/uiplugins.ts +2 -1
  357. package/store/wm.js +5 -4
  358. package/tsconfig.default.json +10 -0
  359. package/tsconfig.json +2 -9
  360. package/types/shell/index.d.ts +12 -4
  361. package/utils/__tests__/version.test.ts +28 -0
  362. package/utils/alertmanagerconfig.js +4 -4
  363. package/utils/array.ts +4 -4
  364. package/utils/async.ts +1 -1
  365. package/utils/auth.js +3 -3
  366. package/utils/axios.js +5 -5
  367. package/utils/cluster.js +4 -3
  368. package/utils/color.js +10 -0
  369. package/utils/create-yaml.js +4 -4
  370. package/utils/crypto/browserHashUtils.js +1 -1
  371. package/utils/crypto/browserMd5.js +1 -1
  372. package/utils/crypto/browserSha1.js +1 -1
  373. package/utils/crypto/browserSha256.js +1 -1
  374. package/utils/crypto/index.js +3 -3
  375. package/utils/favicon.js +2 -3
  376. package/utils/gatekeeper/util.js +3 -3
  377. package/utils/gc/gc.ts +2 -2
  378. package/utils/git.ts +92 -0
  379. package/utils/grafana.js +4 -4
  380. package/utils/monitoring.js +2 -2
  381. package/utils/nuxt.js +2 -2
  382. package/utils/object.js +5 -5
  383. package/utils/pod-security-admission.ts +1 -1
  384. package/utils/projectAndNamespaceFiltering.utils.ts +1 -1
  385. package/utils/select.js +2 -2
  386. package/utils/selector.js +2 -2
  387. package/utils/settings.ts +17 -2
  388. package/utils/socket.js +30 -6
  389. package/utils/sort.js +1 -1
  390. package/utils/string.js +1 -1
  391. package/utils/url.ts +1 -1
  392. package/utils/validators/formRules/index.ts +3 -3
  393. package/utils/validators/role-template.js +4 -4
  394. package/utils/version.js +14 -1
  395. package/vue.config.js +19 -13
  396. package/components/form/GithubPicker.vue +0 -390
@@ -1,18 +1,19 @@
1
+ /* eslint-disable jest/no-hooks */
1
2
  import { mount, Wrapper } from '@vue/test-utils';
2
3
  import { StringList } from './index';
3
4
 
4
- describe('StringList.vue', () => {
5
+ describe('stringList.vue', () => {
5
6
  let wrapper: Wrapper<InstanceType<typeof StringList>>;
6
7
 
7
8
  beforeEach(() => {
8
9
  wrapper = mount(StringList, { propsData: { items: [] } });
9
10
  });
10
11
 
11
- describe('List box', () => {
12
+ describe('list box', () => {
12
13
  it('is empty', () => {
13
14
  const box = wrapper.find('[data-testid="div-string-list-box"]').element as HTMLElement;
14
15
 
15
- expect(box.children.length).toBe(0);
16
+ expect(box.children).toHaveLength(0);
16
17
  });
17
18
 
18
19
  it('show multiple items', async() => {
@@ -22,7 +23,7 @@ describe('StringList.vue', () => {
22
23
 
23
24
  const elements = wrapper.findAll('[data-testid^="div-item"]');
24
25
 
25
- expect(elements.length).toBe(10);
26
+ expect(elements).toHaveLength(10);
26
27
  });
27
28
 
28
29
  it('double click triggers inline edit mode', async() => {
@@ -130,7 +131,7 @@ describe('StringList.vue', () => {
130
131
  });
131
132
  });
132
133
 
133
- describe('Buttons', () => {
134
+ describe('buttons', () => {
134
135
  it('are visible by default', () => {
135
136
  const actionButtons = wrapper.find('[data-testid="div-action-buttons"]');
136
137
 
@@ -144,7 +145,7 @@ describe('StringList.vue', () => {
144
145
  expect(actionButtons.element).toBeUndefined();
145
146
  });
146
147
 
147
- describe('Add button', () => {
148
+ describe('add button', () => {
148
149
  it('is enabled by default', () => {
149
150
  const addButton = wrapper.find('[data-testid="button-add"]')?.element as HTMLButtonElement;
150
151
 
@@ -176,7 +177,7 @@ describe('StringList.vue', () => {
176
177
  });
177
178
  });
178
179
 
179
- describe('Remove button', () => {
180
+ describe('remove button', () => {
180
181
  it('is disabled by default', () => {
181
182
  const removeButton = wrapper.find('[data-testid="button-remove"]');
182
183
  const buttonElem = removeButton.element as HTMLButtonElement;
@@ -279,7 +280,7 @@ describe('StringList.vue', () => {
279
280
  });
280
281
  });
281
282
 
282
- describe('List edit', () => {
283
+ describe('list edit', () => {
283
284
  const validItem = ' item name ';
284
285
  const emptyItem = ' ';
285
286
 
@@ -397,7 +398,7 @@ describe('StringList.vue', () => {
397
398
  });
398
399
  });
399
400
 
400
- describe('Errors handling', () => {
401
+ describe('errors handling', () => {
401
402
  it('show duplicate warning icon when errorMessages is defined', async() => {
402
403
  const items = ['test'];
403
404
 
@@ -30,9 +30,9 @@ const CLASS = {
30
30
  * Manage a list of strings
31
31
  */
32
32
  export default Vue.extend({
33
- components: { LabeledInput },
34
33
 
35
- name: 'StringList',
34
+ name: 'StringList',
35
+ components: { LabeledInput },
36
36
 
37
37
  props: {
38
38
  /**
@@ -100,8 +100,8 @@ export default Vue.extend({
100
100
  */
101
101
  errorMessagesArray(): string[] {
102
102
  return (Object.keys(this.errors) as Error[])
103
- .filter(f => this.errors[f] && this.errorMessages[f])
104
- .map(k => this.errorMessages[k]);
103
+ .filter((f) => this.errors[f] && this.errorMessages[f])
104
+ .map((k) => this.errorMessages[k]);
105
105
  },
106
106
  },
107
107
 
@@ -364,7 +364,7 @@ export default Vue.extend({
364
364
  * Remove an item from items list
365
365
  */
366
366
  deleteItem(item?: string) {
367
- const items = this.items.filter(f => f !== item);
367
+ const items = this.items.filter((f) => f !== item);
368
368
 
369
369
  this.updateItems(items);
370
370
  },
@@ -1,6 +1,6 @@
1
1
  annotations:
2
2
  catalog.cattle.io/certified: rancher # Any application we are adding as a helm chart
3
- catalog.cattle.io/kube-version: '>= 1.16.0-0 < 1.26.0-0'
3
+ catalog.cattle.io/kube-version: '>= 1.16.0-0 < 1.28.0-0'
4
4
  catalog.cattle.io/namespace: cattle-ui-plugin-system # Must prefix with cattle- and suffix with -system=
5
5
  catalog.cattle.io/os: linux
6
6
  catalog.cattle.io/permits-os: linux, windows
@@ -22,10 +22,10 @@ export const state = function() {
22
22
  };
23
23
 
24
24
  export const getters = {
25
- showing: state => state.show,
26
- elem: state => state.elem,
27
- event: state => state.event,
28
- resources: state => state.resources,
25
+ showing: (state) => state.show,
26
+ elem: (state) => state.elem,
27
+ event: (state) => state.event,
28
+ resources: (state) => state.resources,
29
29
 
30
30
  options(state) {
31
31
  let selected = state.resources;
package/store/auth.js CHANGED
@@ -160,7 +160,10 @@ export const actions = {
160
160
  return findBy(authConfigs, 'id', id);
161
161
  },
162
162
 
163
- setNonce({ dispatch }, opt) {
163
+ /**
164
+ * Create the basic json object used for the nonce (this includes the random nonce/state)
165
+ */
166
+ createNonce(ctx, opt) {
164
167
  const out = { nonce: randomStr(16), to: 'vue' };
165
168
 
166
169
  if ( opt.test ) {
@@ -171,7 +174,15 @@ export const actions = {
171
174
  out.provider = opt.provider;
172
175
  }
173
176
 
174
- const strung = JSON.stringify(out);
177
+ return out;
178
+ },
179
+
180
+ /**
181
+ * Save nonce details. Information it contains will be used to validate auth requests/responses
182
+ * Note - this may be structurally different than the nonce we encode and send
183
+ */
184
+ saveNonce(ctx, opt) {
185
+ const strung = JSON.stringify(opt);
175
186
 
176
187
  this.$cookies.set(KEY, strung, {
177
188
  path: '/',
@@ -182,6 +193,15 @@ export const actions = {
182
193
  return strung;
183
194
  },
184
195
 
196
+ /**
197
+ * Convert the nonce into something we can send
198
+ */
199
+ encodeNonce(ctx, nonce) {
200
+ const stringify = JSON.stringify(nonce);
201
+
202
+ return base64Encode(stringify, 'url');
203
+ },
204
+
185
205
  async redirectTo({ state, commit, dispatch }, opt = {}) {
186
206
  const provider = opt.provider;
187
207
  let redirectUrl = opt.redirectUrl;
@@ -200,10 +220,16 @@ export const actions = {
200
220
  returnToUrl = `${ window.location.origin }/verify-auth-azure`;
201
221
  }
202
222
 
203
- const nonce = await dispatch('setNonce', opt);
223
+ // The base nonce that will be sent server way
224
+ const baseNonce = opt.nonce || await dispatch('createNonce', opt);
225
+
226
+ // Save a possibly expanded nonce
227
+ await dispatch('saveNonce', opt.persistNonce || baseNonce);
228
+ // Convert the base nonce in to something we can transmit
229
+ const encodedNonce = await dispatch('encodeNonce', baseNonce);
204
230
 
205
231
  const fromQuery = unescape(parseUrl(redirectUrl).query?.[GITHUB_SCOPE] || '');
206
- const scopes = fromQuery.split(/[, ]+/).filter(x => !!x);
232
+ const scopes = fromQuery.split(/[, ]+/).filter((x) => !!x);
207
233
 
208
234
  if (BASE_SCOPES[provider]) {
209
235
  addObjects(scopes, BASE_SCOPES[provider]);
@@ -216,8 +242,8 @@ export const actions = {
216
242
  let url = removeParam(redirectUrl, GITHUB_SCOPE);
217
243
 
218
244
  const params = {
219
- [GITHUB_SCOPE]: scopes.join(','),
220
- [GITHUB_NONCE]: base64Encode(nonce, 'url')
245
+ [GITHUB_SCOPE]: scopes.join(opt.scopesJoinChar || ','), // Some providers won't accept comma separated scopes
246
+ [GITHUB_NONCE]: encodedNonce
221
247
  };
222
248
 
223
249
  if (!url.includes(GITHUB_REDIRECT)) {
@@ -249,9 +275,16 @@ export const actions = {
249
275
  return ERR_NONCE;
250
276
  }
251
277
 
278
+ const body = { code };
279
+
280
+ // If the request came with a pkce code ensure we also sent that in the verify
281
+ if (parsed.pkceCodeVerifier) {
282
+ body.code_verifier = parsed.pkceCodeVerifier;
283
+ }
284
+
252
285
  return dispatch('login', {
253
286
  provider,
254
- body: { code }
287
+ body
255
288
  });
256
289
  },
257
290
 
package/store/aws.js CHANGED
@@ -190,7 +190,7 @@ export const actions = {
190
190
  const res = await client[cmd](opt);
191
191
 
192
192
  if ( !key ) {
193
- key = Object.keys(res).find(x => isArray(res[x]));
193
+ key = Object.keys(res).find((x) => isArray(res[x]));
194
194
  }
195
195
 
196
196
  addObjects(out, res[key]);
package/store/catalog.js CHANGED
@@ -75,7 +75,7 @@ export const getters = {
75
75
  },
76
76
 
77
77
  charts(state, getters, rootState, rootGetters) {
78
- const repoKeys = getters.repos.map(x => x._key);
78
+ const repoKeys = getters.repos.map((x) => x._key);
79
79
  let cluster = rootGetters['currentCluster'];
80
80
 
81
81
  if ( rootGetters['currentProduct']?.inStore === 'management' ) {
@@ -120,7 +120,7 @@ export const getters = {
120
120
  });
121
121
 
122
122
  if ( includeHidden === false ) {
123
- matching = matching.filter(x => !x.hidden);
123
+ matching = matching.filter((x) => !x.hidden);
124
124
  }
125
125
 
126
126
  if ( !matching.length ) {
@@ -176,7 +176,7 @@ export const getters = {
176
176
  name = name.toLowerCase().trim();
177
177
  chartVersion = normalizeVersion(chartVersion);
178
178
 
179
- const matching = getters.charts.filter(chart => chart.chartName.toLowerCase().trim() === name);
179
+ const matching = getters.charts.filter((chart) => chart.chartName.toLowerCase().trim() === name);
180
180
 
181
181
  if ( !matching.length ) {
182
182
  return;
@@ -192,9 +192,9 @@ export const getters = {
192
192
  if ( wantVersion === 'latest' ) {
193
193
  version = chart.versions[0];
194
194
  } else if ( wantVersion === 'match' || wantVersion === 'matching' ) {
195
- version = chart.versions.find(v => normalizeVersion(v.version) === chartVersion);
195
+ version = chart.versions.find((v) => normalizeVersion(v.version) === chartVersion);
196
196
  } else {
197
- version = chart.versions.find(v => normalizeVersion(v.version) === wantVersion);
197
+ version = chart.versions.find((v) => normalizeVersion(v.version) === wantVersion);
198
198
  }
199
199
 
200
200
  if ( version ) {
@@ -205,7 +205,7 @@ export const getters = {
205
205
 
206
206
  versionProviding(state, getters) {
207
207
  return ({ repoType, repoName, gvr }) => {
208
- const matching = getters.charts.filter(chart => chart.provides.includes(gvr) );
208
+ const matching = getters.charts.filter((chart) => chart.provides.includes(gvr) );
209
209
 
210
210
  if ( !matching.length ) {
211
211
  return;
@@ -215,7 +215,7 @@ export const getters = {
215
215
  preferSameRepo(matching, repoType, repoName);
216
216
  }
217
217
 
218
- const version = matching[0].versions.find(version => version.annotations?.[CATALOG_ANNOTATIONS.PROVIDES] === gvr);
218
+ const version = matching[0].versions.find((version) => version.annotations?.[CATALOG_ANNOTATIONS.PROVIDES] === gvr);
219
219
 
220
220
  if ( version ) {
221
221
  return clone(version);
@@ -274,7 +274,7 @@ export const getters = {
274
274
  const allPaths = require.context('@shell/chart', true, /\.vue$/).keys();
275
275
 
276
276
  allPaths
277
- .filter(path => path.startsWith(stepsPath))
277
+ .filter((path) => path.startsWith(stepsPath))
278
278
  .forEach((path) => {
279
279
  try {
280
280
  steps.push({
@@ -354,6 +354,7 @@ export const actions = {
354
354
 
355
355
  // As per comment above, when there are no clusters this will be management. Store it such that it can be used for those cases
356
356
  commit('setInStore', inStore);
357
+ hash.cluster = hash.cluster.filter((repo) => !(repo?.metadata?.annotations?.[CATALOG_ANNOTATIONS.HIDDEN_REPO] === 'true'));
357
358
 
358
359
  commit('setRepos', hash);
359
360
 
@@ -399,7 +400,7 @@ export const actions = {
399
400
  },
400
401
 
401
402
  async refresh({ getters, commit, dispatch }) {
402
- const promises = getters.repos.map(x => x.refresh());
403
+ const promises = getters.repos.map((x) => x.refresh());
403
404
 
404
405
  // @TODO wait for repo state to indicate they're done once the API has that
405
406
 
@@ -567,7 +568,7 @@ function normalizeVersion(v) {
567
568
  }
568
569
 
569
570
  function filterCategories(categories) {
570
- categories = (categories || []).map(x => normalizeCategory(x));
571
+ categories = (categories || []).map((x) => normalizeCategory(x));
571
572
 
572
573
  const out = [];
573
574
 
@@ -650,7 +651,7 @@ export function filterAndArrangeCharts(charts, {
650
651
 
651
652
  if ( searchQuery ) {
652
653
  // The search filter doesn't match
653
- const searchTokens = searchQuery.split(/\s*[, ]\s*/).map(x => ensureRegex(x, false));
654
+ const searchTokens = searchQuery.split(/\s*[, ]\s*/).map((x) => ensureRegex(x, false));
654
655
 
655
656
  for ( const token of searchTokens ) {
656
657
  const chartDescription = c.chartDescription || '';
@@ -39,7 +39,7 @@ export const mutations = {
39
39
  };
40
40
 
41
41
  export const getters = {
42
- fromCache: state => ({ credentialId, key }) => {
42
+ fromCache: (state) => ({ credentialId, key }) => {
43
43
  return state.cache[credentialId]?.[key];
44
44
  },
45
45
  };
@@ -64,8 +64,8 @@ export const actions = {
64
64
  const regions = await dispatch('cachedCommand', { credentialId, command: 'regions' });
65
65
  const sizes = await dispatch('cachedCommand', { credentialId, command: 'sizes' });
66
66
 
67
- const regionInfo = regions.regions.find(x => x.slug === region);
68
- const available = sizes.sizes.filter(size => regionInfo.sizes.includes(size.slug)).map((size) => {
67
+ const regionInfo = regions.regions.find((x) => x.slug === region);
68
+ const available = sizes.sizes.filter((size) => regionInfo.sizes.includes(size.slug)).map((size) => {
69
69
  const match = size.slug.match(/^(so|gd|g|c|m|s).*-/);
70
70
  const plan = match ? match[1] : (size.slug.includes('-') ? 'standard' : 'other');
71
71
 
@@ -81,7 +81,7 @@ export const actions = {
81
81
  out.label = rootGetters['i18n/t']('cluster.machineConfig.digitalocean.sizeLabel', out);
82
82
 
83
83
  return out;
84
- }).filter(size => size.plan !== 'other');
84
+ }).filter((size) => size.plan !== 'other');
85
85
 
86
86
  return sortBy(available, ['planSort', 'memoryGb', 'vcpus', 'disk']);
87
87
  },
package/store/features.js CHANGED
@@ -30,6 +30,7 @@ export const RKE2 = create('rke2', true);
30
30
  export const UNSUPPORTED_STORAGE_DRIVERS = create('unsupported-storage-drivers', false);
31
31
  export const FLEET = create('continuous-delivery', true);
32
32
  export const HARVESTER = create('harvester', true);
33
+ export const HARVESTER_CONTAINER = create('harvester-baremetal-container-workload', false);
33
34
 
34
35
  // Not currently used.. no point defining ones we don't use
35
36
  // export const EMBEDDED_CLUSTER_API = create('embedded-cluster-api', true);