@dipscope/type-manager
Version:
Transform JSON strings or plain objects into JS class instances.
57 lines • 2.83 kB
JavaScript
var ArraySerializer = (function () {
function ArraySerializer() {
}
ArraySerializer.prototype.serialize = function (x, serializerContext) {
if (x === undefined) {
return serializerContext.serializedDefaultValue;
}
if (x === null) {
return serializerContext.serializedNullValue;
}
if (Array.isArray(x)) {
return serializerContext.defineReference(x, function () {
var arrayInput = x;
var arrayOutput = new Array(x.length);
var genericSerializerContext = serializerContext.defineGenericSerializerContext(0);
var valueSerializerContext = genericSerializerContext.defineChildSerializerContext();
var serializer = valueSerializerContext.serializer;
valueSerializerContext.referenceValueSetter = function (v, k) { return arrayOutput[k] = v; };
for (var i = 0; i < arrayInput.length; i++) {
valueSerializerContext.jsonPathKey = i;
arrayOutput[i] = serializer.serialize(arrayInput[i], valueSerializerContext);
}
return arrayOutput;
});
}
serializerContext.logger.error('ArraySerializer', "".concat(serializerContext.jsonPath, ": cannot serialize value as array."), x);
return undefined;
};
ArraySerializer.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 arrayInput = x;
var arrayOutput = new Array(x.length);
var genericSerializerContext = serializerContext.defineGenericSerializerContext(0);
var valueSerializerContext = genericSerializerContext.defineChildSerializerContext();
var serializer = valueSerializerContext.serializer;
valueSerializerContext.referenceValueSetter = function (v, k) { return arrayOutput[k] = v; };
for (var i = 0; i < arrayInput.length; i++) {
valueSerializerContext.jsonPathKey = i;
arrayOutput[i] = serializer.deserialize(arrayInput[i], valueSerializerContext);
}
return arrayOutput;
});
}
serializerContext.logger.error('ArraySerializer', "".concat(serializerContext.jsonPath, ": cannot deserialize value as array."), x);
return undefined;
};
return ArraySerializer;
}());
export { ArraySerializer };
//# sourceMappingURL=array-serializer.js.map