UNPKG

kitten-cloud-function

Version:

用于编程猫源码云功能(云变量、云列表等)的客户端工具

155 lines (154 loc) 9.03 kB
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; } }