UNPKG

tsreflect-ioc

Version:

Inversion of control and Dependency injection framework for typescript based on the tsreflect-compiler package.

99 lines (92 loc) 2.97 kB
var extend = require('extend'); var ArrayExtensions = (function () { function ArrayExtensions() { } ArrayExtensions.prototype.select = function (expr) { if (expr === undefined) throw new ReferenceError('Expression for selection needs to get defined'); var resultSet = []; this.each(function (item, index, self) { resultSet.push(expr(item, index, self)); return true; }); return resultSet; }; ArrayExtensions.prototype.any = function (expr) { var self = this; if (expr === undefined) { return self.length > 0; } var fn; if (typeof expr == 'function') { fn = expr; } else { fn = function (item) { return item == expr; }; } var len = self.length; for (var i = 0; i < len; i++) { var current = this[i], result = fn(current, i, self); if (result == true) { return true; } } return false; }; ArrayExtensions.prototype.first = function (expr) { var res = this.firstOrDefault(expr); if (res == null) throw new Error('The collection is empty or your expression does not match, first() cant deliver any entry.'); return res; }; ArrayExtensions.prototype.firstOrDefault = function (expr) { var self = this; if (expr === undefined && self.length > 0) { return self[0]; } else { var fn; if (typeof expr == 'function') { fn = expr; } else { fn = function (item) { return item == expr; }; } var len = self.length; for (var i = 0; i < len; i++) { var current = this[i], result = fn(current, i, self); if (result == true) { return current; } } } return null; }; ArrayExtensions.prototype.each = function (fn) { var self = this; var length = self.length; for (var i = 0; i < length; i++) { if (fn(self[i], i, self) === false) { return false; } } return true; }; ArrayExtensions.prototype.where = function (expr) { var self = this; var result = []; var fn = typeof expr == 'function' ? expr : function (item) { return item == expr; }; this.each(function (item, index, _self) { if (fn(item, index, _self)) result.push(item); return true; }); return result; }; return ArrayExtensions; })(); ; extend(false, Array.prototype, ArrayExtensions.prototype);