Source: core/types.js

/**
 * SDK 初始化选项
 * @typedef InitOptions
 * @memberof BaaS
 * @property {boolean} [autoLogin] - 是否自动登录
 * @property {string} [logLevel] - 日志输出等级
 * @property {string} [host] - 接口域名
 * @property {string} [ws_host] - WebSocket 域名
 * @property {string} [env] - 开发环境 ID
 */

/**
 * 检测版本选项
 * @typedef CheckVersionOptions
 * @memberof BaaS
 * @property {string} platform - 需要检测的平台
 * @property {function} onSuccess - 接口请求成功时回调
 * @property {function} onError - 接口请求失败时的回调
 */

/**
 * 模块
 *
 * @typedef {Function} Module
 * @param {any} BaaS - BaaS 对象
 * @memberof BaaS
 */

/**
 * 登录/注册参数(用户名 + 密码)
 * @typedef AuthWithUsernameOptions
 * @memberof BaaS
 * @property username {string} 用户名
 * @property password {string} 密码
 */

/**
 * 登录/注册参数(邮箱 + 密码)
 * @typedef AuthWithEmailOptions
 * @memberof BaaS
 * @property email {string} 邮箱
 * @property password {string} 密码
 */

/**
 * 登录/注册参数(手机号码 + 密码)
 * @typedef AuthWithPhoneOptions
 * @memberof BaaS
 * @property phone {string} 手机号码
 * @property password {string} 密码
 */

/**
 * 登录可选参数
 * @typedef {Object} LoginOptions
 * @memberof BaaS
 * @property {boolean} [createUser] 是否创建用户
 * @property {'overwrite'|'setnx'|'false'} [syncUserProfile]
 *   是否同步第一层级用户信息,默认为 'setnx'。值说明:
 *     'overwrite' - 强制更新
 *     'setnx' - 仅当字段从未被赋值时才更新
 *     'false' - 不更新
 */

/**
 * 登录可选参数
 * @typedef {Object} handleUserInfoOptions
 * @memberof BaaS
 * @property {BaaS.UserInfoDetail} options.detail 用户信息
 * @property {boolean} [createUser] 是否创建用户
 * @property {'overwrite'|'setnx'|'false'} [syncUserProfile]
 *   是否同步第一层级用户信息,默认为 'setnx'。值说明:
 *     'overwrite' - 强制更新
 *     'setnx' - 仅当字段从未被赋值时才更新
 *     'false' - 不更新
 */

/**
 * 关联账号可选参数
 * @typedef {Object} LinkOptions
 * @memberof BaaS
 * @property {'overwrite'|'setnx'|'false'} [syncUserProfile]
 *   是否同步第一层级用户信息,默认为 'setnx'。值说明:
 *     'overwrite' - 强制更新
 *     'setnx' - 仅当字段从未被赋值时才更新
 *     'false' - 不更新
 */

/**
 * 关联微信账号可选参数
 * @typedef {Object} LinkWechatOptions
 * @memberof BaaS
 * @property {boolean} [withUnionID] 是否使用 unionid 进行关联
 * @property {'overwrite'|'setnx'|'false'} [syncUserProfile]
 *   是否同步第一层级用户信息,默认为 'setnx'。值说明:
 *     'overwrite' - 强制更新
 *     'setnx' - 仅当字段从未被赋值时才更新
 *     'false' - 不更新
 */

/**
 * 用户信息
 * @typedef {Object} UserInfoDetail
 * @memberof BaaS
 * @property {Object} userInfo 用户信息对象,不包含 openid 等敏感信息
 * @property {string} rawData 不包括敏感信息的原始数据字符串,用于计算签名
 * @property {string} signature 使用 sha1( rawData + sessionkey ) 得到字符串,用于校验用户信息
 * @property {string} encryptedData 包括敏感数据在内的完整用户信息的加密数据
 * @property {string} iv 加密算法的初始向量
 */

/**
 * 强制登录的授权参数
 * @typedef {Object} AuthData
 * @memberof BaaS
 * @property {BaaS.UserInfoDetail} detail 用户信息
 */

/**
 * 文件操作返回结果
 * @typedef {Object} FileOperationResult
 * @memberof BaaS
 * @property {number} created_at 创建时间 (格式为 unix 时间戳)
 * @property {string} path 路径
 * @property {number} created_by 创建者 ID
 * @property {string} mime_type mime_type 类型
 * @property {string} media_type 媒体类型
 * @property {number} size 文件大小
 * @property {string} name 文件名
 * @property {string} status 文件状态
 * @property {string} reference 引用
 * @property {string} cdn_path cdn 中保存的路径
 * @property {number} updated_at Integer	更新时间 (格式为 unix 时间戳)
 * @property {string[]} categories 文件所属类别
 * @property {string} _id 本条记录 ID
 */

