armisa-models
Version:
models of armisa!
63 lines (62 loc) • 1.86 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ValidationChain = exports.ValidationEventArgs = exports.CancellableEvent = void 0;
const enums_1 = require("./enums");
class CancellableEvent {
constructor() {
this._eventHandlers = new Array();
}
add(eventHandler) {
if (this._eventHandlers.indexOf(eventHandler) === -1) {
this._eventHandlers.push(eventHandler);
}
}
remove(eventHandler) {
var i = this._eventHandlers.indexOf(eventHandler);
if (i !== -1) {
this._eventHandlers.splice(i, 1);
}
}
raise(e) {
var eventHandlers = this._eventHandlers.slice(0);
for (var i = 0, j = eventHandlers.length; i < j && !e.cancel; i++) {
try {
eventHandlers[i](e);
}
catch (ex) {
console.error(ex, e);
}
}
}
}
exports.CancellableEvent = CancellableEvent;
class ValidationEventArgs {
constructor() {
this.state = enums_1.EnumValidateState.valid;
this.cancel = false;
this.error = '';
this.result = () => {
if (this.state === enums_1.EnumValidateState.valid) {
return true;
}
else {
return [this.error, this.state];
}
};
}
}
exports.ValidationEventArgs = ValidationEventArgs;
class ValidationChain {
constructor() {
this._validators = new CancellableEvent();
}
get validators() {
return this._validators;
}
validate() {
const eventArgs = new ValidationEventArgs();
this._validators.raise(eventArgs);
return eventArgs.result();
}
}
exports.ValidationChain = ValidationChain;