@rancher/shell 0.1.2 → 0.1.4
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/suse/dark/rancher-logo.svg +1 -148
- package/assets/brand/suse/rancher-logo.svg +1 -130
- package/assets/images/featured/img1.jpg +0 -0
- package/assets/images/featured.jpg +0 -0
- package/assets/images/generic-plugin.svg +7 -0
- package/assets/styles/themes/_dark.scss +3 -0
- package/assets/styles/themes/_light.scss +3 -0
- package/assets/styles/themes/_suse.scss +1 -1
- package/assets/translations/en-us.yaml +209 -813
- package/assets/translations/zh-hans.yaml +28 -792
- package/components/ActionMenu.vue +3 -3
- package/components/AsyncButton.vue +17 -2
- package/components/ButtonDropdown.vue +4 -0
- package/components/Carousel.vue +291 -0
- package/components/CodeMirror.vue +6 -8
- package/components/CommunityLinks.vue +70 -19
- package/components/ContainerResourceLimit.vue +14 -0
- package/components/CruResource.vue +11 -3
- package/components/Dialog.vue +102 -0
- package/components/ExplorerMembers.vue +121 -0
- package/components/ExplorerProjectsNamespaces.vue +404 -0
- package/components/GrafanaDashboard.vue +17 -2
- package/components/IconMessage.vue +9 -1
- package/components/LocaleSelector.vue +114 -0
- package/components/PromptModal.vue +2 -3
- package/components/ResourceList/index.vue +1 -1
- package/components/ResourceTable.vue +9 -7
- package/components/SimpleBox.vue +6 -4
- package/components/SingleClusterInfo.vue +1 -1
- package/components/SortableTable/index.vue +18 -25
- package/components/SortableTable/selection.js +1 -0
- package/components/Tabbed/Tab.vue +5 -0
- package/components/Tabbed/index.vue +29 -2
- package/components/auth/AzureWarning.vue +5 -1
- package/components/auth/Principal.vue +2 -1
- package/components/auth/RoleDetailEdit.vue +18 -11
- package/components/fleet/FleetBundles.vue +8 -3
- package/components/fleet/FleetRepos.vue +0 -2
- package/components/fleet/FleetSummary.vue +6 -0
- package/components/form/KeyValue.vue +80 -58
- package/components/form/NameNsDescription.vue +12 -8
- package/components/form/NodeScheduling.vue +1 -1
- package/components/form/ResourceTabs/index.vue +5 -1
- package/components/form/WorkloadPorts.vue +1 -1
- package/components/formatter/ClusterLink.vue +3 -7
- package/components/formatter/WorkloadHealthScale.vue +1 -1
- package/components/nav/Header.vue +9 -9
- package/components/nav/NamespaceFilter.vue +10 -7
- package/components/nav/TopLevelMenu.vue +10 -65
- package/components/nav/WindowManager/ContainerLogs.vue +1 -1
- package/config/footer.js +13 -14
- package/config/labels-annotations.js +2 -1
- package/config/product/explorer.js +5 -4
- package/config/product/harvester-manager.js +64 -2
- package/config/product/legacy.js +0 -47
- package/config/product/manager.js +9 -0
- package/config/product/multi-cluster-apps.js +0 -12
- package/config/product/settings.js +12 -1
- package/config/product/uiplugins.js +17 -0
- package/config/settings.js +37 -72
- package/config/table-headers.js +0 -1
- package/config/types.js +9 -25
- package/config/uiplugins.js +60 -0
- package/content/docs/en-us/getting-started.md +1 -26
- package/core/plugin-routes.ts +34 -22
- package/core/plugin.ts +15 -3
- package/core/plugins-loader.js +2 -0
- package/core/plugins.js +91 -36
- package/core/types.ts +7 -1
- package/detail/provisioning.cattle.io.cluster.vue +15 -2
- package/detail/workload/index.vue +11 -5
- package/{components/dialog → dialog}/AddClusterMemberDialog.vue +0 -0
- package/{components/dialog → dialog}/AddCustomBadgeDialog.vue +0 -0
- package/{components/dialog → dialog}/AddProjectMemberDialog.vue +0 -0
- package/{components/dialog → dialog}/AddonConfigConfirmationDialog.vue +0 -0
- package/dialog/DiagnosticTimingsDialog.vue +116 -0
- package/{components/dialog → dialog}/DrainNode.vue +0 -0
- package/{components/dialog → dialog}/ForceMachineRemoveDialog.vue +0 -0
- package/{components/dialog → dialog}/GenericPrompt.vue +0 -0
- package/{components/dialog → dialog}/RollbackWorkloadDialog.vue +0 -0
- package/{components/dialog → dialog}/RotateCertificatesDialog.vue +9 -3
- package/{components/dialog → dialog}/RotateEncryptionKeyDialog.vue +0 -0
- package/{components/dialog → dialog}/SaveAsRKETemplateDialog.vue +0 -0
- package/{components/dialog → dialog}/ScaleMachineDownDialog.vue +0 -0
- package/edit/auth/azuread.vue +44 -6
- package/edit/management.cattle.io.project.vue +2 -2
- package/edit/namespace.vue +17 -10
- package/edit/networking.k8s.io.ingress/index.vue +2 -2
- package/edit/persistentvolume/index.vue +3 -0
- package/edit/persistentvolumeclaim.vue +1 -0
- package/edit/pod.vue +27 -0
- package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +1 -1
- package/edit/provisioning.cattle.io.cluster/MachinePool.vue +33 -5
- package/edit/provisioning.cattle.io.cluster/rke2.vue +76 -5
- package/edit/service.vue +8 -6
- package/edit/workload/__tests__/Upgrading.test.ts +1 -0
- package/edit/workload/index.vue +375 -15
- package/edit/workload/mixins/workload.js +62 -7
- package/edit/workload/storage/ContainerMountPaths.vue +240 -0
- package/edit/workload/storage/Mount.vue +1 -0
- package/edit/workload/storage/awsElasticBlockStore.vue +20 -1
- package/edit/workload/storage/azureDisk.vue +22 -2
- package/edit/workload/storage/azureFile.vue +20 -2
- package/edit/workload/storage/csi/index.vue +23 -1
- package/edit/workload/storage/gcePersistentDisk.vue +20 -2
- package/edit/workload/storage/index.vue +23 -49
- package/edit/workload/storage/persistentVolumeClaim/persistentvolumeclaim.vue +1 -0
- package/edit/workload/storage/vsphereVolume.vue +11 -1
- package/layouts/default.vue +63 -32
- package/layouts/error.vue +5 -1
- package/layouts/home.vue +14 -5
- package/layouts/plain.vue +10 -5
- package/list/harvesterhci.io.management.cluster.vue +74 -33
- package/list/management.cattle.io.setting.vue +3 -3
- package/list/namespace.vue +3 -5
- package/list/provisioning.cattle.io.cluster.vue +1 -1
- package/machine-config/amazonec2.vue +2 -0
- package/machine-config/harvester.vue +100 -51
- package/middleware/authenticated.js +56 -52
- package/mixins/form-validation.js +1 -1
- package/mixins/resource-fetch.js +3 -1
- package/models/catalog.cattle.io.uiplugin.js +34 -0
- package/models/cluster/node.js +25 -2
- package/models/fleet.cattle.io.bundle.js +27 -20
- package/models/harvesterhci.io.management.cluster.js +200 -5
- package/models/management.cattle.io.cluster.js +1 -1
- package/models/management.cattle.io.clusterroletemplatebinding.js +9 -0
- package/models/management.cattle.io.project.js +23 -2
- package/models/namespace.js +19 -3
- package/models/pod.js +19 -2
- package/models/provisioning.cattle.io.cluster.js +16 -6
- package/models/workload.js +9 -246
- package/models/workload.service.js +314 -0
- package/nuxt.config.js +80 -34
- package/package.json +107 -108
- package/pages/auth/login.vue +11 -2
- package/pages/auth/setup.vue +1 -1
- package/pages/c/_cluster/_product/members/index.vue +3 -93
- package/pages/c/_cluster/_product/projectsnamespaces.vue +6 -403
- package/pages/c/_cluster/apps/charts/index.vue +46 -1
- package/pages/c/_cluster/apps/charts/install.vue +10 -9
- package/pages/c/_cluster/explorer/index.vue +72 -9
- package/pages/c/_cluster/explorer/tools/index.vue +12 -5
- package/pages/c/_cluster/mcapps/index.vue +1 -1
- package/pages/c/_cluster/settings/brand.vue +0 -40
- package/pages/c/_cluster/settings/links.vue +200 -0
- package/pages/c/_cluster/settings/performance.vue +19 -16
- package/pages/c/_cluster/uiplugins/DeveloperInstallDialog.vue +232 -0
- package/pages/c/_cluster/uiplugins/InstallDialog.vue +242 -0
- package/pages/c/_cluster/uiplugins/PluginInfoPanel.vue +284 -0
- package/pages/c/_cluster/uiplugins/RemoveUIPlugins.vue +130 -0
- package/pages/c/_cluster/uiplugins/SetupUIPlugins.vue +253 -0
- package/pages/c/_cluster/uiplugins/UninstallDialog.vue +115 -0
- package/pages/c/_cluster/uiplugins/index.vue +694 -0
- package/pages/diagnostic.vue +185 -101
- package/pages/docs/_doc.vue +3 -1
- package/pages/fail-whale.vue +1 -10
- package/pages/home.vue +21 -56
- package/pages/index.vue +18 -4
- package/pages/prefs.vue +108 -86
- package/pages/safeMode.vue +17 -0
- package/pages/support/index.vue +23 -15
- package/pkg/auto-import.js +44 -7
- package/pkg/dynamic-importer.lib.js +4 -0
- package/pkg/dynamic-plugin-loader.js +28 -0
- package/pkg/import.js +2 -2
- package/pkg/model-loader-require.lib.js +3 -0
- package/pkg/vue.config.js +9 -6
- package/plugins/dashboard-store/model-loader-require.js +12 -0
- package/plugins/dashboard-store/model-loader.js +4 -1
- package/plugins/dashboard-store/resource-class.js +12 -5
- package/plugins/formatters.js +15 -0
- package/plugins/plugin.js +56 -4
- package/plugins/steve/actions.js +1 -1
- package/plugins/steve/index.js +6 -4
- package/plugins/steve/mutations.js +1 -1
- package/plugins/steve/subscribe.js +89 -56
- package/plugins/steve/web-worker.steve-sub-worker.js +24 -15
- package/promptRemove/management.cattle.io.globalrole.vue +47 -0
- package/promptRemove/management.cattle.io.roletemplate.vue +47 -0
- package/promptRemove/mixin/roleDeletionCheck.js +97 -0
- package/rancher-components/Form/Checkbox/Checkbox.test.ts +77 -0
- package/rancher-components/Form/Checkbox/Checkbox.vue +12 -2
- package/scripts/build-pkg.sh +48 -2
- package/scripts/drone-build-pkg.sh +31 -0
- package/scripts/publish-shell.sh +11 -12
- package/scripts/serve-pkgs +17 -10
- package/scripts/sync-shell-deps +37 -0
- package/store/catalog.js +12 -9
- package/store/i18n.js +26 -12
- package/store/index.js +4 -181
- package/store/prefs.js +46 -2
- package/store/type-map.js +47 -33
- package/store/uiplugins.ts +15 -61
- package/utils/__tests__/object.test.ts +0 -24
- package/utils/__tests__/selector.test.ts +1 -1
- package/utils/cluster.js +1 -1
- package/utils/custom-validators.js +1 -12
- package/utils/dynamic-importer.js +5 -1
- package/utils/grafana.js +2 -6
- package/utils/socket.js +41 -20
- package/utils/string.js +1 -7
- package/utils/validators/formRules/__tests__/index.test.ts +108 -0
- package/utils/validators/formRules/index.ts +9 -1
- package/utils/validators/setting.js +0 -35
- package/yarn-error.log +195 -0
- package/components/FilterLabel.vue +0 -254
- package/components/HarvesterUpgradeProgressBarList.vue +0 -109
- package/components/VMConsoleBar.vue +0 -87
- package/components/dialog/harvester/AddHotplugModal.vue +0 -159
- package/components/dialog/harvester/BackupModal.vue +0 -117
- package/components/dialog/harvester/CloneTemplate.vue +0 -125
- package/components/dialog/harvester/EjectCDROMDialog.vue +0 -157
- package/components/dialog/harvester/ExportImageDialog.vue +0 -152
- package/components/dialog/harvester/MaintenanceDialog.vue +0 -94
- package/components/dialog/harvester/MigrationDialog.vue +0 -154
- package/components/dialog/harvester/RestoreDialog.vue +0 -153
- package/components/dialog/harvester/SupportBundle.vue +0 -217
- package/components/dialog/harvester/UnplugVolume.vue +0 -108
- package/components/form/SerialConsole/index.vue +0 -267
- package/components/formatter/AttachVMWithName.vue +0 -46
- package/components/formatter/CloudInitType.vue +0 -27
- package/components/formatter/HarvesterBackupTargetValidation.vue +0 -43
- package/components/formatter/HarvesterCPUUsed.vue +0 -122
- package/components/formatter/HarvesterDiskState.vue +0 -66
- package/components/formatter/HarvesterHostName.vue +0 -66
- package/components/formatter/HarvesterIpAddress.vue +0 -90
- package/components/formatter/HarvesterMemoryUsed.vue +0 -140
- package/components/formatter/HarvesterMigrationState.vue +0 -85
- package/components/formatter/HarvesterNodeName.vue +0 -49
- package/components/formatter/HarvesterStorageUsed.vue +0 -194
- package/components/formatter/HarvesterVmState.vue +0 -123
- package/components/nav/HarvesterUpgrade.vue +0 -232
- package/components/novnc/NovncConsole.vue +0 -93
- package/components/novnc/NovncConsoleItem.vue +0 -89
- package/components/novnc/NovncConsoleWrapper.vue +0 -243
- package/config/harvester-map.js +0 -44
- package/config/harvester-table-headers.js +0 -27
- package/config/product/harvester.js +0 -305
- package/detail/harvesterhci.io.host/HarvesterHostBasic.vue +0 -364
- package/detail/harvesterhci.io.host/HarvesterHostDisk.vue +0 -200
- package/detail/harvesterhci.io.host/HarvesterHostNetwork.vue +0 -89
- package/detail/harvesterhci.io.host/VirtualMachineInstance.vue +0 -134
- package/detail/harvesterhci.io.host/index.vue +0 -243
- package/detail/harvesterhci.io.virtualmachinebackup/index.vue +0 -221
- package/detail/harvesterhci.io.virtualmachineimage.vue +0 -118
- package/detail/kubevirt.io.virtualmachine/VirtualMachineTabs/VirtualMachineBasics.vue +0 -279
- package/detail/kubevirt.io.virtualmachine/VirtualMachineTabs/VirtualMachineEvents.vue +0 -75
- package/detail/kubevirt.io.virtualmachine/VirtualMachineTabs/VirtualMachineKeypairs.vue +0 -114
- package/detail/kubevirt.io.virtualmachine/VirtualMachineTabs/VirtualMachineMigration.vue +0 -79
- package/detail/kubevirt.io.virtualmachine/index.vue +0 -213
- package/edit/harvesterhci.io.cloudtemplate.vue +0 -123
- package/edit/harvesterhci.io.host/HarvesterDisk.vue +0 -262
- package/edit/harvesterhci.io.host/index.vue +0 -533
- package/edit/harvesterhci.io.keypair.vue +0 -112
- package/edit/harvesterhci.io.managedchart/index.vue +0 -25
- package/edit/harvesterhci.io.managedchart/rancher-monitoring.vue +0 -172
- package/edit/harvesterhci.io.networkattachmentdefinition.vue +0 -210
- package/edit/harvesterhci.io.setting/additional-ca.vue +0 -36
- package/edit/harvesterhci.io.setting/backup-target.vue +0 -182
- package/edit/harvesterhci.io.setting/http-proxy.vue +0 -79
- package/edit/harvesterhci.io.setting/index.vue +0 -201
- package/edit/harvesterhci.io.setting/overcommit-config.vue +0 -94
- package/edit/harvesterhci.io.setting/ssl-certificates.vue +0 -117
- package/edit/harvesterhci.io.setting/ssl-parameters.vue +0 -161
- package/edit/harvesterhci.io.setting/support-bundle-image.vue +0 -134
- package/edit/harvesterhci.io.setting/support-bundle-namespaces.vue +0 -73
- package/edit/harvesterhci.io.setting/vip-pools.vue +0 -244
- package/edit/harvesterhci.io.setting/vm-force-reset-policy.vue +0 -81
- package/edit/harvesterhci.io.virtualmachinebackup.vue +0 -256
- package/edit/harvesterhci.io.virtualmachineimage.vue +0 -364
- package/edit/harvesterhci.io.virtualmachinetemplateversion.vue +0 -340
- package/edit/harvesterhci.io.volume.vue +0 -195
- package/edit/kubevirt.io.virtualmachine/VirtualMachineAccessCredentials/AccessCredentialsUsers.vue +0 -190
- package/edit/kubevirt.io.virtualmachine/VirtualMachineAccessCredentials/index.vue +0 -212
- package/edit/kubevirt.io.virtualmachine/VirtualMachineAccessCredentials/type/basicAuth.vue +0 -94
- package/edit/kubevirt.io.virtualmachine/VirtualMachineAccessCredentials/type/sshkey.vue +0 -85
- package/edit/kubevirt.io.virtualmachine/VirtualMachineCloudConfig/DataTemplate.vue +0 -153
- package/edit/kubevirt.io.virtualmachine/VirtualMachineCloudConfig/index.vue +0 -279
- package/edit/kubevirt.io.virtualmachine/VirtualMachineCpuMemory.vue +0 -113
- package/edit/kubevirt.io.virtualmachine/VirtualMachineNetwork/__tests__/HarvesterEditNetwork.test.ts +0 -41
- package/edit/kubevirt.io.virtualmachine/VirtualMachineNetwork/base.vue +0 -281
- package/edit/kubevirt.io.virtualmachine/VirtualMachineNetwork/index.vue +0 -142
- package/edit/kubevirt.io.virtualmachine/VirtualMachineReserved.vue +0 -54
- package/edit/kubevirt.io.virtualmachine/VirtualMachineSSHKey.vue +0 -256
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/index.vue +0 -391
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/__tests__/HarvesterEditContainer.test.ts +0 -40
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/__tests__/HarvesterEditExisting.test.ts +0 -102
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/__tests__/HarvesterEditVMImage.test.ts +0 -117
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/__tests__/HarvesterEditVolume.test.ts +0 -74
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/container.vue +0 -132
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/existing.vue +0 -303
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/vmImage.vue +0 -285
- package/edit/kubevirt.io.virtualmachine/VirtualMachineVolume/type/volume.vue +0 -188
- package/edit/kubevirt.io.virtualmachine/index.vue +0 -642
- package/edit/network.harvesterhci.io.clusternetwork/index.vue +0 -19
- package/edit/network.harvesterhci.io.clusternetwork/vlan.vue +0 -134
- package/edit/workload/types/Deployment.vue +0 -377
- package/edit/workload/types/Generic.vue +0 -295
- package/list/harvesterhci.io.cloudtemplate.vue +0 -78
- package/list/harvesterhci.io.dashboard/HarvesterUpgrade.vue +0 -211
- package/list/harvesterhci.io.dashboard/UpgradeInfo.vue +0 -40
- package/list/harvesterhci.io.dashboard/index.vue +0 -752
- package/list/harvesterhci.io.host/index.vue +0 -186
- package/list/harvesterhci.io.networkattachmentdefinition.vue +0 -167
- package/list/harvesterhci.io.setting.vue +0 -241
- package/list/harvesterhci.io.virtualmachinebackup.vue +0 -172
- package/list/harvesterhci.io.virtualmachineimage.vue +0 -80
- package/list/harvesterhci.io.virtualmachinetemplateversion.vue +0 -173
- package/list/harvesterhci.io.volume.vue +0 -122
- package/list/kubevirt.io.virtualmachine.vue +0 -193
- package/mixins/harvester-vm/impl.js +0 -267
- package/mixins/harvester-vm/index.js +0 -1357
- package/models/harvester/configmap.js +0 -32
- package/models/harvester/harvesterhci.io.blockdevice.js +0 -55
- package/models/harvester/harvesterhci.io.keypair.js +0 -12
- package/models/harvester/harvesterhci.io.setting.js +0 -127
- package/models/harvester/harvesterhci.io.supportbundle.js +0 -35
- package/models/harvester/harvesterhci.io.upgrade.js +0 -226
- package/models/harvester/harvesterhci.io.virtualmachinebackup.js +0 -116
- package/models/harvester/harvesterhci.io.virtualmachineimage.js +0 -255
- package/models/harvester/harvesterhci.io.virtualmachinerestore.js +0 -43
- package/models/harvester/harvesterhci.io.virtualmachinetemplate.js +0 -69
- package/models/harvester/harvesterhci.io.virtualmachinetemplateversion.js +0 -227
- package/models/harvester/k8s.cni.cncf.io.networkattachmentdefinition.js +0 -32
- package/models/harvester/kubevirt.io.virtualmachine.js +0 -850
- package/models/harvester/kubevirt.io.virtualmachineinstance.js +0 -142
- package/models/harvester/management.cattle.io.managedchart.js +0 -191
- package/models/harvester/management.cattle.io.setting.js +0 -40
- package/models/harvester/network.harvesterhci.io.clusternetwork.js +0 -100
- package/models/harvester/network.harvesterhci.io.nodenetwork.js +0 -34
- package/models/harvester/node.js +0 -255
- package/models/harvester/persistentvolumeclaim.js +0 -166
- package/models/harvester/pod.js +0 -185
- package/pages/c/_cluster/harvester/airgapupgrade/index.vue +0 -309
- package/pages/c/_cluster/harvester/console/_uid/serial.vue +0 -51
- package/pages/c/_cluster/harvester/console/_uid/vnc.vue +0 -52
- package/pages/c/_cluster/harvester/index.vue +0 -24
- package/pages/c/_cluster/harvester/support/index.vue +0 -154
- package/pages/plugins.vue +0 -387
- package/pkg/model-loader.lib.js +0 -3
- package/promptRemove/kubevirt.io.virtualmachine.vue +0 -164
- package/server/verdaccio-middleware.js +0 -56
- package/store/harvester-common.js +0 -126
- package/utils/validators/vm-datavolumes.js +0 -38
- package/utils/validators/vm-image.js +0 -32
- package/utils/validators/vm.js +0 -221
|
@@ -38,18 +38,6 @@ describe('fx: get', () => {
|
|
|
38
38
|
expect(result).toBeUndefined();
|
|
39
39
|
expect(() => result).not.toThrow();
|
|
40
40
|
});
|
|
41
|
-
|
|
42
|
-
it.each([
|
|
43
|
-
'key2.nonsense',
|
|
44
|
-
'non.sense',
|
|
45
|
-
])('should catch error and return undefined', (path) => {
|
|
46
|
-
const obj = { key1: 'value', key2: { bat: 42, 'with.dots': 43 } };
|
|
47
|
-
|
|
48
|
-
const result = get(obj, path);
|
|
49
|
-
|
|
50
|
-
expect(result).toBeUndefined();
|
|
51
|
-
expect(() => result).not.toThrow();
|
|
52
|
-
});
|
|
53
41
|
});
|
|
54
42
|
|
|
55
43
|
describe('fx: getter', () => {
|
|
@@ -95,18 +83,6 @@ describe('fx: getter', () => {
|
|
|
95
83
|
expect(result).toBeUndefined();
|
|
96
84
|
expect(() => result).not.toThrow();
|
|
97
85
|
});
|
|
98
|
-
|
|
99
|
-
it.each([
|
|
100
|
-
'key2.nonsense',
|
|
101
|
-
'non.sense',
|
|
102
|
-
])('should catch error and return undefined', (path) => {
|
|
103
|
-
const obj = { key1: 'value', key2: { bat: 42, 'with.dots': 43 } };
|
|
104
|
-
|
|
105
|
-
const result = getter(path)(obj);
|
|
106
|
-
|
|
107
|
-
expect(result).toBeUndefined();
|
|
108
|
-
expect(() => result).not.toThrow();
|
|
109
|
-
});
|
|
110
86
|
});
|
|
111
87
|
});
|
|
112
88
|
|
|
@@ -171,7 +171,7 @@ describe('fx: parse', () => {
|
|
|
171
171
|
['!some.prefix/key-bar_baz '],
|
|
172
172
|
['! some.prefix/key-bar_baz '],
|
|
173
173
|
[' ! some.prefix/key-bar_baz '],
|
|
174
|
-
])('should parse expression %p to selector %p', (expression) => {
|
|
174
|
+
])('should parse expression %p to selector %p using prefixes', (expression) => {
|
|
175
175
|
const expected = {
|
|
176
176
|
key: 'some.prefix/key-bar_baz',
|
|
177
177
|
operator: 'DoesNotExist',
|
package/utils/cluster.js
CHANGED
|
@@ -13,7 +13,7 @@ export function filterOnlyKubernetesClusters(mgmtClusters) {
|
|
|
13
13
|
|
|
14
14
|
export function isHarvesterCluster(mgmtCluster) {
|
|
15
15
|
// Use the provider if it is set otherwise use the label
|
|
16
|
-
const provider = mgmtCluster?.
|
|
16
|
+
const provider = mgmtCluster?.metadata?.labels?.[CAPI.PROVIDER] || mgmtCluster?.status?.provider;
|
|
17
17
|
|
|
18
18
|
return provider === VIRTUAL_HARVESTER_PROVIDER;
|
|
19
19
|
}
|
|
@@ -8,12 +8,7 @@ import { cronSchedule } from '@shell/utils/validators/cron-schedule';
|
|
|
8
8
|
import { podAffinity } from '@shell/utils/validators/pod-affinity';
|
|
9
9
|
import { roleTemplateRules } from '@shell/utils/validators/role-template';
|
|
10
10
|
import { clusterName } from '@shell/utils/validators/cluster-name';
|
|
11
|
-
import { isHttps
|
|
12
|
-
|
|
13
|
-
import { imageUrl, fileRequired } from '@shell/utils/validators/vm-image';
|
|
14
|
-
|
|
15
|
-
import { vmNetworks, vmDisks } from '@shell/utils/validators/vm';
|
|
16
|
-
import { dataVolumeSize } from '@shell/utils/validators/vm-datavolumes';
|
|
11
|
+
import { isHttps } from '@shell/utils/validators/setting';
|
|
17
12
|
|
|
18
13
|
/**
|
|
19
14
|
* Custom validation functions beyond normal scalr types
|
|
@@ -36,10 +31,4 @@ export default {
|
|
|
36
31
|
podAffinity,
|
|
37
32
|
roleTemplateRules,
|
|
38
33
|
isHttps,
|
|
39
|
-
backupTarget,
|
|
40
|
-
imageUrl,
|
|
41
|
-
dataVolumeSize,
|
|
42
|
-
vmNetworks,
|
|
43
|
-
vmDisks,
|
|
44
|
-
fileRequired,
|
|
45
34
|
};
|
|
@@ -63,7 +63,7 @@ export function importDialog(name) {
|
|
|
63
63
|
throw new Error('Name required');
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
return () => import(/* webpackChunkName: "dialog" */ `@shell/
|
|
66
|
+
return () => import(/* webpackChunkName: "dialog" */ `@shell/dialog/${name}`);
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
export function importWindowComponent(name) {
|
|
@@ -107,6 +107,10 @@ export function resolveList(key) {
|
|
|
107
107
|
return require.resolve(`@shell/list/${ key }`);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
+
export function resolveChart(key) {
|
|
111
|
+
return require.resolve(`@shell/chart/${ key }`);
|
|
112
|
+
}
|
|
113
|
+
|
|
110
114
|
export function resolveEdit(key) {
|
|
111
115
|
return require.resolve(`@shell/edit/${ key }`);
|
|
112
116
|
}
|
package/utils/grafana.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { haveV2Monitoring } from '@shell/utils/monitoring';
|
|
1
2
|
import { parse as parseUrl, addParam } from '@shell/utils/url';
|
|
2
|
-
import { MONITORING } from '@shell/config/types';
|
|
3
3
|
|
|
4
4
|
export function computeDashboardUrl(embedUrl, clusterId, params) {
|
|
5
5
|
const url = parseUrl(embedUrl);
|
|
@@ -21,7 +21,7 @@ export function computeDashboardUrl(embedUrl, clusterId, params) {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export async function dashboardExists(store, clusterId, embedUrl, storeName = 'cluster') {
|
|
24
|
-
if (!
|
|
24
|
+
if ( !haveV2Monitoring(store.getters) ) {
|
|
25
25
|
return false;
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -81,7 +81,3 @@ export async function failedProposals(dispatch, clusterId) {
|
|
|
81
81
|
|
|
82
82
|
return response.data.result[0]?.values?.[0]?.[1] || 0;
|
|
83
83
|
}
|
|
84
|
-
|
|
85
|
-
function isMonitoringInstalled(getters, storeName = 'cluster') {
|
|
86
|
-
return !!getters[`${ storeName }/schemaFor`](MONITORING.SERVICEMONITOR);
|
|
87
|
-
}
|
package/utils/socket.js
CHANGED
|
@@ -31,6 +31,8 @@ export default class Socket extends EventTarget {
|
|
|
31
31
|
hasBeenOpen = false;
|
|
32
32
|
hasReconnected = false;
|
|
33
33
|
protocol = null;
|
|
34
|
+
maxTries = null;
|
|
35
|
+
tries = 0;
|
|
34
36
|
|
|
35
37
|
// "Private"
|
|
36
38
|
socket = null;
|
|
@@ -38,17 +40,19 @@ export default class Socket extends EventTarget {
|
|
|
38
40
|
framesReceived = 0;
|
|
39
41
|
frameTimer;
|
|
40
42
|
reconnectTimer;
|
|
41
|
-
tries = 0;
|
|
42
43
|
disconnectCbs = [];
|
|
43
44
|
disconnectedAt = 0;
|
|
44
45
|
closingId = 0;
|
|
45
46
|
|
|
46
|
-
constructor(url, autoReconnect = true, frameTimeout = null, protocol = null) {
|
|
47
|
+
constructor(url, autoReconnect = true, frameTimeout = null, protocol = null, maxTries = null) {
|
|
47
48
|
super();
|
|
48
49
|
|
|
49
50
|
this.setUrl(url);
|
|
50
51
|
this.autoReconnect = autoReconnect;
|
|
51
52
|
this.protocol = protocol;
|
|
53
|
+
// maxTries = null === never stop trying to reconnect
|
|
54
|
+
// allow maxTries to be defined on individual sockets bc not all will clearly warn the user that we've stopped trying
|
|
55
|
+
this.maxTries = maxTries;
|
|
52
56
|
|
|
53
57
|
if ( frameTimeout !== null ) {
|
|
54
58
|
this.frameTimeout = frameTimeout;
|
|
@@ -57,10 +61,10 @@ export default class Socket extends EventTarget {
|
|
|
57
61
|
|
|
58
62
|
setUrl(url) {
|
|
59
63
|
if ( !url.match(/wss?:\/\//) ) {
|
|
60
|
-
url =
|
|
64
|
+
url = self.location.origin.replace(/^http/, 'ws') + url;
|
|
61
65
|
}
|
|
62
66
|
|
|
63
|
-
if (
|
|
67
|
+
if ( self.location.protocol === 'https:' && url.startsWith(INSECURE) ) {
|
|
64
68
|
url = SECURE + url.substr(INSECURE.length);
|
|
65
69
|
}
|
|
66
70
|
|
|
@@ -74,6 +78,10 @@ export default class Socket extends EventTarget {
|
|
|
74
78
|
return;
|
|
75
79
|
}
|
|
76
80
|
|
|
81
|
+
if (this.state !== STATE_RECONNECTING) {
|
|
82
|
+
this.state = STATE_CONNECTING;
|
|
83
|
+
}
|
|
84
|
+
|
|
77
85
|
Object.assign(this.metadata, metadata);
|
|
78
86
|
|
|
79
87
|
const id = sockId++;
|
|
@@ -83,6 +91,8 @@ export default class Socket extends EventTarget {
|
|
|
83
91
|
|
|
84
92
|
let socket;
|
|
85
93
|
|
|
94
|
+
this.tries++;
|
|
95
|
+
|
|
86
96
|
if ( this.protocol ) {
|
|
87
97
|
socket = new WebSocket(url, this.protocol);
|
|
88
98
|
} else {
|
|
@@ -209,11 +219,11 @@ export default class Socket extends EventTarget {
|
|
|
209
219
|
this._log('opened');
|
|
210
220
|
const now = (new Date()).getTime();
|
|
211
221
|
|
|
212
|
-
const
|
|
213
|
-
let
|
|
222
|
+
const atTime = this.disconnectedAt;
|
|
223
|
+
let afterMilliseconds = 0;
|
|
214
224
|
|
|
215
|
-
if (
|
|
216
|
-
|
|
225
|
+
if ( atTime ) {
|
|
226
|
+
afterMilliseconds = now - atTime;
|
|
217
227
|
}
|
|
218
228
|
|
|
219
229
|
if ( this.hasBeenOpen ) {
|
|
@@ -225,7 +235,8 @@ export default class Socket extends EventTarget {
|
|
|
225
235
|
this.framesReceived = 0;
|
|
226
236
|
this.disconnectedAt = 0;
|
|
227
237
|
|
|
228
|
-
this.dispatchEvent(new CustomEvent(EVENT_CONNECTED, { detail: { tries: this.tries,
|
|
238
|
+
this.dispatchEvent(new CustomEvent(EVENT_CONNECTED, { detail: { tries: this.tries, afterMilliseconds } }));
|
|
239
|
+
this.tries = 0;
|
|
229
240
|
this._resetWatchdog();
|
|
230
241
|
clearTimeout(this.reconnectTimer);
|
|
231
242
|
}
|
|
@@ -291,18 +302,26 @@ export default class Socket extends EventTarget {
|
|
|
291
302
|
this.dispatchEvent(e);
|
|
292
303
|
warningShown = true;
|
|
293
304
|
} else if ( this.autoReconnect ) {
|
|
294
|
-
|
|
295
|
-
|
|
305
|
+
this.state = STATE_RECONNECTING;
|
|
306
|
+
|
|
307
|
+
if (this.maxTries && this.tries > 1 && this.tries <= this.maxTries) {
|
|
308
|
+
// dispatch an event which will trigger a growl from steve-plugin sockets warning users that we've lost connection and are attemping to reconnect
|
|
309
|
+
const e = new CustomEvent(EVENT_CONNECT_ERROR);
|
|
296
310
|
|
|
297
311
|
this.dispatchEvent(e);
|
|
298
312
|
}
|
|
299
|
-
this.state = STATE_RECONNECTING;
|
|
300
|
-
this.tries++;
|
|
301
|
-
const delay = Math.max(1000, Math.min(1000 * this.tries, 30000));
|
|
302
313
|
|
|
303
|
-
this.
|
|
304
|
-
this.
|
|
305
|
-
|
|
314
|
+
if (this.maxTries && this.tries > this.maxTries) {
|
|
315
|
+
this.state = STATE_DISCONNECTED;
|
|
316
|
+
// dispatch an event which will trigger a growl from steve-plugin sockets warning users that we've given up trying to reconnect
|
|
317
|
+
this.dispatchEvent(new CustomEvent(EVENT_DISCONNECT_ERROR));
|
|
318
|
+
} else {
|
|
319
|
+
const delay = Math.max(1000, Math.min(1000 * this.tries, 30000));
|
|
320
|
+
|
|
321
|
+
this.reconnectTimer = setTimeout(() => {
|
|
322
|
+
this.connect();
|
|
323
|
+
}, delay);
|
|
324
|
+
}
|
|
306
325
|
} else {
|
|
307
326
|
this.state = STATE_DISCONNECTED;
|
|
308
327
|
}
|
|
@@ -315,10 +334,12 @@ export default class Socket extends EventTarget {
|
|
|
315
334
|
}
|
|
316
335
|
|
|
317
336
|
_log(...args) {
|
|
318
|
-
|
|
337
|
+
const message = JSON.parse(JSON.stringify([...args]));
|
|
338
|
+
|
|
339
|
+
message.unshift('Socket');
|
|
319
340
|
|
|
320
|
-
|
|
341
|
+
message.push(`(state=${ this.state }, id=${ this.socket ? this.socket.sockId : 0 })`);
|
|
321
342
|
|
|
322
|
-
console.log(
|
|
343
|
+
console.log(message.join(' ')); // eslint-disable-line no-console
|
|
323
344
|
}
|
|
324
345
|
}
|
package/utils/string.js
CHANGED
|
@@ -70,13 +70,7 @@ export function random32(count) {
|
|
|
70
70
|
const out = [];
|
|
71
71
|
let i;
|
|
72
72
|
|
|
73
|
-
if (
|
|
74
|
-
const crypto = require('crypto');
|
|
75
|
-
|
|
76
|
-
for ( i = 0 ; i < count ; i++ ) {
|
|
77
|
-
out[i] = crypto.randomBytes(4).readUInt32BE(0, true);
|
|
78
|
-
}
|
|
79
|
-
} else if (window.crypto && window.crypto.getRandomValues) {
|
|
73
|
+
if (window.crypto && window.crypto.getRandomValues) {
|
|
80
74
|
const tmp = new Uint32Array(count);
|
|
81
75
|
|
|
82
76
|
window.crypto.getRandomValues(tmp);
|
|
@@ -906,6 +906,114 @@ describe('formRules', () => {
|
|
|
906
906
|
expect(formRuleResult).toStrictEqual(expectedResult);
|
|
907
907
|
});
|
|
908
908
|
|
|
909
|
+
// this rule is pretty much identical to the standard hostname, but also allows for wildcards
|
|
910
|
+
it('"wildcardHostname" : returns undefined when value is valid hostname', () => {
|
|
911
|
+
const testValue = 'www.url.com';
|
|
912
|
+
const formRuleResult = formRules.wildcardHostname(testValue);
|
|
913
|
+
|
|
914
|
+
expect(formRuleResult).toBeUndefined();
|
|
915
|
+
});
|
|
916
|
+
|
|
917
|
+
it('"wildcardHostname" : returns expected message when value starts with a dot', () => {
|
|
918
|
+
const testValue = '.hostname';
|
|
919
|
+
const formRuleResult = formRules.wildcardHostname(testValue);
|
|
920
|
+
const expectedResult = JSON.stringify({ message: 'validation.dns.hostname.startDot', key: 'testDisplayKey' });
|
|
921
|
+
|
|
922
|
+
expect(formRuleResult).toStrictEqual(expectedResult);
|
|
923
|
+
});
|
|
924
|
+
|
|
925
|
+
it('"wildcardHostname" : returns expected message when value starts is too long for a hostname', () => {
|
|
926
|
+
const testValue = 'There.are.many.variations.of.passages.of.Lorem.Ipsum.available.but.the.majority.have.suffered.alteration.in.some.form.by.injected.humour.or.randomised.words.which.dont.look.even.slightly.believable.If.you.are.going.to.use.a.passage.of.Lorem.Ipsum.you.need';
|
|
927
|
+
const formRuleResult = formRules.wildcardHostname(testValue);
|
|
928
|
+
const expectedResult = JSON.stringify({
|
|
929
|
+
message: 'validation.dns.hostname.tooLong', key: 'testDisplayKey', max: 253
|
|
930
|
+
});
|
|
931
|
+
|
|
932
|
+
expect(formRuleResult).toStrictEqual(expectedResult);
|
|
933
|
+
});
|
|
934
|
+
|
|
935
|
+
it('"wildcardHostname" : returns expected message when value contains invalid characters', () => {
|
|
936
|
+
const testValue = 'www.host*name.com';
|
|
937
|
+
const formRuleResult = formRules.wildcardHostname(testValue);
|
|
938
|
+
const expectedResult = JSON.stringify({
|
|
939
|
+
message: 'validation.chars', key: 'testDisplayKey', count: 1, chars: '"*"'
|
|
940
|
+
});
|
|
941
|
+
|
|
942
|
+
expect(formRuleResult).toStrictEqual(expectedResult);
|
|
943
|
+
});
|
|
944
|
+
|
|
945
|
+
it('"wildcardHostname" : returns expected message when value contains a space character', () => {
|
|
946
|
+
const testValue = 'www.host name.com';
|
|
947
|
+
const formRuleResult = formRules.wildcardHostname(testValue);
|
|
948
|
+
const expectedResult = JSON.stringify({
|
|
949
|
+
message: 'validation.chars', key: 'testDisplayKey', count: 1, chars: 'Space'
|
|
950
|
+
});
|
|
951
|
+
|
|
952
|
+
expect(formRuleResult).toStrictEqual(expectedResult);
|
|
953
|
+
});
|
|
954
|
+
|
|
955
|
+
it('"wildcardHostname" : returns expected message when hostname label starts with a dash', () => {
|
|
956
|
+
const testValue = 'www.-hostname.com';
|
|
957
|
+
const formRuleResult = formRules.wildcardHostname(testValue);
|
|
958
|
+
const expectedResult = JSON.stringify({ message: 'validation.dns.hostname.startHyphen', key: 'testDisplayKey' });
|
|
959
|
+
|
|
960
|
+
expect(formRuleResult).toStrictEqual(expectedResult);
|
|
961
|
+
});
|
|
962
|
+
|
|
963
|
+
it('"wildcardHostname" : returns expected message when hostname label ends with a dash', () => {
|
|
964
|
+
const testValue = 'www.hostname-.com';
|
|
965
|
+
const formRuleResult = formRules.wildcardHostname(testValue);
|
|
966
|
+
const expectedResult = JSON.stringify({ message: 'validation.dns.hostname.endHyphen', key: 'testDisplayKey' });
|
|
967
|
+
|
|
968
|
+
expect(formRuleResult).toStrictEqual(expectedResult);
|
|
969
|
+
});
|
|
970
|
+
|
|
971
|
+
it('"wildcardHostname" : returns expected message when hostname label contains a double-dash at the third character position', () => {
|
|
972
|
+
const testValue = 'www.ho--stname.com';
|
|
973
|
+
const formRuleResult = formRules.wildcardHostname(testValue);
|
|
974
|
+
const expectedResult = JSON.stringify({ message: 'validation.dns.doubleHyphen', key: 'testDisplayKey' });
|
|
975
|
+
|
|
976
|
+
expect(formRuleResult).toStrictEqual(expectedResult);
|
|
977
|
+
});
|
|
978
|
+
|
|
979
|
+
it('"wildcardHostname" : returns expected message when hostname label is too long', () => {
|
|
980
|
+
const testValue = 'www.0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef.com';
|
|
981
|
+
const formRuleResult = formRules.wildcardHostname(testValue);
|
|
982
|
+
const expectedResult = JSON.stringify({
|
|
983
|
+
message: 'validation.dns.hostname.tooLongLabel', key: 'testDisplayKey', max: 63
|
|
984
|
+
});
|
|
985
|
+
|
|
986
|
+
expect(formRuleResult).toStrictEqual(expectedResult);
|
|
987
|
+
});
|
|
988
|
+
|
|
989
|
+
it('"wildcardHostname" : returns expected message when wildcard character is not the first part', () => {
|
|
990
|
+
const testValue = 'www.*.hostname.com';
|
|
991
|
+
const formRuleResult = formRules.wildcardHostname(testValue);
|
|
992
|
+
const expectedResult = JSON.stringify({
|
|
993
|
+
message: 'validation.chars', key: 'testDisplayKey', count: 1, chars: '"*"'
|
|
994
|
+
});
|
|
995
|
+
|
|
996
|
+
expect(formRuleResult).toStrictEqual(expectedResult);
|
|
997
|
+
});
|
|
998
|
+
|
|
999
|
+
it('"wildcardHostname" : returns expected message when wildcard character is at the beginning but not its own part', () => {
|
|
1000
|
+
const testValue = '*hostname.com';
|
|
1001
|
+
const formRuleResult = formRules.wildcardHostname(testValue);
|
|
1002
|
+
|
|
1003
|
+
const expectedResult = JSON.stringify({
|
|
1004
|
+
message: 'validation.chars', key: 'testDisplayKey', count: 1, chars: '"*"'
|
|
1005
|
+
});
|
|
1006
|
+
|
|
1007
|
+
expect(formRuleResult).toStrictEqual(expectedResult);
|
|
1008
|
+
});
|
|
1009
|
+
|
|
1010
|
+
it('"wildcardHostname" : returns valid when wildcard character is the first part', () => {
|
|
1011
|
+
const testValue = '*.hostname.com';
|
|
1012
|
+
const formRuleResult = formRules.wildcardHostname(testValue);
|
|
1013
|
+
|
|
1014
|
+
expect(formRuleResult).toBeUndefined();
|
|
1015
|
+
});
|
|
1016
|
+
|
|
909
1017
|
it('"absolutePath" : return expected message when path doesn\'t begin with a "/"', () => {
|
|
910
1018
|
const formRuleResult = formRules.absolutePath('absolute_path');
|
|
911
1019
|
const expectedResult = JSON.stringify({ message: 'validation.path', key: 'testDisplayKey' });
|
|
@@ -204,6 +204,13 @@ export default function(t: (key: string, options?: any) => string, opt: {display
|
|
|
204
204
|
}
|
|
205
205
|
};
|
|
206
206
|
|
|
207
|
+
const wildcardHostname: Validator = (val: string) => {
|
|
208
|
+
// allow wildcard in first part of hostname
|
|
209
|
+
val = val ? val.replace(/^\*\./, '') : val;
|
|
210
|
+
|
|
211
|
+
return hostname(val);
|
|
212
|
+
};
|
|
213
|
+
|
|
207
214
|
const externalName: Validator = (val: string) => {
|
|
208
215
|
if (isEmpty(val)) {
|
|
209
216
|
return t('validation.service.externalName.none');
|
|
@@ -442,6 +449,7 @@ export default function(t: (key: string, options?: any) => string, opt: {display
|
|
|
442
449
|
hostname,
|
|
443
450
|
testRule,
|
|
444
451
|
subDomain,
|
|
445
|
-
absolutePath
|
|
452
|
+
absolutePath,
|
|
453
|
+
wildcardHostname,
|
|
446
454
|
};
|
|
447
455
|
}
|
|
@@ -11,38 +11,3 @@ export function isHttps(value, getters, errors, validatorArgs, displayKey) {
|
|
|
11
11
|
|
|
12
12
|
return errors;
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
export function backupTarget(value, getters, errors, validatorArgs) {
|
|
16
|
-
const t = getters['i18n/t'];
|
|
17
|
-
|
|
18
|
-
const parseValue = JSON.parse(value);
|
|
19
|
-
const type = parseValue.type;
|
|
20
|
-
|
|
21
|
-
if (!type) {
|
|
22
|
-
return errors;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
if (type === 's3') {
|
|
26
|
-
if (!parseValue.accessKeyId) {
|
|
27
|
-
errors.push(t('validation.required', { key: 'accessKeyId' }));
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (!parseValue.secretAccessKey) {
|
|
31
|
-
errors.push(t('validation.required', { key: 'secretAccessKey' }));
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if (!parseValue.bucketRegion) {
|
|
35
|
-
errors.push(t('validation.required', { key: 'bucketRegion' }));
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (!parseValue.bucketName) {
|
|
39
|
-
errors.push(t('validation.required', { key: 'bucketName' }));
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
if (!parseValue.endpoint) {
|
|
44
|
-
errors.push(t('validation.required', { key: 'endpoint' }));
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return errors;
|
|
48
|
-
}
|
package/yarn-error.log
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
Arguments:
|
|
2
|
+
/usr/local/bin/node /usr/local/Cellar/yarn/1.22.11/libexec/bin/yarn.js publish . --new-version 0.1.4 --no-git-tag-version --access public
|
|
3
|
+
|
|
4
|
+
PATH:
|
|
5
|
+
/Users/nwm/.gem/ruby/3.1.2/bin:/Users/nwm/.rubies/ruby-3.1.2/lib/ruby/gems/3.1.0/bin:/Users/nwm/.rubies/ruby-3.1.2/bin:/Users/nwm/.deno/bin:/usr/local/sbin:/Users/nwm/google-cloud-sdk/bin:/opt/local/bin:/opt/local/sbin:/Users/nwm/.rd/bin:/Users/nwm/go/bin:/usr/local/bin:/Users/nwm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/usr/local/MacGPG2/bin:/Library/Apple/usr/bin:/Applications/Utilities/kdiff3.app/Contents/MacOS/:/Applications/Visual Studio Code.app/Contents/Resources/app/bin
|
|
6
|
+
|
|
7
|
+
Yarn version:
|
|
8
|
+
1.22.11
|
|
9
|
+
|
|
10
|
+
Node version:
|
|
11
|
+
16.16.0
|
|
12
|
+
|
|
13
|
+
Platform:
|
|
14
|
+
darwin x64
|
|
15
|
+
|
|
16
|
+
Trace:
|
|
17
|
+
Error: canceled
|
|
18
|
+
at Interface.<anonymous> (/usr/local/Cellar/yarn/1.22.11/libexec/lib/cli.js:137023:13)
|
|
19
|
+
at Interface.emit (node:events:527:28)
|
|
20
|
+
at Interface._ttyWrite (node:readline:1081:16)
|
|
21
|
+
at ReadStream.onkeypress (node:readline:288:10)
|
|
22
|
+
at ReadStream.emit (node:events:527:28)
|
|
23
|
+
at emitKeys (node:internal/readline/utils:358:14)
|
|
24
|
+
at emitKeys.next (<anonymous>)
|
|
25
|
+
at ReadStream.onData (node:internal/readline/emitKeypressEvents:61:36)
|
|
26
|
+
at ReadStream.emit (node:events:527:28)
|
|
27
|
+
at addChunk (node:internal/streams/readable:315:12)
|
|
28
|
+
|
|
29
|
+
npm manifest:
|
|
30
|
+
{
|
|
31
|
+
"name": "@rancher/shell",
|
|
32
|
+
"version": "0.1.4",
|
|
33
|
+
"description": "Rancher Dashboard Shell",
|
|
34
|
+
"repository": "https://github.com/rancherlabs/dashboard",
|
|
35
|
+
"license": "Apache-2.0",
|
|
36
|
+
"author": "SUSE",
|
|
37
|
+
"private": false,
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=12"
|
|
40
|
+
},
|
|
41
|
+
"files": [
|
|
42
|
+
"**/*"
|
|
43
|
+
],
|
|
44
|
+
"scripts": {
|
|
45
|
+
"clean": "./scripts/clean",
|
|
46
|
+
"lint": "./node_modules/.bin/eslint --max-warnings 0 --ext .ts,.js,.vue .",
|
|
47
|
+
"test": "./node_modules/.bin/nyc ava --serial --verbose",
|
|
48
|
+
"nuxt": "./node_modules/.bin/nuxt",
|
|
49
|
+
"dev": "./node_modules/.bin/nuxt dev",
|
|
50
|
+
"mem-dev": "node --max-old-space-size=8192 ./node_modules/.bin/nuxt dev",
|
|
51
|
+
"docker-dev": "docker run --rm --name dashboard-dev -p 8005:8005 -e API=$API -v $(pwd):/src -v dashboard_node:/src/node_modules rancher/dashboard:dev",
|
|
52
|
+
"build": "./node_modules/.bin/nuxt build --devtools",
|
|
53
|
+
"analyze": "./node_modules/.bin/nuxt build --analyze",
|
|
54
|
+
"start": "./node_modules/.bin/nuxt start",
|
|
55
|
+
"generate": "./node_modules/.bin/nuxt generate",
|
|
56
|
+
"dev-debug": "node --inspect ./node_modules/.bin/nuxt",
|
|
57
|
+
"cy:run": "cypress run",
|
|
58
|
+
"cy:open": "cypress open",
|
|
59
|
+
"e2e:pre": "NODE_ENV=dev yarn build",
|
|
60
|
+
"e2e:run": "NODE_ENV=dev START_SERVER_AND_TEST_INSECURE=1 start-server-and-test start https://localhost:8005/ cy:run",
|
|
61
|
+
"e2e:dev": "start-server-and-test dev https://localhost:8005 cy:open"
|
|
62
|
+
},
|
|
63
|
+
"dependencies": {
|
|
64
|
+
"@aws-sdk/client-ec2": "3.1.0",
|
|
65
|
+
"@aws-sdk/client-eks": "3.1.0",
|
|
66
|
+
"@aws-sdk/client-kms": "3.8.1",
|
|
67
|
+
"@babel/plugin-proposal-optional-chaining": "7.14.5",
|
|
68
|
+
"@babel/plugin-proposal-private-property-in-object": "7.14.5",
|
|
69
|
+
"@babel/preset-typescript": "7.16.7",
|
|
70
|
+
"@innologica/vue-dropdown-menu": "0.1.3",
|
|
71
|
+
"@novnc/novnc": "1.2.0",
|
|
72
|
+
"@nuxt/types": "2.14.6",
|
|
73
|
+
"@nuxt/typescript-build": "2.1.0",
|
|
74
|
+
"@nuxtjs/axios": "5.12.0",
|
|
75
|
+
"@nuxtjs/eslint-config-typescript": "6.0.1",
|
|
76
|
+
"@nuxtjs/eslint-module": "1.2.0",
|
|
77
|
+
"@nuxtjs/proxy": "1.3.3",
|
|
78
|
+
"@nuxtjs/style-resources": "1.2.1",
|
|
79
|
+
"@nuxtjs/webpack-profile": "0.1.0",
|
|
80
|
+
"@popperjs/core": "2.4.4",
|
|
81
|
+
"@types/node": "16.4.3",
|
|
82
|
+
"@typescript-eslint/eslint-plugin": "4.33.0",
|
|
83
|
+
"@typescript-eslint/parser": "4.33.0",
|
|
84
|
+
"@vue/cli-plugin-babel": "4.5.15",
|
|
85
|
+
"@vue/cli-plugin-typescript": "4.5.15",
|
|
86
|
+
"@vue/cli-service": "4.5.15",
|
|
87
|
+
"@vue/test-utils": "1.2.1",
|
|
88
|
+
"@vue/vue2-jest": "27.0.0",
|
|
89
|
+
"add": "2.0.6",
|
|
90
|
+
"ansi_up": "5.0.0",
|
|
91
|
+
"babel-eslint": "10.1.0",
|
|
92
|
+
"babel-plugin-module-resolver": "4.0.0",
|
|
93
|
+
"babel-preset-vue": "2.0.2",
|
|
94
|
+
"browser-env": "3.3.0",
|
|
95
|
+
"cookie": "0.5.0",
|
|
96
|
+
"cookie-universal-nuxt": "2.1.4",
|
|
97
|
+
"core-js": "3.21.1",
|
|
98
|
+
"cron-validator": "1.2.0",
|
|
99
|
+
"cronstrue": "1.95.0",
|
|
100
|
+
"cross-env": "6.0.3",
|
|
101
|
+
"css-loader": "4.3.0",
|
|
102
|
+
"csv-loader": "3.0.3",
|
|
103
|
+
"cypress": "10.3.1",
|
|
104
|
+
"d3": "7.3.0",
|
|
105
|
+
"d3-selection": "1.4.1",
|
|
106
|
+
"dagre-d3": "0.6.4",
|
|
107
|
+
"dayjs": "1.8.29",
|
|
108
|
+
"diff2html": "2.11.2",
|
|
109
|
+
"dompurify": "2.0.12",
|
|
110
|
+
"eslint": "7.32.0",
|
|
111
|
+
"eslint-config-standard": "16.0.3",
|
|
112
|
+
"eslint-import-resolver-node": "0.3.4",
|
|
113
|
+
"eslint-module-utils": "2.6.1",
|
|
114
|
+
"eslint-plugin-cypress": "2.12.1",
|
|
115
|
+
"eslint-plugin-import": "2.23.4",
|
|
116
|
+
"eslint-plugin-jest": "24.4.0",
|
|
117
|
+
"eslint-plugin-n": "15.2.0",
|
|
118
|
+
"eslint-plugin-vue": "7.14.0",
|
|
119
|
+
"event-target-shim": "5.0.1",
|
|
120
|
+
"express": "4.17.1",
|
|
121
|
+
"file-saver": "2.0.2",
|
|
122
|
+
"frontmatter-markdown-loader": "3.7.0",
|
|
123
|
+
"identicon.js": "2.3.3",
|
|
124
|
+
"intl-messageformat": "7.8.4",
|
|
125
|
+
"is-url": "1.2.4",
|
|
126
|
+
"jest": "27.5.1",
|
|
127
|
+
"jest-serializer-vue": "2.0.2",
|
|
128
|
+
"jexl": "2.2.2",
|
|
129
|
+
"jquery": "3.5.1",
|
|
130
|
+
"js-cookie": "2.2.1",
|
|
131
|
+
"js-yaml": "4.1.0",
|
|
132
|
+
"js-yaml-loader": "1.2.2",
|
|
133
|
+
"jsdiff": "1.1.1",
|
|
134
|
+
"jsdom-global": "3.0.2",
|
|
135
|
+
"jsonpath-plus": "6.0.1",
|
|
136
|
+
"jsrsasign": "10.2.0",
|
|
137
|
+
"jszip": "3.7.0",
|
|
138
|
+
"lodash": "4.17.21",
|
|
139
|
+
"marked": "4.0.17",
|
|
140
|
+
"nodemon": "2.0.4",
|
|
141
|
+
"nuxt": "2.15.8",
|
|
142
|
+
"nyc": "15.1.0",
|
|
143
|
+
"papaparse": "5.3.0",
|
|
144
|
+
"portal-vue": "2.1.7",
|
|
145
|
+
"rancher-icons": "rancher/icons#v2.0.3",
|
|
146
|
+
"require-extension-hooks": "0.3.3",
|
|
147
|
+
"require-extension-hooks-babel": "1.0.0",
|
|
148
|
+
"require-extension-hooks-vue": "3.0.0",
|
|
149
|
+
"sass": "1.51.0",
|
|
150
|
+
"sass-loader": "10.2.1",
|
|
151
|
+
"serve-static": "1.14.1",
|
|
152
|
+
"set-cookie-parser": "2.4.6",
|
|
153
|
+
"shell-quote": "1.7.3",
|
|
154
|
+
"sinon": "8.1.1",
|
|
155
|
+
"start-server-and-test": "1.13.1",
|
|
156
|
+
"style-loader": "1.2.1",
|
|
157
|
+
"ts-node": "8.10.2",
|
|
158
|
+
"typescript": "4.1.6",
|
|
159
|
+
"url-parse": "1.5.10",
|
|
160
|
+
"v-tooltip": "2.0.3",
|
|
161
|
+
"vue": "2.6.14",
|
|
162
|
+
"vue-clipboard2": "0.3.1",
|
|
163
|
+
"vue-codemirror": "4.0.6",
|
|
164
|
+
"vue-js-modal": "1.3.35",
|
|
165
|
+
"vue-resize": "0.4.5",
|
|
166
|
+
"vue-select": "3.18.3",
|
|
167
|
+
"vue-server-renderer": "2.6.14",
|
|
168
|
+
"vue-shortkey": "3.1.7",
|
|
169
|
+
"vue-template-compiler": "2.6.14",
|
|
170
|
+
"vue2-transitions": "0.3.0",
|
|
171
|
+
"vuedraggable": "2.24.3",
|
|
172
|
+
"vuex": "3.6.2",
|
|
173
|
+
"webpack-bundle-analyzer": "4.5.0",
|
|
174
|
+
"webpack-virtual-modules": "0.4.3",
|
|
175
|
+
"xterm": "4.9.0",
|
|
176
|
+
"xterm-addon-fit": "0.4.0",
|
|
177
|
+
"xterm-addon-search": "0.7.0",
|
|
178
|
+
"xterm-addon-web-links": "0.4.0",
|
|
179
|
+
"xterm-addon-webgl": "0.9.0",
|
|
180
|
+
"worker-loader": "3.0.8",
|
|
181
|
+
"yarn": "1.22.18"
|
|
182
|
+
},
|
|
183
|
+
"nyc": {
|
|
184
|
+
"extension": [
|
|
185
|
+
".js",
|
|
186
|
+
".vue"
|
|
187
|
+
]
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
yarn manifest:
|
|
192
|
+
No manifest
|
|
193
|
+
|
|
194
|
+
Lockfile:
|
|
195
|
+
No lockfile
|