@rancher/shell 0.3.14 → 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 (397) hide show
  1. package/assets/images/providers/nutanix.svg +1 -0
  2. package/assets/translations/en-us.yaml +83 -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 +4 -3
  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 -9
  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/pkg/files/index.ts +1 -1
  128. package/detail/cis.cattle.io.clusterscan.vue +3 -3
  129. package/detail/fleet.cattle.io.bundle.vue +1 -1
  130. package/detail/helm.cattle.io.projecthelmchart.vue +16 -29
  131. package/detail/management.cattle.io.user.vue +12 -12
  132. package/detail/namespace.vue +4 -4
  133. package/detail/networking.k8s.io.ingress.vue +3 -3
  134. package/detail/node.vue +2 -2
  135. package/detail/provisioning.cattle.io.cluster.vue +9 -10
  136. package/detail/service.vue +1 -1
  137. package/detail/workload/index.vue +3 -3
  138. package/dialog/AddProjectMemberDialog.vue +2 -2
  139. package/dialog/DrainNode.vue +1 -1
  140. package/dialog/GenericPrompt.vue +9 -5
  141. package/dialog/RotateEncryptionKeyDialog.vue +2 -2
  142. package/dialog/ScaleMachineDownDialog.vue +2 -2
  143. package/edit/auth/azuread.vue +3 -3
  144. package/edit/autoscaling.horizontalpodautoscaler/index.vue +5 -5
  145. package/edit/cis.cattle.io.clusterscan.vue +5 -5
  146. package/edit/cloudcredential.vue +4 -4
  147. package/edit/constraints.gatekeeper.sh.constraint/NamespaceList.vue +1 -1
  148. package/edit/constraints.gatekeeper.sh.constraint/index.vue +4 -4
  149. package/edit/fleet.cattle.io.gitrepo.vue +6 -6
  150. package/edit/helm.cattle.io.projecthelmchart.vue +3 -3
  151. package/edit/logging-flow/index.vue +4 -4
  152. package/edit/logging.banzaicloud.io.output/index.vue +3 -3
  153. package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +1 -1
  154. package/edit/logging.banzaicloud.io.output/providers/forward.vue +1 -1
  155. package/edit/logging.banzaicloud.io.output/providers/logz.vue +1 -1
  156. package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +1 -1
  157. package/edit/logging.banzaicloud.io.output/providers/redis.vue +1 -1
  158. package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +1 -1
  159. package/edit/management.cattle.io.clusterroletemplatebinding.vue +1 -1
  160. package/edit/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +1 -1
  161. package/edit/management.cattle.io.project.vue +3 -3
  162. package/edit/management.cattle.io.projectroletemplatebinding.vue +2 -2
  163. package/edit/management.cattle.io.setting.vue +1 -1
  164. package/edit/management.cattle.io.user.vue +2 -2
  165. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +2 -2
  166. package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
  167. package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +1 -1
  168. package/edit/monitoring.coreos.com.alertmanagerconfig/types/opsgenie.vue +3 -3
  169. package/edit/monitoring.coreos.com.prometheusrule/GroupRules.vue +5 -5
  170. package/edit/monitoring.coreos.com.prometheusrule/duration.js +1 -1
  171. package/edit/monitoring.coreos.com.receiver/auth.vue +2 -2
  172. package/edit/monitoring.coreos.com.receiver/tls.vue +3 -4
  173. package/edit/monitoring.coreos.com.receiver/types/__tests__/email.test.ts +53 -0
  174. package/edit/monitoring.coreos.com.receiver/types/email.vue +2 -0
  175. package/edit/monitoring.coreos.com.receiver/types/opsgenie.vue +3 -3
  176. package/edit/monitoring.coreos.com.receiver/types/webhook.add.vue +1 -1
  177. package/edit/monitoring.coreos.com.route.vue +2 -2
  178. package/edit/namespace.vue +21 -13
  179. package/edit/networking.k8s.io.ingress/Certificate.vue +2 -2
  180. package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
  181. package/edit/networking.k8s.io.ingress/RulePath.vue +2 -2
  182. package/edit/networking.k8s.io.ingress/Rules.vue +2 -2
  183. package/edit/networking.k8s.io.ingress/index.vue +4 -4
  184. package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +3 -3
  185. package/edit/networking.k8s.io.networkpolicy/index.vue +1 -1
  186. package/edit/persistentvolume/index.vue +4 -4
  187. package/edit/persistentvolumeclaim.vue +3 -3
  188. package/edit/provisioning.cattle.io.cluster/RegistryMirrors.vue +1 -1
  189. package/edit/provisioning.cattle.io.cluster/SelectCredential.vue +2 -2
  190. package/edit/provisioning.cattle.io.cluster/import.vue +2 -2
  191. package/edit/provisioning.cattle.io.cluster/index.vue +7 -7
  192. package/edit/provisioning.cattle.io.cluster/rke2.vue +28 -29
  193. package/edit/resources.cattle.io.backup.vue +2 -2
  194. package/edit/resources.cattle.io.restore.vue +3 -3
  195. package/edit/secret/generic.vue +1 -1
  196. package/edit/secret/index.vue +3 -3
  197. package/edit/service.vue +3 -21
  198. package/edit/serviceaccount.vue +2 -2
  199. package/edit/storage.k8s.io.storageclass/index.vue +4 -4
  200. package/edit/storage.k8s.io.storageclass/provisioners/driver.harvesterhci.io.vue +1 -1
  201. package/edit/token.vue +5 -5
  202. package/edit/workload/index.vue +1 -1
  203. package/edit/workload/mixins/workload.js +8 -8
  204. package/edit/workload/storage/ContainerMountPaths.vue +9 -9
  205. package/edit/workload/storage/Mount.vue +2 -2
  206. package/edit/workload/storage/csi/index.vue +1 -1
  207. package/edit/workload/storage/ephemeralVolume/index.vue +1 -1
  208. package/edit/workload/storage/index.vue +6 -6
  209. package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +2 -2
  210. package/initialize/client.js +8 -8
  211. package/initialize/index.js +1 -4
  212. package/layouts/default.vue +38 -11
  213. package/list/catalog.cattle.io.clusterrepo.vue +9 -1
  214. package/list/cis.cattle.io.clusterscan.vue +1 -1
  215. package/list/fleet.cattle.io.cluster.vue +2 -2
  216. package/list/group.principal.vue +1 -1
  217. package/list/helm.cattle.io.projecthelmchart.vue +2 -2
  218. package/list/management.cattle.io.cluster.vue +1 -1
  219. package/list/management.cattle.io.feature.vue +1 -1
  220. package/list/management.cattle.io.user.vue +2 -2
  221. package/list/node.vue +5 -5
  222. package/list/provisioning.cattle.io.cluster.vue +4 -5
  223. package/machine-config/amazonec2.vue +2 -2
  224. package/machine-config/digitalocean.vue +4 -4
  225. package/machine-config/linode.vue +4 -4
  226. package/machine-config/vmwarevsphere.vue +12 -12
  227. package/middleware/authenticated.js +7 -6
  228. package/mixins/brand.js +1 -1
  229. package/mixins/chart.js +6 -6
  230. package/mixins/fetch.client.js +2 -2
  231. package/mixins/form-validation.js +7 -7
  232. package/mixins/resource-fetch-namespaced.js +1 -1
  233. package/mixins/resource-fetch.js +2 -2
  234. package/models/apps.statefulset.js +2 -2
  235. package/models/batch.cronjob.js +1 -1
  236. package/models/catalog.cattle.io.app.js +4 -4
  237. package/models/cis.cattle.io.clusterscan.js +1 -1
  238. package/models/cis.cattle.io.clusterscanbenchmark.js +1 -1
  239. package/models/cis.cattle.io.clusterscanreport.js +1 -1
  240. package/models/cloudcredential.js +1 -1
  241. package/models/cluster/node.js +5 -5
  242. package/models/cluster.x-k8s.io.machinedeployment.js +2 -2
  243. package/models/fleet.cattle.io.gitrepo.js +3 -3
  244. package/models/group.principal.js +4 -4
  245. package/models/helm.cattle.io.projecthelmchart.js +2 -2
  246. package/models/logging.banzaicloud.io.clusterflow.js +2 -2
  247. package/models/logging.banzaicloud.io.flow.js +5 -5
  248. package/models/logging.banzaicloud.io.output.js +2 -2
  249. package/models/management.cattle.io.cluster.js +10 -14
  250. package/models/management.cattle.io.globalrole.js +4 -4
  251. package/models/management.cattle.io.node.js +2 -2
  252. package/models/management.cattle.io.nodepool.js +3 -3
  253. package/models/management.cattle.io.nodetemplate.js +4 -4
  254. package/models/management.cattle.io.project.js +2 -2
  255. package/models/management.cattle.io.roletemplate.js +1 -1
  256. package/models/management.cattle.io.setting.js +1 -1
  257. package/models/management.cattle.io.user.js +5 -5
  258. package/models/monitoring.coreos.com.receiver.js +9 -9
  259. package/models/namespace.js +1 -1
  260. package/models/networking.k8s.io.ingress.js +5 -5
  261. package/models/persistentvolume.js +3 -3
  262. package/models/pod.js +3 -3
  263. package/models/provisioning.cattle.io.cluster.js +39 -27
  264. package/models/rbac.authorization.k8s.io.clusterrole.js +2 -2
  265. package/models/rbac.authorization.k8s.io.role.js +3 -3
  266. package/models/secret.js +1 -1
  267. package/models/service.js +2 -2
  268. package/models/storage.k8s.io.storageclass.js +2 -2
  269. package/models/token.js +1 -1
  270. package/models/workload.js +6 -6
  271. package/models/workload.service.js +5 -21
  272. package/package.json +2 -1
  273. package/pages/about.vue +9 -9
  274. package/pages/account/index.vue +2 -2
  275. package/pages/auth/login.vue +15 -12
  276. package/pages/auth/verify.vue +6 -0
  277. package/pages/c/_cluster/apps/charts/index.vue +4 -4
  278. package/pages/c/_cluster/apps/charts/install.vue +28 -20
  279. package/pages/c/_cluster/auth/roles/index.vue +9 -9
  280. package/pages/c/_cluster/explorer/index.vue +41 -16
  281. package/pages/c/_cluster/explorer/tools/index.vue +8 -8
  282. package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +1 -1
  283. package/pages/c/_cluster/fleet/index.vue +11 -11
  284. package/pages/c/_cluster/monitoring/index.vue +1 -1
  285. package/pages/c/_cluster/settings/links.vue +3 -3
  286. package/pages/c/_cluster/settings/performance.vue +1 -1
  287. package/pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue +6 -6
  288. package/pages/c/_cluster/uiplugins/CatalogList/index.vue +3 -3
  289. package/pages/c/_cluster/uiplugins/InstallDialog.vue +3 -3
  290. package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +1 -1
  291. package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +3 -3
  292. package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +6 -6
  293. package/pages/c/_cluster/uiplugins/UninstallDialog.vue +4 -4
  294. package/pages/c/_cluster/uiplugins/index.vue +22 -19
  295. package/pages/diagnostic.vue +6 -6
  296. package/pages/home.vue +3 -3
  297. package/pages/prefs.vue +2 -2
  298. package/pages/rio/mesh.vue +3 -3
  299. package/pages/support/index.vue +10 -1
  300. package/pkg/auto-import.js +1 -1
  301. package/pkg/tsconfig.json +1 -0
  302. package/pkg/vue.config.js +1 -1
  303. package/plugins/axios.js +1 -1
  304. package/plugins/clean-html-directive.js +1 -1
  305. package/plugins/dashboard-store/__tests__/mutations.spec.js +4 -4
  306. package/plugins/dashboard-store/actions.js +4 -4
  307. package/plugins/dashboard-store/getters.js +1 -1
  308. package/plugins/dashboard-store/index.js +1 -1
  309. package/plugins/dashboard-store/mutations.js +2 -2
  310. package/plugins/dashboard-store/resource-class.js +8 -8
  311. package/plugins/i18n.js +1 -1
  312. package/plugins/plugin.js +5 -1
  313. package/plugins/steve/actions.js +3 -3
  314. package/plugins/steve/getters.js +3 -3
  315. package/plugins/steve/hybrid-class.js +1 -1
  316. package/plugins/steve/mutations.js +1 -1
  317. package/plugins/steve/performanceTesting.js +1 -1
  318. package/plugins/steve/resourceWatcher.js +1 -1
  319. package/plugins/steve/subscribe.js +6 -6
  320. package/plugins/steve/worker/web-worker.basic.js +1 -1
  321. package/promptRemove/management.cattle.io.project.vue +3 -3
  322. package/promptRemove/mixin/roleDeletionCheck.js +4 -4
  323. package/promptRemove/pod.vue +1 -1
  324. package/rancher-components/StringList/StringList.vue +34 -50
  325. package/rancher-components/components/Form/Checkbox/Checkbox.test.ts +2 -2
  326. package/rancher-components/components/Form/Checkbox/Checkbox.vue +1 -1
  327. package/rancher-components/components/Form/Radio/RadioButton.test.ts +1 -1
  328. package/rancher-components/components/Form/Radio/RadioButton.vue +2 -2
  329. package/rancher-components/components/Form/Radio/RadioGroup.vue +2 -2
  330. package/rancher-components/components/Form/TextArea/TextAreaAutoGrow.vue +1 -0
  331. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.test.ts +1 -1
  332. package/rancher-components/components/Form/ToggleSwitch/ToggleSwitch.vue +7 -7
  333. package/rancher-components/components/StringList/StringList.test.ts +10 -9
  334. package/rancher-components/components/StringList/StringList.vue +5 -5
  335. package/scripts/extension/helm/charts/ui-plugin-server/Chart.yaml +1 -1
  336. package/store/action-menu.js +4 -4
  337. package/store/auth.js +40 -7
  338. package/store/aws.js +1 -1
  339. package/store/catalog.js +12 -11
  340. package/store/digitalocean.js +4 -4
  341. package/store/features.js +1 -0
  342. package/store/github.js +70 -213
  343. package/store/gitlab.js +159 -0
  344. package/store/growl.js +1 -1
  345. package/store/i18n.js +7 -7
  346. package/store/index.js +63 -22
  347. package/store/linode.js +1 -1
  348. package/store/plugins.js +5 -5
  349. package/store/pnap.js +1 -1
  350. package/store/prefs.js +6 -6
  351. package/store/resource-fetch.js +3 -3
  352. package/store/type-map.js +61 -42
  353. package/store/uiplugins.ts +2 -1
  354. package/store/wm.js +5 -4
  355. package/tsconfig.default.json +10 -0
  356. package/tsconfig.json +2 -9
  357. package/types/shell/index.d.ts +21 -13
  358. package/utils/__tests__/version.test.ts +28 -0
  359. package/utils/alertmanagerconfig.js +4 -4
  360. package/utils/array.ts +4 -4
  361. package/utils/async.ts +1 -1
  362. package/utils/auth.js +3 -3
  363. package/utils/axios.js +5 -5
  364. package/utils/cluster.js +4 -3
  365. package/utils/color.js +10 -0
  366. package/utils/create-yaml.js +4 -4
  367. package/utils/crypto/browserHashUtils.js +1 -1
  368. package/utils/crypto/browserMd5.js +1 -1
  369. package/utils/crypto/browserSha1.js +1 -1
  370. package/utils/crypto/browserSha256.js +1 -1
  371. package/utils/crypto/index.js +3 -3
  372. package/utils/favicon.js +2 -3
  373. package/utils/gatekeeper/util.js +3 -3
  374. package/utils/gc/gc.ts +2 -2
  375. package/utils/git.ts +92 -0
  376. package/utils/grafana.js +4 -4
  377. package/utils/monitoring.js +2 -2
  378. package/utils/nuxt.js +2 -2
  379. package/utils/object.js +5 -5
  380. package/utils/pod-security-admission.ts +1 -1
  381. package/utils/projectAndNamespaceFiltering.utils.ts +1 -1
  382. package/utils/select.js +2 -2
  383. package/utils/selector.js +2 -2
  384. package/utils/settings.ts +17 -2
  385. package/utils/socket.js +30 -6
  386. package/utils/sort.js +1 -1
  387. package/utils/string.js +1 -1
  388. package/utils/url.ts +1 -1
  389. package/utils/validators/formRules/index.ts +3 -3
  390. package/utils/validators/role-template.js +4 -4
  391. package/utils/version.js +14 -1
  392. package/vue.config.js +19 -13
  393. package/components/.DS_Store +0 -0
  394. package/components/__tests__/.DS_Store +0 -0
  395. package/components/form/GithubPicker.vue +0 -390
  396. package/creators/pkg/package-lock.json +0 -37
  397. package/yarn-error.log +0 -196