/**
 * 文件参数(文件上传)
 * @typedef FileParams
 * @memberof BaaS
 * @property {string} [filePath] 本地资源路径(非 Web)
 * @property {object} [fileObj] 本地资源路径(Web)
 * @property {'image'|'video'|'audio'} [fileType] 本地资源路径(Alipay)
 */

/**
 * 文件元信息(文件上传)
 * @typedef FileMeta
 * @memberof BaaS
 * @property {string} [categoryID] 文件分类 ID
 * @property {string} [categoryName] 要上传的文件分类名
 */

/**
 * 视频截图参数
 * @typedef VideoSnapshotParams
 * @memberof BaaS
 * @property {string} source 视频文件的 id
 * @property {string} save_as	截图保存的文件名
 * @property {string} point	截图时间格式,格式:HH:MM:SS
 * @property {string} [category_id]	文件所属类别 ID
 * @property {boolean} [random_file_link]	是否使用随机字符串作为文件的下载地址,不随机可能会覆盖之前的文件,默认为 true
 * @property {string} [size] 截图尺寸,格式为 宽 x 高,默认是视频尺寸
 * @property {string} [format] 截sf格式,可选值为 jpg,png, webp, 默认根据 save_as 的后缀生成
 */

/**
 * 视频拼接参数
 * @typedef VideoConcatParams
 * @memberof BaaS
 * @property {string[]} m3u8s 视频件的 id 列表,按提交的顺序进行拼接
 * @property {string} save_as	视频保存的文件名
 * @property {string} [category_id]	文件所属类别 ID
 * @property {boolean} [random_file_link]	是否使用随机字符串作为文件的下载地址,不随机可能会覆盖之前的文件,默认为 true
 */

/**
 * 视频剪辑参数
 * @typedef VideoClipParams
 * @memberof BaaS
 * @property {string} m3u8s 视频文件的 id 列表,按提交的顺序进行拼接
 * @property {string} save_as	保存的文件名
 * @property {string} [category_id]	文件所属类别 ID
 * @property {boolean} [random_file_link]	是否使用随机字符串作为文件的下载地址,不随机可能会覆盖之前的文件,默认为 true
 * @property {string[]} [include]	包含某段内容的开始结束时间,单位是秒。当 index 为 false 时,为开始结束分片序号
 * @property {string[]} [exclude]	不包含某段内容的开始结束时间,单位是秒。当 index 为 false 时,为开始结束分片序号
 * @property {boolean} [index] include 或者 exclude 中的值是否为 ts 分片序号,默认为 false
 */


/**
 * M3U8 时长和分片信息参数
 * @typedef VideoMetaParams
 * @memberof BaaS
 * @property {string} m3u8s 视频文件的 id 列表,按提交的顺序进行拼接
 */

/**
 * 视频元信息
 * @typedef VideoMeta
 * @memberof BaaS
 * @property {number} duartion m3u8 时长
 * @property {number[]} points 时间点
 */

/**
 * M3U8 时长和分片信息请求结果
 * @typedef VideoMetaResult
 * @memberof BaaS
 * @property {number} status_code 状态码
 * @property {string} message 返回信息
 * @property {BaaS.VideoMeta} meta 元信息
 */

/**
 * 音视频的元信息请求参数
 * @typedef VideoAudioMetaParams
 * @memberof BaaS
 * @property {string} source 文件的 ID
 */

/**
 * 音视频格式信息
 * @typedef VideoAudioMetaFormat
 * @memberof BaaS
 * @property {number} bitrate 比特率
 * @property {number} duration 时长
 * @property {string} format 容器格式
 * @property {string} fullname 容器格式全称
 */

/**
 * 音视频流
 * @typedef VideoAudioMetaStreams
 * @memberof BaaS
 * @property {number} index 表示第几路流
 * @property {string} type 一般情况下, video 或 audio
 * @property {number} bitrate 流码率
 * @property {string} codec 流编码
 * @property {string} codec_desc 流编码说明
 * @property {number} duration 流时长
 * @property {number} video_fps (视频流)视频帧数
 * @property {number} video_height (视频流)视频高度
 * @property {number} video_width (视频流)视频宽度
 * @property {number} audio_channels (音频流)音频通道数
 * @property {number} audio_samplerate (音频流)音频采样率
 */

/**
 * 音视频的元信息请求结果
 * @typedef VideoAudioMetaResult
 * @memberof BaaS
 * @property {BaaS.VideoAudioMetaFormat} format 音视频格式信息
 * @property {BaaS.VideoAudioMetaStreams[]} streams stream 列表
 */

/**
 * GeoJson
 * @typedef GeoJson
 * @memberof BaaS
 * @property {string} type 类型
 * @property {number[]} coordinates 坐标
 */

/**
 * 获取支付订单参数
 * @typedef GetOrderListParams
 * @memberof BaaS
 * @property {string} [merchandise_record_id] 商品记录 ID,可用于定位用户购买的物品
 * @property {string} [merchandise_schema_id] 商品表 ID,可用于定位用户购买的物品
 * @property {'complete'|'pending'|'success'|'partial'} [status] 订单支付状态
 * @property {string} [trade_no] 真正的交易 ID, 业务方在服务方后台对账时可看到此字段
 * @property {string} [transactionID] 知晓云平台所记录的流水号
 * @property {string} [gateway_type] 支付方法,可选值有:weixin_tenpay(微信支付)、alipay(支付宝支付)等
 */

