typescript-dotnet-core
Version:
A the core classes and utilities of a JavaScript-Friendly .NET Based TypeScript Library.
7 lines (6 loc) • 1.79 kB
JavaScript
/*!
* @author electricessence / https://github.com/electricessence/
* Licensing: MIT https://github.com/electricessence/TypeScript.NET-Core/blob/master/LICENSE.md
*/Object.defineProperty(exports,"__esModule",{value:!0});var tslib_1=require("tslib"),DisposableBase_1=require("./Disposable/DisposableBase"),ArgumentNullException_1=require("./Exceptions/ArgumentNullException"),NULL=null,NAME="ResolverBase",ResolverBase=function(o){function e(e,t,r){void 0===r&&(r=!1);var a=o.call(this,NAME)||this;if(a._valueFactory=e,a._trapExceptions=t,a._allowReset=r,!e)throw new ArgumentNullException_1.default("valueFactory");return a._isValueCreated=!1,a}return tslib_1.__extends(e,o),e.prototype.getError=function(){return this._error},Object.defineProperty(e.prototype,"error",{get:function(){return this.getError()},enumerable:!0,configurable:!0}),e.prototype.getValue=function(){var t=this;if(t.throwIfDisposed(),null===t._isValueCreated)throw new Error("Recursion detected.");if(!t._isValueCreated&&t._valueFactory){t._isValueCreated=null;try{var e=void 0;if(!t._isValueCreated&&(e=t._valueFactory)){t._isValueCreated=null,this._allowReset||(this._valueFactory=NULL);var r=e();return t._value=r,t._error=void 0,r}}catch(e){if(t._error=e,!t._trapExceptions)throw e}finally{t._isValueCreated=!0}}return t._value},Object.defineProperty(e.prototype,"canReset",{get:function(){return this._allowReset&&!!this._valueFactory},enumerable:!0,configurable:!0}),e.prototype._onDispose=function(){this._valueFactory=NULL,this._value=NULL,this._isValueCreated=NULL},e.prototype.tryReset=function(){var e=this;return!!e._valueFactory&&(e._isValueCreated=!1,e._value=NULL,!(e._error=void 0))},e}(DisposableBase_1.default);exports.default=ResolverBase;
//# sourceMappingURL=ResolverBase.js.map
;