UNPKG

@calf/serializable

Version:

Serializable module of Calf framework.

91 lines (90 loc) 3.15 kB
"use strict"; 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;