/**
 * 批量创建参数
 * @typedef CreateManyParams
 * @memberof BaaS
 * @property {boolean} [enableTrigger] 是否触发触发器
 */

/**
 * 查询参数
 * @typedef FindOptions
 * @memberof BaaS
 * @property {boolean} [withCount] 是否返回 total_count
 */

/**
 * 批量更新参数
 * @typedef BatchUpdateParams
 * @memberof BaaS
 * @property {boolean} [enableTrigger] 是否触发触发器
 * @property {boolean} [withCount] 是否返回 total_count
 */

/**
 * 设置账号参数
 * @typedef SetAccountParmas
 * @memberof BaaS
 * @property {string|null} [username] 用户名
 * @property {string|null} [email] 邮箱
 * @property {string|null} [password] 密码
 */

/**
 * 更新密码
 * @typedef UpdatePasswordParams
 * @memberof BaaS
 * @property {string} password 旧密码
 * @property {string} newPassword 新密码
 */

/**
 * @typedef CensorAsyncResult
 * @memberof BaaS
 * @property {string} id 文件 ID
 * @property {string} [error_code] 错误码,=0 时不返回此字段
 * @property {string} [error_message] 错误信息,error_code=0 时不返回此字段
 * @property {number} status_code 默认为:0,4294966288(-1008)为链接无法下载
 * @property {boolean} risky 是否为违规内容,true 为风险,false 为未检测到风险,null 为微信尚未推送检查结果
 */

/**
 * 请求参数
 * @typedef RequestParams
 * @memberof BaaS
 * @property {string} url 请求的 URL
 * @property {string} [method] HTTP 请求方法,默认为 'GET'
 * @property {object} [data] 请求的参数
 * @property {object} [header] 请求的 header
 * @property {string} [dataType] 返回的数据格式
 */

/**
 * 关联支付宝账号参数
 * @typedef LinkAlipayParams
 * @memberof BaaS
 * @property {boolean} [forceLogin] 是否强制登录
 * @property {'overwrite'|'setnx'|'false'} [syncUserProfile]
 *   是否同步第一层级用户信息,默认为 'setnx'。值说明:
 *     'overwrite' - 强制更新
 *     'setnx' - 仅当字段从未被赋值时才更新
 *     'false' - 不更新
 */

/**
 * 关联字节跳动账号参数
 * @typedef LinkBytedanceParams
 * @memberof BaaS
 * @property {boolean} [forceLogin] 是否强制登录
 * @property {'overwrite'|'setnx'|'false'} [syncUserProfile]
 *   是否同步第一层级用户信息,默认为 'setnx'。值说明:
 *     'overwrite' - 强制更新
 *     'setnx' - 仅当字段从未被赋值时才更新
 *     'false' - 不更新
 */

/**
 * @typedef LinkThirdPartyParams
 * @memberof BaaS
 * @property {'overwrite'|'setnx'|'false'} [syncUserProfile]
 *   是否同步第一层级用户信息,默认为 'setnx'。值说明:
 *     'overwrite' - 强制更新
 *     'setnx' - 仅当字段从未被赋值时才更新
 *     'false' - 不更新
 * @property {boolean} [debug] 是否开启 debug 模式
 * @property {'popup-window'|'popup-iframe'|'redirect'} [mode] 授权窗口打开模式
 * @property {Object} [authModalStyle] popup-iframe 模式下,授权模态框的样式
 * @property {Object} [wechatIframeContentStyle] 微信 web 授权,在 popup-iframe 模式下,微信授权页面的样式
 * @property {string} [windowFeatures] popup-window 模式下,授权窗口的特性,详见 {@link https://developer.mozilla.org/zh-CN/docs/Web/API/Window/open}
 */

/**
 * @typedef LinkAuthDataAuthData
 * @memberof BaaS
 * @property {string} token oauth 登录后返回的 token
 * @property {string} [username] 用户名(Apple 登录时必填)
 */

/**
 * @typedef LinkAuthDataOptions
 * @memberof BaaS
 * @property {'overwrite'|'setnx'|'false'} [syncUserProfile]
 *   是否同步第一层级用户信息,默认为 'setnx'。值说明:
 *     'overwrite' - 强制更新
 *     'setnx' - 仅当字段从未被赋值时才更新
 *     'false' - 不更新
 * @property {string} provider 第三方平台
 */


/**
 * @typedef SetEmailOptions
 * @memberof BaaS
 * @property {boolean} sendVerificationEmail 是否发送验证邮件
 */

/**
 * @typedef PasswordResetParam
 * @memberof BaaS
 * @property {string} email email 地址
 */