@synerty/orb-vortexjs
Version:
Custom observable data serialisation and routing based on Angular2
132 lines • 5.3 kB
JavaScript
"use strict";
/*
* ###############################################################################
* Common Serialisation functions
* ###############################################################################
*/
Object.defineProperty(exports, "__esModule", { value: true });
var UtilMisc_1 = require("./UtilMisc");
var moment = require("moment");
var base64 = require('base-64');
var SerialiseUtil = (function () {
function SerialiseUtil() {
}
SerialiseUtil.prototype.toStr = function (obj) {
var self = this;
if (obj["toISOString"] != null)
return moment(obj).format(SerialiseUtil.ISO8601);
if (obj.constructor === Boolean)
return obj ? SerialiseUtil.V_TRUE : SerialiseUtil.V_FALSE;
if (obj.constructor === String)
return obj;
return obj.toString();
};
SerialiseUtil.prototype.fromStr = function (val, typeName) {
var self = this;
if (typeName === SerialiseUtil.T_STR)
return val;
if (typeName === SerialiseUtil.T_BYTES)
return base64.decode(encodeURI(val));
if (typeName === SerialiseUtil.T_BOOL)
return val === SerialiseUtil.V_TRUE;
if (typeName === SerialiseUtil.T_FLOAT || typeName === SerialiseUtil.T_INT)
return parseFloat(val);
if (typeName === SerialiseUtil.T_DATETIME)
return moment(val).toDate();
alert("fromStr - UNKNOWN TYPE");
};
SerialiseUtil.prototype.toRapuiType = function (value) {
var self = this;
if (value == null)
return SerialiseUtil.V_NULL;
var TupleMod = require("./Tuple");
var PayloadMod = require("./Payload");
if (value instanceof TupleMod.Tuple)
return SerialiseUtil.T_RAPUI_TUPLE;
if (value instanceof PayloadMod.Payload)
return SerialiseUtil.T_RAPUI_PAYLOAD;
if (value instanceof Date)
return SerialiseUtil.T_DATETIME;
if (value.constructor === Number)
return SerialiseUtil.T_FLOAT;
if (value.constructor === String)
return SerialiseUtil.T_STR;
if (value.constructor === Boolean)
return SerialiseUtil.T_BOOL;
if (value.constructor === Array)
return SerialiseUtil.T_LIST;
if (value.constructor === Object)
return SerialiseUtil.T_DICT;
alert("toRapuiType - UNKNOWN TYPE");
};
SerialiseUtil.prototype.rapuiEquals = function (obj1, obj2, obj1FieldNames, obj2FieldNames) {
var self = this;
var fieldNames1 = obj1FieldNames;
fieldNames1.sort();
var fieldNames2 = obj2FieldNames;
fieldNames2.sort();
if (!fieldNames1.equals(fieldNames2))
return false;
// Create the <items> base element
for (var fieldIndex = 0; fieldIndex < fieldNames1.length; ++fieldIndex) {
var name_1 = fieldNames1[fieldIndex];
var field1 = obj1[name_1];
var field2 = obj2[name_1];
if (field1 === undefined && field2 === undefined)
continue;
else if (field1 === undefined || field2 === undefined)
return false;
var type1 = self.toRapuiType(field1);
var type2 = self.toRapuiType(field2);
if (type1 !== type2)
return false;
if (type1 === SerialiseUtil.T_RAPUI_TUPLE
|| type1 === SerialiseUtil.T_RAPUI_PAYLOAD) {
if (!field1.equals(field2))
return false;
}
else if (type1 === SerialiseUtil.T_LIST) {
var indexes = [];
for (var index = 0; index < field1.length; index++) {
indexes.push(index);
}
var isEqual = self.rapuiEquals(field1, field2, indexes, indexes);
if (!isEqual)
return false;
}
else if (type1 === SerialiseUtil.T_DICT) {
var isEqual = self.rapuiEquals(field1, field2, UtilMisc_1.dictKeysFromObject(field1), UtilMisc_1.dictKeysFromObject(field2));
if (!isEqual)
return false;
}
else if (type1 === SerialiseUtil.T_DATETIME) {
if (field1.getTime() !== field2.getTime())
return false;
}
else {
if (field1 !== field2)
return false;
}
}
return true;
};
return SerialiseUtil;
}());
SerialiseUtil.T_RAPUI_TUPLE = "rt";
SerialiseUtil.T_RAPUI_PAYLOAD = "rp";
SerialiseUtil.T_GENERIC_CLASS = "gen"; // NOT SUPPORTED
SerialiseUtil.T_FLOAT = "float";
SerialiseUtil.T_INT = "int";
SerialiseUtil.T_STR = "str";
SerialiseUtil.T_BYTES = "bytes";
SerialiseUtil.T_BOOL = "bool";
SerialiseUtil.T_DATETIME = "datetime";
SerialiseUtil.T_DICT = "dict";
SerialiseUtil.T_LIST = "list";
SerialiseUtil.V_NULL = "null";
SerialiseUtil.V_TRUE = "1";
SerialiseUtil.V_FALSE = "0";
SerialiseUtil.ISO8601_PY = "%Y-%m-%d %H:%M:%S.%f%z";
SerialiseUtil.ISO8601 = "YYYY-MM-DD HH:mm:ss.SSSSSSZZ";
exports.default = SerialiseUtil;
//# sourceMappingURL=/Users/jchesney/skyorb-dev/orb-vortexjs/src/vortex/SerialiseUtil.js.map