@openhps/core
Version:
Open Hybrid Positioning System - Core component
37 lines • 1.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SerializableMapMember = void 0;
const typedjson_1 = require("typedjson");
const DataSerializerUtils_1 = require("../DataSerializerUtils");
/**
* @param {Serializable<any>} keyConstructor Map key constructor
* @param {Serializable<any>} valueConstructor Map value constructor
* @param {SerializableMapMemberOptions} [options] Member options
* @returns {PropertyDecorator} Property decorator
*/
function SerializableMapMember(keyConstructor, valueConstructor, options) {
return (target, propertyKey) => {
if (valueConstructor === Object && options === undefined) {
options = {};
options.deserializer = (json) => {
const map = new Map();
Object.keys(json).forEach((key) => {
map.set(key, JSON.parse(json[key]));
});
return map;
};
options.serializer = (map) => {
const json = {};
map.forEach((value, key) => {
json[key] = JSON.stringify(value);
});
return json;
};
}
const finalOptions = DataSerializerUtils_1.DataSerializerUtils.mergeMemberOptions(target, propertyKey, options);
(0, typedjson_1.jsonMapMember)(keyConstructor, valueConstructor, finalOptions)(target, propertyKey);
DataSerializerUtils_1.DataSerializerUtils.updateMemberOptions(target, propertyKey, finalOptions);
};
}
exports.SerializableMapMember = SerializableMapMember;
//# sourceMappingURL=SerializableMapMember.js.map