@calf/serializable
Version:
Serializable module of Calf framework.
91 lines (90 loc) • 3.15 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
exports.EntityParser = void 0;
// External modules
require("reflect-metadata");
// Symbols
var entity_symbol_1 = require("../symbols/entity.symbol");
var timestamp_symbol_1 = require("../symbols/timestamp.symbol");
var indexes_symbol_1 = require("../symbols/indexes.symbol");
var extends_symbol_1 = require("../symbols/extends.symbol");
// Parsers
var base_parser_1 = require("./base.parser");
/**
* Entity parser
*/
var EntityParser = /** @class */ (function (_super) {
__extends(EntityParser, _super);
function EntityParser() {
return _super !== null && _super.apply(this, arguments) || this;
}
/**
* Parse entity
* @param target
*/
EntityParser.prototype.parse = function (target) {
// First get sub definitions
// Entity
var entity = this.getEntity(target);
// Check entity
if (!entity) {
return undefined;
}
// Timestamp
var timestamp = this.getTimestamp(target);
// Get indexes
var indexes = this.getIndexes(target);
// Get extends
var lExtends = this.getExtends(target);
// Merge definitions
return Object.assign({ indexes: indexes, extends: lExtends }, entity, timestamp);
};
/**
* Get entity
* @param target
*/
EntityParser.prototype.getEntity = function (target) {
return Reflect.getMetadata(entity_symbol_1.ENTITY_METADATA_KEY, target);
};
/**
* Get timestamp
* @param target
*/
EntityParser.prototype.getTimestamp = function (target) {
// Init default timestamp definition
var timestamp = { isTimeStamped: false };
// Assign data from metadata
return Object.assign(timestamp, Reflect.getMetadata(timestamp_symbol_1.TIMESTAMP_METADATA_KEY, target) || {});
};
/**
* Get indexes
* @param target
*/
EntityParser.prototype.getIndexes = function (target) {
// Get metadata
return Reflect.getMetadata(indexes_symbol_1.INDEXES_METADATA_KEY, target) || [];
};
/**
* Get extends
* @param target
*/
EntityParser.prototype.getExtends = function (target) {
// Get metadata
return Reflect.getMetadata(extends_symbol_1.EXTENDS_METADATA_KEY, target) || [];
};
return EntityParser;
}(base_parser_1.BaseParser));
exports.EntityParser = EntityParser;