@cloudbase/cli 2.0.12 → 2.0.13

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 (227) hide show
  1. package/.vscode/settings.json +3 -0
  2. package/lib/run/service/deployPackage.js +2 -9
  3. package/lib/utils/debug-logger.js +30 -0
  4. package/lib/utils/net/cloud-api-request.js +7 -1
  5. package/lib/utils/net/http-request.js +16 -5
  6. package/package.json +1 -1
  7. package/types/utils/debug-logger.d.ts +1 -0
  8. package/types/utils/net/http-request.d.ts +6 -2
  9. package/src/auth/index.ts +0 -2
  10. package/src/auth/login.ts +0 -91
  11. package/src/auth/logout.ts +0 -7
  12. package/src/commands/account/index.ts +0 -2
  13. package/src/commands/account/login.ts +0 -192
  14. package/src/commands/account/logout.ts +0 -24
  15. package/src/commands/common.ts +0 -246
  16. package/src/commands/env/base.ts +0 -90
  17. package/src/commands/env/create.ts +0 -92
  18. package/src/commands/env/domain.ts +0 -186
  19. package/src/commands/env/index.ts +0 -4
  20. package/src/commands/env/login.ts +0 -235
  21. package/src/commands/framework/index.ts +0 -124
  22. package/src/commands/functions/alias/getRoute.ts +0 -76
  23. package/src/commands/functions/alias/index.ts +0 -2
  24. package/src/commands/functions/alias/setRoute.ts +0 -82
  25. package/src/commands/functions/code-download.ts +0 -100
  26. package/src/commands/functions/code-update.ts +0 -62
  27. package/src/commands/functions/concurrency/delete.ts +0 -45
  28. package/src/commands/functions/concurrency/index.ts +0 -3
  29. package/src/commands/functions/concurrency/list.ts +0 -58
  30. package/src/commands/functions/concurrency/set.ts +0 -47
  31. package/src/commands/functions/config-update.ts +0 -76
  32. package/src/commands/functions/copy.ts +0 -62
  33. package/src/commands/functions/delete.ts +0 -79
  34. package/src/commands/functions/deploy.ts +0 -293
  35. package/src/commands/functions/detail.ts +0 -138
  36. package/src/commands/functions/index.ts +0 -16
  37. package/src/commands/functions/invoke.ts +0 -121
  38. package/src/commands/functions/layer/bind.ts +0 -182
  39. package/src/commands/functions/layer/common.ts +0 -8
  40. package/src/commands/functions/layer/create.ts +0 -49
  41. package/src/commands/functions/layer/delete.ts +0 -73
  42. package/src/commands/functions/layer/download.ts +0 -92
  43. package/src/commands/functions/layer/index.ts +0 -7
  44. package/src/commands/functions/layer/list.ts +0 -94
  45. package/src/commands/functions/layer/sort.ts +0 -76
  46. package/src/commands/functions/list.ts +0 -68
  47. package/src/commands/functions/log.ts +0 -148
  48. package/src/commands/functions/run.ts +0 -249
  49. package/src/commands/functions/trigger-create.ts +0 -79
  50. package/src/commands/functions/trigger-delete.ts +0 -105
  51. package/src/commands/functions/version/index.ts +0 -2
  52. package/src/commands/functions/version/list.ts +0 -73
  53. package/src/commands/functions/version/publish.ts +0 -43
  54. package/src/commands/gateway/create.ts +0 -109
  55. package/src/commands/gateway/delete.ts +0 -81
  56. package/src/commands/gateway/domain.ts +0 -159
  57. package/src/commands/gateway/index.ts +0 -5
  58. package/src/commands/gateway/list.ts +0 -76
  59. package/src/commands/gateway/switch.ts +0 -107
  60. package/src/commands/helpers/index.ts +0 -3
  61. package/src/commands/helpers/init.ts +0 -431
  62. package/src/commands/helpers/new.ts +0 -117
  63. package/src/commands/helpers/open.ts +0 -67
  64. package/src/commands/hosting/hosting.ts +0 -360
  65. package/src/commands/hosting/index.ts +0 -1
  66. package/src/commands/index.ts +0 -13
  67. package/src/commands/lowcode/app.ts +0 -34
  68. package/src/commands/lowcode/comps.ts +0 -325
  69. package/src/commands/lowcode/index.ts +0 -2
  70. package/src/commands/lowcode/utils.ts +0 -25
  71. package/src/commands/run/create.ts +0 -153
  72. package/src/commands/run/delete.ts +0 -77
  73. package/src/commands/run/image/common.ts +0 -8
  74. package/src/commands/run/image/delete.ts +0 -68
  75. package/src/commands/run/image/download.ts +0 -68
  76. package/src/commands/run/image/index.ts +0 -5
  77. package/src/commands/run/image/list.ts +0 -84
  78. package/src/commands/run/image/upload.ts +0 -76
  79. package/src/commands/run/index.ts +0 -7
  80. package/src/commands/run/list.ts +0 -83
  81. package/src/commands/run/service/config.ts +0 -81
  82. package/src/commands/run/service/create.ts +0 -122
  83. package/src/commands/run/service/deploy.ts +0 -125
  84. package/src/commands/run/service/index.ts +0 -5
  85. package/src/commands/run/service/list.ts +0 -94
  86. package/src/commands/run/service/update.ts +0 -108
  87. package/src/commands/run/standalonegateway/common.ts +0 -8
  88. package/src/commands/run/standalonegateway/create.ts +0 -85
  89. package/src/commands/run/standalonegateway/destroy.ts +0 -59
  90. package/src/commands/run/standalonegateway/index.ts +0 -5
  91. package/src/commands/run/standalonegateway/list.ts +0 -53
  92. package/src/commands/run/standalonegateway/package.ts +0 -62
  93. package/src/commands/run/standalonegateway/turn.ts +0 -63
  94. package/src/commands/run/version/common.ts +0 -8
  95. package/src/commands/run/version/create.ts +0 -369
  96. package/src/commands/run/version/delete.ts +0 -64
  97. package/src/commands/run/version/index.ts +0 -5
  98. package/src/commands/run/version/list.ts +0 -91
  99. package/src/commands/run/version/modify.ts +0 -137
  100. package/src/commands/run/version/update.ts +0 -398
  101. package/src/commands/smart.ts +0 -132
  102. package/src/commands/storage/index.ts +0 -1
  103. package/src/commands/storage/storage.ts +0 -464
  104. package/src/commands/third/index.ts +0 -1
  105. package/src/commands/third/thirdAttach.ts +0 -49
  106. package/src/completion/index.ts +0 -13
  107. package/src/constant.ts +0 -154
  108. package/src/decorators/captureError.ts +0 -25
  109. package/src/decorators/constants.ts +0 -12
  110. package/src/decorators/deprecate.ts +0 -25
  111. package/src/decorators/guard.ts +0 -42
  112. package/src/decorators/index.ts +0 -7
  113. package/src/decorators/injectParams.ts +0 -54
  114. package/src/decorators/params/common.ts +0 -28
  115. package/src/decorators/params/index.ts +0 -35
  116. package/src/env/domain.ts +0 -33
  117. package/src/env/index.ts +0 -63
  118. package/src/env/login.ts +0 -80
  119. package/src/error.ts +0 -36
  120. package/src/function/alias.ts +0 -43
  121. package/src/function/base.ts +0 -253
  122. package/src/function/code.ts +0 -55
  123. package/src/function/concurrency.ts +0 -57
  124. package/src/function/create.ts +0 -78
  125. package/src/function/delete.ts +0 -42
  126. package/src/function/index.ts +0 -11
  127. package/src/function/layer/attach.ts +0 -68
  128. package/src/function/layer/create.ts +0 -63
  129. package/src/function/layer/delete.ts +0 -21
  130. package/src/function/layer/download.ts +0 -54
  131. package/src/function/layer/index.ts +0 -7
  132. package/src/function/layer/list.ts +0 -32
  133. package/src/function/layer/sort.ts +0 -24
  134. package/src/function/trigger.ts +0 -97
  135. package/src/function/update.ts +0 -35
  136. package/src/function/version.ts +0 -39
  137. package/src/function/vpc.ts +0 -22
  138. package/src/gateway/index.ts +0 -137
  139. package/src/help.ts +0 -50
  140. package/src/hosting.ts +0 -212
  141. package/src/index.ts +0 -13
  142. package/src/logger.ts +0 -17
  143. package/src/run/create.ts +0 -23
  144. package/src/run/delete.ts +0 -15
  145. package/src/run/image/build.ts +0 -36
  146. package/src/run/image/delete.ts +0 -14
  147. package/src/run/image/index.ts +0 -4
  148. package/src/run/image/info.ts +0 -27
  149. package/src/run/image/list.ts +0 -23
  150. package/src/run/index.ts +0 -8
  151. package/src/run/list.ts +0 -30
  152. package/src/run/repo.ts +0 -25
  153. package/src/run/service/common.ts +0 -311
  154. package/src/run/service/config.ts +0 -77
  155. package/src/run/service/create.ts +0 -52
  156. package/src/run/service/deployPackage.ts +0 -65
  157. package/src/run/service/index.ts +0 -7
  158. package/src/run/service/list.ts +0 -29
  159. package/src/run/service/showLogs.ts +0 -98
  160. package/src/run/service/update.ts +0 -82
  161. package/src/run/standalonegateway/create.ts +0 -24
  162. package/src/run/standalonegateway/destroy.ts +0 -19
  163. package/src/run/standalonegateway/index.ts +0 -5
  164. package/src/run/standalonegateway/list.ts +0 -74
  165. package/src/run/standalonegateway/package/index.ts +0 -1
  166. package/src/run/standalonegateway/package/list.ts +0 -24
  167. package/src/run/standalonegateway/turn/index.ts +0 -2
  168. package/src/run/standalonegateway/turn/off.ts +0 -19
  169. package/src/run/standalonegateway/turn/on.ts +0 -19
  170. package/src/run/version/create.ts +0 -68
  171. package/src/run/version/delete.ts +0 -16
  172. package/src/run/version/index.ts +0 -6
  173. package/src/run/version/list.ts +0 -17
  174. package/src/run/version/modify.ts +0 -17
  175. package/src/run/version/repo.ts +0 -28
  176. package/src/run/version/update.ts +0 -59
  177. package/src/storage.ts +0 -114
  178. package/src/third/index.ts +0 -13
  179. package/src/types.ts +0 -672
  180. package/src/utils/auth.ts +0 -15
  181. package/src/utils/checkTcbrEnv.ts +0 -69
  182. package/src/utils/cli-table.ts +0 -23
  183. package/src/utils/commonParamsCheck.ts +0 -65
  184. package/src/utils/config.ts +0 -39
  185. package/src/utils/env.ts +0 -244
  186. package/src/utils/fs/del.ts +0 -5
  187. package/src/utils/fs/index.ts +0 -71
  188. package/src/utils/function-packer.ts +0 -97
  189. package/src/utils/index.ts +0 -25
  190. package/src/utils/log.ts +0 -82
  191. package/src/utils/net/cloud-api-request.ts +0 -62
  192. package/src/utils/net/credential.ts +0 -53
  193. package/src/utils/net/http-request.ts +0 -84
  194. package/src/utils/net/index.ts +0 -5
  195. package/src/utils/net/manager-service.ts +0 -36
  196. package/src/utils/net/proxy.ts +0 -6
  197. package/src/utils/notice.ts +0 -28
  198. package/src/utils/output/highlight.ts +0 -5
  199. package/src/utils/output/index.ts +0 -3
  200. package/src/utils/output/link.ts +0 -10
  201. package/src/utils/output/loading.ts +0 -82
  202. package/src/utils/parallel.ts +0 -82
  203. package/src/utils/platform/index.ts +0 -3
  204. package/src/utils/platform/mac.ts +0 -21
  205. package/src/utils/platform/os.ts +0 -64
  206. package/src/utils/platform/port.ts +0 -10
  207. package/src/utils/progress-bar.ts +0 -38
  208. package/src/utils/prompt/index.ts +0 -1
  209. package/src/utils/prompt/select.ts +0 -60
  210. package/src/utils/reporter/agree.ts +0 -20
  211. package/src/utils/reporter/download.ts +0 -26
  212. package/src/utils/reporter/index.ts +0 -3
  213. package/src/utils/reporter/usage.ts +0 -20
  214. package/src/utils/store/auth.ts +0 -49
  215. package/src/utils/store/common.ts +0 -8
  216. package/src/utils/store/db.ts +0 -68
  217. package/src/utils/store/index.ts +0 -5
  218. package/src/utils/store/usage.ts +0 -12
  219. package/src/utils/tcbrApi/callTcbrApi.ts +0 -28
  220. package/src/utils/tcbrApi/index.ts +0 -1
  221. package/src/utils/template.ts +0 -170
  222. package/src/utils/tools/encoding.ts +0 -8
  223. package/src/utils/tools/index.ts +0 -4
  224. package/src/utils/tools/object.ts +0 -33
  225. package/src/utils/tools/time.ts +0 -38
  226. package/src/utils/tools/uid.ts +0 -19
  227. package/src/utils/validator.ts +0 -65
