@cloudbase/cli 2.0.0 → 2.0.3-alpha.0

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 (206) hide show
  1. package/.editorconfig +9 -9
  2. package/.eslintignore +7 -7
  3. package/.eslintrc +35 -35
  4. package/.prettierrc.js +29 -29
  5. package/.vscode/launch.json +16 -16
  6. package/LICENSE +5 -5
  7. package/README.md +35 -35
  8. package/bin/cloudbase.js +5 -5
  9. package/bin/tcb.js +6 -4
  10. package/changelog.md +6 -6
  11. package/jest.config.js +17 -17
  12. package/lib/commands/account/login.js +18 -18
  13. package/lib/commands/storage/storage.js +1 -1
  14. package/lib/env/login.js +7 -7
  15. package/lib/run/service/deployPackage.js +6 -4
  16. package/lib/utils/net/http-request.js +4 -4
  17. package/lib/utils/tcbrApi/tcbr-cloud-api/request.js +3 -3
  18. package/package.json +17 -17
  19. package/post-install.js +61 -61
  20. package/runtime/nodejs/bootstrap.js +255 -255
  21. package/runtime/nodejs/runtime.js +183 -183
  22. package/src/auth/index.ts +1 -1
  23. package/src/auth/login.ts +91 -91
  24. package/src/auth/logout.ts +7 -7
  25. package/src/commands/account/index.ts +2 -2
  26. package/src/commands/account/login.ts +192 -192
  27. package/src/commands/account/logout.ts +24 -24
  28. package/src/commands/common.ts +246 -246
  29. package/src/commands/env/base.ts +90 -90
  30. package/src/commands/env/create.ts +92 -92
  31. package/src/commands/env/domain.ts +186 -186
  32. package/src/commands/env/index.ts +4 -4
  33. package/src/commands/env/login.ts +235 -235
  34. package/src/commands/framework/index.ts +124 -124
  35. package/src/commands/functions/alias/getRoute.ts +76 -76
  36. package/src/commands/functions/alias/index.ts +2 -2
  37. package/src/commands/functions/alias/setRoute.ts +82 -82
  38. package/src/commands/functions/code-download.ts +100 -100
  39. package/src/commands/functions/code-update.ts +62 -62
  40. package/src/commands/functions/concurrency/delete.ts +45 -45
  41. package/src/commands/functions/concurrency/index.ts +2 -2
  42. package/src/commands/functions/concurrency/list.ts +58 -58
  43. package/src/commands/functions/concurrency/set.ts +47 -47
  44. package/src/commands/functions/config-update.ts +76 -76
  45. package/src/commands/functions/copy.ts +62 -62
  46. package/src/commands/functions/delete.ts +79 -79
  47. package/src/commands/functions/deploy.ts +293 -293
  48. package/src/commands/functions/detail.ts +138 -138
  49. package/src/commands/functions/index.ts +16 -16
  50. package/src/commands/functions/invoke.ts +121 -121
  51. package/src/commands/functions/layer/bind.ts +182 -182
  52. package/src/commands/functions/layer/common.ts +8 -8
  53. package/src/commands/functions/layer/create.ts +49 -49
  54. package/src/commands/functions/layer/delete.ts +73 -73
  55. package/src/commands/functions/layer/download.ts +92 -92
  56. package/src/commands/functions/layer/index.ts +7 -7
  57. package/src/commands/functions/layer/list.ts +94 -94
  58. package/src/commands/functions/layer/sort.ts +76 -76
  59. package/src/commands/functions/list.ts +68 -68
  60. package/src/commands/functions/log.ts +148 -148
  61. package/src/commands/functions/run.ts +249 -249
  62. package/src/commands/functions/trigger-create.ts +79 -79
  63. package/src/commands/functions/trigger-delete.ts +105 -105
  64. package/src/commands/functions/version/index.ts +1 -1
  65. package/src/commands/functions/version/list.ts +73 -73
  66. package/src/commands/functions/version/publish.ts +43 -43
  67. package/src/commands/gateway/create.ts +109 -109
  68. package/src/commands/gateway/delete.ts +81 -81
  69. package/src/commands/gateway/domain.ts +159 -159
  70. package/src/commands/gateway/index.ts +5 -5
  71. package/src/commands/gateway/list.ts +76 -76
  72. package/src/commands/gateway/switch.ts +107 -107
  73. package/src/commands/helpers/index.ts +2 -2
  74. package/src/commands/helpers/init.ts +431 -431
  75. package/src/commands/helpers/new.ts +117 -117
  76. package/src/commands/helpers/open.ts +67 -67
  77. package/src/commands/hosting/hosting.ts +360 -360
  78. package/src/commands/index.ts +13 -13
  79. package/src/commands/lowcode/app.ts +34 -34
  80. package/src/commands/lowcode/comps.ts +322 -322
  81. package/src/commands/lowcode/index.ts +1 -1
  82. package/src/commands/lowcode/utils.ts +24 -24
  83. package/src/commands/run/image/index.ts +4 -4
  84. package/src/commands/run/standalonegateway/common.ts +7 -7
  85. package/src/commands/run/standalonegateway/create.ts +85 -85
  86. package/src/commands/run/standalonegateway/destroy.ts +59 -59
  87. package/src/commands/run/standalonegateway/index.ts +4 -4
  88. package/src/commands/run/standalonegateway/list.ts +53 -53
  89. package/src/commands/run/standalonegateway/package.ts +62 -62
  90. package/src/commands/run/standalonegateway/turn.ts +63 -63
  91. package/src/commands/run/version/index.ts +4 -4
  92. package/src/commands/smart.ts +132 -132
  93. package/src/commands/storage/storage.ts +464 -464
  94. package/src/commands/third/thirdAttach.ts +49 -49
  95. package/src/completion/index.ts +13 -13
  96. package/src/decorators/captureError.ts +25 -25
  97. package/src/decorators/constants.ts +12 -12
  98. package/src/decorators/deprecate.ts +25 -25
  99. package/src/decorators/guard.ts +42 -42
  100. package/src/decorators/index.ts +7 -7
  101. package/src/decorators/injectParams.ts +54 -54
  102. package/src/decorators/params/common.ts +28 -28
  103. package/src/decorators/params/index.ts +35 -35
  104. package/src/env/domain.ts +33 -33
  105. package/src/env/index.ts +63 -63
  106. package/src/env/login.ts +80 -80
  107. package/src/error.ts +36 -36
  108. package/src/function/alias.ts +43 -43
  109. package/src/function/base.ts +253 -253
  110. package/src/function/code.ts +55 -55
  111. package/src/function/concurrency.ts +57 -57
  112. package/src/function/create.ts +78 -78
  113. package/src/function/delete.ts +42 -42
  114. package/src/function/index.ts +10 -10
  115. package/src/function/layer/attach.ts +68 -68
  116. package/src/function/layer/create.ts +63 -63
  117. package/src/function/layer/delete.ts +21 -21
  118. package/src/function/layer/download.ts +54 -54
  119. package/src/function/layer/index.ts +7 -7
  120. package/src/function/layer/list.ts +32 -32
  121. package/src/function/layer/sort.ts +24 -24
  122. package/src/function/trigger.ts +97 -97
  123. package/src/function/update.ts +35 -35
  124. package/src/function/version.ts +38 -38
  125. package/src/function/vpc.ts +22 -22
  126. package/src/gateway/index.ts +137 -137
  127. package/src/hosting.ts +212 -212
  128. package/src/index.ts +13 -13
  129. package/src/logger.ts +17 -17
  130. package/src/run/create.ts +23 -23
  131. package/src/run/delete.ts +15 -15
  132. package/src/run/image/build.ts +36 -36
  133. package/src/run/image/delete.ts +13 -13
  134. package/src/run/image/index.ts +3 -3
  135. package/src/run/image/info.ts +26 -26
  136. package/src/run/list.ts +29 -29
  137. package/src/run/repo.ts +24 -24
  138. package/src/run/service/deployPackage.ts +6 -4
  139. package/src/run/standalonegateway/create.ts +24 -24
  140. package/src/run/standalonegateway/destroy.ts +19 -19
  141. package/src/run/standalonegateway/index.ts +4 -4
  142. package/src/run/standalonegateway/list.ts +74 -74
  143. package/src/run/standalonegateway/package/list.ts +24 -24
  144. package/src/run/standalonegateway/turn/index.ts +1 -1
  145. package/src/run/standalonegateway/turn/off.ts +19 -19
  146. package/src/run/standalonegateway/turn/on.ts +19 -19
  147. package/src/run/version/create.ts +68 -68
  148. package/src/run/version/delete.ts +15 -15
  149. package/src/run/version/index.ts +5 -5
  150. package/src/run/version/list.ts +16 -16
  151. package/src/run/version/modify.ts +16 -16
  152. package/src/run/version/repo.ts +27 -27
  153. package/src/run/version/update.ts +58 -58
  154. package/src/storage.ts +114 -114
  155. package/src/third/index.ts +12 -12
  156. package/src/utils/auth.ts +15 -15
  157. package/src/utils/cli-table.ts +23 -23
  158. package/src/utils/config.ts +39 -39
  159. package/src/utils/env.ts +244 -244
  160. package/src/utils/fs/del.ts +5 -5
  161. package/src/utils/fs/index.ts +71 -71
  162. package/src/utils/function-packer.ts +97 -97
  163. package/src/utils/log.ts +81 -81
  164. package/src/utils/net/cloud-api-request.ts +62 -62
  165. package/src/utils/net/credential.ts +53 -53
  166. package/src/utils/net/http-request.ts +84 -84
  167. package/src/utils/net/index.ts +4 -4
  168. package/src/utils/net/manager-service.ts +36 -36
  169. package/src/utils/net/proxy.ts +6 -6
  170. package/src/utils/notice.ts +28 -28
  171. package/src/utils/output/highlight.ts +5 -5
  172. package/src/utils/output/index.ts +2 -2
  173. package/src/utils/output/link.ts +10 -10
  174. package/src/utils/output/loading.ts +82 -82
  175. package/src/utils/parallel.ts +82 -82
  176. package/src/utils/platform/index.ts +2 -2
  177. package/src/utils/platform/mac.ts +21 -21
  178. package/src/utils/platform/os.ts +64 -64
  179. package/src/utils/platform/port.ts +10 -10
  180. package/src/utils/progress-bar.ts +38 -38
  181. package/src/utils/prompt/select.ts +59 -59
  182. package/src/utils/reporter/agree.ts +20 -20
  183. package/src/utils/reporter/download.ts +26 -26
  184. package/src/utils/reporter/index.ts +3 -3
  185. package/src/utils/reporter/usage.ts +20 -20
  186. package/src/utils/store/auth.ts +49 -49
  187. package/src/utils/store/common.ts +8 -8
  188. package/src/utils/store/db.ts +68 -68
  189. package/src/utils/store/index.ts +4 -4
  190. package/src/utils/store/usage.ts +12 -12
  191. package/src/utils/tcbrApi/tcbr-cloud-api/request.ts +13 -13
  192. package/src/utils/template.ts +170 -170
  193. package/src/utils/tools/encoding.ts +8 -8
  194. package/src/utils/tools/index.ts +4 -4
  195. package/src/utils/tools/object.ts +33 -33
  196. package/src/utils/tools/time.ts +38 -38
  197. package/src/utils/tools/uid.ts +19 -19
  198. package/templates/html/loginFail.html +90 -90
  199. package/templates/html/loginSuccess.html +86 -86
  200. package/templates/server/node/_gitignore +54 -54
  201. package/templates/server/node/cloudbaserc.json +10 -10
  202. package/templates/server/node/index.js +5 -5
  203. package/templates/server/node/package.json +9 -9
  204. package/tsconfig.json +19 -19
  205. package/tsconfig.test.json +13 -13
  206. package/.vscode/settings.json +0 -3
