kitten-cloud-function
Version:
用于编程猫源码云功能(云变量、云列表等)的客户端工具
155 lines (154 loc) • 9.03 kB
JavaScript
import { None } from "../../../utils/other";
import { KittenCloudSendMessageType } from "../../network/kitten-cloud-send-message-type";
import { KittenCloudList } from "../kitten-cloud-list";
import { KittenCloudDataUpdateCommandGroup } from "../update/command/kitten-cloud-data-update-command-group";
import { KittenCloudListAddCommand } from "../update/command/kitten-cloud-list-add-command";
import { KittenCloudListEmptyCommand } from "../update/command/kitten-cloud-list-empty-command";
import { KittenCloudListPopCommand } from "../update/command/kitten-cloud-list-pop-command";
import { KittenCloudListPushCommand } from "../update/command/kitten-cloud-list-push-command";
import { KittenCloudListRemoveCommand } from "../update/command/kitten-cloud-list-remove-command";
import { KittenCloudListReplaceCommand } from "../update/command/kitten-cloud-list-replace-command";
import { KittenCloudListReplaceLastCommand } from "../update/command/kitten-cloud-list-replace-last-command";
import { KittenCloudListUnshiftCommand } from "../update/command/kitten-cloud-list-unshift-command";
import { KittenCloudDataUpdateSource } from "../update/kitten-cloud-data-update-source";
import { KittenCloudDataGroup } from "./kitten-cloud-data-group";
/**
* 云列表组。
*/
export class KittenCloudListGroup extends KittenCloudDataGroup {
constructor(connection) {
super(connection, {
localPreupdate: false
});
this.dataTypeName = "云列表";
this.dataUpdateSendMessageType = KittenCloudSendMessageType.UPDATE_LIST;
}
createData(cvid, name, value) {
return new KittenCloudList(this.connection, this, cvid, name, value);
}
toCloudUploadMessage(message) {
var _a, _b;
const newMessage = {};
for (const cvid in message) {
if ((_a = message[cvid]) === null || _a === void 0 ? void 0 : _a.isEmpty()) {
continue;
}
newMessage[cvid] = (_b = message[cvid]) === null || _b === void 0 ? void 0 : _b.toCloudJSON();
}
return newMessage;
}
toUploadMessage(message) {
if (message == None) {
throw new Error("更新数据为空");
}
if (!(typeof message == "object")) {
throw new Error(`无法识别更新数据格式:${message}`);
}
const result = {};
const errorArray = [];
for (const cvid in message) {
const data = this.dataRecord[cvid];
if (data == None) {
errorArray.push(new Error(`未找到数据:${cvid}`));
continue;
}
const item = message[cvid];
result[cvid] = new KittenCloudDataUpdateCommandGroup();
if (item == None) {
errorArray.push(new Error("更新数据为空"));
}
else if (!Array.isArray(item)) {
errorArray.push(new Error(`无法识别更新数据格式:${JSON.stringify(item)}`));
}
else {
for (const singleMessage of item) {
if (singleMessage == None) {
errorArray.push(new Error("更新数据为空"));
}
else if (!(typeof singleMessage == "object" &&
"action" in singleMessage && typeof singleMessage.action == "string")) {
errorArray.push(new Error(`无法识别更新数据格式:${JSON.stringify(singleMessage)}`));
}
else {
switch (singleMessage.action) {
case "append":
if ("value" in singleMessage &&
(typeof singleMessage.value == "number" ||
typeof singleMessage.value == "string")) {
result[cvid].add(new KittenCloudListPushCommand(KittenCloudDataUpdateSource.CLOUD, data, singleMessage.value));
}
else {
errorArray.push(new Error(`无法识别更新数据格式:${JSON.stringify(singleMessage)}`));
}
break;
case "unshift":
if ("value" in singleMessage &&
(typeof singleMessage.value == "number" ||
typeof singleMessage.value == "string")) {
result[cvid].add(new KittenCloudListUnshiftCommand(KittenCloudDataUpdateSource.CLOUD, data, singleMessage.value));
}
else {
errorArray.push(new Error(`无法识别更新数据格式:${JSON.stringify(singleMessage)}`));
}
break;
case "insert":
if ("nth" in singleMessage && typeof singleMessage.nth == "number" &&
"value" in singleMessage &&
(typeof singleMessage.value == "number" ||
typeof singleMessage.value == "string")) {
result[cvid].add(new KittenCloudListAddCommand(KittenCloudDataUpdateSource.CLOUD, data, singleMessage.nth - 1, singleMessage.value));
}
else {
errorArray.push(new Error(`无法识别更新数据格式:${JSON.stringify(singleMessage)}`));
}
break;
case "delete":
if (!("nth" in singleMessage)) {
errorArray.push(new Error(`无法识别更新数据格式:${JSON.stringify(singleMessage)}`));
}
else if (singleMessage.nth == "last") {
result[cvid].add(new KittenCloudListPopCommand(KittenCloudDataUpdateSource.CLOUD, data));
}
else if (singleMessage.nth == "all") {
result[cvid].add(new KittenCloudListEmptyCommand(KittenCloudDataUpdateSource.CLOUD, data));
}
else {
if (typeof singleMessage.nth != "number") {
errorArray.push(new Error(`无法识别更新数据格式:${JSON.stringify(singleMessage)}`));
}
result[cvid].add(new KittenCloudListRemoveCommand(KittenCloudDataUpdateSource.CLOUD, data, singleMessage.nth - 1));
}
break;
case "replace":
if (!("nth" in singleMessage)) {
errorArray.push(new Error(`无法识别更新数据格式:${JSON.stringify(singleMessage)}`));
break;
}
if (!("value" in singleMessage &&
(typeof singleMessage.value == "number" ||
typeof singleMessage.value == "string"))) {
errorArray.push(new Error(`无法识别更新数据格式:${JSON.stringify(singleMessage)}`));
break;
}
if (singleMessage.nth == "last") {
result[cvid].add(new KittenCloudListReplaceLastCommand(KittenCloudDataUpdateSource.CLOUD, data, singleMessage.value));
}
else {
if (typeof singleMessage.nth != "number") {
errorArray.push(new Error(`无法识别更新数据格式:${JSON.stringify(singleMessage)}`));
break;
}
result[cvid].add(new KittenCloudListReplaceCommand(KittenCloudDataUpdateSource.CLOUD, data, singleMessage.nth - 1, singleMessage.value));
}
break;
default:
errorArray.push(new Error(`无法识别更新数据格式:${JSON.stringify(singleMessage)}`));
break;
}
}
}
}
}
return result;
}
}