UNPKG

@ultipa-graph/ultipa-node-sdk

Version:

NodeJS SDK for ultipa-server 4.0

129 lines 5.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SERIALIZE = 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 SERIALIZE; (function (SERIALIZE) { function serialize(v, type, subTypes, timeZone) { 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); } SERIALIZE.serialize = serialize; function base(in_v, type, timeZone) { if (in_v === undefined || in_v === null) { let bytes = null_1.NullUtils.nullValue(type); return Buffer.from(bytes.buffer); } 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 v = in_v; if (type == PROPERTY_BLOB) { return Buffer.from(v); } let dataView64 = new DataView(new ArrayBuffer(8)); let dataView32 = new DataView(new ArrayBuffer(4)); switch (type) { case PROPERTY_INT32: dataView32.setInt32(0, (0, commont_1.SafeInt)(v)); return Buffer.from(dataView32.buffer); // case PROPERTY_STRING: // by default // return Buffer.from(v, 'utf8'); case PROPERTY_FLOAT: dataView32.setFloat32(0, (0, commont_1.SafeFloat)(v)); return Buffer.from(dataView32.buffer); case PROPERTY_DOUBLE: dataView64.setFloat64(0, (0, commont_1.SafeFloat)(v)); return Buffer.from(dataView64.buffer); case PROPERTY_TIMESTAMP: if (timeZone.timestampToString) { let t1 = ultipa_datetime_1.UltipaDatetime.timestampStr2int(v, timeZone); dataView32.setUint32(0, t1); return Buffer.from(dataView32.buffer); } dataView32.setUint32(0, (0, commont_1.SafeInt)(v)); return Buffer.from(dataView32.buffer); case PROPERTY_UINT32: dataView32.setUint32(0, (0, commont_1.SafeInt)(v)); return Buffer.from(dataView32.buffer); case PROPERTY_INT64: dataView64.setBigInt64(0, (0, commont_1.SafeBigInt)(v)); return Buffer.from(dataView64.buffer); case PROPERTY_UINT64: dataView64.setBigUint64(0, (0, commont_1.SafeBigInt)(v)); return Buffer.from(dataView64.buffer); case PROPERTY_DATETIME: let time = ultipa_datetime_1.UltipaDatetime.datetimeStr2datetimeString(v); dataView64.setBigUint64(0, (0, commont_1.SafeBigInt)(time)); return Buffer.from(dataView64.buffer); } if (typeof v == "number") { v = v + ""; } if (!v) { v = ""; } return Buffer.from(v, "utf8"); } SERIALIZE.base = base; function list(vs, types, timeZone) { if (vs === undefined || vs === null) { let bytes = null_1.NullUtils.nullValue(types_1.ULTIPA.PropertyType.PROPERTY_LIST); return Buffer.from(bytes.buffer); } let listData = new ultipa_pb_1.ListData(); let type = types[0]; vs.forEach((v, i) => { listData.addValues(base(v, type, timeZone)); }); return Buffer.from(listData.serializeBinary().buffer); } SERIALIZE.list = list; function set(vs, types, timeZone) { if (vs === undefined || vs === null) { let bytes = null_1.NullUtils.nullValue(types_1.ULTIPA.PropertyType.PROPERTY_SET); return Buffer.from(bytes.buffer); } let setData = new ultipa_pb_1.SetData(); let type = types[0]; vs.forEach((v, i) => { setData.addValues(base(v, type, timeZone)); }); return Buffer.from(setData.serializeBinary().buffer); } SERIALIZE.set = set; function map(v, types, timeZone) { let mapData = new ultipa_pb_1.MapData(); let keyType = types[0]; let valueType = types[1]; for (const key in v) { const element = v[key]; let m = new ultipa_pb_1.MapValue(); m.setKey(base(key, keyType, timeZone)); m.setValue(base(element, valueType, timeZone)); mapData.addValues(m); } return Buffer.from(mapData.serializeBinary().buffer); } SERIALIZE.map = map; })(SERIALIZE = exports.SERIALIZE || (exports.SERIALIZE = {})); //# sourceMappingURL=serialize.js.map