typescript-dotnet-core
Version:
A the core classes and utilities of a JavaScript-Friendly .NET Based TypeScript Library.
7 lines (6 loc) • 4.69 kB
JavaScript
"use strict";
/*!
* @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"),Enumerator_1=require("./Enumeration/Enumerator"),Compare_1=require("../Compare"),ArgumentNullException_1=require("../Exceptions/ArgumentNullException"),InvalidOperationException_1=require("../Exceptions/InvalidOperationException"),DisposableBase_1=require("../Disposable/DisposableBase"),NAME="CollectionBase",CMDC="Cannot modify a disposed collection.",CMRO="Cannot modify a read-only collection.",LINQ_PATH="../../System.Linq/Linq",CollectionBase=function(o){function t(t,e){void 0===e&&(e=Compare_1.areEqual);var r=o.call(this,NAME)||this;return r._equalityComparer=e,r._importEntries(t),r._updateRecursion=0,r._modifiedCount=0,r._version=0,r}return tslib_1.__extends(t,o),Object.defineProperty(t.prototype,"isEndless",{get:function(){return!1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"count",{get:function(){return this.getCount()},enumerable:!0,configurable:!0}),t.prototype.getIsReadOnly=function(){return!1},Object.defineProperty(t.prototype,"isReadOnly",{get:function(){return this.getIsReadOnly()},enumerable:!0,configurable:!0}),t.prototype.assertModifiable=function(){if(this.throwIfDisposed(CMDC),this.getIsReadOnly())throw new InvalidOperationException_1.default(CMRO);return!0},t.prototype.assertVersion=function(t){if(t!==this._version)throw new InvalidOperationException_1.default("Collection was modified.");return!0},t.prototype._onModified=function(){},t.prototype._signalModification=function(t){var e=this;if(t&&e._modifiedCount++,!e._modifiedCount||this._updateRecursion)return!1;e._modifiedCount=0,e._version++;try{e._onModified()}catch(t){console.error(t)}return!0},t.prototype._incrementModified=function(){this._modifiedCount++},Object.defineProperty(t.prototype,"isUpdating",{get:function(){return 0!=this._updateRecursion},enumerable:!0,configurable:!0}),t.prototype.handleUpdate=function(t){if(!t)return!1;var e=this;e.assertModifiable(),e._updateRecursion++;var r=!1;try{(r=t())&&e._modifiedCount++}finally{e._updateRecursion--}return e._signalModification(),r},t.prototype.add=function(t){var e=this;e.assertModifiable(),e._updateRecursion++;try{e._addInternal(t)&&e._modifiedCount++}finally{e._updateRecursion--}return e._signalModification(),e},t.prototype.remove=function(t,e){void 0===e&&(e=1/0);var r=this;r.assertModifiable(),r._updateRecursion++;var o=NaN;try{(o=r._removeInternal(t,e))&&r._modifiedCount++}finally{r._updateRecursion--}return r._signalModification(),o},t.prototype.clear=function(){var t=this;t.assertModifiable(),t._updateRecursion++;var e=NaN;try{(e=t._clearInternal())&&t._modifiedCount++}finally{t._updateRecursion--}return t._signalModification(),e},t.prototype._onDispose=function(){o.prototype._onDispose.call(this),this._clearInternal(),this._version=0,this._updateRecursion=0,this._modifiedCount=0},t.prototype._importEntries=function(t){var e=this,r=0;if(t)if(t instanceof Array)for(var o=0,n=t;o<n.length;o++){var i=n[o];this._addInternal(i)&&r++}else Enumerator_1.forEach(t,function(t){e._addInternal(t)&&r++});return r},t.prototype.importEntries=function(t){var e=this;if(!t)return 0;e.assertModifiable(),e._updateRecursion++;var r=NaN;try{(r=e._importEntries(t))&&e._modifiedCount++}finally{e._updateRecursion--}return e._signalModification(),r},t.prototype.filter=function(r){if(!r)throw new ArgumentNullException_1.default("predicate");var t=!this.getCount(),o=[];return t&&this.forEach(function(t,e){r(t,e)&&o.push(t)}),o},t.prototype.any=function(r){var t=this.getCount();if(!t)return!1;if(!r)return Boolean(t);var o=!1;return this.forEach(function(t,e){return!(o=r(t,e))}),o},t.prototype.some=function(t){return this.any(t)},t.prototype.contains=function(e){var r=this._equalityComparer;return this.any(function(t){return r(e,t)})},t.prototype.forEach=function(t,e){if(this.wasDisposed)return 0;if(!e)return Enumerator_1.forEach(this.getEnumerator(),t);var r=this.toArray();try{return Enumerator_1.forEach(r,t)}finally{r.length=0}},t.prototype.copyTo=function(t,e){if(void 0===e&&(e=0),!t)throw new ArgumentNullException_1.default("target");var r=this.getCount();if(r){var o=r+e;t.length<o&&(t.length=o);for(var n=this.getEnumerator();n.moveNext();)t[e++]=n.current}return t},t.prototype.toArray=function(){var t=this.getCount();return t?this.copyTo(65536<t?new Array(t):[]):[]},t}(DisposableBase_1.default);exports.CollectionBase=CollectionBase,exports.default=CollectionBase;
//# sourceMappingURL=CollectionBase.js.map