UNPKG

@ultipa-graph/ultipa-node-sdk

Version:

NodeJS SDK for ultipa-server 4.0

149 lines 5.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DESERIALIZE = void 0; const ultipa_pb_1 = require("../../proto/ultipa_pb"); const types_1 = require("../../types"); const ultipa_datetime_1 = require("../ultipa.datetime"); const commont_1 = require("./commont"); const null_1 = require("./null"); const GlobalTextDecoder = new TextDecoder("utf-8"); var DESERIALIZE; (function (DESERIALIZE) { function deserialize(v, type, subTypes, timeZone) { // console.log(`type: ${PropertyUtils.propertyGet(<any>type)}:`, v) const { PROPERTY_INT32, PROPERTY_STRING, PROPERTY_FLOAT, PROPERTY_DOUBLE, PROPERTY_UINT32, PROPERTY_INT64, PROPERTY_UINT64, PROPERTY_DATETIME, PROPERTY_TIMESTAMP, PROPERTY_TEXT, PROPERTY_BLOB, PROPERTY_POINT, PROPERTY_DECIMAL, PROPERTY_LIST, PROPERTY_SET, PROPERTY_MAP, } = types_1.ULTIPA.PropertyType; switch (type) { case PROPERTY_LIST: if (commont_1.TypeSupport.list) { return list(v, subTypes, timeZone); } commont_1.TypeSupport.NotSupport(type); return; case PROPERTY_MAP: if (commont_1.TypeSupport.map) { return map(v, subTypes, timeZone); } commont_1.TypeSupport.NotSupport(type); return; case PROPERTY_SET: return set(v, subTypes, timeZone); } return base(v, type, timeZone); } DESERIALIZE.deserialize = deserialize; ; function base(v, type, timeZone) { if (null_1.NullUtils.isNullValueByBytes(v, type)) { return null; } const { PROPERTY_INT32, PROPERTY_STRING, PROPERTY_FLOAT, PROPERTY_DOUBLE, PROPERTY_UINT32, PROPERTY_INT64, PROPERTY_UINT64, PROPERTY_DATETIME, PROPERTY_TIMESTAMP, PROPERTY_TEXT, PROPERTY_BLOB, PROPERTY_POINT, PROPERTY_DECIMAL, PROPERTY_LIST, PROPERTY_SET, PROPERTY_MAP, } = types_1.ULTIPA.PropertyType; let convertV; switch (type) { case PROPERTY_INT32: convertV = new DataView(v.buffer).getInt32(v.byteOffset); break; case PROPERTY_DECIMAL: case PROPERTY_STRING: case PROPERTY_TEXT: case PROPERTY_POINT: // return new TextDecoder("utf-8").decode(v); convertV = GlobalTextDecoder.decode(v); break; case PROPERTY_BLOB: // return new TextDecoder("utf-8").decode(v); convertV = Buffer.from(v); break; case PROPERTY_FLOAT: convertV = Number(new DataView(v.buffer).getFloat32(v.byteOffset).toPrecision(7)).toString(); break; case PROPERTY_DOUBLE: convertV = new DataView(v.buffer).getFloat64(v.byteOffset).toString(); break; case PROPERTY_TIMESTAMP: convertV = new DataView(v.buffer).getUint32(v.byteOffset); break; case PROPERTY_UINT32: convertV = new DataView(v.buffer).getUint32(v.byteOffset); break; case PROPERTY_INT64: convertV = new DataView(v.buffer).getBigInt64(v.byteOffset).toString(); break; case PROPERTY_UINT64: case PROPERTY_DATETIME: convertV = new DataView(v.buffer).getBigUint64(v.byteOffset).toString(); break; } if (type == PROPERTY_TIMESTAMP && timeZone.timestampToString) { convertV = ultipa_datetime_1.UltipaDatetime.timestamp2Str(convertV, timeZone); } if (type == PROPERTY_DATETIME) { convertV = ultipa_datetime_1.UltipaDatetime.datetimeInt2datetimeStr(convertV); } return convertV; } DESERIALIZE.base = base; function list(v, types, timeZone) { try { let data = ultipa_pb_1.ListData.deserializeBinary(v); if (data.getIsNull()) { return null; } let values = data.getValuesList_asU8(); let type = types[0]; let results = []; values.forEach((v, i) => { results.push(base(v, type, timeZone)); }); return results; } catch (e) { console.log("deserialize>list", v, e); return []; } } DESERIALIZE.list = list; function set(v, types, timeZone) { try { let data = ultipa_pb_1.SetData.deserializeBinary(v); if (data.getIsNull()) { return null; } let values = data.getValuesList_asU8(); let type = types[0]; let results = []; values.forEach((v, i) => { results.push(base(v, type, timeZone)); }); return results; } catch (e) { console.log("deserialize>set", v, e); return []; } } DESERIALIZE.set = set; function map(v, types, timeZone) { try { let data = ultipa_pb_1.MapData.deserializeBinary(v); if (data.getIsNull()) { return null; } let values = data.getValuesList(); let keyType = types[0]; let valueType = types[1]; let obj = {}; values.forEach((m) => { let key = base(m.getKey_asU8(), keyType, timeZone); let value = base(m.getValue_asU8(), valueType, timeZone); obj[key] = value; }); return obj; } catch (e) { console.log("deserialize>list", v, e); return []; } } DESERIALIZE.map = map; })(DESERIALIZE = exports.DESERIALIZE || (exports.DESERIALIZE = {})); //# sourceMappingURL=deserialize.js.map