Skip to content

引入

ts
import {
  addOrUpdateRainbowKV,
  addRainbowKV,
  updateRainbowKV,
  createRainbowPublishJob,
  publishRainbowTask,
  closeRainbowTask,
  updateRainbowKVAndPublish,
  processRainbowReleaseTask,
  queryGroupInfo,
  updateRainbowConfigAndCreateTask,
  fetchRainbowConfig,
  fetchRainbowConfigFromSdk
} from 't-comm';

// 不支持 tree-shaking 的项目
import {
  addOrUpdateRainbowKV,
  addRainbowKV,
  updateRainbowKV,
  createRainbowPublishJob,
  publishRainbowTask,
  closeRainbowTask,
  updateRainbowKVAndPublish,
  processRainbowReleaseTask,
  queryGroupInfo,
  updateRainbowConfigAndCreateTask,
  fetchRainbowConfig,
  fetchRainbowConfigFromSdk
} from 't-comm/lib/rainbow/index';

// 只支持 ESM 的项目
import {
  addOrUpdateRainbowKV,
  addRainbowKV,
  updateRainbowKV,
  createRainbowPublishJob,
  publishRainbowTask,
  closeRainbowTask,
  updateRainbowKVAndPublish,
  processRainbowReleaseTask,
  queryGroupInfo,
  updateRainbowConfigAndCreateTask,
  fetchRainbowConfig,
  fetchRainbowConfigFromSdk
} from 't-comm/es/rainbow/index';

addOrUpdateRainbowKV(config)

描述:添加或更新配置

参数

参数名类型描述
configobject配置信息
config.keyValueobject配置对象
config.keyValue.keystring配置的key
config.keyValue.valuestring配置的value
config.valueTypenumber配置类型,1: NUMBER, 2: STRING, 3: TEXT, 4: JSON, 5: XML, 18: 日期, 20: yaml
config.secretInfoobject密钥信息
config.secretInfo.appIdstring项目Id
config.secretInfo.userIdstring用户Id
config.secretInfo.secretKeystring密钥
config.secretInfo.envNamestring配置环境
config.secretInfo.groupNamestring配置组

返回: Promise.<object>

请求Promise

示例

typescript
addOrUpdateRainbowKV({
  keyValue: {
    key: 'theKey',
    value: 'theValue',
  },
  valueType: 2,
  secretInfo: {
    appId: 'xxx',
    userId: 'xxx',
    secretKey: 'xxx',
    envName: 'prod',
    groupName: 'xxx',
  }
}).then(() => {

})

addRainbowKV(config)

描述:增加配置

参数

参数名类型描述
configobject配置信息
config.keyValueobject配置对象
config.keyValue.keystring配置的key
config.keyValue.valuestring配置的value
config.valueTypenumber配置类型,1: NUMBER, 2: STRING, 3: TEXT, 4: JSON, 5: XML, 18: 日期, 20: yaml
config.secretInfoobject密钥信息
config.secretInfo.appIdstring项目Id
config.secretInfo.userIdstring用户Id
config.secretInfo.secretKeystring密钥
config.secretInfo.envNamestring配置环境
config.secretInfo.groupNamestring配置组

返回: Promise.<object>

请求Promise

示例

typescript
addRainbowKV({
  keyValue: {
    key: 'theKey',
    value: 'theValue',
  },
  valueType: 2,
  secretInfo: {
    appId: 'xxx',
    userId: 'xxx',
    secretKey: 'xxx',
    envName: 'prod',
    groupName: 'xxx',
  }
}).then(() => {

})

updateRainbowKV(config)

描述:修改配置

参数

参数名类型描述
configobject配置信息
config.keyValueobject配置对象
config.keyValue.keystring配置的key
config.keyValue.valuestring配置的value
config.valueTypenumber配置类型,1: NUMBER, 2: STRING, 3: TEXT, 4: JSON, 5: XML, 18: 日期, 20: yaml
config.secretInfoobject密钥信息
config.secretInfo.appIdstring项目Id
config.secretInfo.userIdstring用户Id
config.secretInfo.secretKeystring密钥
config.secretInfo.envNamestring配置环境
config.secretInfo.groupNamestring配置组

