├── .gitignore ├── LICENSE ├── README.md ├── app.css ├── app ├── _guards │ ├── auth.guard.ts │ └── index.ts ├── _helpers │ ├── fake-backend.ts │ ├── index.ts │ └── jwt.interceptor.ts ├── _models │ ├── index.ts │ └── user.ts ├── _services │ ├── authentication.service.ts │ ├── index.ts │ └── user.service.ts ├── app.component.html ├── app.component.ts ├── app.module.ts ├── app.routing.ts ├── home │ ├── home.component.html │ ├── home.component.ts │ └── index.ts ├── login │ ├── index.ts │ ├── login.component.html │ └── login.component.ts └── main.ts ├── index.html ├── package-lock.json ├── package.json ├── systemjs.config.js └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | 6 | # Runtime data 7 | pids 8 | *.pid 9 | *.seed 10 | 11 | # Directory for instrumented libs generated by jscoverage/JSCover 12 | lib-cov 13 | 14 | # Coverage directory used by tools like istanbul 15 | coverage 16 | 17 | # nyc test coverage 18 | .nyc_output 19 | 20 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) 21 | .grunt 22 | 23 | # node-waf configuration 24 | .lock-wscript 25 | 26 | # Compiled binary addons (http://nodejs.org/api/addons.html) 27 | build/Release 28 | 29 | # Dependency directories 30 | node_modules 31 | jspm_packages 32 | typings 33 | 34 | # Optional npm cache directory 35 | .npm 36 | 37 | # Optional REPL history 38 | .node_repl_history 39 | 40 | # Generated files 41 | app/**/*.js 42 | app/**/*.js.map -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Jason Watmore 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. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # angular2-jwt-authentication-example 2 | 3 | Angular 2/5 JWT Authentication Example 4 | 5 | To see a demo and further details go to http://jasonwatmore.com/post/2016/08/16/angular-2-jwt-authentication-example-tutorial 6 | -------------------------------------------------------------------------------- /app.css: -------------------------------------------------------------------------------- 1 | .help-block { 2 | font-size: 12px; 3 | } -------------------------------------------------------------------------------- /app/_guards/auth.guard.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; 3 | 4 | @Injectable() 5 | export class AuthGuard implements CanActivate { 6 | 7 | constructor(private router: Router) { } 8 | 9 | canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { 10 | if (localStorage.getItem('currentUser')) { 11 | // logged in so return true 12 | return true; 13 | } 14 | 15 | // not logged in so redirect to login page 16 | this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }}); 17 | return false; 18 | } 19 | } -------------------------------------------------------------------------------- /app/_guards/index.ts: -------------------------------------------------------------------------------- 1 | export * from './auth.guard'; -------------------------------------------------------------------------------- /app/_helpers/fake-backend.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { HttpRequest, HttpResponse, HttpHandler, HttpEvent, HttpInterceptor, HTTP_INTERCEPTORS } from '@angular/common/http'; 3 | import { Observable } from 'rxjs/Observable'; 4 | import 'rxjs/add/observable/of'; 5 | import 'rxjs/add/observable/throw'; 6 | import 'rxjs/add/operator/delay'; 7 | import 'rxjs/add/operator/mergeMap'; 8 | import 'rxjs/add/operator/materialize'; 9 | import 'rxjs/add/operator/dematerialize'; 10 | 11 | @Injectable() 12 | export class FakeBackendInterceptor implements HttpInterceptor { 13 | 14 | constructor() { } 15 | 16 | intercept(request: HttpRequest, next: HttpHandler): Observable> { 17 | let testUser = { id: 1, username: 'test', password: 'test', firstName: 'Test', lastName: 'User' }; 18 | 19 | // wrap in delayed observable to simulate server api call 20 | return Observable.of(null).mergeMap(() => { 21 | 22 | // authenticate 23 | if (request.url.endsWith('/api/authenticate') && request.method === 'POST') { 24 | if (request.body.username === testUser.username && request.body.password === testUser.password) { 25 | // if login details are valid return 200 OK with a fake jwt token 26 | return Observable.of(new HttpResponse({ status: 200, body: { token: 'fake-jwt-token' } })); 27 | } else { 28 | // else return 400 bad request 29 | return Observable.throw('Username or password is incorrect'); 30 | } 31 | } 32 | 33 | // get users 34 | if (request.url.endsWith('/api/users') && request.method === 'GET') { 35 | // check for fake auth token in header and return users if valid, this security is implemented server side in a real application 36 | if (request.headers.get('Authorization') === 'Bearer fake-jwt-token') { 37 | return Observable.of(new HttpResponse({ status: 200, body: [testUser] })); 38 | } else { 39 | // return 401 not authorised if token is null or invalid 40 | return Observable.throw('Unauthorised'); 41 | } 42 | } 43 | 44 | // pass through any requests not handled above 45 | return next.handle(request); 46 | 47 | }) 48 | 49 | // call materialize and dematerialize to ensure delay even if an error is thrown (https://github.com/Reactive-Extensions/RxJS/issues/648) 50 | .materialize() 51 | .delay(500) 52 | .dematerialize(); 53 | } 54 | } 55 | 56 | export let fakeBackendProvider = { 57 | // use fake backend in place of Http service for backend-less development 58 | provide: HTTP_INTERCEPTORS, 59 | useClass: FakeBackendInterceptor, 60 | multi: true 61 | }; -------------------------------------------------------------------------------- /app/_helpers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './jwt.interceptor'; 2 | export * from './fake-backend'; -------------------------------------------------------------------------------- /app/_helpers/jwt.interceptor.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http'; 3 | import { Observable } from 'rxjs/Observable'; 4 | 5 | @Injectable() 6 | export class JwtInterceptor implements HttpInterceptor { 7 | intercept(request: HttpRequest, next: HttpHandler): Observable> { 8 | // add authorization header with jwt token if available 9 | let currentUser = JSON.parse(localStorage.getItem('currentUser')); 10 | if (currentUser && currentUser.token) { 11 | request = request.clone({ 12 | setHeaders: { 13 | Authorization: `Bearer ${currentUser.token}` 14 | } 15 | }); 16 | } 17 | 18 | return next.handle(request); 19 | } 20 | } -------------------------------------------------------------------------------- /app/_models/index.ts: -------------------------------------------------------------------------------- 1 | export * from './user'; -------------------------------------------------------------------------------- /app/_models/user.ts: -------------------------------------------------------------------------------- 1 | export class User { 2 | username: string; 3 | password: string; 4 | firstName: string; 5 | lastName: string; 6 | } -------------------------------------------------------------------------------- /app/_services/authentication.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { HttpClient, HttpHeaders } from '@angular/common/http'; 3 | import { Observable } from 'rxjs/Observable'; 4 | import 'rxjs/add/operator/map' 5 | 6 | @Injectable() 7 | export class AuthenticationService { 8 | constructor(private http: HttpClient) { } 9 | 10 | login(username: string, password: string) { 11 | return this.http.post('/api/authenticate', { username: username, password: password }) 12 | .map(user => { 13 | // login successful if there's a jwt token in the response 14 | if (user && user.token) { 15 | // store user details and jwt token in local storage to keep user logged in between page refreshes 16 | localStorage.setItem('currentUser', JSON.stringify(user)); 17 | } 18 | 19 | return user; 20 | }); 21 | } 22 | 23 | logout() { 24 | // remove user from local storage to log user out 25 | localStorage.removeItem('currentUser'); 26 | } 27 | } -------------------------------------------------------------------------------- /app/_services/index.ts: -------------------------------------------------------------------------------- 1 | export * from './authentication.service'; 2 | export * from './user.service'; -------------------------------------------------------------------------------- /app/_services/user.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { HttpClient } from '@angular/common/http'; 3 | 4 | import { User } from '../_models/index'; 5 | 6 | @Injectable() 7 | export class UserService { 8 | constructor(private http: HttpClient) { } 9 | 10 | getAll() { 11 | return this.http.get('/api/users'); 12 | } 13 | } -------------------------------------------------------------------------------- /app/app.component.html: -------------------------------------------------------------------------------- 1 |  2 |
3 |
4 |
5 | 6 |
7 |
8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | moduleId: module.id, 5 | selector: 'app', 6 | templateUrl: 'app.component.html' 7 | }) 8 | 9 | export class AppComponent { } -------------------------------------------------------------------------------- /app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; 5 | 6 | // used to create fake backend 7 | import { fakeBackendProvider } from './_helpers/index'; 8 | 9 | import { AppComponent } from './app.component'; 10 | import { routing } from './app.routing'; 11 | 12 | import { AuthGuard } from './_guards/index'; 13 | import { JwtInterceptor } from './_helpers/index'; 14 | import { AuthenticationService, UserService } from './_services/index'; 15 | import { LoginComponent } from './login/index'; 16 | import { HomeComponent } from './home/index'; 17 | 18 | @NgModule({ 19 | imports: [ 20 | BrowserModule, 21 | FormsModule, 22 | HttpClientModule, 23 | routing 24 | ], 25 | declarations: [ 26 | AppComponent, 27 | LoginComponent, 28 | HomeComponent 29 | ], 30 | providers: [ 31 | AuthGuard, 32 | AuthenticationService, 33 | UserService, 34 | { 35 | provide: HTTP_INTERCEPTORS, 36 | useClass: JwtInterceptor, 37 | multi: true 38 | }, 39 | 40 | // providers used to create fake backend 41 | fakeBackendProvider 42 | ], 43 | bootstrap: [AppComponent] 44 | }) 45 | 46 | export class AppModule { } -------------------------------------------------------------------------------- /app/app.routing.ts: -------------------------------------------------------------------------------- 1 | import { Routes, RouterModule } from '@angular/router'; 2 | 3 | import { LoginComponent } from './login/index'; 4 | import { HomeComponent } from './home/index'; 5 | import { AuthGuard } from './_guards/index'; 6 | 7 | const appRoutes: Routes = [ 8 | { path: 'login', component: LoginComponent }, 9 | { path: '', component: HomeComponent, canActivate: [AuthGuard] }, 10 | 11 | // otherwise redirect to home 12 | { path: '**', redirectTo: '' } 13 | ]; 14 | 15 | export const routing = RouterModule.forRoot(appRoutes); -------------------------------------------------------------------------------- /app/home/home.component.html: -------------------------------------------------------------------------------- 1 | 
2 |

Home

3 |

You're logged in with JWT!!

4 |
5 | Users from secure api end point: 6 |
    7 |
  • {{user.firstName}} {{user.lastName}}
  • 8 |
9 |
10 |

Logout

