UNPKG

@lab900/typescript-serializer

Version:

JSON serialization/deserialization of Typescript objects

25 lines (24 loc) 1.16 kB
import 'reflect-metadata'; export const ENTITY_PROPERTY_METADATA = 'serialize:field:json-property-name'; export const ENTITY_METADATA_KEYS = 'serialize:class:fields'; export const SERIALIZED_PARAM_METADATA = 'serialize:param'; function isMetadataPresentForProperty(target) { return propertyKey => Reflect.hasMetadata(ENTITY_PROPERTY_METADATA, target, propertyKey); } function getMetadataFromProperty(target, propertyKey) { return Reflect.getMetadata(ENTITY_PROPERTY_METADATA, target, propertyKey); } export function getEntityMetadata(prototype) { const properties = Array.from((Reflect.getMetadata(ENTITY_METADATA_KEYS, prototype) || new Set()).values()); return properties.filter(isMetadataPresentForProperty(prototype)).map(v => getMetadataFromProperty(prototype, v)); } export function defineProperty(target, propertyName) { const currentSet = Reflect.getMetadata(ENTITY_METADATA_KEYS, target); if (currentSet === undefined) { const fields = new Set([propertyName.toString()]); Reflect.defineMetadata(ENTITY_METADATA_KEYS, fields, target); } else { currentSet.add(propertyName.toString()); } }