UNPKG

armisa-models

Version:
63 lines (62 loc) 1.86 kB
"use strict"; 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;