11 |
-------------------------------------------------------------------------------- /app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import 'rxjs/add/operator/first'; 3 | 4 | import { User } from '../_models/index'; 5 | import { UserService } from '../_services/index'; 6 | 7 | @Component({ 8 | moduleId: module.id, 9 | templateUrl: 'home.component.html' 10 | }) 11 | 12 | export class HomeComponent implements OnInit { 13 | users: User[] = []; 14 | 15 | constructor(private userService: UserService) { } 16 | 17 | ngOnInit() { 18 | // get users from secure api end point 19 | this.userService.getAll() 20 | .first() 21 | .subscribe(users => { 22 | this.users = users; 23 | }); 24 | } 25 | 26 | } -------------------------------------------------------------------------------- /app/home/index.ts: -------------------------------------------------------------------------------- 1 | export * from './home.component'; -------------------------------------------------------------------------------- /app/login/index.ts: -------------------------------------------------------------------------------- 1 | export * from './login.component'; -------------------------------------------------------------------------------- /app/login/login.component.html: -------------------------------------------------------------------------------- 1 | 
2 |
3 | Username: test
4 | Password: test 5 |
6 |

Login

7 |
8 |
9 | 10 | 11 |
Username is required
12 |
13 |
14 | 15 | 16 |
Password is required
17 |
18 |
19 | 20 | 21 |
22 |
{{error}}
23 |
24 |
25 | -------------------------------------------------------------------------------- /app/login/login.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import { Router, ActivatedRoute } from '@angular/router'; 3 | import 'rxjs/add/operator/first'; 4 | 5 | import { AuthenticationService } from '../_services/index'; 6 | 7 | @Component({ 8 | moduleId: module.id, 9 | templateUrl: 'login.component.html' 10 | }) 11 | 12 | export class LoginComponent implements OnInit { 13 | model: any = {}; 14 | loading = false; 15 | returnUrl: string; 16 | error = ''; 17 | 18 | constructor( 19 | private route: ActivatedRoute, 20 | private router: Router, 21 | private authenticationService: AuthenticationService) { } 22 | 23 | ngOnInit() { 24 | // reset login status 25 | this.authenticationService.logout(); 26 | 27 | // get return url from route parameters or default to '/' 28 | this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/'; 29 | } 30 | 31 | login() { 32 | this.loading = true; 33 | this.authenticationService.login(this.model.username, this.model.password) 34 | .first() 35 | .subscribe( 36 | data => { 37 | this.router.navigate([this.returnUrl]); 38 | }, 39 | error => { 40 | this.error = error; 41 | this.loading = false; 42 | }); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | 3 | import { AppModule } from './app.module'; 4 | 5 | platformBrowserDynamic().bootstrapModule(AppModule); -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Angular 2 JWT Authentication Example 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 24 | 25 | 26 | Loading... 27 | 28 | 29 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular2-jwt-authentication-example", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@angular/common": { 8 | "version": "5.2.11", 9 | "resolved": "https://registry.npmjs.org/@angular/common/-/common-5.2.11.tgz", 10 | "integrity": "sha512-LniJjGAeftUJDJh+2+LEjltcGen08C/VMxQ/eUYmesytKy1sN+MWzh3GbpKfEWtWmyUsYTG9lAAJNo3L3jPwsw==", 11 | "requires": { 12 | "tslib": "^1.7.1" 13 | } 14 | }, 15 | "@angular/compiler": { 16 | "version": "5.2.11", 17 | "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.2.11.tgz", 18 | "integrity": "sha512-ICvB1ud1mxaXUYLb8vhJqiLhGBVocAZGxoHTglv6hMkbrRYcnlB3FZJFOzBvtj+krkd1jamoYLI43UAmesqQ6Q==", 19 | "requires": { 20 | "tslib": "^1.7.1" 21 | } 22 | }, 23 | "@angular/core": { 24 | "version": "5.2.11", 25 | "resolved": "https://registry.npmjs.org/@angular/core/-/core-5.2.11.tgz", 26 | "integrity": "sha512-h2vpvXNAdOqKzbVaZcHnHGMT5A8uDnizk6FgGq6SPyw9s3d+/VxZ9LJaPjUk3g2lICA7og1tUel+2YfF971MlQ==", 27 | "requires": { 28 | "tslib": "^1.7.1" 29 | } 30 | }, 31 | "@angular/forms": { 32 | "version": "5.2.11", 33 | "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-5.2.11.tgz", 34 | "integrity": "sha512-wBllFlIubPclAFRXUc84Kc7TMeKOftzrQraVZ7ooTNeFLLa/FZLN2K8HGyRde8X/XDsMu1XAmjNfkz++spwTzA==", 35 | "requires": { 36 | "tslib": "^1.7.1" 37 | } 38 | }, 39 | "@angular/platform-browser": { 40 | "version": "5.2.11", 41 | "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-5.2.11.tgz", 42 | "integrity": "sha512-6YZ4IpBFqXx88vEzBZG2WWnaSYXbFWDgG0iT+bZPHAfwsbmqbcMcs7Ogu+XZ4VmK02dTqbrFh7U4P2W+sqrzow==", 43 | "requires": { 44 | "tslib": "^1.7.1" 45 | } 46 | }, 47 | "@angular/platform-browser-dynamic": { 48 | "version": "5.2.11", 49 | "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.11.tgz", 50 | "integrity": "sha512-5kKPNULcXNwkyBjpHfF+pq+Yxi8Zl866YSOK9t8txoiQ9Ctw97kMkEJcTetk6MJgBp/NP3YyjtoTAm8oXLerug==", 51 | "requires": { 52 | "tslib": "^1.7.1" 53 | } 54 | }, 55 | "@angular/router": { 56 | "version": "5.2.11", 57 | "resolved": "https://registry.npmjs.org/@angular/router/-/router-5.2.11.tgz", 58 | "integrity": "sha512-NT8xYl7Vr3qPygisek3PlXqNROEjg48GXOEsDEc7c8lDBo3EB9Tf328fWJD0GbLtXZNhmmNNxwIe+qqPFFhFAA==", 59 | "requires": { 60 | "tslib": "^1.7.1" 61 | } 62 | }, 63 | "@types/node": { 64 | "version": "8.10.17", 65 | "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.17.tgz", 66 | "integrity": "sha512-3N3FRd/rA1v5glXjb90YdYUa+sOB7WrkU2rAhKZnF4TKD86Cym9swtulGuH0p9nxo7fP5woRNa8b0oFTpCO1bg==", 67 | "dev": true 68 | }, 69 | "accepts": { 70 | "version": "1.3.5", 71 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", 72 | "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", 73 | "dev": true, 74 | "requires": { 75 | "mime-types": "~2.1.18", 76 | "negotiator": "0.6.1" 77 | } 78 | }, 79 | "after": { 80 | "version": "0.8.2", 81 | "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", 82 | "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", 83 | "dev": true 84 | }, 85 | "ansi-regex": { 86 | "version": "0.2.1", 87 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", 88 | "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", 89 | "dev": true 90 | }, 91 | "ansi-styles": { 92 | "version": "1.1.0", 93 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", 94 | "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", 95 | "dev": true 96 | }, 97 | "anymatch": { 98 | "version": "1.3.2", 99 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", 100 | "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", 101 | "dev": true, 102 | "requires": { 103 | "micromatch": "^2.1.5", 104 | "normalize-path": "^2.0.0" 105 | } 106 | }, 107 | "arr-diff": { 108 | "version": "2.0.0", 109 | "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", 110 | "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", 111 | "dev": true, 112 | "requires": { 113 | "arr-flatten": "^1.0.1" 114 | } 115 | }, 116 | "arr-flatten": { 117 | "version": "1.1.0", 118 | "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", 119 | "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", 120 | "dev": true 121 | }, 122 | "array-unique": { 123 | "version": "0.2.1", 124 | "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", 125 | "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", 126 | "dev": true 127 | }, 128 | "arraybuffer.slice": { 129 | "version": "0.0.7", 130 | "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", 131 | "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", 132 | "dev": true 133 | }, 134 | "async": { 135 | "version": "1.5.2", 136 | "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", 137 | "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", 138 | "dev": true 139 | }, 140 | "async-each": { 141 | "version": "1.0.1", 142 | "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", 143 | "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", 144 | "dev": true 145 | }, 146 | "async-each-series": { 147 | "version": "0.1.1", 148 | "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", 149 | "integrity": "sha1-dhfBkXQB/Yykooqtzj266Yr+tDI=", 150 | "dev": true 151 | }, 152 | "async-limiter": { 153 | "version": "1.0.0", 154 | "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", 155 | "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", 156 | "dev": true 157 | }, 158 | "axios": { 159 | "version": "0.17.1", 160 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.17.1.tgz", 161 | "integrity": "sha1-LY4+XQvb1zJ/kbyBT1xXZg+Bgk0=", 162 | "dev": true, 163 | "requires": { 164 | "follow-redirects": "^1.2.5", 165 | "is-buffer": "^1.1.5" 166 | } 167 | }, 168 | "backo2": { 169 | "version": "1.0.2", 170 | "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", 171 | "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", 172 | "dev": true 173 | }, 174 | "balanced-match": { 175 | "version": "1.0.0", 176 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 177 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", 178 | "dev": true 179 | }, 180 | "base64-arraybuffer": { 181 | "version": "0.1.5", 182 | "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", 183 | "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", 184 | "dev": true 185 | }, 186 | "base64id": { 187 | "version": "1.0.0", 188 | "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", 189 | "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", 190 | "dev": true 191 | }, 192 | "batch": { 193 | "version": "0.5.3", 194 | "resolved": "https://registry.npmjs.org/batch/-/batch-0.5.3.tgz", 195 | "integrity": "sha1-PzQU84AyF0O/wQQvmoP/HVgk1GQ=", 196 | "dev": true 197 | }, 198 | "better-assert": { 199 | "version": "1.0.2", 200 | "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", 201 | "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", 202 | "dev": true, 203 | "requires": { 204 | "callsite": "1.0.0" 205 | } 206 | }, 207 | "binary-extensions": { 208 | "version": "1.11.0", 209 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.11.0.tgz", 210 | "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=", 211 | "dev": true 212 | }, 213 | "blob": { 214 | "version": "0.0.4", 215 | "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", 216 | "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", 217 | "dev": true 218 | }, 219 | "brace-expansion": { 220 | "version": "1.1.11", 221 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 222 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 223 | "dev": true, 224 | "requires": { 225 | "balanced-match": "^1.0.0", 226 | "concat-map": "0.0.1" 227 | } 228 | }, 229 | "braces": { 230 | "version": "1.8.5", 231 | "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", 232 | "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", 233 | "dev": true, 234 | "requires": { 235 | "expand-range": "^1.8.1", 236 | "preserve": "^0.2.0", 237 | "repeat-element": "^1.1.2" 238 | } 239 | }, 240 | "browser-sync": { 241 | "version": "2.24.4", 242 | "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.24.4.tgz", 243 | "integrity": "sha512-qfXv8vQA/Dctub2v44v/vPuvfC4XNd6bn+W5vWZVuhuy6w91lPsdY6qhalT2s2PjnJ3FR6kWq5wkTQgN26eKzA==", 244 | "dev": true, 245 | "requires": { 246 | "browser-sync-ui": "v1.0.1", 247 | "bs-recipes": "1.3.4", 248 | "chokidar": "1.7.0", 249 | "connect": "3.5.0", 250 | "connect-history-api-fallback": "^1.5.0", 251 | "dev-ip": "^1.0.1", 252 | "easy-extender": "2.3.2", 253 | "eazy-logger": "3.0.2", 254 | "etag": "^1.8.1", 255 | "fresh": "^0.5.2", 256 | "fs-extra": "3.0.1", 257 | "http-proxy": "1.15.2", 258 | "immutable": "3.8.2", 259 | "localtunnel": "1.9.0", 260 | "micromatch": "2.3.11", 261 | "opn": "4.0.2", 262 | "portscanner": "2.1.1", 263 | "qs": "6.2.3", 264 | "raw-body": "^2.3.2", 265 | "resp-modifier": "6.0.2", 266 | "rx": "4.1.0", 267 | "serve-index": "1.8.0", 268 | "serve-static": "1.13.2", 269 | "server-destroy": "1.0.1", 270 | "socket.io": "2.0.4", 271 | "ua-parser-js": "0.7.17", 272 | "yargs": "6.4.0" 273 | }, 274 | "dependencies": { 275 | "rx": { 276 | "version": "4.1.0", 277 | "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", 278 | "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=", 279 | "dev": true 280 | } 281 | } 282 | }, 283 | "browser-sync-ui": { 284 | "version": "1.0.1", 285 | "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-1.0.1.tgz", 286 | "integrity": "sha512-RIxmwVVcUFhRd1zxp7m2FfLnXHf59x4Gtj8HFwTA//3VgYI3AKkaQAuDL8KDJnE59XqCshxZa13JYuIWtZlKQg==", 287 | "dev": true, 288 | "requires": { 289 | "async-each-series": "0.1.1", 290 | "connect-history-api-fallback": "^1.1.0", 291 | "immutable": "^3.7.6", 292 | "server-destroy": "1.0.1", 293 | "socket.io-client": "2.0.4", 294 | "stream-throttle": "^0.1.3" 295 | } 296 | }, 297 | "bs-recipes": { 298 | "version": "1.3.4", 299 | "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", 300 | "integrity": "sha1-DS1NSKcYyMBEdp/cT4lZLci2lYU=", 301 | "dev": true 302 | }, 303 | "builtin-modules": { 304 | "version": "1.1.1", 305 | "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", 306 | "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", 307 | "dev": true 308 | }, 309 | "bytes": { 310 | "version": "3.0.0", 311 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", 312 | "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", 313 | "dev": true 314 | }, 315 | "callsite": { 316 | "version": "1.0.0", 317 | "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", 318 | "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", 319 | "dev": true 320 | }, 321 | "camelcase": { 322 | "version": "3.0.0", 323 | "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", 324 | "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", 325 | "dev": true 326 | }, 327 | "chalk": { 328 | "version": "0.5.1", 329 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", 330 | "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", 331 | "dev": true, 332 | "requires": { 333 | "ansi-styles": "^1.1.0", 334 | "escape-string-regexp": "^1.0.0", 335 | "has-ansi": "^0.1.0", 336 | "strip-ansi": "^0.3.0", 337 | "supports-color": "^0.2.0" 338 | }, 339 | "dependencies": { 340 | "supports-color": { 341 | "version": "0.2.0", 342 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", 343 | "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", 344 | "dev": true 345 | } 346 | } 347 | }, 348 | "chokidar": { 349 | "version": "1.7.0", 350 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", 351 | "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", 352 | "dev": true, 353 | "requires": { 354 | "anymatch": "^1.3.0", 355 | "async-each": "^1.0.0", 356 | "fsevents": "^1.0.0", 357 | "glob-parent": "^2.0.0", 358 | "inherits": "^2.0.1", 359 | "is-binary-path": "^1.0.0", 360 | "is-glob": "^2.0.0", 361 | "path-is-absolute": "^1.0.0", 362 | "readdirp": "^2.0.0" 363 | } 364 | }, 365 | "cliui": { 366 | "version": "3.2.0", 367 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", 368 | "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", 369 | "dev": true, 370 | "requires": { 371 | "string-width": "^1.0.1", 372 | "strip-ansi": "^3.0.1", 373 | "wrap-ansi": "^2.0.0" 374 | }, 375 | "dependencies": { 376 | "ansi-regex": { 377 | "version": "2.1.1", 378 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 379 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 380 | "dev": true 381 | }, 382 | "strip-ansi": { 383 | "version": "3.0.1", 384 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 385 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 386 | "dev": true, 387 | "requires": { 388 | "ansi-regex": "^2.0.0" 389 | } 390 | } 391 | } 392 | }, 393 | "code-point-at": { 394 | "version": "1.1.0", 395 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 396 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", 397 | "dev": true 398 | }, 399 | "commander": { 400 | "version": "2.6.0", 401 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", 402 | "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=", 403 | "dev": true 404 | }, 405 | "component-bind": { 406 | "version": "1.0.0", 407 | "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", 408 | "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", 409 | "dev": true 410 | }, 411 | "component-emitter": { 412 | "version": "1.2.1", 413 | "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", 414 | "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", 415 | "dev": true 416 | }, 417 | "component-inherit": { 418 | "version": "0.0.3", 419 | "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", 420 | "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", 421 | "dev": true 422 | }, 423 | "concat-map": { 424 | "version": "0.0.1", 425 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 426 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", 427 | "dev": true 428 | }, 429 | "concurrently": { 430 | "version": "3.5.1", 431 | "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-3.5.1.tgz", 432 | "integrity": "sha512-689HrwGw8Rbk1xtV9C4dY6TPJAvIYZbRbnKSAtfJ7tHqICFGoZ0PCWYjxfmerRyxBG0o3sbG3pe7N8vqPwIHuQ==", 433 | "dev": true, 434 | "requires": { 435 | "chalk": "0.5.1", 436 | "commander": "2.6.0", 437 | "date-fns": "^1.23.0", 438 | "lodash": "^4.5.1", 439 | "rx": "2.3.24", 440 | "spawn-command": "^0.0.2-1", 441 | "supports-color": "^3.2.3", 442 | "tree-kill": "^1.1.0" 443 | } 444 | }, 445 | "connect": { 446 | "version": "3.5.0", 447 | "resolved": "https://registry.npmjs.org/connect/-/connect-3.5.0.tgz", 448 | "integrity": "sha1-s1dSWgtMH1BZnNmD4dnv7qlncZg=", 449 | "dev": true, 450 | "requires": { 451 | "debug": "~2.2.0", 452 | "finalhandler": "0.5.0", 453 | "parseurl": "~1.3.1", 454 | "utils-merge": "1.0.0" 455 | }, 456 | "dependencies": { 457 | "debug": { 458 | "version": "2.2.0", 459 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 460 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", 461 | "dev": true, 462 | "requires": { 463 | "ms": "0.7.1" 464 | } 465 | }, 466 | "ms": { 467 | "version": "0.7.1", 468 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 469 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", 470 | "dev": true 471 | } 472 | } 473 | }, 474 | "connect-history-api-fallback": { 475 | "version": "1.5.0", 476 | "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", 477 | "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", 478 | "dev": true 479 | }, 480 | "connect-logger": { 481 | "version": "0.0.1", 482 | "resolved": "https://registry.npmjs.org/connect-logger/-/connect-logger-0.0.1.tgz", 483 | "integrity": "sha1-TZmZeKHSC7RgjnzUNNdBZSJVF0s=", 484 | "dev": true, 485 | "requires": { 486 | "moment": "*" 487 | } 488 | }, 489 | "cookie": { 490 | "version": "0.3.1", 491 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", 492 | "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", 493 | "dev": true 494 | }, 495 | "core-js": { 496 | "version": "2.5.7", 497 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", 498 | "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" 499 | }, 500 | "core-util-is": { 501 | "version": "1.0.2", 502 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 503 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", 504 | "dev": true 505 | }, 506 | "date-fns": { 507 | "version": "1.29.0", 508 | "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", 509 | "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==", 510 | "dev": true 511 | }, 512 | "debug": { 513 | "version": "2.6.9", 514 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 515 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 516 | "dev": true, 517 | "requires": { 518 | "ms": "2.0.0" 519 | } 520 | }, 521 | "decamelize": { 522 | "version": "1.2.0", 523 | "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", 524 | "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", 525 | "dev": true 526 | }, 527 | "depd": { 528 | "version": "1.1.2", 529 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 530 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 531 | "dev": true 532 | }, 533 | "destroy": { 534 | "version": "1.0.4", 535 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 536 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", 537 | "dev": true 538 | }, 539 | "dev-ip": { 540 | "version": "1.0.1", 541 | "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", 542 | "integrity": "sha1-p2o+0YVb56ASu4rBbLgPPADcKPA=", 543 | "dev": true 544 | }, 545 | "easy-extender": { 546 | "version": "2.3.2", 547 | "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.2.tgz", 548 | "integrity": "sha1-PTJI/r4rFZYHMW2PnPSRwWZIIh0=", 549 | "dev": true, 550 | "requires": { 551 | "lodash": "^3.10.1" 552 | }, 553 | "dependencies": { 554 | "lodash": { 555 | "version": "3.10.1", 556 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", 557 | "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", 558 | "dev": true 559 | } 560 | } 561 | }, 562 | "eazy-logger": { 563 | "version": "3.0.2", 564 | "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.0.2.tgz", 565 | "integrity": "sha1-oyWqXlPROiIliJsqxBE7K5Y29Pw=", 566 | "dev": true, 567 | "requires": { 568 | "tfunk": "^3.0.1" 569 | } 570 | }, 571 | "ee-first": { 572 | "version": "1.1.1", 573 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 574 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 575 | "dev": true 576 | }, 577 | "encodeurl": { 578 | "version": "1.0.2", 579 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 580 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 581 | "dev": true 582 | }, 583 | "engine.io": { 584 | "version": "3.1.5", 585 | "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.1.5.tgz", 586 | "integrity": "sha512-D06ivJkYxyRrcEe0bTpNnBQNgP9d3xog+qZlLbui8EsMr/DouQpf5o9FzJnWYHEYE0YsFHllUv2R1dkgYZXHcA==", 587 | "dev": true, 588 | "requires": { 589 | "accepts": "~1.3.4", 590 | "base64id": "1.0.0", 591 | "cookie": "0.3.1", 592 | "debug": "~3.1.0", 593 | "engine.io-parser": "~2.1.0", 594 | "uws": "~9.14.0", 595 | "ws": "~3.3.1" 596 | }, 597 | "dependencies": { 598 | "debug": { 599 | "version": "3.1.0", 600 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 601 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 602 | "dev": true, 603 | "requires": { 604 | "ms": "2.0.0" 605 | } 606 | } 607 | } 608 | }, 609 | "engine.io-client": { 610 | "version": "3.1.6", 611 | "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.1.6.tgz", 612 | "integrity": "sha512-hnuHsFluXnsKOndS4Hv6SvUrgdYx1pk2NqfaDMW+GWdgfU3+/V25Cj7I8a0x92idSpa5PIhJRKxPvp9mnoLsfg==", 613 | "dev": true, 614 | "requires": { 615 | "component-emitter": "1.2.1", 616 | "component-inherit": "0.0.3", 617 | "debug": "~3.1.0", 618 | "engine.io-parser": "~2.1.1", 619 | "has-cors": "1.1.0", 620 | "indexof": "0.0.1", 621 | "parseqs": "0.0.5", 622 | "parseuri": "0.0.5", 623 | "ws": "~3.3.1", 624 | "xmlhttprequest-ssl": "~1.5.4", 625 | "yeast": "0.1.2" 626 | }, 627 | "dependencies": { 628 | "debug": { 629 | "version": "3.1.0", 630 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 631 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 632 | "dev": true, 633 | "requires": { 634 | "ms": "2.0.0" 635 | } 636 | } 637 | } 638 | }, 639 | "engine.io-parser": { 640 | "version": "2.1.2", 641 | "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.2.tgz", 642 | "integrity": "sha512-dInLFzr80RijZ1rGpx1+56/uFoH7/7InhH3kZt+Ms6hT8tNx3NGW/WNSA/f8As1WkOfkuyb3tnRyuXGxusclMw==", 643 | "dev": true, 644 | "requires": { 645 | "after": "0.8.2", 646 | "arraybuffer.slice": "~0.0.7", 647 | "base64-arraybuffer": "0.1.5", 648 | "blob": "0.0.4", 649 | "has-binary2": "~1.0.2" 650 | } 651 | }, 652 | "error-ex": { 653 | "version": "1.3.1", 654 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", 655 | "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", 656 | "dev": true, 657 | "requires": { 658 | "is-arrayish": "^0.2.1" 659 | } 660 | }, 661 | "escape-html": { 662 | "version": "1.0.3", 663 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 664 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 665 | "dev": true 666 | }, 667 | "escape-string-regexp": { 668 | "version": "1.0.5", 669 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 670 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", 671 | "dev": true 672 | }, 673 | "etag": { 674 | "version": "1.8.1", 675 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 676 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", 677 | "dev": true 678 | }, 679 | "eventemitter3": { 680 | "version": "1.2.0", 681 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", 682 | "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", 683 | "dev": true 684 | }, 685 | "expand-brackets": { 686 | "version": "0.1.5", 687 | "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", 688 | "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", 689 | "dev": true, 690 | "requires": { 691 | "is-posix-bracket": "^0.1.0" 692 | } 693 | }, 694 | "expand-range": { 695 | "version": "1.8.2", 696 | "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", 697 | "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", 698 | "dev": true, 699 | "requires": { 700 | "fill-range": "^2.1.0" 701 | } 702 | }, 703 | "extglob": { 704 | "version": "0.3.2", 705 | "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", 706 | "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", 707 | "dev": true, 708 | "requires": { 709 | "is-extglob": "^1.0.0" 710 | } 711 | }, 712 | "filename-regex": { 713 | "version": "2.0.1", 714 | "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", 715 | "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", 716 | "dev": true 717 | }, 718 | "fill-range": { 719 | "version": "2.2.4", 720 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", 721 | "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", 722 | "dev": true, 723 | "requires": { 724 | "is-number": "^2.1.0", 725 | "isobject": "^2.0.0", 726 | "randomatic": "^3.0.0", 727 | "repeat-element": "^1.1.2", 728 | "repeat-string": "^1.5.2" 729 | } 730 | }, 731 | "finalhandler": { 732 | "version": "0.5.0", 733 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.0.tgz", 734 | "integrity": "sha1-6VCKvs6bbbqHGmlCodeRG5GRGsc=", 735 | "dev": true, 736 | "requires": { 737 | "debug": "~2.2.0", 738 | "escape-html": "~1.0.3", 739 | "on-finished": "~2.3.0", 740 | "statuses": "~1.3.0", 741 | "unpipe": "~1.0.0" 742 | }, 743 | "dependencies": { 744 | "debug": { 745 | "version": "2.2.0", 746 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 747 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", 748 | "dev": true, 749 | "requires": { 750 | "ms": "0.7.1" 751 | } 752 | }, 753 | "ms": { 754 | "version": "0.7.1", 755 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 756 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", 757 | "dev": true 758 | } 759 | } 760 | }, 761 | "find-up": { 762 | "version": "1.1.2", 763 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", 764 | "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", 765 | "dev": true, 766 | "requires": { 767 | "path-exists": "^2.0.0", 768 | "pinkie-promise": "^2.0.0" 769 | } 770 | }, 771 | "follow-redirects": { 772 | "version": "1.5.0", 773 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.0.tgz", 774 | "integrity": "sha512-fdrt472/9qQ6Kgjvb935ig6vJCuofpBUD14f9Vb+SLlm7xIe4Qva5gey8EKtv8lp7ahE1wilg3xL1znpVGtZIA==", 775 | "dev": true, 776 | "requires": { 777 | "debug": "^3.1.0" 778 | }, 779 | "dependencies": { 780 | "debug": { 781 | "version": "3.1.0", 782 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 783 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 784 | "dev": true, 785 | "requires": { 786 | "ms": "2.0.0" 787 | } 788 | } 789 | } 790 | }, 791 | "for-in": { 792 | "version": "1.0.2", 793 | "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", 794 | "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", 795 | "dev": true 796 | }, 797 | "for-own": { 798 | "version": "0.1.5", 799 | "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", 800 | "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", 801 | "dev": true, 802 | "requires": { 803 | "for-in": "^1.0.1" 804 | } 805 | }, 806 | "fresh": { 807 | "version": "0.5.2", 808 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 809 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 810 | "dev": true 811 | }, 812 | "fs-extra": { 813 | "version": "3.0.1", 814 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", 815 | "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", 816 | "dev": true, 817 | "requires": { 818 | "graceful-fs": "^4.1.2", 819 | "jsonfile": "^3.0.0", 820 | "universalify": "^0.1.0" 821 | } 822 | }, 823 | "fsevents": { 824 | "version": "1.2.4", 825 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", 826 | "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", 827 | "dev": true, 828 | "optional": true, 829 | "requires": { 830 | "nan": "^2.9.2", 831 | "node-pre-gyp": "^0.10.0" 832 | }, 833 | "dependencies": { 834 | "abbrev": { 835 | "version": "1.1.1", 836 | "bundled": true, 837 | "dev": true, 838 | "optional": true 839 | }, 840 | "ansi-regex": { 841 | "version": "2.1.1", 842 | "bundled": true, 843 | "dev": true 844 | }, 845 | "aproba": { 846 | "version": "1.2.0", 847 | "bundled": true, 848 | "dev": true, 849 | "optional": true 850 | }, 851 | "are-we-there-yet": { 852 | "version": "1.1.4", 853 | "bundled": true, 854 | "dev": true, 855 | "optional": true, 856 | "requires": { 857 | "delegates": "^1.0.0", 858 | "readable-stream": "^2.0.6" 859 | } 860 | }, 861 | "balanced-match": { 862 | "version": "1.0.0", 863 | "bundled": true, 864 | "dev": true 865 | }, 866 | "brace-expansion": { 867 | "version": "1.1.11", 868 | "bundled": true, 869 | "dev": true, 870 | "requires": { 871 | "balanced-match": "^1.0.0", 872 | "concat-map": "0.0.1" 873 | } 874 | }, 875 | "chownr": { 876 | "version": "1.0.1", 877 | "bundled": true, 878 | "dev": true, 879 | "optional": true 880 | }, 881 | "code-point-at": { 882 | "version": "1.1.0", 883 | "bundled": true, 884 | "dev": true 885 | }, 886 | "concat-map": { 887 | "version": "0.0.1", 888 | "bundled": true, 889 | "dev": true 890 | }, 891 | "console-control-strings": { 892 | "version": "1.1.0", 893 | "bundled": true, 894 | "dev": true 895 | }, 896 | "core-util-is": { 897 | "version": "1.0.2", 898 | "bundled": true, 899 | "dev": true, 900 | "optional": true 901 | }, 902 | "debug": { 903 | "version": "2.6.9", 904 | "bundled": true, 905 | "dev": true, 906 | "optional": true, 907 | "requires": { 908 | "ms": "2.0.0" 909 | } 910 | }, 911 | "deep-extend": { 912 | "version": "0.5.1", 913 | "bundled": true, 914 | "dev": true, 915 | "optional": true 916 | }, 917 | "delegates": { 918 | "version": "1.0.0", 919 | "bundled": true, 920 | "dev": true, 921 | "optional": true 922 | }, 923 | "detect-libc": { 924 | "version": "1.0.3", 925 | "bundled": true, 926 | "dev": true, 927 | "optional": true 928 | }, 929 | "fs-minipass": { 930 | "version": "1.2.5", 931 | "bundled": true, 932 | "dev": true, 933 | "optional": true, 934 | "requires": { 935 | "minipass": "^2.2.1" 936 | } 937 | }, 938 | "fs.realpath": { 939 | "version": "1.0.0", 940 | "bundled": true, 941 | "dev": true, 942 | "optional": true 943 | }, 944 | "gauge": { 945 | "version": "2.7.4", 946 | "bundled": true, 947 | "dev": true, 948 | "optional": true, 949 | "requires": { 950 | "aproba": "^1.0.3", 951 | "console-control-strings": "^1.0.0", 952 | "has-unicode": "^2.0.0", 953 | "object-assign": "^4.1.0", 954 | "signal-exit": "^3.0.0", 955 | "string-width": "^1.0.1", 956 | "strip-ansi": "^3.0.1", 957 | "wide-align": "^1.1.0" 958 | } 959 | }, 960 | "glob": { 961 | "version": "7.1.2", 962 | "bundled": true, 963 | "dev": true, 964 | "optional": true, 965 | "requires": { 966 | "fs.realpath": "^1.0.0", 967 | "inflight": "^1.0.4", 968 | "inherits": "2", 969 | "minimatch": "^3.0.4", 970 | "once": "^1.3.0", 971 | "path-is-absolute": "^1.0.0" 972 | } 973 | }, 974 | "has-unicode": { 975 | "version": "2.0.1", 976 | "bundled": true, 977 | "dev": true, 978 | "optional": true 979 | }, 980 | "iconv-lite": { 981 | "version": "0.4.21", 982 | "bundled": true, 983 | "dev": true, 984 | "optional": true, 985 | "requires": { 986 | "safer-buffer": "^2.1.0" 987 | } 988 | }, 989 | "ignore-walk": { 990 | "version": "3.0.1", 991 | "bundled": true, 992 | "dev": true, 993 | "optional": true, 994 | "requires": { 995 | "minimatch": "^3.0.4" 996 | } 997 | }, 998 | "inflight": { 999 | "version": "1.0.6", 1000 | "bundled": true, 1001 | "dev": true, 1002 | "optional": true, 1003 | "requires": { 1004 | "once": "^1.3.0", 1005 | "wrappy": "1" 1006 | } 1007 | }, 1008 | "inherits": { 1009 | "version": "2.0.3", 1010 | "bundled": true, 1011 | "dev": true 1012 | }, 1013 | "ini": { 1014 | "version": "1.3.5", 1015 | "bundled": true, 1016 | "dev": true, 1017 | "optional": true 1018 | }, 1019 | "is-fullwidth-code-point": { 1020 | "version": "1.0.0", 1021 | "bundled": true, 1022 | "dev": true, 1023 | "requires": { 1024 | "number-is-nan": "^1.0.0" 1025 | } 1026 | }, 1027 | "isarray": { 1028 | "version": "1.0.0", 1029 | "bundled": true, 1030 | "dev": true, 1031 | "optional": true 1032 | }, 1033 | "minimatch": { 1034 | "version": "3.0.4", 1035 | "bundled": true, 1036 | "dev": true, 1037 | "requires": { 1038 | "brace-expansion": "^1.1.7" 1039 | } 1040 | }, 1041 | "minimist": { 1042 | "version": "0.0.8", 1043 | "bundled": true, 1044 | "dev": true 1045 | }, 1046 | "minipass": { 1047 | "version": "2.2.4", 1048 | "bundled": true, 1049 | "dev": true, 1050 | "requires": { 1051 | "safe-buffer": "^5.1.1", 1052 | "yallist": "^3.0.0" 1053 | } 1054 | }, 1055 | "minizlib": { 1056 | "version": "1.1.0", 1057 | "bundled": true, 1058 | "dev": true, 1059 | "optional": true, 1060 | "requires": { 1061 | "minipass": "^2.2.1" 1062 | } 1063 | }, 1064 | "mkdirp": { 1065 | "version": "0.5.1", 1066 | "bundled": true, 1067 | "dev": true, 1068 | "requires": { 1069 | "minimist": "0.0.8" 1070 | } 1071 | }, 1072 | "ms": { 1073 | "version": "2.0.0", 1074 | "bundled": true, 1075 | "dev": true, 1076 | "optional": true 1077 | }, 1078 | "needle": { 1079 | "version": "2.2.0", 1080 | "bundled": true, 1081 | "dev": true, 1082 | "optional": true, 1083 | "requires": { 1084 | "debug": "^2.1.2", 1085 | "iconv-lite": "^0.4.4", 1086 | "sax": "^1.2.4" 1087 | } 1088 | }, 1089 | "node-pre-gyp": { 1090 | "version": "0.10.0", 1091 | "bundled": true, 1092 | "dev": true, 1093 | "optional": true, 1094 | "requires": { 1095 | "detect-libc": "^1.0.2", 1096 | "mkdirp": "^0.5.1", 1097 | "needle": "^2.2.0", 1098 | "nopt": "^4.0.1", 1099 | "npm-packlist": "^1.1.6", 1100 | "npmlog": "^4.0.2", 1101 | "rc": "^1.1.7", 1102 | "rimraf": "^2.6.1", 1103 | "semver": "^5.3.0", 1104 | "tar": "^4" 1105 | } 1106 | }, 1107 | "nopt": { 1108 | "version": "4.0.1", 1109 | "bundled": true, 1110 | "dev": true, 1111 | "optional": true, 1112 | "requires": { 1113 | "abbrev": "1", 1114 | "osenv": "^0.1.4" 1115 | } 1116 | }, 1117 | "npm-bundled": { 1118 | "version": "1.0.3", 1119 | "bundled": true, 1120 | "dev": true, 1121 | "optional": true 1122 | }, 1123 | "npm-packlist": { 1124 | "version": "1.1.10", 1125 | "bundled": true, 1126 | "dev": true, 1127 | "optional": true, 1128 | "requires": { 1129 | "ignore-walk": "^3.0.1", 1130 | "npm-bundled": "^1.0.1" 1131 | } 1132 | }, 1133 | "npmlog": { 1134 | "version": "4.1.2", 1135 | "bundled": true, 1136 | "dev": true, 1137 | "optional": true, 1138 | "requires": { 1139 | "are-we-there-yet": "~1.1.2", 1140 | "console-control-strings": "~1.1.0", 1141 | "gauge": "~2.7.3", 1142 | "set-blocking": "~2.0.0" 1143 | } 1144 | }, 1145 | "number-is-nan": { 1146 | "version": "1.0.1", 1147 | "bundled": true, 1148 | "dev": true 1149 | }, 1150 | "object-assign": { 1151 | "version": "4.1.1", 1152 | "bundled": true, 1153 | "dev": true, 1154 | "optional": true 1155 | }, 1156 | "once": { 1157 | "version": "1.4.0", 1158 | "bundled": true, 1159 | "dev": true, 1160 | "requires": { 1161 | "wrappy": "1" 1162 | } 1163 | }, 1164 | "os-homedir": { 1165 | "version": "1.0.2", 1166 | "bundled": true, 1167 | "dev": true, 1168 | "optional": true 1169 | }, 1170 | "os-tmpdir": { 1171 | "version": "1.0.2", 1172 | "bundled": true, 1173 | "dev": true, 1174 | "optional": true 1175 | }, 1176 | "osenv": { 1177 | "version": "0.1.5", 1178 | "bundled": true, 1179 | "dev": true, 1180 | "optional": true, 1181 | "requires": { 1182 | "os-homedir": "^1.0.0", 1183 | "os-tmpdir": "^1.0.0" 1184 | } 1185 | }, 1186 | "path-is-absolute": { 1187 | "version": "1.0.1", 1188 | "bundled": true, 1189 | "dev": true, 1190 | "optional": true 1191 | }, 1192 | "process-nextick-args": { 1193 | "version": "2.0.0", 1194 | "bundled": true, 1195 | "dev": true, 1196 | "optional": true 1197 | }, 1198 | "rc": { 1199 | "version": "1.2.7", 1200 | "bundled": true, 1201 | "dev": true, 1202 | "optional": true, 1203 | "requires": { 1204 | "deep-extend": "^0.5.1", 1205 | "ini": "~1.3.0", 1206 | "minimist": "^1.2.0", 1207 | "strip-json-comments": "~2.0.1" 1208 | }, 1209 | "dependencies": { 1210 | "minimist": { 1211 | "version": "1.2.0", 1212 | "bundled": true, 1213 | "dev": true, 1214 | "optional": true 1215 | } 1216 | } 1217 | }, 1218 | "readable-stream": { 1219 | "version": "2.3.6", 1220 | "bundled": true, 1221 | "dev": true, 1222 | "optional": true, 1223 | "requires": { 1224 | "core-util-is": "~1.0.0", 1225 | "inherits": "~2.0.3", 1226 | "isarray": "~1.0.0", 1227 | "process-nextick-args": "~2.0.0", 1228 | "safe-buffer": "~5.1.1", 1229 | "string_decoder": "~1.1.1", 1230 | "util-deprecate": "~1.0.1" 1231 | } 1232 | }, 1233 | "rimraf": { 1234 | "version": "2.6.2", 1235 | "bundled": true, 1236 | "dev": true, 1237 | "optional": true, 1238 | "requires": { 1239 | "glob": "^7.0.5" 1240 | } 1241 | }, 1242 | "safe-buffer": { 1243 | "version": "5.1.1", 1244 | "bundled": true, 1245 | "dev": true 1246 | }, 1247 | "safer-buffer": { 1248 | "version": "2.1.2", 1249 | "bundled": true, 1250 | "dev": true, 1251 | "optional": true 1252 | }, 1253 | "sax": { 1254 | "version": "1.2.4", 1255 | "bundled": true, 1256 | "dev": true, 1257 | "optional": true 1258 | }, 1259 | "semver": { 1260 | "version": "5.5.0", 1261 | "bundled": true, 1262 | "dev": true, 1263 | "optional": true 1264 | }, 1265 | "set-blocking": { 1266 | "version": "2.0.0", 1267 | "bundled": true, 1268 | "dev": true, 1269 | "optional": true 1270 | }, 1271 | "signal-exit": { 1272 | "version": "3.0.2", 1273 | "bundled": true, 1274 | "dev": true, 1275 | "optional": true 1276 | }, 1277 | "string-width": { 1278 | "version": "1.0.2", 1279 | "bundled": true, 1280 | "dev": true, 1281 | "requires": { 1282 | "code-point-at": "^1.0.0", 1283 | "is-fullwidth-code-point": "^1.0.0", 1284 | "strip-ansi": "^3.0.0" 1285 | } 1286 | }, 1287 | "string_decoder": { 1288 | "version": "1.1.1", 1289 | "bundled": true, 1290 | "dev": true, 1291 | "optional": true, 1292 | "requires": { 1293 | "safe-buffer": "~5.1.0" 1294 | } 1295 | }, 1296 | "strip-ansi": { 1297 | "version": "3.0.1", 1298 | "bundled": true, 1299 | "dev": true, 1300 | "requires": { 1301 | "ansi-regex": "^2.0.0" 1302 | } 1303 | }, 1304 | "strip-json-comments": { 1305 | "version": "2.0.1", 1306 | "bundled": true, 1307 | "dev": true, 1308 | "optional": true 1309 | }, 1310 | "tar": { 1311 | "version": "4.4.1", 1312 | "bundled": true, 1313 | "dev": true, 1314 | "optional": true, 1315 | "requires": { 1316 | "chownr": "^1.0.1", 1317 | "fs-minipass": "^1.2.5", 1318 | "minipass": "^2.2.4", 1319 | "minizlib": "^1.1.0", 1320 | "mkdirp": "^0.5.0", 1321 | "safe-buffer": "^5.1.1", 1322 | "yallist": "^3.0.2" 1323 | } 1324 | }, 1325 | "util-deprecate": { 1326 | "version": "1.0.2", 1327 | "bundled": true, 1328 | "dev": true, 1329 | "optional": true 1330 | }, 1331 | "wide-align": { 1332 | "version": "1.1.2", 1333 | "bundled": true, 1334 | "dev": true, 1335 | "optional": true, 1336 | "requires": { 1337 | "string-width": "^1.0.2" 1338 | } 1339 | }, 1340 | "wrappy": { 1341 | "version": "1.0.2", 1342 | "bundled": true, 1343 | "dev": true 1344 | }, 1345 | "yallist": { 1346 | "version": "3.0.2", 1347 | "bundled": true, 1348 | "dev": true 1349 | } 1350 | } 1351 | }, 1352 | "get-caller-file": { 1353 | "version": "1.0.2", 1354 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", 1355 | "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", 1356 | "dev": true 1357 | }, 1358 | "glob-base": { 1359 | "version": "0.3.0", 1360 | "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", 1361 | "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", 1362 | "dev": true, 1363 | "requires": { 1364 | "glob-parent": "^2.0.0", 1365 | "is-glob": "^2.0.0" 1366 | } 1367 | }, 1368 | "glob-parent": { 1369 | "version": "2.0.0", 1370 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", 1371 | "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", 1372 | "dev": true, 1373 | "requires": { 1374 | "is-glob": "^2.0.0" 1375 | } 1376 | }, 1377 | "graceful-fs": { 1378 | "version": "4.1.11", 1379 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", 1380 | "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", 1381 | "dev": true 1382 | }, 1383 | "has-ansi": { 1384 | "version": "0.1.0", 1385 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", 1386 | "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", 1387 | "dev": true, 1388 | "requires": { 1389 | "ansi-regex": "^0.2.0" 1390 | } 1391 | }, 1392 | "has-binary2": { 1393 | "version": "1.0.3", 1394 | "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", 1395 | "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", 1396 | "dev": true, 1397 | "requires": { 1398 | "isarray": "2.0.1" 1399 | } 1400 | }, 1401 | "has-cors": { 1402 | "version": "1.1.0", 1403 | "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", 1404 | "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", 1405 | "dev": true 1406 | }, 1407 | "has-flag": { 1408 | "version": "1.0.0", 1409 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", 1410 | "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", 1411 | "dev": true 1412 | }, 1413 | "hosted-git-info": { 1414 | "version": "2.6.0", 1415 | "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.6.0.tgz", 1416 | "integrity": "sha512-lIbgIIQA3lz5XaB6vxakj6sDHADJiZadYEJB+FgA+C4nubM1NwcuvUr9EJPmnH1skZqpqUzWborWo8EIUi0Sdw==", 1417 | "dev": true 1418 | }, 1419 | "http-errors": { 1420 | "version": "1.6.3", 1421 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", 1422 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", 1423 | "dev": true, 1424 | "requires": { 1425 | "depd": "~1.1.2", 1426 | "inherits": "2.0.3", 1427 | "setprototypeof": "1.1.0", 1428 | "statuses": ">= 1.4.0 < 2" 1429 | }, 1430 | "dependencies": { 1431 | "statuses": { 1432 | "version": "1.5.0", 1433 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 1434 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 1435 | "dev": true 1436 | } 1437 | } 1438 | }, 1439 | "http-proxy": { 1440 | "version": "1.15.2", 1441 | "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.15.2.tgz", 1442 | "integrity": "sha1-ZC/cr/5S00SNK9o7AHnpQJBk2jE=", 1443 | "dev": true, 1444 | "requires": { 1445 | "eventemitter3": "1.x.x", 1446 | "requires-port": "1.x.x" 1447 | } 1448 | }, 1449 | "iconv-lite": { 1450 | "version": "0.4.23", 1451 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", 1452 | "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", 1453 | "dev": true, 1454 | "requires": { 1455 | "safer-buffer": ">= 2.1.2 < 3" 1456 | } 1457 | }, 1458 | "immutable": { 1459 | "version": "3.8.2", 1460 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", 1461 | "integrity": "sha1-wkOZUUVbs5kT2vKBN28VMOEErfM=", 1462 | "dev": true 1463 | }, 1464 | "indexof": { 1465 | "version": "0.0.1", 1466 | "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", 1467 | "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", 1468 | "dev": true 1469 | }, 1470 | "inherits": { 1471 | "version": "2.0.3", 1472 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 1473 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 1474 | "dev": true 1475 | }, 1476 | "invert-kv": { 1477 | "version": "1.0.0", 1478 | "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", 1479 | "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", 1480 | "dev": true 1481 | }, 1482 | "is-arrayish": { 1483 | "version": "0.2.1", 1484 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 1485 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", 1486 | "dev": true 1487 | }, 1488 | "is-binary-path": { 1489 | "version": "1.0.1", 1490 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", 1491 | "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", 1492 | "dev": true, 1493 | "requires": { 1494 | "binary-extensions": "^1.0.0" 1495 | } 1496 | }, 1497 | "is-buffer": { 1498 | "version": "1.1.6", 1499 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", 1500 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", 1501 | "dev": true 1502 | }, 1503 | "is-builtin-module": { 1504 | "version": "1.0.0", 1505 | "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", 1506 | "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", 1507 | "dev": true, 1508 | "requires": { 1509 | "builtin-modules": "^1.0.0" 1510 | } 1511 | }, 1512 | "is-dotfile": { 1513 | "version": "1.0.3", 1514 | "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", 1515 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", 1516 | "dev": true 1517 | }, 1518 | "is-equal-shallow": { 1519 | "version": "0.1.3", 1520 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", 1521 | "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", 1522 | "dev": true, 1523 | "requires": { 1524 | "is-primitive": "^2.0.0" 1525 | } 1526 | }, 1527 | "is-extendable": { 1528 | "version": "0.1.1", 1529 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", 1530 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", 1531 | "dev": true 1532 | }, 1533 | "is-extglob": { 1534 | "version": "1.0.0", 1535 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", 1536 | "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", 1537 | "dev": true 1538 | }, 1539 | "is-fullwidth-code-point": { 1540 | "version": "1.0.0", 1541 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 1542 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 1543 | "dev": true, 1544 | "requires": { 1545 | "number-is-nan": "^1.0.0" 1546 | } 1547 | }, 1548 | "is-glob": { 1549 | "version": "2.0.1", 1550 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", 1551 | "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", 1552 | "dev": true, 1553 | "requires": { 1554 | "is-extglob": "^1.0.0" 1555 | } 1556 | }, 1557 | "is-number": { 1558 | "version": "2.1.0", 1559 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", 1560 | "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", 1561 | "dev": true, 1562 | "requires": { 1563 | "kind-of": "^3.0.2" 1564 | } 1565 | }, 1566 | "is-number-like": { 1567 | "version": "1.0.8", 1568 | "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", 1569 | "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", 1570 | "dev": true, 1571 | "requires": { 1572 | "lodash.isfinite": "^3.3.2" 1573 | } 1574 | }, 1575 | "is-posix-bracket": { 1576 | "version": "0.1.1", 1577 | "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", 1578 | "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", 1579 | "dev": true 1580 | }, 1581 | "is-primitive": { 1582 | "version": "2.0.0", 1583 | "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", 1584 | "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", 1585 | "dev": true 1586 | }, 1587 | "is-utf8": { 1588 | "version": "0.2.1", 1589 | "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", 1590 | "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", 1591 | "dev": true 1592 | }, 1593 | "isarray": { 1594 | "version": "2.0.1", 1595 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", 1596 | "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", 1597 | "dev": true 1598 | }, 1599 | "isobject": { 1600 | "version": "2.1.0", 1601 | "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", 1602 | "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", 1603 | "dev": true, 1604 | "requires": { 1605 | "isarray": "1.0.0" 1606 | }, 1607 | "dependencies": { 1608 | "isarray": { 1609 | "version": "1.0.0", 1610 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 1611 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 1612 | "dev": true 1613 | } 1614 | } 1615 | }, 1616 | "jsonfile": { 1617 | "version": "3.0.1", 1618 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", 1619 | "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", 1620 | "dev": true, 1621 | "requires": { 1622 | "graceful-fs": "^4.1.6" 1623 | } 1624 | }, 1625 | "kind-of": { 1626 | "version": "3.2.2", 1627 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", 1628 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", 1629 | "dev": true, 1630 | "requires": { 1631 | "is-buffer": "^1.1.5" 1632 | } 1633 | }, 1634 | "lcid": { 1635 | "version": "1.0.0", 1636 | "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", 1637 | "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", 1638 | "dev": true, 1639 | "requires": { 1640 | "invert-kv": "^1.0.0" 1641 | } 1642 | }, 1643 | "limiter": { 1644 | "version": "1.1.3", 1645 | "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.3.tgz", 1646 | "integrity": "sha512-zrycnIMsLw/3ZxTbW7HCez56rcFGecWTx5OZNplzcXUUmJLmoYArC6qdJzmAN5BWiNXGcpjhF9RQ1HSv5zebEw==", 1647 | "dev": true 1648 | }, 1649 | "lite-server": { 1650 | "version": "2.3.0", 1651 | "resolved": "https://registry.npmjs.org/lite-server/-/lite-server-2.3.0.tgz", 1652 | "integrity": "sha1-W0zI9dX9SDYQVICrKsSKOg3isMg=", 1653 | "dev": true, 1654 | "requires": { 1655 | "browser-sync": "^2.18.5", 1656 | "connect-history-api-fallback": "^1.2.0", 1657 | "connect-logger": "0.0.1", 1658 | "lodash": "^4.11.1", 1659 | "minimist": "1.2.0" 1660 | } 1661 | }, 1662 | "load-json-file": { 1663 | "version": "1.1.0", 1664 | "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", 1665 | "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", 1666 | "dev": true, 1667 | "requires": { 1668 | "graceful-fs": "^4.1.2", 1669 | "parse-json": "^2.2.0", 1670 | "pify": "^2.0.0", 1671 | "pinkie-promise": "^2.0.0", 1672 | "strip-bom": "^2.0.0" 1673 | } 1674 | }, 1675 | "localtunnel": { 1676 | "version": "1.9.0", 1677 | "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-1.9.0.tgz", 1678 | "integrity": "sha512-wCIiIHJ8kKIcWkTQE3m1VRABvsH2ZuOkiOpZUofUCf6Q42v3VIZ+Q0YfX1Z4sYDRj0muiKL1bLvz1FeoxsPO0w==", 1679 | "dev": true, 1680 | "requires": { 1681 | "axios": "0.17.1", 1682 | "debug": "2.6.8", 1683 | "openurl": "1.1.1", 1684 | "yargs": "6.6.0" 1685 | }, 1686 | "dependencies": { 1687 | "debug": { 1688 | "version": "2.6.8", 1689 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", 1690 | "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", 1691 | "dev": true, 1692 | "requires": { 1693 | "ms": "2.0.0" 1694 | } 1695 | }, 1696 | "yargs": { 1697 | "version": "6.6.0", 1698 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", 1699 | "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", 1700 | "dev": true, 1701 | "requires": { 1702 | "camelcase": "^3.0.0", 1703 | "cliui": "^3.2.0", 1704 | "decamelize": "^1.1.1", 1705 | "get-caller-file": "^1.0.1", 1706 | "os-locale": "^1.4.0", 1707 | "read-pkg-up": "^1.0.1", 1708 | "require-directory": "^2.1.1", 1709 | "require-main-filename": "^1.0.1", 1710 | "set-blocking": "^2.0.0", 1711 | "string-width": "^1.0.2", 1712 | "which-module": "^1.0.0", 1713 | "y18n": "^3.2.1", 1714 | "yargs-parser": "^4.2.0" 1715 | } 1716 | } 1717 | } 1718 | }, 1719 | "lodash": { 1720 | "version": "4.17.10", 1721 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", 1722 | "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==", 1723 | "dev": true 1724 | }, 1725 | "lodash.isfinite": { 1726 | "version": "3.3.2", 1727 | "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", 1728 | "integrity": "sha1-+4m2WpqAKBgz8LdHizpRBPiY67M=", 1729 | "dev": true 1730 | }, 1731 | "math-random": { 1732 | "version": "1.0.1", 1733 | "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", 1734 | "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", 1735 | "dev": true 1736 | }, 1737 | "micromatch": { 1738 | "version": "2.3.11", 1739 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", 1740 | "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", 1741 | "dev": true, 1742 | "requires": { 1743 | "arr-diff": "^2.0.0", 1744 | "array-unique": "^0.2.1", 1745 | "braces": "^1.8.2", 1746 | "expand-brackets": "^0.1.4", 1747 | "extglob": "^0.3.1", 1748 | "filename-regex": "^2.0.0", 1749 | "is-extglob": "^1.0.0", 1750 | "is-glob": "^2.0.1", 1751 | "kind-of": "^3.0.2", 1752 | "normalize-path": "^2.0.1", 1753 | "object.omit": "^2.0.0", 1754 | "parse-glob": "^3.0.4", 1755 | "regex-cache": "^0.4.2" 1756 | } 1757 | }, 1758 | "mime": { 1759 | "version": "1.4.1", 1760 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", 1761 | "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", 1762 | "dev": true 1763 | }, 1764 | "mime-db": { 1765 | "version": "1.33.0", 1766 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", 1767 | "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", 1768 | "dev": true 1769 | }, 1770 | "mime-types": { 1771 | "version": "2.1.18", 1772 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", 1773 | "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", 1774 | "dev": true, 1775 | "requires": { 1776 | "mime-db": "~1.33.0" 1777 | } 1778 | }, 1779 | "minimatch": { 1780 | "version": "3.0.4", 1781 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 1782 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 1783 | "dev": true, 1784 | "requires": { 1785 | "brace-expansion": "^1.1.7" 1786 | } 1787 | }, 1788 | "minimist": { 1789 | "version": "1.2.0", 1790 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 1791 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", 1792 | "dev": true 1793 | }, 1794 | "moment": { 1795 | "version": "2.22.1", 1796 | "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.1.tgz", 1797 | "integrity": "sha512-shJkRTSebXvsVqk56I+lkb2latjBs8I+pc2TzWc545y2iFnSjm7Wg0QMh+ZWcdSLQyGEau5jI8ocnmkyTgr9YQ==", 1798 | "dev": true 1799 | }, 1800 | "ms": { 1801 | "version": "2.0.0", 1802 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1803 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 1804 | "dev": true 1805 | }, 1806 | "nan": { 1807 | "version": "2.10.0", 1808 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz", 1809 | "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==", 1810 | "dev": true, 1811 | "optional": true 1812 | }, 1813 | "negotiator": { 1814 | "version": "0.6.1", 1815 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", 1816 | "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", 1817 | "dev": true 1818 | }, 1819 | "normalize-package-data": { 1820 | "version": "2.4.0", 1821 | "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", 1822 | "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", 1823 | "dev": true, 1824 | "requires": { 1825 | "hosted-git-info": "^2.1.4", 1826 | "is-builtin-module": "^1.0.0", 1827 | "semver": "2 || 3 || 4 || 5", 1828 | "validate-npm-package-license": "^3.0.1" 1829 | } 1830 | }, 1831 | "normalize-path": { 1832 | "version": "2.1.1", 1833 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", 1834 | "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", 1835 | "dev": true, 1836 | "requires": { 1837 | "remove-trailing-separator": "^1.0.1" 1838 | } 1839 | }, 1840 | "number-is-nan": { 1841 | "version": "1.0.1", 1842 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 1843 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", 1844 | "dev": true 1845 | }, 1846 | "object-assign": { 1847 | "version": "4.1.1", 1848 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1849 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", 1850 | "dev": true 1851 | }, 1852 | "object-component": { 1853 | "version": "0.0.3", 1854 | "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", 1855 | "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", 1856 | "dev": true 1857 | }, 1858 | "object-path": { 1859 | "version": "0.9.2", 1860 | "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.9.2.tgz", 1861 | "integrity": "sha1-D9mnT8X60a45aLWGvaXGMr1sBaU=", 1862 | "dev": true 1863 | }, 1864 | "object.omit": { 1865 | "version": "2.0.1", 1866 | "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", 1867 | "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", 1868 | "dev": true, 1869 | "requires": { 1870 | "for-own": "^0.1.4", 1871 | "is-extendable": "^0.1.1" 1872 | } 1873 | }, 1874 | "on-finished": { 1875 | "version": "2.3.0", 1876 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 1877 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 1878 | "dev": true, 1879 | "requires": { 1880 | "ee-first": "1.1.1" 1881 | } 1882 | }, 1883 | "openurl": { 1884 | "version": "1.1.1", 1885 | "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", 1886 | "integrity": "sha1-OHW0sO96UsFW8NtB1GCduw+Us4c=", 1887 | "dev": true 1888 | }, 1889 | "opn": { 1890 | "version": "4.0.2", 1891 | "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", 1892 | "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", 1893 | "dev": true, 1894 | "requires": { 1895 | "object-assign": "^4.0.1", 1896 | "pinkie-promise": "^2.0.0" 1897 | } 1898 | }, 1899 | "os-locale": { 1900 | "version": "1.4.0", 1901 | "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", 1902 | "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", 1903 | "dev": true, 1904 | "requires": { 1905 | "lcid": "^1.0.0" 1906 | } 1907 | }, 1908 | "parse-glob": { 1909 | "version": "3.0.4", 1910 | "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", 1911 | "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", 1912 | "dev": true, 1913 | "requires": { 1914 | "glob-base": "^0.3.0", 1915 | "is-dotfile": "^1.0.0", 1916 | "is-extglob": "^1.0.0", 1917 | "is-glob": "^2.0.0" 1918 | } 1919 | }, 1920 | "parse-json": { 1921 | "version": "2.2.0", 1922 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", 1923 | "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", 1924 | "dev": true, 1925 | "requires": { 1926 | "error-ex": "^1.2.0" 1927 | } 1928 | }, 1929 | "parseqs": { 1930 | "version": "0.0.5", 1931 | "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", 1932 | "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", 1933 | "dev": true, 1934 | "requires": { 1935 | "better-assert": "~1.0.0" 1936 | } 1937 | }, 1938 | "parseuri": { 1939 | "version": "0.0.5", 1940 | "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", 1941 | "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", 1942 | "dev": true, 1943 | "requires": { 1944 | "better-assert": "~1.0.0" 1945 | } 1946 | }, 1947 | "parseurl": { 1948 | "version": "1.3.2", 1949 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", 1950 | "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", 1951 | "dev": true 1952 | }, 1953 | "path-exists": { 1954 | "version": "2.1.0", 1955 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", 1956 | "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", 1957 | "dev": true, 1958 | "requires": { 1959 | "pinkie-promise": "^2.0.0" 1960 | } 1961 | }, 1962 | "path-is-absolute": { 1963 | "version": "1.0.1", 1964 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1965 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", 1966 | "dev": true 1967 | }, 1968 | "path-type": { 1969 | "version": "1.1.0", 1970 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", 1971 | "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", 1972 | "dev": true, 1973 | "requires": { 1974 | "graceful-fs": "^4.1.2", 1975 | "pify": "^2.0.0", 1976 | "pinkie-promise": "^2.0.0" 1977 | } 1978 | }, 1979 | "pify": { 1980 | "version": "2.3.0", 1981 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", 1982 | "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", 1983 | "dev": true 1984 | }, 1985 | "pinkie": { 1986 | "version": "2.0.4", 1987 | "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", 1988 | "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", 1989 | "dev": true 1990 | }, 1991 | "pinkie-promise": { 1992 | "version": "2.0.1", 1993 | "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", 1994 | "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", 1995 | "dev": true, 1996 | "requires": { 1997 | "pinkie": "^2.0.0" 1998 | } 1999 | }, 2000 | "portscanner": { 2001 | "version": "2.1.1", 2002 | "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.1.1.tgz", 2003 | "integrity": "sha1-6rtAnk3iSVD1oqUW01rnaTQ/u5Y=", 2004 | "dev": true, 2005 | "requires": { 2006 | "async": "1.5.2", 2007 | "is-number-like": "^1.0.3" 2008 | } 2009 | }, 2010 | "preserve": { 2011 | "version": "0.2.0", 2012 | "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", 2013 | "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", 2014 | "dev": true 2015 | }, 2016 | "process-nextick-args": { 2017 | "version": "2.0.0", 2018 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", 2019 | "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", 2020 | "dev": true 2021 | }, 2022 | "qs": { 2023 | "version": "6.2.3", 2024 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.3.tgz", 2025 | "integrity": "sha1-HPyyXBCpsrSDBT/zn138kjOQjP4=", 2026 | "dev": true 2027 | }, 2028 | "randomatic": { 2029 | "version": "3.0.0", 2030 | "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.0.0.tgz", 2031 | "integrity": "sha512-VdxFOIEY3mNO5PtSRkkle/hPJDHvQhK21oa73K4yAc9qmp6N429gAyF1gZMOTMeS0/AYzaV/2Trcef+NaIonSA==", 2032 | "dev": true, 2033 | "requires": { 2034 | "is-number": "^4.0.0", 2035 | "kind-of": "^6.0.0", 2036 | "math-random": "^1.0.1" 2037 | }, 2038 | "dependencies": { 2039 | "is-number": { 2040 | "version": "4.0.0", 2041 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", 2042 | "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", 2043 | "dev": true 2044 | }, 2045 | "kind-of": { 2046 | "version": "6.0.2", 2047 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", 2048 | "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", 2049 | "dev": true 2050 | } 2051 | } 2052 | }, 2053 | "range-parser": { 2054 | "version": "1.2.0", 2055 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", 2056 | "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", 2057 | "dev": true 2058 | }, 2059 | "raw-body": { 2060 | "version": "2.3.3", 2061 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", 2062 | "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", 2063 | "dev": true, 2064 | "requires": { 2065 | "bytes": "3.0.0", 2066 | "http-errors": "1.6.3", 2067 | "iconv-lite": "0.4.23", 2068 | "unpipe": "1.0.0" 2069 | } 2070 | }, 2071 | "read-pkg": { 2072 | "version": "1.1.0", 2073 | "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", 2074 | "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", 2075 | "dev": true, 2076 | "requires": { 2077 | "load-json-file": "^1.0.0", 2078 | "normalize-package-data": "^2.3.2", 2079 | "path-type": "^1.0.0" 2080 | } 2081 | }, 2082 | "read-pkg-up": { 2083 | "version": "1.0.1", 2084 | "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", 2085 | "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", 2086 | "dev": true, 2087 | "requires": { 2088 | "find-up": "^1.0.0", 2089 | "read-pkg": "^1.0.0" 2090 | } 2091 | }, 2092 | "readable-stream": { 2093 | "version": "2.3.6", 2094 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 2095 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 2096 | "dev": true, 2097 | "requires": { 2098 | "core-util-is": "~1.0.0", 2099 | "inherits": "~2.0.3", 2100 | "isarray": "~1.0.0", 2101 | "process-nextick-args": "~2.0.0", 2102 | "safe-buffer": "~5.1.1", 2103 | "string_decoder": "~1.1.1", 2104 | "util-deprecate": "~1.0.1" 2105 | }, 2106 | "dependencies": { 2107 | "isarray": { 2108 | "version": "1.0.0", 2109 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 2110 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", 2111 | "dev": true 2112 | } 2113 | } 2114 | }, 2115 | "readdirp": { 2116 | "version": "2.1.0", 2117 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", 2118 | "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", 2119 | "dev": true, 2120 | "requires": { 2121 | "graceful-fs": "^4.1.2", 2122 | "minimatch": "^3.0.2", 2123 | "readable-stream": "^2.0.2", 2124 | "set-immediate-shim": "^1.0.1" 2125 | } 2126 | }, 2127 | "regex-cache": { 2128 | "version": "0.4.4", 2129 | "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", 2130 | "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", 2131 | "dev": true, 2132 | "requires": { 2133 | "is-equal-shallow": "^0.1.3" 2134 | } 2135 | }, 2136 | "remove-trailing-separator": { 2137 | "version": "1.1.0", 2138 | "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", 2139 | "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", 2140 | "dev": true 2141 | }, 2142 | "repeat-element": { 2143 | "version": "1.1.2", 2144 | "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", 2145 | "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", 2146 | "dev": true 2147 | }, 2148 | "repeat-string": { 2149 | "version": "1.6.1", 2150 | "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", 2151 | "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", 2152 | "dev": true 2153 | }, 2154 | "require-directory": { 2155 | "version": "2.1.1", 2156 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2157 | "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", 2158 | "dev": true 2159 | }, 2160 | "require-main-filename": { 2161 | "version": "1.0.1", 2162 | "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", 2163 | "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", 2164 | "dev": true 2165 | }, 2166 | "requires-port": { 2167 | "version": "1.0.0", 2168 | "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", 2169 | "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", 2170 | "dev": true 2171 | }, 2172 | "resp-modifier": { 2173 | "version": "6.0.2", 2174 | "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", 2175 | "integrity": "sha1-sSTeXE+6/LpUH0j/pzlw9KpFa08=", 2176 | "dev": true, 2177 | "requires": { 2178 | "debug": "^2.2.0", 2179 | "minimatch": "^3.0.2" 2180 | } 2181 | }, 2182 | "rx": { 2183 | "version": "2.3.24", 2184 | "resolved": "https://registry.npmjs.org/rx/-/rx-2.3.24.tgz", 2185 | "integrity": "sha1-FPlQpCF9fjXapxu8vljv9o6ksrc=", 2186 | "dev": true 2187 | }, 2188 | "rxjs": { 2189 | "version": "5.5.11", 2190 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.11.tgz", 2191 | "integrity": "sha512-3bjO7UwWfA2CV7lmwYMBzj4fQ6Cq+ftHc2MvUe+WMS7wcdJ1LosDWmdjPQanYp2dBRj572p7PeU81JUxHKOcBA==", 2192 | "requires": { 2193 | "symbol-observable": "1.0.1" 2194 | } 2195 | }, 2196 | "safe-buffer": { 2197 | "version": "5.1.2", 2198 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 2199 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 2200 | "dev": true 2201 | }, 2202 | "safer-buffer": { 2203 | "version": "2.1.2", 2204 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 2205 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", 2206 | "dev": true 2207 | }, 2208 | "semver": { 2209 | "version": "5.5.0", 2210 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", 2211 | "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==", 2212 | "dev": true 2213 | }, 2214 | "send": { 2215 | "version": "0.16.2", 2216 | "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", 2217 | "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", 2218 | "dev": true, 2219 | "requires": { 2220 | "debug": "2.6.9", 2221 | "depd": "~1.1.2", 2222 | "destroy": "~1.0.4", 2223 | "encodeurl": "~1.0.2", 2224 | "escape-html": "~1.0.3", 2225 | "etag": "~1.8.1", 2226 | "fresh": "0.5.2", 2227 | "http-errors": "~1.6.2", 2228 | "mime": "1.4.1", 2229 | "ms": "2.0.0", 2230 | "on-finished": "~2.3.0", 2231 | "range-parser": "~1.2.0", 2232 | "statuses": "~1.4.0" 2233 | }, 2234 | "dependencies": { 2235 | "statuses": { 2236 | "version": "1.4.0", 2237 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", 2238 | "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", 2239 | "dev": true 2240 | } 2241 | } 2242 | }, 2243 | "serve-index": { 2244 | "version": "1.8.0", 2245 | "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.8.0.tgz", 2246 | "integrity": "sha1-fF2WwT+xMRAfk8HFd0+FFqHnjTs=", 2247 | "dev": true, 2248 | "requires": { 2249 | "accepts": "~1.3.3", 2250 | "batch": "0.5.3", 2251 | "debug": "~2.2.0", 2252 | "escape-html": "~1.0.3", 2253 | "http-errors": "~1.5.0", 2254 | "mime-types": "~2.1.11", 2255 | "parseurl": "~1.3.1" 2256 | }, 2257 | "dependencies": { 2258 | "debug": { 2259 | "version": "2.2.0", 2260 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", 2261 | "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", 2262 | "dev": true, 2263 | "requires": { 2264 | "ms": "0.7.1" 2265 | } 2266 | }, 2267 | "http-errors": { 2268 | "version": "1.5.1", 2269 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.5.1.tgz", 2270 | "integrity": "sha1-eIwNLB3iyBuebowBhDtrl+uSB1A=", 2271 | "dev": true, 2272 | "requires": { 2273 | "inherits": "2.0.3", 2274 | "setprototypeof": "1.0.2", 2275 | "statuses": ">= 1.3.1 < 2" 2276 | } 2277 | }, 2278 | "ms": { 2279 | "version": "0.7.1", 2280 | "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", 2281 | "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", 2282 | "dev": true 2283 | }, 2284 | "setprototypeof": { 2285 | "version": "1.0.2", 2286 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.2.tgz", 2287 | "integrity": "sha1-gaVSFB7BBLiOic44MQOtXGZWTQg=", 2288 | "dev": true 2289 | } 2290 | } 2291 | }, 2292 | "serve-static": { 2293 | "version": "1.13.2", 2294 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", 2295 | "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", 2296 | "dev": true, 2297 | "requires": { 2298 | "encodeurl": "~1.0.2", 2299 | "escape-html": "~1.0.3", 2300 | "parseurl": "~1.3.2", 2301 | "send": "0.16.2" 2302 | } 2303 | }, 2304 | "server-destroy": { 2305 | "version": "1.0.1", 2306 | "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", 2307 | "integrity": "sha1-8Tv5KOQrnD55OD5hzDmYtdFObN0=", 2308 | "dev": true 2309 | }, 2310 | "set-blocking": { 2311 | "version": "2.0.0", 2312 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 2313 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", 2314 | "dev": true 2315 | }, 2316 | "set-immediate-shim": { 2317 | "version": "1.0.1", 2318 | "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", 2319 | "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", 2320 | "dev": true 2321 | }, 2322 | "setprototypeof": { 2323 | "version": "1.1.0", 2324 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", 2325 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", 2326 | "dev": true 2327 | }, 2328 | "socket.io": { 2329 | "version": "2.0.4", 2330 | "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.0.4.tgz", 2331 | "integrity": "sha1-waRZDO/4fs8TxyZS8Eb3FrKeYBQ=", 2332 | "dev": true, 2333 | "requires": { 2334 | "debug": "~2.6.6", 2335 | "engine.io": "~3.1.0", 2336 | "socket.io-adapter": "~1.1.0", 2337 | "socket.io-client": "2.0.4", 2338 | "socket.io-parser": "~3.1.1" 2339 | } 2340 | }, 2341 | "socket.io-adapter": { 2342 | "version": "1.1.1", 2343 | "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz", 2344 | "integrity": "sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs=", 2345 | "dev": true 2346 | }, 2347 | "socket.io-client": { 2348 | "version": "2.0.4", 2349 | "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.0.4.tgz", 2350 | "integrity": "sha1-CRilUkBtxeVAs4Dc2Xr8SmQzL44=", 2351 | "dev": true, 2352 | "requires": { 2353 | "backo2": "1.0.2", 2354 | "base64-arraybuffer": "0.1.5", 2355 | "component-bind": "1.0.0", 2356 | "component-emitter": "1.2.1", 2357 | "debug": "~2.6.4", 2358 | "engine.io-client": "~3.1.0", 2359 | "has-cors": "1.1.0", 2360 | "indexof": "0.0.1", 2361 | "object-component": "0.0.3", 2362 | "parseqs": "0.0.5", 2363 | "parseuri": "0.0.5", 2364 | "socket.io-parser": "~3.1.1", 2365 | "to-array": "0.1.4" 2366 | } 2367 | }, 2368 | "socket.io-parser": { 2369 | "version": "3.1.3", 2370 | "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.1.3.tgz", 2371 | "integrity": "sha512-g0a2HPqLguqAczs3dMECuA1RgoGFPyvDqcbaDEdCWY9g59kdUAz3YRmaJBNKXflrHNwB7Q12Gkf/0CZXfdHR7g==", 2372 | "dev": true, 2373 | "requires": { 2374 | "component-emitter": "1.2.1", 2375 | "debug": "~3.1.0", 2376 | "has-binary2": "~1.0.2", 2377 | "isarray": "2.0.1" 2378 | }, 2379 | "dependencies": { 2380 | "debug": { 2381 | "version": "3.1.0", 2382 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", 2383 | "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", 2384 | "dev": true, 2385 | "requires": { 2386 | "ms": "2.0.0" 2387 | } 2388 | } 2389 | } 2390 | }, 2391 | "spawn-command": { 2392 | "version": "0.0.2-1", 2393 | "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", 2394 | "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", 2395 | "dev": true 2396 | }, 2397 | "spdx-correct": { 2398 | "version": "3.0.0", 2399 | "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.0.tgz", 2400 | "integrity": "sha512-N19o9z5cEyc8yQQPukRCZ9EUmb4HUpnrmaL/fxS2pBo2jbfcFRVuFZ/oFC+vZz0MNNk0h80iMn5/S6qGZOL5+g==", 2401 | "dev": true, 2402 | "requires": { 2403 | "spdx-expression-parse": "^3.0.0", 2404 | "spdx-license-ids": "^3.0.0" 2405 | } 2406 | }, 2407 | "spdx-exceptions": { 2408 | "version": "2.1.0", 2409 | "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", 2410 | "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", 2411 | "dev": true 2412 | }, 2413 | "spdx-expression-parse": { 2414 | "version": "3.0.0", 2415 | "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", 2416 | "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", 2417 | "dev": true, 2418 | "requires": { 2419 | "spdx-exceptions": "^2.1.0", 2420 | "spdx-license-ids": "^3.0.0" 2421 | } 2422 | }, 2423 | "spdx-license-ids": { 2424 | "version": "3.0.0", 2425 | "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.0.tgz", 2426 | "integrity": "sha512-2+EPwgbnmOIl8HjGBXXMd9NAu02vLjOO1nWw4kmeRDFyHn+M/ETfHxQUK0oXg8ctgVnl9t3rosNVsZ1jG61nDA==", 2427 | "dev": true 2428 | }, 2429 | "statuses": { 2430 | "version": "1.3.1", 2431 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", 2432 | "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", 2433 | "dev": true 2434 | }, 2435 | "stream-throttle": { 2436 | "version": "0.1.3", 2437 | "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", 2438 | "integrity": "sha1-rdV8jXzHOoFjDTHNVdOWHPr7qcM=", 2439 | "dev": true, 2440 | "requires": { 2441 | "commander": "^2.2.0", 2442 | "limiter": "^1.0.5" 2443 | } 2444 | }, 2445 | "string-width": { 2446 | "version": "1.0.2", 2447 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 2448 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 2449 | "dev": true, 2450 | "requires": { 2451 | "code-point-at": "^1.0.0", 2452 | "is-fullwidth-code-point": "^1.0.0", 2453 | "strip-ansi": "^3.0.0" 2454 | }, 2455 | "dependencies": { 2456 | "ansi-regex": { 2457 | "version": "2.1.1", 2458 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 2459 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 2460 | "dev": true 2461 | }, 2462 | "strip-ansi": { 2463 | "version": "3.0.1", 2464 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2465 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2466 | "dev": true, 2467 | "requires": { 2468 | "ansi-regex": "^2.0.0" 2469 | } 2470 | } 2471 | } 2472 | }, 2473 | "string_decoder": { 2474 | "version": "1.1.1", 2475 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 2476 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 2477 | "dev": true, 2478 | "requires": { 2479 | "safe-buffer": "~5.1.0" 2480 | } 2481 | }, 2482 | "strip-ansi": { 2483 | "version": "0.3.0", 2484 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", 2485 | "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", 2486 | "dev": true, 2487 | "requires": { 2488 | "ansi-regex": "^0.2.1" 2489 | } 2490 | }, 2491 | "strip-bom": { 2492 | "version": "2.0.0", 2493 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", 2494 | "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", 2495 | "dev": true, 2496 | "requires": { 2497 | "is-utf8": "^0.2.0" 2498 | } 2499 | }, 2500 | "supports-color": { 2501 | "version": "3.2.3", 2502 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", 2503 | "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", 2504 | "dev": true, 2505 | "requires": { 2506 | "has-flag": "^1.0.0" 2507 | } 2508 | }, 2509 | "symbol-observable": { 2510 | "version": "1.0.1", 2511 | "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", 2512 | "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" 2513 | }, 2514 | "systemjs": { 2515 | "version": "0.20.19", 2516 | "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-0.20.19.tgz", 2517 | "integrity": "sha512-H/rKwNEEyej/+IhkmFNmKFyJul8tbH/muiPq5TyNoVTwsGhUjRsN3NlFnFQUvFXA3+GQmsXkCNXU6QKPl779aw==" 2518 | }, 2519 | "tfunk": { 2520 | "version": "3.1.0", 2521 | "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-3.1.0.tgz", 2522 | "integrity": "sha1-OORBT8ZJd9h6/apy+sttKfgve1s=", 2523 | "dev": true, 2524 | "requires": { 2525 | "chalk": "^1.1.1", 2526 | "object-path": "^0.9.0" 2527 | }, 2528 | "dependencies": { 2529 | "ansi-regex": { 2530 | "version": "2.1.1", 2531 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 2532 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 2533 | "dev": true 2534 | }, 2535 | "ansi-styles": { 2536 | "version": "2.2.1", 2537 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", 2538 | "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", 2539 | "dev": true 2540 | }, 2541 | "chalk": { 2542 | "version": "1.1.3", 2543 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", 2544 | "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", 2545 | "dev": true, 2546 | "requires": { 2547 | "ansi-styles": "^2.2.1", 2548 | "escape-string-regexp": "^1.0.2", 2549 | "has-ansi": "^2.0.0", 2550 | "strip-ansi": "^3.0.0", 2551 | "supports-color": "^2.0.0" 2552 | } 2553 | }, 2554 | "has-ansi": { 2555 | "version": "2.0.0", 2556 | "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", 2557 | "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", 2558 | "dev": true, 2559 | "requires": { 2560 | "ansi-regex": "^2.0.0" 2561 | } 2562 | }, 2563 | "strip-ansi": { 2564 | "version": "3.0.1", 2565 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2566 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2567 | "dev": true, 2568 | "requires": { 2569 | "ansi-regex": "^2.0.0" 2570 | } 2571 | }, 2572 | "supports-color": { 2573 | "version": "2.0.0", 2574 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", 2575 | "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", 2576 | "dev": true 2577 | } 2578 | } 2579 | }, 2580 | "to-array": { 2581 | "version": "0.1.4", 2582 | "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", 2583 | "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", 2584 | "dev": true 2585 | }, 2586 | "tree-kill": { 2587 | "version": "1.2.0", 2588 | "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", 2589 | "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==", 2590 | "dev": true 2591 | }, 2592 | "tslib": { 2593 | "version": "1.9.2", 2594 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.2.tgz", 2595 | "integrity": "sha512-AVP5Xol3WivEr7hnssHDsaM+lVrVXWUvd1cfXTRkTj80b//6g2wIFEH6hZG0muGZRnHGrfttpdzRk3YlBkWjKw==" 2596 | }, 2597 | "typescript": { 2598 | "version": "2.8.4", 2599 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.8.4.tgz", 2600 | "integrity": "sha512-IIU5cN1mR5J3z9jjdESJbnxikTrEz3lzAw/D0Tf45jHpBp55nY31UkUvmVHoffCfKHTqJs3fCLPDxknQTTFegQ==", 2601 | "dev": true 2602 | }, 2603 | "ua-parser-js": { 2604 | "version": "0.7.17", 2605 | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.17.tgz", 2606 | "integrity": "sha512-uRdSdu1oA1rncCQL7sCj8vSyZkgtL7faaw9Tc9rZ3mGgraQ7+Pdx7w5mnOSF3gw9ZNG6oc+KXfkon3bKuROm0g==", 2607 | "dev": true 2608 | }, 2609 | "ultron": { 2610 | "version": "1.1.1", 2611 | "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", 2612 | "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", 2613 | "dev": true 2614 | }, 2615 | "universalify": { 2616 | "version": "0.1.1", 2617 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", 2618 | "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", 2619 | "dev": true 2620 | }, 2621 | "unpipe": { 2622 | "version": "1.0.0", 2623 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 2624 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 2625 | "dev": true 2626 | }, 2627 | "util-deprecate": { 2628 | "version": "1.0.2", 2629 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 2630 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", 2631 | "dev": true 2632 | }, 2633 | "utils-merge": { 2634 | "version": "1.0.0", 2635 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", 2636 | "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", 2637 | "dev": true 2638 | }, 2639 | "uws": { 2640 | "version": "9.14.0", 2641 | "resolved": "https://registry.npmjs.org/uws/-/uws-9.14.0.tgz", 2642 | "integrity": "sha512-HNMztPP5A1sKuVFmdZ6BPVpBQd5bUjNC8EFMFiICK+oho/OQsAJy5hnIx4btMHiOk8j04f/DbIlqnEZ9d72dqg==", 2643 | "dev": true, 2644 | "optional": true 2645 | }, 2646 | "validate-npm-package-license": { 2647 | "version": "3.0.3", 2648 | "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.3.tgz", 2649 | "integrity": "sha512-63ZOUnL4SIXj4L0NixR3L1lcjO38crAbgrTpl28t8jjrfuiOBL5Iygm+60qPs/KsZGzPNg6Smnc/oY16QTjF0g==", 2650 | "dev": true, 2651 | "requires": { 2652 | "spdx-correct": "^3.0.0", 2653 | "spdx-expression-parse": "^3.0.0" 2654 | } 2655 | }, 2656 | "which-module": { 2657 | "version": "1.0.0", 2658 | "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", 2659 | "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", 2660 | "dev": true 2661 | }, 2662 | "window-size": { 2663 | "version": "0.2.0", 2664 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", 2665 | "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", 2666 | "dev": true 2667 | }, 2668 | "wrap-ansi": { 2669 | "version": "2.1.0", 2670 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", 2671 | "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", 2672 | "dev": true, 2673 | "requires": { 2674 | "string-width": "^1.0.1", 2675 | "strip-ansi": "^3.0.1" 2676 | }, 2677 | "dependencies": { 2678 | "ansi-regex": { 2679 | "version": "2.1.1", 2680 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 2681 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", 2682 | "dev": true 2683 | }, 2684 | "strip-ansi": { 2685 | "version": "3.0.1", 2686 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 2687 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 2688 | "dev": true, 2689 | "requires": { 2690 | "ansi-regex": "^2.0.0" 2691 | } 2692 | } 2693 | } 2694 | }, 2695 | "ws": { 2696 | "version": "3.3.3", 2697 | "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", 2698 | "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", 2699 | "dev": true, 2700 | "requires": { 2701 | "async-limiter": "~1.0.0", 2702 | "safe-buffer": "~5.1.0", 2703 | "ultron": "~1.1.0" 2704 | } 2705 | }, 2706 | "xmlhttprequest-ssl": { 2707 | "version": "1.5.5", 2708 | "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", 2709 | "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", 2710 | "dev": true 2711 | }, 2712 | "y18n": { 2713 | "version": "3.2.1", 2714 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", 2715 | "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", 2716 | "dev": true 2717 | }, 2718 | "yargs": { 2719 | "version": "6.4.0", 2720 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.4.0.tgz", 2721 | "integrity": "sha1-gW4ahm1VmMzzTlWW3c4i2S2kkNQ=", 2722 | "dev": true, 2723 | "requires": { 2724 | "camelcase": "^3.0.0", 2725 | "cliui": "^3.2.0", 2726 | "decamelize": "^1.1.1", 2727 | "get-caller-file": "^1.0.1", 2728 | "os-locale": "^1.4.0", 2729 | "read-pkg-up": "^1.0.1", 2730 | "require-directory": "^2.1.1", 2731 | "require-main-filename": "^1.0.1", 2732 | "set-blocking": "^2.0.0", 2733 | "string-width": "^1.0.2", 2734 | "which-module": "^1.0.0", 2735 | "window-size": "^0.2.0", 2736 | "y18n": "^3.2.1", 2737 | "yargs-parser": "^4.1.0" 2738 | } 2739 | }, 2740 | "yargs-parser": { 2741 | "version": "4.2.1", 2742 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", 2743 | "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", 2744 | "dev": true, 2745 | "requires": { 2746 | "camelcase": "^3.0.0" 2747 | } 2748 | }, 2749 | "yeast": { 2750 | "version": "0.1.2", 2751 | "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", 2752 | "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", 2753 | "dev": true 2754 | }, 2755 | "zone.js": { 2756 | "version": "0.8.26", 2757 | "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz", 2758 | "integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA==" 2759 | } 2760 | } 2761 | } 2762 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular2-jwt-authentication-example", 3 | "version": "1.0.0", 4 | "repository": { 5 | "type": "git", 6 | "url": "https://github.com/cornflourblue/angular2-jwt-authentication-example.git" 7 | }, 8 | "scripts": { 9 | "start": "tsc && concurrently \"npm run tsc:w\" \"npm run lite\" ", 10 | "lite": "lite-server", 11 | "tsc": "tsc", 12 | "tsc:w": "tsc -w" 13 | }, 14 | "license": "MIT", 15 | "dependencies": { 16 | "@angular/common": "^5.0.0", 17 | "@angular/compiler": "^5.0.0", 18 | "@angular/core": "^5.0.0", 19 | "@angular/forms": "^5.0.0", 20 | "@angular/platform-browser": "^5.0.0", 21 | "@angular/platform-browser-dynamic": "^5.0.0", 22 | "@angular/router": "^5.0.0", 23 | "core-js": "^2.4.1", 24 | "rxjs": "^5.2.0", 25 | "systemjs": "^0.20.19", 26 | "zone.js": "^0.8.5" 27 | }, 28 | "devDependencies": { 29 | "@types/node": "^8.0.53", 30 | "concurrently": "^3.1.0", 31 | "lite-server": "^2.3.0", 32 | "typescript": "^2.2.2" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /systemjs.config.js: -------------------------------------------------------------------------------- 1 | /** 2 | * System configuration for Angular 2 samples 3 | * Adjust as necessary for your application needs. 4 | */ 5 | (function (global) { 6 | System.config({ 7 | paths: { 8 | // paths serve as alias 9 | 'npm:': 'node_modules/' 10 | }, 11 | // map tells the System loader where to look for things 12 | map: { 13 | // our app is within the app folder 14 | app: 'app', 15 | 16 | // angular bundles 17 | '@angular/core': 'npm:@angular/core/bundles/core.umd.js', 18 | '@angular/common': 'npm:@angular/common/bundles/common.umd.js', 19 | '@angular/common/http': 'npm:@angular/common/bundles/common-http.umd.js', 20 | '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', 21 | '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', 22 | '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', 23 | '@angular/router': 'npm:@angular/router/bundles/router.umd.js', 24 | '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', 25 | 26 | // other libraries 27 | 'rxjs': 'npm:rxjs', 28 | 'tslib': 'npm:tslib/tslib.js' 29 | }, 30 | // packages tells the System loader how to load when no filename and/or no extension 31 | packages: { 32 | app: { 33 | main: './main.js', 34 | defaultExtension: 'js' 35 | }, 36 | rxjs: { 37 | defaultExtension: 'js' 38 | } 39 | } 40 | }); 41 | })(this); 42 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "emitDecoratorMetadata": true, 4 | "experimentalDecorators": true, 5 | "lib": [ "es2015", "dom" ], 6 | "module": "commonjs", 7 | "moduleResolution": "node", 8 | "noImplicitAny": true, 9 | "sourceMap": true, 10 | "suppressImplicitAnyIndexErrors": true, 11 | "target": "es5" 12 | }, 13 | "exclude": [ 14 | "node_modules/*" 15 | ] 16 | } --------------------------------------------------------------------------------