@cloudbase/manager-node 5.0.0 → 5.1.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.
@@ -0,0 +1,9 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(TCB_BASE_URL=https://tcb.pre.tencentcloudapi.woa.com npm test -- --testPathPattern=cloudApp 2>&1)",
5
+ "Bash(TCB_BASE_URL=https://tcb.pre.tencentcloudapi.woa.com npm test 2>&1)",
6
+ "Bash(TCB_BASE_URL=https://tcb.pre.tencentcloudapi.woa.com npm test -- --testPathPattern=cloudApp --testNamePattern=\"获取版本列表\")"
7
+ ]
8
+ }
9
+ }
@@ -0,0 +1,8 @@
1
+ root = true
2
+ [*]
3
+ indent_style = space
4
+ indent_size = 4
5
+ end_of_line = lf
6
+ charset = utf-8
7
+ trim_trailing_whitespace = true
8
+ insert_final_newline = true
@@ -0,0 +1,3 @@
1
+ lib/
2
+ types/
3
+ node_modules
@@ -0,0 +1,27 @@
1
+ module.exports = {
2
+ extends: ['alloy', 'alloy/typescript'],
3
+ rules: {
4
+ indent: ['error', 4],
5
+ semi: ['error', 'never'],
6
+ complexity: ['error', { max: 40 }],
7
+ 'no-useless-constructor': 'off',
8
+ '@typescript-eslint/explicit-member-accessibility': 'off',
9
+ '@typescript-eslint/explicit-function-return-type': 'off',
10
+ '@typescript-eslint/interface-name-prefix': 'off',
11
+ '@typescript-eslint/no-useless-constructor': 'off',
12
+ '@typescript-eslint/no-duplicate-imports': 'off'
13
+ },
14
+ env: {
15
+ es6: true,
16
+ node: true,
17
+ jest: true
18
+ },
19
+ overrides: [
20
+ {
21
+ files: ['*.js'],
22
+ rules: {
23
+ '@typescript-eslint/no-var-requires': 'off'
24
+ }
25
+ }
26
+ ]
27
+ }
@@ -0,0 +1,31 @@
1
+ module.exports = {
2
+ // 一行最多 100 字符
3
+ printWidth: 100,
4
+ // 使用 4 个空格缩进
5
+ tabWidth: 4,
6
+ // 不使用缩进符,而使用空格
7
+ useTabs: false,
8
+ // 行尾需要有分号
9
+ semi: false,
10
+ // 使用单引号
11
+ singleQuote: true,
12
+ // 对象的 key 仅在必要时用引号
13
+ quoteProps: 'as-needed',
14
+ // 末尾不需要逗号
15
+ trailingComma: 'none',
16
+ // 大括号内的首尾需要空格
17
+ bracketSpacing: true,
18
+ // 每个文件格式化的范围是文件的全部内容
19
+ rangeStart: 0,
20
+ rangeEnd: Infinity,
21
+ // 不需要写文件开头的 @prettier
22
+ requirePragma: false,
23
+ // 不需要自动在文件开头插入 @prettier
24
+ insertPragma: false,
25
+ // 使用默认的折行标准
26
+ proseWrap: 'preserve',
27
+ // 换行符使用 lf
28
+ endOfLine: 'lf',
29
+ // 箭头括号
30
+ arrowParens: 'avoid'
31
+ }
@@ -0,0 +1,109 @@
1
+ # 4.0.0
2
+ - 升级 https-proxy-agent 3->5 修复 https://github.com/TencentCloud/tencentcloud-sdk-nodejs/issues/47
3
+
4
+
5
+ # v3.9.2-beta
6
+ - 扩展禁用用户接口为变更用户状态接口
7
+ - 增加修改用户信息接口
8
+
9
+ # v3.5.0
10
+
11
+ - 新增获取云开发用户列表接口
12
+ - 新增停用云开发用户接口
13
+ - 新增批量删除云开发用户接口
14
+
15
+ # v3.4.0
16
+
17
+ - 增加云接入服务
18
+ - 创建函数支持同时创建云接入
19
+ - 优化请求错误栈
20
+
21
+ # v3.3.2
22
+
23
+ - 函数轮询状态时间修复 30s => 300s
24
+
25
+ # v3.3.0
26
+
27
+ - 静态托管支持配置重定向规则
28
+ - 新增删除静态托管自定义域名接口
29
+ - 新增获取静态网站配置接口
30
+ - 新增获取域名配置接口
31
+ - 新增域名配置接口
32
+
33
+ # v3.2.0
34
+
35
+ - 新增静态托管查询文件,配置文档,绑定自定义域名接口
36
+
37
+ # v3.1.1
38
+
39
+ - 优化文件夹删除接口
40
+ - 增加批量上传文件接口
41
+ - 修复静态网站上传单个文件没有回调的问题
42
+
43
+ # v3.0.0
44
+
45
+ - [fix] common 方法改造
46
+ - [add] 支持数据库 CRUD
47
+
48
+ # v2.4.1
49
+
50
+ - [fix] 修复并行调用 createFunction 接口报错的问题
51
+ - [add] 支持通过指定函数路径创建函数
52
+
53
+ # v2.4.0
54
+
55
+ - [add] 新增安全来源 API
56
+ - [fix] 修复云函数环境下取环境变量 bug (入口函数外部调用,未取到报错)
57
+
58
+ # v2.3.4
59
+
60
+ - [fix] 修复函数配置更新问题
61
+
62
+ # v2.3.2
63
+
64
+ - [fix] 修复更新函数 VPC 配置导致无法访问公网的问题
65
+
66
+ # v2.3.1
67
+
68
+ - [fix] 修复创建函数、更新函数代码,代码保护参数遗漏的问题
69
+
70
+ # v2.3.0
71
+
72
+ - [add] 支持文件层
73
+ - [add] 支持查询修改存储安全规则异步任务状态
74
+ - [fix] 文档订正
75
+
76
+ # v2.2.1
77
+
78
+ - [fix] 修复查询所有集合信息接口,集合为空时报错
79
+ - [fix] updateFunctionCode 支持自动安装依赖
80
+
81
+ # v2.2.0
82
+
83
+ - [fix] 修复上传文件夹等接口 `onFileFinish` 参数 TS 定义错误
84
+ - [add] 创建云函数返回 RequestId 响应值
85
+ - [add] 支持 L5 选项
86
+
87
+ # v2.1.0
88
+
89
+ - [add] 支持上传或更新函数时 等待依赖安装完成
90
+ - [add] 支持增量上传函数代码
91
+ - [add] 新增创建自定义登录私钥
92
+ - [add] 新增 HTTP Service API
93
+ - [add] 新增安全规则 API
94
+
95
+ # v2.0.0
96
+
97
+ - [refactor] 重构 storage , function 接口(breaking change)
98
+ - [add] 支持闭环完成环境创建
99
+ - [add] 支持函数操作代码保护
100
+ - [fix] 修复 windows 下上传文件路径 bug
101
+
102
+ # v1.3.0
103
+
104
+ - [add] 支持获取云函数代码下载链接
105
+
106
+ # v1.2.0
107
+
108
+ - [deprecated] env 创建环境功能暂时停用
109
+ - [add] 支持创建云函数自动安装依赖
@@ -0,0 +1,6 @@
1
+ ISC License (ISC)
2
+ Copyright <2019> <Tencent Cloud Base>
3
+
4
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
5
+
6
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -0,0 +1,46 @@
1
+ # cloudbase-manager-node
2
+
3
+ 云开发 manager-node 支持开发者通过接口形式对云开发提供的云函数、数据库、文件存储等资源进行创建、管理、配置等操作。更多源码内容请参见 [cloudbase-manager-node](https://github.com/TencentCloudBase/cloudbase-manager-node)。
4
+
5
+ ## 安装
6
+
7
+ npm
8
+
9
+ ```bash
10
+ npm install @cloudbase/manager-node
11
+ ```
12
+
13
+ yarn
14
+
15
+ ```bash
16
+ yarn add @cloudbase/manager-node
17
+ ```
18
+
19
+ ## 使用
20
+
21
+ 要在你的代码内使用该模块:
22
+
23
+ ```js
24
+ const CloudBase = require('@cloudbase/manager-node')
25
+ ```
26
+
27
+
28
+
29
+ ```js
30
+ import CloudBase from '@cloudbase/manager-node'
31
+ ```
32
+
33
+ 初始化
34
+
35
+ ```js
36
+ const app = CloudBase.init({
37
+ secretId: 'Your SecretId',
38
+ secretKey: 'Your SecretKey',
39
+ token: 'Your SecretToken', // 使用临时凭证需要此字段
40
+ envId: 'Your envId' // 云环境 ID,可在腾讯云-云开发控制台获取
41
+ })
42
+ ```
43
+
44
+ ## 文档
45
+
46
+ 请访问新的[文档站点](https://docs.cloudbase.net/api-reference/manager/node/introduction.html)查看详细的文档。
@@ -0,0 +1,18 @@
1
+ module.exports = {
2
+ roots: ['<rootDir>/test'],
3
+ globals: {
4
+ 'ts-jest': {
5
+ tsConfig: 'tsconfig.test.json'
6
+ }
7
+ },
8
+ transform: {
9
+ '^.+\\.ts?$': 'ts-jest'
10
+ },
11
+ transformIgnorePatterns: ['node_modules'],
12
+ testEnvironment: 'node',
13
+ forceExit: true,
14
+ // https://github.com/facebook/jest/issues/5164
15
+ globalSetup: './test/global-setup-hook.ts',
16
+ // globalTeardown: './test/global-teardown-hook.js',
17
+ coverageReporters: ['json', 'lcov', 'clover', 'text-summary']
18
+ }
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "@cloudbase/manager-node",
3
+ "version": "5.1.0",
4
+ "description": "The node manage service api for cloudbase.",
5
+ "main": "lib/index.js",
6
+ "scripts": {
7
+ "build": "rimraf lib types && npx tsc",
8
+ "test:coverage": "jest --runInBand --detectOpenHandles --coverage --testTimeout=100000",
9
+ "test": "jest --runInBand --detectOpenHandles --testTimeout=100000",
10
+ "lint": "eslint \"./**/*.ts\"",
11
+ "lint:fix": "eslint --fix \"./**/*.ts\"",
12
+ "prepublishOnly": "npm run build",
13
+ "watch": "rimraf lib types && tsc -w",
14
+ "link": "node scripts/link.js",
15
+ "unlink": "node scripts/link.js -d"
16
+ },
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "https://github.com/TencentCloudBase/cloudbase-manager-node.git"
20
+ },
21
+ "author": "Tencent CloudBase Team",
22
+ "license": "ISC",
23
+ "typings": "types/index.d.ts",
24
+ "devDependencies": {
25
+ "@lerna/create-symlink": "^6.4.1",
26
+ "@types/fs-extra": "^11.0.4",
27
+ "@types/jest": "^24.0.18",
28
+ "@types/node": "^12.7.4",
29
+ "@types/node-fetch": "^2.5.0",
30
+ "@types/unzipper": "^0.10.11",
31
+ "@typescript-eslint/eslint-plugin": "^3.7.1",
32
+ "@typescript-eslint/parser": "^3.7.1",
33
+ "eslint": "^7.6.0",
34
+ "eslint-config-alloy": "^3.7.4",
35
+ "husky": "^3.0.5",
36
+ "jest": "^24.9.0",
37
+ "lint-staged": "^9.2.5",
38
+ "rimraf": "^3.0.0",
39
+ "ts-jest": "^24.1.0",
40
+ "typescript": "^5.8.3"
41
+ },
42
+ "dependencies": {
43
+ "@cloudbase/database": "^0.6.2",
44
+ "archiver": "^3.1.1",
45
+ "cos-nodejs-sdk-v5": "^2.14.0",
46
+ "del": "^5.1.0",
47
+ "fs-extra": "^11.3.0",
48
+ "https-proxy-agent": "^5.0.1",
49
+ "lodash": "^4.17.21",
50
+ "make-dir": "^3.0.0",
51
+ "micromatch": "^4.0.2",
52
+ "node-fetch": "^2.6.0",
53
+ "query-string": "^6.8.3",
54
+ "unzipper": "^0.12.3",
55
+ "uuid": "^9.0.0",
56
+ "walkdir": "^0.4.1"
57
+ },
58
+ "husky": {
59
+ "hooks": {
60
+ "pre-commit": "npm run build && git add . && lint-staged"
61
+ }
62
+ },
63
+ "lint-staged": {
64
+ "*.ts": [
65
+ "eslint --fix",
66
+ "git add"
67
+ ]
68
+ },
69
+ "packageManager": "yarn@1.22.22"
70
+ }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Tencent is pleased to support the open source community by making CloudBaseFramework - 云原生一体化部署工具 available.
3
+ *
4
+ * Copyright (C) 2020 THL A29 Limited, a Tencent company. All rights reserved.
5
+ *
6
+ * Please refer to license text included with this package for license details.
7
+ */
8
+
9
+ const os = require('os')
10
+ const fs = require('fs')
11
+ const fse = require('fs-extra')
12
+ const del = require('del')
13
+ const path = require('path')
14
+ const mkdirp = require('mkdirp')
15
+ const { execSync } = require('child_process')
16
+ const { createSymlink } = require('@lerna/create-symlink')
17
+
18
+ const globalNpmPath = execSync('npm root -g', {
19
+ encoding: 'utf-8'
20
+ }).trim()
21
+ // 如果不支持workspace 可以用下面写死
22
+ // const globalNpmPath = '/usr/local/lib/node_modules';
23
+
24
+ async function main() {
25
+ const unlink = process.argv?.[2] === '-d'
26
+ await linkCore(unlink)
27
+ }
28
+
29
+ async function linkCore(unlink = false) {
30
+ const jsonString = await fs.readFileSync(path.join(__dirname, '../package.json'))
31
+ const { name } = JSON.parse(jsonString)
32
+ await link(path.join(process.cwd()), path.join(globalNpmPath, '@cloudbase/cli'), name, unlink)
33
+ }
34
+
35
+ function isSymlink(path) {
36
+ const stats = fs.lstatSync(path)
37
+ return stats.isSymbolicLink()
38
+ }
39
+
40
+ // 将 global tcb cli 工具中的 framework-core link 到 packages/framework-core
41
+ async function link(src, dest, packageName, unlink = false) {
42
+ const prevCwd = process.cwd()
43
+ const destPlugin = path.join(dest, 'node_modules', '@cloudbase')
44
+ // 确保目录存在
45
+ mkdirp.sync(destPlugin)
46
+ // 切换 cwd
47
+ process.chdir(destPlugin)
48
+
49
+ const pathName = packageName.replace('@cloudbase/', '')
50
+ const backupPathName = `${pathName}_backup`
51
+
52
+ if (unlink) {
53
+ if (fs.existsSync(pathName) && !isSymlink(pathName)) {
54
+ console.log(`【失败】${pathName} 不是软链接`, process.cwd())
55
+ return
56
+ }
57
+
58
+ if (fs.existsSync(pathName) && fs.existsSync(backupPathName)) {
59
+ // 删除软链接
60
+ del.sync([pathName])
61
+
62
+ // 恢复备份
63
+ fse.moveSync(backupPathName, pathName)
64
+
65
+ // 删除软链接
66
+ console.log('【成功】删除软链接:', process.cwd())
67
+ } else {
68
+ console.info(
69
+ `不存在 ${pathName} 或 ${backupPathName},请重装安装 npm i @cloudbase/cli -g`,
70
+ process.cwd()
71
+ )
72
+ }
73
+ } else {
74
+ // 创建软链接
75
+
76
+ if (fs.existsSync(pathName)) {
77
+ if (!fs.existsSync(backupPathName)) {
78
+ // 不存在备份则进行备份
79
+
80
+ if (!isSymlink(pathName)) {
81
+ // 不是软链接才备份
82
+ fse.moveSync(pathName, backupPathName)
83
+ }
84
+ } else {
85
+ // 存在备份则直接删除
86
+ del.sync([pathName])
87
+ }
88
+ }
89
+
90
+ await createSymlink(src, pathName, 'junction')
91
+ console.log('【成功】创建软链接:', process.cwd())
92
+ }
93
+
94
+ // 切回源目录
95
+ process.chdir(prevCwd)
96
+ }
97
+
98
+ main()
@@ -0,0 +1,19 @@
1
+ {
2
+ "compileOnSave": true,
3
+ "compilerOptions": {
4
+ "module": "commonjs",
5
+ "target": "ES2017",
6
+ "moduleResolution": "node",
7
+ "outDir": "lib",
8
+ "removeComments": false,
9
+ "types": ["node"],
10
+ "esModuleInterop": true,
11
+ "declaration": true,
12
+ "declarationDir": "./types",
13
+ "experimentalDecorators": true,
14
+ "newLine": "LF",
15
+ "skipLibCheck": true
16
+ },
17
+ "include": ["src/**/*"],
18
+ "exclude": ["node_modules", "test"]
19
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "compileOnSave": true,
3
+ "compilerOptions": {
4
+ "experimentalDecorators": true,
5
+ "module": "commonjs",
6
+ "target": "ES2017",
7
+ "moduleResolution": "node",
8
+ "outDir": "lib",
9
+ "types": ["node", "jest"],
10
+ "esModuleInterop": true
11
+ },
12
+ "include": ["src/**/*", "test/**/*"],
13
+ "exclude": ["node_modules"]
14
+ }
package/lib/env/index.js CHANGED
@@ -23,6 +23,7 @@ class EnvService {
23
23
  this.envId = environment.getEnvId();
24
24
  this.envType = environment.getEnvType();
25
25
  this.cloudService = new utils_1.CloudService(environment.cloudBaseContext, 'tcb', '2018-06-08');
26
+ this.tcbService = new utils_1.CloudService(environment.cloudBaseContext, 'tcb', '2018-06-08');
26
27
  this.commonService = environment.getCommonService('lowcode', '2021-01-08');
27
28
  this.billingService = new billing_1.BillingService(environment.cloudBaseContext);
28
29
  }
