├── .gitignore ├── .npmignore ├── .sonarcloud.properties ├── README-Developers.md ├── dist ├── list.d.ts ├── list.js └── list.ts ├── gulpfile.js ├── index.d.ts ├── license.md ├── package-lock.json ├── package.json ├── readme.md ├── tests └── tests.ts ├── tsconfig.json └── tslint.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/* 2 | 3 | # Compiled source # 4 | ################### 5 | *.com 6 | *.class 7 | *.dll 8 | *.exe 9 | *.o 10 | *.so 11 | *.min.js 12 | 13 | # Packages # 14 | ############ 15 | # it's better to unpack these files and commit the raw source 16 | # git has its own built in compression methods 17 | *.7z 18 | *.dmg 19 | *.gz 20 | *.iso 21 | *.jar 22 | *.rar 23 | *.tar 24 | *.zip 25 | 26 | # Logs and databases # 27 | ###################### 28 | *.log 29 | *.sql 30 | *.sqlite 31 | 32 | # OS generated files # 33 | ###################### 34 | .DS_Store 35 | .DS_Store? 36 | ._* 37 | .Spotlight-V100 38 | .Trashes 39 | ehthumbs.db 40 | Thumbs.db 41 | *.map 42 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | tests\* 2 | dist\list.ts 3 | README-Developers.md 4 | gulpfile.js 5 | dist\list.js 6 | tsconfig.json 7 | tslint.json -------------------------------------------------------------------------------- /.sonarcloud.properties: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /README-Developers.md: -------------------------------------------------------------------------------- 1 | # Readme for developers 2 | 3 | ## Getting Started 4 | 5 | 1. clone this repo 6 | 1. execute `npm i gulp -g` 7 | 1. execute `npm install` 8 | 1. code! 9 | 1. build using `npm run build` 10 | 1. test using `npm run test` -------------------------------------------------------------------------------- /dist/list.d.ts: -------------------------------------------------------------------------------- 1 | export declare class List extends Array { 2 | /** 3 | * instantiates a list either with, or with out Array or List 4 | * var fruits = new List(favoriteFruits); 5 | * var fruits = new List(); 6 | * @param array can be a list, an array, or null. 7 | */ 8 | constructor(array?: List | Array); 9 | /** 10 | * Adds item with typeof T to current List. 11 | * @param item element to add 12 | */ 13 | Add(item: T): boolean; 14 | /** 15 | * Adds all passed elements to list, elements can be either an Array, a List or even multiple elements e.g. 16 | * fruits.AddRange(["apple", "banana", "lemon"]); fruits.AddRange(fruits2); fruits.AddRange("apple", "banana", "lemon"); 17 | * @param args either Array, List or multiple elements, 18 | */ 19 | AddRange(...args: any[]): boolean; 20 | /** 21 | * Checks if list contains any elements with delegate fruits.Any(x => x.Color === Color.Yellow) // e.g. 2 22 | * @param delegate 23 | * @param args 24 | */ 25 | Any(delegate: (value: T) => boolean): boolean; 26 | /** 27 | * Checks if list contains any elements 28 | */ 29 | Any(): boolean; 30 | /** 31 | * Removes all elements from list. 32 | */ 33 | Clear(): boolean; 34 | /** 35 | * Returns true if list contains passed element. 36 | * @param item 37 | */ 38 | Contains(item: T): boolean; 39 | /** 40 | * Returns listcount by delegate. fruits.Where(x => x.Color === Color.Yellow) // e.g. 2 41 | * @param delegate boolean to compare by delegate 42 | * @param args 43 | */ 44 | Count(delegate: (value: T) => boolean): number; 45 | /** 46 | * Returns count of the List. 47 | */ 48 | Count(): number; 49 | /** 50 | * Summarizes numbers within a list by delegate, ignoring invalid values, and converts strings if possible 51 | * @param delegate must be a number 52 | * @param args 53 | */ 54 | Sum(delegate: (value: number) => number): number; 55 | /** 56 | * Summarizes numbers within a list, ignoring invalid values, and converts strings if possible 57 | */ 58 | Sum(): number; 59 | /** 60 | * Returns new list with removed duplicates and select items from delegate if set. 61 | * Works on complex objects only, if elements inside are equal. 62 | * @param delegate distinct values to return. 63 | * @param args 64 | */ 65 | Distinct(delegate: (value: T) => any): List; 66 | /** 67 | * Returns new list with removed duplicates. 68 | * Works on complex objects only, if elements inside are equal. 69 | */ 70 | Distinct(): List; 71 | /** 72 | * Compares two lists. 73 | * 74 | * @param list List to compare with 75 | * @param deepCompare default true. If false, equality will be checked by items, not by position -> 76 | * [ "Apple", "Banana" ].Equals([ "Banana", "Apple" ]) will then return true. 77 | */ 78 | Equals(list: List, deepCompare: boolean): boolean; 79 | /** 80 | * Compares two lists 81 | * @param list List to compare with 82 | */ 83 | Equals(list: List): boolean; 84 | /** 85 | * Returns first element of list. 86 | */ 87 | First(): T; 88 | /** 89 | * Returns element at index 90 | * @param index 91 | */ 92 | Get(index: number): T; 93 | /** 94 | * Returns index of passed element in list. 95 | * @param item 96 | */ 97 | IndexOf(item: T): number; 98 | /** 99 | * Returns last element of list. 100 | */ 101 | Last(): T; 102 | /** 103 | * Removes passed item from list 104 | * @param item Item to remove 105 | */ 106 | Remove(item: T): boolean; 107 | /** 108 | * Removes item at passed index. 109 | * @param index 110 | */ 111 | RemoveAt(index: number): boolean; 112 | /** 113 | * Returns new list with by delegate selected value. 114 | * @param delegate 115 | * @param args 116 | */ 117 | Select(delegate: (value: T) => any): List; 118 | /** 119 | * Converts List to Array. Needed for serialization e.g. with ajax calls. 120 | */ 121 | ToArray(): Array; 122 | /** 123 | * Returns list by delegate fruits.Where(x => x.Color === Color.Red); 124 | * @param delegate 125 | * @param args 126 | */ 127 | Where(delegate: (value: T) => boolean): List; 128 | /** 129 | * Creates list of numbers, within a specified range. 130 | * @param start where to start 131 | * @param count count of numbers to create 132 | */ 133 | static Range(start: number, count: number): List; 134 | } 135 | 136 | declare global { 137 | interface Array extends ArrayConstructor { 138 | ToList(): List; 139 | } 140 | } -------------------------------------------------------------------------------- /dist/list.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __extends = (this && this.__extends) || (function () { 3 | var extendStatics = Object.setPrototypeOf || 4 | ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || 5 | function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; 6 | return function (d, b) { 7 | extendStatics(d, b); 8 | function __() { this.constructor = d; } 9 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); 10 | }; 11 | })(); 12 | Object.defineProperty(exports, "__esModule", { value: true }); 13 | var List = (function (_super) { 14 | __extends(List, _super); 15 | function List(array) { 16 | var _this = _super.call(this) || this; 17 | if (array) 18 | _this.AddRange(array); 19 | return _this; 20 | } 21 | List.prototype.Add = function (item) { 22 | try { 23 | this._array.push(item); 24 | return true; 25 | } 26 | catch (ex) { 27 | return false; 28 | } 29 | }; 30 | List.prototype.AddRange = function () { 31 | var args = []; 32 | for (var _i = 0; _i < arguments.length; _i++) { 33 | args[_i] = arguments[_i]; 34 | } 35 | try { 36 | if (args === null || args[0] == null) 37 | return false; 38 | if (Object.prototype.toString.call(args) === "[object Array]") 39 | args = args[0]; 40 | else if (args.constructor.name === "Array" || 41 | args.constructor.name === "List") 42 | args = args[0]; 43 | for (var i = 0; i < args.length; i++) 44 | this._array.push(args[i]); 45 | return true; 46 | } 47 | catch (ex) { 48 | return false; 49 | } 50 | }; 51 | List.prototype.Any = function (delegate, args) { 52 | if (delegate === void 0) { delegate = null; } 53 | try { 54 | if (delegate == null) 55 | return this._array.length > 0; 56 | if (!this.validDelegate(delegate)) 57 | return false; 58 | for (var i = 0; i < this._array.length; i++) { 59 | var c = this._array[i]; 60 | if (c === null) 61 | continue; 62 | var elem = delegate.call(args, c); 63 | if (elem != null && elem !== false) 64 | return true; 65 | } 66 | return false; 67 | } 68 | catch (ex) { 69 | return false; 70 | } 71 | }; 72 | List.prototype.Clear = function () { 73 | try { 74 | for (var i = this._array.length; i >= 0; i--) 75 | this._array.splice(i, 1); 76 | return true; 77 | } 78 | catch (ex) { 79 | return false; 80 | } 81 | }; 82 | List.prototype.Contains = function (item) { 83 | try { 84 | return this._array.indexOf(item) > -1; 85 | } 86 | catch (ex) { 87 | return false; 88 | } 89 | }; 90 | List.prototype.Count = function (delegate, args) { 91 | if (delegate === void 0) { delegate = null; } 92 | try { 93 | if (delegate == null) 94 | return this._array.length; 95 | if (!this.validDelegate(delegate)) 96 | return 0; 97 | var length_1 = 0; 98 | for (var i = 0; i < this._array.length; i++) { 99 | var c = this._array[i]; 100 | if (c === null) 101 | continue; 102 | var elem = delegate.call(args, c); 103 | if (elem != null && elem !== false) 104 | length_1++; 105 | } 106 | return length_1; 107 | } 108 | catch (ex) { 109 | return 0; 110 | } 111 | }; 112 | List.prototype.Sum = function (delegate, args) { 113 | if (delegate === void 0) { delegate = null; } 114 | try { 115 | if (delegate && !this.validDelegate(delegate)) 116 | return 0; 117 | var count = 0; 118 | for (var i = 0; i < this._array.length; i++) { 119 | var c = +this._array[i]; 120 | if (delegate) 121 | c = +delegate.call(args, c); 122 | if (typeof c !== "number" || isNaN(c) || c === null) 123 | continue; 124 | count += c; 125 | } 126 | return count; 127 | } 128 | catch (ex) { 129 | throw new Error(ex); 130 | } 131 | }; 132 | List.prototype.Distinct = function (delegate, args) { 133 | if (delegate === void 0) { delegate = null; } 134 | try { 135 | var list = new Array(); 136 | if (delegate != null && !this.validDelegate(delegate)) 137 | return list.ToList(); 138 | for (var i = 0, l = this._array.length; i < l; i++) { 139 | var c = this._array[i]; 140 | if (c === null) 141 | continue; 142 | var elem = delegate != null ? delegate.call(args, c) : c; 143 | if (JSON.stringify(list).indexOf(JSON.stringify(elem)) < 0) 144 | list.push(elem); 145 | } 146 | return list.ToList(); 147 | } 148 | catch (ex) { 149 | return new List(); 150 | } 151 | }; 152 | List.prototype.Equals = function (list, deepCompare) { 153 | if (deepCompare === void 0) { deepCompare = true; } 154 | try { 155 | return this.equals(list, this._array, deepCompare); 156 | } 157 | catch (ex) { 158 | return false; 159 | } 160 | }; 161 | List.prototype.First = function () { 162 | try { 163 | return this._array.First(); 164 | } 165 | catch (ex) { 166 | return null; 167 | } 168 | }; 169 | List.prototype.Get = function (index) { 170 | try { 171 | return this._array[index]; 172 | } 173 | catch (ex) { 174 | return undefined; 175 | } 176 | }; 177 | List.prototype.IndexOf = function (item) { 178 | try { 179 | return this._array.indexOf(item); 180 | } 181 | catch (ex) { 182 | return -1; 183 | } 184 | }; 185 | List.prototype.Last = function () { 186 | try { 187 | return this._array.Last(); 188 | } 189 | catch (ex) { 190 | return null; 191 | } 192 | }; 193 | List.prototype.Remove = function (item) { 194 | try { 195 | var expectedLength = this._array.length - 1; 196 | var index = this._array.indexOf(item); 197 | this._array.splice(index, 1); 198 | return expectedLength === this._array.length; 199 | } 200 | catch (ex) { 201 | return false; 202 | } 203 | }; 204 | List.prototype.RemoveAt = function (index) { 205 | try { 206 | this._array.splice(index, 1); 207 | return true; 208 | } 209 | catch (ex) { 210 | return false; 211 | } 212 | }; 213 | List.prototype.Select = function (delegate, args) { 214 | var list = new Array(); 215 | try { 216 | if (!this.validDelegate(delegate)) 217 | return list.ToList(); 218 | for (var i = 0; i < this._array.length; i++) { 219 | var c = this._array[i]; 220 | if (c === null) 221 | continue; 222 | list.push(delegate.call(args, c)); 223 | } 224 | return list.ToList(); 225 | } 226 | catch (ex) { 227 | return list.ToList(); 228 | } 229 | }; 230 | List.prototype.ToArray = function () { 231 | try { 232 | var array = new Array(); 233 | for (var i = 0; i < this._array.length; i++) 234 | array.push(this._array[i]); 235 | return array; 236 | } 237 | catch (ex) { 238 | return null; 239 | } 240 | }; 241 | List.prototype.Where = function (delegate, args) { 242 | try { 243 | var list = new Array(); 244 | if (!this.validDelegate(delegate)) 245 | return list.ToList(); 246 | for (var i = 0; i < this._array.length; i++) { 247 | var c = this._array[i]; 248 | if (c === null) 249 | continue; 250 | if (delegate.call(args, c)) 251 | list.push(c); 252 | } 253 | return list.ToList(); 254 | } 255 | catch (ex) { 256 | return new List(); 257 | } 258 | }; 259 | List.Range = function (start, count) { 260 | try { 261 | if (count <= 0) 262 | throw new Error("Count cant be less or equal to zero."); 263 | var numbers = new List(); 264 | for (var i = start; i < count + start; i++) 265 | numbers.push(i); 266 | return numbers; 267 | } 268 | catch (ex) { 269 | throw new Error(ex); 270 | } 271 | }; 272 | List.prototype.equals = function (list, array, comparePosition) { 273 | if (!list) 274 | return false; 275 | if (array.length !== list.length) 276 | return false; 277 | for (var i = 0, l = array.length; i < l; i++) { 278 | if (array[i] instanceof Array && list[i] instanceof Array) { 279 | if (!this.equals(list[i], array[i], comparePosition)) 280 | return false; 281 | } 282 | else if (array[i] instanceof Object) { 283 | for (var key in array[i]) { 284 | if (array[i].hasOwnProperty(key) && array[i][key] instanceof Array) { 285 | if (!this.equals(list[i][key], array[i][key], comparePosition)) 286 | return false; 287 | } 288 | } 289 | } 290 | else if (comparePosition && array[i] !== list[i]) { 291 | return false; 292 | } 293 | else if (!comparePosition && array.indexOf(list[i]) <= -1) { 294 | return false; 295 | } 296 | } 297 | return true; 298 | }; 299 | List.prototype.validDelegate = function (delegate) { 300 | if (this._array.length <= 0) 301 | return false; 302 | if (typeof delegate !== "function") 303 | throw new TypeError(delegate + " is not a function"); 304 | return true; 305 | }; 306 | return List; 307 | }(Array)); 308 | exports.List = List; 309 | Array.prototype.Add = function (item) { 310 | List.prototype._array = this; 311 | var returnValue = List.prototype.Add(item); 312 | List.prototype._array = null; 313 | return returnValue; 314 | }; 315 | Array.prototype.AddRange = function () { 316 | List.prototype._array = this; 317 | var args = arguments; 318 | if (Object.prototype.toString.call(args) === "[object Array]" || 319 | Object.prototype.toString.call(args[0]) === "[object Array]") 320 | args = args[0]; 321 | var returnValue = List.prototype.AddRange(args); 322 | List.prototype._array = null; 323 | return returnValue; 324 | }; 325 | Array.prototype.Any = function (delegate, args) { 326 | List.prototype._array = this; 327 | var returnValue = List.prototype.Any(delegate, args); 328 | List.prototype._array = null; 329 | return returnValue; 330 | }; 331 | Array.prototype.Clear = function () { 332 | List.prototype._array = this; 333 | var returnValue = List.prototype.Clear(); 334 | List.prototype._array = null; 335 | return returnValue; 336 | }; 337 | Array.prototype.Contains = function (item) { 338 | List.prototype._array = this; 339 | var returnValue = List.prototype.Contains(item); 340 | List.prototype._array = null; 341 | return returnValue; 342 | }; 343 | Array.prototype.Count = function (delegate, args) { 344 | List.prototype._array = this; 345 | var returnValue = List.prototype.Count(delegate, args); 346 | List.prototype._array = null; 347 | return returnValue; 348 | }; 349 | Array.prototype.Sum = function (delegate, args) { 350 | List.prototype._array = this; 351 | var returnValue = List.prototype.Sum(delegate, args); 352 | List.prototype._array = null; 353 | return returnValue; 354 | }; 355 | Array.prototype.Distinct = function (delegate, args) { 356 | List.prototype._array = this; 357 | var returnValue = List.prototype.Distinct(delegate, args); 358 | List.prototype._array = null; 359 | return returnValue; 360 | }; 361 | Array.prototype.Equals = function (list, comparePosition) { 362 | List.prototype._array = this; 363 | var returnValue = List.prototype.Equals(list, comparePosition); 364 | List.prototype._array = null; 365 | return returnValue; 366 | }; 367 | Array.prototype.First = function () { 368 | return this.length <= 0 ? undefined : this[0]; 369 | }; 370 | Array.prototype.Get = function (index) { 371 | List.prototype._array = this; 372 | var returnValue = List.prototype.Get(index); 373 | List.prototype._array = null; 374 | return returnValue; 375 | }; 376 | Array.prototype.IndexOf = function (item) { 377 | List.prototype._array = this; 378 | var returnValue = List.prototype.IndexOf(item); 379 | List.prototype._array = null; 380 | return returnValue; 381 | }; 382 | Array.prototype.Last = function () { 383 | return this.length <= 0 ? undefined : this[this.length - 1]; 384 | }; 385 | Array.prototype.Remove = function (item) { 386 | List.prototype._array = this; 387 | var returnValue = List.prototype.Remove(item); 388 | List.prototype._array = null; 389 | return returnValue; 390 | }; 391 | Array.prototype.RemoveAt = function (index) { 392 | List.prototype._array = this; 393 | var returnValue = List.prototype.RemoveAt(index); 394 | List.prototype._array = null; 395 | return returnValue; 396 | }; 397 | Array.prototype.Select = function (delegate, args) { 398 | List.prototype._array = this; 399 | var returnValue = List.prototype.Select(delegate, args); 400 | List.prototype._array = null; 401 | return returnValue; 402 | }; 403 | Array.prototype.ToArray = function () { 404 | List.prototype._array = this; 405 | var returnValue = List.prototype.ToArray(); 406 | List.prototype._array = null; 407 | return returnValue; 408 | }; 409 | Array.prototype.ToList = function () { 410 | var list = new List(); 411 | for (var i = 0; i < this.length; i++) 412 | list.push(this[i]); 413 | return list; 414 | }; 415 | Array.prototype.Where = function (delegate, args) { 416 | List.prototype._array = this; 417 | var returnValue = List.prototype.Where(delegate, args); 418 | List.prototype._array = null; 419 | return returnValue; 420 | }; 421 | -------------------------------------------------------------------------------- /dist/list.ts: -------------------------------------------------------------------------------- 1 | /**See declaration in declaration File list.d.ts */ 2 | export class List extends Array { 3 | private _array: any; 4 | 5 | constructor(array?: List | Array) { 6 | super(); 7 | if (array) this.AddRange(array); 8 | } 9 | 10 | public Add(item: T): boolean { 11 | try { 12 | this._array.push(item); 13 | return true; 14 | } catch (ex) { 15 | return false; 16 | } 17 | } 18 | 19 | public AddRange(...args: any[]): boolean { 20 | try { 21 | if (args === null || args[0] == null) return false; 22 | 23 | if (Object.prototype.toString.call(args) === "[object Array]") 24 | args = args[0]; 25 | else if ( 26 | (args.constructor).name === "Array" || 27 | (args.constructor).name === "List" 28 | ) 29 | args = args[0]; 30 | 31 | for (let i = 0; i < args.length; i++) this._array.push(args[i]); 32 | return true; 33 | } catch (ex) { 34 | return false; 35 | } 36 | } 37 | 38 | public Any(delegate: (value: T) => boolean = null, args?: any): boolean { 39 | try { 40 | if (delegate == null) return this._array.length > 0; 41 | 42 | if (!this.validDelegate(delegate)) return false; 43 | 44 | for (let i = 0; i < this._array.length; i++) { 45 | const c = this._array[i]; 46 | if (c === null) continue; 47 | 48 | const elem = delegate.call(args, c); 49 | if (elem != null && elem !== false) return true; 50 | } 51 | 52 | return false; 53 | } catch (ex) { 54 | return false; 55 | } 56 | } 57 | 58 | public Clear(): boolean { 59 | try { 60 | for (let i = this._array.length; i >= 0; i--) this._array.splice(i, 1); 61 | 62 | return true; 63 | } catch (ex) { 64 | return false; 65 | } 66 | } 67 | 68 | public Contains(item: T): boolean { 69 | try { 70 | return this._array.indexOf(item) > -1; 71 | } catch (ex) { 72 | return false; 73 | } 74 | } 75 | 76 | public Count(delegate: (value: T) => boolean = null, args?: any): number { 77 | try { 78 | if (delegate == null) return this._array.length; 79 | 80 | if (!this.validDelegate(delegate)) return 0; 81 | 82 | let length = 0; 83 | for (let i = 0; i < this._array.length; i++) { 84 | const c = this._array[i]; 85 | if (c === null) continue; 86 | 87 | const elem = delegate.call(args, c); 88 | if (elem != null && elem !== false) length++; 89 | } 90 | 91 | return length; 92 | } catch (ex) { 93 | return 0; 94 | } 95 | } 96 | 97 | public Sum(delegate: (value: number) => number = null, args?: number[]): number { 98 | try { 99 | if (delegate && !this.validDelegate(delegate)) return 0; 100 | 101 | let count = 0; 102 | for (let i = 0; i < this._array.length; i++) { 103 | let c = +this._array[i]; 104 | 105 | if (delegate) c = +delegate.call(args, c); 106 | 107 | if (typeof c !== "number" || isNaN(c) || c === null) continue; 108 | 109 | count += c; 110 | } 111 | 112 | return count; 113 | } catch (ex) { 114 | throw new Error(ex); 115 | } 116 | } 117 | 118 | public Distinct(delegate: (value: T) => any = null, args?: any[]): List { 119 | try { 120 | const list = new Array(); 121 | if (delegate != null && !this.validDelegate(delegate)) 122 | return (list).ToList(); 123 | 124 | for (let i = 0, l = this._array.length; i < l; i++) { 125 | const c = this._array[i]; 126 | if (c === null) continue; 127 | 128 | const elem = delegate != null ? delegate.call(args, c) : c; 129 | 130 | if (JSON.stringify(list).indexOf(JSON.stringify(elem)) < 0) 131 | list.push(elem); 132 | } 133 | 134 | return (list as any).ToList(); 135 | } catch (ex) { 136 | return new List(); 137 | } 138 | } 139 | 140 | public Equals(list: List, deepCompare: boolean = true): boolean { 141 | try { 142 | return this.equals(list, this._array, deepCompare); 143 | } catch (ex) { 144 | return false; 145 | } 146 | } 147 | 148 | public First(): T { 149 | try { 150 | return this._array.First(); 151 | } catch (ex) { 152 | return null; 153 | } 154 | } 155 | 156 | public Get(index: number): T { 157 | try { 158 | return this._array[index]; 159 | } catch (ex) { 160 | return undefined; 161 | } 162 | } 163 | 164 | public IndexOf(item: T): number { 165 | try { 166 | return this._array.indexOf(item); 167 | } catch (ex) { 168 | return -1; 169 | } 170 | } 171 | 172 | public Last(): T { 173 | try { 174 | return this._array.Last(); 175 | } catch (ex) { 176 | return null; 177 | } 178 | } 179 | 180 | public Remove(item: T): boolean { 181 | try { 182 | const expectedLength = this._array.length - 1; 183 | const index = this._array.indexOf(item); 184 | this._array.splice(index, 1); 185 | return expectedLength === this._array.length; 186 | } catch (ex) { 187 | return false; 188 | } 189 | } 190 | 191 | public RemoveAt(index: number): boolean { 192 | try { 193 | this._array.splice(index, 1); 194 | return true; 195 | } catch (ex) { 196 | return false; 197 | } 198 | } 199 | 200 | public Select(delegate: (value: T) => any, args?: any): List { 201 | const list = new Array(); 202 | try { 203 | if (!this.validDelegate(delegate)) return (list as any).ToList(); 204 | 205 | for (let i = 0; i < this._array.length; i++) { 206 | const c = this._array[i]; 207 | if (c === null) continue; 208 | 209 | list.push(delegate.call(args, c)); 210 | } 211 | 212 | return (list).ToList(); 213 | } catch (ex) { 214 | return (list).ToList(); 215 | } 216 | } 217 | 218 | public ToArray(): Array { 219 | try { 220 | const array = new Array(); 221 | for (let i = 0; i < this._array.length; i++) array.push(this._array[i]); 222 | return array; 223 | } catch (ex) { 224 | return null; 225 | } 226 | } 227 | 228 | public Where(delegate: (value: T) => boolean, args?: any): List { 229 | try { 230 | const list = new Array(); 231 | if (!this.validDelegate(delegate)) return (list as any).ToList(); 232 | 233 | for (let i = 0; i < this._array.length; i++) { 234 | const c = this._array[i]; 235 | if (c === null) continue; 236 | 237 | if (delegate.call(args, c)) list.push(c); 238 | } 239 | 240 | return (list).ToList(); 241 | } catch (ex) { 242 | return new List(); 243 | } 244 | } 245 | 246 | public static Range(start: number, count: number): List { 247 | try { 248 | if (count <= 0) throw new Error("Count cant be less or equal to zero."); 249 | 250 | var numbers = new List(); 251 | for (let i = start; i < count + start; i++) numbers.push(i); 252 | 253 | return numbers; 254 | } catch (ex) { 255 | throw new Error(ex); 256 | } 257 | } 258 | 259 | private equals(list: any[], array: any[], comparePosition: boolean): boolean { 260 | if (!list) return false; 261 | 262 | if (array.length !== list.length) return false; 263 | 264 | for (let i = 0, l = array.length; i < l; i++) { 265 | if (array[i] instanceof Array && list[i] instanceof Array) { 266 | if (!this.equals(list[i], array[i], comparePosition)) 267 | // recursive call 268 | return false; 269 | } else if (array[i] instanceof Object) { 270 | for (const key in array[i]) { 271 | if (array[i].hasOwnProperty(key) && array[i][key] instanceof Array) { 272 | if (!this.equals(list[i][key], array[i][key], comparePosition)) 273 | // recursive call 274 | return false; 275 | } 276 | } 277 | } else if (comparePosition && array[i] !== list[i]) { 278 | return false; 279 | } else if (!comparePosition && array.indexOf(list[i]) <= -1) { 280 | return false; 281 | } 282 | } 283 | 284 | return true; 285 | } 286 | 287 | private validDelegate(delegate: any): boolean { 288 | if (this._array.length <= 0) return false; 289 | 290 | if (typeof delegate !== "function") 291 | throw new TypeError(`${delegate} is not a function`); 292 | 293 | return true; 294 | } 295 | } 296 | 297 | (Array.prototype as any).Add = function(item: any) { 298 | (List.prototype as any)._array = this; 299 | const returnValue = List.prototype.Add(item); 300 | (List.prototype as any)._array = null; 301 | return returnValue; 302 | }; 303 | (Array.prototype as any).AddRange = function() { 304 | (List.prototype as any)._array = this; 305 | let args = arguments; 306 | if ( 307 | Object.prototype.toString.call(args) === "[object Array]" || 308 | Object.prototype.toString.call(args[0]) === "[object Array]" 309 | ) 310 | args = args[0]; 311 | 312 | const returnValue = List.prototype.AddRange(args); 313 | (List.prototype as any)._array = null; 314 | return returnValue; 315 | }; 316 | (Array.prototype as any).Any = function(delegate: any, args: any) { 317 | (List.prototype as any)._array = this; 318 | const returnValue = List.prototype.Any(delegate, args); 319 | (List.prototype as any)._array = null; 320 | return returnValue; 321 | }; 322 | (Array.prototype as any).Clear = function() { 323 | (List.prototype as any)._array = this; 324 | const returnValue = List.prototype.Clear(); 325 | (List.prototype as any)._array = null; 326 | return returnValue; 327 | }; 328 | (Array.prototype as any).Contains = function(item: any) { 329 | (List.prototype as any)._array = this; 330 | const returnValue = List.prototype.Contains(item); 331 | (List.prototype as any)._array = null; 332 | return returnValue; 333 | }; 334 | (Array.prototype as any).Count = function(delegate: any, args: any) { 335 | (List.prototype as any)._array = this; 336 | const returnValue = List.prototype.Count(delegate, args); 337 | (List.prototype as any)._array = null; 338 | return returnValue; 339 | }; 340 | (Array.prototype as any).Sum = function(delegate: any, args: any) { 341 | (List.prototype as any)._array = this; 342 | const returnValue = List.prototype.Sum(delegate, args); 343 | (List.prototype as any)._array = null; 344 | return returnValue; 345 | }; 346 | (Array.prototype as any).Distinct = function(delegate: any, args: any) { 347 | (List.prototype as any)._array = this; 348 | const returnValue = List.prototype.Distinct(delegate, args); 349 | (List.prototype as any)._array = null; 350 | return returnValue; 351 | }; 352 | (Array.prototype as any).Equals = function(list: any, comparePosition: any) { 353 | (List.prototype as any)._array = this; 354 | const returnValue = List.prototype.Equals(list as any, comparePosition); 355 | (List.prototype as any)._array = null; 356 | return returnValue; 357 | }; 358 | (Array.prototype as any).First = function() { 359 | return this.length <= 0 ? undefined : this[0]; 360 | }; 361 | (Array.prototype as any).Get = function(index: any) { 362 | (List.prototype as any)._array = this; 363 | const returnValue = List.prototype.Get(index); 364 | (List.prototype as any)._array = null; 365 | return returnValue; 366 | }; 367 | (Array.prototype as any).IndexOf = function(item: any) { 368 | (List.prototype as any)._array = this; 369 | const returnValue = List.prototype.IndexOf(item); 370 | (List.prototype as any)._array = null; 371 | return returnValue; 372 | }; 373 | (Array.prototype as any).Last = function() { 374 | return this.length <= 0 ? undefined : this[this.length - 1]; 375 | }; 376 | (Array.prototype as any).Remove = function(item: any) { 377 | (List.prototype as any)._array = this; 378 | const returnValue = List.prototype.Remove(item); 379 | (List.prototype as any)._array = null; 380 | return returnValue; 381 | }; 382 | (Array.prototype as any).RemoveAt = function(index: any) { 383 | (List.prototype as any)._array = this; 384 | const returnValue = List.prototype.RemoveAt(index); 385 | (List.prototype as any)._array = null; 386 | return returnValue; 387 | }; 388 | (Array.prototype as any).Select = function(delegate: any, args: any) { 389 | (List.prototype as any)._array = this; 390 | const returnValue = List.prototype.Select(delegate, args); 391 | (List.prototype as any)._array = null; 392 | return returnValue; 393 | }; 394 | (Array.prototype as any).ToArray = function() { 395 | (List.prototype as any)._array = this; 396 | const returnValue = List.prototype.ToArray(); 397 | (List.prototype as any)._array = null; 398 | return returnValue; 399 | }; 400 | (Array.prototype as any).ToList = function() { 401 | const list = new List(); 402 | for (let i = 0; i < this.length; i++) list.push(this[i]); 403 | return list; 404 | }; 405 | (Array.prototype as any).Where = function(delegate: any, args: any) { 406 | (List.prototype as any)._array = this; 407 | const returnValue = List.prototype.Where(delegate, args); 408 | (List.prototype as any)._array = null; 409 | return returnValue; 410 | }; 411 | 412 | declare global { 413 | interface Array extends ArrayConstructor { 414 | ToList(): List; 415 | } 416 | } -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require("gulp"); 2 | var ts = require("gulp-typescript"); 3 | var uglify = require("gulp-uglify"); 4 | var tsProject = ts.createProject("tsconfig.json"); 5 | var pump = require("pump"); 6 | var rename = require("gulp-rename"); 7 | 8 | gulp.task("default", function() { 9 | return tsProject 10 | .src() 11 | .pipe(tsProject()) 12 | .js.pipe(gulp.dest("dist")); 13 | }); 14 | 15 | gulp.task("rename", function(cb) { 16 | return gulp 17 | .src("dist/list.js") 18 | .pipe(rename("list.min.js")) 19 | .pipe(gulp.dest("dist")); 20 | }); 21 | 22 | gulp.task("compress", ["rename"], function(cb) { 23 | return pump([gulp.src("dist/*.min.js"), uglify(), gulp.dest("dist")], cb); 24 | }); 25 | -------------------------------------------------------------------------------- /index.d.ts: -------------------------------------------------------------------------------- 1 | import { List } from "./dist/list"; 2 | export { List }; 3 | -------------------------------------------------------------------------------- /license.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Sven Ulrich 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "linqscript", 3 | "version": "1.4.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@types/chai": { 8 | "version": "https://registry.npmjs.org/@types/chai/-/chai-4.0.5.tgz", 9 | "integrity": "sha1-tuJQ4oG0fgGS4jZhnpsa/mL9NFw=", 10 | "dev": true 11 | }, 12 | "@types/mocha": { 13 | "version": "https://registry.npmjs.org/@types/mocha/-/mocha-2.2.44.tgz", 14 | "integrity": "sha1-HUp5jlPzUhL9WtTQQFBiAXHNW14=", 15 | "dev": true 16 | }, 17 | "ansi-regex": { 18 | "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 19 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 20 | "dev": true 21 | }, 22 | "ansi-styles": { 23 | "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 24 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 25 | "dev": true 26 | }, 27 | "archy": { 28 | "version": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 29 | "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=", 30 | "dev": true 31 | }, 32 | "arr-diff": { 33 | "version": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 34 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 35 | "dev": true, 36 | "requires": { 37 | "arr-flatten": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" 38 | } 39 | }, 40 | "arr-flatten": { 41 | "version": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 42 | "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", 43 | "dev": true 44 | }, 45 | "array-differ": { 46 | "version": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", 47 | "integrity": "sha1-7/UuN1gknTO+QCuLuOVkuytdQDE=", 48 | "dev": true 49 | }, 50 | "array-each": { 51 | "version": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", 52 | "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", 53 | "dev": true 54 | }, 55 | "array-slice": { 56 | "version": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", 57 | "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", 58 | "dev": true 59 | }, 60 | "array-uniq": { 61 | "version": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 62 | "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", 63 | "dev": true 64 | }, 65 | "array-unique": { 66 | "version": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 67 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 68 | "dev": true 69 | }, 70 | "arrify": { 71 | "version": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 72 | "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", 73 | "dev": true 74 | }, 75 | "assertion-error": { 76 | "version": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", 77 | "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", 78 | "dev": true 79 | }, 80 | "balanced-match": { 81 | "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 82 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 83 | "dev": true 84 | }, 85 | "beeper": { 86 | "version": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", 87 | "integrity": "sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak=", 88 | "dev": true 89 | }, 90 | "brace-expansion": { 91 | "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", 92 | "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", 93 | "dev": true, 94 | "requires": { 95 | "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 96 | "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" 97 | } 98 | }, 99 | "braces": { 100 | "version": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 101 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 102 | "dev": true, 103 | "requires": { 104 | "expand-range": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 105 | "preserve": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 106 | "repeat-element": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" 107 | } 108 | }, 109 | "browser-stdout": { 110 | "version": "1.3.0", 111 | "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.0.tgz", 112 | "integrity": "sha1-81HTKWnTL6XXpVZxVCY9korjvR8=", 113 | "dev": true 114 | }, 115 | "chai": { 116 | "version": "https://registry.npmjs.org/chai/-/chai-4.1.2.tgz", 117 | "integrity": "sha1-D2RYS6ZC8PKs4oBiefTwbKI61zw=", 118 | "dev": true, 119 | "requires": { 120 | "assertion-error": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", 121 | "check-error": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 122 | "deep-eql": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 123 | "get-func-name": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 124 | "pathval": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", 125 | "type-detect": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz" 126 | } 127 | }, 128 | "chalk": { 129 | "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 130 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 131 | "dev": true, 132 | "requires": { 133 | "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 134 | "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 135 | "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 136 | "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 137 | "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" 138 | } 139 | }, 140 | "check-error": { 141 | "version": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", 142 | "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", 143 | "dev": true 144 | }, 145 | "clone": { 146 | "version": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", 147 | "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=", 148 | "dev": true 149 | }, 150 | "clone-stats": { 151 | "version": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", 152 | "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", 153 | "dev": true 154 | }, 155 | "color-convert": { 156 | "version": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", 157 | "integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=", 158 | "dev": true, 159 | "requires": { 160 | "color-name": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" 161 | } 162 | }, 163 | "color-name": { 164 | "version": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 165 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", 166 | "dev": true 167 | }, 168 | "commander": { 169 | "version": "2.11.0", 170 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", 171 | "integrity": "sha512-b0553uYA5YAEGgyYIGYROzKQ7X5RAqedkfjiZxwi0kL1g3bOaBNNZfYkzt/CL0umgD5wc9Jec2FbB98CjkMRvQ==", 172 | "dev": true 173 | }, 174 | "concat-map": { 175 | "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 176 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 177 | "dev": true 178 | }, 179 | "convert-source-map": { 180 | "version": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", 181 | "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", 182 | "dev": true 183 | }, 184 | "core-util-is": { 185 | "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 186 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 187 | "dev": true 188 | }, 189 | "dateformat": { 190 | "version": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", 191 | "integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI=", 192 | "dev": true 193 | }, 194 | "debug": { 195 | "version": "3.1.0", 196 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 197 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 198 | "dev": true, 199 | "requires": { 200 | "ms": "2.0.0" 201 | } 202 | }, 203 | "deep-eql": { 204 | "version": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", 205 | "integrity": "sha1-38lARACtHI/gI+faHfHBR8S0RN8=", 206 | "dev": true, 207 | "requires": { 208 | "type-detect": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz" 209 | } 210 | }, 211 | "defaults": { 212 | "version": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 213 | "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", 214 | "dev": true, 215 | "requires": { 216 | "clone": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz" 217 | } 218 | }, 219 | "deprecated": { 220 | "version": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", 221 | "integrity": "sha1-+cmvVGSvoeepcUWKi97yqpTVuxk=", 222 | "dev": true 223 | }, 224 | "detect-file": { 225 | "version": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", 226 | "integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=", 227 | "dev": true, 228 | "requires": { 229 | "fs-exists-sync": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz" 230 | } 231 | }, 232 | "diff": { 233 | "version": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", 234 | "integrity": "sha1-yc45Okt8vQsFinJck98pkCeGj/k=", 235 | "dev": true 236 | }, 237 | "duplexer2": { 238 | "version": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz", 239 | "integrity": "sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds=", 240 | "dev": true, 241 | "requires": { 242 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz" 243 | } 244 | }, 245 | "duplexify": { 246 | "version": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", 247 | "integrity": "sha1-ThUWvmiDi8kKSZlPCzmm5ZYL780=", 248 | "dev": true, 249 | "requires": { 250 | "end-of-stream": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", 251 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 252 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 253 | "stream-shift": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz" 254 | }, 255 | "dependencies": { 256 | "end-of-stream": { 257 | "version": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.0.tgz", 258 | "integrity": "sha1-epDYM+/abPpurA9JSduw+tOmMgY=", 259 | "dev": true, 260 | "requires": { 261 | "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" 262 | } 263 | }, 264 | "isarray": { 265 | "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 266 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 267 | "dev": true 268 | }, 269 | "once": { 270 | "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 271 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 272 | "dev": true, 273 | "requires": { 274 | "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 275 | } 276 | }, 277 | "readable-stream": { 278 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 279 | "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", 280 | "dev": true, 281 | "requires": { 282 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 283 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 284 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 285 | "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 286 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 287 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 288 | "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 289 | } 290 | }, 291 | "string_decoder": { 292 | "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 293 | "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", 294 | "dev": true, 295 | "requires": { 296 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" 297 | } 298 | } 299 | } 300 | }, 301 | "end-of-stream": { 302 | "version": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", 303 | "integrity": "sha1-jhdyBsPICDfYVjLouTWd/osvbq8=", 304 | "dev": true, 305 | "requires": { 306 | "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" 307 | } 308 | }, 309 | "escape-string-regexp": { 310 | "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 311 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 312 | "dev": true 313 | }, 314 | "expand-brackets": { 315 | "version": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 316 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 317 | "dev": true, 318 | "requires": { 319 | "is-posix-bracket": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" 320 | } 321 | }, 322 | "expand-range": { 323 | "version": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 324 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 325 | "dev": true, 326 | "requires": { 327 | "fill-range": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz" 328 | } 329 | }, 330 | "expand-tilde": { 331 | "version": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", 332 | "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=", 333 | "dev": true, 334 | "requires": { 335 | "os-homedir": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" 336 | } 337 | }, 338 | "extend": { 339 | "version": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 340 | "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", 341 | "dev": true 342 | }, 343 | "extend-shallow": { 344 | "version": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", 345 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", 346 | "dev": true, 347 | "requires": { 348 | "is-extendable": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" 349 | } 350 | }, 351 | "extglob": { 352 | "version": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 353 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 354 | "dev": true, 355 | "requires": { 356 | "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" 357 | } 358 | }, 359 | "fancy-log": { 360 | "version": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", 361 | "integrity": "sha1-Rb4X0Cu5kX1gzP/UmVyZnmyMmUg=", 362 | "dev": true, 363 | "requires": { 364 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 365 | "time-stamp": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz" 366 | } 367 | }, 368 | "filename-regex": { 369 | "version": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 370 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 371 | "dev": true 372 | }, 373 | "fill-range": { 374 | "version": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", 375 | "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", 376 | "dev": true, 377 | "requires": { 378 | "is-number": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 379 | "isobject": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 380 | "randomatic": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 381 | "repeat-element": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 382 | "repeat-string": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" 383 | } 384 | }, 385 | "find-index": { 386 | "version": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz", 387 | "integrity": "sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ=", 388 | "dev": true 389 | }, 390 | "findup-sync": { 391 | "version": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", 392 | "integrity": "sha1-QAQ5Kee8YK3wt/SCfExudaDeyhI=", 393 | "dev": true, 394 | "requires": { 395 | "detect-file": "https://registry.npmjs.org/detect-file/-/detect-file-0.1.0.tgz", 396 | "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 397 | "micromatch": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 398 | "resolve-dir": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz" 399 | } 400 | }, 401 | "fined": { 402 | "version": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", 403 | "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", 404 | "dev": true, 405 | "requires": { 406 | "expand-tilde": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", 407 | "is-plain-object": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 408 | "object.defaults": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", 409 | "object.pick": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 410 | "parse-filepath": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz" 411 | }, 412 | "dependencies": { 413 | "expand-tilde": { 414 | "version": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", 415 | "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", 416 | "dev": true, 417 | "requires": { 418 | "homedir-polyfill": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz" 419 | } 420 | } 421 | } 422 | }, 423 | "first-chunk-stream": { 424 | "version": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", 425 | "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", 426 | "dev": true 427 | }, 428 | "flagged-respawn": { 429 | "version": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", 430 | "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", 431 | "dev": true 432 | }, 433 | "for-in": { 434 | "version": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 435 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 436 | "dev": true 437 | }, 438 | "for-own": { 439 | "version": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 440 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 441 | "dev": true, 442 | "requires": { 443 | "for-in": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" 444 | } 445 | }, 446 | "fs-exists-sync": { 447 | "version": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz", 448 | "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=", 449 | "dev": true 450 | }, 451 | "fs.realpath": { 452 | "version": "1.0.0", 453 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 454 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", 455 | "dev": true 456 | }, 457 | "gaze": { 458 | "version": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz", 459 | "integrity": "sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8=", 460 | "dev": true, 461 | "requires": { 462 | "globule": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz" 463 | } 464 | }, 465 | "get-func-name": { 466 | "version": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", 467 | "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", 468 | "dev": true 469 | }, 470 | "glob": { 471 | "version": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", 472 | "integrity": "sha1-xstz0yJsHv7wTePFbQEvAzd+4V8=", 473 | "dev": true, 474 | "requires": { 475 | "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 476 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 477 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 478 | "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" 479 | } 480 | }, 481 | "glob-base": { 482 | "version": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 483 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 484 | "dev": true, 485 | "requires": { 486 | "glob-parent": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 487 | "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" 488 | } 489 | }, 490 | "glob-parent": { 491 | "version": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 492 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 493 | "dev": true, 494 | "requires": { 495 | "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" 496 | } 497 | }, 498 | "glob-stream": { 499 | "version": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", 500 | "integrity": "sha1-kXCl8St5Awb9/lmPMT+PeVT9FDs=", 501 | "dev": true, 502 | "requires": { 503 | "glob": "https://registry.npmjs.org/glob/-/glob-4.5.3.tgz", 504 | "glob2base": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", 505 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 506 | "ordered-read-streams": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", 507 | "through2": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 508 | "unique-stream": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz" 509 | }, 510 | "dependencies": { 511 | "readable-stream": { 512 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 513 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 514 | "dev": true, 515 | "requires": { 516 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 517 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 518 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 519 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" 520 | } 521 | }, 522 | "through2": { 523 | "version": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 524 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", 525 | "dev": true, 526 | "requires": { 527 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 528 | "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" 529 | } 530 | } 531 | } 532 | }, 533 | "glob-watcher": { 534 | "version": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", 535 | "integrity": "sha1-uVtKjfdLOcgymLDAXJeLTZo7cQs=", 536 | "dev": true, 537 | "requires": { 538 | "gaze": "https://registry.npmjs.org/gaze/-/gaze-0.5.2.tgz" 539 | } 540 | }, 541 | "glob2base": { 542 | "version": "https://registry.npmjs.org/glob2base/-/glob2base-0.0.12.tgz", 543 | "integrity": "sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY=", 544 | "dev": true, 545 | "requires": { 546 | "find-index": "https://registry.npmjs.org/find-index/-/find-index-0.1.1.tgz" 547 | } 548 | }, 549 | "global-modules": { 550 | "version": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz", 551 | "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=", 552 | "dev": true, 553 | "requires": { 554 | "global-prefix": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", 555 | "is-windows": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz" 556 | } 557 | }, 558 | "global-prefix": { 559 | "version": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz", 560 | "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=", 561 | "dev": true, 562 | "requires": { 563 | "homedir-polyfill": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", 564 | "ini": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", 565 | "is-windows": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", 566 | "which": "https://registry.npmjs.org/which/-/which-1.3.0.tgz" 567 | } 568 | }, 569 | "globule": { 570 | "version": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz", 571 | "integrity": "sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU=", 572 | "dev": true, 573 | "requires": { 574 | "glob": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", 575 | "lodash": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", 576 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz" 577 | }, 578 | "dependencies": { 579 | "glob": { 580 | "version": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz", 581 | "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=", 582 | "dev": true, 583 | "requires": { 584 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", 585 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", 586 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz" 587 | } 588 | }, 589 | "graceful-fs": { 590 | "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz", 591 | "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=", 592 | "dev": true 593 | }, 594 | "inherits": { 595 | "version": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz", 596 | "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=", 597 | "dev": true 598 | }, 599 | "minimatch": { 600 | "version": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", 601 | "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", 602 | "dev": true, 603 | "requires": { 604 | "lru-cache": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", 605 | "sigmund": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" 606 | } 607 | } 608 | } 609 | }, 610 | "glogg": { 611 | "version": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz", 612 | "integrity": "sha1-f+DxmfV6yQbPUS/urY+Q7kooT8U=", 613 | "dev": true, 614 | "requires": { 615 | "sparkles": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz" 616 | } 617 | }, 618 | "graceful-fs": { 619 | "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", 620 | "integrity": "sha1-dhPHeKGv6mLyXGMKCG1/Osu92Bg=", 621 | "dev": true, 622 | "requires": { 623 | "natives": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz" 624 | } 625 | }, 626 | "growl": { 627 | "version": "1.10.3", 628 | "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.3.tgz", 629 | "integrity": "sha512-hKlsbA5Vu3xsh1Cg3J7jSmX/WaW6A5oBeqzM88oNbCRQFz+zUaXm6yxS4RVytp1scBoJzSYl4YAEOQIt6O8V1Q==", 630 | "dev": true 631 | }, 632 | "gulp": { 633 | "version": "https://registry.npmjs.org/gulp/-/gulp-3.9.1.tgz", 634 | "integrity": "sha1-VxzkWSjdQK9lFPxAEYZgFsE4RbQ=", 635 | "dev": true, 636 | "requires": { 637 | "archy": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", 638 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 639 | "deprecated": "https://registry.npmjs.org/deprecated/-/deprecated-0.0.1.tgz", 640 | "gulp-util": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", 641 | "interpret": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", 642 | "liftoff": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", 643 | "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 644 | "orchestrator": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", 645 | "pretty-hrtime": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", 646 | "semver": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", 647 | "tildify": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", 648 | "v8flags": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", 649 | "vinyl-fs": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz" 650 | } 651 | }, 652 | "gulp-rename": { 653 | "version": "1.2.2", 654 | "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.2.2.tgz", 655 | "integrity": "sha1-OtRCh2PwXidk3sHGfYaNsnVoeBc=", 656 | "dev": true 657 | }, 658 | "gulp-sourcemaps": { 659 | "version": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", 660 | "integrity": "sha1-uG/zSdgBzrVuHZ59x7vLS33uYAw=", 661 | "dev": true, 662 | "requires": { 663 | "convert-source-map": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", 664 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 665 | "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 666 | "through2": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 667 | "vinyl": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz" 668 | }, 669 | "dependencies": { 670 | "graceful-fs": { 671 | "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 672 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 673 | "dev": true 674 | }, 675 | "strip-bom": { 676 | "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 677 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 678 | "dev": true, 679 | "requires": { 680 | "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" 681 | } 682 | }, 683 | "vinyl": { 684 | "version": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", 685 | "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", 686 | "dev": true, 687 | "requires": { 688 | "clone": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", 689 | "clone-stats": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", 690 | "replace-ext": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz" 691 | } 692 | } 693 | } 694 | }, 695 | "gulp-typescript": { 696 | "version": "https://registry.npmjs.org/gulp-typescript/-/gulp-typescript-3.2.3.tgz", 697 | "integrity": "sha1-MtUquXuXxM4HDAQZ2wjqOvUU1yA=", 698 | "dev": true, 699 | "requires": { 700 | "gulp-util": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", 701 | "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 702 | "through2": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 703 | "vinyl-fs": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz" 704 | }, 705 | "dependencies": { 706 | "glob": { 707 | "version": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", 708 | "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", 709 | "dev": true, 710 | "requires": { 711 | "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 712 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 713 | "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 714 | "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 715 | "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 716 | } 717 | }, 718 | "glob-parent": { 719 | "version": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 720 | "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", 721 | "dev": true, 722 | "requires": { 723 | "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 724 | "path-dirname": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" 725 | } 726 | }, 727 | "glob-stream": { 728 | "version": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", 729 | "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", 730 | "dev": true, 731 | "requires": { 732 | "extend": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 733 | "glob": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", 734 | "glob-parent": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", 735 | "micromatch": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 736 | "ordered-read-streams": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", 737 | "through2": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 738 | "to-absolute-glob": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", 739 | "unique-stream": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz" 740 | }, 741 | "dependencies": { 742 | "isarray": { 743 | "version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 744 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 745 | "dev": true 746 | }, 747 | "readable-stream": { 748 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 749 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 750 | "dev": true, 751 | "requires": { 752 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 753 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 754 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 755 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" 756 | } 757 | }, 758 | "string_decoder": { 759 | "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 760 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 761 | "dev": true 762 | }, 763 | "through2": { 764 | "version": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 765 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", 766 | "dev": true, 767 | "requires": { 768 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 769 | "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" 770 | } 771 | } 772 | } 773 | }, 774 | "graceful-fs": { 775 | "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 776 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 777 | "dev": true 778 | }, 779 | "is-extglob": { 780 | "version": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 781 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 782 | "dev": true 783 | }, 784 | "is-glob": { 785 | "version": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", 786 | "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", 787 | "dev": true, 788 | "requires": { 789 | "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" 790 | } 791 | }, 792 | "isarray": { 793 | "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 794 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 795 | "dev": true 796 | }, 797 | "object-assign": { 798 | "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 799 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 800 | "dev": true 801 | }, 802 | "ordered-read-streams": { 803 | "version": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", 804 | "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", 805 | "dev": true, 806 | "requires": { 807 | "is-stream": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 808 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" 809 | } 810 | }, 811 | "readable-stream": { 812 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 813 | "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", 814 | "dev": true, 815 | "requires": { 816 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 817 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 818 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 819 | "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 820 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 821 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 822 | "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 823 | } 824 | }, 825 | "string_decoder": { 826 | "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 827 | "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", 828 | "dev": true, 829 | "requires": { 830 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" 831 | } 832 | }, 833 | "strip-bom": { 834 | "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 835 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 836 | "dev": true, 837 | "requires": { 838 | "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" 839 | } 840 | }, 841 | "unique-stream": { 842 | "version": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.2.1.tgz", 843 | "integrity": "sha1-WqADz76Uxf+GbE59ZouxxNuts2k=", 844 | "dev": true, 845 | "requires": { 846 | "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 847 | "through2-filter": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz" 848 | } 849 | }, 850 | "vinyl": { 851 | "version": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", 852 | "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", 853 | "dev": true, 854 | "requires": { 855 | "clone": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", 856 | "clone-stats": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", 857 | "replace-ext": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz" 858 | } 859 | }, 860 | "vinyl-fs": { 861 | "version": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.4.tgz", 862 | "integrity": "sha1-vm/zJwy1Xf19MGNkDegfJddTIjk=", 863 | "dev": true, 864 | "requires": { 865 | "duplexify": "https://registry.npmjs.org/duplexify/-/duplexify-3.5.1.tgz", 866 | "glob-stream": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", 867 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 868 | "gulp-sourcemaps": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.6.0.tgz", 869 | "is-valid-glob": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", 870 | "lazystream": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", 871 | "lodash.isequal": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", 872 | "merge-stream": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", 873 | "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 874 | "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 875 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 876 | "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 877 | "strip-bom-stream": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", 878 | "through2": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 879 | "through2-filter": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", 880 | "vali-date": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", 881 | "vinyl": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz" 882 | } 883 | } 884 | } 885 | }, 886 | "gulp-uglify": { 887 | "version": "3.0.0", 888 | "resolved": "https://registry.npmjs.org/gulp-uglify/-/gulp-uglify-3.0.0.tgz", 889 | "integrity": "sha1-DfAzHXKg0wLj434QlIXd3zPG0co=", 890 | "dev": true, 891 | "requires": { 892 | "gulplog": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", 893 | "has-gulplog": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", 894 | "lodash": "4.17.4", 895 | "make-error-cause": "1.2.2", 896 | "through2": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 897 | "uglify-js": "3.3.8", 898 | "vinyl-sourcemaps-apply": "0.2.1" 899 | }, 900 | "dependencies": { 901 | "lodash": { 902 | "version": "4.17.4", 903 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", 904 | "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", 905 | "dev": true 906 | } 907 | } 908 | }, 909 | "gulp-util": { 910 | "version": "https://registry.npmjs.org/gulp-util/-/gulp-util-3.0.8.tgz", 911 | "integrity": "sha1-AFTh50RQLifATBh8PsxQXdVLu08=", 912 | "dev": true, 913 | "requires": { 914 | "array-differ": "https://registry.npmjs.org/array-differ/-/array-differ-1.0.0.tgz", 915 | "array-uniq": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", 916 | "beeper": "https://registry.npmjs.org/beeper/-/beeper-1.1.1.tgz", 917 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 918 | "dateformat": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz", 919 | "fancy-log": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.0.tgz", 920 | "gulplog": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", 921 | "has-gulplog": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", 922 | "lodash._reescape": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", 923 | "lodash._reevaluate": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", 924 | "lodash._reinterpolate": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 925 | "lodash.template": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", 926 | "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 927 | "multipipe": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", 928 | "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", 929 | "replace-ext": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", 930 | "through2": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 931 | "vinyl": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz" 932 | } 933 | }, 934 | "gulplog": { 935 | "version": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", 936 | "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", 937 | "dev": true, 938 | "requires": { 939 | "glogg": "https://registry.npmjs.org/glogg/-/glogg-1.0.0.tgz" 940 | } 941 | }, 942 | "has-ansi": { 943 | "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 944 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 945 | "dev": true, 946 | "requires": { 947 | "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" 948 | } 949 | }, 950 | "has-flag": { 951 | "version": "2.0.0", 952 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 953 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 954 | "dev": true 955 | }, 956 | "has-gulplog": { 957 | "version": "https://registry.npmjs.org/has-gulplog/-/has-gulplog-0.1.0.tgz", 958 | "integrity": "sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4=", 959 | "dev": true, 960 | "requires": { 961 | "sparkles": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz" 962 | } 963 | }, 964 | "he": { 965 | "version": "1.1.1", 966 | "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", 967 | "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", 968 | "dev": true 969 | }, 970 | "homedir-polyfill": { 971 | "version": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz", 972 | "integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=", 973 | "dev": true, 974 | "requires": { 975 | "parse-passwd": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz" 976 | } 977 | }, 978 | "inflight": { 979 | "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 980 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 981 | "dev": true, 982 | "requires": { 983 | "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 984 | "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 985 | } 986 | }, 987 | "inherits": { 988 | "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 989 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 990 | "dev": true 991 | }, 992 | "ini": { 993 | "version": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", 994 | "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", 995 | "dev": true 996 | }, 997 | "interpret": { 998 | "version": "https://registry.npmjs.org/interpret/-/interpret-1.0.4.tgz", 999 | "integrity": "sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA=", 1000 | "dev": true 1001 | }, 1002 | "is-absolute": { 1003 | "version": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", 1004 | "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", 1005 | "dev": true, 1006 | "requires": { 1007 | "is-relative": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", 1008 | "is-windows": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz" 1009 | } 1010 | }, 1011 | "is-buffer": { 1012 | "version": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1013 | "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", 1014 | "dev": true 1015 | }, 1016 | "is-dotfile": { 1017 | "version": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 1018 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 1019 | "dev": true 1020 | }, 1021 | "is-equal-shallow": { 1022 | "version": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 1023 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 1024 | "dev": true, 1025 | "requires": { 1026 | "is-primitive": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" 1027 | } 1028 | }, 1029 | "is-extendable": { 1030 | "version": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1031 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1032 | "dev": true 1033 | }, 1034 | "is-extglob": { 1035 | "version": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1036 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 1037 | "dev": true 1038 | }, 1039 | "is-glob": { 1040 | "version": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1041 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 1042 | "dev": true, 1043 | "requires": { 1044 | "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" 1045 | } 1046 | }, 1047 | "is-number": { 1048 | "version": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 1049 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 1050 | "dev": true, 1051 | "requires": { 1052 | "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1053 | } 1054 | }, 1055 | "is-plain-object": { 1056 | "version": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", 1057 | "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", 1058 | "dev": true, 1059 | "requires": { 1060 | "isobject": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" 1061 | }, 1062 | "dependencies": { 1063 | "isobject": { 1064 | "version": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1065 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1066 | "dev": true 1067 | } 1068 | } 1069 | }, 1070 | "is-posix-bracket": { 1071 | "version": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 1072 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 1073 | "dev": true 1074 | }, 1075 | "is-primitive": { 1076 | "version": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 1077 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 1078 | "dev": true 1079 | }, 1080 | "is-relative": { 1081 | "version": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", 1082 | "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", 1083 | "dev": true, 1084 | "requires": { 1085 | "is-unc-path": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz" 1086 | } 1087 | }, 1088 | "is-stream": { 1089 | "version": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", 1090 | "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", 1091 | "dev": true 1092 | }, 1093 | "is-unc-path": { 1094 | "version": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", 1095 | "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", 1096 | "dev": true, 1097 | "requires": { 1098 | "unc-path-regex": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz" 1099 | } 1100 | }, 1101 | "is-utf8": { 1102 | "version": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 1103 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 1104 | "dev": true 1105 | }, 1106 | "is-valid-glob": { 1107 | "version": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", 1108 | "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", 1109 | "dev": true 1110 | }, 1111 | "is-windows": { 1112 | "version": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", 1113 | "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", 1114 | "dev": true 1115 | }, 1116 | "isarray": { 1117 | "version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1118 | "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", 1119 | "dev": true 1120 | }, 1121 | "isexe": { 1122 | "version": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1123 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", 1124 | "dev": true 1125 | }, 1126 | "isobject": { 1127 | "version": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 1128 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 1129 | "dev": true, 1130 | "requires": { 1131 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" 1132 | }, 1133 | "dependencies": { 1134 | "isarray": { 1135 | "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1136 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1137 | "dev": true 1138 | } 1139 | } 1140 | }, 1141 | "json-stable-stringify": { 1142 | "version": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", 1143 | "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", 1144 | "dev": true, 1145 | "requires": { 1146 | "jsonify": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" 1147 | } 1148 | }, 1149 | "jsonify": { 1150 | "version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", 1151 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", 1152 | "dev": true 1153 | }, 1154 | "kind-of": { 1155 | "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1156 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1157 | "dev": true, 1158 | "requires": { 1159 | "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" 1160 | } 1161 | }, 1162 | "lazystream": { 1163 | "version": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", 1164 | "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", 1165 | "dev": true, 1166 | "requires": { 1167 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" 1168 | }, 1169 | "dependencies": { 1170 | "isarray": { 1171 | "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1172 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1173 | "dev": true 1174 | }, 1175 | "readable-stream": { 1176 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 1177 | "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", 1178 | "dev": true, 1179 | "requires": { 1180 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1181 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1182 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1183 | "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1184 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1185 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1186 | "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1187 | } 1188 | }, 1189 | "string_decoder": { 1190 | "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1191 | "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", 1192 | "dev": true, 1193 | "requires": { 1194 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" 1195 | } 1196 | } 1197 | } 1198 | }, 1199 | "liftoff": { 1200 | "version": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", 1201 | "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", 1202 | "dev": true, 1203 | "requires": { 1204 | "extend": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", 1205 | "findup-sync": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.4.3.tgz", 1206 | "fined": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", 1207 | "flagged-respawn": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", 1208 | "lodash.isplainobject": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 1209 | "lodash.isstring": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 1210 | "lodash.mapvalues": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", 1211 | "rechoir": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 1212 | "resolve": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz" 1213 | } 1214 | }, 1215 | "lodash": { 1216 | "version": "https://registry.npmjs.org/lodash/-/lodash-1.0.2.tgz", 1217 | "integrity": "sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE=", 1218 | "dev": true 1219 | }, 1220 | "lodash._basecopy": { 1221 | "version": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", 1222 | "integrity": "sha1-jaDmqHbPNEwK2KVIghEd08XHyjY=", 1223 | "dev": true 1224 | }, 1225 | "lodash._basetostring": { 1226 | "version": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", 1227 | "integrity": "sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U=", 1228 | "dev": true 1229 | }, 1230 | "lodash._basevalues": { 1231 | "version": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", 1232 | "integrity": "sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc=", 1233 | "dev": true 1234 | }, 1235 | "lodash._getnative": { 1236 | "version": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", 1237 | "integrity": "sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U=", 1238 | "dev": true 1239 | }, 1240 | "lodash._isiterateecall": { 1241 | "version": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", 1242 | "integrity": "sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw=", 1243 | "dev": true 1244 | }, 1245 | "lodash._reescape": { 1246 | "version": "https://registry.npmjs.org/lodash._reescape/-/lodash._reescape-3.0.0.tgz", 1247 | "integrity": "sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo=", 1248 | "dev": true 1249 | }, 1250 | "lodash._reevaluate": { 1251 | "version": "https://registry.npmjs.org/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz", 1252 | "integrity": "sha1-WLx0xAZklTrgsSTYBpltrKQx4u0=", 1253 | "dev": true 1254 | }, 1255 | "lodash._reinterpolate": { 1256 | "version": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 1257 | "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", 1258 | "dev": true 1259 | }, 1260 | "lodash._root": { 1261 | "version": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", 1262 | "integrity": "sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI=", 1263 | "dev": true 1264 | }, 1265 | "lodash.escape": { 1266 | "version": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", 1267 | "integrity": "sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg=", 1268 | "dev": true, 1269 | "requires": { 1270 | "lodash._root": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz" 1271 | } 1272 | }, 1273 | "lodash.isarguments": { 1274 | "version": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 1275 | "integrity": "sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo=", 1276 | "dev": true 1277 | }, 1278 | "lodash.isarray": { 1279 | "version": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz", 1280 | "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", 1281 | "dev": true 1282 | }, 1283 | "lodash.isequal": { 1284 | "version": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", 1285 | "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", 1286 | "dev": true 1287 | }, 1288 | "lodash.isplainobject": { 1289 | "version": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", 1290 | "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", 1291 | "dev": true 1292 | }, 1293 | "lodash.isstring": { 1294 | "version": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", 1295 | "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", 1296 | "dev": true 1297 | }, 1298 | "lodash.keys": { 1299 | "version": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", 1300 | "integrity": "sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo=", 1301 | "dev": true, 1302 | "requires": { 1303 | "lodash._getnative": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", 1304 | "lodash.isarguments": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", 1305 | "lodash.isarray": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.4.tgz" 1306 | } 1307 | }, 1308 | "lodash.mapvalues": { 1309 | "version": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", 1310 | "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", 1311 | "dev": true 1312 | }, 1313 | "lodash.restparam": { 1314 | "version": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", 1315 | "integrity": "sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU=", 1316 | "dev": true 1317 | }, 1318 | "lodash.template": { 1319 | "version": "https://registry.npmjs.org/lodash.template/-/lodash.template-3.6.2.tgz", 1320 | "integrity": "sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8=", 1321 | "dev": true, 1322 | "requires": { 1323 | "lodash._basecopy": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz", 1324 | "lodash._basetostring": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz", 1325 | "lodash._basevalues": "https://registry.npmjs.org/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz", 1326 | "lodash._isiterateecall": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz", 1327 | "lodash._reinterpolate": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 1328 | "lodash.escape": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz", 1329 | "lodash.keys": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", 1330 | "lodash.restparam": "https://registry.npmjs.org/lodash.restparam/-/lodash.restparam-3.6.1.tgz", 1331 | "lodash.templatesettings": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz" 1332 | } 1333 | }, 1334 | "lodash.templatesettings": { 1335 | "version": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz", 1336 | "integrity": "sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU=", 1337 | "dev": true, 1338 | "requires": { 1339 | "lodash._reinterpolate": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", 1340 | "lodash.escape": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-3.2.0.tgz" 1341 | } 1342 | }, 1343 | "lru-cache": { 1344 | "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", 1345 | "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", 1346 | "dev": true 1347 | }, 1348 | "make-error": { 1349 | "version": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz", 1350 | "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=", 1351 | "dev": true 1352 | }, 1353 | "make-error-cause": { 1354 | "version": "1.2.2", 1355 | "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", 1356 | "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", 1357 | "dev": true, 1358 | "requires": { 1359 | "make-error": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz" 1360 | } 1361 | }, 1362 | "map-cache": { 1363 | "version": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 1364 | "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", 1365 | "dev": true 1366 | }, 1367 | "merge-stream": { 1368 | "version": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", 1369 | "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", 1370 | "dev": true, 1371 | "requires": { 1372 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" 1373 | }, 1374 | "dependencies": { 1375 | "isarray": { 1376 | "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1377 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1378 | "dev": true 1379 | }, 1380 | "readable-stream": { 1381 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 1382 | "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", 1383 | "dev": true, 1384 | "requires": { 1385 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1386 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1387 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1388 | "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1389 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1390 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1391 | "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1392 | } 1393 | }, 1394 | "string_decoder": { 1395 | "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1396 | "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", 1397 | "dev": true, 1398 | "requires": { 1399 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" 1400 | } 1401 | } 1402 | } 1403 | }, 1404 | "micromatch": { 1405 | "version": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 1406 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 1407 | "dev": true, 1408 | "requires": { 1409 | "arr-diff": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 1410 | "array-unique": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 1411 | "braces": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 1412 | "expand-brackets": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 1413 | "extglob": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 1414 | "filename-regex": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 1415 | "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1416 | "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1417 | "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1418 | "normalize-path": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 1419 | "object.omit": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 1420 | "parse-glob": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 1421 | "regex-cache": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz" 1422 | } 1423 | }, 1424 | "minimatch": { 1425 | "version": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.10.tgz", 1426 | "integrity": "sha1-jQh8OcazjAAbl/ynzm0OHoCvusc=", 1427 | "dev": true, 1428 | "requires": { 1429 | "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz" 1430 | } 1431 | }, 1432 | "minimist": { 1433 | "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 1434 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 1435 | "dev": true 1436 | }, 1437 | "mkdirp": { 1438 | "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1439 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 1440 | "dev": true, 1441 | "requires": { 1442 | "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" 1443 | }, 1444 | "dependencies": { 1445 | "minimist": { 1446 | "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 1447 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", 1448 | "dev": true 1449 | } 1450 | } 1451 | }, 1452 | "mocha": { 1453 | "version": "4.0.1", 1454 | "resolved": "https://registry.npmjs.org/mocha/-/mocha-4.0.1.tgz", 1455 | "integrity": "sha512-evDmhkoA+cBNiQQQdSKZa2b9+W2mpLoj50367lhy+Klnx9OV8XlCIhigUnn1gaTFLQCa0kdNhEGDr0hCXOQFDw==", 1456 | "dev": true, 1457 | "requires": { 1458 | "browser-stdout": "1.3.0", 1459 | "commander": "2.11.0", 1460 | "debug": "3.1.0", 1461 | "diff": "3.3.1", 1462 | "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 1463 | "glob": "7.1.2", 1464 | "growl": "1.10.3", 1465 | "he": "1.1.1", 1466 | "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 1467 | "supports-color": "4.4.0" 1468 | }, 1469 | "dependencies": { 1470 | "diff": { 1471 | "version": "3.3.1", 1472 | "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.1.tgz", 1473 | "integrity": "sha512-MKPHZDMB0o6yHyDryUOScqZibp914ksXwAMYMTHj6KO8UeKsRYNJD3oNCKjTqZon+V488P7N/HzXF8t7ZR95ww==", 1474 | "dev": true 1475 | }, 1476 | "glob": { 1477 | "version": "7.1.2", 1478 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", 1479 | "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", 1480 | "dev": true, 1481 | "requires": { 1482 | "fs.realpath": "1.0.0", 1483 | "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1484 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1485 | "minimatch": "3.0.4", 1486 | "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 1487 | "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" 1488 | } 1489 | }, 1490 | "minimatch": { 1491 | "version": "3.0.4", 1492 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1493 | "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", 1494 | "dev": true, 1495 | "requires": { 1496 | "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz" 1497 | } 1498 | }, 1499 | "supports-color": { 1500 | "version": "4.4.0", 1501 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.4.0.tgz", 1502 | "integrity": "sha512-rKC3+DyXWgK0ZLKwmRsrkyHVZAjNkfzeehuFWdGGcqGDTZFH73+RH6S/RDAAxl9GusSjZSUWYLmT9N5pzXFOXQ==", 1503 | "dev": true, 1504 | "requires": { 1505 | "has-flag": "2.0.0" 1506 | } 1507 | } 1508 | } 1509 | }, 1510 | "ms": { 1511 | "version": "2.0.0", 1512 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1513 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1514 | "dev": true 1515 | }, 1516 | "multipipe": { 1517 | "version": "https://registry.npmjs.org/multipipe/-/multipipe-0.1.2.tgz", 1518 | "integrity": "sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s=", 1519 | "dev": true, 1520 | "requires": { 1521 | "duplexer2": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.0.2.tgz" 1522 | } 1523 | }, 1524 | "natives": { 1525 | "version": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", 1526 | "integrity": "sha1-6f+EFBimsux6SV6TmYT3jxY+bjE=", 1527 | "dev": true 1528 | }, 1529 | "normalize-path": { 1530 | "version": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 1531 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 1532 | "dev": true, 1533 | "requires": { 1534 | "remove-trailing-separator": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz" 1535 | } 1536 | }, 1537 | "object-assign": { 1538 | "version": "https://registry.npmjs.org/object-assign/-/object-assign-3.0.0.tgz", 1539 | "integrity": "sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I=", 1540 | "dev": true 1541 | }, 1542 | "object.defaults": { 1543 | "version": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", 1544 | "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", 1545 | "dev": true, 1546 | "requires": { 1547 | "array-each": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", 1548 | "array-slice": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", 1549 | "for-own": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", 1550 | "isobject": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" 1551 | }, 1552 | "dependencies": { 1553 | "for-own": { 1554 | "version": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", 1555 | "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", 1556 | "dev": true, 1557 | "requires": { 1558 | "for-in": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" 1559 | } 1560 | }, 1561 | "isobject": { 1562 | "version": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1563 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1564 | "dev": true 1565 | } 1566 | } 1567 | }, 1568 | "object.omit": { 1569 | "version": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 1570 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 1571 | "dev": true, 1572 | "requires": { 1573 | "for-own": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 1574 | "is-extendable": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" 1575 | } 1576 | }, 1577 | "object.pick": { 1578 | "version": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", 1579 | "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", 1580 | "dev": true, 1581 | "requires": { 1582 | "isobject": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" 1583 | }, 1584 | "dependencies": { 1585 | "isobject": { 1586 | "version": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", 1587 | "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", 1588 | "dev": true 1589 | } 1590 | } 1591 | }, 1592 | "once": { 1593 | "version": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", 1594 | "integrity": "sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=", 1595 | "dev": true, 1596 | "requires": { 1597 | "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1598 | } 1599 | }, 1600 | "orchestrator": { 1601 | "version": "https://registry.npmjs.org/orchestrator/-/orchestrator-0.3.8.tgz", 1602 | "integrity": "sha1-FOfp4nZPcxX7rBhOUGx6pt+UrX4=", 1603 | "dev": true, 1604 | "requires": { 1605 | "end-of-stream": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-0.1.5.tgz", 1606 | "sequencify": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", 1607 | "stream-consume": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz" 1608 | } 1609 | }, 1610 | "ordered-read-streams": { 1611 | "version": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz", 1612 | "integrity": "sha1-/VZamvjrRHO6abbtijQ1LLVS8SY=", 1613 | "dev": true 1614 | }, 1615 | "os-homedir": { 1616 | "version": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 1617 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", 1618 | "dev": true 1619 | }, 1620 | "parse-filepath": { 1621 | "version": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", 1622 | "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", 1623 | "dev": true, 1624 | "requires": { 1625 | "is-absolute": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", 1626 | "map-cache": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", 1627 | "path-root": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz" 1628 | } 1629 | }, 1630 | "parse-glob": { 1631 | "version": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 1632 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 1633 | "dev": true, 1634 | "requires": { 1635 | "glob-base": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 1636 | "is-dotfile": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 1637 | "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1638 | "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" 1639 | } 1640 | }, 1641 | "parse-passwd": { 1642 | "version": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", 1643 | "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", 1644 | "dev": true 1645 | }, 1646 | "path-dirname": { 1647 | "version": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", 1648 | "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", 1649 | "dev": true 1650 | }, 1651 | "path-is-absolute": { 1652 | "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1653 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1654 | "dev": true 1655 | }, 1656 | "path-parse": { 1657 | "version": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", 1658 | "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", 1659 | "dev": true 1660 | }, 1661 | "path-root": { 1662 | "version": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", 1663 | "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", 1664 | "dev": true, 1665 | "requires": { 1666 | "path-root-regex": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz" 1667 | } 1668 | }, 1669 | "path-root-regex": { 1670 | "version": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", 1671 | "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", 1672 | "dev": true 1673 | }, 1674 | "pathval": { 1675 | "version": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", 1676 | "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", 1677 | "dev": true 1678 | }, 1679 | "preserve": { 1680 | "version": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 1681 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 1682 | "dev": true 1683 | }, 1684 | "pretty-hrtime": { 1685 | "version": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", 1686 | "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", 1687 | "dev": true 1688 | }, 1689 | "process-nextick-args": { 1690 | "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1691 | "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", 1692 | "dev": true 1693 | }, 1694 | "pump": { 1695 | "version": "2.0.1", 1696 | "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", 1697 | "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", 1698 | "dev": true, 1699 | "requires": { 1700 | "end-of-stream": "1.4.1", 1701 | "once": "https://registry.npmjs.org/once/-/once-1.3.3.tgz" 1702 | }, 1703 | "dependencies": { 1704 | "end-of-stream": { 1705 | "version": "1.4.1", 1706 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", 1707 | "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", 1708 | "dev": true, 1709 | "requires": { 1710 | "once": "1.4.0" 1711 | }, 1712 | "dependencies": { 1713 | "once": { 1714 | "version": "1.4.0", 1715 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1716 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 1717 | "dev": true, 1718 | "requires": { 1719 | "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" 1720 | } 1721 | } 1722 | } 1723 | } 1724 | } 1725 | }, 1726 | "randomatic": { 1727 | "version": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", 1728 | "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", 1729 | "dev": true, 1730 | "requires": { 1731 | "is-number": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1732 | "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" 1733 | }, 1734 | "dependencies": { 1735 | "is-number": { 1736 | "version": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", 1737 | "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", 1738 | "dev": true, 1739 | "requires": { 1740 | "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" 1741 | }, 1742 | "dependencies": { 1743 | "kind-of": { 1744 | "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1745 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1746 | "dev": true, 1747 | "requires": { 1748 | "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" 1749 | } 1750 | } 1751 | } 1752 | }, 1753 | "kind-of": { 1754 | "version": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", 1755 | "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", 1756 | "dev": true, 1757 | "requires": { 1758 | "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" 1759 | } 1760 | } 1761 | } 1762 | }, 1763 | "readable-stream": { 1764 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", 1765 | "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", 1766 | "dev": true, 1767 | "requires": { 1768 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1769 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1770 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 1771 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" 1772 | } 1773 | }, 1774 | "rechoir": { 1775 | "version": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", 1776 | "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", 1777 | "dev": true, 1778 | "requires": { 1779 | "resolve": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz" 1780 | } 1781 | }, 1782 | "regex-cache": { 1783 | "version": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", 1784 | "integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=", 1785 | "dev": true, 1786 | "requires": { 1787 | "is-equal-shallow": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz" 1788 | } 1789 | }, 1790 | "remove-trailing-separator": { 1791 | "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 1792 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 1793 | "dev": true 1794 | }, 1795 | "repeat-element": { 1796 | "version": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 1797 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 1798 | "dev": true 1799 | }, 1800 | "repeat-string": { 1801 | "version": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 1802 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 1803 | "dev": true 1804 | }, 1805 | "replace-ext": { 1806 | "version": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", 1807 | "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", 1808 | "dev": true 1809 | }, 1810 | "resolve": { 1811 | "version": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", 1812 | "integrity": "sha1-HwmsznlsmnYlefMbLBzEw83fnzY=", 1813 | "dev": true, 1814 | "requires": { 1815 | "path-parse": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz" 1816 | } 1817 | }, 1818 | "resolve-dir": { 1819 | "version": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz", 1820 | "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=", 1821 | "dev": true, 1822 | "requires": { 1823 | "expand-tilde": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz", 1824 | "global-modules": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz" 1825 | } 1826 | }, 1827 | "safe-buffer": { 1828 | "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1829 | "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", 1830 | "dev": true 1831 | }, 1832 | "semver": { 1833 | "version": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", 1834 | "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", 1835 | "dev": true 1836 | }, 1837 | "sequencify": { 1838 | "version": "https://registry.npmjs.org/sequencify/-/sequencify-0.0.7.tgz", 1839 | "integrity": "sha1-kM/xnQLgcCf9dn9erT57ldHnOAw=", 1840 | "dev": true 1841 | }, 1842 | "sigmund": { 1843 | "version": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", 1844 | "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", 1845 | "dev": true 1846 | }, 1847 | "source-map": { 1848 | "version": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1849 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1850 | "dev": true 1851 | }, 1852 | "source-map-support": { 1853 | "version": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 1854 | "integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=", 1855 | "dev": true, 1856 | "requires": { 1857 | "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" 1858 | } 1859 | }, 1860 | "sparkles": { 1861 | "version": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.0.tgz", 1862 | "integrity": "sha1-Gsu/tZJDbRC76PeFt8xvgoFQEsM=", 1863 | "dev": true 1864 | }, 1865 | "stream-consume": { 1866 | "version": "https://registry.npmjs.org/stream-consume/-/stream-consume-0.1.0.tgz", 1867 | "integrity": "sha1-pB6tGm1ggc63n2WwYZAbbY89HQ8=", 1868 | "dev": true 1869 | }, 1870 | "stream-shift": { 1871 | "version": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", 1872 | "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", 1873 | "dev": true 1874 | }, 1875 | "string_decoder": { 1876 | "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", 1877 | "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", 1878 | "dev": true 1879 | }, 1880 | "strip-ansi": { 1881 | "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 1882 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 1883 | "dev": true, 1884 | "requires": { 1885 | "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" 1886 | } 1887 | }, 1888 | "strip-bom": { 1889 | "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", 1890 | "integrity": "sha1-hbiGLzhEtabV7IRnqTWYFzo295Q=", 1891 | "dev": true, 1892 | "requires": { 1893 | "first-chunk-stream": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", 1894 | "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" 1895 | } 1896 | }, 1897 | "strip-bom-stream": { 1898 | "version": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", 1899 | "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", 1900 | "dev": true, 1901 | "requires": { 1902 | "first-chunk-stream": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", 1903 | "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" 1904 | }, 1905 | "dependencies": { 1906 | "strip-bom": { 1907 | "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 1908 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 1909 | "dev": true, 1910 | "requires": { 1911 | "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" 1912 | } 1913 | } 1914 | } 1915 | }, 1916 | "strip-json-comments": { 1917 | "version": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 1918 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", 1919 | "dev": true 1920 | }, 1921 | "supports-color": { 1922 | "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 1923 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 1924 | "dev": true 1925 | }, 1926 | "through2": { 1927 | "version": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 1928 | "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", 1929 | "dev": true, 1930 | "requires": { 1931 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 1932 | "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" 1933 | }, 1934 | "dependencies": { 1935 | "isarray": { 1936 | "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1937 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1938 | "dev": true 1939 | }, 1940 | "readable-stream": { 1941 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", 1942 | "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", 1943 | "dev": true, 1944 | "requires": { 1945 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 1946 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1947 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1948 | "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", 1949 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", 1950 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1951 | "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" 1952 | } 1953 | }, 1954 | "string_decoder": { 1955 | "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", 1956 | "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", 1957 | "dev": true, 1958 | "requires": { 1959 | "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" 1960 | } 1961 | } 1962 | } 1963 | }, 1964 | "through2-filter": { 1965 | "version": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", 1966 | "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", 1967 | "dev": true, 1968 | "requires": { 1969 | "through2": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", 1970 | "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" 1971 | } 1972 | }, 1973 | "tildify": { 1974 | "version": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", 1975 | "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", 1976 | "dev": true, 1977 | "requires": { 1978 | "os-homedir": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" 1979 | } 1980 | }, 1981 | "time-stamp": { 1982 | "version": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", 1983 | "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=", 1984 | "dev": true 1985 | }, 1986 | "to-absolute-glob": { 1987 | "version": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", 1988 | "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", 1989 | "dev": true, 1990 | "requires": { 1991 | "extend-shallow": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" 1992 | } 1993 | }, 1994 | "ts-node": { 1995 | "version": "https://registry.npmjs.org/ts-node/-/ts-node-3.3.0.tgz", 1996 | "integrity": "sha1-wTxqMCTjC+EYDdUwOPwgkonUv2k=", 1997 | "dev": true, 1998 | "requires": { 1999 | "arrify": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", 2000 | "chalk": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", 2001 | "diff": "https://registry.npmjs.org/diff/-/diff-3.2.0.tgz", 2002 | "make-error": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz", 2003 | "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 2004 | "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2005 | "source-map-support": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", 2006 | "tsconfig": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz", 2007 | "v8flags": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.1.tgz", 2008 | "yn": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz" 2009 | }, 2010 | "dependencies": { 2011 | "ansi-styles": { 2012 | "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", 2013 | "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", 2014 | "dev": true, 2015 | "requires": { 2016 | "color-convert": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz" 2017 | } 2018 | }, 2019 | "chalk": { 2020 | "version": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", 2021 | "integrity": "sha1-tepI78nBeT3MybR2fJORTT8tUro=", 2022 | "dev": true, 2023 | "requires": { 2024 | "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", 2025 | "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 2026 | "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz" 2027 | } 2028 | }, 2029 | "has-flag": { 2030 | "version": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", 2031 | "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", 2032 | "dev": true 2033 | }, 2034 | "supports-color": { 2035 | "version": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", 2036 | "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", 2037 | "dev": true, 2038 | "requires": { 2039 | "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" 2040 | } 2041 | }, 2042 | "v8flags": { 2043 | "version": "https://registry.npmjs.org/v8flags/-/v8flags-3.0.1.tgz", 2044 | "integrity": "sha1-3Oj8N5wX2fLJ6e142JzgAFKxt2s=", 2045 | "dev": true, 2046 | "requires": { 2047 | "homedir-polyfill": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz" 2048 | } 2049 | } 2050 | } 2051 | }, 2052 | "tsconfig": { 2053 | "version": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz", 2054 | "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=", 2055 | "dev": true, 2056 | "requires": { 2057 | "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2058 | "strip-json-comments": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" 2059 | }, 2060 | "dependencies": { 2061 | "strip-bom": { 2062 | "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", 2063 | "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", 2064 | "dev": true 2065 | } 2066 | } 2067 | }, 2068 | "type-detect": { 2069 | "version": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.5.tgz", 2070 | "integrity": "sha1-1w5byB223io4G8rKDG4MvcdjXeI=", 2071 | "dev": true 2072 | }, 2073 | "typescript": { 2074 | "version": "https://registry.npmjs.org/typescript/-/typescript-2.6.1.tgz", 2075 | "integrity": "sha1-7znN6ierrAtQAkLWcmq5DgyEZjE=", 2076 | "dev": true 2077 | }, 2078 | "uglify-js": { 2079 | "version": "3.3.8", 2080 | "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.8.tgz", 2081 | "integrity": "sha512-X0jAGtpSZRtd4RhbVNuGHyjZNa/h2MrVkKrR3Ew5iL2MJw6d7FmBke+fhVCALWySv1ygHnjjROG1KI1FAPvddw==", 2082 | "dev": true, 2083 | "requires": { 2084 | "commander": "2.13.0", 2085 | "source-map": "0.6.1" 2086 | }, 2087 | "dependencies": { 2088 | "commander": { 2089 | "version": "2.13.0", 2090 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", 2091 | "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", 2092 | "dev": true 2093 | }, 2094 | "source-map": { 2095 | "version": "0.6.1", 2096 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 2097 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 2098 | "dev": true 2099 | } 2100 | } 2101 | }, 2102 | "unc-path-regex": { 2103 | "version": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", 2104 | "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", 2105 | "dev": true 2106 | }, 2107 | "unique-stream": { 2108 | "version": "https://registry.npmjs.org/unique-stream/-/unique-stream-1.0.0.tgz", 2109 | "integrity": "sha1-1ZpKdUJ0R9mqbJHnAmP40mpLEEs=", 2110 | "dev": true 2111 | }, 2112 | "user-home": { 2113 | "version": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", 2114 | "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", 2115 | "dev": true 2116 | }, 2117 | "util-deprecate": { 2118 | "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2119 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2120 | "dev": true 2121 | }, 2122 | "v8flags": { 2123 | "version": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", 2124 | "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", 2125 | "dev": true, 2126 | "requires": { 2127 | "user-home": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" 2128 | } 2129 | }, 2130 | "vali-date": { 2131 | "version": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", 2132 | "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", 2133 | "dev": true 2134 | }, 2135 | "vinyl": { 2136 | "version": "https://registry.npmjs.org/vinyl/-/vinyl-0.5.3.tgz", 2137 | "integrity": "sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4=", 2138 | "dev": true, 2139 | "requires": { 2140 | "clone": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", 2141 | "clone-stats": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", 2142 | "replace-ext": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz" 2143 | } 2144 | }, 2145 | "vinyl-fs": { 2146 | "version": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-0.3.14.tgz", 2147 | "integrity": "sha1-mmhRzhysHBzqX+hsCTHWIMLPqeY=", 2148 | "dev": true, 2149 | "requires": { 2150 | "defaults": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", 2151 | "glob-stream": "https://registry.npmjs.org/glob-stream/-/glob-stream-3.1.18.tgz", 2152 | "glob-watcher": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-0.0.6.tgz", 2153 | "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.11.tgz", 2154 | "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 2155 | "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-1.0.0.tgz", 2156 | "through2": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 2157 | "vinyl": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz" 2158 | }, 2159 | "dependencies": { 2160 | "clone": { 2161 | "version": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", 2162 | "integrity": "sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8=", 2163 | "dev": true 2164 | }, 2165 | "readable-stream": { 2166 | "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 2167 | "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", 2168 | "dev": true, 2169 | "requires": { 2170 | "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 2171 | "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 2172 | "isarray": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", 2173 | "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" 2174 | } 2175 | }, 2176 | "through2": { 2177 | "version": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", 2178 | "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", 2179 | "dev": true, 2180 | "requires": { 2181 | "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", 2182 | "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" 2183 | } 2184 | }, 2185 | "vinyl": { 2186 | "version": "https://registry.npmjs.org/vinyl/-/vinyl-0.4.6.tgz", 2187 | "integrity": "sha1-LzVsh6VQolVGHza76ypbqL94SEc=", 2188 | "dev": true, 2189 | "requires": { 2190 | "clone": "https://registry.npmjs.org/clone/-/clone-0.2.0.tgz", 2191 | "clone-stats": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz" 2192 | } 2193 | } 2194 | } 2195 | }, 2196 | "vinyl-sourcemaps-apply": { 2197 | "version": "0.2.1", 2198 | "resolved": "https://registry.npmjs.org/vinyl-sourcemaps-apply/-/vinyl-sourcemaps-apply-0.2.1.tgz", 2199 | "integrity": "sha1-q2VJ1h0XLCsbh75cUI0jnI74dwU=", 2200 | "dev": true, 2201 | "requires": { 2202 | "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" 2203 | } 2204 | }, 2205 | "which": { 2206 | "version": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", 2207 | "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", 2208 | "dev": true, 2209 | "requires": { 2210 | "isexe": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" 2211 | } 2212 | }, 2213 | "wrappy": { 2214 | "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 2215 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", 2216 | "dev": true 2217 | }, 2218 | "xtend": { 2219 | "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", 2220 | "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", 2221 | "dev": true 2222 | }, 2223 | "yn": { 2224 | "version": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", 2225 | "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", 2226 | "dev": true 2227 | } 2228 | } 2229 | } 2230 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "linqscript", 3 | "version": "1.4.3", 4 | "description": " C# alike List in Javascript. Simple lightweight lambda syntax library for Typescript, extending Array. Works with Angular", 5 | "main": "dist/list.min.js", 6 | "scripts": { 7 | "test": "mocha -r ts-node/register tests/**/tests.ts", 8 | "build": "gulp default && gulp compress" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/sevensc/linqscript.git" 13 | }, 14 | "keywords": [ 15 | "linqscript", 16 | "linq", 17 | "linqjs", 18 | "lambda", 19 | "list", 20 | "typescript", 21 | "array", 22 | "angular" 23 | ], 24 | "author": "Sven Ulrich (sven-ulrich.net)", 25 | "license": "MIT", 26 | "bugs": { 27 | "url": "https://github.com/sevensc/linqscript/issues" 28 | }, 29 | "homepage": "https://github.com/sevensc/linqscript#readme", 30 | "dependencies": {}, 31 | "devDependencies": { 32 | "@types/chai": "^4.0.1", 33 | "@types/mocha": "^2.2.41", 34 | "chai": "^4.1.0", 35 | "gulp": "^3.9.1", 36 | "gulp-rename": "^1.2.2", 37 | "gulp-typescript": "^3.2.1", 38 | "gulp-uglify": "^3.0.0", 39 | "mocha": "^4.0.1", 40 | "pump": "^2.0.1", 41 | "ts-node": "^3.2.0", 42 | "typescript": "^2.6.1" 43 | }, 44 | "directories": { 45 | "test": "tests" 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | [![NPM](https://nodei.co/npm/linqscript.png?mini=true)](https://www.npmjs.com/package/linqscript) 2 | # C# alike List in Javascript. Simple lightweight lambda syntax library for Typescript, extending Array. 3 | ## No jQuery required! Unit tested. 4 | ##### Typescript arrow functions allows us, to use lambda syntax, which makes this easy to use. 5 | ##### This library extends the native Array. Use full advantage of an Array, extended with this methods. Works with Angular. 6 | 7 | ```typescript 8 | import { List } from 'linqscript'; 9 | ``` 10 | #### USAGE: 11 | ```typescript 12 | var fruits = new List(); 13 | fruits.Add("apple"); 14 | fruits.Add("banana"); 15 | 16 | var fruit = fruits.Where(x => x === "apple").First(); 17 | ``` 18 | #### You can use of course more complex objects: 19 | ```typescript 20 | enum Color { 21 | Green, 22 | Red 23 | } 24 | 25 | class Fruits { 26 | public Name: string; 27 | public Color: Color; 28 | } 29 | 30 | var fruits = new List(); 31 | var apple = new Fruit(); 32 | apple.Color = Color.Green; 33 | apple.Name = "Apple"; 34 | fruits.Add(apple); 35 | 36 | var redApple = new Fruit(); 37 | redApple.Color = Color.Red; 38 | redApple.Name = "Apple"; 39 | fruits.Add(redApple); 40 | 41 | var kiwi = new Fruit(); 42 | kiwi.Color = Color.Green; 43 | kiwi.Name = "Kiwi"; 44 | fruits.Add(kiwi); 45 | 46 | fruits.Where(x => x.Color === Color.Green); 47 | ``` 48 | ```json 49 | Output: 50 | { 51 | "Fruits": [{ 52 | "Name": "Kiwi", 53 | "Color": 1 54 | }, { 55 | "Name": "Apple", 56 | "Color": 1 57 | }] 58 | } 59 | ``` 60 | 61 | ```typescript 62 | fruits.Select(x => x.Color); 63 | ``` 64 | ```json 65 | { 66 | "Color": [ 67 | "Green", 68 | "Red" 69 | ] 70 | } 71 | ``` 72 | ```typescript 73 | fruits.Distinct(x => x.Name) 74 | ``` 75 | ```json 76 | { 77 | "Name": [ 78 | "Apple", 79 | "Kiwi" 80 | ] 81 | } 82 | ``` 83 | ```typescript 84 | List.Range(3, 10) 85 | 86 | [3,4,5,6,7,8,9,10,11,12] // starting at 3, generates 10 numbers 87 | ``` 88 | ```typescript 89 | var numbersToSum = new List(); 90 | 91 | numbersToSum.Add(1); 92 | numbersToSum.Add("2"); // will be converted 93 | numbersToSum.Add(3); 94 | numbersToSum.Add(5); 95 | numbersToSum.Add("eight"); // will be ignored 96 | numbersToSum.Add(8); 97 | numbersToSum.Add(13); 98 | 99 | var sum = numbersToSum.Sum(); // 32 100 | 101 | var sumPlusOne = numbersToSum.Sum(x => x+1); // 38 -> use delegate to manipulate. 102 | ``` 103 | 104 | 105 | ## Methods 106 | | Method | Description | Parameter | 107 | | ------------- |:------------- |:----- | 108 | | `Where` | Returns list, where delegate returns true. | `Delegate` | 109 | | `Select` | Returns list of selected value | `Delegate` | 110 | | `Distinct` | Returns grouped selected value. | `Delegate` | 111 | | `First` | Returns first item in list. | | 112 | | `Last` | Returns last item in list. | | 113 | | `Range (static)` | Creates list of numbers, within a specified range. | `start`, `length` | 114 | | `Add` | Adds element to list. | `item` | 115 | | `AddRange` | Adds each item in given list. | `items` | 116 | | `RemoveAt` | Removes item from list by index. | `index` | 117 | | `Remove` | Removes item from list. | `item` | 118 | | `IndexOf` | Gets index of given item. | `item` | 119 | | `Contains` | Return true if list contains given item. | `item` | 120 | | `Get` | Gets item by index. | `index` | 121 | | `Clear` | Clears list. | | 122 | | `ToArray` | Converts list to array. Important for serialization. | `item` | 123 | | `Count` | Returns listcount. | | 124 | | `Count` | Returns listcount by delegate. | `Delegate` | 125 | | `Sum` | Summarizes numbers in list. | | 126 | | `Sum` | Summarizes numbers in list by delegate. | `Delegate` | 127 | | `Any` | Returns true if list contains any item. | | 128 | | `Any` | Returns true if list contains any item by delegate. | `Delegate` | 129 | | `Equals` | Compares list with another list. Returns true if lists are equal. If comparePosition is set to false, equality will be checked without comparison on position | `item`, `comparePosition (default true)` | 130 | | `ToList` | Converts an Array to list. | | 131 | 132 | #### any questions or feedback, please contact me! -------------------------------------------------------------------------------- /tests/tests.ts: -------------------------------------------------------------------------------- 1 | import { List } from "../dist/list"; 2 | import "../dist/list"; 3 | import { expect } from "chai"; 4 | import "mocha"; 5 | 6 | export enum Color { 7 | Red, 8 | Yellow, 9 | Blue 10 | } 11 | export class Fruit { 12 | public Color: Color; 13 | public Name: string; 14 | public Tastes: List; 15 | 16 | constructor() { 17 | this.Tastes = new List(); 18 | } 19 | } 20 | /**First item has to be "red", second "yellow" and last "blue" */ 21 | var checklist = function(enumeration: any[]) { 22 | return ( 23 | enumeration[0] === "red" && 24 | enumeration[1] === "yellow" && 25 | enumeration[2] === "blue" 26 | ); 27 | }; 28 | 29 | describe("constructor", () => { 30 | it("instantiates a new list with another in its constructor", () => { 31 | var list = new List(); 32 | list.Add("check my ctor!"); 33 | var expected = new List(list); 34 | expected.AddRange(list); 35 | 36 | expect(expected.First()).to.equal("check my ctor!"); 37 | }); 38 | }); 39 | 40 | describe("List.Where()", () => { 41 | it("should return true if values where correctly selected", () => { 42 | var fruits = new List(); 43 | var apple = new Fruit(); 44 | apple.Color = Color.Red; 45 | apple.Name = "Apple"; 46 | apple.Tastes.Add("sweet"); 47 | apple.Tastes.Add("sour"); 48 | fruits.Add(apple); 49 | 50 | var banana = new Fruit(); 51 | banana.Color = Color.Yellow; 52 | banana.Name = "Banana"; 53 | banana.Tastes.Add("sweet"); 54 | fruits.Add(banana); 55 | 56 | var lemon = new Fruit(); 57 | lemon.Color = Color.Yellow; 58 | lemon.Name = "Lemon"; 59 | lemon.Tastes.Add("sour"); 60 | lemon.Tastes.Add("sweet"); 61 | fruits.Add(lemon); 62 | 63 | var actual = fruits.Where(x => x.Color === Color.Yellow); 64 | var expected = false; 65 | if ( 66 | actual.length === 2 && 67 | actual[0].Name === "Banana" && 68 | actual[0].Color === Color.Yellow 69 | ) 70 | expected = true; 71 | if (actual[1].Name !== "Lemon" || actual[1].Color !== Color.Yellow) 72 | expected = false; 73 | 74 | console.log("Result: " + JSON.stringify(actual)); 75 | expect(expected).to.equal(true); 76 | }); 77 | }); 78 | 79 | describe("AddRange()", () => { 80 | it("should return true if added by arguments -> AddRange(..args)", () => { 81 | var list = new List(); 82 | list.AddRange("red", "yellow", "blue"); 83 | 84 | console.log("Result: " + JSON.stringify(list)); 85 | expect(checklist(list)).to.equal(true); 86 | }); 87 | 88 | it("should return true if added by array -> AddRange(T:[])", () => { 89 | var list = new List(); 90 | list.AddRange(["red", "yellow", "blue"]); 91 | 92 | console.log("Result: " + JSON.stringify(list)); 93 | expect(checklist(list)).to.equal(true); 94 | }); 95 | 96 | it("should return true if added by list -> AddRange(List)", () => { 97 | var list = new List(); 98 | list.Add("red"); 99 | list.Add("yellow"); 100 | list.Add("blue"); 101 | 102 | var list2 = new List(); 103 | list2.AddRange(list); 104 | 105 | console.log("Result: " + JSON.stringify(list2)); 106 | expect(checklist(list2)).to.equal(true); 107 | }); 108 | }); 109 | 110 | describe("Add()", () => { 111 | it("should return true if items where added correctly", () => { 112 | var list = new List(); 113 | list.Add("red"); 114 | list.Add("yellow"); 115 | list.Add("blue"); 116 | 117 | console.log("Result: " + JSON.stringify(list)); 118 | expect(checklist(list)).to.equal(true); 119 | }); 120 | }); 121 | 122 | describe("ToArray()", () => { 123 | it("should return true if list converted to Array", () => { 124 | var list = new List(); 125 | list.Add("red"); 126 | list.Add("yellow"); 127 | list.Add("blue"); 128 | 129 | var array = list.ToArray(); 130 | var actual = Object.prototype.toString.call(array) === "[object Array]"; 131 | 132 | console.log( 133 | "Result: " + 134 | JSON.stringify(`type of ${Object.prototype.toString.call(array)}`) 135 | ); 136 | expect(actual).to.equal(true); 137 | }); 138 | }); 139 | 140 | describe("ToList()", () => { 141 | it("should return true if list converted to Array", () => { 142 | var array = new Array(); 143 | array.push("red"); 144 | array.push("yellow"); 145 | array.push("blue"); 146 | 147 | var list = array.ToList(); 148 | var actual = Object.prototype.toString.call(array) === "[object Array]"; 149 | 150 | console.log( 151 | "Result: " + 152 | JSON.stringify(`type of ${Object.prototype.toString.call(array)}`) 153 | ); 154 | expect(actual).to.equal(true); 155 | }); 156 | }); 157 | 158 | describe("Contains()", () => { 159 | it("should return true if list contains 'yellow'", () => { 160 | var list = new List(); 161 | list.Add("red"); 162 | list.Add("yellow"); 163 | list.Add("blue"); 164 | 165 | console.log("Result: " + JSON.stringify(list)); 166 | var actual = list.Contains("yellow"); 167 | expect(actual).to.equal(true); 168 | }); 169 | }); 170 | 171 | describe("IndexOf()", () => { 172 | it("should return true if index of 'yellow' is one", () => { 173 | var list = new List(); 174 | list.Add("red"); 175 | list.Add("yellow"); 176 | list.Add("blue"); 177 | 178 | var actual = list.indexOf("yellow"); 179 | console.log("Result: " + JSON.stringify(list[actual])); 180 | 181 | expect(actual).to.equal(1); 182 | }); 183 | }); 184 | 185 | describe("Select()", () => { 186 | it("should return true if only colors selected", () => { 187 | var fruits = new List(); 188 | var apple = new Fruit(); 189 | apple.Color = Color.Red; 190 | apple.Name = "Apple"; 191 | fruits.Add(apple); 192 | 193 | var banana = new Fruit(); 194 | banana.Color = Color.Yellow; 195 | banana.Name = "Banana"; 196 | fruits.Add(banana); 197 | 198 | var grape = new Fruit(); 199 | grape.Color = Color.Blue; 200 | grape.Name = "Grape"; 201 | fruits.Add(grape); 202 | 203 | var actual = fruits.Select(x => x.Color); 204 | var expected = false; 205 | if ( 206 | actual.length === 3 && 207 | actual[0] === Color.Red && 208 | actual[1] === Color.Yellow && 209 | actual[2] === Color.Blue 210 | ) 211 | expected = true; 212 | 213 | console.log("Result: " + JSON.stringify(actual)); 214 | expect(expected).to.equal(true); 215 | }); 216 | }); 217 | 218 | describe("Clear()", () => { 219 | it("should return true if list has been cleard", () => { 220 | var list = new List(); 221 | list.Add("red"); 222 | list.Add("yellow"); 223 | list.Add("blue"); 224 | list.Clear(); 225 | 226 | console.log("Result: " + JSON.stringify(list)); 227 | expect(list.length).to.equals(0); 228 | }); 229 | }); 230 | 231 | describe("RemoveAt()", () => { 232 | it("should return true if item at index 1 has been removed", () => { 233 | var list = new List(); 234 | list.Add("red"); 235 | list.Add("yellow"); 236 | list.Add("blue"); 237 | 238 | list.RemoveAt(1); 239 | 240 | var actual = false; 241 | if (list.length === 2 && list[0] === "red" && list[1] === "blue") 242 | actual = true; 243 | 244 | console.log("Result: " + JSON.stringify(list)); 245 | expect(actual).to.equal(true); 246 | }); 247 | }); 248 | 249 | describe("Remove()", () => { 250 | var fruits = new List(); 251 | var apple = new Fruit(); 252 | apple.Color = Color.Red; 253 | apple.Name = "Apple"; 254 | fruits.Add(apple); 255 | 256 | var banana = new Fruit(); 257 | banana.Color = Color.Yellow; 258 | banana.Name = "Banana"; 259 | fruits.Add(banana); 260 | 261 | var grape = new Fruit(); 262 | grape.Color = Color.Blue; 263 | grape.Name = "Grape"; 264 | fruits.Add(grape); 265 | 266 | fruits.Remove(banana); 267 | 268 | var actual = false; 269 | if ( 270 | fruits.length === 2 && 271 | fruits[0].Name === "Apple" && 272 | fruits[1].Name === "Grape" 273 | ) 274 | actual = true; 275 | 276 | console.log("Result: " + JSON.stringify(fruits)); 277 | expect(actual).to.equal(true); 278 | }); 279 | 280 | describe("Get()", () => { 281 | it("should return true if item at index 1 is 'yellow'", () => { 282 | var list = new List(); 283 | list.Add("red"); 284 | list.Add("yellow"); 285 | list.Add("blue"); 286 | 287 | var actual = list.Get(1); 288 | console.log("Result: " + JSON.stringify(actual)); 289 | expect(actual).to.equal("yellow"); 290 | }); 291 | }); 292 | 293 | describe("Count()", () => { 294 | it("should return true if list contains all 3 items -> Count()", () => { 295 | var list = new List(); 296 | list.Add("red"); 297 | list.Add("yellow"); 298 | list.Add("blue"); 299 | 300 | var actual = list.Count(); 301 | console.log("Result: " + JSON.stringify(actual)); 302 | expect(actual).to.equal(3); 303 | }); 304 | 305 | it("should return true if Count returns 1 with delegate -> Count(delegate)", () => { 306 | var list = new List(); 307 | list.Add("red"); 308 | list.Add("yellow"); 309 | list.Add("blue"); 310 | 311 | var actual = list.Count(x => x === "yellow"); 312 | console.log("Result: " + JSON.stringify(actual)); 313 | expect(actual).to.equal(1); 314 | }); 315 | }); 316 | 317 | describe("Any()", () => { 318 | it("should return true if list has any items", () => { 319 | var list = new List(); 320 | list.Add("red"); 321 | list.Add("yellow"); 322 | list.Add("blue"); 323 | 324 | var actual = list.Any(); 325 | console.log("Result: " + JSON.stringify(actual)); 326 | expect(actual).to.equal(true); 327 | }); 328 | 329 | it("should return true if list has any items by delegate where is 1 yellow item", () => { 330 | var list = new List(); 331 | list.Add("red"); 332 | list.Add("yellow"); 333 | list.Add("blue"); 334 | 335 | var actual = list.Any(x => x === "yellow"); 336 | console.log("Result: " + JSON.stringify(actual)); 337 | expect(actual).to.equal(true); 338 | }); 339 | }); 340 | 341 | describe("Distinct()", () => { 342 | it("should return true", () => { 343 | var fruits = new List(); 344 | var apple = new Fruit(); 345 | apple.Tastes.Add("sweet"); 346 | apple.Tastes.Add("sour"); 347 | apple.Color = Color.Red; 348 | apple.Name = "Apple"; 349 | fruits.Add(apple); 350 | 351 | var banana = new Fruit(); 352 | banana.Color = Color.Yellow; 353 | banana.Name = "Banana"; 354 | fruits.Add(banana); 355 | 356 | var grape = new Fruit(); 357 | grape.Color = Color.Yellow; 358 | grape.Tastes.Add("sour"); 359 | grape.Name = "Lemon"; 360 | fruits.Add(grape); 361 | 362 | var grape2 = new Fruit(); 363 | grape2.Color = Color.Yellow; 364 | grape2.Tastes.Add("sour"); 365 | grape2.Name = "Lemon"; 366 | fruits.Add(grape2); 367 | 368 | var actual = fruits.Distinct(); 369 | var expected = false; 370 | 371 | if ( 372 | actual.length === 3 && 373 | actual[0].Name == "Apple" && 374 | actual[1].Name == "Banana" && 375 | actual[2].Name == "Lemon" 376 | ) 377 | expected = true; 378 | 379 | console.log(expected, "succeed " + JSON.stringify(actual)); 380 | expect(expected).to.equal(true); 381 | }); 382 | 383 | it("should return true if distinct works on delegate by select distinct value", () => { 384 | var fruits = new List(); 385 | var apple = new Fruit(); 386 | apple.Color = Color.Red; 387 | apple.Name = "Apple"; 388 | fruits.Add(apple); 389 | 390 | var banana = new Fruit(); 391 | banana.Color = Color.Yellow; 392 | banana.Name = "Banana"; 393 | fruits.Add(banana); 394 | 395 | var grape = new Fruit(); 396 | grape.Color = Color.Yellow; 397 | grape.Name = "Lemon"; 398 | fruits.Add(grape); 399 | 400 | var actual = fruits.Distinct(x => x.Color); 401 | 402 | var expected = false; 403 | if ( 404 | actual.length === 2 && 405 | actual[0] === Color.Red && 406 | actual[1] === Color.Yellow 407 | ) 408 | expected = true; 409 | 410 | console.log("succeed " + JSON.stringify(actual)); 411 | expect(expected).to.equal(true); 412 | }); 413 | }); 414 | 415 | describe("Equals()", () => { 416 | it("should return true if lists are equal", () => { 417 | var fruits = new List(); 418 | 419 | var apple = new Fruit(); 420 | apple.Color = Color.Red; 421 | apple.Name = "Apple"; 422 | apple.Tastes.Add("sweet"); 423 | apple.Tastes.Add("sour"); 424 | fruits.Add(apple); 425 | 426 | var banana = new Fruit(); 427 | banana.Color = Color.Yellow; 428 | banana.Name = "Banana"; 429 | banana.Tastes.Add("sweet"); 430 | fruits.Add(banana); 431 | 432 | var grape = new Fruit(); 433 | grape.Color = Color.Blue; 434 | grape.Name = "Grape"; 435 | grape.Tastes.Add("sweet"); 436 | grape.Tastes.Add("fruity"); 437 | fruits.Add(grape); 438 | 439 | var fruits2 = new List(); 440 | var apple2 = new Fruit(); 441 | apple2.Color = Color.Red; 442 | apple2.Name = "Apple"; 443 | apple2.Tastes.Add("sweet"); 444 | apple2.Tastes.Add("sour"); 445 | fruits2.Add(apple2); 446 | 447 | var banana2 = new Fruit(); 448 | banana2.Color = Color.Yellow; 449 | banana2.Name = "Banana"; 450 | banana2.Tastes.Add("sweet"); 451 | fruits2.Add(banana2); 452 | 453 | var grape2 = new Fruit(); 454 | grape2.Color = Color.Blue; 455 | grape2.Name = "Grape"; 456 | grape2.Tastes.Add("sweet"); 457 | grape2.Tastes.Add("fruity"); 458 | fruits2.Add(grape2); 459 | console.log(JSON.stringify(fruits)); 460 | console.log(JSON.stringify(fruits2)); 461 | var actual = fruits.Equals(fruits2); 462 | 463 | expect(actual).to.equal(true); 464 | }); 465 | 466 | it("should return true if lists are equal, with wrong positions", () => { 467 | var fruits = new List(); 468 | 469 | var apple = new Fruit(); 470 | apple.Color = Color.Red; 471 | apple.Name = "Apple"; 472 | apple.Tastes.Add("sweet"); 473 | apple.Tastes.Add("sour"); 474 | fruits.Add(apple); 475 | 476 | var banana = new Fruit(); 477 | banana.Color = Color.Yellow; 478 | banana.Name = "Banana"; 479 | banana.Tastes.Add("sweet"); 480 | fruits.Add(banana); 481 | 482 | var grape = new Fruit(); 483 | grape.Color = Color.Blue; 484 | grape.Name = "Grape"; 485 | grape.Tastes.Add("sweet"); 486 | grape.Tastes.Add("fruity"); 487 | fruits.Add(grape); 488 | 489 | var fruits2 = new List(); 490 | var apple2 = new Fruit(); 491 | apple2.Color = Color.Red; 492 | apple2.Name = "Apple"; 493 | apple2.Tastes.Add("sweet"); 494 | apple2.Tastes.Add("sour"); 495 | fruits2.Add(apple2); 496 | 497 | var banana2 = new Fruit(); 498 | banana2.Color = Color.Yellow; 499 | banana2.Name = "Banana"; 500 | banana2.Tastes.Add("sweet"); 501 | fruits2.Add(banana2); 502 | 503 | var grape2 = new Fruit(); 504 | grape2.Color = Color.Blue; 505 | grape2.Name = "Grape"; 506 | grape2.Tastes.Add("fruity"); 507 | grape2.Tastes.Add("sweet"); 508 | fruits2.Add(grape2); 509 | console.log(JSON.stringify(fruits)); 510 | console.log(JSON.stringify(fruits2)); 511 | var actual = fruits.Equals(fruits2, false); 512 | 513 | expect(actual).to.equal(true); 514 | }); 515 | }); 516 | 517 | describe("Range", () => { 518 | it("first value should be 3 and last value 22, the length be 20. ", () => { 519 | var list = List.Range(3, 20); 520 | console.log(list.concat()); 521 | var expected = 522 | list.First() === 3 && list.Last() === 22 && list.length === 20; 523 | expect(expected).to.equal(true); 524 | }); 525 | 526 | it("should throw the error: Count cant be less or equal to zero.", () => { 527 | expect(() => { 528 | List.Range(1, 0); 529 | }).to.throw("Count cant be less or equal to zero."); 530 | }); 531 | }); 532 | 533 | describe("Sum", () => { 534 | it("should summarize numbers ", () => { 535 | var a = new List(); 536 | a.Add(1); 537 | a.Add(2); 538 | a.Add(4); 539 | var b = a.Sum(); 540 | expect(b).to.equal(7); 541 | }); 542 | 543 | it("should summarize and convert a numbers as string to an int ", () => { 544 | var a = new List(); 545 | a.Add("1"); 546 | a.Add("2"); 547 | var b = a.Sum(); 548 | expect(b).to.equal(3); 549 | }); 550 | 551 | it("should summarize and add +1 to every entry in list", () => { 552 | var a = new List(); 553 | a.Add(1); 554 | a.Add(2); 555 | a.Add(3); 556 | a.Add(5); 557 | a.Add(8); 558 | a.Add(13); 559 | var b = a.Sum(x => x + 1); 560 | expect(b).to.equal(38); 561 | }); 562 | 563 | it("should summarize only valid numbers", () => { 564 | var a = new List(); 565 | a.Add(1); 566 | a.Add(2); 567 | a.Add("invalid"); 568 | a.Add(5); 569 | a.Add(8); 570 | a.Add(13); 571 | var b = a.Sum(); 572 | expect(b).to.equal(29); 573 | }); 574 | }); 575 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [ 3 | "dist/list.ts" 4 | ], 5 | "compilerOptions": { 6 | "noImplicitAny": true, 7 | "removeComments": true, 8 | "target": "es5", 9 | "module": "commonjs" 10 | } 11 | } -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "curly": false 4 | } 5 | } 6 | --------------------------------------------------------------------------------