UNPKG

@itrocks/framework

Version:

RAD framework for intuitive web application development, blending data and domain-driven design with modular architecture

43 lines 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ReflectClass = void 0; const reflect_1 = require("@itrocks/reflect"); const uses_1 = require("@itrocks/uses"); const reflect_property_1 = require("./reflect-property"); class ReflectClass extends reflect_1.ReflectClass { inheritPropertyTypes(propertyTypes) { super.inheritPropertyTypes(propertyTypes); for (const uses of this.uses) { Object.assign(propertyTypes, new ReflectClass(uses).propertyTypes); } } get parent() { const parentType = Object.getPrototypeOf(this.type); const parent = (parentType === Function.prototype) ? null : new ReflectClass(parentType); Object.defineProperty(this, 'parent', { configurable: true, enumerable: false, value: parent, writable: true }); return parent; } get properties() { const properties = new Array; for (const name of this.propertyNames) { properties.push(new reflect_property_1.ReflectProperty(this, name)); } Object.defineProperty(this, 'properties', { configurable: true, enumerable: false, value: properties, writable: true }); return properties; } get property() { const properties = {}; for (const property of this.properties) { properties[property.name] = property; } Object.defineProperty(this, 'property', { configurable: true, enumerable: false, value: properties, writable: true }); return properties; } get uses() { const value = (0, uses_1.usesOf)(this.type); Object.defineProperty(this, 'uses', { configurable: true, enumerable: false, value, writable: true }); return value; } } exports.ReflectClass = ReflectClass; //# sourceMappingURL=reflect-class.js.map