dashboard-shell-shell 3.0.2-test.20250913 → 3.0.5-logTest.1
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.
- package/assets/brand/csp/favicon.png +0 -0
- package/assets/data/aws-regions.json +3 -0
- package/assets/icons/demo.css:Zone.Identifier +0 -0
- package/assets/icons/demo_index.html:Zone.Identifier +0 -0
- package/assets/icons/iconfont.css +4 -1
- package/assets/icons/iconfont.css:Zone.Identifier +0 -0
- package/assets/icons/iconfont.js:Zone.Identifier +0 -0
- package/assets/icons/iconfont.json:Zone.Identifier +0 -0
- package/assets/icons/iconfont.ttf:Zone.Identifier +0 -0
- package/assets/icons/iconfont.woff2:Zone.Identifier +0 -0
- package/assets/icons/iconfont.woff:Zone.Identifier +0 -0
- package/assets/iconsNew/demo.css +539 -0
- package/assets/iconsNew/demo.css:Zone.Identifier +0 -0
- package/assets/iconsNew/demo_index.html +303 -0
- package/assets/iconsNew/demo_index.html:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.css +43 -0
- package/assets/iconsNew/iconfont.css:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.js +1 -0
- package/assets/iconsNew/iconfont.js:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.json +44 -0
- package/assets/iconsNew/iconfont.json:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.ttf +0 -0
- package/assets/iconsNew/iconfont.ttf:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.woff +0 -0
- package/assets/iconsNew/iconfont.woff2 +0 -0
- package/assets/iconsNew/iconfont.woff2:Zone.Identifier +0 -0
- package/assets/iconsNew/iconfont.woff:Zone.Identifier +0 -0
- package/assets/images/icons/document.svg +3 -0
- package/assets/images/key.svg +17 -0
- package/assets/images/pl/dark/logo.png +0 -0
- package/assets/images/providers/sks.svg +1 -0
- package/assets/images/vendor/cognito.svg +1 -0
- package/assets/styles/all.scss +23 -3
- package/assets/styles/app.scss +4 -0
- package/assets/styles/base/_basic.scss +10 -0
- package/assets/styles/base/_helpers.scss +1 -1
- package/assets/styles/base/_spacing.scss +29 -0
- package/assets/styles/base/_variables.scss +21 -15
- package/assets/styles/fonts/_icons.scss +3 -2
- package/assets/styles/global/_button.scss +8 -8
- package/assets/styles/global/_form.scss +1 -0
- package/assets/styles/global/_labeled-input.scss +1 -1
- package/assets/styles/global/_layout.scss +1 -1
- package/assets/styles/global/_select.scss +1 -1
- package/assets/styles/global/_tooltip.scss +9 -5
- package/assets/styles/themes/_dark.scss +30 -0
- package/assets/styles/themes/_light.scss +85 -5
- package/assets/styles/vendor/vue-select.scss +2 -1
- package/assets/translations/en-us.yaml +886 -105
- package/assets/translations/zh-hans.yaml +298 -25
- package/chart/__tests__/S3.test.ts +2 -1
- package/chart/monitoring/index.vue +1 -1
- package/cloud-credential/gcp.vue +9 -1
- package/components/ActionDropdown.vue +1 -1
- package/components/ActionMenuShell.vue +3 -7
- package/components/AppModal.vue +9 -28
- package/components/AsyncButton.vue +2 -0
- package/components/BrandImage.vue +0 -21
- package/components/ButtonDropdown.vue +3 -1
- package/components/Certificates.vue +5 -0
- package/components/ClusterIconMenu.vue +1 -1
- package/components/CodeMirror.vue +9 -7
- package/components/CommunityLinks.vue +3 -58
- package/components/ConfigMapSettings/Settings.vue +377 -0
- package/components/ConfigMapSettings/index.vue +354 -0
- package/components/ConsumptionGauge.vue +1 -1
- package/components/ContainerResourceLimit.vue +2 -2
- package/components/CopyToClipboard.vue +15 -0
- package/components/CruResource.vue +106 -18
- package/components/DetailText.vue +61 -11
- package/components/Drawer/Chrome.vue +115 -0
- package/components/Drawer/ResourceDetailDrawer/ConfigTab.vue +64 -0
- package/components/Drawer/ResourceDetailDrawer/YamlTab.vue +48 -0
- package/components/Drawer/ResourceDetailDrawer/__tests__/ConfigTab.test.ts +54 -0
- package/components/Drawer/ResourceDetailDrawer/__tests__/YamlTab.test.ts +80 -0
- package/components/Drawer/ResourceDetailDrawer/__tests__/composables.test.ts +106 -0
- package/components/Drawer/ResourceDetailDrawer/__tests__/helpers.test.ts +42 -0
- package/components/Drawer/ResourceDetailDrawer/composables.ts +53 -0
- package/components/Drawer/ResourceDetailDrawer/helpers.ts +10 -0
- package/components/Drawer/ResourceDetailDrawer/index.vue +124 -0
- package/components/ExplorerMembers.vue +28 -4
- package/components/ExplorerProjectsNamespaces.vue +46 -29
- package/components/FilterPanel.vue +156 -0
- package/components/FixedBanner.vue +19 -5
- package/components/{fleet/ForceDirectedTreeChart/index.vue → ForceDirectedTreeChart.vue} +47 -41
- package/components/GlobalRoleBindings.vue +69 -114
- package/components/GrowlManager.vue +16 -15
- package/components/IconOrSvg.vue +19 -35
- package/components/KeyValueView.vue +1 -1
- package/components/LandingPagePreference.vue +2 -0
- package/components/Loading.vue +1 -1
- package/components/LocaleSelector.vue +10 -2
- package/components/PaginatedResourceTable.vue +53 -1
- package/components/PodSecurityAdmission.vue +2 -2
- package/components/ProgressBarMulti.vue +1 -0
- package/components/PromptModal.vue +38 -7
- package/components/PromptRemove.vue +28 -2
- package/components/PromptRestore.vue +22 -44
- package/components/RelatedResources.vue +7 -12
- package/components/Resource/Detail/Additional.vue +46 -0
- package/components/Resource/Detail/Card/PodsCard/Bubble.vue +13 -0
- package/components/Resource/Detail/Card/PodsCard/composable.ts +30 -0
- package/components/Resource/Detail/Card/PodsCard/index.vue +118 -0
- package/components/Resource/Detail/Card/ResourceUsageCard/composable.ts +51 -0
- package/components/Resource/Detail/Card/ResourceUsageCard/index.vue +79 -0
- package/components/Resource/Detail/Card/Scaler.vue +89 -0
- package/components/Resource/Detail/Card/StateCard/composables.ts +112 -0
- package/components/Resource/Detail/Card/StateCard/index.vue +39 -0
- package/components/Resource/Detail/Card/VerticalGap.vue +11 -0
- package/components/Resource/Detail/Card/__tests__/Card.test.ts +36 -0
- package/components/Resource/Detail/Card/__tests__/PodsCard.test.ts +84 -0
- package/components/Resource/Detail/Card/__tests__/ResourceUsageCard.test.ts +72 -0
- package/components/Resource/Detail/Card/__tests__/Scaler.test.ts +87 -0
- package/components/Resource/Detail/Card/__tests__/StateCard.test.ts +53 -0
- package/components/Resource/Detail/Card/__tests__/VerticalGap.test.ts +14 -0
- package/components/Resource/Detail/Card/__tests__/index.test.ts +36 -0
- package/components/Resource/Detail/Card/index.vue +56 -0
- package/components/Resource/Detail/Metadata/Annotations/__tests__/index.test.ts +19 -0
- package/components/Resource/Detail/Metadata/Annotations/composable.ts +12 -0
- package/components/Resource/Detail/Metadata/Annotations/index.vue +31 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +223 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/index.test.ts +103 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/composable.ts +72 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +317 -0
- package/components/Resource/Detail/Metadata/IdentifyingInformation/index.vue +138 -0
- package/components/Resource/Detail/Metadata/KeyValue.vue +144 -0
- package/components/Resource/Detail/Metadata/Labels/__tests__/index.test.ts +18 -0
- package/components/Resource/Detail/Metadata/Labels/composable.ts +12 -0
- package/components/Resource/Detail/Metadata/Labels/index.vue +31 -0
- package/components/Resource/Detail/Metadata/Rectangle.vue +34 -0
- package/components/Resource/Detail/Metadata/__tests__/KeyValue.test.ts +107 -0
- package/components/Resource/Detail/Metadata/__tests__/Rectangle.test.ts +24 -0
- package/components/Resource/Detail/Metadata/__tests__/composables.test.ts +75 -0
- package/components/Resource/Detail/Metadata/__tests__/index.test.ts +91 -0
- package/components/Resource/Detail/Metadata/composables.ts +81 -0
- package/components/Resource/Detail/Metadata/index.vue +90 -0
- package/components/Resource/Detail/Page.vue +37 -0
- package/components/Resource/Detail/PercentageBar.vue +40 -0
- package/components/Resource/Detail/ResourceRow.vue +138 -0
- package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/composables.test.ts +29 -0
- package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/__tests__/index.test.ts +48 -0
- package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/composables.ts +31 -0
- package/components/Resource/Detail/ResourceTabs/ConfigMapDataTab/index.vue +50 -0
- package/components/Resource/Detail/ResourceTabs/KnownHostsTab/__tests__/composables.test.ts +66 -0
- package/components/Resource/Detail/ResourceTabs/KnownHostsTab/composables.ts +21 -0
- package/components/Resource/Detail/ResourceTabs/KnownHostsTab/index.vue +31 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/Basic.vue +45 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/BasicAuth.vue +31 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/Certificate.vue +31 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/Registry.vue +22 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/ServiceAccountToken.vue +31 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/Ssh.vue +32 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Basic.test.ts +40 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/BasicAuth.test.ts +33 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Certificate.test.ts +33 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Registry.test.ts +27 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/ServiceAccountToken.test.ts +33 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/Ssh.test.ts +33 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/auth-types.test.ts +186 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/__tests__/composables.test.ts +102 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/auth-types.ts +109 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/composeables.ts +52 -0
- package/components/Resource/Detail/ResourceTabs/SecretDataTab/index.vue +71 -0
- package/components/Resource/Detail/SpacedRow.vue +14 -0
- package/components/Resource/Detail/StatusBar.vue +59 -0
- package/components/Resource/Detail/StatusRow.vue +61 -0
- package/components/Resource/Detail/TitleBar/Title.vue +15 -0
- package/components/Resource/Detail/TitleBar/Top.vue +16 -0
- package/components/Resource/Detail/TitleBar/__tests__/Title.test.ts +17 -0
- package/components/Resource/Detail/TitleBar/__tests__/Top.test.ts +17 -0
- package/components/Resource/Detail/TitleBar/__tests__/composables.test.ts +63 -0
- package/components/Resource/Detail/TitleBar/__tests__/index.test.ts +142 -0
- package/components/Resource/Detail/TitleBar/composables.ts +61 -0
- package/components/Resource/Detail/TitleBar/index.vue +302 -0
- package/components/Resource/Detail/Top/index.vue +34 -0
- package/components/Resource/Detail/__tests__/Page.test.ts +32 -0
- package/components/Resource/Detail/composables.ts +45 -0
- package/components/ResourceDetail/Masthead/__tests__/index.test.ts +70 -0
- package/components/ResourceDetail/{__tests__/Masthead.test.ts → Masthead/__tests__/legacy.test.ts} +3 -3
- package/components/ResourceDetail/Masthead/index.vue +65 -0
- package/components/ResourceDetail/Masthead/latest.vue +44 -0
- package/components/ResourceDetail/{Masthead.vue → Masthead/legacy.vue} +240 -169
- package/components/ResourceDetail/__tests__/index.test.ts +135 -0
- package/components/ResourceDetail/index.vue +75 -575
- package/components/ResourceDetail/legacy.vue +580 -0
- package/components/ResourceList/Masthead.vue +74 -29
- package/components/ResourceList/index.vue +3 -2
- package/components/ResourceTable.vue +75 -85
- package/components/ResourceYaml.vue +15 -2
- package/components/RichTranslation.vue +106 -0
- package/components/SideNav.vue +21 -21
- package/components/SingleClusterInfo.vue +2 -1
- package/components/SlideInPanelManager.vue +116 -14
- package/components/SortableTable/THead.vue +46 -1
- package/components/SortableTable/index.vue +66 -22
- package/components/SortableTable/paging.js +15 -16
- package/components/SortableTable/selection.js +22 -10
- package/components/StateDot/index.vue +28 -0
- package/components/StatusBadge.vue +6 -4
- package/components/SubtleLink.vue +25 -0
- package/components/Tabbed/index.vue +43 -22
- package/components/Wizard.vue +16 -3
- package/components/YamlEditor.vue +1 -2
- package/components/__tests__/AsyncButton.test.ts +39 -0
- package/components/__tests__/ConfigMapSettings.test.ts +376 -0
- package/components/__tests__/CruResource.test.ts +63 -0
- package/components/__tests__/FilterPanel.test.ts +81 -0
- package/components/__tests__/GrowlManager.test.ts +0 -25
- package/components/__tests__/PromptModal.test.ts +146 -0
- package/components/__tests__/PromptRestore.test.ts +1 -65
- package/components/__tests__/RichTranslation.test.ts +115 -0
- package/components/auth/AuthBanner.vue +15 -14
- package/components/auth/Principal.vue +50 -19
- package/components/auth/RoleDetailEdit.vue +55 -11
- package/components/auth/login/ldap.vue +2 -2
- package/components/auth/login/oidc.vue +6 -1
- package/components/breadcrumb/index.vue +119 -0
- package/components/fleet/FleetApplications.vue +174 -0
- package/components/fleet/FleetClusterTargets/TargetsList.vue +66 -0
- package/components/fleet/FleetClusterTargets/index.vue +455 -0
- package/components/fleet/FleetClusters.vue +25 -6
- package/components/fleet/FleetGitRepoPaths.vue +476 -0
- package/components/fleet/FleetHelmOps.vue +123 -0
- package/components/fleet/FleetIntro.vue +58 -28
- package/components/fleet/FleetNoWorkspaces.vue +5 -1
- package/components/fleet/FleetOCIStorageSecret.vue +171 -0
- package/components/fleet/FleetRepos.vue +37 -80
- package/components/fleet/FleetResources.vue +69 -27
- package/components/fleet/FleetSummary.vue +26 -51
- package/components/fleet/FleetValuesFrom.vue +295 -0
- package/components/fleet/__tests__/FleetClusterTargets.test.ts +1224 -0
- package/components/fleet/__tests__/FleetGitRepoPaths.test.ts +265 -0
- package/components/fleet/__tests__/FleetOCIStorageSecret.test.ts +213 -0
- package/components/fleet/__tests__/FleetSummary.test.ts +39 -39
- package/components/fleet/__tests__/FleetValuesFrom.test.ts +300 -0
- package/components/fleet/dashboard/Empty.vue +73 -0
- package/components/fleet/dashboard/ResourceCard.vue +184 -0
- package/components/fleet/dashboard/ResourceCardSummary.vue +195 -0
- package/components/fleet/dashboard/ResourceDetails.vue +194 -0
- package/components/fleet/dashboard/ResourcePanel.vue +384 -0
- package/components/form/ArrayList.vue +187 -142
- package/components/form/ArrayListGrouped.vue +5 -3
- package/components/form/BannerSettings.vue +117 -50
- package/components/form/ChangePassword.vue +4 -2
- package/components/form/ClusterAppearance.vue +4 -3
- package/components/form/ColorInput.vue +35 -6
- package/components/form/Command.vue +4 -5
- package/components/form/Conditions.vue +15 -1
- package/components/form/FileImageSelector.vue +1 -1
- package/components/form/Footer.vue +11 -4
- package/components/form/HealthCheck.vue +0 -2
- package/components/form/HookOption.vue +87 -58
- package/components/form/InputWithSelect.vue +8 -7
- package/components/form/KeyValue.vue +112 -53
- package/components/form/LabeledSelect.vue +76 -55
- package/components/form/Labels.vue +92 -22
- package/components/form/MatchExpressions.vue +59 -12
- package/components/form/Members/ClusterMembershipEditor.vue +1 -1
- package/components/form/Members/ClusterPermissionsEditor.vue +60 -41
- package/components/form/Members/MembershipEditor.vue +4 -4
- package/components/form/Members/ProjectMembershipEditor.vue +1 -1
- package/components/form/NameNsDescription.vue +15 -10
- package/components/form/Networking.vue +30 -28
- package/components/form/NodeAffinity.vue +29 -28
- package/components/form/NotificationSettings.vue +15 -1
- package/components/form/PodAffinity.vue +23 -23
- package/components/form/Probe.vue +15 -11
- package/components/form/ProjectMemberEditor.vue +66 -48
- package/components/form/ResourceLabeledSelect.vue +22 -8
- package/components/form/ResourceQuota/Namespace.vue +4 -4
- package/components/form/ResourceQuota/NamespaceRow.vue +11 -9
- package/components/form/ResourceQuota/Project.vue +4 -4
- package/components/form/ResourceQuota/ProjectRow.vue +36 -30
- package/components/form/ResourceSelector.vue +28 -24
- package/components/form/ResourceTabs/index.vue +7 -1
- package/components/form/SSHKnownHosts/index.vue +14 -11
- package/components/form/SecretSelector.vue +40 -23
- package/components/form/Security.vue +1 -3
- package/components/form/Select.vue +64 -27
- package/components/form/SelectOrCreateAuthSecret.vue +6 -3
- package/components/form/ServiceNameSelect.vue +2 -5
- package/components/form/ServicePorts.vue +149 -75
- package/components/form/SimpleSecretSelector.vue +17 -4
- package/components/form/Taints.vue +23 -3
- package/components/form/Tolerations.vue +13 -9
- package/components/form/UnitInput.vue +21 -0
- package/components/form/ValueFromResource.vue +136 -110
- package/components/form/WorkloadPorts.vue +143 -123
- package/components/form/__tests__/ArrayList.test.ts +32 -0
- package/components/form/__tests__/ColorInput.test.ts +35 -0
- package/components/form/__tests__/KeyValue.test.ts +36 -0
- package/components/form/__tests__/LabeledSelect.test.ts +79 -2
- package/components/form/__tests__/Labels.test.ts +360 -0
- package/components/form/__tests__/MatchExpressions.test.ts +16 -13
- package/components/form/__tests__/Networking.test.ts +116 -0
- package/components/form/__tests__/SSHKnownHosts.test.ts +11 -2
- package/components/form/__tests__/Select.test.ts +37 -1
- package/components/form/__tests__/UnitInput.test.ts +23 -1
- package/components/form/labeled-select-utils/labeled-select-pagination.ts +3 -38
- package/components/formatter/ClusterLink.vue +5 -8
- package/components/formatter/Description.vue +30 -0
- package/components/formatter/FleetApplicationClustersReady.vue +77 -0
- package/components/formatter/FleetApplicationSource.vue +79 -0
- package/components/formatter/FleetSummaryGraph.vue +7 -0
- package/components/formatter/PodImages.vue +1 -1
- package/components/formatter/WorkloadHealthScale.vue +5 -4
- package/components/formatter/__tests__/ClusterLink.test.ts +2 -32
- package/components/formatter/__tests__/LiveDate.test.ts +10 -2
- package/components/google/AccountAccess.vue +209 -0
- package/components/google/types/gcp.d.ts +136 -0
- package/components/google/types/index.d.ts +101 -0
- package/components/google/util/__mocks__/gcp.ts +465 -0
- package/components/google/util/formatter.ts +82 -0
- package/components/google/util/gcp.ts +134 -0
- package/components/google/util/index.d.ts +11 -0
- package/components/nav/Favorite.vue +1 -1
- package/components/nav/Group.vue +13 -1
- package/components/nav/Header.vue +44 -179
- package/components/nav/NamespaceFilter.vue +126 -75
- package/components/nav/NotificationCenter/Notification.vue +484 -0
- package/components/nav/NotificationCenter/NotificationHeader.vue +112 -0
- package/components/nav/NotificationCenter/index.vue +148 -0
- package/components/nav/TopLevelMenu.helper.ts +55 -34
- package/components/nav/TopLevelMenu.vue +110 -125
- package/components/nav/Type.vue +15 -4
- package/components/nav/WindowManager/ContainerLogs.vue +87 -61
- package/components/nav/WindowManager/ContainerLogsActions.vue +76 -0
- package/components/nav/WindowManager/index.vue +3 -2
- package/components/templates/default.vue +0 -3
- package/components/templates/plain.vue +0 -3
- package/composables/drawer.ts +26 -0
- package/composables/focusTrap.ts +3 -3
- package/composables/resources.test.ts +63 -0
- package/composables/resources.ts +38 -0
- package/composables/useI18n.ts +12 -11
- package/composables/useIsNewDetailPageEnabled.ts +17 -0
- package/config/labels-annotations.js +22 -11
- package/config/menuRouteMap.js +10 -0
- package/config/pagination-table-headers.js +8 -1
- package/config/private-label.js +0 -1
- package/config/product/auth.js +20 -3
- package/config/product/{cis.js → compliance.js} +23 -26
- package/config/product/explorer.js +80 -26
- package/config/product/fleet.js +77 -17
- package/config/product/manager.js +29 -46
- package/config/product/settings.js +23 -11
- package/config/product/uiplugins.js +13 -10
- package/config/query-params.js +16 -1
- package/config/roles.ts +2 -1
- package/config/router/navigation-guards/authentication.js +51 -2
- package/config/router/navigation-guards/index.js +16 -20
- package/config/router/routes.js +65 -31
- package/config/secret.ts +15 -0
- package/config/settings.ts +33 -16
- package/config/store.js +2 -0
- package/config/system-namespaces.js +1 -1
- package/config/table-headers.js +91 -30
- package/config/types.js +18 -7
- package/config/version.js +1 -1
- package/core/plugin-helpers.ts +3 -2
- package/core/plugin.ts +32 -7
- package/core/types.ts +25 -7
- package/detail/catalog.cattle.io.app.vue +5 -1
- package/detail/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +22 -18
- package/detail/fleet.cattle.io.bundle.vue +70 -6
- package/detail/fleet.cattle.io.cluster.vue +28 -15
- package/detail/fleet.cattle.io.gitrepo.vue +11 -2
- package/detail/fleet.cattle.io.helmop.vue +157 -0
- package/detail/management.cattle.io.fleetworkspace.vue +18 -27
- package/detail/management.cattle.io.oidcclient.vue +369 -0
- package/detail/namespace.vue +0 -3
- package/detail/node.vue +48 -39
- package/detail/pod.vue +2 -2
- package/detail/provisioning.cattle.io.cluster.vue +16 -50
- package/detail/service.vue +10 -2
- package/detail/workload/index.vue +48 -39
- package/dialog/AddCustomBadgeDialog.vue +17 -10
- package/{pages/c/_cluster/uiplugins/AddExtensionRepos.vue → dialog/AddExtensionReposDialog.vue} +72 -42
- package/dialog/AddonConfigConfirmationDialog.vue +1 -1
- package/dialog/AssignToDialog.vue +176 -0
- package/dialog/ChangePasswordDialog.vue +106 -0
- package/{pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue → dialog/DeveloperLoadExtensionDialog.vue} +74 -71
- package/dialog/DisableAuthProviderDialog.vue +101 -0
- package/dialog/DrainNode.vue +1 -1
- package/{pages/c/_cluster/uiplugins/CatalogList/CatalogLoadDialog.vue → dialog/ExtensionCatalogInstallDialog.vue} +100 -88
- package/{pages/c/_cluster/uiplugins/CatalogList/CatalogUninstallDialog.vue → dialog/ExtensionCatalogUninstallDialog.vue} +87 -66
- package/dialog/FeatureFlagListDialog.vue +288 -0
- package/dialog/ForceMachineRemoveDialog.vue +1 -1
- package/dialog/GenericPrompt.vue +1 -1
- package/dialog/HelmOpForceUpdateDialog.vue +132 -0
- package/{components/Import.vue → dialog/ImportDialog.vue} +8 -13
- package/{pages/c/_cluster/uiplugins/InstallDialog.vue → dialog/InstallExtensionDialog.vue} +124 -106
- package/{components/form/SSHKnownHosts → dialog}/KnownHostsEditDialog.vue +52 -62
- package/dialog/MoveNamespaceDialog.vue +157 -0
- package/dialog/OidcClientSecretDialog.vue +117 -0
- package/dialog/RedeployWorkloadDialog.vue +164 -0
- package/dialog/RollbackWorkloadDialog.vue +1 -1
- package/dialog/RotateEncryptionKeyDialog.vue +10 -30
- package/dialog/ScalePoolDownDialog.vue +1 -1
- package/{components/nav/Jump.vue → dialog/SearchDialog.vue} +34 -14
- package/{pages/c/_cluster/uiplugins/UninstallDialog.vue → dialog/UninstallExtensionDialog.vue} +67 -58
- package/dialog/WechatDialog.vue +57 -0
- package/{components/form/SSHKnownHosts → dialog}/__tests__/KnownHostsEditDialog.test.ts +15 -34
- package/edit/__tests__/cis.cattle.io.clusterscan.test.ts +3 -3
- package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +60 -68
- package/edit/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
- package/edit/__tests__/service.test.ts +2 -1
- package/edit/auth/ldap/__tests__/config.test.ts +14 -0
- package/edit/auth/ldap/config.vue +24 -0
- package/edit/auth/oidc.vue +159 -93
- package/edit/autoscaling.horizontalpodautoscaler/external-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/hpa-scaling-rule.vue +9 -6
- package/edit/autoscaling.horizontalpodautoscaler/index.vue +7 -2
- package/edit/autoscaling.horizontalpodautoscaler/metric-identifier.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/metric-object-reference.vue +7 -5
- package/edit/autoscaling.horizontalpodautoscaler/metric-target.vue +5 -3
- package/edit/autoscaling.horizontalpodautoscaler/metrics-row.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/object-metric.vue +2 -2
- package/edit/autoscaling.horizontalpodautoscaler/pod-metric.vue +1 -1
- package/edit/autoscaling.horizontalpodautoscaler/resource-metric.vue +2 -2
- package/edit/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +30 -31
- package/edit/{cis.cattle.io.clusterscanbenchmark.vue → compliance.cattle.io.clusterscanbenchmark.vue} +4 -4
- package/edit/{cis.cattle.io.clusterscanprofile.vue → compliance.cattle.io.clusterscanprofile.vue} +5 -5
- package/edit/configmap.vue +12 -2
- package/edit/constraints.gatekeeper.sh.constraint/index.vue +1 -0
- package/edit/fleet.cattle.io.gitrepo.vue +70 -256
- package/edit/fleet.cattle.io.helmop.vue +786 -0
- package/edit/helm.cattle.io.projecthelmchart.vue +1 -0
- package/edit/k8s.cni.cncf.io.networkattachmentdefinition.vue +1 -0
- package/edit/logging-flow/index.vue +2 -2
- package/edit/logging.banzaicloud.io.output/index.vue +2 -1
- package/edit/logging.banzaicloud.io.output/providers/awsElasticsearch.vue +8 -9
- package/edit/logging.banzaicloud.io.output/providers/azurestorage.vue +19 -19
- package/edit/logging.banzaicloud.io.output/providers/cloudwatch.vue +23 -23
- package/edit/logging.banzaicloud.io.output/providers/datadog.vue +19 -19
- package/edit/logging.banzaicloud.io.output/providers/elasticsearch.vue +14 -14
- package/edit/logging.banzaicloud.io.output/providers/forward.vue +12 -12
- package/edit/logging.banzaicloud.io.output/providers/gcs.vue +23 -23
- package/edit/logging.banzaicloud.io.output/providers/gelf.vue +6 -6
- package/edit/logging.banzaicloud.io.output/providers/kafka.vue +10 -10
- package/edit/logging.banzaicloud.io.output/providers/kinesisStream.vue +8 -8
- package/edit/logging.banzaicloud.io.output/providers/logdna.vue +17 -17
- package/edit/logging.banzaicloud.io.output/providers/logz.vue +7 -7
- package/edit/logging.banzaicloud.io.output/providers/loki.vue +12 -12
- package/edit/logging.banzaicloud.io.output/providers/newrelic.vue +3 -3
- package/edit/logging.banzaicloud.io.output/providers/opensearch.vue +14 -14
- package/edit/logging.banzaicloud.io.output/providers/redis.vue +6 -6
- package/edit/logging.banzaicloud.io.output/providers/s3.vue +23 -23
- package/edit/logging.banzaicloud.io.output/providers/splunkHec.vue +13 -13
- package/edit/logging.banzaicloud.io.output/providers/sumologic.vue +2 -2
- package/edit/logging.banzaicloud.io.output/providers/syslog.vue +54 -54
- package/edit/management.cattle.io.fleetworkspace.vue +44 -10
- package/edit/management.cattle.io.oidcclient.vue +162 -0
- package/edit/management.cattle.io.project.vue +4 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/index.vue +1 -1
- package/edit/monitoring.coreos.com.alertmanagerconfig/receiverConfig.vue +5 -0
- package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -0
- package/edit/monitoring.coreos.com.receiver/auth.vue +3 -3
- package/edit/monitoring.coreos.com.receiver/index.vue +1 -0
- package/edit/monitoring.coreos.com.receiver/types/email.vue +1 -1
- package/edit/monitoring.coreos.com.route.vue +1 -0
- package/edit/namespace.vue +2 -4
- package/edit/networking.istio.io.destinationrule/index.vue +4 -1
- package/edit/networking.k8s.io.ingress/Certificate.vue +25 -8
- package/edit/networking.k8s.io.ingress/DefaultBackend.vue +2 -2
- package/edit/networking.k8s.io.ingress/Rule.vue +5 -11
- package/edit/networking.k8s.io.ingress/RulePath.vue +105 -96
- package/edit/networking.k8s.io.ingress/__tests__/Certificate.test.ts +37 -0
- package/edit/networking.k8s.io.ingress/index.vue +4 -1
- package/edit/networking.k8s.io.networkpolicy/PolicyRule.vue +6 -17
- package/edit/networking.k8s.io.networkpolicy/PolicyRulePort.vue +4 -2
- package/edit/networking.k8s.io.networkpolicy/PolicyRuleTarget.vue +69 -73
- package/edit/networking.k8s.io.networkpolicy/PolicyRules.vue +10 -16
- package/edit/networking.k8s.io.networkpolicy/__tests__/PolicyRuleTarget.test.ts +72 -41
- package/edit/networking.k8s.io.networkpolicy/__tests__/utils/mock.json +17 -1
- package/edit/networking.k8s.io.networkpolicy/index.vue +24 -32
- package/edit/node.vue +1 -0
- package/edit/persistentvolume/index.vue +7 -2
- package/edit/persistentvolumeclaim.vue +2 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +26 -12
- package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +69 -2
- package/edit/provisioning.cattle.io.cluster/__tests__/utils/rke2-test-data.ts +58 -0
- package/edit/provisioning.cattle.io.cluster/index.vue +21 -73
- package/edit/provisioning.cattle.io.cluster/rke2.vue +535 -428
- package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +49 -40
- package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +5 -3
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +5 -0
- package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +2 -2
- package/edit/resources.cattle.io.restore.vue +1 -1
- package/edit/secret/basic.vue +1 -0
- package/edit/secret/index.vue +129 -17
- package/edit/service.vue +21 -30
- package/edit/serviceaccount.vue +4 -1
- package/edit/storage.k8s.io.storageclass/index.vue +14 -9
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/aws-ebs.vue +34 -27
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/gce-pd.vue +15 -13
- package/edit/storage.k8s.io.storageclass/provisioners/kubernetes.io/vsphere-volume.vue +41 -39
- package/edit/workload/Job.vue +31 -34
- package/edit/workload/Upgrading.vue +5 -5
- package/edit/workload/index.vue +32 -32
- package/edit/workload/mixins/workload.js +0 -2
- package/edit/workload/storage/Mount.vue +1 -0
- package/edit/workload/storage/awsElasticBlockStore.vue +9 -7
- package/edit/workload/storage/azureDisk.vue +14 -10
- package/edit/workload/storage/azureFile.vue +9 -7
- package/edit/workload/storage/csi/index.vue +6 -9
- package/edit/workload/storage/emptyDir.vue +7 -5
- package/edit/workload/storage/gcePersistentDisk.vue +9 -7
- package/edit/workload/storage/hostPath.vue +7 -5
- package/edit/workload/storage/nfs.vue +8 -6
- package/edit/workload/storage/persistentVolumeClaim/index.vue +12 -10
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +20 -15
- package/edit/workload/storage/secret.vue +9 -6
- package/edit/workload/storage/vsphereVolume.vue +11 -7
- package/initialize/app-extended.js +7 -1
- package/list/{cis.cattle.io.clusterscan.vue → compliance.cattle.io.clusterscan.vue} +2 -2
- package/list/fleet.cattle.io.gitrepo.vue +1 -1
- package/list/fleet.cattle.io.helmop.vue +108 -0
- package/list/harvesterhci.io.management.cluster.vue +0 -17
- package/list/management.cattle.io.feature.vue +4 -288
- package/list/management.cattle.io.oidcclient.vue +108 -0
- package/list/management.cattle.io.podsecurityadmissionconfigurationtemplate.vue +8 -6
- package/list/management.cattle.io.user.vue +13 -20
- package/list/namespace.vue +6 -2
- package/list/node.vue +2 -0
- package/list/projectsecret.vue +345 -0
- package/list/secret.vue +109 -0
- package/list/workload.vue +6 -2
- package/machine-config/__tests__/vmwarevsphere.test.ts +5 -7
- package/machine-config/amazonec2.vue +3 -24
- package/machine-config/components/GCEImage.vue +374 -0
- package/machine-config/google.vue +617 -0
- package/machine-config/vmwarevsphere.vue +7 -17
- package/mixins/__tests__/brand.spec.ts +170 -0
- package/mixins/auth-config.js +8 -1
- package/mixins/brand.js +16 -17
- package/mixins/create-edit-view/impl.js +20 -1
- package/mixins/create-edit-view/index.js +5 -0
- package/mixins/preset.js +100 -0
- package/mixins/resource-fetch-api-pagination.js +73 -44
- package/mixins/resource-fetch.js +18 -8
- package/mixins/resource-table-watch.js +45 -0
- package/mixins/vue-select-overrides.js +1 -4
- package/models/__tests__/chart.test.ts +296 -0
- package/models/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
- package/models/__tests__/fleet.cattle.io.helmop.test.ts +224 -0
- package/models/__tests__/node.test.ts +7 -63
- package/models/__tests__/workload.test.ts +1 -0
- package/models/chart.js +157 -2
- package/models/cluster/node.js +2 -1
- package/models/cluster.js +32 -2
- package/models/cluster.x-k8s.io.machinedeployment.js +11 -2
- package/models/{cis.cattle.io.clusterscan.js → compliance.cattle.io.clusterscan.js} +8 -8
- package/models/{cis.cattle.io.clusterscanbenchmark.js → compliance.cattle.io.clusterscanbenchmark.js} +1 -1
- package/models/{cis.cattle.io.clusterscanprofile.js → compliance.cattle.io.clusterscanprofile.js} +5 -5
- package/models/{cis.cattle.io.clusterscanreport.js → compliance.cattle.io.clusterscanreport.js} +1 -1
- package/models/fleet-application.js +297 -0
- package/models/fleet.cattle.io.bundle.js +9 -8
- package/models/fleet.cattle.io.cluster.js +21 -4
- package/models/fleet.cattle.io.gitrepo.js +46 -382
- package/models/fleet.cattle.io.helmop.js +202 -0
- package/models/management.cattle.io.authconfig.js +1 -0
- package/models/management.cattle.io.cluster.js +0 -20
- package/models/management.cattle.io.feature.js +7 -1
- package/models/management.cattle.io.fleetworkspace.js +14 -1
- package/models/management.cattle.io.node.js +7 -22
- package/models/management.cattle.io.nodepool.js +12 -0
- package/models/management.cattle.io.oidcclient.js +18 -0
- package/models/management.cattle.io.registration.js +3 -0
- package/models/management.cattle.io.setting.js +0 -1
- package/models/namespace.js +12 -1
- package/models/provisioning.cattle.io.cluster.js +79 -115
- package/models/secret.js +157 -2
- package/models/service.js +28 -9
- package/models/storage.k8s.io.storageclass.js +2 -2
- package/models/workload.js +93 -53
- package/package.json +6 -5
- package/pages/about.vue +17 -61
- package/pages/account/index.vue +105 -116
- package/pages/auth/login.vue +2 -3
- package/pages/auth/setup.vue +36 -17
- package/pages/auth/verify.vue +13 -1
- package/pages/c/_cluster/apps/charts/AddRepoLink.vue +36 -0
- package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +80 -0
- package/pages/c/_cluster/apps/charts/AppChartCardSubHeader.vue +57 -0
- package/pages/c/_cluster/apps/charts/StatusLabel.vue +33 -0
- package/pages/c/_cluster/apps/charts/index.vue +501 -468
- package/pages/c/_cluster/apps/charts/install.vue +0 -1
- package/pages/c/_cluster/auth/roles/index.vue +72 -44
- package/pages/c/_cluster/auth/user.retention/index.vue +87 -78
- package/pages/c/_cluster/explorer/ConfigBadge.vue +1 -1
- package/pages/c/_cluster/explorer/EventsTable.vue +1 -1
- package/pages/c/_cluster/explorer/index.vue +16 -4
- package/pages/c/_cluster/explorer/projectsecret.vue +34 -0
- package/pages/c/_cluster/explorer/tools/index.vue +6 -6
- package/pages/c/_cluster/explorer/tools/pages/_page.vue +0 -1
- package/pages/c/_cluster/fleet/__tests__/index.test.ts +720 -0
- package/pages/c/_cluster/fleet/application/_resource/_id.vue +14 -0
- package/pages/c/_cluster/fleet/application/_resource/create.vue +14 -0
- package/pages/c/_cluster/fleet/application/create.vue +341 -0
- package/pages/c/_cluster/fleet/application/index.vue +139 -0
- package/pages/c/_cluster/fleet/graph/config.js +277 -0
- package/pages/c/_cluster/fleet/index.vue +866 -328
- package/pages/c/_cluster/fleet/settings/index.vue +229 -0
- package/pages/c/_cluster/longhorn/index.vue +5 -2
- package/pages/c/_cluster/settings/banners.vue +56 -2
- package/pages/c/_cluster/settings/brand.vue +2 -1
- package/pages/c/_cluster/settings/performance.vue +7 -26
- package/pages/c/_cluster/uiplugins/CatalogList/index.vue +16 -1
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +2 -2
- package/pages/c/_cluster/uiplugins/__tests__/AddExtensionRepos.test.ts +4 -7
- package/pages/c/_cluster/uiplugins/index.vue +98 -55
- package/pages/explorer/resource/detail/configmap.vue +42 -0
- package/pages/explorer/resource/detail/projectsecret.vue +9 -0
- package/pages/explorer/resource/detail/secret.vue +63 -0
- package/pages/home.vue +63 -117
- package/pages/prefs.vue +0 -1
- package/pages/support/index.vue +4 -6
- package/pkg/tsconfig.json +9 -9
- package/pkg/vue.config.js +1 -1
- package/plugins/clean-html.js +2 -0
- package/plugins/dashboard-store/__tests__/actions.test.ts +4 -1
- package/plugins/dashboard-store/__tests__/normalize.test.ts +223 -0
- package/plugins/dashboard-store/__tests__/resource-class.test.ts +191 -0
- package/plugins/dashboard-store/__tests__/utils/normalize-usecases.ts +1526 -0
- package/plugins/dashboard-store/actions.js +213 -56
- package/plugins/dashboard-store/getters.js +112 -24
- package/plugins/dashboard-store/mutations.js +61 -12
- package/plugins/dashboard-store/normalize.js +29 -19
- package/plugins/dashboard-store/resource-class.js +105 -21
- package/plugins/steve/__tests__/getters.test.ts +19 -12
- package/plugins/steve/__tests__/steve-class.test.ts +1 -0
- package/plugins/steve/__tests__/subscribe.spec.ts +324 -1
- package/plugins/steve/actions.js +37 -24
- package/plugins/steve/getters.js +47 -12
- package/plugins/steve/resourceWatcher.js +10 -3
- package/plugins/steve/steve-class.js +5 -0
- package/plugins/steve/steve-pagination-utils.ts +225 -43
- package/plugins/steve/subscribe.js +418 -53
- package/plugins/steve/worker/web-worker.advanced.js +5 -1
- package/rancher-components/BadgeState/BadgeState.vue +33 -52
- package/rancher-components/Banner/Banner.test.ts +51 -3
- package/rancher-components/Banner/Banner.vue +53 -10
- package/rancher-components/Form/Checkbox/Checkbox.test.ts +59 -1
- package/rancher-components/Form/Checkbox/Checkbox.vue +27 -9
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +51 -0
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +21 -3
- package/rancher-components/Form/Radio/RadioButton.test.ts +36 -1
- package/rancher-components/Form/Radio/RadioButton.vue +21 -5
- package/rancher-components/Form/Radio/RadioGroup.test.ts +60 -0
- package/rancher-components/Form/Radio/RadioGroup.vue +90 -39
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +4 -0
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +22 -1
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +32 -2
- package/rancher-components/RcButton/RcButton.vue +1 -1
- package/rancher-components/RcDropdown/RcDropdown.test.ts +98 -0
- package/rancher-components/RcDropdown/RcDropdown.vue +6 -0
- package/rancher-components/RcDropdown/RcDropdownItem.vue +8 -55
- package/rancher-components/RcDropdown/RcDropdownItemCheckbox.vue +69 -0
- package/rancher-components/RcDropdown/RcDropdownItemSelect.vue +93 -0
- package/rancher-components/RcDropdown/index.ts +2 -0
- package/rancher-components/RcDropdown/useDropdownContext.ts +21 -0
- package/rancher-components/RcDropdown/useDropdownItem.ts +92 -0
- package/rancher-components/RcItemCard/RcItemCard.test.ts +189 -0
- package/rancher-components/RcItemCard/RcItemCard.vue +430 -0
- package/rancher-components/RcItemCard/RcItemCardAction.vue +24 -0
- package/rancher-components/RcItemCard/index.ts +2 -0
- package/rancher-components/StringList/StringList.vue +1 -1
- package/scripts/build-pkg.sh +18 -23
- package/scripts/extension/publish +1 -1
- package/scripts/publish-shell.sh +1 -1
- package/static/loading-indicator.html +1 -1
- package/store/action-menu.js +26 -56
- package/store/auth.js +3 -0
- package/store/catalog.js +85 -25
- package/store/features.js +0 -1
- package/store/growl.js +97 -8
- package/store/i18n.js +5 -1
- package/store/index.js +48 -18
- package/store/notifications.ts +426 -0
- package/store/prefs.js +2 -8
- package/store/slideInPanel.ts +6 -0
- package/store/type-map.js +35 -20
- package/store/type-map.utils.ts +49 -6
- package/store/uiplugins.ts +15 -1
- package/types/fleet.d.ts +60 -1
- package/types/kube/kube-api.ts +34 -0
- package/types/notifications/index.ts +74 -0
- package/types/resources/fleet.d.ts +43 -0
- package/types/resources/pod-security-admission.ts +36 -0
- package/types/resources/settings.d.ts +107 -0
- package/types/resources/userPreferences.d.ts +13 -0
- package/types/shell/index.d.ts +949 -741
- package/types/store/dashboard-store.types.ts +57 -4
- package/types/store/pagination.types.ts +41 -9
- package/types/store/subscribe.types.ts +50 -0
- package/utils/__mocks__/tabbable.js +13 -0
- package/utils/__tests__/back-off.test.ts +354 -0
- package/utils/__tests__/create-yaml.test.ts +235 -0
- package/utils/__tests__/fleet.test.ts +148 -0
- package/utils/__tests__/kontainer.test.ts +19 -0
- package/utils/__tests__/object.test.ts +54 -1
- package/utils/__tests__/string.test.ts +273 -1
- package/utils/__tests__/time.test.ts +31 -0
- package/utils/auth.js +41 -6
- package/utils/back-off.ts +176 -0
- package/utils/cluster.js +24 -20
- package/utils/create-yaml.js +103 -9
- package/utils/crypto/encryption.ts +103 -0
- package/utils/cspAdaptor.ts +51 -0
- package/utils/error.js +26 -9
- package/utils/errorTranslate.json +410 -6
- package/utils/errorTranslateNew.json +39 -0
- package/utils/fleet-types.ts +0 -0
- package/utils/fleet.ts +204 -74
- package/utils/grafana.js +1 -0
- package/utils/kontainer.ts +3 -5
- package/utils/object.js +36 -12
- package/utils/pagination-utils.ts +50 -3
- package/utils/pagination-wrapper.ts +132 -50
- package/utils/perf-setting.utils.ts +28 -0
- package/utils/release-notes.ts +48 -0
- package/utils/roleFiltering.js +33 -0
- package/utils/selector-typed.ts +210 -0
- package/utils/selector.js +29 -6
- package/utils/settings.ts +4 -1
- package/utils/string.js +24 -0
- package/utils/style.ts +39 -0
- package/utils/{time.js → time.ts} +25 -6
- package/utils/uiplugins.ts +41 -8
- package/utils/v-sphere.ts +5 -1
- package/utils/validators/formRules/__tests__/index.test.ts +76 -6
- package/utils/validators/formRules/index.ts +99 -4
- package/utils/window.js +11 -7
- package/vue.config.js +1 -1
- package/.DS_Store +0 -0
- package/components/AssignTo.vue +0 -199
- package/components/DisableAuthProviderModal.vue +0 -115
- package/components/MoveModal.vue +0 -167
- package/components/PromptChangePassword.vue +0 -123
- package/components/ResourceList/Masthead-btn.vue +0 -225
- package/components/__tests__/ApplicationCard.test.ts +0 -27
- package/components/cards/ApplicationCard.vue +0 -145
- package/components/fleet/FleetBundleResources.vue +0 -86
- package/components/fleet/ForceDirectedTreeChart/chartIcons.js +0 -17
- package/components/formatter/RKETemplateName.vue +0 -37
- package/config/product/legacy.js +0 -62
- package/config/secret.js +0 -14
- package/dialog/SaveAsRKETemplateDialog.vue +0 -139
- package/models/etcdbackup.js +0 -45
- package/pages/auth copy/login.vue +0 -595
- package/pages/auth copy/logout.vue +0 -47
- package/pages/auth copy/setup.vue +0 -523
- package/pages/auth copy/verify.vue +0 -203
- package/pages/c/_cluster/fleet/GitRepoGraphConfig.js +0 -249
- package/pages/c/_cluster/legacy/pages/_page.vue +0 -29
- package/pages/c/_cluster/legacy/project/_page.vue +0 -57
- package/pages/c/_cluster/legacy/project/index.vue +0 -32
- package/pages/c/_cluster/legacy/project/pipelines.vue +0 -96
|
@@ -86,8 +86,16 @@ export function createLoadArgs(ctx, dataType) {
|
|
|
86
86
|
};
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
+
/**
|
|
90
|
+
* Add or update the given resource in the store
|
|
91
|
+
*
|
|
92
|
+
* invalidatePageCache
|
|
93
|
+
* - if something calls `load` then the cache no longer has a page so we invalidate it
|
|
94
|
+
* - however on resource create or remove this can lead to lists showing nothing... before the new page is fetched
|
|
95
|
+
* - for those cases avoid invaliding the page cache
|
|
96
|
+
*/
|
|
89
97
|
export function load(state, {
|
|
90
|
-
data, ctx, existing, cachedArgs
|
|
98
|
+
data, ctx, existing, cachedArgs, invalidatePageCache = true,
|
|
91
99
|
}) {
|
|
92
100
|
const { getters } = ctx;
|
|
93
101
|
// Optimisation. This can run once per resource loaded.., so pass in from parent
|
|
@@ -130,8 +138,12 @@ export function load(state, {
|
|
|
130
138
|
}
|
|
131
139
|
} else {
|
|
132
140
|
if (inMap) {
|
|
141
|
+
// In theory cached `entry` should match provided `existing`, so changes merged from `data` into `entry` should be reflected in `existing`.
|
|
142
|
+
// However.. there's a disconnect happening somewhere so merge data into `existing` before merging into `entry`
|
|
143
|
+
const latestEntry = existing && entry !== existing ? replaceResource(existing, data, getters) : data;
|
|
144
|
+
|
|
133
145
|
// There's already an entry in the store, so merge changes into it. The list entry is a reference to the map (and vice versa)
|
|
134
|
-
entry = replaceResource(entry,
|
|
146
|
+
entry = replaceResource(entry, latestEntry, getters);
|
|
135
147
|
} else {
|
|
136
148
|
// There's no entry, make a new proxy
|
|
137
149
|
entry = reactive(classify(ctx, data));
|
|
@@ -164,7 +176,8 @@ export function load(state, {
|
|
|
164
176
|
}
|
|
165
177
|
}
|
|
166
178
|
|
|
167
|
-
|
|
179
|
+
// see `invalidatePageCache` description above
|
|
180
|
+
cache.havePage = invalidatePageCache ? false : cache.havePage;
|
|
168
181
|
|
|
169
182
|
return entry;
|
|
170
183
|
}
|
|
@@ -413,13 +426,18 @@ export default {
|
|
|
413
426
|
loadSelector(state, {
|
|
414
427
|
type, entries, ctx, selector, revision
|
|
415
428
|
}) {
|
|
429
|
+
const keyField = ctx.getters.keyFieldForType(type);
|
|
416
430
|
const cache = registerType(state, type);
|
|
417
|
-
const
|
|
431
|
+
const proxies = reactive(entries.map((x) => classify(ctx, x)));
|
|
418
432
|
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
433
|
+
clear(cache.list);
|
|
434
|
+
cache.map.clear();
|
|
435
|
+
cache.generation++;
|
|
436
|
+
|
|
437
|
+
addObjects(cache.list, proxies);
|
|
438
|
+
|
|
439
|
+
for ( let i = 0 ; i < proxies.length ; i++ ) {
|
|
440
|
+
cache.map.set(proxies[i][keyField], proxies[i]);
|
|
423
441
|
}
|
|
424
442
|
|
|
425
443
|
cache.haveSelector[selector] = true;
|
|
@@ -471,29 +489,60 @@ export default {
|
|
|
471
489
|
data,
|
|
472
490
|
ctx,
|
|
473
491
|
pagination,
|
|
492
|
+
revision
|
|
474
493
|
}) {
|
|
475
494
|
if (!data) {
|
|
476
495
|
return;
|
|
477
496
|
}
|
|
497
|
+
// We loop over data three times in this mutator, which is bad
|
|
498
|
+
// However we're only dealing with pageSize worth of data and splitting out into three loops improves legibility
|
|
478
499
|
|
|
479
500
|
const keyField = ctx.getters.keyFieldForType(type);
|
|
480
|
-
|
|
501
|
+
|
|
502
|
+
// Why don't we just replace the map? Because we
|
|
503
|
+
// 1. nav to list, subscribe to changes
|
|
504
|
+
// 2. nav to resource in list
|
|
505
|
+
// 3. update to page comes over
|
|
506
|
+
// 4. need to update the reference the detail list uses
|
|
507
|
+
const proxiesMap = {};
|
|
508
|
+
const proxies = reactive(data.map((x) => {
|
|
509
|
+
proxiesMap[x[keyField]] = true;
|
|
510
|
+
|
|
511
|
+
return classify(ctx, x);
|
|
512
|
+
}));
|
|
481
513
|
const cache = registerType(state, type);
|
|
482
514
|
|
|
483
|
-
clear(cache.list);
|
|
484
|
-
cache.map.clear();
|
|
485
515
|
cache.generation++;
|
|
486
516
|
|
|
517
|
+
// Update list
|
|
518
|
+
clear(cache.list);
|
|
487
519
|
addObjects(cache.list, proxies);
|
|
488
520
|
|
|
521
|
+
// Update Map (remove stale)
|
|
522
|
+
cache.map.forEach((value, key) => {
|
|
523
|
+
if (!proxiesMap[value[keyField]]) {
|
|
524
|
+
cache.map.delete(key);
|
|
525
|
+
}
|
|
526
|
+
});
|
|
527
|
+
|
|
528
|
+
// Update Map (update existing / add latest)
|
|
489
529
|
for ( let i = 0 ; i < proxies.length ; i++ ) {
|
|
490
|
-
|
|
530
|
+
// This could probably be merged with the first loop above
|
|
531
|
+
const existing = cache.map.get(proxies[i][keyField]);
|
|
532
|
+
const latest = proxies[i];
|
|
533
|
+
|
|
534
|
+
if (existing) {
|
|
535
|
+
replaceResource(existing, latest, ctx.getters);
|
|
536
|
+
} else {
|
|
537
|
+
cache.map.set(latest[keyField], latest);
|
|
538
|
+
}
|
|
491
539
|
}
|
|
492
540
|
|
|
493
541
|
// havePage is of type `StorePagination`
|
|
494
542
|
cache.havePage = pagination;
|
|
495
543
|
cache.haveNamespace = undefined;
|
|
496
544
|
cache.haveAll = undefined;
|
|
545
|
+
cache.revision = revision;
|
|
497
546
|
|
|
498
547
|
return proxies;
|
|
499
548
|
},
|
|
@@ -2,8 +2,6 @@ import { SCHEMA } from '@shell/config/types';
|
|
|
2
2
|
|
|
3
3
|
import { applyChangeset, changeset, changesetConflicts } from '@shell/utils/object';
|
|
4
4
|
|
|
5
|
-
import { cloud2harvesterhci } from '@shell/utils/router'
|
|
6
|
-
|
|
7
5
|
export const KEY_FIELD_FOR = {
|
|
8
6
|
[SCHEMA]: '_id',
|
|
9
7
|
default: 'id',
|
|
@@ -19,28 +17,40 @@ export function normalizeType(type) {
|
|
|
19
17
|
return type;
|
|
20
18
|
}
|
|
21
19
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Detect and resolve conflicts from a 409 response.
|
|
22
|
+
*
|
|
23
|
+
* @param {*} initialValue the initial value before changes
|
|
24
|
+
* @param {*} userValue the value containing the local changes. this function will intentionally mutate this to contain changes made from the server
|
|
25
|
+
* @param {*} serverValue the very latest value from the server
|
|
26
|
+
* @returns If `value` has been successfully updated return a false-y value. Else they can't be resolved, return an array of errors to show the user.
|
|
27
|
+
*/
|
|
28
|
+
export async function handleConflict(initialValue, userValue, serverValue, store, storeNamespace, toJSON = (x) => x.toJSON()) {
|
|
29
|
+
// initial value
|
|
30
|
+
const initial = await store.dispatch(`${ storeNamespace }/cleanForDiff`, toJSON(initialValue), { root: true });
|
|
31
|
+
// changed value (user edits)
|
|
32
|
+
const user = await store.dispatch(`${ storeNamespace }/cleanForDiff`, toJSON(userValue), { root: true });
|
|
33
|
+
// server value
|
|
34
|
+
const server = await store.dispatch(`${ storeNamespace }/cleanForDiff`, toJSON(serverValue), { root: true });
|
|
35
|
+
|
|
36
|
+
// changes made to the server value
|
|
37
|
+
const serverChanges = changeset(initial, server);
|
|
38
|
+
// changes made locally
|
|
39
|
+
const userChanges = changeset(initial, user);
|
|
40
|
+
// Any incompatibilities between changes made locally and the server?
|
|
41
|
+
const actualConflicts = changesetConflicts(serverChanges, userChanges);
|
|
42
|
+
|
|
43
|
+
console.log('Background Change', serverChanges); // eslint-disable-line no-console
|
|
44
|
+
console.log('User Change', userChanges); // eslint-disable-line no-console
|
|
36
45
|
console.log('Conflicts', actualConflicts); // eslint-disable-line no-console
|
|
37
46
|
|
|
38
|
-
|
|
39
|
-
|
|
47
|
+
userValue.metadata.resourceVersion = serverValue.metadata.resourceVersion;
|
|
48
|
+
// Apply changes made on the server to the changed (user) value
|
|
49
|
+
applyChangeset(userValue, serverChanges);
|
|
40
50
|
|
|
41
51
|
if ( actualConflicts.length ) {
|
|
42
52
|
// Stop the save and let the user inspect and continue editing
|
|
43
|
-
const out = [
|
|
53
|
+
const out = [store.getters['i18n/t']('validation.conflict', { fields: actualConflicts.join(', '), fieldCount: actualConflicts.length })];
|
|
44
54
|
|
|
45
55
|
return out;
|
|
46
56
|
} else {
|
|
@@ -32,9 +32,10 @@ import isFunction from 'lodash/isFunction';
|
|
|
32
32
|
import isString from 'lodash/isString';
|
|
33
33
|
import { markRaw } from 'vue';
|
|
34
34
|
|
|
35
|
+
import { handleConflict } from '@shell/plugins/dashboard-store/normalize';
|
|
35
36
|
import { ExtensionPoint, ActionLocation } from '@shell/core/types';
|
|
36
37
|
import { getApplicableExtensionEnhancements } from '@shell/core/plugin-helpers';
|
|
37
|
-
import {
|
|
38
|
+
import { parse } from '@shell/utils/selector';
|
|
38
39
|
|
|
39
40
|
export const DNS_LIKE_TYPES = ['dnsLabel', 'dnsLabelRestricted', 'hostname'];
|
|
40
41
|
|
|
@@ -736,6 +737,17 @@ export default class Resource {
|
|
|
736
737
|
);
|
|
737
738
|
}
|
|
738
739
|
|
|
740
|
+
get stateColorPair() {
|
|
741
|
+
return {
|
|
742
|
+
state: this.stateDisplay,
|
|
743
|
+
color: this.stateSimpleColor
|
|
744
|
+
};
|
|
745
|
+
}
|
|
746
|
+
|
|
747
|
+
get stateSimpleColor() {
|
|
748
|
+
return this.stateColor.replace('text-', '');
|
|
749
|
+
}
|
|
750
|
+
|
|
739
751
|
get stateBackground() {
|
|
740
752
|
return this.stateColor.replace('text-', 'bg-');
|
|
741
753
|
}
|
|
@@ -886,6 +898,10 @@ export default class Resource {
|
|
|
886
898
|
return out;
|
|
887
899
|
}
|
|
888
900
|
|
|
901
|
+
get canEdit() {
|
|
902
|
+
return this.canUpdate && this.canCustomEdit;
|
|
903
|
+
}
|
|
904
|
+
|
|
889
905
|
// You can add custom actions by overriding your own availableActions (and probably reading super._availableActions)
|
|
890
906
|
get _availableActions() {
|
|
891
907
|
// get menu actions available by plugins configuration
|
|
@@ -1180,7 +1196,9 @@ export default class Resource {
|
|
|
1180
1196
|
}
|
|
1181
1197
|
|
|
1182
1198
|
// @TODO remove this once the API maps steve _type <-> k8s type in both directions
|
|
1183
|
-
|
|
1199
|
+
// `JSON.parse(JSON.stringify` - Completely disconnect the object we're going to send and `this`. This ensures that properties
|
|
1200
|
+
// removed from opt.data before sending (as part of cleanForSave) are not stripped from where they're still needed (`this`)
|
|
1201
|
+
opt.data = this.toSave() || JSON.parse(JSON.stringify(this));
|
|
1184
1202
|
|
|
1185
1203
|
if (opt.data._type) {
|
|
1186
1204
|
opt.data.type = opt.data._type;
|
|
@@ -1247,7 +1265,18 @@ export default class Resource {
|
|
|
1247
1265
|
|
|
1248
1266
|
const res = await this.$dispatch('request', { opt, type: this.type } );
|
|
1249
1267
|
|
|
1250
|
-
|
|
1268
|
+
// In theory...
|
|
1269
|
+
// 200 - resource could have finalizer (could hang around, keep resource to show deleting state)
|
|
1270
|
+
// 204 - resource should be gone gone (so remove immediately)
|
|
1271
|
+
// However...
|
|
1272
|
+
// 200 - this is the only status code returned
|
|
1273
|
+
if ( res?._status === 200 ) {
|
|
1274
|
+
// Show state (probably terminating) immediately, don't wait for resource.change or debounced resource.changes update
|
|
1275
|
+
// It would be neater to only do this in the debounced resource.changes world, but there's no neat / complete way to do this (paginationUtils will cause dep issues if imported)
|
|
1276
|
+
await this.$dispatch('load', {
|
|
1277
|
+
data: res, existing: this, invalidatePageCache: false
|
|
1278
|
+
});
|
|
1279
|
+
} else if ( res?._status === 204 ) {
|
|
1251
1280
|
// If there's no body, assume the resource was immediately deleted
|
|
1252
1281
|
// and drop it from the store as if a remove event happened.
|
|
1253
1282
|
await this.$dispatch('ws.resource.remove', { data: this });
|
|
@@ -1320,9 +1349,7 @@ export default class Resource {
|
|
|
1320
1349
|
this.currentRouter().push(location);
|
|
1321
1350
|
}
|
|
1322
1351
|
|
|
1323
|
-
goToEdit(moreQuery = {}) {
|
|
1324
|
-
const location = this.detailLocation;
|
|
1325
|
-
|
|
1352
|
+
goToEdit(moreQuery = {}, location = this.detailLocation) {
|
|
1326
1353
|
location.query = {
|
|
1327
1354
|
...location.query,
|
|
1328
1355
|
[MODE]: _EDIT,
|
|
@@ -1505,11 +1532,11 @@ export default class Resource {
|
|
|
1505
1532
|
}
|
|
1506
1533
|
}
|
|
1507
1534
|
|
|
1508
|
-
async saveYaml(yaml) {
|
|
1509
|
-
await this._saveYaml(yaml);
|
|
1535
|
+
async saveYaml(yaml, initialYaml) {
|
|
1536
|
+
await this._saveYaml(yaml, initialYaml);
|
|
1510
1537
|
}
|
|
1511
1538
|
|
|
1512
|
-
async _saveYaml(yaml) {
|
|
1539
|
+
async _saveYaml(yaml, initialYaml, depth = 0) {
|
|
1513
1540
|
/* Multipart support, but need to know the right cluster and work for management store
|
|
1514
1541
|
and "apply" seems to only work for create, not update.
|
|
1515
1542
|
|
|
@@ -1547,20 +1574,56 @@ export default class Resource {
|
|
|
1547
1574
|
data: yaml
|
|
1548
1575
|
});
|
|
1549
1576
|
} else {
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1577
|
+
try {
|
|
1578
|
+
res = await this.followLink('update', {
|
|
1579
|
+
method: 'PUT',
|
|
1580
|
+
headers,
|
|
1581
|
+
data: yaml
|
|
1582
|
+
});
|
|
1583
|
+
} catch (err) {
|
|
1584
|
+
const IS_ERR_409 = err.status === 409 || err._status === 409;
|
|
1585
|
+
|
|
1586
|
+
// Conflict, the resource being edited has changed since starting editing
|
|
1587
|
+
if (IS_ERR_409 && depth === 0 && initialYaml) {
|
|
1588
|
+
const inStore = this.$rootGetters['currentStore'](this.type);
|
|
1589
|
+
|
|
1590
|
+
const initialValue = jsyaml.load(initialYaml);
|
|
1591
|
+
const value = jsyaml.load(yaml);
|
|
1592
|
+
const liveValue = this.$rootGetters[`${ inStore }/byId`](this.type, this.id);
|
|
1593
|
+
|
|
1594
|
+
const handledConflictErr = await handleConflict(
|
|
1595
|
+
initialValue,
|
|
1596
|
+
value,
|
|
1597
|
+
liveValue,
|
|
1598
|
+
{
|
|
1599
|
+
dispatch: this.$dispatch,
|
|
1600
|
+
getters: this.$rootGetters
|
|
1601
|
+
},
|
|
1602
|
+
this.$rootGetters['currentStore'](this.type),
|
|
1603
|
+
(v) => v.toJSON ? v.toJSON() : v
|
|
1604
|
+
);
|
|
1605
|
+
|
|
1606
|
+
if (handledConflictErr === false) {
|
|
1607
|
+
// It was automatically figured out, save again
|
|
1608
|
+
await this._saveYaml(jsyaml.dump(value), null, depth + 1);
|
|
1609
|
+
} else {
|
|
1610
|
+
throw handledConflictErr;
|
|
1611
|
+
}
|
|
1612
|
+
} else {
|
|
1613
|
+
throw err;
|
|
1614
|
+
}
|
|
1615
|
+
}
|
|
1555
1616
|
}
|
|
1556
1617
|
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1618
|
+
if (res) {
|
|
1619
|
+
await this.$dispatch(`load`, {
|
|
1620
|
+
data: res,
|
|
1621
|
+
existing: (isCreate ? this : undefined)
|
|
1622
|
+
});
|
|
1561
1623
|
|
|
1562
|
-
|
|
1563
|
-
|
|
1624
|
+
if (this.isSpoofed) {
|
|
1625
|
+
await this.$dispatch('cluster/findAll', { type: this.type, opt: { force: true } }, { root: true });
|
|
1626
|
+
}
|
|
1564
1627
|
}
|
|
1565
1628
|
}
|
|
1566
1629
|
|
|
@@ -1793,6 +1856,7 @@ export default class Resource {
|
|
|
1793
1856
|
}
|
|
1794
1857
|
|
|
1795
1858
|
if ( r.selector ) {
|
|
1859
|
+
// A selector is a stringified version of a matchLabel (https://github.com/kubernetes/apimachinery/blob/master/pkg/labels/selector.go#L1010)
|
|
1796
1860
|
addObjects(out.selectors, {
|
|
1797
1861
|
type: r.toType,
|
|
1798
1862
|
namespace: r.toNamespace,
|
|
@@ -1836,15 +1900,35 @@ export default class Resource {
|
|
|
1836
1900
|
}
|
|
1837
1901
|
|
|
1838
1902
|
async _findRelationship(rel, direction) {
|
|
1903
|
+
// Find resources for this resource's metadata.relationships (steve prop)
|
|
1904
|
+
// These will either reference a selector (stringified matchLabels) OR specific resources (ids)
|
|
1839
1905
|
const { selectors, ids } = this._relationshipsFor(rel, direction);
|
|
1840
1906
|
const out = [];
|
|
1841
1907
|
|
|
1908
|
+
// Find all the resources that match the selector
|
|
1842
1909
|
for ( const sel of selectors ) {
|
|
1843
|
-
const
|
|
1910
|
+
const {
|
|
1911
|
+
type,
|
|
1912
|
+
selector,
|
|
1913
|
+
namespace,
|
|
1914
|
+
opt,
|
|
1915
|
+
} = sel;
|
|
1916
|
+
const matching = await this.$dispatch('findLabelSelector', {
|
|
1917
|
+
type,
|
|
1918
|
+
matching: {
|
|
1919
|
+
namespace,
|
|
1920
|
+
labelSelector: { matchExpressions: parse(selector) }
|
|
1921
|
+
},
|
|
1922
|
+
opts: {
|
|
1923
|
+
transient: true,
|
|
1924
|
+
...opt,
|
|
1925
|
+
},
|
|
1926
|
+
});
|
|
1844
1927
|
|
|
1845
1928
|
addObjects(out, matching.data);
|
|
1846
1929
|
}
|
|
1847
1930
|
|
|
1931
|
+
// Find all the resources that match the required id's
|
|
1848
1932
|
for ( const obj of ids ) {
|
|
1849
1933
|
const { type, id } = obj;
|
|
1850
1934
|
let matching = this.$getters['byId'](type, id);
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import _getters from '@shell/plugins/steve/getters';
|
|
2
2
|
|
|
3
|
-
const {
|
|
3
|
+
const {
|
|
4
|
+
urlFor, urlOptions, pathExistsInSchema, isSteveUrl
|
|
5
|
+
} = _getters;
|
|
4
6
|
|
|
5
7
|
describe('steve: getters:', () => {
|
|
6
8
|
describe('urlFor', () => {
|
|
@@ -66,18 +68,17 @@ describe('steve: getters:', () => {
|
|
|
66
68
|
});
|
|
67
69
|
|
|
68
70
|
describe('urlOptions', () => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
const urlOptionsGetter = urlOptions();
|
|
71
|
+
const urlOptionsGetter = urlOptions(undefined, {
|
|
72
|
+
isSteveUrl: isSteveUrl(),
|
|
73
|
+
isSteveCacheUrl: () => false,
|
|
74
|
+
});
|
|
75
|
+
const urlOptionsGetterVaiOn = urlOptions(undefined, {
|
|
76
|
+
isSteveUrl: isSteveUrl(),
|
|
77
|
+
isSteveCacheUrl: () => true,
|
|
78
|
+
});
|
|
78
79
|
|
|
79
80
|
it('expects urlOptions to return a function', () => {
|
|
80
|
-
expect(typeof urlOptions(
|
|
81
|
+
expect(typeof urlOptions()).toBe('function');
|
|
81
82
|
});
|
|
82
83
|
it('returns undefined when called without params', () => {
|
|
83
84
|
expect(urlOptionsGetter()).toBeUndefined();
|
|
@@ -103,6 +104,12 @@ describe('steve: getters:', () => {
|
|
|
103
104
|
it('returns a string with a multiple filter statements applied and formatted for steve if a single filter statement is applied and the url starts with "/v1"', () => {
|
|
104
105
|
expect(urlOptionsGetter('/v1/foo', { filter: { bar: 'baz', far: 'faz' } })).toBe('/v1/foo?filter=bar=baz&far=faz&exclude=metadata.managedFields');
|
|
105
106
|
});
|
|
107
|
+
it('returns a string with correct equality for vai off', () => {
|
|
108
|
+
expect(urlOptionsGetter('/v1/foo', { filter: { bar: 'baz', far: 'faz' } })).toBe('/v1/foo?filter=bar=baz&far=faz&exclude=metadata.managedFields');
|
|
109
|
+
});
|
|
110
|
+
it('returns a string with correct equality for vai on', () => {
|
|
111
|
+
expect(urlOptionsGetterVaiOn('/v1/foo', { filter: { bar: 'baz', far: 'faz' } })).toBe('/v1/foo?filter=bar~baz&far~faz&exclude=metadata.managedFields');
|
|
112
|
+
});
|
|
106
113
|
it('returns a string with a labelSelector and formatted for steve if the url starts with "/v1"', () => {
|
|
107
114
|
expect(urlOptionsGetter('/v1/foo', { labelSelector: 'a=b' })).toBe('/v1/foo?labelSelector=a=b&exclude=metadata.managedFields');
|
|
108
115
|
});
|
|
@@ -113,7 +120,7 @@ describe('steve: getters:', () => {
|
|
|
113
120
|
expect(urlOptionsGetter('/v1/foo', { excludeFields: ['bar'] })).toBe('/v1/foo?exclude=bar');
|
|
114
121
|
});
|
|
115
122
|
it('returns a string without an exclude statement for "managedFields" if omitExcludeFields includes it and the url starts with "/v1/"', () => {
|
|
116
|
-
expect(urlOptionsGetter('/v1/foo', { omitExcludeFields: ['metadata.managedFields'] })).toBe('/v1/foo
|
|
123
|
+
expect(urlOptionsGetter('/v1/foo', { omitExcludeFields: ['metadata.managedFields'] })).toBe('/v1/foo');
|
|
117
124
|
});
|
|
118
125
|
it('returns a string without an exclude statement if excludeFields is set but the url does not start with "/v1/"', () => {
|
|
119
126
|
expect(urlOptionsGetter('foo', { excludeFields: ['bar'] })).toBe('foo');
|