@@ -1,82 +1,82 @@
1
- export type AsyncTask = () => Promise<any>
2
-
3
- /**
4
- * 异步任务并发控制器,以一定的并发数执行所有任务
5
- * 不具备队列性质,异步任务随机执行
6
- * 单个任务异常,错误会返回,单不会退出执行
7
- * 所有任务执行
8
- */
9
- export class AsyncTaskParallelController {
10
- // 任务最大并发数
11
- maxParallel: number
12
- // 异步任务队列
13
- tasks: AsyncTask[]
14
- // 检查间隔时间,单位 ms
15
- checkInterval: number
16
- // 所有任务数量
17
- totalTasks: number
18
-
19
- constructor(maxParallel: number, checkInterval = 20) {
20
- this.tasks = []
21
- this.maxParallel = Number(maxParallel) || 20
22
- this.checkInterval = checkInterval
23
- }
24
-
25
- loadTasks(tasks: AsyncTask[]) {
26
- this.tasks.push(...tasks)
27
- this.totalTasks = this.tasks.length
28
- }
29
-
30
- push(task: AsyncTask) {
31
- this.tasks.push(task)
32
- this.totalTasks = this.tasks.length
33
- }
34
-
35
- // 开始执行任务
36
- async run(): Promise<any[]> {
37
- // 存储任务执行结果
38
- const results = []
39
- // 记录已经运行的任务
40
- const taskHasRun = []
41
- // 记录任务是否执行完成
42
- const taskDone = []
43
- // 当前正在运行的任务数量
44
- let runningTask = 0
45
-
46
- return new Promise((resolve) => {
47
- // 使用定时器,不阻塞线程
48
- const timer = setInterval(() => {
49
- // 全部任务运行完成
50
- const taskDoneLength = taskDone.filter((item) => item).length
51
- if (runningTask === 0 && taskDoneLength === this.totalTasks) {
52
- clearInterval(timer)
53
- resolve(results)
54
- }
55
-
56
- // 当前运行任务数超过最大并发,不再执行新的任务
57
- if (runningTask >= this.maxParallel) {
58
- return
59
- }
60
-
61
- // 遍历任务列表,开始执行还没有执行的任务
62
- this.tasks.forEach((task, index) => {
63
- if (!taskHasRun[index] && runningTask < this.maxParallel) {
64
- runningTask++
65
- taskHasRun[index] = 1
66
- task()
67
- .then((res) => {
68
- results[index] = res
69
- })
70
- .catch((err) => {
71
- results[index] = err
72
- })
73
- .then(() => {
74
- runningTask--
75
- taskDone[index] = 1
76
- })
77
- }
78
- })
79
- }, this.checkInterval)
80
- })
81
- }
82
- }
1
+ export type AsyncTask = () => Promise<any>
2
+
3
+ /**
4
+ * 异步任务并发控制器,以一定的并发数执行所有任务
5
+ * 不具备队列性质,异步任务随机执行
6
+ * 单个任务异常,错误会返回,单不会退出执行
7
+ * 所有任务执行
8
+ */
9
+ export class AsyncTaskParallelController {
10
+ // 任务最大并发数
11
+ maxParallel: number
12
+ // 异步任务队列
13
+ tasks: AsyncTask[]
14
+ // 检查间隔时间,单位 ms
15
+ checkInterval: number
16
+ // 所有任务数量
17
+ totalTasks: number
18
+
19
+ constructor(maxParallel: number, checkInterval = 20) {
20
+ this.tasks = []
21
+ this.maxParallel = Number(maxParallel) || 20
22
+ this.checkInterval = checkInterval
23
+ }
24
+
25
+ loadTasks(tasks: AsyncTask[]) {
26
+ this.tasks.push(...tasks)
27
+ this.totalTasks = this.tasks.length
28
+ }
29
+
30
+ push(task: AsyncTask) {
31
+ this.tasks.push(task)
32
+ this.totalTasks = this.tasks.length
33
+ }
34
+
35
+ // 开始执行任务
36
+ async run(): Promise<any[]> {
37
+ // 存储任务执行结果
38
+ const results = []
39
+ // 记录已经运行的任务
40
+ const taskHasRun = []
41
+ // 记录任务是否执行完成
42
+ const taskDone = []
43
+ // 当前正在运行的任务数量
44
+ let runningTask = 0
45
+
46
+ return new Promise((resolve) => {
47
+ // 使用定时器,不阻塞线程
48
+ const timer = setInterval(() => {
49
+ // 全部任务运行完成
50
+ const taskDoneLength = taskDone.filter((item) => item).length
51
+ if (runningTask === 0 && taskDoneLength === this.totalTasks) {
52
+ clearInterval(timer)
53
+ resolve(results)
54
+ }
55
+
56
+ // 当前运行任务数超过最大并发,不再执行新的任务
57
+ if (runningTask >= this.maxParallel) {
58
+ return
59
+ }
60
+
61
+ // 遍历任务列表,开始执行还没有执行的任务
62
+ this.tasks.forEach((task, index) => {
63
+ if (!taskHasRun[index] && runningTask < this.maxParallel) {
64
+ runningTask++
65
+ taskHasRun[index] = 1
66
+ task()
67
+ .then((res) => {
68
+ results[index] = res
69
+ })
70
+ .catch((err) => {
71
+ results[index] = err
72
+ })
73
+ .then(() => {
74
+ runningTask--
75
+ taskDone[index] = 1
76
+ })
77
+ }
78
+ })
79
+ }, this.checkInterval)
80
+ })
81
+ }
82
+ }
@@ -1,3 +1,3 @@
1
- export * from './os'
2
- export * from './mac'
1
+ export * from './os'
2
+ export * from './mac'
3
3
  export * from './port'