@@ -168,7 +169,7 @@ class EnvService {
168
169
  }
169
170
  /**
170
171
  * 拉取登录配置列表
171
- * @deprecated 请使用 getLoginConfigListV2 代替
172
+ * @deprecated 请使用 getLoginConfig 代替
172
173
  * @returns {Promise<IEnvLoginConfigRes>}
173
174
  */
174
175
  async getLoginConfigList() {
@@ -178,6 +179,7 @@ class EnvService {
178
179
  }
179
180
  /**
180
181
  * 拉取登录配置列表
182
+ * @deprecated 该方法已废弃,请使用 getLoginConfig 代替
181
183
  */
182
184
  async getLoginConfigListV2() {
183
185
  return this.commonService.call({
@@ -187,8 +189,21 @@ class EnvService {
187
189
  }
188
190
  });
189
191
  }
192
+ /**
193
+ * 获取登录策略配置
194
+ * 查询指定云开发环境的登录策略配置,包括手机号短信登录、邮箱登录、
195
+ * 用户名密码登录和匿名登录方式的开启状态,同时包含短信验证码发送通道、
196
+ * MFA 多因子认证和密码的更新策略。
197
+ * @returns {Promise<IDescribeLoginConfigRes>}
198
+ */
199
+ async getLoginConfig() {
200
+ return this.tcbService.request('DescribeLoginConfig', {
201
+ EnvId: this.envId
202
+ });
203
+ }
190
204
  /**
191
205
  * 创建登录方式
206
+ * @deprecated 该方法已废弃
192
207
  * 'WECHAT-OPEN':微信开放平台
193
208
  * 'WECHAT-PUBLIC':微信公众平台
194
209
  * @param {('WECHAT-OPEN' | 'WECHAT-PUBLIC')} platform 'WECHAT-OPEN' | 'WECHAT-PUBLIC'
@@ -212,6 +227,7 @@ class EnvService {
212
227
  }
213
228
  /**
214
229
  * 更新登录方式配置
230
+ * @deprecated 该方法已废弃,请使用 modifyLoginConfig 代替
215
231
  * @param {string} configId 配置 Id,从配置列表中获取
216
232
  * @param {string} [status='ENABLE'] 是否启用 'ENABLE', 'DISABLE' ,可选
217
233
  * @param {string} [appId=''] 微信 appId,可选
@@ -240,6 +256,7 @@ class EnvService {
240
256
  }
241
257
  /**
242
258
  * 更新登录方式配置
259
+ * @deprecated 该方法已废弃,请使用 modifyLoginConfig 代替
243
260
  * @param {IModifyLoginStrategy} options
244
261
  * @returns {Promise<boolean>}
245
262
  */
@@ -249,6 +266,123 @@ class EnvService {
249
266
  Param: options
250
267
  });
