UNPKG

@dipscope/type-manager

Version:

Transform JSON strings or plain objects into JS class instances.

81 lines 3.7 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 SetSerializer = (function () { function SetSerializer() { } SetSerializer.prototype.serialize = function (x, serializerContext) { if (x === undefined) { return serializerContext.serializedDefaultValue; } if (x === null) { return serializerContext.serializedNullValue; } if (x instanceof Set) { return serializerContext.defineReference(x, function () { var e_1, _a; var set = x; var array = new Array(set.size); var genericSerializerContext = serializerContext.defineGenericSerializerContext(0); var valueSerializerContext = genericSerializerContext.defineChildSerializerContext(); var serializer = valueSerializerContext.serializer; valueSerializerContext.referenceValueSetter = function (v, k) { return array[k] = v; }; var i = -1; try { for (var set_1 = __values(set), set_1_1 = set_1.next(); !set_1_1.done; set_1_1 = set_1.next()) { var v = set_1_1.value; i++; valueSerializerContext.jsonPathKey = i; array[i] = serializer.serialize(v, valueSerializerContext); } } catch (e_1_1) { e_1 = { error: e_1_1 }; } finally { try { if (set_1_1 && !set_1_1.done && (_a = set_1.return)) _a.call(set_1); } finally { if (e_1) throw e_1.error; } } return array; }); } serializerContext.logger.error('SetSerializer', "".concat(serializerContext.jsonPath, ": cannot serialize value as set."), x); return undefined; }; SetSerializer.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 set = new Set(); var genericSerializerContext = serializerContext.defineGenericSerializerContext(0); var valueSerializerContext = genericSerializerContext.defineChildSerializerContext(); var serializer = valueSerializerContext.serializer; valueSerializerContext.referenceValueSetter = function (v) { return set.add(v); }; for (var i = 0; i < array.length; i++) { valueSerializerContext.jsonPathKey = i; set.add(serializer.deserialize(array[i], valueSerializerContext)); } return set; }); } serializerContext.logger.error('SetSerializer', "".concat(serializerContext.jsonPath, ": cannot deserialize value as set."), x); return undefined; }; return SetSerializer; }()); export { SetSerializer }; //# sourceMappingURL=set-serializer.js.map