UNPKG

ts-std-lib

Version:
36 lines 1.67 kB
"use strict"; 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