UNPKG

@triviality/serializer

Version:
49 lines 1.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var Serializeable_1 = require("../Serializeable"); function getReadFunction(metadata, classConstructor) { var deNormalize = metadata.deNormalize; if (deNormalize) { return function (data) { return classConstructor[deNormalize](data); }; } return function (plainProperties) { var instance = new classConstructor(); var ownPropertyNames = Object.getOwnPropertyNames(plainProperties); ownPropertyNames.forEach(function (key) { instance[key] = plainProperties[key]; }); return instance; }; } function getWriteFunction(metadata) { var normalize = metadata.normalize; if (normalize) { return function (data) { return data[normalize](data); }; } return function (object) { var ownPropertyNames = Object.getOwnPropertyNames(object); var plainProperties = {}; ownPropertyNames.forEach(function (key) { plainProperties[key] = object[key]; }); return plainProperties; }; } function createClassHandlers(classes) { return Object.getOwnPropertyNames(classes).map(function (tag) { var classConstructor = classes[tag]; var metadata = Serializeable_1.getSerializerMetadata(classConstructor); return { tag: tag, class: classConstructor, write: getWriteFunction(metadata), read: getReadFunction(metadata, classConstructor), }; }); } exports.createClassHandlers = createClassHandlers; //# sourceMappingURL=createClassHandlers.js.map