esa-cli 1.0.9 → 1.0.11
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/README.md +206 -22
- package/bin/enter.cjs +45 -12
- package/dist/bin/enter.cjs +45 -12
- package/dist/commands/commit/index.js +5 -4
- package/dist/commands/deployments/delete.js +1 -1
- package/dist/commands/deployments/list.js +1 -1
- package/dist/commands/dev/build.js +4 -1
- package/dist/commands/dev/doProcess.js +94 -36
- package/dist/commands/domain/add.js +1 -1
- package/dist/commands/domain/delete.js +2 -3
- package/dist/commands/domain/list.js +1 -1
- package/dist/commands/init/helper.js +12 -8
- package/dist/commands/init/index.js +3 -4
- package/dist/commands/login/index.js +108 -5
- package/dist/commands/logout.js +11 -4
- package/dist/commands/route/add.js +1 -1
- package/dist/commands/route/delete.js +1 -1
- package/dist/commands/route/list.js +1 -1
- package/dist/commands/routine/delete.js +1 -2
- package/dist/commands/routine/list.js +1 -1
- package/dist/commands/site/list.js +1 -1
- package/dist/commands/utils.js +21 -19
- package/dist/components/mutiSelectTable.js +16 -83
- package/dist/components/routeBuilder.js +30 -54
- package/dist/components/selectInput.js +27 -13
- package/dist/docs/Commands_en.md +14 -2
- package/dist/docs/Commands_zh_CN.md +11 -1
- package/dist/i18n/locales.json +25 -1
- package/dist/index.js +8 -3
- package/dist/libs/api.js +4 -15
- package/dist/libs/apiService.js +8 -14
- package/dist/libs/logger.js +7 -2
- package/dist/utils/fileMd5.js +13 -3
- package/dist/utils/fileUtils/base.js +14 -18
- package/dist/utils/fileUtils/index.js +25 -3
- package/dist/utils/validateCredentials.js +12 -16
- package/package.json +18 -20
- package/zh_CN.md +2 -2
- package/dist/components/descriptionInput.js +0 -38
- package/dist/components/filterSelector.js +0 -132
- package/dist/components/selectItem.js +0 -6
- package/dist/components/yesNoPrompt.js +0 -9
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { Box, render, Text, useInput } from 'ink';
|
|
11
|
-
import TextInput from 'ink-text-input';
|
|
12
|
-
import React, { useState, useEffect } from 'react';
|
|
13
|
-
import t from '../i18n/index.js';
|
|
14
|
-
export const FilterSelector = ({ data, onSubmit, hideCount = 20 }) => {
|
|
15
|
-
const [inputValue, setInputValue] = useState('');
|
|
16
|
-
const [filteredData, setFilteredData] = useState(data);
|
|
17
|
-
const [isShowFilteredData, setIsShowFilteredData] = useState(false);
|
|
18
|
-
const [isSelectionMode, setIsSelectionMode] = useState(false);
|
|
19
|
-
const [selectedIndex, setSelectedIndex] = useState(-1);
|
|
20
|
-
const [tabPressCount, setTabPressCount] = useState(0);
|
|
21
|
-
const [showAll, setShowAll] = useState(false);
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
if (showAll && !isSelectionMode) {
|
|
24
|
-
setFilteredData(data.filter((site) => site.label.includes(inputValue)));
|
|
25
|
-
}
|
|
26
|
-
}, [inputValue, data]);
|
|
27
|
-
const handleSubmit = () => {
|
|
28
|
-
onSubmit(inputValue);
|
|
29
|
-
};
|
|
30
|
-
useInput((input, key) => {
|
|
31
|
-
if (key.return && isSelectionMode && filteredData[selectedIndex]) {
|
|
32
|
-
setInputValue(filteredData[selectedIndex].label);
|
|
33
|
-
setIsSelectionMode(false);
|
|
34
|
-
setIsShowFilteredData(false);
|
|
35
|
-
setSelectedIndex(-1);
|
|
36
|
-
setTabPressCount(0);
|
|
37
|
-
}
|
|
38
|
-
else if (key.tab) {
|
|
39
|
-
if (tabPressCount === 0) {
|
|
40
|
-
const filteredDataInner = data.filter((site) => site.label.includes(inputValue));
|
|
41
|
-
setFilteredData(filteredDataInner);
|
|
42
|
-
if (filteredData.length === 1) {
|
|
43
|
-
setIsShowFilteredData(false);
|
|
44
|
-
setInputValue(filteredDataInner[0].label);
|
|
45
|
-
setSelectedIndex(0);
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
setIsShowFilteredData(true);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else if (tabPressCount === 1) {
|
|
52
|
-
const filteredDataInner = data.filter((site) => site.label.includes(inputValue));
|
|
53
|
-
setFilteredData(filteredDataInner);
|
|
54
|
-
// Enter selection mode when match results >= 1
|
|
55
|
-
if ((filteredDataInner.length >= 1 &&
|
|
56
|
-
showAll &&
|
|
57
|
-
filteredDataInner.length > hideCount) ||
|
|
58
|
-
(filteredDataInner.length >= 1 &&
|
|
59
|
-
filteredDataInner.length <= hideCount)) {
|
|
60
|
-
setIsSelectionMode(true);
|
|
61
|
-
setSelectedIndex(0);
|
|
62
|
-
setInputValue(filteredDataInner[0].label);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
else if (tabPressCount >= 2 &&
|
|
66
|
-
isSelectionMode &&
|
|
67
|
-
(showAll || filteredData.length <= hideCount) &&
|
|
68
|
-
filteredData.length > 1) {
|
|
69
|
-
setSelectedIndex((prevIndex) => (prevIndex + 1) % filteredData.length);
|
|
70
|
-
setInputValue(filteredData[(selectedIndex + 1) % filteredData.length].label);
|
|
71
|
-
}
|
|
72
|
-
setTabPressCount((prevCount) => prevCount + 1);
|
|
73
|
-
}
|
|
74
|
-
else if (key.downArrow && isSelectionMode) {
|
|
75
|
-
setSelectedIndex((prevIndex) => (prevIndex + 1) % filteredData.length);
|
|
76
|
-
setInputValue(filteredData[(selectedIndex + 1) % filteredData.length].label);
|
|
77
|
-
}
|
|
78
|
-
else if (key.upArrow && isSelectionMode) {
|
|
79
|
-
setSelectedIndex((prevIndex) => (prevIndex - 1 + filteredData.length) % filteredData.length);
|
|
80
|
-
setInputValue(filteredData[(selectedIndex - 1 + filteredData.length) % filteredData.length].label);
|
|
81
|
-
}
|
|
82
|
-
else if (key.leftArrow || key.rightArrow) {
|
|
83
|
-
}
|
|
84
|
-
else if (key.return) {
|
|
85
|
-
handleSubmit();
|
|
86
|
-
setTabPressCount(0);
|
|
87
|
-
}
|
|
88
|
-
else if (input === 'y' &&
|
|
89
|
-
!showAll &&
|
|
90
|
-
isShowFilteredData &&
|
|
91
|
-
(filteredData === null || filteredData === void 0 ? void 0 : filteredData.length) > hideCount) {
|
|
92
|
-
setShowAll(true);
|
|
93
|
-
setIsSelectionMode(true);
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
setIsSelectionMode(false);
|
|
97
|
-
setIsShowFilteredData(false);
|
|
98
|
-
setSelectedIndex(-1);
|
|
99
|
-
setTabPressCount(0);
|
|
100
|
-
setShowAll(false);
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
const renderFilterData = () => {
|
|
104
|
-
return ((showAll || filteredData.length <= hideCount) &&
|
|
105
|
-
filteredData.length > 1 && (React.createElement(React.Fragment, null,
|
|
106
|
-
React.createElement(Text, null, `👉 ${t('route_add_tab_tip').d('Press Tab to select')}`),
|
|
107
|
-
filteredData.map((item, index) => (React.createElement(Text, { key: index, inverse: index === selectedIndex }, item.label))))));
|
|
108
|
-
};
|
|
109
|
-
return (React.createElement(Box, { flexDirection: "column" },
|
|
110
|
-
React.createElement(TextInput, { value: inputValue, highlightPastedText: true, onChange: (value) => {
|
|
111
|
-
if (!showAll &&
|
|
112
|
-
value[value.length - 1] === 'y' &&
|
|
113
|
-
tabPressCount === 1) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
setInputValue(value);
|
|
117
|
-
} }),
|
|
118
|
-
isShowFilteredData && (React.createElement(React.Fragment, null,
|
|
119
|
-
filteredData.length > hideCount && !showAll && (React.createElement(Text, null, t('route_add_see_more').d(`Do you wish to see all ${filteredData.length} possibilities? (y/n)`))),
|
|
120
|
-
renderFilterData()))));
|
|
121
|
-
};
|
|
122
|
-
export const promptFilterSelector = (siteList) => __awaiter(void 0, void 0, void 0, function* () {
|
|
123
|
-
return new Promise((resolve) => {
|
|
124
|
-
const { unmount } = render(React.createElement(FilterSelector, { onSubmit: (input) => {
|
|
125
|
-
unmount();
|
|
126
|
-
resolve(siteList.find((site) => site.label === input) || {
|
|
127
|
-
label: '',
|
|
128
|
-
value: ''
|
|
129
|
-
});
|
|
130
|
-
}, data: siteList }));
|
|
131
|
-
});
|
|
132
|
-
});
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import SelectItems from './selectInput.js';
|
|
2
|
-
const yesNoItems = [
|
|
3
|
-
{ label: 'Yes', value: 'yes' },
|
|
4
|
-
{ label: 'No', value: 'no' }
|
|
5
|
-
];
|
|
6
|
-
export const yesNoPrompt = (handleSelect, title) => {
|
|
7
|
-
console.log(title);
|
|
8
|
-
SelectItems({ items: yesNoItems, handleSelect });
|
|
9
|
-
};
|