@ultipa-graph/ultipa-node-sdk
Version:
NodeJS SDK for ultipa-server 4.0
129 lines • 5.8 kB
JavaScript
;
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