251
268
  }
269
+ /**
270
+ * 修改登录策略配置
271
+ * 修改指定云开发环境的登录策略配置。支持开启或关闭手机号短信登录、邮箱登录、
272
+ * 用户名密码登录和匿名登录,同时可配置短信验证码发送通道、MFA 多因子认证和密码更新策略。
273
+ * 修改后立即生效,影响该环境下所有终端用户的登录行为。
274
+ * @param {IModifyLoginConfigParams} options 修改参数
275
+ * @returns {Promise<IModifyLoginConfigRes>}
276
+ */
277
+ async modifyLoginConfig(options) {
278
+ return this.tcbService.request('ModifyLoginConfig', Object.assign({ EnvId: this.envId }, options));
279
+ }
280
+ /**
281
+ * 查询应用客户端详情
282
+ * 获取指定云开发环境下某个客户端的配置信息,包括 OAuth 凭证、Token 有效期、会话控制策略等。
283
+ * 当客户端 ID 等于环境 ID 时,返回该环境的默认客户端配置。
284
+ * @param {string} Id 客户端唯一标识符(Client ID),一般使用环境 ID
285
+ * @returns {Promise<IDescribeClientRes>}
286
+ */
287
+ async describeClient(Id) {
288
+ return this.tcbService.request('DescribeClient', {
289
+ EnvId: this.envId,
290
+ Id
291
+ });
292
+ }
293
+ /**
294
+ * 修改应用客户端配置
295
+ * 采用增量更新策略,仅更新请求中传入的非空字段,未传入的字段保持原值不变。
296
+ * 支持修改 Token 有效期、会话控制策略等配置。
297
+ * 当客户端 ID 等于环境 ID 且客户端尚未创建时,将自动创建默认客户端配置。
298
+ * @param {IModifyClientParams} options 修改参数
299
+ * @returns {Promise<IModifyClientRes>}
300
+ */
301
+ async modifyClient(options) {
302
+ return this.tcbService.request('ModifyClient', Object.assign({ EnvId: this.envId }, options));
303
+ }
304
+ /**
305
+ * 获取三方认证源列表
306
+ * 查询指定云开发环境下的身份认证源列表,包括第三方登录(OAuth、OIDC、SAML)、
307
+ * 微信小程序登录、自定义登录和邮箱登录等。
308
+ * 若自定义登录或邮箱登录的身份源尚未创建,接口会自动追加一个默认关闭状态的记录。
309
+ * @returns {Promise<IGetProvidersRes>}
310
+ */
311
+ async getProviders() {
312
+ return this.tcbService.request('GetProviders', {
313
+ EnvId: this.envId
314
+ });
315
+ }
316
+ /**
317
+ * 修改身份认证源
318
+ * 更新已有身份认证源的配置信息,支持修改基本信息、协议连接配置、登录行为控制及启用状态。
319
+ * 采用增量更新策略,仅更新传入的字段,未传入的字段保持原值。
320
+ * OIDC 类型修改 Issuer 后将自动通过 Discovery 重新获取端点配置。
321
+ * 若 CUSTOM 或 EMAIL 身份源尚不存在,调用时将自动创建。
322
+ * @param {IModifyProviderParams} options 修改参数
323
+ * @returns {Promise<IModifyProviderRes>}
324
+ */
325
+ async modifyProvider(options) {
326
+ return this.tcbService.request('ModifyProvider', Object.assign({ EnvId: this.envId }, options));
327
+ }
328
+ /**
329
+ * 删除第三方认证源
330
+ * @param {string} Id 认证源 ID,2~32 位小写英文字母或数字,如 'github'
331
+ * @returns {Promise<IDeleteProviderRes>}
332
+ */
333
+ async deleteProvider(Id) {
334
+ return this.tcbService.request('DeleteProvider', {
335
+ EnvId: this.envId,
336
+ Id
337
+ });
338
+ }
339
+ /**
340
+ * 添加身份认证源
341
+ * 在指定云开发环境下创建新的身份认证源,支持 OAuth 2.0、OIDC、SAML 2.0 等标准协议,
342
+ * 以及自定义登录和邮箱登录等多种认证方式。若身份源 ID 已存在将返回错误。
343
+ * 限制:一个环境最大可允许加入 20 个认证源。
344
+ * @param {IAddProviderParams} options 添加参数
345
+ * @returns {Promise<IAddProviderRes>}
346
+ */
347
+ async addProvider(options) {
348
+ return this.tcbService.request('AddProvider', Object.assign({ EnvId: this.envId }, options));
349
+ }
350
+ /**
351
+ * 创建 API Key
352
+ * 在指定云开发环境下创建 API Key 访问凭证。支持两种类型:
353
+ * - api_key:服务端管理员访问凭证,可设置有效期
354
+ * - publish_key:前端匿名访问凭证,固定有效期
355
+ * 创建成功后返回 API Key 明文 Token,该值仅在创建时返回一次,请妥善保存。
356
+ * @param {ICreateApiKeyParams} options 创建参数
357
+ * @returns {Promise<ICreateApiKeyRes>}
358
+ */
359
+ async createApiKey(options) {
360
+ return this.tcbService.request('CreateApiKey', Object.assign({ EnvId: this.envId }, options));
361
+ }
362
+ /**
363
+ * 删除 API Key
364
+ * 删除指定云开发环境下的某个 API Key 服务端访问凭证。
365
+ * 删除后该 Key 对应的 Token 将被吊销,已使用该 Key 发起的请求将失败。
366
+ * 该操作具有幂等性,若指定的 API Key 不存在则直接返回成功。
367
+ * @param {string} KeyId 密钥唯一标识符,可通过查询密钥列表接口获取
368
+ * @returns {Promise<IDeleteApiKeyRes>}
369
+ */
370
+ async deleteApiKey(KeyId) {
371
+ return this.tcbService.request('DeleteApiKey', {
372
+ EnvId: this.envId,
373
+ KeyId
374
+ });
375
+ }
376
+ /**
377
+ * 查询 API Key 列表
378
+ * 分页查询指定云开发环境下的 API Key 访问凭证列表,支持按类型过滤。
379
+ * api_key 类型的令牌值脱敏处理,publish_key 类型返回完整明文。
380
+ * @param {IDescribeApiKeyListParams} options 查询参数
381
+ * @returns {Promise<IDescribeApiKeyListRes>}
382
+ */
383
+ async describeApiKeyList(options) {
384
+ return this.tcbService.request('DescribeApiKeyList', Object.assign({ EnvId: this.envId }, options));
385
+ }
252
386
  // 创建自定义登录私钥
253
387
  async createCustomLoginKeys() {
254
388
  return this.cloudService.request('CreateCustomLoginKeys', {