surrogate
Version:
Object method hooks made easy
35 lines • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.UnprocessableRule = void 0;
const helpers_1 = require("../../helpers");
const identifier_1 = require("../../identifier");
const asarray_1 = require("@jfrazx/asarray");
const base_1 = require("./base");
class UnprocessableRule extends base_1.ProxyRule {
shouldHandle() {
const manager = this.proxy.getEventManager(this.target);
return (0, helpers_1.isUndefined)(manager) || this.shouldMaintainContext(manager);
}
returnableValue() {
return Reflect.get(this.target, this.event);
}
shouldMaintainContext(manager) {
return manager.eventIsHandled(this.event)
? false
: this.eventSpecificContextDetermination(manager);
}
eventSpecificContextDetermination({ globalOptions }) {
const identifier = new identifier_1.MethodIdentifier(this.target);
const { maintainContext = false } = globalOptions;
return (0, helpers_1.isBool)(maintainContext)
? this.isNotAccessor(identifier, maintainContext)
: identifier.doesNotIncludeEvent(this.event, (0, asarray_1.asArray)(maintainContext));
}
isNotAccessor(identifier, maintainContext) {
return maintainContext
? identifier.doesNotIncludeEvent(this.event, identifier.instanceMethodNames())
: !maintainContext;
}
}
exports.UnprocessableRule = UnprocessableRule;
//# sourceMappingURL=unprocessableRule.js.map