@rancher/shell 0.3.26 → 0.3.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/assets/translations/en-us.yaml +8 -23
  2. package/assets/translations/zh-hans.yaml +2 -26
  3. package/chart/gatekeeper.vue +2 -11
  4. package/chart/istio.vue +1 -10
  5. package/chart/logging/index.vue +2 -11
  6. package/chart/monitoring/index.vue +1 -9
  7. package/chart/rancher-backup/index.vue +1 -9
  8. package/components/AlertTable.vue +8 -6
  9. package/components/Carousel.vue +2 -1
  10. package/components/EmberPage.vue +2 -2
  11. package/components/EtcdInfoBanner.vue +12 -2
  12. package/components/GlobalRoleBindings.vue +10 -0
  13. package/components/GrafanaDashboard.vue +8 -3
  14. package/components/Wizard.vue +17 -1
  15. package/components/auth/RoleDetailEdit.vue +17 -1
  16. package/components/form/ArrayList.vue +20 -11
  17. package/components/form/__tests__/ArrayList.test.ts +44 -0
  18. package/components/formatter/ClusterProvider.vue +1 -18
  19. package/components/nav/Header.vue +5 -4
  20. package/components/nav/TopLevelMenu.vue +38 -15
  21. package/components/nav/WindowManager/ContainerLogs.vue +22 -19
  22. package/components/nav/__tests__/TopLevelMenu.test.ts +120 -0
  23. package/components/nav/__tests__/Type.test.ts +139 -0
  24. package/config/private-label.js +1 -1
  25. package/config/product/manager.js +0 -13
  26. package/config/settings.ts +0 -2
  27. package/config/types.js +0 -4
  28. package/core/types.ts +11 -4
  29. package/edit/management.cattle.io.project.vue +1 -52
  30. package/edit/management.cattle.io.setting.vue +31 -2
  31. package/edit/provisioning.cattle.io.cluster/Basics.vue +19 -107
  32. package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +1 -1
  33. package/edit/provisioning.cattle.io.cluster/__tests__/Basics.tests.ts +0 -3
  34. package/edit/provisioning.cattle.io.cluster/rke2.vue +3 -128
  35. package/edit/workload/mixins/workload.js +14 -4
  36. package/middleware/authenticated.js +4 -2
  37. package/models/__tests__/management.cattle.io.cluster.test.ts +19 -0
  38. package/models/__tests__/provisioning.cattle.io.cluster.test.ts +90 -0
  39. package/models/cluster.x-k8s.io.machine.js +1 -1
  40. package/models/fleet.cattle.io.cluster.js +11 -1
  41. package/models/management.cattle.io.cluster.js +4 -0
  42. package/models/management.cattle.io.project.js +0 -36
  43. package/models/management.cattle.io.setting.js +11 -7
  44. package/models/provisioning.cattle.io.cluster.js +16 -4
  45. package/package.json +1 -1
  46. package/pages/auth/setup.vue +38 -1
  47. package/pages/c/_cluster/apps/charts/__tests__/install.helper.test.ts +2 -17
  48. package/pages/c/_cluster/apps/charts/index.vue +0 -15
  49. package/pages/c/_cluster/apps/charts/install.helpers.js +2 -13
  50. package/pages/c/_cluster/apps/charts/install.vue +1 -1
  51. package/pages/c/_cluster/auth/roles/index.vue +11 -1
  52. package/pages/c/_cluster/explorer/index.vue +7 -49
  53. package/pages/c/_cluster/manager/pages/_page.vue +4 -5
  54. package/pages/c/_cluster/monitoring/index.vue +26 -39
  55. package/pages/support/index.vue +1 -8
  56. package/promptRemove/management.cattle.io.project.vue +6 -9
  57. package/rancher-components/BadgeState/BadgeState.vue +1 -5
  58. package/rancher-components/Banner/Banner.test.ts +1 -51
  59. package/rancher-components/Banner/Banner.vue +53 -134
  60. package/rancher-components/Card/Card.vue +7 -24
  61. package/rancher-components/Form/Checkbox/Checkbox.test.ts +29 -20
  62. package/rancher-components/Form/Checkbox/Checkbox.vue +20 -45
  63. package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +8 -2
  64. package/rancher-components/Form/LabeledInput/LabeledInput.vue +10 -22
  65. package/rancher-components/Form/Radio/RadioButton.vue +13 -30
  66. package/rancher-components/Form/Radio/RadioGroup.vue +7 -26
  67. package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +6 -7
  68. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.test.ts +38 -25
  69. package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +11 -23
  70. package/rancher-components/LabeledTooltip/LabeledTooltip.vue +5 -19
  71. package/rancher-components/StringList/StringList.test.ts +49 -453
  72. package/rancher-components/StringList/StringList.vue +58 -92
  73. package/rancher-components/components/Form/Radio/RadioGroup.test.ts +30 -0
  74. package/rancher-components/components/Form/Radio/RadioGroup.vue +4 -0
  75. package/rancher-components/components/StringList/StringList.test.ts +270 -0
  76. package/rancher-components/components/StringList/StringList.vue +57 -18
  77. package/store/features.js +1 -0
  78. package/store/prefs.js +0 -3
  79. package/types/shell/index.d.ts +26 -17
  80. package/utils/__tests__/object.test.ts +67 -1
  81. package/utils/__tests__/version.test.ts +13 -23
  82. package/utils/cluster.js +1 -1
  83. package/utils/custom-validators.js +0 -2
  84. package/utils/error.js +16 -1
  85. package/utils/grafana.js +1 -2
  86. package/utils/monitoring.js +25 -1
  87. package/utils/object.js +4 -3
  88. package/utils/sort.js +1 -1
  89. package/utils/validators/formRules/__tests__/index.test.ts +49 -4
  90. package/utils/validators/formRules/index.ts +13 -10
  91. package/utils/validators/role-template.js +1 -1
  92. package/utils/validators/setting.js +6 -10
  93. package/utils/version.js +0 -13
  94. package/components/ChartPsp.vue +0 -76
  95. package/components/__tests__/ChartPsp.test.ts +0 -75
  96. package/components/formatter/__tests__/ClusterProvider.test.ts +0 -28
  97. package/rancher-components/Card/Card.test.ts +0 -37
  98. package/rancher-components/Form/Radio/RadioButton.test.ts +0 -31
  99. package/yarn-error.log +0 -200
