UNPKG

xiot-core-spec-ts

Version:
152 lines (151 loc) 6.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PropertyOperationCodec = exports.PropertyOperationCodecSet = exports.PropertyOperationCodecGet = exports.PropertyOperationCodecSetResult = exports.PropertyOperationCodecSetQuery = exports.PropertyOperationCodecGetResult = exports.PropertyOperationCodecGetQuery = void 0; const Spec_1 = require("../../typedef/constant/Spec"); const AbstractOperationCodec_1 = require("./AbstractOperationCodec"); const PropertyOperation_1 = require("../../typedef/operation/PropertyOperation"); const PropertyID_1 = require("../../typedef/xid/PropertyID"); const CombinationValueCodec_1 = require("./CombinationValueCodec"); class PropertyOperationCodecGetQuery extends AbstractOperationCodec_1.AbstractOperationCodec { decodeObject(o) { if (typeof o === 'string') { const property = new PropertyOperation_1.PropertyOperation(); property.pid = PropertyID_1.PropertyID.parse(o); return property; } throw Error(`invalid pid: ${o}`); } encodeObject(t) { return t.pid.toString(); } } exports.PropertyOperationCodecGetQuery = PropertyOperationCodecGetQuery; class PropertyOperationCodecGetResult extends AbstractOperationCodec_1.AbstractOperationCodec { decodeObject(o) { const property = new PropertyOperation_1.PropertyOperation(); property.pid = PropertyID_1.PropertyID.parse(o[Spec_1.Spec.PID]); property.status = o[Spec_1.Spec.STATUS]; if (property.status === undefined) { property.status = 0; } if (property.status == null) { property.status = 0; } if (property.status === 0) { const value = o[Spec_1.Spec.VALUE]; if (value instanceof Array) { property.value = CombinationValueCodec_1.CombinationValueCodec.decodeArray(value); } else if (typeof value === 'object') { property.argumentsCompact = true; property.value = CombinationValueCodec_1.CombinationValueCodec.decodeObject(value); } else { property.value = value; } } else { property.description = o[Spec_1.Spec.DESCRIPTION]; } return property; } encodeObject(property) { const o = { pid: property.pid.toString() }; if (property.status === 0) { if (property.value instanceof Map) { o[Spec_1.Spec.VALUE] = CombinationValueCodec_1.CombinationValueCodec.encodeWithCompact(property.argumentsCompact, property.value); } else { o[Spec_1.Spec.VALUE] = property.value; } } else { o[Spec_1.Spec.STATUS] = property.status; o[Spec_1.Spec.DESCRIPTION] = property.description; } return o; } } exports.PropertyOperationCodecGetResult = PropertyOperationCodecGetResult; class PropertyOperationCodecSetQuery extends AbstractOperationCodec_1.AbstractOperationCodec { decodeObject(o) { const property = new PropertyOperation_1.PropertyOperation(); const value = o[Spec_1.Spec.VALUE]; property.pid = PropertyID_1.PropertyID.parse(o[Spec_1.Spec.PID]); if (value !== null) { if (value instanceof Array) { property.value = CombinationValueCodec_1.CombinationValueCodec.decodeArray(value); } else if (typeof value === 'object') { property.argumentsCompact = true; property.value = CombinationValueCodec_1.CombinationValueCodec.decodeObject(value); } else { property.value = value; } } return property; } encodeObject(property) { return { pid: property.pid.toString(), value: property.value instanceof Map ? CombinationValueCodec_1.CombinationValueCodec.encodeWithCompact(property.argumentsCompact, property.value) : property.value }; } } exports.PropertyOperationCodecSetQuery = PropertyOperationCodecSetQuery; class PropertyOperationCodecSetResult extends AbstractOperationCodec_1.AbstractOperationCodec { decodeObject(o) { const property = new PropertyOperation_1.PropertyOperation(); property.pid = PropertyID_1.PropertyID.parse(o[Spec_1.Spec.PID]); property.status = o[Spec_1.Spec.STATUS]; if (property.status === undefined) { property.status = 0; } if (property.status == null) { property.status = 0; } if (property.status !== 0) { property.description = o[Spec_1.Spec.DESCRIPTION]; } // if (property.description === undefined) { // throw new Error('description undefined'); // } return property; } encodeObject(property) { const o = { pid: property.pid.toString(), status: property.status }; if (property.status !== 0) { o[Spec_1.Spec.DESCRIPTION] = property.description; } return o; } } exports.PropertyOperationCodecSetResult = PropertyOperationCodecSetResult; class PropertyOperationCodecGet { constructor() { this.QUERY = new PropertyOperationCodecGetQuery(); this.RESULT = new PropertyOperationCodecGetResult(); } } exports.PropertyOperationCodecGet = PropertyOperationCodecGet; class PropertyOperationCodecSet { constructor() { this.QUERY = new PropertyOperationCodecSetQuery(); this.RESULT = new PropertyOperationCodecSetResult(); } } exports.PropertyOperationCodecSet = PropertyOperationCodecSet; class PropertyOperationCodec { } exports.PropertyOperationCodec = PropertyOperationCodec; PropertyOperationCodec.Get = new PropertyOperationCodecGet(); PropertyOperationCodec.Set = new PropertyOperationCodecSet(); PropertyOperationCodec.Notify = new PropertyOperationCodecSetQuery();