@dipscope/type-manager
Version:
Transform JSON strings or plain objects into JS class instances.
129 lines • 6.92 kB
JavaScript
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var MapSerializer = (function () {
function MapSerializer() {
}
MapSerializer.prototype.serialize = function (x, serializerContext) {
if (x === undefined) {
return serializerContext.serializedDefaultValue;
}
if (x === null) {
return serializerContext.serializedNullValue;
}
if (x instanceof Map) {
return serializerContext.defineReference(x, function () {
var e_1, _a;
var map = x;
var array = new Array(x.size);
var genericKeySerializerContext = serializerContext.defineGenericSerializerContext(0);
var genericValueSerializerContext = serializerContext.defineGenericSerializerContext(1);
var keyArraySerializerContext = genericKeySerializerContext.defineChildSerializerContext();
var valueArraySerializerContext = genericValueSerializerContext.defineChildSerializerContext();
var keySerializerContext = keyArraySerializerContext.defineChildSerializerContext();
var valueSerializerContext = valueArraySerializerContext.defineChildSerializerContext();
keySerializerContext.jsonPathKey = 'key';
keySerializerContext.typeState = genericKeySerializerContext.typeState;
keySerializerContext.referenceValueSetter = function (v, k) { return array[keyArraySerializerContext.jsonPathKey][k] = v; };
valueSerializerContext.jsonPathKey = 'value';
valueSerializerContext.typeState = genericValueSerializerContext.typeState;
valueSerializerContext.referenceValueSetter = function (v, k) { return array[valueArraySerializerContext.jsonPathKey][k] = v; };
var keySerializer = keySerializerContext.serializer;
var valueSerializer = valueSerializerContext.serializer;
var i = -1;
try {
for (var _b = __values(map.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
var _d = __read(_c.value, 2), mk = _d[0], mv = _d[1];
i++;
keyArraySerializerContext.jsonPathKey = i;
valueArraySerializerContext.jsonPathKey = i;
array[i] = {};
array[i][keySerializerContext.jsonPathKey] = keySerializer.serialize(mk, keySerializerContext);
array[i][valueSerializerContext.jsonPathKey] = valueSerializer.serialize(mv, valueSerializerContext);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
return array;
});
}
serializerContext.logger.error('MapSerializer', "".concat(serializerContext.jsonPath, ": cannot serialize value as map."), x);
return undefined;
};
MapSerializer.prototype.deserialize = function (x, serializerContext) {
if (x === undefined) {
return serializerContext.deserializedDefaultValue;
}
if (x === null) {
return serializerContext.deserializedNullValue;
}
if (Array.isArray(x)) {
return serializerContext.restoreReference(x, function () {
var array = x;
var map = new Map();
var genericKeySerializerContext = serializerContext.defineGenericSerializerContext(0);
var genericValueSerializerContext = serializerContext.defineGenericSerializerContext(1);
var keyArraySerializerContext = genericKeySerializerContext.defineChildSerializerContext();
var valueArraySerializerContext = genericValueSerializerContext.defineChildSerializerContext();
var keySerializerContext = keyArraySerializerContext.defineChildSerializerContext();
var valueSerializerContext = valueArraySerializerContext.defineChildSerializerContext();
keySerializerContext.jsonPathKey = 'key';
keySerializerContext.typeState = genericKeySerializerContext.typeState;
keySerializerContext.referenceValueSetter = function (v) { return map.set(v, undefined); };
valueSerializerContext.jsonPathKey = 'value';
valueSerializerContext.typeState = genericValueSerializerContext.typeState;
valueSerializerContext.referenceValueSetter = function (v) { return map.set(v, undefined); };
var keySerializer = keySerializerContext.serializer;
var valueSerializer = valueSerializerContext.serializer;
var _loop_1 = function (i) {
var mk = array[i][keySerializerContext.jsonPathKey];
var mv = array[i][valueSerializerContext.jsonPathKey];
keyArraySerializerContext.jsonPathKey = i;
valueArraySerializerContext.jsonPathKey = i;
var key = keySerializer.deserialize(mk, keySerializerContext);
valueSerializerContext.referenceValueSetter = function (v) { return map.set(key, v); };
var value = valueSerializer.deserialize(mv, valueSerializerContext);
map.set(key, value);
};
for (var i = 0; i < array.length; i++) {
_loop_1(i);
}
return map;
});
}
serializerContext.logger.error('MapSerializer', "".concat(serializerContext.jsonPath, ": Cannot deserialize value as map!"), x);
return undefined;
};
return MapSerializer;
}());
export { MapSerializer };
//# sourceMappingURL=map-serializer.js.map