UNPKG

objectypes

Version:

A type-safe library to transform and validate objects

40 lines (39 loc) 1.59 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findClassPropertiesMetadata = exports.saveClassPropertyMetadata = void 0; const utils_1 = require("./utils"); const propertyMetadata = new Map(); function saveClassPropertyMetadata(className, metadata) { const properties = propertyMetadata.get(className); if (!properties) { propertyMetadata.set(className, [metadata]); } else { properties.push(metadata); } } exports.saveClassPropertyMetadata = saveClassPropertyMetadata; function findClassPropertiesMetadata(klass, namedOnly) { var _a; const className = (_a = klass.name) !== null && _a !== void 0 ? _a : klass.constructor.name; const properties = propertyMetadata.get(className); if (!properties) { return undefined; } const parentClassPropertiesMetadata = findParentClassPropertiesMetadata(klass, namedOnly); const classProperties = filterClassPropertiesIfNamed(properties, namedOnly); return parentClassPropertiesMetadata ? [...classProperties, ...parentClassPropertiesMetadata] : classProperties; } exports.findClassPropertiesMetadata = findClassPropertiesMetadata; function findParentClassPropertiesMetadata(klass, namedOnly) { const parentClass = (0, utils_1.findParentClass)(klass); if (parentClass === undefined) { return; } return findClassPropertiesMetadata(parentClass, namedOnly); } function filterClassPropertiesIfNamed(properties, namedOnly) { return namedOnly ? properties.filter(property => property.name) : properties; }