@triviality/serializer
Version:
Typescript serializer with an interface
49 lines • 1.68 kB
JavaScript
;
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