@@ -1,21 +1,21 @@
1
- import address from 'address'
2
- import { md5 } from '../tools'
3
-
4
- // 获取本机 Mac 地址
5
- export function getMacAddress(): Promise<string> {
6
- return new Promise(resolve => {
7
- address.mac((err, mac) => {
8
- if (err) {
9
- resolve('')
10
- return
11
- }
12
- resolve(mac)
13
- })
14
- })
15
- }
16
-
17
- export async function getMacAddressMd5(): Promise<string> {
18
- const mac = await getMacAddress()
19
- const macMD5 = md5(mac)
20
- return macMD5
21
- }
1
+ import address from 'address'
2
+ import { md5 } from '../tools'
3
+
4
+ // 获取本机 Mac 地址
5
+ export function getMacAddress(): Promise<string> {
6
+ return new Promise(resolve => {
7
+ address.mac((err, mac) => {
8
+ if (err) {
9
+ resolve('')
10
+ return
11
+ }
12
+ resolve(mac)
13
+ })
14
+ })
15
+ }
16
+
17
+ export async function getMacAddressMd5(): Promise<string> {
18
+ const mac = await getMacAddress()
19
+ const macMD5 = md5(mac)
20
+ return macMD5
21
+ }
@@ -1,64 +1,64 @@
1
- import os from 'os'
2
-
3
- const macOSMap = new Map([
4
- [19, 'Catalina'],
5
- [18, 'Mojave'],
6
- [17, 'High Sierra'],
7
- [16, 'Sierra'],
8
- [15, 'El Capitan'],
9
- [14, 'Yosemite'],
10
- [13, 'Mavericks'],
11
- [12, 'Mountain Lion'],
12
- [11, 'Lion'],
13
- [10, 'Snow Leopard'],
14
- [9, 'Leopard'],
15
- [8, 'Tiger'],
16
- [7, 'Panther'],
17
- [6, 'Jaguar'],
18
- [5, 'Puma']
19
- ])
20
-
21
- const winMap = new Map([
22
- ['10.0', '10'],
23
- ['6.3', '8.1'],
24
- ['6.2', '8'],
25
- ['6.1', '7'],
26
- ['6.0', 'Vista'],
27
- ['5.2', 'Server 2003'],
28
- ['5.1', 'XP'],
29
- ['5.0', '2000'],
30
- ['4.9', 'ME'],
31
- ['4.1', '98'],
32
- ['4.0', '95']
33
- ])
34
-
35
- export function getPlatformRelease(platform: string, release: string) {
36
- // macOS
37
- if (platform === 'darwin') {
38
- const releaseNum = Number(release.split('.')[0])
39
- const name = macOSMap.get(releaseNum)
40
- const version = '10.' + (releaseNum - 4)
41
- return `${name} ${version}`
42
- }
43
-
44
- // windows
45
- if (platform === 'win32') {
46
- const version = (/\d+\.\d/.exec(release) || [])[0]
47
-
48
- return `Windows ${winMap.get(version)}`
49
- }
50
-
51
- // 其他 Linux
52
- return 'Linux'
53
- }
54
-
55
- // 获取 hostname 和平台信息
56
- export function getOSInfo() {
57
- const hostname = os.hostname()
58
- const platform = os.platform()
59
- const release = os.release()
60
-
61
- const platformRelease = getPlatformRelease(platform, release)
62
-
63
- return [hostname, platformRelease].join('/')
64
- }
1
+ import os from 'os'
2
+
3
+ const macOSMap = new Map([
4
+ [19, 'Catalina'],
5
+ [18, 'Mojave'],
6
+ [17, 'High Sierra'],
7
+ [16, 'Sierra'],
8
+ [15, 'El Capitan'],
9
+ [14, 'Yosemite'],
10
+ [13, 'Mavericks'],
11
+ [12, 'Mountain Lion'],
12
+ [11, 'Lion'],
13
+ [10, 'Snow Leopard'],
14
+ [9, 'Leopard'],
15
+ [8, 'Tiger'],
16
+ [7, 'Panther'],
17
+ [6, 'Jaguar'],
18
+ [5, 'Puma']
19
+ ])
20
+
21
+ const winMap = new Map([
22
+ ['10.0', '10'],
23
+ ['6.3', '8.1'],
24
+ ['6.2', '8'],
25
+ ['6.1', '7'],
26
+ ['6.0', 'Vista'],
27
+ ['5.2', 'Server 2003'],
28
+ ['5.1', 'XP'],
29
+ ['5.0', '2000'],
30
+ ['4.9', 'ME'],
31
+ ['4.1', '98'],
32
+ ['4.0', '95']
33
+ ])
34
+
35
+ export function getPlatformRelease(platform: string, release: string) {
36
+ // macOS
37
+ if (platform === 'darwin') {
38
+ const releaseNum = Number(release.split('.')[0])
39
+ const name = macOSMap.get(releaseNum)
40
+ const version = '10.' + (releaseNum - 4)
41
+ return `${name} ${version}`
42
+ }
43
+
44
+ // windows
45
+ if (platform === 'win32') {
46
+ const version = (/\d+\.\d/.exec(release) || [])[0]
47
+
48
+ return `Windows ${winMap.get(version)}`
49
+ }
50
+
51
+ // 其他 Linux
52
+ return 'Linux'
53
+ }
54
+
55
+ // 获取 hostname 和平台信息
56
+ export function getOSInfo() {
57
+ const hostname = os.hostname()
58
+ const platform = os.platform()
59
+ const release = os.release()
60
+
61
+ const platformRelease = getPlatformRelease(platform, release)
62
+
63
+ return [hostname, platformRelease].join('/')
64
+ }
@@ -1,10 +1,10 @@
1
- import portfinder from 'portfinder'
2
- const PORT = 9012
3
-
4
- // 获取本地可用端口
5
- export async function getPort(): Promise<number> {
6
- const port: number = await portfinder.getPortPromise({
7
- port: PORT
8
- })
9
- return port
10
- }
1
+ import portfinder from 'portfinder'
2
+ const PORT = 9012
3
+
4
+ // 获取本地可用端口
5
+ export async function getPort(): Promise<number> {
6
+ const port: number = await portfinder.getPortPromise({
7
+ port: PORT
8
+ })
9
+ return port
10
+ }
@@ -1,38 +1,38 @@
1
- import ProgressBar from 'progress'
2
-
3
- // 打印文件传输进度条
4
- export function createUploadProgressBar(onFinished: Function, onStart?: Function) {
5
- let bar
6
- let lastLoaded = 0
7
- let finished = false
8
-
9
- return function (data) {
10
- const { total, loaded, percent } = data
11
- if (lastLoaded === 0 && onStart) {
12
- onStart()
13
- }
14
-
15
- if (+percent === 1) {
16
- if (finished) return
17
- finished = true
18
- setTimeout(() => {
19
- onFinished()
20
- }, 500)
21
- bar.tick(total - lastLoaded)
22
- return
23
- }
24
- const tick = loaded - lastLoaded
25
- lastLoaded = loaded
26
- if (bar) {
27
- bar.tick(tick)
28
- } else {
29
- bar = new ProgressBar('文件传输中 [:bar] :percent :etas', {
30
- total,
31
- complete: '=',
32
- incomplete: ' ',
33
- width: 50
34
- })
35
- bar.tick(tick)
36
- }
37
- }
38
- }
1
+ import ProgressBar from 'progress'
2
+
3
+ // 打印文件传输进度条
4
+ export function createUploadProgressBar(onFinished: Function, onStart?: Function) {
5
+ let bar
6
+ let lastLoaded = 0
7
+ let finished = false
8
+
9
+ return function (data) {
10
+ const { total, loaded, percent } = data
11
+ if (lastLoaded === 0 && onStart) {
12
+ onStart()
13
+ }
14
+
15
+ if (+percent === 1) {
16
+ if (finished) return
17
+ finished = true
18
+ setTimeout(() => {
19
+ onFinished()
20
+ }, 500)
21
+ bar.tick(total - lastLoaded)
22
+ return
23
+ }
24
+ const tick = loaded - lastLoaded
25
+ lastLoaded = loaded
26
+ if (bar) {
27
+ bar.tick(tick)
28
+ } else {
29
+ bar = new ProgressBar('文件传输中 [:bar] :percent :etas', {
30
+ total,
31
+ complete: '=',
32
+ incomplete: ' ',
33
+ width: 50
34
+ })
35
+ bar.tick(tick)
36
+ }
37
+ }
38
+ }
@@ -1,60 +1,60 @@
1
- import { prompt } from 'enquirer'
2
- import { CloudBaseError } from '../../error'
3
-
4
- /**
5
- * @描述 分页的选择型 prompt
6
- * @泛型参数 O: listFetcher 的参数类型
7
- * @参数 listFetcher: 执行列表拉取逻辑的函数,一般认为参数 options 至少拥有 limit 和 offset 两个 number 属性
8
- * @参数 options: listFetcher 的参数
9
- * @参数 message: 展示的信息
10
- * @参数 filter 筛选返回列表的数据
11
- * @参数 mapper 对返回列表中元素的处理函数,用于处理列表数据到实际展示列表的映射
12
- * @返回值 select 类型返回 string,multiselect 返回 string[]
13
- */
14
- export const pagingSelectPromp =
15
- async <T, O extends { limit?: number, offset?: number }>(
16
- type: 'select' | 'multiselect',
17
- listFetcher: (options: O) => Promise<any[]>,
18
- options: O,
19
- message: string,
20
- filter: (item: any) => boolean = _ => true,
21
- mapper: (item: any) => string = item => item) => {
22
-
23
- let res: string[] | string = []
24
-
25
- let offset = 0
26
- let nextRoundList: string[]
27
-
28
-
29
- while (true) {
30
- const thisRoundList = nextRoundList || (await listFetcher({ ...options, limit: 10, offset: offset })).filter(filter).map(mapper)
31
- offset += 10
32
- nextRoundList = (await listFetcher({ ...options, limit: 10, offset: offset })).filter(filter).map(mapper)
33
-
34
- if (!thisRoundList || !thisRoundList.length)
35
- throw new CloudBaseError('列表没有数据')
36
-
37
- if (type === 'select') {
38
- let receiver: string = (await prompt<any>({
39
- type: type,
40
- name: 'receiver',
41
- message: message,
42
- choices: nextRoundList?.length ? [...thisRoundList, '下一页'] : [...thisRoundList]
43
- })).receiver
44
- res = receiver
45
- if (receiver !== '下一页') break
46
- } else {
47
- let { receiver }: { receiver: string[] } = await prompt<any>({
48
- type: type,
49
- name: 'receiver',
50
- message: message,
51
- choices: nextRoundList?.length ? [...thisRoundList, '下一页'] : [...thisRoundList]
52
- })
53
- if (!receiver) receiver = []
54
- res = [...res, ...receiver.filter(item => item !== '下一页')]
55
- if (receiver.indexOf('下一页') === -1) break
56
- }
57
- }
58
-
59
- return res
1
+ import { prompt } from 'enquirer'
2
+ import { CloudBaseError } from '../../error'
3
+
4
+ /**
5
+ * @描述 分页的选择型 prompt
6
+ * @泛型参数 O: listFetcher 的参数类型
7
+ * @参数 listFetcher: 执行列表拉取逻辑的函数,一般认为参数 options 至少拥有 limit 和 offset 两个 number 属性
8
+ * @参数 options: listFetcher 的参数
9
+ * @参数 message: 展示的信息
10
+ * @参数 filter 筛选返回列表的数据
11
+ * @参数 mapper 对返回列表中元素的处理函数,用于处理列表数据到实际展示列表的映射
12
+ * @返回值 select 类型返回 string,multiselect 返回 string[]
13
+ */
14
+ export const pagingSelectPromp =
15
+ async <T, O extends { limit?: number, offset?: number }>(
16
+ type: 'select' | 'multiselect',
17
+ listFetcher: (options: O) => Promise<any[]>,
18
+ options: O,
19
+ message: string,
20
+ filter: (item: any) => boolean = _ => true,
21
+ mapper: (item: any) => string = item => item) => {
22
+
23
+ let res: string[] | string = []
24
+
25
+ let offset = 0
26
+ let nextRoundList: string[]
27
+
28
+
29
+ while (true) {
30
+ const thisRoundList = nextRoundList || (await listFetcher({ ...options, limit: 10, offset: offset })).filter(filter).map(mapper)
31
+ offset += 10
32
+ nextRoundList = (await listFetcher({ ...options, limit: 10, offset: offset })).filter(filter).map(mapper)
33
+
34
+ if (!thisRoundList || !thisRoundList.length)
35
+ throw new CloudBaseError('列表没有数据')
36
+
37
+ if (type === 'select') {
38
+ let receiver: string = (await prompt<any>({
39
+ type: type,
40
+ name: 'receiver',
41
+ message: message,
42
+ choices: nextRoundList?.length ? [...thisRoundList, '下一页'] : [...thisRoundList]
43
+ })).receiver
44
+ res = receiver
45
+ if (receiver !== '下一页') break
46
+ } else {
47
+ let { receiver }: { receiver: string[] } = await prompt<any>({
48
+ type: type,
49
+ name: 'receiver',
50
+ message: message,
51
+ choices: nextRoundList?.length ? [...thisRoundList, '下一页'] : [...thisRoundList]
52
+ })
53
+ if (!receiver) receiver = []
54
+ res = [...res, ...receiver.filter(item => item !== '下一页')]
55
+ if (receiver.indexOf('下一页') === -1) break
56
+ }
57
+ }
58
+
59
+ return res
60
60
  }
@@ -1,20 +1,20 @@
1
- import { postFetch } from '../net'
2
- import { getMacAddressMd5, getOSInfo } from '../platform'
3
- import { getUin } from '../store'
4
-
5
- const url = 'https://tcli.service.tcloudbase.com/agree-collect'
6
-
7
- export async function collectAgree(agree) {
8
- const uin = await getUin()
9
- const macMd5 = await getMacAddressMd5()
10
- const os = await getOSInfo()
11
- const data = {
12
- macMd5,
13
- agree,
14
- uin,
15
- os
16
- }
17
-
18
- return postFetch(url, data)
19
- }
20
-
1
+ import { postFetch } from '../net'
2
+ import { getMacAddressMd5, getOSInfo } from '../platform'
3
+ import { getUin } from '../store'
4
+
5
+ const url = 'https://tcli.service.tcloudbase.com/agree-collect'
6
+
7
+ export async function collectAgree(agree) {
8
+ const uin = await getUin()
9
+ const macMd5 = await getMacAddressMd5()
10
+ const os = await getOSInfo()
11
+ const data = {
12
+ macMd5,
13
+ agree,
14
+ uin,
15
+ os
16
+ }
17
+
18
+ return postFetch(url, data)
19
+ }
20
+
@@ -1,26 +1,26 @@
1
- import { postFetch } from '../net'
2
- import { getMacAddressMd5, getOSInfo } from '../platform'
3
- import { getUin } from '../store'
4
-
5
- const url = 'https://tcli.service.tcloudbase.com/download'
6
-
7
- export async function templateDownloadReport(templateId: string, templateName: string) {
8
- const uin = await getUin()
9
- const os = await getOSInfo()
10
- const macMd5 = await getMacAddressMd5()
11
-
12
- const data = {
13
- os,
14
- uin,
15
- macMd5,
16
- templateId,
17
- templateName,
18
- version: process.CLI_VERSION
19
- }
20
-
21
- try {
22
- await postFetch(url, data)
23
- } catch (e) {
24
- // ignore error
25
- }
26
- }
1
+ import { postFetch } from '../net'
2
+ import { getMacAddressMd5, getOSInfo } from '../platform'
3
+ import { getUin } from '../store'
4
+
5
+ const url = 'https://tcli.service.tcloudbase.com/download'
6
+
7
+ export async function templateDownloadReport(templateId: string, templateName: string) {
8
+ const uin = await getUin()
9
+ const os = await getOSInfo()
10
+ const macMd5 = await getMacAddressMd5()
11
+
12
+ const data = {
13
+ os,
14
+ uin,
15
+ macMd5,
16
+ templateId,
17
+ templateName,
18
+ version: process.CLI_VERSION
19
+ }
20
+
21
+ try {
22
+ await postFetch(url, data)
23
+ } catch (e) {
24
+ // ignore error
25
+ }
26
+ }
@@ -1,3 +1,3 @@
1
- export * from './agree'
2
- export * from './usage'
3
- export * from './download'
1
+ export * from './agree'
2
+ export * from './usage'
3
+ export * from './download'