@cloudbase/cli 2.2.4-private.2 → 2.2.5

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.
@@ -0,0 +1,3 @@
1
+ {
2
+ "typescript.tsdk": "node_modules\\typescript\\lib"
3
+ }
package/bin/cloudbase.js CHANGED
File without changes
package/bin/tcb.js CHANGED
@@ -9,205 +9,315 @@ const logSymbols = require('log-symbols')
9
9
  const didYouMean = require('didyoumean')
10
10
  const updateNotifier = require('update-notifier')
11
11
  const frameworkPkg = require('@cloudbase/framework-core/package.json')
12
+ const { CloudApiService } = require('@cloudbase/cloud-api')
13
+ const { getCredentialWithoutCheck } = require('@cloudbase/toolbox')
14
+ const { Confirm } = require('enquirer')
15
+ const execa = require('execa')
12
16
 
13
17
  const pkg = require('../package.json')
14
18
  const store = require('../lib/utils/store')
15
19
  const { ALL_COMMANDS } = require('../lib/constant')
16
20
  const { getProxy } = require('../lib/utils/net')
17
21
  const { getCloudBaseConfig, getPrivateSettings } = require('../lib/utils/config')
18
- const {registerCommands} = require('../lib')
22
+ const { registerCommands } = require('../lib')
23
+
24
+
25
+ const regionSupported = ['ap-shanghai', 'ap-beijing', 'ap-guangzhou']
26
+ const regionSupportedMap = {
27
+ 'ap-shanghai': '上海',
28
+ 'ap-beijing': '北京',
29
+ 'ap-guangzhou': '广州',
30
+ 'sh': '上海',
31
+ 'bj': '北京',
32
+ 'gz': '广州'
33
+ }
19
34
 