返回: Promise.<object>

请求Promise

示例

typescript
updateRainbowKV({
  keyValue: {
    key: 'theKey',
    value: 'theValue',
  },
  valueType: 2,
  secretInfo: {
    appId: 'xxx',
    userId: 'xxx',
    secretKey: 'xxx',
    envName: 'prod',
    groupName: 'xxx',
  }
}).then(() => {

})

createRainbowPublishJob(config)

描述:创建发布任务

参数

参数名类型描述
configobject配置信息
config.versionNamestring版本信息
config.secretInfoobject密钥信息
config.secretInfo.appIdstring项目Id
config.secretInfo.userIdstring用户Id
config.secretInfo.secretKeystring密钥
config.secretInfo.envNamestring配置环境
config.secretInfo.groupNamestring配置组

返回: Promise.<object>

请求Promise

示例

typescript
createRainbowPublishJob({
  versionName: 'version',
  secretInfo: {
    appId: 'xxx',
    userId: 'xxx',
    secretKey: 'xxx',
    envName: 'prod',
    groupName: 'xxx',
  }
}).then(() => {

})

publishRainbowTask(config)

描述:发布任务

参数

参数名类型描述
configobject配置信息
config.taskIdstring任务Id
config.secretInfoobject密钥信息
config.secretInfo.appIdstring项目Id
config.secretInfo.userIdstring用户Id
config.secretInfo.secretKeystring密钥
config.secretInfo.envNamestring配置环境
config.secretInfo.groupNamestring配置组

返回: Promise.<object>

请求Promise

示例

typescript
publishRainbowTask({
  taskId: 'taskId',
  secretInfo: {
    appId: 'xxx',
    userId: 'xxx',
    secretKey: 'xxx',
    envName: 'prod',
    groupName: 'xxx',
  }
}).then(() => {

})

closeRainbowTask(config)

描述:关闭任务

参数

参数名类型描述
configobject配置信息
config.taskIdstring任务Id
config.secretInfoobject密钥信息
config.secretInfo.appIdstring项目Id
config.secretInfo.userIdstring用户Id
config.secretInfo.secretKeystring密钥
config.secretInfo.envNamestring配置环境
config.secretInfo.groupNamestring配置组

返回: Promise.<object>

请求Promise

示例

typescript
closeRainbowTask({
  taskId: 'taskId',
  secretInfo: {
    appId: 'xxx',
    userId: 'xxx',
    secretKey: 'xxx',
    envName: 'prod',
    groupName: 'xxx',
  }
}).then(() => {

})

updateRainbowKVAndPublish(config)

描述:更新或新增值并发布

参数

参数名类型描述
configobject配置信息
config.keystring配置key
config.valuestring配置value
config.valueTypenumber配置类型,1: NUMBER, 2: STRING, 3: TEXT, 4: JSON, 5: XML, 18: 日期, 20: yaml
config.secretInfoobject密钥信息
config.secretInfo.appIdstring项目Id
config.secretInfo.userIdstring用户Id
config.secretInfo.secretKeystring密钥
config.secretInfo.envNamestring配置环境
config.secretInfo.groupNamestring配置组

返回: Promise.<object>

请求Promise

示例

typescript
updateRainbowKVAndPublish({
  key: 'key',
  value: 'value',
  valueType: 2,
  secretInfo: {
    appId: 'xxx',
    userId: 'xxx',
    secretKey: 'xxx',
    envName: 'prod',
    groupName: 'xxx',
  }
}).then(() => {

})

processRainbowReleaseTask(config)

描述:处理彩虹配置发布任务

参数

参数名类型描述
configobject配置信息
config.taskIdstring任务ID
config.secretInfoobject密钥信息
config.secretInfo.appIdstring项目Id
config.secretInfo.userIdstring用户Id
config.secretInfo.secretKeystring密钥
config.secretInfo.envNamestring配置环境
config.secretInfo.groupNamestring配置组
config.versionNamestring版本名称