@@ -1,13 +1,9 @@
1
- const httpsKeys = [
2
- 'server-url'
3
- ];
1
+ import isUrl from 'is-url';
4
2
 
5
- export function isHttps(value, getters, errors, validatorArgs, displayKey) {
6
- const key = validatorArgs[0];
3
+ export const isServerUrl = (value) => value === 'server-url';
7
4
 
8
- if (httpsKeys.includes(key) && !value.toLowerCase().startsWith('https://')) {
9
- errors.push(getters['i18n/t']('validation.setting.serverUrl.https'));
10
- }
5
+ export const isHttps = (value) => value.toLowerCase().startsWith('https://');
11
6
 
12
- return errors;
13
- }
7
+ export const isLocalhost = (value) => (/^(?:https?:\/\/)?(?:localhost|127\.0\.0\.1)/i).test(value);
8
+
9
+ export const hasTrailingForwardSlash = (value) => isUrl(value) && value?.toLowerCase().endsWith('/');
package/utils/version.js CHANGED
@@ -125,16 +125,3 @@ export async function markReadReleaseNotes(store) {
125
125
  await store.dispatch('prefs/set', { key: READ_WHATS_NEW, value: getVersionInfo(store).fullVersion });
126
126
  }
127
127
  }
128
-
129
- export function generateSupportLink(version) {
130
- const defaultSupportURL = 'https://rancher.com/support-maintenance-terms';
131
-
132
- if (!version || isDevBuild(version)) {
133
- return defaultSupportURL;
134
- }
135
-
136
- const baseUrl = 'https://www.suse.com/suse-rancher/support-matrix/all-supported-versions/rancher-';
137
- const formattedVersion = version.split('.').join('-');
138
-
139
- return baseUrl + formattedVersion;
140
- }
@@ -1,76 +0,0 @@
1
- <script>
2
- import { Checkbox } from '@components/Form/Checkbox';
3
- import { mapGetters } from 'vuex';
4
-
5
- export default {
6
- components: { Checkbox },
7
- props: {
8
- value: {
9
- type: Object,
10
- default: () => {
11
- return {};
12
- }
13
- },
14
- mode: {
15
- type: String,
16
- default: 'edit'
17
- },
18
-
19
- /**
20
- * Optional title section prior checkbox
21
- */
22
- title: {
23
- type: String,
24
- default: null
25
- },
26
-
27
- /**
28
- * Cluster information
29
- */
30
- cluster: {
31
- type: Object,
32
- default: null
33
- }
34
- },
35
- created() {
36
- if (!this.value.global.cattle) {
37
- this.$set(this.value.global, 'cattle', { psp: { enabled: false } });
38
- }
39
- if (!this.value.global.cattle.psp) {
40
- this.$set(this.value.global.cattle, 'psp', { enabled: false });
41
- }
42
- },
43
- computed: {
44
- ...mapGetters({ t: 'i18n/t' }),
45
-
46
- /**
47
- * Display checkbox only if contains PSP or K8S version is less than 1.25
48
- */
49
- hasCheckbox() {
50
- const clusterVersion = this.cluster?.kubernetesVersion || '';
51
- const version = clusterVersion.match(/\d+/g);
52
- const isRequiredVersion = version?.length ? +version[0] === 1 && +version[1] < 25 : false;
53
-
54
- return isRequiredVersion;
55
- }
56
- }
57
- };
58
- </script>
59
-
60
- <template>
61
- <div
62
- v-if="hasCheckbox"
63
- class="mt-10 mb-10"
64
- >
65
- <h3 v-if="title">
66
- {{ title }}
67
- </h3>
68
-
69
- <Checkbox
70
- v-model="value.global.cattle.psp.enabled"
71
- data-testid="psp-checkbox"
72
- :mode="mode"
73
- :label="t('catalog.chart.enablePSP')"
74
- />
75
- </div>
76
- </template>
@@ -1,75 +0,0 @@
1
- import { shallowMount, mount } from '@vue/test-utils';
2
- import ChartPsp from '@shell/components/ChartPsp.vue';
3
-
4
- describe('component: ChartPsp', () => {
5
- it.each([
6
- true, false
7
- ])('should render checkbox referencing value.global.cattle.psp.enabled as %p', (value) => {
8
- const version = 'v1.24.11+rke2r1';
9
- const wrapper = shallowMount(ChartPsp, {
10
- propsData: {
11
- value: { global: { cattle: { psp: { enabled: value } } } },
12
- cluster: { kubernetesVersion: version }
13
- }
14
- });
15
-
16
- expect(wrapper.findComponent({ name: 'Checkbox' }).props().value).toBe(value);
17
- });
18
-
19
- it.each([
20
- ['v1.24.11+rke2r1'],
21
- ])('should display the checkbox for cluster with k8s version %p', (version) => {
22
- const wrapper = shallowMount(ChartPsp, {
23
- propsData: {
24
- value: { global: { cattle: { psp: { enabled: false } } } },
25
- cluster: { kubernetesVersion: version }
26
- }
27
- });
28
-
29
- const input = wrapper.find(`[data-testid="psp-checkbox"]`).element as HTMLInputElement;
30
-
31
- expect(input).toBeDefined();
32
- });
33
-
34
- it.each([
35
- ['v1.25.11+rke2r1'],
36
- ])('should not display the checkbox for cluster with k8s version %p', (version) => {
37
- const wrapper = shallowMount(ChartPsp, {
38
- propsData: {
39
- value: { global: { cattle: { psp: { enabled: false } } } },
40
- cluster: { kubernetesVersion: version }
41
- }
42
- });
43
-
44
- const input = wrapper.find(`[data-testid="psp-checkbox"]`).element as HTMLInputElement;
45
-
46
- expect(input).toBeUndefined();
47
- });
48
-
49
- it('should update value.global.cattle.psp.enabled when checkbox is toggled', async() => {
50
- const chartValues = { global: {} } as any;
51
- const version = 'v1.24.11+rke2r1';
52
- const wrapper = mount(ChartPsp, {
53
- propsData: {
54
- value: chartValues,
55
- cluster: { kubernetesVersion: version }
56
- }
57
- });
58
-
59
- await wrapper.find('.checkbox-container').trigger('click');
60
-
61
- expect(chartValues.global.cattle.psp.enabled).toBe(true);
62
-
63
- await wrapper.find('.checkbox-container').trigger('click');
64
- expect(chartValues.global.cattle.psp.enabled).toBe(false);
65
- });
66
-
67
- it.each([
68
- { global: {} } as any,
69
- { global: { cattle: {} } } as any,
70
- ])('should define cattle.psp.enabled and set to false', (chartValues) => {
71
- shallowMount(ChartPsp, { propsData: { value: chartValues } });
72
-
73
- expect(chartValues.global.cattle.psp.enabled).toBe(false);
74
- });
75
- });
@@ -1,28 +0,0 @@
1
- import { mount } from '@vue/test-utils';
2
- import ClusterProvider from '@shell/components/formatter/ClusterProvider.vue';
3
-
4
- describe('component: ClusterProvider', () => {
5
- const importedGkeClusterInfo = { mgmt: { spec: { gkeConfig: { imported: true } } } };
6
- const importedAksClusterInfo = { mgmt: { spec: { aksConfig: { imported: true } } } };
7
- const importedEksClusterInfo = { mgmt: { spec: { eksConfig: { imported: true } } } };
8
- const notImportedGkeClusterInfo = { mgmt: { spec: { gkeConfig: { imported: false } } } };
9
- const importedClusterInfoWithProviderForEmberParam = { mgmt: { providerForEmberParam: 'import' } };
10
-
11
- describe('isImported', () => {
12
- const testCases = [
13
- [importedGkeClusterInfo, true],
14
- [importedAksClusterInfo, true],
15
- [importedEksClusterInfo, true],
16
- [notImportedGkeClusterInfo, false],
17
- [importedClusterInfoWithProviderForEmberParam, true],
18
- [{}, false],
19
- ];
20
-
21
- it.each(testCases)('should return the isImported value properly based on the props data', (row, expected) => {
22
- const wrapper = mount(ClusterProvider, { propsData: { row } });
23
-
24
- expect(wrapper.vm.$data.isImported).toBe(expected);
25
- }
26
- );
27
- });
28
- });
@@ -1,37 +0,0 @@
1
- import { mount } from '@vue/test-utils';
2
- import { Card } from './index';
3
-
4
- describe('component: Card', () => {
5
- const title = 'Card title';
6
- const body = 'Card body';
7
-
8
- it('should have a card title', () => {
9
- const wrapper = mount(Card, {
10
- propsData: { title },
11
- slots: { title: '<div>Card title</div>' }
12
- });
13
-
14
- const element = wrapper.find('[data-testid="card-title-slot"]');
15
-
16
- expect(element.exists()).toBe(true);
17
- expect(element.text()).toBe(title);
18
- });
19
-
20
- it('should have a card body', () => {
21
- const wrapper = mount(Card, {
22
- propsData: { body },
23
- slots: { body: '<div>Card body</div>' }
24
- });
25
- const element = wrapper.find('[data-testid="card-body-slot"]');
26
-
27
- expect(element.exists()).toBe(true);
28
- expect(element.text()).toBe(body);
29
- });
30
-
31
- it('should display the default card actions', () => {
32
- const wrapper = mount(Card);
33
- const element = wrapper.find('[data-testid="card-actions-slot"]');
34
-
35
- expect(element.exists()).toBe(true);
36
- });
37
- });
@@ -1,31 +0,0 @@
1
- import { shallowMount } from '@vue/test-utils';
2
- import { RadioButton } from './index';
3
- import { cleanHtmlDirective } from '@shell/plugins/clean-html-directive';
4
-
5
- describe('radioButton.vue', () => {
6
- it('renders label slot contents', () => {
7
- const wrapper = shallowMount(RadioButton, { slots: { label: 'Test Label' } });
8
-
9
- expect(wrapper.find('.radio-label').text()).toBe('Test Label');
10
- });
11
-
12
- it('renders label prop contents', () => {
13
- const wrapper = shallowMount(
14
- RadioButton,
15
- {
16
- directives: { cleanHtmlDirective },
17
- propsData: { label: 'Test Label' }
18
- });
19
-
20
- expect(wrapper.find('.radio-label').text()).toBe('Test Label');
21
- });
22
-
23
- it('renders slot contents when both slot and label prop are provided', () => {
24
- const wrapper = shallowMount(RadioButton, {
25
- slots: { label: 'Test Label - Slot' },
26
- propsData: { label: 'Test Label - Props' },
27
- });
28
-
29
- expect(wrapper.find('.radio-label').text()).toBe('Test Label - Slot');
30
- });
31
- });
package/yarn-error.log DELETED
@@ -1,200 +0,0 @@
1
- Arguments:
2
- /Users/aalves/.nvm/versions/node/v16.19.1/bin/node /Users/aalves/.nvm/versions/node/v16.19.1/bin/yarn publish . --new-version 0.3.22 --no-git-tag-version --access public
3
-
4
- PATH:
5
- /Users/aalves/.rd/bin:/Users/aalves/.nvm/versions/node/v16.19.1/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/aalves/.rd/bin:/Users/aalves/.nvm/versions/node/v16.19.1/bin:/opt/homebrew/bin:/opt/homebrew/sbin
6
-
7
- Yarn version:
8
- 1.22.19
9
-
10
- Node version:
11
- 16.19.1
12
-
13
- Platform:
14
- darwin arm64
15
-
16
- Trace:
17
- Error: https://registry.yarnpkg.com/-/user/org.couchdb.user:aalves08: failed to authenticate: Could not authenticate aalves08: bad password
18
- at Request.params.callback [as _callback] (/Users/aalves/.nvm/versions/node/v16.19.1/lib/node_modules/yarn/lib/cli.js:66145:18)
19
- at Request.self.callback (/Users/aalves/.nvm/versions/node/v16.19.1/lib/node_modules/yarn/lib/cli.js:140890:22)
20
- at Request.emit (node:events:513:28)
21
- at Request.<anonymous> (/Users/aalves/.nvm/versions/node/v16.19.1/lib/node_modules/yarn/lib/cli.js:141862:10)
22
- at Request.emit (node:events:513:28)
23
- at IncomingMessage.<anonymous> (/Users/aalves/.nvm/versions/node/v16.19.1/lib/node_modules/yarn/lib/cli.js:141784:12)
24
- at Object.onceWrapper (node:events:627:28)
25
- at IncomingMessage.emit (node:events:525:35)
26
- at endReadableNT (node:internal/streams/readable:1358:12)
27
- at processTicksAndRejections (node:internal/process/task_queues:83:21)
28
-
29
- npm manifest:
30
- {
31
- "name": "@rancher/shell",
32
- "version": "0.3.22",
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
- "dev": "./node_modules/.bin/vue-cli-service dev",
49
- "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",
50
- "build": "./node_modules/.bin/vue-cli-service build",
51
- "analyze": "./node_modules/.bin/vue-cli-service build --report",
52
- "start": "./node_modules/.bin/vue-cli-service start",
53
- "cy:run": "cypress run",
54
- "cy:open": "cypress open",
55
- "e2e:pre": "NODE_ENV=dev yarn build",
56
- "e2e:run": "NODE_ENV=dev START_SERVER_AND_TEST_INSECURE=1 start-server-and-test start https://localhost:8005/ cy:run",
57
- "e2e:dev": "start-server-and-test dev https://localhost:8005 cy:open"
58
- },
59
- "dependencies": {
60
- "@aws-sdk/client-ec2": "3.1.0",
61
- "@aws-sdk/client-eks": "3.1.0",
62
- "@aws-sdk/client-kms": "3.8.1",
63
- "@babel/plugin-proposal-optional-chaining": "7.14.5",
64
- "@babel/plugin-proposal-private-property-in-object": "7.14.5",
65
- "@babel/preset-typescript": "7.16.7",
66
- "@innologica/vue-dropdown-menu": "0.1.3",
67
- "@novnc/novnc": "1.2.0",
68
- "@nuxt/types": "2.14.6",
69
- "@nuxt/typescript-build": "2.1.0",
70
- "@nuxtjs/axios": "5.12.0",
71
- "@nuxtjs/eslint-config-typescript": "6.0.1",
72
- "@nuxtjs/webpack-profile": "0.1.0",
73
- "@popperjs/core": "2.4.4",
74
- "@types/node": "16.4.3",
75
- "@typescript-eslint/eslint-plugin": "4.33.0",
76
- "@typescript-eslint/parser": "4.33.0",
77
- "@vue/cli-plugin-babel": "4.5.18",
78
- "@vue/cli-plugin-typescript": "4.5.18",
79
- "@vue/cli-service": "4.5.18",
80
- "@vue/test-utils": "1.2.1",
81
- "@vue/vue2-jest": "27.0.0",
82
- "add": "2.0.6",
83
- "ansi_up": "5.0.0",
84
- "babel-eslint": "10.1.0",
85
- "babel-plugin-module-resolver": "4.0.0",
86
- "babel-preset-vue": "2.0.2",
87
- "browser-env": "3.3.0",
88
- "cookie": "0.5.0",
89
- "cookie-universal-nuxt": "2.1.4",
90
- "core-js": "3.21.1",
91
- "cron-validator": "1.2.0",
92
- "cronstrue": "1.95.0",
93
- "cross-env": "6.0.3",
94
- "css-loader": "6.7.3",
95
- "csv-loader": "3.0.3",
96
- "cypress": "10.3.1",
97
- "d3": "7.3.0",
98
- "d3-selection": "1.4.1",
99
- "dagre-d3": "0.6.4",
100
- "dayjs": "1.8.29",
101
- "diff2html": "3.4.24",
102
- "dompurify": "2.4.5",
103
- "eslint": "7.32.0",
104
- "eslint-config-standard": "16.0.3",
105
- "eslint-import-resolver-node": "0.3.4",
106
- "eslint-module-utils": "2.6.1",
107
- "eslint-plugin-cypress": "2.12.1",
108
- "eslint-plugin-import": "2.23.4",
109
- "eslint-plugin-jest": "24.4.0",
110
- "eslint-plugin-n": "15.2.0",
111
- "eslint-plugin-vue": "9.10.0",
112
- "event-target-shim": "5.0.1",
113
- "express": "4.17.1",
114
- "file-saver": "2.0.2",
115
- "frontmatter-markdown-loader": "3.7.0",
116
- "identicon.js": "2.3.3",
117
- "intl-messageformat": "7.8.4",
118
- "is-url": "1.2.4",
119
- "jest": "27.5.1",
120
- "jest-serializer-vue": "2.0.2",
121
- "jexl": "2.2.2",
122
- "jquery": "3.5.1",
123
- "js-cookie": "2.2.1",
124
- "js-yaml": "4.1.0",
125
- "js-yaml-loader": "1.2.2",
126
- "jsdiff": "1.1.1",
127
- "jsdom-global": "3.0.2",
128
- "jsonpath-plus": "6.0.1",
129
- "jsrsasign": "10.5.25",
130
- "jszip": "3.8.0",
131
- "lodash": "4.17.21",
132
- "marked": "4.0.17",
133
- "nodemon": "2.0.22",
134
- "nuxt": "2.15.8",
135
- "nyc": "15.1.0",
136
- "papaparse": "5.3.0",
137
- "portal-vue": "2.1.7",
138
- "rancher-icons": "rancher/icons#v2.0.16",
139
- "require-extension-hooks": "0.3.3",
140
- "require-extension-hooks-babel": "1.0.0",
141
- "require-extension-hooks-vue": "3.0.0",
142
- "sass": "1.51.0",
143
- "sass-loader": "10.2.1",
144
- "serve-static": "1.14.1",
145
- "set-cookie-parser": "2.4.6",
146
- "shell-quote": "1.7.3",
147
- "sinon": "8.1.1",
148
- "start-server-and-test": "1.13.1",
149
- "style-loader": "1.2.1",
150
- "ts-node": "8.10.2",
151
- "typescript": "4.1.6",
152
- "url-parse": "1.5.10",
153
- "v-tooltip": "2.0.3",
154
- "vue": "2.7.14",
155
- "vue-clipboard2": "0.3.1",
156
- "vue-codemirror": "4.0.6",
157
- "vue-js-modal": "1.3.35",
158
- "vue-resize": "0.4.5",
159
- "vue-select": "3.18.3",
160
- "vue-server-renderer": "2.7.14",
161
- "vue-shortkey": "3.1.7",
162
- "vue-template-compiler": "2.7.14",
163
- "vue-virtual-scroll-list": "^2.3.4",
164
- "vue2-transitions": "0.3.0",
165
- "vuedraggable": "2.24.3",
166
- "vuex": "3.6.2",
167
- "webpack-bundle-analyzer": "4.5.0",
168
- "webpack-virtual-modules": "0.4.3",
169
- "xterm": "5.0.0",
170
- "xterm-addon-fit": "0.6.0",
171
- "xterm-addon-search": "0.10.0",
172
- "xterm-addon-web-links": "0.7.0",
173
- "xterm-addon-webgl": "0.13.0",
174
- "worker-loader": "3.0.8",
175
- "yarn": "1.22.18"
176
- },
177
- "resolutions": {
178
- "ejs": "^3.1.7",
179
- "json5": ">=2.2.2",
180
- "d3-color": ">=3.1.0",
181
- "glob-parent": ">=5.1.2",
182
- "node-forge": ">=1.3.0",
183
- "qs": ">=6.7.3",
184
- "nth-check": ">=2.0.1",
185
- "follow-redirects": ">=1.14.7",
186
- "merge": ">=2.1.1"
187
- },
188
- "nyc": {
189
- "extension": [
190
- ".js",
191
- ".vue"
192
- ]
193
- }
194
- }
195
-
196
- yarn manifest:
197
- No manifest
198
-
199
- Lockfile:
200
- No lockfile