20
35
  async function main() {
21
- let processArgv = process.argv
22
- const isBeta = pkg.version.indexOf('-') > -1
23
- process.CLI_VERSION = pkg.version
36
+ let processArgv = process.argv
37
+ const isBeta = pkg.version.indexOf('-') > -1
38
+ process.CLI_VERSION = pkg.version
24
39
 
25
- const [major, minor] = process.versions.node.split('.').slice(0, 2)
40
+ const [major, minor] = process.versions.node.split('.').slice(0, 2)
26
41
 
27
- // Node 版本检验提示
28
- if (Number(major) < 8 || (Number(major) === 8 && Number(minor) < 6)) {
29
- console.log(
30
- chalk.bold.red(
31
- '您的 Node 版本较低,CloudBase CLI 可能无法正常运行,请升级 Node 到 v8.6.0 以上!\n'
42
+ // Node 版本检验提示
43
+ if (Number(major) < 8 || (Number(major) === 8 && Number(minor) < 6)) {
44
+ console.log(
45
+ chalk.bold.red(
46
+ '您的 Node 版本较低,CloudBase CLI 可能无法正常运行,请升级 Node 到 v8.6.0 以上!\n'
47
+ )
32
48
  )
33
- )
34
- }
35
-
36
- // Sentry 错误上报
37
- Sentry.init({
38
- release: pkg.version,
39
- dsn: 'https://fff0077d06624655ad70d1ee25df419e@report.url.cn/sentry/1782',
40
- httpsProxy: getProxy() || '',
41
- serverName: os.hostname(),
42
- integrations: [
43
- new Sentry.Integrations.OnUnhandledRejection({
44
- mode: 'none'
45
- })
46
- ]
47
- })
48
-
49
- // 输出版本信息
50
- console.log(chalk.gray(`CloudBase CLI ${pkg.version}`))
51
- console.log(chalk.gray(`CloudBase Framework ${frameworkPkg.version}`))
52
-
53
-
54
- const yargsParsedResult = yargsParser(process.argv.slice(2));
55
- const config = await getCloudBaseConfig(yargsParsedResult.configFile);
56
- const privateSettings = getPrivateSettings(config);
57
- if (privateSettings) {
58
- console.log(chalk.gray(`检测到私有化配置`))
59
- if(privateSettings.endpoints && privateSettings.endpoints.cliApi){
60
- // 初始化 lowcode 服务cliapi入口
61
- process.env.CLOUDBASE_LOWCODE_CLOUDAPI_URL = privateSettings.endpoints.cliApi;
62
49
  }
63
50
 
64
- }
65
- // 注册命令
66
- await registerCommands()
51
+ // Sentry 错误上报
52
+ Sentry.init({
53
+ release: pkg.version,
54
+ dsn: 'https://fff0077d06624655ad70d1ee25df419e@report.url.cn/sentry/1782',
55
+ httpsProxy: getProxy() || '',
56
+ serverName: os.hostname(),
57
+ integrations: [
58
+ new Sentry.Integrations.OnUnhandledRejection({
59
+ mode: 'none'
60
+ })
61
+ ]
62
+ })
67
63
 
68
- // 设置 Sentry 上报的用户 uin
69
- Sentry.configureScope((scope) => {
70
- try {
71
- const credential = store.authStore.get('credential') || {}
72
- scope.setUser({
73
- uin: credential.uin || '',
74
- ip: address.ip() || ''
75
- })
76
- } catch (e) {
77
- Sentry.captureException(e)
78
- }
79
- })
80
-
81
- // 设置 options 选项
82
- program.storeOptionsAsProperties(false)
83
- program.option('--verbose', '打印出内部运行信息')
84
- program.option('--mode <mode>', '指定加载 env 文件的环境')
85
- program.option('--config-file <path>', '设置配置文件,默认为 cloudbaserc.json')
86
- program.option('-r, --region <region>', '指定环境地域')
87
-
88
- if(!privateSettings) {
89
- // HACK: 隐藏自动生成的 help 信息
90
- program.helpOption(false)
91
- }
92
- const isCommandEmpty = yargsParsedResult._.length === 0;
93
-
94
- // -v 时输出的版本信息,设置时避免影响其他命令使用 -v
95
- if (isCommandEmpty) {
96
- program.version(
97
- `\nCLI: ${pkg.version}\nFramework: ${frameworkPkg.version}`,
98
- '-v, --version',
99
- '输出当前 CloudBase CLI 版本'
100
- )
101
- }
64
+ // 输出版本信息
65
+ console.log(chalk.gray(`CloudBase CLI ${pkg.version}`))
66
+ console.log(chalk.gray(`CloudBase Framework ${frameworkPkg.version}`))
67
+
68
+
69
+ const yargsParsedResult = yargsParser(process.argv.slice(2));
70
+ const config = await getCloudBaseConfig(yargsParsedResult.configFile);
71
+ const privateSettings = getPrivateSettings(config);
72
+ if (privateSettings) {
73
+ console.log(chalk.gray(`检测到私有化配置`))
74
+ if (privateSettings.endpoints && privateSettings.endpoints.cliApi) {
75
+ // 初始化 lowcode 服务cliapi入口
76
+ process.env.CLOUDBASE_LOWCODE_CLOUDAPI_URL = privateSettings.endpoints.cliApi;
77
+ }
102
78
 
103
- // 处理无效命令
104
- program.action(() => {
105
- const args = program.args
106
- if (!Array.isArray(args) || !args.length) {
107
- return
108
- }
109
- const cmd = args.join(' ')
110
- console.log(chalk.bold.red('Error: ') + `${cmd} 不是有效的命令`)
111
- didYouMean.threshold = 0.5
112
- didYouMean.caseSensitive = false
113
- const suggest = didYouMean(cmd, ALL_COMMANDS)
114
- if (suggest) {
115
- console.log(chalk.bold(`\n您是不是想使用命令:tcb ${suggest}\n`))
116
79
  }
117
- console.log(`💡使用 ${chalk.bold('tcb -h')} 查看所有命令`)
118
- })
119
-
120
- // 没有使用命令
121
- if (isCommandEmpty) {
122
- if(privateSettings) {
123
- program.outputHelp()
124
- } else {
125
- if (['-h', '--help'].includes(processArgv[2])) {
126
- // 需要隐藏的选项
127
- const hideArgs = ['-h', '--help']
128
- hideArgs.forEach((arg) => {
129
- const index = processArgv.indexOf(arg)
130
- if (index > -1) {
131
- processArgv.splice(index, 1)
132
- }
80
+ // 注册命令
81
+ await registerCommands()
82
+
83
+ // 设置 Sentry 上报的用户 uin
84
+ Sentry.configureScope((scope) => {
85
+ try {
86
+ const credential = store.authStore.get('credential') || {}
87
+ scope.setUser({
88
+ uin: credential.uin || '',
89
+ ip: address.ip() || ''
133
90
  })
134
- const { outputHelpInfo } = require('../lib/help')
135
- outputHelpInfo()
136
- } else if (!['-v', '--version'].includes(processArgv[2])) {
137
- // HACK: framework 智能命令
138
- const { smartDeploy } = require('../lib')
139
- smartDeploy()
91
+ } catch (e) {
92
+ Sentry.captureException(e)
140
93
  }
94
+ })
95
+
96
+ // 设置 options 选项
97
+ program.storeOptionsAsProperties(false)
98
+ program.option('--verbose', '打印出内部运行信息')
99
+ program.option('--mode <mode>', '指定加载 env 文件的环境')
100
+ program.option('--config-file <path>', '设置配置文件,默认为 cloudbaserc.json')
101
+ program.option('-r, --region <region>', '指定环境地域')
102
+
103
+ if (!privateSettings) {
104
+ // HACK: 隐藏自动生成的 help 信息
105
+ program.helpOption(false)
141
106
  }
142
- }
107
+ const isCommandEmpty = yargsParsedResult._.length === 0;
143
108
 
144
- try {
145
- program.parse(processArgv)
146
- } catch (e) {
147
- const errMsg = `${logSymbols.error} ${e.message || '参数异常,请检查您是否使用了正确的命令!'}`
148
- console.log(errMsg)
149
- }
109
+ // -v 时输出的版本信息,设置时避免影响其他命令使用 -v
110
+ if (isCommandEmpty) {
111
+ program.version(
112
+ `\nCLI: ${pkg.version}\nFramework: ${frameworkPkg.version}`,
113
+ '-v, --version',
114
+ '输出当前 CloudBase CLI 版本'
115
+ )
116
+ }
117
+
118
+ // 处理无效命令
119
+ program.action(() => {
120
+ const args = program.args
121
+ if (!Array.isArray(args) || !args.length) {
122
+ return
123
+ }
124
+ const cmd = args.join(' ')
125
+ console.log(chalk.bold.red('Error: ') + `${cmd} 不是有效的命令`)
126
+ didYouMean.threshold = 0.5
127
+ didYouMean.caseSensitive = false
128
+ const suggest = didYouMean(cmd, ALL_COMMANDS)
129
+ if (suggest) {
130
+ console.log(chalk.bold(`\n您是不是想使用命令:tcb ${suggest}\n`))
131
+ }
132
+ console.log(`💡使用 ${chalk.bold('tcb -h')} 查看所有命令`)
133
+ })
150
134
 
151
- /**
152
- * 处理异常
153
- */
154
- function errorHandler(err) {
155
- process.emit('tcbError')
156
- const stackIngoreErrors = ['TencentCloudSDKHttpException', 'CloudBaseError']
157
- // 忽略自定义错误的错误栈
158
- if (err && err.stack && !stackIngoreErrors.includes(err.name)) {
159
- console.log(err.stack)
135
+ // 没有使用命令
136
+ if (isCommandEmpty) {
137
+ if (privateSettings) {
138
+ program.outputHelp()
139
+ } else {
140
+ if (['-h', '--help'].includes(processArgv[2])) {
141
+ // 需要隐藏的选项
142
+ const hideArgs = ['-h', '--help']
143
+ hideArgs.forEach((arg) => {
144
+ const index = processArgv.indexOf(arg)
145
+ if (index > -1) {
146
+ processArgv.splice(index, 1)
147
+ }
148
+ })
149
+ const { outputHelpInfo } = require('../lib/help')
150
+ outputHelpInfo()
151
+ } else if (!['-v', '--version'].includes(processArgv[2])) {
152
+ // HACK: framework 智能命令
153
+ const { smartDeploy } = require('../lib')
154
+ smartDeploy()
155
+ }
156
+ }
160
157
  }
161
158
 
162
- // 3 空格,兼容中文字符编码长度问题
163
- if (err && err.message) {
164
- let errMsg = logSymbols.error + ' ' + err.message
165
- errMsg += err.requestId ? `\n${err.requestId}` : ''
159
+ try {
160
+ program.parse(processArgv)
161
+ } catch (e) {
162
+ const errMsg = `${logSymbols.error} ${e.message || '参数异常,请检查您是否使用了正确的命令!'}`
166
163
  console.log(errMsg)
164
+ }
167
165
 
168
- // 多地域错误提示
169
- if (errMsg.includes('Environment') && errMsg.includes('not found')) {
170
- console.log(
171
- chalk.yellow.bold(
172
- '\n此环境可能不属于当前账号,或为非上海地域环境,如需切换地域请追加参数(例:-r gz),请检查环境归属,参考多地域使用方法:https://docs.cloudbase.net/cli-v1/region.html'
173
- )
174
- )
166
+ /**
167
+ * 处理异常
168
+ */
169
+ async function errorHandler(err) {
170
+ process.emit('tcbError')
171
+ const stackIngoreErrors = ['TencentCloudSDKHttpException', 'CloudBaseError']
172
+ // 忽略自定义错误的错误栈
173
+ if (err && err.stack && !stackIngoreErrors.includes(err.name)) {
174
+ console.log(err.stack)
175
+ }
176
+
177
+ // 3 空格,兼容中文字符编码长度问题
178
+ if (err && err.message) {
179
+ let errMsg = logSymbols.error + ' ' + err.message
180
+ errMsg += err.requestId ? `\n${err.requestId}` : ''
181
+ console.log(errMsg)
182
+
183
+ // 多地域错误提示
184
+ if (errMsg.includes('Environment') && errMsg.includes('not found')) {
185
+ // 检查是否已经指定了 -r 或 --region 参数,如未指定则尝试获取地域信息
186
+ const regionSpecified = processArgv.indexOf('-r') !== -1 || processArgv.indexOf('--region') !== -1
187
+ const region = yargsParsedResult?.r || yargsParsedResult?.region
188
+ const multiRegionErrMsg = `\n此环境可能不属于当前账号,或为非${regionSupportedMap[region] || '上海'}地域环境,如需切换地域请追加参数(例:-r gz),请检查环境归属,参考多地域使用方法:https://docs.cloudbase.net/cli-v1/region.html`
189
+ if (!regionSpecified) {
190
+
191
+ // 从 -e 参数、--envId 参数和配置文件中获取环境 id
192
+ const envId = yargsParsedResult?.e || yargsParsedResult?.envId || config?.envId
193
+
194
+ // 调用 API 接口尝试查询环境信息
195
+ const predictRegion = await tryTellEnvRegion(envId)
196
+
197
+ if (regionSupported.includes(predictRegion)) {
198
+ // 让用户选择是否切换地域
199
+ const prompt = new Confirm({
200
+ type: 'confirm',
201
+ name: 'confirm',
202
+ message: `该环境可能属于 ${regionSupportedMap[predictRegion]} 地域,是否切换地域并重新执行命令?`,
203
+ initial: 'Y'
204
+ })
205
+ const confirm = await prompt.run()
206
+ if (confirm) {
207
+ // 检查原始命令是否已经追加了 -r 参数,如果有则替换,如果没有则追加
208
+ const regionArgIndex = processArgv.indexOf('-r')
209
+ if (regionArgIndex !== -1) {
210
+ processArgv[regionArgIndex + 1] = predictRegion
211
+ } else {
212
+ processArgv.push('-r', predictRegion)
213
+ }
214
+ // 重新执行命令
215
+ const newArgvStr = processArgv.slice(2).join(' ')
216
+ console.log(`\n${chalk.yellow.bold('正在重新执行命令:')} tcb ${newArgvStr}\n`)
217
+ await execa('tcb', processArgv.slice(2), {
218
+ stdio: 'inherit'
219
+ })
220
+ process.emit('tcbExit')
221
+ process.exit(0)
222
+ } else {
223
+ console.log(chalk.yellow.bold(multiRegionErrMsg))
224
+ }
225
+ }
226
+ } else {
227
+ console.log(chalk.yellow.bold(multiRegionErrMsg))
228
+ }
229
+ }
175
230
  }
231
+
232
+ // 输出详细的错误信息
233
+ if (processArgv.includes('--verbose')) {
234
+ console.log(err)
235
+ }
236
+
237
+ process.emit('tcbExit')
238
+ setTimeout(() => {
239
+ process.exit(1)
240
+ }, 1000)
176
241
  }
177
242
 
178
- // 输出详细的错误信息
179
- if (processArgv.includes('--verbose')) {
180
- console.log(err)
243
+ const isTokenExpired = (credential, gap = 120) =>
244
+ credential.accessTokenExpired && Number(credential.accessTokenExpired) < Date.now() + gap * 1000
245
+
246
+ async function tryTellEnvRegion(envId) {
247
+ // 依次调用不同地域的 API 接口查询环境信息
248
+ const fetchedRegion = await Promise.all(regionSupported.map(async region => {
249
+ const res = await fetchEnvInfoWithRegion(envId, region)
250
+ if (res?.EnvList?.length !== 0 && res?.EnvList.find(item => item.EnvId === envId)) {
251
+ return res.EnvList[0].Region
252
+ }
253
+ return ''
254
+ }))
255
+
256
+ let predictRegion = ''
257
+ fetchedRegion.forEach(region => {
258
+ if (region) {
259
+ predictRegion = region
260
+ }
261
+ })
262
+ return predictRegion
181
263
  }
182
264
 
183
- process.emit('tcbExit')
184
- setTimeout(() => {
185
- process.exit(1)
186
- }, 1000)
187
- }
265
+ // 在指定地域调用 API 接口查询环境信息
266
+ async function fetchEnvInfoWithRegion(envId, region) {
267
+ let commonCredential
268
+ const commonOpts = {
269
+ service: 'tcb',
270
+ version: '2019-09-24',
271
+ proxy: getProxy(),
272
+ timeout: 15000,
273
+ getCredential: async () => {
274
+ if (commonCredential?.secretId && !isTokenExpired(commonCredential)) {
275
+ return commonCredential
276
+ }
277
+ const credential = await getCredentialWithoutCheck()
278
+ if (!credential) {
279
+ throw new Error('无有效身份信息,请使用 cloudbase login 登录')
280
+ }
281
+ commonCredential = credential
282
+ return {
283
+ ...credential,
284
+ tokenExpired: Number(credential.accessTokenExpired)
285
+ }
286
+ }
287
+ }
288
+ const apiName = 'DescribeEnvs'
289
+ const tcbApi = new CloudApiService({
290
+ ...commonOpts,
291
+ region
292
+ })
293
+ const res = await tcbApi.request(apiName, {
294
+ EnvId: envId,
295
+ })
296
+ return res
297
+ }
188
298
 
189
- process.on('uncaughtException', errorHandler)
190
- process.on('unhandledRejection', errorHandler)
299
+ process.on('uncaughtException', errorHandler)
300
+ process.on('unhandledRejection', errorHandler)
191
301
 
192
- // 检查更新
193
- const ONE_DAY = 86400000
194
- // Beta 版 1 个小时检查一次,稳定版 1 天检查一次
195
- const CheckInterval = isBeta ? 3600000 : ONE_DAY
302
+ // 检查更新
303
+ const ONE_DAY = 86400000
304
+ // Beta 版 1 个小时检查一次,稳定版 1 天检查一次
305
+ const CheckInterval = isBeta ? 3600000 : ONE_DAY
196
306
 
197
- const notifier = updateNotifier({
198
- pkg,
199
- distTag: isBeta ? 'beta' : 'latest',
200
- // 检查更新间隔 1 天
201
- updateCheckInterval: CheckInterval
202
- })
307
+ const notifier = updateNotifier({
308
+ pkg,
309
+ distTag: isBeta ? 'beta' : 'latest',
310
+ // 检查更新间隔 1 天
311
+ updateCheckInterval: CheckInterval
312
+ })
203
313
 
204
- notifier.notify({
205
- isGlobal: true
206
- })
314
+ notifier.notify({
315
+ isGlobal: true
316
+ })
207
317
 
208
318
  }
209
319
 
210
- if(require.main === module) {
320
+ if (require.main === module) {
211
321
  try {
212
322
  main()
213
323
  } catch (error) {
@@ -55,7 +55,7 @@ var __rest = (this && this.__rest) || function (s, e) {
55
55
  return t;
56
56
  };
57
57
  Object.defineProperty(exports, "__esModule", { value: true });
58
- exports.LowCodeDeployApp = exports.LowCodeBuildAppConfig = exports.LowCodeBuildApp = exports.LowCodeWatch = void 0;
58
+ exports.LowCodeDeployApp = exports.LowCodeBuildApp = exports.LowCodeWatch = void 0;
59
59
  const common_1 = require("../common");
60
60
  const decorators_1 = require("../../decorators");
61
61
  const utils_1 = require("./utils");
@@ -160,55 +160,6 @@ LowCodeBuildApp = __decorate([
160
160
  (0, common_1.ICommand)({ supportPrivate: true })
161
161
  ], LowCodeBuildApp);
162
162
  exports.LowCodeBuildApp = LowCodeBuildApp;
163
- let LowCodeBuildAppConfig = class LowCodeBuildAppConfig extends common_1.Command {
164
- get options() {
165
- return {
166
- cmd: 'lowcode',
167
- childCmd: 'build:app-config',
168
- options: [
169
- {
170
- flags: '--out <out>',
171
- desc: '输出目录'
172
- },
173
- {
174
- flags: '--build-type-list <type...>',
175
- desc: '输出目录'
176
- },
177
- {
178
- flags: '--domain <domain>',
179
- desc: '托管域名'
180
- }
181
- ],
182
- desc: '构建应用配置',
183
- requiredEnvId: false
184
- };
185
- }
186
- execute(ctx, log, options) {
187
- return __awaiter(this, void 0, void 0, function* () {
188
- const config = (0, utils_1.getCmdConfig)(ctx.config, this.options);
189
- const mergesOptions = (0, utils_1.getMergedOptions)(config, options);
190
- yield lowcodeCli.buildAppConfig({
191
- envId: ctx.envId || ctx.config.envId,
192
- projectPath: process.cwd(),
193
- logger: log,
194
- privateSettings: (0, utils_2.getPrivateSettings)(ctx.config, this.options.cmd)
195
- }, mergesOptions);
196
- });
197
- }
198
- };
199
- __decorate([
200
- (0, decorators_1.InjectParams)(),
201
- __param(0, (0, decorators_1.CmdContext)()),
202
- __param(1, (0, decorators_1.Log)()),
203
- __param(2, (0, decorators_1.ArgsOptions)()),
204
- __metadata("design:type", Function),
205
- __metadata("design:paramtypes", [Object, decorators_1.Logger, Object]),
206
- __metadata("design:returntype", Promise)
207
- ], LowCodeBuildAppConfig.prototype, "execute", null);
208
- LowCodeBuildAppConfig = __decorate([
209
- (0, common_1.ICommand)({ supportPrivate: true })
210
- ], LowCodeBuildAppConfig);
211
- exports.LowCodeBuildAppConfig = LowCodeBuildAppConfig;
212
163
  let LowCodeDeployApp = class LowCodeDeployApp extends common_1.Command {
213
164
  get options() {
214
165
  return {
@@ -60,11 +60,12 @@ function promisifyProcess(p, pipe = false) {
60
60
  exports.promisifyProcess = promisifyProcess;
61
61
  function getLowcodeCli() {
62
62
  return __awaiter(this, void 0, void 0, function* () {
63
+ var _a;
63
64
  const key = '@cloudbase/lowcode-cli';
64
65
  const cache = new Map();
65
66
  let result;
66
67
  if (!cache.get(key)) {
67
- const module = yield Promise.resolve().then(() => __importStar(require(key)));
68
+ const module = yield (_a = key, Promise.resolve().then(() => __importStar(require(_a))));
68
69
  cache.set(key, module);
69
70
  }
70
71
  result = cache.get(key);
@@ -18,6 +18,15 @@ const debug_logger_1 = require("../debug-logger");
18
18
  let commonCredential;
19
19
  const isTokenExpired = (credential, gap = 120) => credential.accessTokenExpired && Number(credential.accessTokenExpired) < Date.now() + gap * 1000;
20
20
  class CloudApiService {
21
+ static getInstance(service) {
22
+ var _a;
23
+ if ((_a = CloudApiService.serviceCacheMap) === null || _a === void 0 ? void 0 : _a[service]) {
24
+ return CloudApiService.serviceCacheMap[service];
25
+ }
26
+ const apiService = new CloudApiService(service);
27
+ CloudApiService.serviceCacheMap[service] = apiService;
28
+ return apiService;
29
+ }
21
30
  constructor(service, baseParams, version = '') {
22
31
  this.apiService = new cloud_api_1.CloudApiService({
23
32
  service,
@@ -38,15 +47,6 @@ class CloudApiService {
38
47
  })
39
48
  });
40
49
  }
41
- static getInstance(service) {
42
- var _a;
43
- if ((_a = CloudApiService.serviceCacheMap) === null || _a === void 0 ? void 0 : _a[service]) {
44
- return CloudApiService.serviceCacheMap[service];
45
- }
46
- const apiService = new CloudApiService(service);
47
- CloudApiService.serviceCacheMap[service] = apiService;
48
- return apiService;
49
- }
50
50
  request(action, data = {}, method = 'POST') {
51
51
  return __awaiter(this, void 0, void 0, function* () {
52
52
  const region = this.region || (yield (0, toolbox_1.getRegion)());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudbase/cli",
3
- "version": "2.2.4-private.2",
3
+ "version": "2.2.5",
4
4
  "description": "cli tool for cloudbase",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -32,7 +32,7 @@
32
32
  "dependencies": {
33
33
  "@cloudbase/cloud-api": "^0.5.5",
34
34
  "@cloudbase/framework-core": "^1.9.6",
35
- "@cloudbase/lowcode-cli": "0.18.5-private.2",
35
+ "@cloudbase/lowcode-cli": "^0.18.5",
36
36
  "@cloudbase/manager-node": "4.0.1",
37
37
  "@cloudbase/toolbox": "^0.7.4",
38
38
  "@sentry/node": "^5.10.2",
@@ -27,19 +27,6 @@ export declare class LowCodeBuildApp extends Command {
27
27
  };
28
28
  execute(ctx: ICommandContext, log: Logger, options: any): Promise<void>;
29
29
  }
30
- export declare class LowCodeBuildAppConfig extends Command {
31
- get options(): {
32
- cmd: string;
33
- childCmd: string;
34
- options: {
35
- flags: string;
36
- desc: string;
37
- }[];
38
- desc: string;
39
- requiredEnvId: boolean;
40
- };
41
- execute(ctx: ICommandContext, log: Logger, options: any): Promise<void>;
42
- }
43
30
  export declare class LowCodeDeployApp extends Command {
44
31
  get options(): {
45
32
  cmd: string;
@@ -1,4 +1,4 @@
1
1
  import { ParamTypes } from '../constants';
2
- declare type GetterFunction = (target: any) => Promise<any> | any;
2
+ type GetterFunction = (target: any) => Promise<any> | any;
3
3
  export declare const createParamDecorator: (paramtype: ParamTypes, getter: GetterFunction) => () => (target: any, key: string | symbol, index: number) => void;
4
4
  export {};
package/types/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- export declare type CustomEvent = 'logout';
2
+ export type CustomEvent = 'logout';
3
3
  export interface ICommandContext {
4
4
  cmd: string;
5
5
  envId: string;
@@ -33,7 +33,7 @@ export interface TmpCredential {
33
33
  uin?: string;
34
34
  hash?: string;
35
35
  }
36
- export declare type Credential = TmpCredential & PermanentCredential;
36
+ export type Credential = TmpCredential & PermanentCredential;
37
37
  export interface AuthSecret {
38
38
  secretId: string;
39
39
  secretKey: string;
@@ -10,7 +10,7 @@ export interface IArgs {
10
10
  }
11
11
  export declare const getArgs: () => Arguments<IArgs>;
12
12
  export declare function getPrivateSettings(config: ICloudBaseRcSettings, cmd?: string): undefined | IPrivateSettings;
13
- declare type IAbsUrl = `http://${string}` | `https://${string}`;
13
+ type IAbsUrl = `http://${string}` | `https://${string}`;
14
14
  export interface IPrivateSettings {
15
15
  credential: Credential;
16
16
  endpoints: {
@@ -1,5 +1,5 @@
1
1
  export * from './del';
2
- export declare type SizeUnit = 'KB' | 'MB' | 'GB';
2
+ export type SizeUnit = 'KB' | 'MB' | 'GB';
3
3
  export declare function checkFullAccess(dest: string, throwError?: boolean): boolean;
4
4
  export declare function checkWritable(dest: string, throwError?: boolean): boolean;
5
5
  export declare function checkReadable(dest: string, throwError?: boolean): boolean;
@@ -1,7 +1,7 @@
1
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
+ type fetchReturnType = ReturnType<typeof _fetch>;
3
+ type UnPromisify<T> = T extends PromiseLike<infer U> ? U : T;
4
+ type fetchReturnTypeExtracted = UnPromisify<fetchReturnType>;
5
5
  export declare function fetch(url: string, config?: RequestInit): Promise<any>;
6
6
  export declare function postFetch(url: string, data?: Record<string, any>): Promise<any>;
7
7
  export declare function fetchStream(url: any, config?: Record<string, any>): Promise<fetchReturnTypeExtracted>;
@@ -8,7 +8,7 @@ declare class Loading {
8
8
  fail(text: string): void;
9
9
  }
10
10
  export declare const loadingFactory: () => Loading;
11
- declare type Task<T> = (flush: (text: string) => void, ...args: any[]) => Promise<T>;
11
+ type Task<T> = (flush: (text: string) => void, ...args: any[]) => Promise<T>;
12
12
  export interface ILoadingOptions {
13
13
  startTip?: string;
14
14
  successTip?: string;
@@ -1,4 +1,4 @@
1
- export declare type AsyncTask = () => Promise<any>;
1
+ export type AsyncTask = () => Promise<any>;
2
2
  export declare class AsyncTaskParallelController {
3
3
  maxParallel: number;
4
4
  tasks: AsyncTask[];
@@ -1,4 +1,4 @@
1
- declare type SimpleValue = number | string | boolean;
1
+ type SimpleValue = number | string | boolean;
2
2
  export declare function assertTruthy(val: SimpleValue | SimpleValue[], errMsg: string): void;
3
3
  export declare function assertHas(obj: any, prop: string, errMsg: any): void;
4
4
  export declare const validateIp: (ip: string) => boolean;