UNPKG

xiot-core-spec-ts

Version:
44 lines (43 loc) 1.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ActionDefinitionCodec = void 0; const ActionDefinition_1 = require("../../typedef/definition/ActionDefinition"); const ActionType_1 = require("../../typedef/definition/urn/ActionType"); const DescriptionCodec_1 = require("./DescriptionCodec"); const Spec_1 = require("../../typedef/constant/Spec"); const ArgumentDefinitionCodec_1 = require("./ArgumentDefinitionCodec"); class ActionDefinitionCodec { static decodeArray(list) { const array = []; list.forEach(o => { array.push(ActionDefinitionCodec.decode(o)); }); return array; } static decode(o) { const type = new ActionType_1.ActionType(o[Spec_1.Spec.TYPE]); const description = DescriptionCodec_1.DescriptionCodec.decode(o[Spec_1.Spec.DESCRIPTION]); const argumentsIn = ArgumentDefinitionCodec_1.ArgumentDefinitionCodec.decodeArray(o[Spec_1.Spec.IN]); const argumentsOut = ArgumentDefinitionCodec_1.ArgumentDefinitionCodec.decodeArray(o[Spec_1.Spec.OUT]); return new ActionDefinition_1.ActionDefinition(type, description, argumentsIn, argumentsOut); } static encode(def) { const o = { type: def.type.toString(), description: DescriptionCodec_1.DescriptionCodec.encode(def.description) }; if (def.in.length > 0) { o[Spec_1.Spec.IN] = ArgumentDefinitionCodec_1.ArgumentDefinitionCodec.encodeArray(def.in); } if (def.out.length > 0) { o[Spec_1.Spec.OUT] = ArgumentDefinitionCodec_1.ArgumentDefinitionCodec.encodeArray(def.out); } return o; } static encodeArray(list) { return list.map(x => { return ActionDefinitionCodec.encode(x); }); } } exports.ActionDefinitionCodec = ActionDefinitionCodec;