返回: Promise.<object>

请求Promise

示例

typescript
processRainbowReleaseTask({
  taskId: 'taskId',
  secretInfo: {
    appId: 'xxx',
    userId: 'xxx',
    secretKey: 'xxx',
    envName: 'prod',
    groupName: 'xxx',
  },
  versionName: 'version'
}).then(() => {

})

queryGroupInfo(config)

描述:查询分组配置

参数

参数名类型描述
configobject配置信息
config.secretInfoobject密钥信息
config.secretInfo.appIdstring项目Id
config.secretInfo.userIdstring用户Id
config.secretInfo.secretKeystring密钥
config.secretInfo.envNamestring配置环境
config.secretInfo.groupNamestring配置组

返回: Promise.<Array<object>>

分组配置

示例

typescript
queryGroupInfo({
  secretInfo: {
    appId: 'xxx',
    userId: 'xxx',
    secretKey: 'xxx',
    envName: 'prod',
    groupName: 'xxx',
  }
}).then(() => {

})

updateRainbowConfigAndCreateTask(config)

描述:更新彩虹配置并创建发布任务

参数

参数名类型描述
configobject配置信息
config.keystring配置key
config.valuestring配置value
config.valueTypenumber配置类型,1: NUMBER, 2: STRING, 3: TEXT, 4: JSON, 5: XML, 18: 日期, 20: yaml
config.secretInfoobject密钥信息
config.secretInfo.appIdstring项目Id
config.secretInfo.userIdstring用户Id
config.secretInfo.secretKeystring密钥
config.secretInfo.envNamestring配置环境
config.secretInfo.groupNamestring配置组
config.creatorstring创建者
config.approversstring审批者

返回: Promise.<{taskRes: any, versionName: string}>

发布任务结果和版本名称

示例

typescript
updateRainbowConfigAndCreateTask({
  key: 'configKey',
  value: 'configValue',
  valueType: 2,
  secretInfo: {
    appId: 'xxx',
    userId: 'xxx',
    secretKey: 'xxx',
    envName: 'prod',
    groupName: 'xxx',
  },
  creator: 'creatorName',
  approvers: 'approverName'
}).then(({ taskRes, versionName }) => {
  console.log('任务创建成功:', taskRes);
  console.log('版本名称:', versionName);
})

fetchRainbowConfig(key, secretInfo)

描述:拉取七彩石配置

参数

参数名类型描述
keyString七彩石的key
secretInfoobject密钥信息
secretInfo.appIdstring项目Id
secretInfo.envNamestring环境
secretInfo.groupNamestring组名称

返回: Promise.<object>

请求Promise

示例

typescript
fetchRainbowConfig('test', {
  appId: 'xx',
  envName: 'prod',
  groupName: 'robot',
}).then((resp) => {
  console.log(resp)
});

fetchRainbowConfigFromSdk(config)

描述:通过七彩石 SDK 拉取配置(适用于 Node.js 服务端) 支持 v3Get 和 v3GetGroup 两种模式,内置内存缓存和文件缓存

参数

参数名类型默认值描述
configobject配置信息
config.secretInfoISecretInfo密钥信息,包含 appId、userId、secretKey、groupName、envName
config.sdkany七彩石 SDK 实例(需包含 Rainbow、AccessType、AddrType)
config.keystring要获取的配置 key
[config.initOptions]Record.<string, any>Rainbow 初始化额外选项
[config.isFetchGroup]booleanfalse是否使用 v3GetGroup 获取整组配置
[config.tryJsonParse]booleantrue是否尝试 JSON.parse 解析返回值
[config.rainbow]any外部传入的 Rainbow 实例(传入后不会自动 exit)

返回: Promise.<any>

配置值

示例

ts
import * as sdk from 'rainbow-sdk';

const config = await fetchRainbowConfigFromSdk({
  secretInfo: {
    appId: 'xxx',
    userId: 'xxx',
    secretKey: 'xxx',
    groupName: 'default',
    envName: 'prod',
  },
  sdk,
  key: 'my_config_key',
});