export interface Credential { secretId: string; secretKey: string; token?: string; accessTokenExpired?: number; expired?: number; authTime?: number; refreshToken?: string; uin?: string; hash?: string; envId?: string; /** 认证来源,用于过期时决定刷新策略 */ authSource?: 'web' | 'secret' | 'api_key'; /** API Key 原始值(仅 api_key 来源,用于过期后重新换取) */ apiKey?: string; } export interface WebAuthCredential { tmpSecretId: string; tmpSecretKey: string; tmpToken: string; tmpExpired: number; expired: number; authTime: number; refreshToken: string; uin?: string; hash?: string; envId?: string; /** 认证来源,用于过期时决定刷新策略 */ authSource?: 'web' | 'secret' | 'api_key'; /** API Key 原始值(仅 api_key 来源,用于过期后重新换取) */ apiKey?: string; } export interface RequestConfig { proxy?: string; timeout?: number; } export interface IFunctionVPC { subnetId: string; vpcId: string; } export interface ICloudFunctionConfig { timeout?: number; envVariables?: Record; runtime?: string; vpc?: IFunctionVPC; installDependency?: boolean; l5?: boolean; } export interface ICloudFunctionTrigger { name: string; type: string; config: string; } export interface ICloudFunction { name: string; config?: ICloudFunctionConfig; triggers?: ICloudFunctionTrigger[]; params?: Record; handler?: string; ignore?: string | string[]; timeout?: number; envVariables?: Record; runtime?: string; vpc?: IFunctionVPC; l5?: boolean; installDependency?: boolean; isWaitInstall?: boolean; } export interface ICloudBaseConfig { envId: string; region?: string; version?: string; functionRoot?: string; functionDefaultConfig?: ICloudFunction; functions?: ICloudFunction[]; } export type ICloudBaseEnvValue = string | number | boolean; export type ICloudFunctionType = 'Event' | 'HTTP'; export type ICloudFunctionBuildStrategy = 'zip' | 'cloud' | 'local' | 'image'; export type ICloudBaseFunctionImageType = 'enterprise' | 'personal'; /** * 声明式部署的函数配置。独立于具体 Schema 版本,新增 Schema 字段时横向扩展此类型。 * 旧的 ICloudFunction 保持不变,避免影响既有调用方。 */ export interface ICloudBaseDeclarativeFunctionConfig extends ICloudFunctionConfig { type?: ICloudFunctionType; ignore?: string | string[]; buildStrategy?: ICloudFunctionBuildStrategy; public?: boolean; gatewayPath?: string; imageConfig?: ICloudBaseFunctionImageConfig; } /** * 镜像构建目标。buildStrategy=local(本地 Docker 构建)或 cloud(云端流水线构建)时使用, * 描述"如何构建出镜像"。字段与 manager-node的 IImageBuildTarget 保持一一对应。 */ export interface ICloudBaseFunctionImageBuildConfig { /** 构建上下文目录,默认取函数目录 */ cwd?: string; /** Dockerfile 相对构建上下文的路径,默认 Dockerfile */ dockerfile?: string; /** * @deprecated 企业版 TCR 实例 ID 请统一配置在 imageConfig.registryId。 * 该字段仅为兼容旧配置保留,仅在 imageConfig.registryId 未配置时兜底。 */ registryId?: string; /** 目标镜像命名空间;个人版 cloud 构建必填,推荐使用 {{env.TCB_TCR_NAMESPACE}} */ namespace?: string; /** * 目标镜像仓库路径。 * personal cloud 可省略并默认使用函数名;enterprise cloud 在自动实例发现完成前需提供完整地址; * local 策略当前需提供可直接 push 的完整仓库地址。 */ repository?: string; /** local 策略的目标镜像 tag;cloud 策略由平台生成,不接受自定义 tag */ tag?: string; /** 目标平台,默认 linux/amd64 */ platform?: string; /** 构建参数,不得写入敏感值 */ buildArgs?: Record; /** 仅用于 personal + cloud 的 TCR 推送凭证;local 使用本机 Docker 登录态 */ registryCredential?: { username: string; password: string; }; /** 禁用 Docker 构建缓存,local/cloud 构建时映射为 docker build 的 --no-cache */ forceBuild?: boolean; } export interface ICloudBaseFunctionImageConfig { /** 镜像类型;省略时有 registryId 推断为 enterprise,否则推断为 personal */ imageType?: ICloudBaseFunctionImageType; /** 镜像地址。buildStrategy=image 时必填;local/cloud 由构建产出 */ imageUri?: string; /** 企业版 TCR 实例 ID 的规范配置位置;个人版镜像不得配置 */ registryId?: string; /** 本地/云端构建目标(buildStrategy=local/cloud 时使用) */ build?: ICloudBaseFunctionImageBuildConfig; /** * 本地 Docker 能力检查失败时的期望处理方式,默认 error。 * cloud 为后续自动降级预留;当前部署流程仍会报告检查失败,不会自动切换策略。 */ localFallback?: 'cloud' | 'error'; entryPoint?: string; command?: string; args?: string; containerImageAccelerate?: boolean; imagePort?: number; commandList?: string[]; argsList?: string[]; } export interface ICloudBaseFunctionProtocolParams { wsParams?: { idleTimeOut?: number; }; } export interface ICloudBaseFunctionInstanceConcurrencyConfig { dynamicEnabled?: string; maxConcurrency?: number; } export interface ICloudBaseDeclarativeFunction extends ICloudFunction { type?: ICloudFunctionType; config?: ICloudBaseDeclarativeFunctionConfig; description?: string; entry?: string; memorySize?: number; dir?: string; protocolType?: string; protocolParams?: ICloudBaseFunctionProtocolParams; instanceConcurrencyConfig?: ICloudBaseFunctionInstanceConcurrencyConfig; imageConfig?: ICloudBaseFunctionImageConfig; buildStrategy?: ICloudFunctionBuildStrategy; public?: boolean; gatewayPath?: string; codeSecret?: string; } export interface ICloudBaseHostingConfig { name: string; root?: string; framework?: string; installCommand?: string; buildCommand?: string; outputDir?: string; deployPath?: string; envVariables?: Record; ignore?: string | string[]; /** 多页应用(MPA)入口文件列表,相对于项目根目录(root),默认 ["index.html"] */ entryFile?: string[]; /** 发布后校验产物可访问性,默认 false */ verify?: boolean; /** 发布失败时自动回滚到上一版本,默认 false */ safe?: boolean; /** 上传后删除远端 outputDir 之外的旧版本文件,默认 false */ prune?: boolean; } export interface ICloudBaseDatabaseConfig { type: string; migrations?: string; } export interface ICloudBaseGatewayQPSPerClient { /** 客户端维度限频标识:UserID(云开发用户 ID/微信 openid)或 ClientIP。无 UserID 信息的请求不限频 */ limitBy?: 'UserID' | 'ClientIP'; /** 限制 QPS 值(每秒请求次数),0-30 */ limitValue?: number; } export interface ICloudBaseGatewayQPSPolicy { /** QPS 限额总量(每秒请求次数),100-100000 */ qpsTotal?: number; /** 客户端限频配置 */ qpsPerClient?: ICloudBaseGatewayQPSPerClient; } export interface ICloudBaseGatewayPathRewrite { /** 路径前缀重写(与 staticStorePrefix 只能填一个) */ prefix?: string; /** 静态托管路径前缀重写,存量兼容(与 prefix 只能填一个) */ staticStorePrefix?: string; } export interface ICloudBaseGatewayRoute { domain?: string; path: string; target: string; pathRewrite?: ICloudBaseGatewayPathRewrite; enablePathTransmission?: boolean; enableAuth?: boolean; /** QPS 限频策略 */ qpsPolicy?: ICloudBaseGatewayQPSPolicy; } export interface ICloudBaseGatewayConfig { routes?: ICloudBaseGatewayRoute[]; } export interface ICloudBaseDeclarativeEnvironmentOverride { envId?: string; region?: string; functionRoot?: string; functionDefaultConfig?: ICloudBaseDeclarativeFunctionConfig; functions?: ICloudBaseDeclarativeFunction[]; hosting?: ICloudBaseHostingConfig[]; database?: ICloudBaseDatabaseConfig; gateway?: ICloudBaseGatewayConfig; [key: string]: any; } /** * 面向声明式部署与校验的可扩展项目配置。 * 配置来自用户文件,envId 等字段在 Schema 校验前可能缺失,因此不复用旧的强约束 ICloudBaseConfig。 */ export interface ICloudBaseDeclarativeConfig { $schema?: string; version?: string; envId?: string; region?: string; functionRoot?: string; functionDefaultConfig?: ICloudBaseDeclarativeFunctionConfig; functions?: ICloudBaseDeclarativeFunction[]; hosting?: ICloudBaseHostingConfig[]; database?: ICloudBaseDatabaseConfig; gateway?: ICloudBaseGatewayConfig; envOverrides?: Record; [key: string]: any; }