UNPKG

@dipscope/type-manager

Version:

Transform JSON strings or plain objects into JS class instances.

129 lines 6.92 kB
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