control-freak-ide/server/nodejs/_build/di/extra/conditional.js
plastic-hub-dev-node-saturn 538369cff7 latest
2021-05-12 18:35:18 +02:00

44 lines
1.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const core_1 = require("../core");
const utils_1 = require("../core/utils");
/**
* Define a conditional
* @param field
* @param expect
* @returns {(target:any, propertyKey:string, descriptor:PropertyDescriptor)=>undefined}
*/
function conditional(field, expect) {
return core_1.decorateClassMember(new ConditionalAttribute(field, expect));
}
exports.conditional = conditional;
/**
* PrerequisiteAttribute
*/
class ConditionalAttribute {
constructor(_field, _expect) {
this._field = _field;
this._expect = _expect;
}
get field() {
return this._field;
}
get expect() {
return this._expect;
}
beforeDecorate(target, targetKey, descriptor) {
return true;
}
getInterceptor() {
return this;
}
intercept(invocation, parameters) {
const actualValue = Reflect.get(invocation.target, this.field);
if (utils_1.IsEqual(actualValue, this.expect)) {
return invocation.invoke(parameters);
}
return undefined;
}
}
exports.ConditionalAttribute = ConditionalAttribute;
//# sourceMappingURL=conditional.js.map