xiot-core-spec-ts
Version:
XIOT Specification Codec
44 lines (43 loc) • 1.88 kB
JavaScript
;
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;