@@ -0,0 +1,3 @@
1
+ {
2
+ "typescript.tsdk": "node_modules\\typescript\\lib"
3
+ }
@@ -38,13 +38,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
38
38
  exports.packageDeploy = void 0;
39
39
  const path_1 = __importDefault(require("path"));
40
40
  const fs = __importStar(require("fs"));
41
- const utils_1 = require("../../utils");
42
41
  const __1 = require("..");
43
42
  const toolbox_1 = require("@cloudbase/toolbox");
44
43
  function packageDeploy(options) {
45
44
  return __awaiter(this, void 0, void 0, function* () {
46
45
  let { envId, serviceName, filePath, fileToIgnore } = options;
47
- let { PackageName, PackageVersion, UploadUrl } = yield (0, __1.createBuild)({
46
+ let { PackageName, PackageVersion, UploadUrl, UploadHeaders } = yield (0, __1.createBuild)({
48
47
  envId,
49
48
  serviceName
50
49
  });
@@ -68,13 +67,7 @@ function packageDeploy(options) {
68
67
  }
69
68
  try {
70
69
  return yield (0, toolbox_1.execWithLoading)(() => __awaiter(this, void 0, void 0, function* () {
71
- yield (0, utils_1.fetch)(UploadUrl, {
72
- method: 'PUT',
73
- body: fs.createReadStream(zipFile),
74
- headers: {
75
- 'content-type': 'application/zip'
76
- }
77
- });
70
+ yield (0, __1.uploadZip)(zipFile, UploadUrl, UploadHeaders[0]);
78
71
  return { PackageName, PackageVersion };
79
72
  }), {
80
73
  startTip: '\n正在上传代码包...',
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.debugLogger = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const fs_1 = __importDefault(require("fs"));
9
+ function debugLogger(req, resp, startTime, endTime, writeToLocal = true) {
10
+ if (process.env.NODE_ENV !== 'DEBUG') {
11
+ return;
12
+ }
13
+ const cost = endTime.valueOf() - startTime.valueOf();
14
+ const startTimeFormatted = startTime.toISOString();
15
+ const endTimeFormatted = endTime.toISOString();
16
+ console.log(chalk_1.default.underline('\n[DEBUG]', startTimeFormatted));
17
+ console.log(chalk_1.default.cyan(JSON.stringify(req)), '\n');
18
+ console.log(chalk_1.default.underline('[DEBUG]', endTimeFormatted));
19
+ console.log(chalk_1.default.magenta(JSON.stringify(resp)), '\n');
20
+ if (writeToLocal) {
21
+ const filePath = `${process.cwd()}/cloudbase-cli.debug.log`;
22
+ const logContent = `\n{start:${startTimeFormatted}, req: ${JSON.stringify(req)}, end:${endTimeFormatted}, resp: ${JSON.stringify(resp)}, cost: ${cost}}`;
23
+ fs_1.default.appendFile(filePath, logContent, (err) => {
24
+ if (err) {
25
+ console.error(chalk_1.default.red(`\n写入日志失败:${JSON.stringify(err)}`));
26
+ }
27
+ });
28
+ }
29
+ }
30
+ exports.debugLogger = debugLogger;
@@ -14,6 +14,7 @@ const toolbox_1 = require("@cloudbase/toolbox");
14
14
  const cloud_api_1 = require("@cloudbase/cloud-api");
15
15
  const error_1 = require("../../error");
16
16
  const constant_1 = require("../../constant");
17
+ const debug_logger_1 = require("../debug-logger");
17
18
  let commonCredential;
18
19
  const isTokenExpired = (credential, gap = 120) => credential.accessTokenExpired && Number(credential.accessTokenExpired) < Date.now() + gap * 1000;
19
20
  class CloudApiService {
@@ -49,7 +50,12 @@ class CloudApiService {
49
50
  request(action, data = {}, method = 'POST') {
50
51
  return __awaiter(this, void 0, void 0, function* () {
51
52
  const region = this.region || (yield (0, toolbox_1.getRegion)());
52
- return this.apiService.request({ action, data, method, region });
53
+ const reqOptions = { action, data, method, region };
54
+ const startTime = new Date();
55
+ const res = yield this.apiService.request(reqOptions);
56
+ const endTime = new Date();
57
+ (0, debug_logger_1.debugLogger)(reqOptions, res, startTime, endTime);
58
+ return res;
53
59
  });
54
60
  }
55
61
  }
@@ -18,6 +18,7 @@ const https_proxy_agent_1 = require("https-proxy-agent");
18
18
  const constant_1 = require("../../constant");
19
19
  const error_1 = require("../../error");
20
20
  const proxy_1 = require("./proxy");
21
+ const debug_logger_1 = require("../debug-logger");
21
22
  function handleTimeout(e) {
22
23
  if (e.type === 'request-timeout') {
23
24
  throw new error_1.CloudBaseError('请求超时,请检查你的网络,如果终端无法直接访问公网,请设置终端 HTTP 请求代理!');
@@ -26,6 +27,16 @@ function handleTimeout(e) {
26
27
  throw e;
27
28
  }
28
29
  }
30
+ function fetchWithDebugLogger(useTextTransform, ...args) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ const startTime = new Date();
33
+ const rawRes = yield (0, node_fetch_1.default)(...args);
34
+ const res = useTextTransform ? yield rawRes.text() : rawRes;
35
+ const endTime = new Date();
36
+ (0, debug_logger_1.debugLogger)(args, res, startTime, endTime);
37
+ return res;
38
+ });
39
+ }
29
40
  function fetch(url, config = {}) {
30
41
  return __awaiter(this, void 0, void 0, function* () {
31
42
  const proxy = (0, proxy_1.getProxy)();
@@ -36,8 +47,8 @@ function fetch(url, config = {}) {
36
47
  let json;
37
48
  let text;
38
49
  try {
39
- const res = yield (0, node_fetch_1.default)(url, config);
40
- text = yield res.text();
50
+ const res = yield fetchWithDebugLogger(true, url, config);
51
+ text = res;
41
52
  json = JSON.parse(text);
42
53
  }
43
54
  catch (e) {
@@ -65,8 +76,8 @@ function postFetch(url, data) {
65
76
  let json;
66
77
  let text;
67
78
  try {
68
- const res = yield (0, node_fetch_1.default)(url, config);
69
- text = yield res.text();
79
+ const res = yield fetchWithDebugLogger(true, url, config);
80
+ text = res;
70
81
  json = JSON.parse(text);
71
82
  }
72
83
  catch (e) {
@@ -85,7 +96,7 @@ function fetchStream(url, config = {}) {
85
96
  }
86
97
  config.timeout = constant_1.REQUEST_TIMEOUT;
87
98
  try {
88
- const res = yield (0, node_fetch_1.default)(url, config);
99
+ const res = yield fetchWithDebugLogger(false, url, config);
89
100
  return res;
90
101
  }
91
102
  catch (e) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/cli",
3
- "version": "2.0.12",
3
+ "version": "2.0.13",
4
4
  "description": "cli tool for cloudbase",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -0,0 +1 @@
1
+ export declare function debugLogger(req: unknown, resp: unknown, startTime: Date, endTime: Date, writeToLocal?: boolean): void;
@@ -1,4 +1,8 @@
1
- import { RequestInit } from 'node-fetch';
1
+ import _fetch, { RequestInit } from 'node-fetch';
2
+ declare type fetchReturnType = ReturnType<typeof _fetch>;
3
+ declare type UnPromisify<T> = T extends PromiseLike<infer U> ? U : T;
4
+ declare type fetchReturnTypeExtracted = UnPromisify<fetchReturnType>;
2
5
  export declare function fetch(url: string, config?: RequestInit): Promise<any>;
3
6
  export declare function postFetch(url: string, data?: Record<string, any>): Promise<any>;
4
- export declare function fetchStream(url: any, config?: Record<string, any>): Promise<import("node-fetch").Response>;
7
+ export declare function fetchStream(url: any, config?: Record<string, any>): Promise<fetchReturnTypeExtracted>;
8
+ export {};
package/src/auth/index.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from './login'
2
- export * from './logout'
package/src/auth/login.ts DELETED
@@ -1,91 +0,0 @@
1
- import _ from 'lodash'
2
- import { Credential } from '@cloudbase/toolbox'
3
- import { authSupevisor, checkAndGetCredential, execWithLoading, checkEnvAvaliable } from '../utils'
4
- import { ILoginOptions } from '../types'
5
- import { ENV_STATUS } from '../constant'
6
- import { Logger } from '../decorators'
7
- import { getEnvInfo } from '../env'
8
-
9
- const log = new Logger()
10
-
11
- // 登录返回 code 与信息
12
- const LoginRes = {
13
- SUCCESS: {
14
- code: 'SUCCESS',
15
- msg: '登录成功!'
16
- },
17
- INVALID_TOKEN: {
18
- code: 'INVALID_TOKEN',
19
- msg: '无效的身份信息!'
20
- },
21
- CHECK_LOGIN_FAILED: {
22
- code: 'CHECK_LOGIN_FAILED',
23
- msg: '检查登录态失败'
24
- },
25
- INVALID_PARAM(msg) {
26
- return {
27
- code: 'INVALID_PARAM',
28
- msg: `参数无效:${msg}`
29
- }
30
- }
31
- }
32
-
33
- // 打开腾讯云-云开发控制台,通过获取临时密钥登录,临时密钥可续期,最长时间为 1 个月
34
- export async function loginByWebAuth() {
35
- const credential = await authSupevisor.loginByWebAuth()
36
-
37
- if (_.isEmpty(credential)) {
38
- return LoginRes.INVALID_TOKEN
39
- }
40
-
41
- return {
42
- credential,
43
- ...LoginRes.SUCCESS
44
- }
45
- }
46
-
47
- // 使用密钥登录
48
- export async function loginWithKey(secretId?: string, secretKey?: string, token?: string) {
49
- if (!secretId || !secretKey) {
50
- return LoginRes.INVALID_PARAM('SecretID 或 SecretKey 不能为空')
51
- }
52
-
53
- const credential = await authSupevisor.loginByApiSecret(secretId, secretKey, token)
54
-
55
- if (_.isEmpty(credential)) {
56
- return LoginRes.INVALID_TOKEN
57
- }
58
-
59
- return LoginRes.SUCCESS
60
- }
61
-
62
- export async function login(
63
- options: ILoginOptions = {}
64
- ): Promise<{ code: string; msg: string; credential?: Credential }> {
65
- const { secretId, secretKey, key, token } = options
66
- return key ? loginWithKey(secretId, secretKey, token) : loginByWebAuth()
67
- }
68
-
69
- // 检查是否登录,没有登录时,自动拉起浏览器授权
70
- export async function checkLogin() {
71
- const credential = await checkAndGetCredential()
72
- // 没有登录,拉起 Web 登录
73
- if (_.isEmpty(credential)) {
74
- log.info('你还没有登录,请在控制台中授权登录')
75
-
76
- const res = await execWithLoading(() => login(), {
77
- startTip: '获取授权中...',
78
- successTip: '授权登录成功!'
79
- })
80
-
81
- const envId = res?.credential?.envId
82
-
83
- // 登录返回 envId,检查环境初始化
84
- if (envId) {
85
- const env = await getEnvInfo(envId)
86
- if (env.Status === ENV_STATUS.UNAVAILABLE) {
87
- await checkEnvAvaliable(envId)
88
- }
89
- }
90
- }
91
- }
@@ -1,7 +0,0 @@
1
- import { authSupevisor } from '../utils'
2
-
3
- // 注销登录信息
4
- export async function logout() {
5
- process.emit('logout')
6
- await authSupevisor.logout()
7
- }
@@ -1,2 +0,0 @@
1
- export * from './login'
2
- export * from './logout'
@@ -1,192 +0,0 @@
1
- import _ from 'lodash'
2
- import chalk from 'chalk'
3
- import inquirer from 'inquirer'
4
- import { Command, ICommand } from '../common'
5
- import { login } from '../../auth'
6
- import { listEnvs } from '../../env'
7
- import { CloudBaseError } from '../../error'
8
- import { InjectParams, ArgsOptions, Log, Logger } from '../../decorators'
9
- import {
10
- loadingFactory,
11
- usageStore,
12
- collectAgree,
13
- genClickableLink,
14
- checkAndGetCredential
15
- } from '../../utils'
16
-
17
- function printSuggestion() {
18
- const tips = `可使用下面命令继续操作:
19
-
20
- ${chalk.gray('–')} 创建免费环境
21
-
22
- ${chalk.cyan('$ tcb env create envName')}
23
-
24
- ${chalk.gray('–')} 初始化云开发项目
25
-
26
- ${chalk.cyan('$ tcb new')}
27
-
28
- ${chalk.gray('–')} 部署云函数
29
-
30
- ${chalk.cyan('$ tcb fn deploy')}
31
-
32
- ${chalk.gray('–')} 查看命令使用介绍
33
-
34
- ${chalk.cyan('$ tcb -h')}
35
-
36
- Tips:可以使用简写命令 tcb 代替 cloudbase`
37
- console.log(tips)
38
- }
39
-
40
- async function askForCollectDataConfirm() {
41
- const agree = await usageStore.get('agreeCollect')
42
- if (agree) return
43
- // 询问
44
- const { confirm } = await inquirer.prompt({
45
- type: 'confirm',
46
- name: 'confirm',
47
- message: '是否同意 Cloudbase CLI 收集您的使用数据以改进产品?',
48
- default: true
49
- })
50
-
51
- if (confirm) {
52
- await usageStore.set('agreeCollect', true)
53
- }
54
-
55
- await collectAgree(confirm)
56
- }
57
-
58
- @ICommand()
59
- export class LoginCommand extends Command {
60
- get options() {
61
- return {
62
- cmd: 'login',
63
- options: [
64
- {
65
- flags: '-k, --key',
66
- desc: '使用永久密钥登录'
67
- },
68
- {
69
- flags: '--apiKeyId <apiKeyId>',
70
- desc: '腾讯云 API 秘钥 Id'
71
- },
72
- {
73
- flags: '--apiKey <apiKey>',
74
- desc: '腾讯云 API 秘钥 Key'
75
- },
76
- {
77
- flags: '--token [token]',
78
- desc: '腾讯云 API 临时秘钥 Token'
79
- }
80
- ],
81
- desc: '登录腾讯云账号',
82
- requiredEnvId: false,
83
- withoutAuth: true
84
- }
85
- }
86
-
87
- @InjectParams()
88
- async execute(@ArgsOptions() options, @Log() log: Logger) {
89
- log.verbose(options)
90
- const { apiKeyId, apiKey, token } = options
91
- const loading = loadingFactory()
92
- loading.start('检验登录状态')
93
-
94
- const credential = await checkAndGetCredential()
95
-
96
- if (!_.isEmpty(credential)) {
97
- loading.succeed('您已登录,无需再次登录!')
98
- return
99
- } else {
100
- loading.stop()
101
- }
102
-
103
- // 通过参数传入 API Key,适用于 CI 场景
104
- if (apiKey && apiKeyId) {
105
- loading.start('正在验证腾讯云密钥...')
106
-
107
- const res = await login({
108
- token,
109
- key: true,
110
- secretKey: apiKey,
111
- secretId: apiKeyId
112
- })
113
-
114
- if (res.code === 'SUCCESS') {
115
- loading.succeed('登录成功!')
116
- printSuggestion()
117
- } else {
118
- loading.fail('腾讯云密钥验证失败,请检查密钥是否正确或终端网络是否可用!')
119
- return process.exit(1)
120
- }
121
- } else if (options.key) {
122
- // 兼容临时密钥和永久密钥登录
123
- const clickableLink = genClickableLink('https://console.cloud.tencent.com/cam/capi')
124
- console.log(`您可以访问 ${clickableLink} 获取 API 秘钥`)
125
-
126
- // 使用永久密钥登录
127
- const { secretId } = await inquirer.prompt({
128
- type: 'input',
129
- name: 'secretId',
130
- message: '请输入腾讯云 SecretID:'
131
- })
132
-
133
- const { secretKey } = await inquirer.prompt({
134
- type: 'input',
135
- name: 'secretKey',
136
- message: '请输入腾讯云 SecretKey:'
137
- })
138
-
139
- if (!secretId || !secretKey) {
140
- throw new CloudBaseError('SecretID 或 SecretKey 不能为空')
141
- }
142
-
143
- loading.start('正在验证腾讯云密钥...')
144
-
145
- const res = await login({
146
- key: true,
147
- secretId,
148
- secretKey
149
- })
150
-
151
- if (res.code === 'SUCCESS') {
152
- loading.succeed('登录成功!')
153
- await askForCollectDataConfirm()
154
- printSuggestion()
155
- } else {
156
- loading.fail('腾讯云密钥验证失败,请检查密钥是否正确或终端网络是否可用!')
157
- return process.exit(1)
158
- }
159
- } else {
160
- // 使用临时密钥登录-支持自动续期
161
- loading.start('获取授权中...')
162
- const res = await login()
163
-
164
- if (res.code === 'SUCCESS') {
165
- loading.succeed('登录成功!')
166
- await askForCollectDataConfirm()
167
- printSuggestion()
168
- } else {
169
- loading.fail(res.msg)
170
- console.log('Web 授权登录失败,秘钥校验失败!')
171
- return process.exit(1)
172
- }
173
- }
174
-
175
- // 检测用户是否存在,不存在则初始化
176
- try {
177
- const envs = await listEnvs()
178
- if (!envs.length) {
179
- log.warn('您还没有可用的环境,请使用 cloudbase env:create $name 创建环境')
180
- }
181
- } catch (e) {
182
- // 用户不存在
183
- // 主账户可以直接使用 env:create 完成初始化工作
184
- if (e.code === 'ResourceNotFound.UserNotExists') {
185
- log.error('您还没有可用的环境,请使用 cloudbase env:create $name 创建环境!')
186
- } else {
187
- console.error(e)
188
- throw e
189
- }
190
- }
191
- }
192
- }
@@ -1,24 +0,0 @@
1
- import { ICommand, Command } from '../common'
2
-
3
- import { logout } from '../../auth'
4
- import { InjectParams, Log, Logger } from '../../decorators'
5
-
6
- @ICommand()
7
- export class LogoutCommand extends Command {
8
- get options() {
9
- return {
10
- cmd: 'logout',
11
- options: [],
12
- desc: '登出腾讯云账号',
13
- requiredEnvId: false,
14
- withoutAuth: true
15
- }
16
- }
17
-
18
- @InjectParams()
19
- async execute(@Log() log: Logger) {
20
- await logout()
21
-
22
- log.success('注销登录成功!')
23
- }
24
- }