ts-std-lib
Version:
A standard library for typescript
36 lines • 1.67 kB
JavaScript
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OptionalJsonSerializer = void 0;
const Optional_1 = require("../../Optional");
const IJsonSerializer_1 = require("./IJsonSerializer");
const IsJsonSerializer_1 = require("./IsJsonSerializer");
const JsonSerializable_1 = require("./JsonSerializable");
const Type_1 = require("../../Type");
class OptionalJsonSerializer {
constructor(typeSerializer, equalityComparer, inspector) {
this[_a] = true;
this._serializer = (0, IsJsonSerializer_1.isJsonSerializer)(typeSerializer)
? typeSerializer
: new JsonSerializable_1.DefaultSerializer(typeSerializer); // TODO: Require a mandatory serializer for non-primatives?
this._equalityComparer = new Optional_1.Optional(equalityComparer);
this._inspector = new Optional_1.Optional(inspector);
}
serialize(object) {
if (!object.isPresent()) {
return null;
}
const value = object.get();
return this._serializer.serialize(value);
}
deserialize(json) {
if (Type_1.Type.isNull(json) || Type_1.Type.isUndefined(json)) {
return new Optional_1.Optional(null, this._equalityComparer.orUndefined(), this._inspector.orUndefined());
}
const value = this._serializer.deserialize(json);
return new Optional_1.Optional(value, this._equalityComparer.orUndefined(), this._inspector.orUndefined());
}
}
exports.OptionalJsonSerializer = OptionalJsonSerializer;
_a = IJsonSerializer_1.jsonSerializer;
//# sourceMappingURL=OptionalJsonSerializer.js.map
;