@rancher/shell 0.3.28 → 0.3.29
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/.DS_Store +0 -0
- package/assets/translations/en-us.yaml +15 -1
- package/chart/monitoring/grafana/index.vue +2 -2
- package/components/AsyncButton.vue +9 -0
- package/components/SortableTable/THead.vue +7 -9
- package/components/SortableTable/index.vue +1 -2
- package/components/fleet/FleetStatus.vue +3 -3
- package/components/fleet/FleetSummary.vue +32 -27
- package/detail/provisioning.cattle.io.cluster.vue +2 -1
- package/edit/workload/index.vue +2 -1
- package/machine-config/__tests__/vmwarevsphere.test.ts +72 -0
- package/machine-config/vmwarevsphere.vue +68 -13
- package/package.json +2 -1
- package/rancher-components/BadgeState/BadgeState.vue +5 -1
- package/rancher-components/Banner/Banner.test.ts +51 -1
- package/rancher-components/Banner/Banner.vue +134 -53
- package/rancher-components/Card/Card.test.ts +37 -0
- package/rancher-components/Card/Card.vue +24 -7
- package/rancher-components/Form/Checkbox/Checkbox.test.ts +20 -29
- package/rancher-components/Form/Checkbox/Checkbox.vue +45 -20
- package/rancher-components/Form/LabeledInput/LabeledInput.test.ts +2 -8
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +22 -10
- package/rancher-components/Form/Radio/RadioButton.test.ts +31 -0
- package/rancher-components/Form/Radio/RadioButton.vue +30 -13
- package/rancher-components/Form/Radio/RadioGroup.vue +26 -7
- package/rancher-components/Form/TextArea/TextAreaAutoGrow.vue +7 -6
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.test.ts +25 -38
- package/rancher-components/Form/ToggleSwitch/ToggleSwitch.vue +23 -11
- package/rancher-components/LabeledTooltip/LabeledTooltip.vue +19 -5
- package/rancher-components/StringList/StringList.test.ts +453 -49
- package/rancher-components/StringList/StringList.vue +92 -58
- package/types/shell/index.d.ts +9 -9
- package/yarn-error.log +200 -0
|
@@ -30,9 +30,9 @@ const CLASS = {
|
|
|
30
30
|
* Manage a list of strings
|
|
31
31
|
*/
|
|
32
32
|
export default Vue.extend({
|
|
33
|
-
components: { LabeledInput },
|
|
34
33
|
|
|
35
|
-
name:
|
|
34
|
+
name: 'StringList',
|
|
35
|
+
components: { LabeledInput },
|
|
36
36
|
|
|
37
37
|
props: {
|
|
38
38
|
/**
|
|
@@ -85,11 +85,11 @@ export default Vue.extend({
|
|
|
85
85
|
},
|
|
86
86
|
data() {
|
|
87
87
|
return {
|
|
88
|
-
value:
|
|
89
|
-
selected:
|
|
90
|
-
|
|
91
|
-
isCreateItem:
|
|
92
|
-
errors:
|
|
88
|
+
value: null as string | null,
|
|
89
|
+
selected: null as string | null,
|
|
90
|
+
editedItem: null as string | null,
|
|
91
|
+
isCreateItem: false,
|
|
92
|
+
errors: { duplicate: false } as Record<Error, boolean>
|
|
93
93
|
};
|
|
94
94
|
},
|
|
95
95
|
|
|
@@ -100,8 +100,8 @@ export default Vue.extend({
|
|
|
100
100
|
*/
|
|
101
101
|
errorMessagesArray(): string[] {
|
|
102
102
|
return (Object.keys(this.errors) as Error[])
|
|
103
|
-
.filter(f =>
|
|
104
|
-
.map(k => this.errorMessages[k]);
|
|
103
|
+
.filter((f) => this.errors[f] && this.errorMessages[f])
|
|
104
|
+
.map((k) => this.errorMessages[k]);
|
|
105
105
|
},
|
|
106
106
|
},
|
|
107
107
|
|
|
@@ -113,23 +113,35 @@ export default Vue.extend({
|
|
|
113
113
|
this.toggleEditMode(false);
|
|
114
114
|
this.toggleCreateMode(false);
|
|
115
115
|
},
|
|
116
|
+
value(val) {
|
|
117
|
+
this.$emit('type:item', val);
|
|
118
|
+
},
|
|
119
|
+
errors: {
|
|
120
|
+
handler(val) {
|
|
121
|
+
this.$emit('errors', val);
|
|
122
|
+
},
|
|
123
|
+
deep: true
|
|
124
|
+
}
|
|
116
125
|
},
|
|
117
126
|
|
|
118
127
|
methods: {
|
|
119
128
|
onChange(value: string) {
|
|
120
129
|
this.value = value;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
130
|
+
|
|
131
|
+
const items = [
|
|
132
|
+
...this.items,
|
|
133
|
+
this.value
|
|
134
|
+
];
|
|
135
|
+
|
|
124
136
|
this.toggleError(
|
|
125
137
|
'duplicate',
|
|
126
|
-
|
|
127
|
-
this.isCreateItem ? INPUT.create : INPUT.edit
|
|
138
|
+
hasDuplicatedStrings(items, this.caseSensitive),
|
|
139
|
+
this.isCreateItem ? INPUT.create : INPUT.edit
|
|
128
140
|
);
|
|
129
141
|
},
|
|
130
142
|
|
|
131
143
|
onSelect(item: string) {
|
|
132
|
-
if (this.isCreateItem || this.
|
|
144
|
+
if (this.readonly || this.isCreateItem || this.editedItem === item) {
|
|
133
145
|
return;
|
|
134
146
|
}
|
|
135
147
|
this.selected = item;
|
|
@@ -160,7 +172,7 @@ export default Vue.extend({
|
|
|
160
172
|
},
|
|
161
173
|
|
|
162
174
|
onClickEmptyBody() {
|
|
163
|
-
if (!this.isCreateItem && !this.
|
|
175
|
+
if (!this.isCreateItem && !this.editedItem) {
|
|
164
176
|
this.toggleCreateMode(true);
|
|
165
177
|
}
|
|
166
178
|
},
|
|
@@ -176,38 +188,43 @@ export default Vue.extend({
|
|
|
176
188
|
|
|
177
189
|
return;
|
|
178
190
|
}
|
|
179
|
-
if (this.
|
|
191
|
+
if (this.editedItem) {
|
|
192
|
+
this.deleteAndSelectNext(this.editedItem);
|
|
180
193
|
this.toggleEditMode(false);
|
|
181
194
|
|
|
182
195
|
return;
|
|
183
196
|
}
|
|
184
197
|
if (this.selected) {
|
|
185
|
-
|
|
198
|
+
this.deleteAndSelectNext(this.selected);
|
|
199
|
+
}
|
|
200
|
+
},
|
|
186
201
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
202
|
+
deleteAndSelectNext(currItem: string) {
|
|
203
|
+
const index = findStringIndex(this.items, currItem, false);
|
|
204
|
+
|
|
205
|
+
if (index !== -1) {
|
|
206
|
+
/**
|
|
207
|
+
* Select the next item in the list.
|
|
208
|
+
*/
|
|
209
|
+
const item = (this.items[index + 1] || this.items[index - 1]);
|
|
192
210
|
|
|
193
|
-
|
|
194
|
-
|
|
211
|
+
this.onSelect(item);
|
|
212
|
+
this.setFocus(item);
|
|
195
213
|
|
|
196
|
-
|
|
197
|
-
}
|
|
214
|
+
this.deleteItem(this.items[index]);
|
|
198
215
|
}
|
|
199
216
|
},
|
|
200
217
|
|
|
201
218
|
setFocus(refId: string) {
|
|
202
|
-
this.$nextTick(() => this.getElemByRef(refId)?.focus());
|
|
219
|
+
this.$nextTick(() => (this.getElemByRef(refId) as Vue & HTMLElement)?.focus());
|
|
203
220
|
},
|
|
204
221
|
|
|
205
222
|
/**
|
|
206
223
|
* Move scrollbar when the selected item is over the top or bottom side of the box
|
|
207
224
|
*/
|
|
208
225
|
moveScrollbar(arrow: Arrow, value?: number) {
|
|
209
|
-
const box = this.getElemByRef(BOX);
|
|
210
|
-
const item = this.getElemByRef(this.selected || '');
|
|
226
|
+
const box = this.getElemByRef(BOX) as HTMLElement;
|
|
227
|
+
const item = this.getElemByRef(this.selected || '') as HTMLElement;
|
|
211
228
|
|
|
212
229
|
if (box && item && item.className.includes(CLASS.item)) {
|
|
213
230
|
const boxRect = box.getClientRects()[0];
|
|
@@ -229,13 +246,14 @@ export default Vue.extend({
|
|
|
229
246
|
*/
|
|
230
247
|
toggleError(type: Error, val: boolean, refId?: string) {
|
|
231
248
|
this.errors[type] = val;
|
|
249
|
+
|
|
232
250
|
if (refId) {
|
|
233
251
|
this.toggleErrorClass(refId, val);
|
|
234
252
|
}
|
|
235
253
|
},
|
|
236
254
|
|
|
237
255
|
toggleErrorClass(refId: string, val: boolean) {
|
|
238
|
-
const input = this.getElemByRef(refId)?.$el;
|
|
256
|
+
const input = (this.getElemByRef(refId) as Vue)?.$el;
|
|
239
257
|
|
|
240
258
|
if (input) {
|
|
241
259
|
if (val) {
|
|
@@ -250,7 +268,11 @@ export default Vue.extend({
|
|
|
250
268
|
* Show/Hide the input line to create new item
|
|
251
269
|
*/
|
|
252
270
|
toggleCreateMode(show: boolean) {
|
|
271
|
+
if (this.readonly) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
253
274
|
if (show) {
|
|
275
|
+
this.toggleEditMode(false);
|
|
254
276
|
this.value = '';
|
|
255
277
|
|
|
256
278
|
this.isCreateItem = true;
|
|
@@ -268,31 +290,34 @@ export default Vue.extend({
|
|
|
268
290
|
* Show/Hide the in-line editing to edit an existing item
|
|
269
291
|
*/
|
|
270
292
|
toggleEditMode(show: boolean, item?: string) {
|
|
293
|
+
if (this.readonly) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
271
296
|
if (show) {
|
|
272
297
|
this.toggleCreateMode(false);
|
|
273
|
-
this.value = this.
|
|
298
|
+
this.value = this.editedItem;
|
|
274
299
|
|
|
275
|
-
this.
|
|
300
|
+
this.editedItem = item || '';
|
|
276
301
|
this.setFocus(INPUT.edit);
|
|
277
302
|
} else {
|
|
278
303
|
this.value = null;
|
|
279
304
|
this.toggleError('duplicate', false);
|
|
280
305
|
this.onSelectLeave();
|
|
281
306
|
|
|
282
|
-
this.
|
|
307
|
+
this.editedItem = null;
|
|
283
308
|
}
|
|
284
309
|
},
|
|
285
310
|
|
|
286
311
|
getElemByRef(id: string) {
|
|
287
312
|
const ref = this.$refs[id];
|
|
288
313
|
|
|
289
|
-
return
|
|
314
|
+
return Array.isArray(ref) ? ref[0] : ref;
|
|
290
315
|
},
|
|
291
316
|
|
|
292
317
|
/**
|
|
293
318
|
* Create a new item and insert in the items list
|
|
294
319
|
*/
|
|
295
|
-
saveItem() {
|
|
320
|
+
saveItem(closeInput = true) {
|
|
296
321
|
const value = this.value?.trim();
|
|
297
322
|
|
|
298
323
|
if (value) {
|
|
@@ -301,21 +326,20 @@ export default Vue.extend({
|
|
|
301
326
|
value,
|
|
302
327
|
];
|
|
303
328
|
|
|
304
|
-
if (hasDuplicatedStrings(items, this.caseSensitive)) {
|
|
305
|
-
this.
|
|
306
|
-
|
|
307
|
-
return;
|
|
329
|
+
if (!hasDuplicatedStrings(items, this.caseSensitive)) {
|
|
330
|
+
this.updateItems(items);
|
|
308
331
|
}
|
|
332
|
+
}
|
|
309
333
|
|
|
310
|
-
|
|
334
|
+
if (closeInput) {
|
|
335
|
+
this.toggleCreateMode(false);
|
|
311
336
|
}
|
|
312
|
-
this.toggleCreateMode(false);
|
|
313
337
|
},
|
|
314
338
|
|
|
315
339
|
/**
|
|
316
340
|
* Update an existing item in the items list
|
|
317
341
|
*/
|
|
318
|
-
updateItem(item: string) {
|
|
342
|
+
updateItem(item: string, closeInput = true) {
|
|
319
343
|
const value = this.value?.trim();
|
|
320
344
|
|
|
321
345
|
if (value) {
|
|
@@ -326,22 +350,21 @@ export default Vue.extend({
|
|
|
326
350
|
items[index] = value;
|
|
327
351
|
}
|
|
328
352
|
|
|
329
|
-
if (hasDuplicatedStrings(items, this.caseSensitive)) {
|
|
330
|
-
this.
|
|
331
|
-
|
|
332
|
-
return;
|
|
353
|
+
if (!hasDuplicatedStrings(items, this.caseSensitive)) {
|
|
354
|
+
this.updateItems(items);
|
|
333
355
|
}
|
|
356
|
+
}
|
|
334
357
|
|
|
335
|
-
|
|
358
|
+
if (closeInput) {
|
|
359
|
+
this.toggleEditMode(false);
|
|
336
360
|
}
|
|
337
|
-
this.toggleEditMode(false);
|
|
338
361
|
},
|
|
339
362
|
|
|
340
363
|
/**
|
|
341
364
|
* Remove an item from items list
|
|
342
365
|
*/
|
|
343
366
|
deleteItem(item?: string) {
|
|
344
|
-
const items = this.items.filter(f => f !== item);
|
|
367
|
+
const items = this.items.filter((f) => f !== item);
|
|
345
368
|
|
|
346
369
|
this.updateItems(items);
|
|
347
370
|
},
|
|
@@ -387,19 +410,20 @@ export default Vue.extend({
|
|
|
387
410
|
@blur="onSelectLeave(item)"
|
|
388
411
|
>
|
|
389
412
|
<span
|
|
390
|
-
v-if="!
|
|
413
|
+
v-if="!editedItem || editedItem !== item"
|
|
391
414
|
class="label static"
|
|
392
415
|
>
|
|
393
416
|
{{ item }}
|
|
394
417
|
</span>
|
|
395
418
|
<LabeledInput
|
|
396
|
-
v-if="
|
|
419
|
+
v-if="editedItem && editedItem === item"
|
|
397
420
|
ref="item-edit"
|
|
421
|
+
:data-testid="`item-edit-${item}`"
|
|
398
422
|
class="edit-input static"
|
|
399
423
|
:value="value != null ? value : item"
|
|
400
424
|
@input="onChange($event)"
|
|
401
|
-
@blur.prevent="
|
|
402
|
-
@keydown.native.enter="updateItem(item)"
|
|
425
|
+
@blur.prevent="updateItem(item)"
|
|
426
|
+
@keydown.native.enter="updateItem(item, !errors.duplicate)"
|
|
403
427
|
/>
|
|
404
428
|
</div>
|
|
405
429
|
<div
|
|
@@ -408,12 +432,14 @@ export default Vue.extend({
|
|
|
408
432
|
>
|
|
409
433
|
<LabeledInput
|
|
410
434
|
ref="item-create"
|
|
435
|
+
data-testid="item-create"
|
|
411
436
|
class="create-input static"
|
|
412
437
|
type="text"
|
|
413
438
|
:value="value"
|
|
414
439
|
:placeholder="placeholder"
|
|
415
440
|
@input="onChange($event)"
|
|
416
|
-
@
|
|
441
|
+
@blur.prevent="saveItem"
|
|
442
|
+
@keydown.native.enter="saveItem(!errors.duplicate)"
|
|
417
443
|
/>
|
|
418
444
|
</div>
|
|
419
445
|
</div>
|
|
@@ -427,25 +453,32 @@ export default Vue.extend({
|
|
|
427
453
|
class="action-buttons"
|
|
428
454
|
>
|
|
429
455
|
<button
|
|
456
|
+
data-testid="button-remove"
|
|
430
457
|
class="btn btn-sm role-tertiary remove-button"
|
|
431
|
-
:disabled="!selected && !isCreateItem && !
|
|
458
|
+
:disabled="!selected && !isCreateItem && !editedItem"
|
|
432
459
|
@mousedown.prevent="onClickMinusButton"
|
|
433
460
|
>
|
|
434
461
|
<span class="icon icon-minus icon-sm" />
|
|
435
462
|
</button>
|
|
436
463
|
<button
|
|
464
|
+
data-testid="button-add"
|
|
437
465
|
class="btn btn-sm role-tertiary add-button"
|
|
438
|
-
:disabled="isCreateItem"
|
|
466
|
+
:disabled="isCreateItem || editedItem"
|
|
439
467
|
@click.prevent="onClickPlusButton"
|
|
440
468
|
>
|
|
441
469
|
<span class="icon icon-plus icon-sm" />
|
|
442
470
|
</button>
|
|
443
471
|
</div>
|
|
444
472
|
<div class="messages">
|
|
445
|
-
<i
|
|
473
|
+
<i
|
|
474
|
+
v-if="errorMessagesArray.length > 0"
|
|
475
|
+
data-testid="i-warning-icon"
|
|
476
|
+
class="icon icon-warning icon-lg"
|
|
477
|
+
/>
|
|
446
478
|
<span
|
|
447
479
|
v-for="(msg, idx) in errorMessagesArray"
|
|
448
480
|
:key="idx"
|
|
481
|
+
:data-testid="`span-error-message-${msg}`"
|
|
449
482
|
class="error"
|
|
450
483
|
>
|
|
451
484
|
{{ idx > 0 ? '; ' : '' }}
|
|
@@ -499,6 +532,7 @@ export default Vue.extend({
|
|
|
499
532
|
width: auto;
|
|
500
533
|
user-select: none;
|
|
501
534
|
overflow: hidden;
|
|
535
|
+
white-space: no-wrap;
|
|
502
536
|
text-overflow: ellipsis;
|
|
503
537
|
padding-top: 1px;
|
|
504
538
|
}
|
package/types/shell/index.d.ts
CHANGED
|
@@ -3621,35 +3621,35 @@ export namespace KEY {
|
|
|
3621
3621
|
}
|
|
3622
3622
|
}
|
|
3623
3623
|
|
|
3624
|
-
// @shell/utils/poller
|
|
3624
|
+
// @shell/utils/poller-sequential
|
|
3625
3625
|
|
|
3626
|
-
declare module '@shell/utils/poller' {
|
|
3627
|
-
export default class
|
|
3626
|
+
declare module '@shell/utils/poller-sequential' {
|
|
3627
|
+
export default class PollerSequential {
|
|
3628
3628
|
constructor(fn: any, pollRateMs: any, maxRetries?: number);
|
|
3629
3629
|
fn: any;
|
|
3630
3630
|
pollRateMs: any;
|
|
3631
3631
|
maxRetries: number;
|
|
3632
|
-
|
|
3632
|
+
timeoutId: any;
|
|
3633
3633
|
tryCount: number;
|
|
3634
3634
|
start(): void;
|
|
3635
3635
|
stop(): void;
|
|
3636
|
+
_poll(): void;
|
|
3636
3637
|
_intervalMethod(): Promise<void>;
|
|
3637
3638
|
}
|
|
3638
3639
|
}
|
|
3639
3640
|
|
|
3640
|
-
// @shell/utils/poller
|
|
3641
|
+
// @shell/utils/poller
|
|
3641
3642
|
|
|
3642
|
-
declare module '@shell/utils/poller
|
|
3643
|
-
export default class
|
|
3643
|
+
declare module '@shell/utils/poller' {
|
|
3644
|
+
export default class Poller {
|
|
3644
3645
|
constructor(fn: any, pollRateMs: any, maxRetries?: number);
|
|
3645
3646
|
fn: any;
|
|
3646
3647
|
pollRateMs: any;
|
|
3647
3648
|
maxRetries: number;
|
|
3648
|
-
|
|
3649
|
+
intervalId: any;
|
|
3649
3650
|
tryCount: number;
|
|
3650
3651
|
start(): void;
|
|
3651
3652
|
stop(): void;
|
|
3652
|
-
_poll(): void;
|
|
3653
3653
|
_intervalMethod(): Promise<void>;
|
|
3654
3654
|
}
|
|
3655
3655
|
}
|
package/yarn-error.log
ADDED
|
@@ -0,0 +1,200 @@
|
|
|
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
|