@itrocks/framework
Version:
RAD framework for intuitive web application development, blending data and domain-driven design with modular architecture
43 lines • 1.84 kB
JavaScript
;
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