用于编程猫源码云功能(云变量、云列表等)的客户端工具
npm install kitten-cloud-function
bash
USER="你的编程猫账号ID"
USING_WORK="使用控件的CoCo作品的ID"
CONNECTING_WORK="要连接的作品的ID"
git clone https://gitee.com/slightning/Kitten-Cloud-Function.git
cd Kitten-Cloud-Function
npm install
生成 CoCo 控件
npx scw-build coco --config webpack.widget.js --env user=$USER --env usingWork=$USING_WORK --env connectingWork=$CONNECTING_WORK
生成 Creation Project 1 控件
npx scw-build creationproject1 --env platform=\"Creation Project 1\" --config webpack.widget.js --env user=$USER --env usingWork=$USING_WORK --env connectingWork=$CONNECTING_WORK
生成 Creation Project 2 控件
npx scw-build creationproject2 --env platform=\"Creation Project 2\" --config webpack.widget.js --env user=$USER --env usingWork=$USING_WORK --env connectingWork=$CONNECTING_WORK
`
##### 获取完整版
完整版不应该用在公开作品(包括发布的作品)中。公开作品并不安全,可能导致控件泄露。
由于完整版功能过于强大,源码云功能不提供任何完整版 CoCo 控件和构建完整版 CoCo 控件的说明文档,有需求的请自行摸索。
#### 2.检测用户登陆状态
使用用户已登录积木检测用户是否已登录。
提示:可以使用用户登录积木让用户登录。
#### 3.连接到云
在进行除获取当前登录的用户信息之外的任何操作都需要在连接到云后进行。
使用连接 到 (0)积木进行连接,其中(0)填写要连接的作品的 ID。
注意:
- 连接后进行依赖于连接的操作时,会自动等待连接完成。
- 连接云时需要处在未连接状态,如果存在连接,上一个连接会自动断开。
#### 4.查看和修改云数据
该操作与源码编辑器的操作类似,在此不再赘述。
#### 5.获取用户信息
使用ID 为 (0) 的用户 的 [ID]积木,当 ID 为 0 时,获取到的是当前登录的用户的信息。
$3
#### 1.引入
##### npm
安装
`
$ npm install kitten-cloud-function
`
导入
`JavaScript
import { KittenCloudFunction } from "kitten-cloud-function"
`
##### 浏览器
`html
`
#### 2.检测用户登陆状态
可以通过尝试获取用户信息来检测用户是否已登录。
`JavaScript
try{
await KittenCloudFunction.user.info.id
console.log("用户已登录")
} catch(error) {
console.log("用户未登录")
}
`
提示:在浏览器中,可以调用CodemaoUser.userLogInInBrowser让用户登录;在 Node 中,可以调用CodemaoUser.setAuthorization来设置登录凭证。
#### 3.创建连接
`JavaScript
let connection = new KittenCloudFunction(114514)
`
#### 4.查看和修改云数据
##### ①获取云数据实例
`JavaScript
let connection = new KittenCloudFunction(114514)
// 快速获取云数据实例,不推荐使用
let data = await connection.get("云数据")
// 按照类型获取云数据实例
let privateVariable = await connection.privateVariable.get("私有云变量")
let publicVariable = await connection.publicVariable.get("公有云变量")
let list = await connection.list.get("云列表")
`
##### ②查看和修改云变量
`JavaScript
let connection = new KittenCloudFunction(114514)
let variable = await connection.publicVariable.get("云变量")
// 读取云变量的值
console.log(variable.get())
// 修改云变量的值
variable.set("好耶")
// 使用 await 等待上传
await variable.set("好耶!是源码云功能 v1.2.1 更新,我们有救了!")
`
##### ③查看私有云变量排行榜
`JavaScript
let connection = new KittenCloudFunction(114514)
let privateVariable = await connection.privateVariable.get("私有云变量")
// 获取私有云变量排行榜逆序排列的前 31 名用户
let rankList = await privateVariable.getRankingList(31, -1)
for (const item of rankList) {
console.log(item.value, await item.user.info.nickname)
}
`
##### ④查看和修改云列表
`JavaScript
let connection = new KittenCloudFunction(114514)
let list = await connection.list.get("云列表")
// 获取云列表索引为 1 的项,列表索引从 0 开始
console.log(list.get(1))
// 修改云列表索引为 1 的项
list.replace(1, "好耶")
// 添加云列表第索引为 10 的项,新添加的项的索引为 10
list.add(10, "好耶")
// 删除云列表索引为 1 的项
list.remove(1)
`
更多云列表操作请参考源码云功能 API 文档。
#### 5.更多功能
请参考源码云功能 API 文档。
$3
需要 Node.js 16 及以上版本。
#### 1.安装
`
$ npm install kitten-cloud-function -g
`
#### 2.设置身份
`
$ kcf set-authorization
`
身份即 Cookie 中的 authorization。
#### 3.设置作品
`
$ kcf use
`
#### 4.进行云操作
请参考:
`
$ kcf help
`
#### 5.退出
`
$ kcf exit
`
三、功能配置
$3
当连接异常断开时,如果允许,会在等待指定时间后自动重连。
$3
在没有开启本地预更新时,每次在本地执行数据更新操作时,都会等到该操作同步到云端并收到来自服务器的反馈后再更新本地的数据,这与普通的变量在修改后立即更新其值并不相同。
如:
`JavaScript
let connection = new KittenCloudFunction(114514)
// 假设该变量初始值为 0
let variable = await connection.publicVariable.get("云变量")
// 此处应输出 0
console.log(variable.get())
// 修改变量的值,要等到该操作同步到云端并收到来自服务器的反馈后才能生效
variable.set(666)
// 此处仍然输出 0,因为对该变量的修改操作还没有同步到云端
console.log(variable.get())
`
开启本地预更新后,本地执行数据更新操作时,会假定该操作同步到云端之前没有其它用户对该数据进行操作,并基于此提前更新本地的数据,如果假定不成立,则会修正本地数据。具体而言,本地执行数据更新操作时,会立即更新本地的数据,如果在当前操作被同步到云端之前收到了来自服务器的反馈的其它更新数据,则会撤销本地对数据的更改,并执行来自云端的更改,最后再执行本地对数据的更改。
$3
请参考源码云功能 API 文档。
四、技术信息
$3
- 编程语言
- TypeScript
- 打包工具
- webpack
- 代码兼容性
- Babel
- Promise.any
- 文档生成
- TypeDoc
- 命令行
- Commander.js
- Readline for Passwords
- chalk
- CoCo 控件适配
- SLIGHTNING CoCo 控件框架
- 其他
- 
- Anything To String
- jsdiff
- appdirsjs
$3
`mermaid
graph TD
subgraph CodemaoAPI["编程猫 API"]
CodemaoInfoAPI(("编程猫信息 API
(外部模块)"))
CodemaoWorkCloudAPI(("编程猫作品云功能 API
(外部模块)"))
end
CodemaoInfoAPI <--> CodemaoInfoAPIAdapter
CodemaoWorkCloudAPI <--> CodemaoWorkCloudAPIAdapter
subgraph KittenCloudFunctionModule ["源码云功能模块"]
subgraph CodemaoAPIAdapter["编程猫 API 适配器"]
CodemaoInfoAPIAdapter["编程猫信息 API 适配器
(./src/codemao/**)"]
CodemaoWorkCloudAPIAdapter["编程猫作品云功能 API 适配器
(./src/module/network/**)"]
end
subgraph KittenCloudFunctionCore["源码云功能核心模块"]
CodemaoInfoAPIAdapter <--> KittenCloudFunction["源码云功能主类
(./src/kitten-cloud-function.KittenCloudFunction)"]
CodemaoWorkCloudAPIAdapter <--> KittenCloudFunction
KittenCloudFunction <--> KittenCloudDataGroup["云数据组
(./src/module/cloud-data/group/*)"]
KittenCloudDataGroup <--> KittenCloudData["云数据
(./src/module/cloud-data/*)"]
KittenCloudDataGroup <--> KittenCloudDataUpdateManager["云数据更新管理器
(./src/module/cloud-data/update/**)"]
KittenCloudDataUpdateManager <--> KittenCloudData
end
KittenCloudFunction <--> KittenCloudFunctionAPI
KittenCloudDataGroup <--> KittenCloudFunctionAPI
KittenCloudData <--> KittenCloudFunctionAPI
KittenCloudFunctionAPI <--> SLIGHTNINGCoCoWidgetAdapter
KittenCloudFunctionAPI <--> KittenCloudFunctionCLI
subgraph KittenCloudFunctionInteractiveInterface["交互接口"]
KittenCloudFunctionAPI(["源码云功能 API"])
SLIGHTNINGCoCoWidgetAdapter["SLIGHTNING CoCo 控件框架适配器
(./src/wrapper/kitten-cloud-function-codemao-coco-widget)"]
KittenCloudFunctionCLI(["源码云功能命令行界面"])
end
end
KittenCloudFunctionAPI <--> Application
SLIGHTNINGCoCoWidgetAdapter <--> SLIGHTNINGCoCoWidget[["SLIGHTNING CoCo 控件框架
(slightning-coco-widget)"]] <--> CoCoWidgetAPI(("CoCo 自定义控件 API
(外部模块)")) <--> CoCoWork
KittenCloudFunctionCLI <--> User
subgraph Apply["应用"]
Application["应用程序"]
CoCoWork["CoCo 作品"]
User((("用户")))
end
``