@@ -1,11 +1,11 @@
1
1
  <script>
2
- import AsyncButton from '@shell/components/AsyncButton';
2
+ import AsyncButton, { ASYNC_BUTTON_STATES } from '@shell/components/AsyncButton';
3
3
  import IconMessage from '@shell/components/IconMessage.vue';
4
4
  import { CATALOG, MANAGEMENT } from '@shell/config/types';
5
5
  import { CATALOG as CATALOG_ANNOTATIONS } from '@shell/config/labels-annotations';
6
6
  import Dialog from '@shell/components/Dialog.vue';
7
7
  import Checkbox from '@components/Form/Checkbox/Checkbox.vue';
8
- import { ASYNC_BUTTON_STATES } from '@shell/components/AsyncButton.vue';
8
+
9
9
  import {
10
10
  UI_PLUGIN_NAMESPACE,
11
11
  UI_PLUGIN_CHARTS,
@@ -30,7 +30,7 @@ export default {
30
30
  const found = [];
31
31
 
32
32
  UI_PLUGIN_CHARTS.forEach((c) => {
33
- const f = charts.find(chart => chart.repoName === UI_PLUGIN_OPERATOR_REPO_NAME & chart.chartName === c);
33
+ const f = charts.find((chart) => chart.repoName === UI_PLUGIN_OPERATOR_REPO_NAME & chart.chartName === c);
34
34
 
35
35
  if (f) {
36
36
  found.push(f);
@@ -72,7 +72,7 @@ export default {
72
72
  // Look to see if the Rancher UI Plugins repository is already installed
73
73
  const repos = this.$store.getters['catalog/repos'];
74
74
 
75
- return !!repos.find(r => r.name === UI_PLUGINS_REPO_NAME);
75
+ return !!repos.find((r) => r.name === UI_PLUGINS_REPO_NAME);
76
76
  }
77
77
  },
78
78
 
@@ -143,7 +143,7 @@ export default {
143
143
 
144
144
  await this.installPluginCharts();
145
145
 
146
- await new Promise(resolve => setTimeout(resolve, 5000));
146
+ await new Promise((resolve) => setTimeout(resolve, 5000));
147
147
 
148
148
  this.buttonState = this.errors.length > 0 ? ASYNC_BUTTON_STATES.ERROR : ASYNC_BUTTON_STATES.ACTION;
149
149
 
@@ -183,7 +183,7 @@ export default {
183
183
  }
184
184
  }
185
185
 
186
- return new Promise(resolve => setTimeout(resolve, 2000));
186
+ return new Promise((resolve) => setTimeout(resolve, 2000));
187
187
  }
188
188
  }
189
189
  };
@@ -44,9 +44,9 @@ export default {
44
44
  const pluginApps = apps.filter((app) => {
45
45
  if (plugin.catalog && app.namespace === UI_PLUGIN_NAMESPACE) {
46
46
  // Find the related apps from the deployed helm repository
47
- const charts = this.allCharts.filter(chart => chart.repoName === plugin.repo?.metadata?.name);
47
+ const charts = this.allCharts.filter((chart) => chart.repoName === plugin.repo?.metadata?.name);
48
48
 
49
- return charts.some(chart => chart.chartName === app.metadata.name);
49
+ return charts.some((chart) => chart.chartName === app.metadata.name);
50
50
  }
51
51
 
52
52
  if (app.namespace === UI_PLUGIN_NAMESPACE && app.name === plugin.name) {
@@ -62,7 +62,7 @@ export default {
62
62
 
63
63
  if (pluginApps.length) {
64
64
  try {
65
- pluginApps.forEach(app => app.remove());
65
+ pluginApps.forEach((app) => app.remove());
66
66
  } catch (e) {
67
67
  this.$store.dispatch('growl/error', {
68
68
  title: this.t('plugins.error.generic'),
@@ -93,7 +93,7 @@ export default {
93
93
 
94
94
  for (const resource of Object.keys(hash)) {
95
95
  if (hash[resource]) {
96
- hash[resource].forEach(r => r.remove());
96
+ hash[resource].forEach((r) => r.remove());
97
97
  }
98
98
  }
99
99
  }
@@ -87,7 +87,7 @@ export default {
87
87
  }
88
88
  }
89
89
 
90
- hash.load = await this.$store.dispatch('catalog/load');
90
+ hash.load = await this.$store.dispatch('catalog/load', { reset: true });
91
91
 
92
92
  if (this.$store.getters['management/schemaFor'](CATALOG.OPERATION)) {
93
93
  hash.helmOps = await this.$store.dispatch('management/findAll', { type: CATALOG.OPERATION });
@@ -175,11 +175,11 @@ export default {
175
175
 
176
176
  switch (this.view) {
177
177
  case 'installed':
178
- return all.filter(p => !!p.installed || !!p.installing);
178
+ return all.filter((p) => !!p.installed || !!p.installing);
179
179
  case 'updates':
180
180
  return this.updates;
181
181
  case 'available':
182
- return all.filter(p => !p.installed);
182
+ return all.filter((p) => !p.installed);
183
183
  default:
184
184
  return all;
185
185
  }
@@ -195,14 +195,14 @@ export default {
195
195
  },
196
196
 
197
197
  updates() {
198
- return this.available.filter(plugin => !!plugin.upgrade);
198
+ return this.available.filter((plugin) => !!plugin.upgrade);
199
199
  },
200
200
 
201
201
  available() {
202
- let all = this.charts.filter(c => isUIPlugin(c));
202
+ let all = this.charts.filter((c) => isUIPlugin(c));
203
203
 
204
204
  // Filter out hidden charts
205
- all = all.filter(c => !uiPluginHasAnnotation(c, CATALOG_ANNOTATIONS.HIDDEN, 'true'));
205
+ all = all.filter((c) => !uiPluginHasAnnotation(c, CATALOG_ANNOTATIONS.HIDDEN, 'true'));
206
206
 
207
207
  all = all.map((chart) => {
208
208
  // Label can be overridden by chart annotation
@@ -223,13 +223,13 @@ export default {
223
223
  item.chart = chart;
224
224
 
225
225
  // Filter the versions available to install (plugins-api version and current dashboard version)
226
- item.installableVersions = item.versions.filter(version => isSupportedChartVersion(version) && isChartVersionAvailableForInstall(version, this.rancherVersion));
226
+ item.installableVersions = item.versions.filter((version) => isSupportedChartVersion(version) && isChartVersionAvailableForInstall(version, this.rancherVersion));
227
227
 
228
228
  // add prop to version object if version is compatible with the current dashboard version
229
- item.versions = item.versions.map(version => isChartVersionAvailableForInstall(version, this.rancherVersion, true));
229
+ item.versions = item.versions.map((version) => isChartVersionAvailableForInstall(version, this.rancherVersion, true));
230
230
 
231
231
  const latestCompatible = item.installableVersions?.[0];
232
- const latestNotCompatible = item.versions.find(version => !version.isCompatibleWithUi);
232
+ const latestNotCompatible = item.versions.find((version) => !version.isCompatibleWithUi);
233
233
 
234
234
  if (latestCompatible) {
235
235
  item.displayVersion = latestCompatible.version;
@@ -251,11 +251,11 @@ export default {
251
251
  });
252
252
 
253
253
  // Remove charts with no installable versions
254
- all = all.filter(c => c.versions.length > 0);
254
+ all = all.filter((c) => c.versions.length > 0);
255
255
 
256
256
  // Check that all of the loaded plugins are represented
257
257
  this.uiplugins.forEach((p) => {
258
- const chart = all.find(c => c.name === p.name);
258
+ const chart = all.find((c) => c.name === p.name);
259
259
 
260
260
  if (!chart) {
261
261
  // A plugin is loaded, but there is no chart, so add an item so that it shows up
@@ -279,7 +279,7 @@ export default {
279
279
 
280
280
  // Go through the CRs for the plugins and wire them into the catalog
281
281
  this.plugins.forEach((p) => {
282
- const chart = all.find(c => c.name === p.name);
282
+ const chart = all.find((c) => c.name === p.name);
283
283
 
284
284
  // Plugin is a container image, do not add to charts
285
285
  if (p.metadata?.labels?.[UI_PLUGIN_LABELS.CATALOG_IMAGE]) {
@@ -319,7 +319,7 @@ export default {
319
319
 
320
320
  // Merge in the plugin load errors
321
321
  Object.keys(this.uiErrors).forEach((e) => {
322
- const chart = all.find(c => c.name === e);
322
+ const chart = all.find((c) => c.name === e);
323
323
 
324
324
  if (chart) {
325
325
  const error = this.uiErrors[e];
@@ -334,7 +334,7 @@ export default {
334
334
 
335
335
  // Merge in the plugin load errors from help ops
336
336
  Object.keys(this.errors).forEach((e) => {
337
- const chart = all.find(c => c.name === e);
337
+ const chart = all.find((c) => c.name === e);
338
338
 
339
339
  if (chart) {
340
340
  chart.helmError = !!this.errors[e];
@@ -353,7 +353,7 @@ export default {
353
353
  },
354
354
 
355
355
  pluginsFromCatalogImage() {
356
- return this.plugins.filter(p => p.metadata?.labels?.[UI_PLUGIN_LABELS.CATALOG_IMAGE]);
356
+ return this.plugins.filter((p) => p.metadata?.labels?.[UI_PLUGIN_LABELS.CATALOG_IMAGE]);
357
357
  }
358
358
  },
359
359
 
@@ -368,7 +368,7 @@ export default {
368
368
 
369
369
  // Go through the installed plugins
370
370
  (this.available || []).forEach((plugin) => {
371
- const op = pluginOps.find(o => o.status?.releaseName === plugin.name);
371
+ const op = pluginOps.find((o) => o.status?.releaseName === plugin.name);
372
372
 
373
373
  if (op) {
374
374
  const active = op.metadata.state?.transitioning;
@@ -395,7 +395,7 @@ export default {
395
395
 
396
396
  plugins(neu, old) {
397
397
  const installed = this.$store.getters['uiplugins/plugins'];
398
- const shouldHaveLoaded = (installed || []).filter(p => !this.uiErrors[p.name] && !p.builtin);
398
+ const shouldHaveLoaded = (installed || []).filter((p) => !this.uiErrors[p.name] && !p.builtin);
399
399
  let changes = 0;
400
400
 
401
401
  // Did the user remove an extension
@@ -404,7 +404,7 @@ export default {
404
404
  }
405
405
 
406
406
  neu.forEach((plugin) => {
407
- const existing = installed.find(p => !p.removed && p.name === plugin.name && p.version === plugin.version);
407
+ const existing = installed.find((p) => !p.removed && p.name === plugin.name && p.version === plugin.version);
408
408
  const isCustomImage = plugin.metadata?.labels?.[UI_PLUGIN_LABELS.CATALOG_IMAGE];
409
409
 
410
410
  if (!existing && plugin.isCached) {
@@ -435,7 +435,7 @@ export default {
435
435
 
436
436
  methods: {
437
437
  async refreshCharts() {
438
- await this.$store.dispatch('catalog/load');
438
+ await this.$store.dispatch('catalog/load', { reset: true });
439
439
  const c = this.$store.getters['catalog/rawCharts'];
440
440
 
441
441
  this.charts = Object.values(c);
@@ -1013,6 +1013,9 @@ export default {
1013
1013
  color: #888;
1014
1014
  width: 44px;
1015
1015
  height: 44px;
1016
+ display: flex;
1017
+ justify-content: center;
1018
+ align-items: center;
1016
1019
 
1017
1020
  &.dark-mode {
1018
1021
  border-radius: calc(2 * var(--border-radius));
@@ -14,8 +14,8 @@ export default {
14
14
 
15
15
  async fetch() {
16
16
  const provClusters = await this.$store.dispatch('management/findAll', { type: CAPI.RANCHER_CLUSTER });
17
- const readyClusters = provClusters.filter(c => c.mgmt?.isReady);
18
- const clusterForCounts = filterHiddenLocalCluster(filterOnlyKubernetesClusters(readyClusters), this.$store);
17
+ const readyClusters = provClusters.filter((c) => c.mgmt?.isReady);
18
+ const clusterForCounts = filterHiddenLocalCluster(filterOnlyKubernetesClusters(readyClusters, this.$store), this.$store);
19
19
  const finalCounts = [];
20
20
  const promises = [];
21
21
  const topFifteenForResponseTime = [];
@@ -181,8 +181,8 @@ export default {
181
181
  setResourceResponseTiming(responseTimes) {
182
182
  responseTimes?.forEach((res) => {
183
183
  if ( res.outcome === 'success' ) {
184
- const cluster = this.finalCounts.find(c => c.capiId === res.item.capiId);
185
- const countIndex = cluster?.counts?.findIndex(c => c.resource === res.item.resource);
184
+ const cluster = this.finalCounts.find((c) => c.capiId === res.item.capiId);
185
+ const countIndex = cluster?.counts?.findIndex((c) => c.resource === res.item.resource);
186
186
 
187
187
  if ( (countIndex && countIndex !== -1) || countIndex === 0 ) {
188
188
  this.$set(cluster?.counts[countIndex], 'durationMs', res.durationMs);
@@ -196,13 +196,13 @@ export default {
196
196
  },
197
197
 
198
198
  nodeCount(counts) {
199
- const resource = counts.findIndex(c => c.resource === 'node');
199
+ const resource = counts.findIndex((c) => c.resource === 'node');
200
200
 
201
201
  return counts[resource]?.count;
202
202
  },
203
203
 
204
204
  toggleTable(area) {
205
- const itemIndex = this.finalCounts.findIndex(item => item.id === area);
205
+ const itemIndex = this.finalCounts.findIndex((item) => item.id === area);
206
206
 
207
207
  this.finalCounts[itemIndex].isTableVisible = !this.finalCounts[itemIndex].isTableVisible;
208
208
  },
package/pages/home.vue CHANGED
@@ -103,7 +103,7 @@ export default {
103
103
  canCreateCluster() {
104
104
  const schema = this.$store.getters['management/schemaFor'](CAPI.RANCHER_CLUSTER);
105
105
 
106
- return !!schema?.collectionMethods.find(x => x.toLowerCase() === 'post');
106
+ return !!schema?.collectionMethods.find((x) => x.toLowerCase() === 'post');
107
107
  },
108
108
 
109
109
  manageLocation() {
@@ -160,7 +160,7 @@ export default {
160
160
  value: 'nameDisplay',
161
161
  sort: ['nameSort'],
162
162
  canBeVariable: true,
163
- getValue: row => row.mgmt?.nameDisplay
163
+ getValue: (row) => row.mgmt?.nameDisplay
164
164
  },
165
165
  {
166
166
  label: this.t('landing.clusters.provider'),
@@ -206,7 +206,7 @@ export default {
206
206
  ...mapGetters(['currentCluster', 'defaultClusterId']),
207
207
 
208
208
  kubeClusters() {
209
- return filterHiddenLocalCluster(filterOnlyKubernetesClusters(this.provClusters || []), this.$store);
209
+ return filterHiddenLocalCluster(filterOnlyKubernetesClusters(this.provClusters || [], this.$store), this.$store);
210
210
  }
211
211
  },
212
212
 
package/pages/prefs.vue CHANGED
@@ -131,7 +131,7 @@ export default {
131
131
  perPageOptions() {
132
132
  const t = this.$store.getters['i18n/t'];
133
133
 
134
- return this.$store.getters['prefs/options'](ROWS_PER_PAGE).map(count => ({
134
+ return this.$store.getters['prefs/options'](ROWS_PER_PAGE).map((count) => ({
135
135
  label: t('prefs.perPage.value', { count }),
136
136
  value: count
137
137
  }));
@@ -140,7 +140,7 @@ export default {
140
140
  menuClusterOptions() {
141
141
  const t = this.$store.getters['i18n/t'];
142
142
 
143
- return this.$store.getters['prefs/options'](MENU_MAX_CLUSTERS).map(count => ({
143
+ return this.$store.getters['prefs/options'](MENU_MAX_CLUSTERS).map((count) => ({
144
144
  label: t('prefs.clusterToShow.value', { count }),
145
145
  value: count
146
146
  }));
@@ -95,13 +95,13 @@ async function loadData(store) {
95
95
 
96
96
  const known = {};
97
97
 
98
- data.nodes = data.nodes.filter(x => !!x.app && !!x.namespace);
98
+ data.nodes = data.nodes.filter((x) => !!x.app && !!x.namespace);
99
99
  data.nodes.forEach((x) => {
100
100
  x.id = nodeIdFor(x);
101
101
  known[x.id] = true;
102
102
  });
103
103
 
104
- data.edges = data.edges.filter(x => known[fromId(x)] && known[toId(x)]);
104
+ data.edges = data.edges.filter((x) => known[fromId(x)] && known[toId(x)]);
105
105
 
106
106
  return data;
107
107
  }
@@ -329,7 +329,7 @@ export default {
329
329
  g.setParent(id, nsId);
330
330
  }
331
331
 
332
- const rpses = this.displayEdges.map(x => x.stats.rps);
332
+ const rpses = this.displayEdges.map((x) => x.stats.rps);
333
333
  const min = Math.min(...rpses);
334
334
  const max = Math.max(...rpses);
335
335
 
@@ -8,6 +8,7 @@ import { SETTING } from '@shell/config/settings';
8
8
  import { findBy } from '@shell/utils/array';
9
9
  import { addParam } from '@shell/utils/url';
10
10
  import { isRancherPrime } from '@shell/config/version';
11
+ import { generateSupportLink } from '@shell/utils/version';
11
12
 
12
13
  export default {
13
14
  layout: 'home',
@@ -47,6 +48,7 @@ export default {
47
48
  this.brandSetting = await fetchOrCreateSetting(SETTING.BRAND, '');
48
49
  this.serverUrlSetting = await fetchOrCreateSetting(SETTING.SERVER_URL, '');
49
50
  this.uiIssuesSetting = await this.$store.dispatch('management/find', { type: MANAGEMENT.SETTING, id: SETTING.ISSUES });
51
+ this.settings = await this.$store.dispatch('management/findAll', { type: MANAGEMENT.SETTING });
50
52
  },
51
53
 
52
54
  data() {
@@ -57,6 +59,7 @@ export default {
57
59
  brandSetting: null,
58
60
  uiIssuesSetting: null,
59
61
  serverSetting: null,
62
+ settings: null,
60
63
  promos: [
61
64
  'support.promos.one',
62
65
  'support.promos.two',
@@ -103,6 +106,12 @@ export default {
103
106
 
104
107
  sccLink() {
105
108
  return this.hasAWSSupport ? addParam('https://scc.suse.com', 'from_marketplace', '1') : 'https://scc.suse.com';
109
+ },
110
+
111
+ supportLink() {
112
+ const version = this.settings?.find((s) => s.id === SETTING.VERSION_RANCHER)?.value;
113
+
114
+ return generateSupportLink(version);
106
115
  }
107
116
  },
108
117
 
@@ -124,7 +133,7 @@ export default {
124
133
  <div class="support-link">
125
134
  <a
126
135
  class="support-link"
127
- href="https://rancher.com/support-maintenance-terms"
136
+ :href="supportLink"
128
137
  target="_blank"
129
138
  rel="noopener noreferrer nofollow"
130
139
  >{{ t('support.community.learnMore') }}</a>
@@ -1,6 +1,6 @@
1
1
  const fs = require('fs');
2
2
  const path = require('path');
3
- const contextFolders = ['chart', 'cloud-credential', 'content', 'detail', 'edit', 'list', 'machine-config', 'models', 'promptRemove', 'l10n', 'windowComponents', 'dialog', 'formatters'];
3
+ const contextFolders = ['chart', 'cloud-credential', 'content', 'detail', 'edit', 'list', 'machine-config', 'models', 'promptRemove', 'l10n', 'windowComponents', 'dialog', 'formatters', 'login'];
4
4
  const contextMap = contextFolders.reduce((map, obj) => {
5
5
  map[obj] = true;
6
6
 
package/pkg/tsconfig.json CHANGED
@@ -18,6 +18,7 @@
18
18
  "webpack-env",
19
19
  "@types/node",
20
20
  "@types/jest",
21
+ "@nuxt/types"
21
22
  ],
22
23
  "lib": [
23
24
  "esnext",
package/pkg/vue.config.js CHANGED
@@ -41,7 +41,7 @@ module.exports = function(dir) {
41
41
  context
42
42
  .plugin('webpack-bundle-analyzer')
43
43
  .use(BundleAnalyzerPlugin)
44
- .init(Plugin => new Plugin(options));
44
+ .init((Plugin) => new Plugin(options));
45
45
  },
46
46
 
47
47
  configureWebpack: (config) => {
package/plugins/axios.js CHANGED
@@ -41,7 +41,7 @@ export default function({
41
41
  delete opt.name;
42
42
  delete opt.value;
43
43
 
44
- opt.encode = x => x;
44
+ opt.encode = (x) => x;
45
45
  opt.sameSite = true;
46
46
  opt.path = '/';
47
47
  opt.secure = true;
@@ -17,7 +17,7 @@ const ALLOWED_TAGS = [
17
17
  'strong',
18
18
  ];
19
19
 
20
- export const purifyHTML = value => DOMPurify.sanitize(value, { ALLOWED_TAGS });
20
+ export const purifyHTML = (value) => DOMPurify.sanitize(value, { ALLOWED_TAGS });
21
21
 
22
22
  export const cleanHtmlDirective = {
23
23
  inserted(el, binding) {
@@ -4,14 +4,14 @@ import Resource from '@shell/plugins/dashboard-store/resource-class';
4
4
 
5
5
  describe('dashboard-store: mutations', () => {
6
6
  const ctx = {
7
- rootGetters: { 'type-map/optionsFor': type => ({}) },
7
+ rootGetters: { 'type-map/optionsFor': (type) => ({}) },
8
8
  getters: {
9
- classify: resource => Resource,
9
+ classify: (resource) => Resource,
10
10
  cleanResource: (existing, resource) => resource
11
11
  }
12
12
  };
13
13
 
14
- const create = type => ({
14
+ const create = (type) => ({
15
15
  id: '1',
16
16
  type
17
17
  });
@@ -25,7 +25,7 @@ describe('dashboard-store: mutations', () => {
25
25
 
26
26
  const createPodResource = (props = {}) => createResource(POD, props);
27
27
 
28
- const createCache = props => ({
28
+ const createCache = (props) => ({
29
29
  generation: 0,
30
30
  haveAll: false,
31
31
  haveNamespace: undefined,
@@ -537,7 +537,7 @@ export default {
537
537
  },
538
538
 
539
539
  createMany(ctx, data) {
540
- return data.map(d => classify(ctx, d));
540
+ return data.map((d) => classify(ctx, d));
541
541
  },
542
542
 
543
543
  createPopulated(ctx, userData) {
@@ -556,8 +556,8 @@ export default {
556
556
  // Remove all entries for that type and stop watching it
557
557
  forgetType({ commit, dispatch, state }, type) {
558
558
  state.started
559
- .filter(entry => entry.type === type)
560
- .forEach(entry => dispatch('unwatch', entry));
559
+ .filter((entry) => entry.type === type)
560
+ .forEach((entry) => dispatch('unwatch', entry));
561
561
 
562
562
  commit('forgetType', type);
563
563
  },
@@ -616,7 +616,7 @@ export default {
616
616
  if (tries === SCHEMA_CHECK_RETRY_LOG) {
617
617
  console.warn(`Schema for ${ type } not available... retrying...`); // eslint-disable-line no-console
618
618
  }
619
- await new Promise(resolve => setTimeout(resolve, 1000));
619
+ await new Promise((resolve) => setTimeout(resolve, 1000));
620
620
  tries--;
621
621
  }
622
622
  }
@@ -69,7 +69,7 @@ export default {
69
69
 
70
70
  // Filter first by namespace if one is provided, since this is efficient
71
71
  if (namespace) {
72
- all = all.filter(obj => obj.namespace === namespace);
72
+ all = all.filter((obj) => obj.namespace === namespace);
73
73
  }
74
74
 
75
75
  garbageCollect.gcUpdateLastAccessed({
@@ -116,7 +116,7 @@ export default (vuexModule, config, init) => {
116
116
  }
117
117
  }
118
118
  } else {
119
- return obj.map(x => recurse(x));
119
+ return obj.map((x) => recurse(x));
120
120
  }
121
121
  } else if ( obj && typeof obj === 'object' ) {
122
122
  if ( obj.__rehydrate ) {
@@ -279,7 +279,7 @@ export function loadAll(state, {
279
279
  }
280
280
 
281
281
  const keyField = getters.keyFieldForType(type);
282
- const proxies = data.map(x => classify(ctx, x));
282
+ const proxies = data.map((x) => classify(ctx, x));
283
283
  const cache = registerType(state, type);
284
284
 
285
285
  clear(cache.list);
@@ -356,7 +356,7 @@ export default {
356
356
  });
357
357
  });
358
358
  cache.list.forEach((entry) => {
359
- if (!allLatest.find(toLoadEntry => toLoadEntry.id === entry.id)) {
359
+ if (!allLatest.find((toLoadEntry) => toLoadEntry.id === entry.id)) {
360
360
  commit('remove', entry);
361
361
  }
362
362
  });
@@ -939,7 +939,7 @@ export default class Resource {
939
939
  }
940
940
 
941
941
  get canCreate() {
942
- if ( this.schema && !this.schema?.collectionMethods.find(x => x.toLowerCase() === 'post') ) {
942
+ if ( this.schema && !this.schema?.collectionMethods.find((x) => x.toLowerCase() === 'post') ) {
943
943
  return false;
944
944
  }
945
945
 
@@ -955,7 +955,7 @@ export default class Resource {
955
955
  }
956
956
 
957
957
  get canEditYaml() {
958
- return this.schema?.resourceMethods?.find(x => x === 'blocked-PUT') ? false : this.canUpdate;
958
+ return this.schema?.resourceMethods?.find((x) => x === 'blocked-PUT') ? false : this.canUpdate;
959
959
  }
960
960
 
961
961
  // ------------------------------------------------------------------
@@ -1489,7 +1489,7 @@ export default class Resource {
1489
1489
  const rules = [];
1490
1490
 
1491
1491
  const customValidationRulesets = this?.customValidationRules
1492
- .filter(rule => !!rule.validators || !!rule.required)
1492
+ .filter((rule) => !!rule.validators || !!rule.required)
1493
1493
  .map((rule) => {
1494
1494
  const formRules = formRulesGenerator(this.t, { displayKey: rule?.translationKey ? this.t(rule.translationKey) : 'Value' });
1495
1495
 
@@ -1510,10 +1510,10 @@ export default class Resource {
1510
1510
  return formRules[rule];
1511
1511
  }
1512
1512
  )
1513
- .filter(rule => !!rule)
1513
+ .filter((rule) => !!rule)
1514
1514
  };
1515
1515
  })
1516
- .filter(ruleset => ruleset.rules.length > 0);
1516
+ .filter((ruleset) => ruleset.rules.length > 0);
1517
1517
 
1518
1518
  rules.push(...customValidationRulesets);
1519
1519
 
@@ -1530,7 +1530,7 @@ export default class Resource {
1530
1530
  customValidationRules = customValidationRules();
1531
1531
  }
1532
1532
 
1533
- customValidationRules.filter(rule => !ignorePaths.includes(rule.path)).forEach((rule) => {
1533
+ customValidationRules.filter((rule) => !ignorePaths.includes(rule.path)).forEach((rule) => {
1534
1534
  const {
1535
1535
  path,
1536
1536
  requiredIf: requiredIfPath,
@@ -1714,7 +1714,7 @@ export default class Resource {
1714
1714
  const allOfResourceType = this.$rootGetters['cluster/all']( type );
1715
1715
 
1716
1716
  this.ownersByType[kind].forEach((resource, idx) => {
1717
- const resourceInstance = allOfResourceType.find(resourceByType => resourceByType?.metadata?.uid === resource.uid);
1717
+ const resourceInstance = allOfResourceType.find((resourceByType) => resourceByType?.metadata?.uid === resource.uid);
1718
1718
 
1719
1719
  if (resourceInstance) {
1720
1720
  owners.push(resourceInstance);
@@ -1737,7 +1737,7 @@ export default class Resource {
1737
1737
  details.push({
1738
1738
  label: this.t('resourceDetail.detailTop.ownerReferences', { count: this.owners.length }),
1739
1739
  formatter: 'ListLinkDetail',
1740
- content: this.owners.map(owner => ({
1740
+ content: this.owners.map((owner) => ({
1741
1741
  key: owner.id,
1742
1742
  row: owner,
1743
1743
  col: {},
package/plugins/i18n.js CHANGED
@@ -9,7 +9,7 @@ function stringFor(store, key, args, raw = false, escapehtml = true) {
9
9
  if ( translation !== undefined ) {
10
10
  out = translation;
11
11
  } else if ( args && Object.keys(args).length ) {
12
- const argStr = Object.keys(args).map(k => `${ k }: ${ args[k] }`).join(', ');
12
+ const argStr = Object.keys(args).map((k) => `${ k }: ${ args[k] }`).join(', ');
13
13
 
14
14
  out = `%${ key }(${ argStr })%`;
15
15
  raw = true;
package/plugins/plugin.js CHANGED
@@ -3,6 +3,10 @@ import { allHashSettled } from '@shell/utils/promise';
3
3
  import { shouldNotLoadPlugin, UI_PLUGIN_BASE_URL } from '@shell/config/uiplugins';
4
4
 
5
5
  export default async function(context) {
6
+ if (process.env.excludeOperatorPkg === 'true') {
7
+ return;
8
+ }
9
+
6
10
  const hash = {};
7
11
 
8
12
  // Provide a mechanism to load the UI without the plugins loaded - in case there is a problem
@@ -30,7 +34,7 @@ export default async function(context) {
30
34
  const entries = res.entries || res.Entries || {};
31
35
 
32
36
  Object.values(entries).forEach((plugin) => {
33
- const shouldNotLoad = shouldNotLoadPlugin(plugin, rancherVersion); // Error key string or boolean
37
+ const shouldNotLoad = shouldNotLoadPlugin(plugin, rancherVersion, context.store.getters['uiplugins/plugins'] || []); // Error key string or boolean
34
38
 
35
39
  if (!shouldNotLoad) {
36
40
  hash[plugin.name] = context.$plugin.loadPluginAsync(plugin);
@@ -224,7 +224,7 @@ export default {
224
224
  if ( opt.load !== false && res.type === 'collection' ) {
225
225
  await dispatch('loadMulti', res.data);
226
226
 
227
- return res.data.map(x => getters.byId(x.type, x.id) || x);
227
+ return res.data.map((x) => getters.byId(x.type, x.id) || x);
228
228
  } else if ( opt.load !== false && res.type && res.id ) {
229
229
  return dispatch('load', { data: res });
230
230
  } else {
@@ -256,7 +256,7 @@ export default {
256
256
  if ( opt.load !== false && res.type === 'collection' ) {
257
257
  await dispatch('loadMulti', res.data);
258
258
 
259
- return res.data.map(x => getters.byId(x.type, x.id) || x);
259
+ return res.data.map((x) => getters.byId(x.type, x.id) || x);
260
260
  } else if ( opt.load !== false && res.type && res.id ) {
261
261
  return dispatch('load', { data: res });
262
262
  } else {
@@ -349,7 +349,7 @@ export default {
349
349
 
350
350
  dropKeys(obj, rootKeys);
351
351
  dropKeys(obj?.metadata, metadataKeys);
352
- (obj?.status?.conditions || []).forEach(condition => dropKeys(condition, conditionKeys));
352
+ (obj?.status?.conditions || []).forEach((condition) => dropKeys(condition, conditionKeys));
353
353
 
354
354
  return jsyaml.dump(obj);
355
355
  }