├── .gitignore ├── .travis.yml ├── README.md ├── app ├── app.css ├── app.module.ts ├── app.ts └── todo │ ├── components │ └── todo_cmp.ts │ ├── models │ └── todo_model.ts │ ├── routes │ └── todo_routes.ts │ ├── services │ └── todo_service.ts │ ├── styles │ └── todo.css │ ├── templates │ └── todo.html │ └── todo.ts ├── config.js ├── index.html ├── index.ts ├── karma-test-shim.js ├── karma.conf.js ├── package.json ├── tests ├── components │ └── todo_cmp_test.ts ├── models │ └── todo_model_test.ts └── services │ └── todo_service_test.ts ├── tsconfig.json ├── typings.json └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .vscode 3 | node_modules 4 | typings 5 | 6 | app/**/*.js 7 | **/*.map 8 | tests/**/*.js 9 | 10 | *.js 11 | *.log 12 | 13 | !karma*.js 14 | !config*.js 15 | 16 | .DS_Store 17 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | 3 | node_js: 4 | - "stable" 5 | 6 | sudo: true 7 | 8 | before_script: 9 | - npm install -g typescript typings 10 | - typings install && tsc 11 | 12 | before_install: 13 | - export CHROME_BIN=/usr/bin/google-chrome 14 | - export DISPLAY=:99.0 15 | - sudo apt-get update 16 | - sh -e /etc/init.d/xvfb start 17 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [](https://travis-ci.org/ericmdantas/angular2-typescript-todo) 2 | 3 | 4 | ## ng2 + tsc + typings + unit tests 5 | 6 | Always updated with the latest version of ng2 (2.0.0 final), typescript (2.0.2), typings (1.3.2) and jasmine (2.3). 7 | 8 | ### Install dev dependencies 9 | 10 | ```shell 11 | $ npm i 12 | ``` 13 | 14 | ### Install typings globally 15 | 16 | ```shell 17 | $ npm i -g typings 18 | ``` 19 | 20 | ### Install typings stuff 21 | 22 | ```shell 23 | $ typings i 24 | ``` 25 | 26 | ### Compile 27 | 28 | ```shell 29 | $ npm run build 30 | ``` 31 | 32 | ### Run 33 | 34 | ```shell 35 | $ npm start 36 | ``` 37 | 38 | ### Test 39 | 40 | ```shell 41 | $ npm t 42 | ``` 43 | 44 | ## Happy coding! 45 | -------------------------------------------------------------------------------- /app/app.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: "Roboto"; 3 | } 4 | -------------------------------------------------------------------------------- /app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { FormsModule, ReactiveFormsModule, FormBuilder } from '@angular/forms'; 3 | import { BrowserModule } from '@angular/platform-browser'; 4 | import { App } from './app'; 5 | import { TodoCmp } from './todo/components/todo_cmp'; 6 | import { TodoService } from './todo/services/todo_service'; 7 | import { todoRouting } from './todo/routes/todo_routes'; 8 | 9 | @NgModule({ 10 | imports: [ 11 | BrowserModule, 12 | FormsModule, 13 | todoRouting 14 | ], 15 | declarations: [ 16 | App, 17 | TodoCmp, 18 | ], 19 | providers: [ 20 | TodoService, 21 | ], 22 | bootstrap: [ 23 | App, 24 | ], 25 | }) 26 | export class AppModule {} 27 | -------------------------------------------------------------------------------- /app/app.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Component 3 | } from '@angular/core'; 4 | 5 | @Component({ 6 | selector: 'app', 7 | template: ` 8 | 9 | ` 10 | }) 11 | export class App { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /app/todo/components/todo_cmp.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Component, 3 | Inject 4 | } from '@angular/core'; 5 | 6 | import { 7 | Validators, 8 | FormGroup, 9 | FormControl 10 | } from '@angular/forms'; 11 | 12 | import {TodoModel} from '../models/todo_model'; 13 | import {TodoService} from '../services/todo_service'; 14 | 15 | @Component({ 16 | selector: 'todo', 17 | templateUrl: 'app/todo/templates/todo.html', 18 | styleUrls: ['app/todo/styles/todo.css'] 19 | }) 20 | export class TodoCmp { 21 | todo: TodoModel; 22 | todoForm: {message: string}; 23 | todoList: TodoModel[] = []; 24 | 25 | constructor(private _todoService: TodoService) { 26 | this.todoForm = { 27 | message: "" 28 | }; 29 | } 30 | 31 | customTrackBy(index:number, obj: TodoModel): number { 32 | return obj.createdAt; 33 | } 34 | 35 | add(message: string):void { 36 | this.todo = new TodoModel(message); 37 | 38 | this._todoService 39 | .add(this.todo) 40 | .subscribe(result => { 41 | this.todoList.push(result); 42 | this.todoForm.message = ""; 43 | }); 44 | } 45 | 46 | remove(id: number):void { 47 | this._todoService 48 | .remove(id) 49 | .subscribe(id => { 50 | this.todoList.forEach((todo, index) => { 51 | if (todo.createdAt === id) { 52 | return this.todoList.splice(index, 1); 53 | }; 54 | }); 55 | }); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /app/todo/models/todo_model.ts: -------------------------------------------------------------------------------- 1 | import {Injectable} from '@angular/core'; 2 | 3 | @Injectable() 4 | export class TodoModel { 5 | message: string = ''; 6 | createdAt: number = Date.now(); 7 | 8 | constructor(message = '') { 9 | this.message = message; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/todo/routes/todo_routes.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Routes, 3 | RouterModule 4 | } from '@angular/router'; 5 | 6 | import { 7 | TodoCmp 8 | } from '../components/todo_cmp'; 9 | 10 | const routes:Routes = [ 11 | { 12 | path: '', 13 | pathMatch: 'full', 14 | component: TodoCmp 15 | } 16 | ]; 17 | 18 | export const todoRouting = RouterModule.forRoot(routes); 19 | -------------------------------------------------------------------------------- /app/todo/services/todo_service.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Observable 3 | } from 'rxjs/Observable'; 4 | 5 | import {TodoModel} from '../models/todo_model'; 6 | import {Injectable} from '@angular/core'; 7 | 8 | @Injectable() 9 | export class TodoService { 10 | add(todo: TodoModel):Observable { 11 | return new Observable((o) => { 12 | o.next(todo); 13 | }); 14 | } 15 | 16 | remove(id: number):Observable { 17 | return new Observable((o) => { 18 | o.next(id); 19 | }); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/todo/styles/todo.css: -------------------------------------------------------------------------------- 1 | .todo_title { 2 | position: absolute; 3 | top: -60px; 4 | background-color: #fff; 5 | padding: 10px 20px 10px 10px; 6 | left: 0; 7 | font-size: 30px; 8 | font-weight: normal; 9 | text-align: center; 10 | } 11 | 12 | .todo_container { 13 | position: relative; 14 | max-width: 800px; 15 | margin: 0 auto; 16 | padding: 40px 10px 10px 10px; 17 | box-sizing: border-box; 18 | box-shadow: 0 -1px 0 #e5e5e5, 19 | 0 0 2px rgba(0,0,0,.12), 20 | 0 2px 4px rgba(0,0,0,.24); 21 | margin-top: 50px; 22 | } 23 | 24 | .todo_input { 25 | width: 85%; 26 | padding: 5px; 27 | font-size: 17px; 28 | border: none; 29 | border-bottom: 2px solid #ddd; 30 | } 31 | 32 | .todo_button { 33 | position: absolute; 34 | padding: 9px 15px; 35 | background-color: #fff; 36 | outline: none; 37 | border: 1px solid #ccc; 38 | box-shadow: 0 0 2px #bbb; 39 | font-weight: bold; 40 | right: 10px; 41 | cursor: pointer; 42 | font-size: 20px; 43 | margin-top: -10px; 44 | border-radius: 100%; 45 | -webkit-transition: all .1s; 46 | -moz-transition: all .1s; 47 | -ms-transition: all .1s; 48 | -o-transition: all .1s; 49 | transition: all .1s; 50 | } 51 | 52 | .todo_button:disabled { 53 | opacity: .3; 54 | } 55 | 56 | .todo_item { 57 | padding: 10px 50px 10px 10px; 58 | border: 1px solid #eee; 59 | word-break: break-word; 60 | position: relative; 61 | cursor: pointer; 62 | } 63 | 64 | .todo_exclude_item { 65 | position: absolute; 66 | top: 0; 67 | right: 0; 68 | background-color: #fff; 69 | border: none; 70 | color: red; 71 | padding: 12px 17px; 72 | border-left: 1px solid #eee; 73 | border-bottom: 1px solid #eee; 74 | cursor: pointer; 75 | -webkit-transition: all .1s; 76 | -moz-transition: all .1s; 77 | -ms-transition: all .1s; 78 | -o-transition: all .1s; 79 | transition: all .1s; 80 | outline: 0; 81 | } 82 | 83 | .nothing_to_do { 84 | color: #777; 85 | text-align: center; 86 | } 87 | 88 | .todo_input:focus { 89 | border-bottom-color: steelblue; 90 | outline: none; 91 | } 92 | 93 | .todo_button:focus { 94 | border-color: steelblue; 95 | } 96 | 97 | .todo_button:active { 98 | color: #fff; 99 | background-color: steelblue; 100 | outline: 0; 101 | box-shadow: none; 102 | } 103 | 104 | .todo_exclude_item:active { 105 | color: #fff; 106 | background-color: rgba(212, 31, 31, 0.86); 107 | outline: 0; 108 | } 109 | -------------------------------------------------------------------------------- /app/todo/templates/todo.html: -------------------------------------------------------------------------------- 1 | 2 | ng2do 3 | 4 | 5 | 7 | 8 | 14 | 15 | + 18 | 19 | 20 | 21 | 22 | 23 | Nothing to do. Go play outside :D 25 | 26 | 27 | 28 | 29 | 30 | x 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/todo/todo.ts: -------------------------------------------------------------------------------- 1 | export * from './components/todo_cmp'; 2 | -------------------------------------------------------------------------------- /config.js: -------------------------------------------------------------------------------- 1 | System.config({ 2 | defaultJSExtensions: true, 3 | paths: { 4 | 'npm:': 'node_modules/' 5 | }, 6 | map: { 7 | "rxjs": "npm:rxjs", 8 | "simble-observable": "npm:symble-observable", 9 | '@angular/core': 'npm:@angular/core/bundles/core.umd.js', 10 | '@angular/common': 'npm:@angular/common/bundles/common.umd.js', 11 | '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', 12 | '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', 13 | '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', 14 | '@angular/http': 'npm:@angular/http/bundles/http.umd.js', 15 | '@angular/router': 'npm:@angular/router/bundles/router.umd.js', 16 | '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', 17 | 18 | // angular testing umd bundles 19 | '@angular/core/testing': 'npm:@angular/core/bundles/core-testing.umd.js', 20 | '@angular/common/testing': 'npm:@angular/common/bundles/common-testing.umd.js', 21 | '@angular/compiler/testing': 'npm:@angular/compiler/bundles/compiler-testing.umd.js', 22 | '@angular/platform-browser/testing': 'npm:@angular/platform-browser/bundles/platform-browser-testing.umd.js', 23 | '@angular/platform-browser-dynamic/testing': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic-testing.umd.js', 24 | '@angular/http/testing': 'npm:@angular/http/bundles/http-testing.umd.js', 25 | '@angular/router/testing': 'npm:@angular/router/bundles/router-testing.umd.js', 26 | '@angular/forms/testing': 'npm:@angular/forms/bundles/forms-testing.umd.js', 27 | } 28 | }); 29 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ng2do 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- 1 | import {platformBrowserDynamic} from '@angular/platform-browser-dynamic'; 2 | import {AppModule} from './app/app.module'; 3 | 4 | platformBrowserDynamic().bootstrapModule(AppModule); 5 | -------------------------------------------------------------------------------- /karma-test-shim.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Error.stackTraceLimit = Infinity; 4 | 5 | jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000; 6 | 7 | __karma__.loaded = function () {}; 8 | 9 | var allSpecFiles = Object.keys(window.__karma__.files) 10 | .filter(isSpecFile) 11 | .filter(isTestFileBuilt); 12 | 13 | System.config({ 14 | baseURL: '/base' 15 | }); 16 | 17 | System.config({ 18 | map: { 19 | '@angular': 'node_modules/@angular', 20 | 'rxjs': 'node_modules/rxjs', 21 | 'app': 'app' 22 | }, 23 | packages: { 24 | 'app': { 25 | main: 'main.js', 26 | defaultExtension: 'js' 27 | }, 28 | '@angular/core': { 29 | main: 'index.js', 30 | defaultExtension: 'js' 31 | }, 32 | '@angular/compiler': { 33 | main: 'index.js', 34 | defaultExtension: 'js' 35 | }, 36 | '@angular/common': { 37 | main: 'index.js', 38 | defaultExtension: 'js' 39 | }, 40 | '@angular/forms': { 41 | main: 'index.js', 42 | defaultExtension: 'js' 43 | }, 44 | '@angular/platform-browser': { 45 | main: 'index.js', 46 | defaultExtension: 'js' 47 | }, 48 | '@angular/platform-browser-dynamic': { 49 | main: 'index.js', 50 | defaultExtension: 'js' 51 | }, 52 | 'rxjs': { 53 | defaultExtension: 'js' 54 | } 55 | } 56 | }); 57 | 58 | Promise.all([ 59 | System.import('@angular/core/testing'), 60 | System.import('@angular/platform-browser-dynamic/testing') 61 | ]) 62 | .then((providers) => { 63 | var testing = providers[0]; 64 | var testingBrowser = providers[1]; 65 | 66 | testing.setBaseTestProviders(testingBrowser.TEST_BROWSER_DYNAMIC_PLATFORM_PROVIDERS, 67 | testingBrowser.TEST_BROWSER_DYNAMIC_APPLICATION_PROVIDERS); 68 | 69 | return; 70 | }) 71 | .then(() => { 72 | return Promise.all(allSpecFiles.map((moduleName) => { 73 | return System.import(moduleName); 74 | })); 75 | }) 76 | .then(__karma__.start) 77 | .catch(__karma__.error); 78 | 79 | function isJsFile(path) { 80 | return path.slice(-3) == '.js'; 81 | } 82 | 83 | function isSpecFile(path) { 84 | return path.slice(-8) == '_test.js'; 85 | } 86 | 87 | function isTestFileBuilt(path) { 88 | var builtPath = '/base/tests/'; 89 | return isJsFile(path) && (path.substr(0, builtPath.length) == builtPath); 90 | } 91 | -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = function(config) { 2 | config.set({ 3 | 4 | basePath: '', 5 | 6 | frameworks: ['jasmine'], 7 | 8 | files: [ 9 | // paths loaded by Karma 10 | //'node_modules/es6-shim/es6-shim.js', 11 | 12 | 'node_modules/reflect-metadata/Reflect.js', 13 | 14 | // System.js for module loading 15 | 'node_modules/systemjs/dist/system-polyfills.js', 16 | 'node_modules/systemjs/dist/system.src.js', 17 | 18 | // Zone.js dependencies 19 | 'node_modules/zone.js/dist/zone.js', 20 | 'node_modules/zone.js/dist/jasmine-patch.js', 21 | 'node_modules/zone.js/dist/async-test.js', 22 | 'node_modules/zone.js/dist/fake-async-test.js', 23 | 24 | // RxJs. 25 | {pattern: 'node_modules/rxjs/**/*.js', included: false, watched: false}, 26 | {pattern: 'node_modules/rxjs/**/*.js.map', included: false, watched: false}, 27 | 28 | {pattern: 'karma-test-shim.js', included: true, watched: true}, 29 | 30 | // paths loaded via module imports 31 | // Angular itself 32 | {pattern: 'node_modules/@angular/**/*.js', included: false, watched: true}, 33 | {pattern: 'node_modules/@angular/**/*.js.map', included: false, watched: true}, 34 | 35 | // paths loaded via module imports 36 | {pattern: 'app/**/*.js', included: false, watched: true}, 37 | 38 | // paths loaded via Angular's component compiler 39 | // (these paths need to be rewritten, see proxies section) 40 | {pattern: 'app/**/*.html', included: false, watched: true}, 41 | {pattern: 'app/**/*.css', included: false, watched: true}, 42 | 43 | // paths to support debugging with source maps in dev tools 44 | {pattern: 'app/**/*.ts', included: false, watched: false}, 45 | {pattern: 'app/**/*.js.map', included: false, watched: false}, 46 | 47 | {pattern: 'tests/**/*_test.js', included: false, watched: false} 48 | ], 49 | 50 | // proxied base paths 51 | proxies: { 52 | // required for component assests fetched by Angular's compiler 53 | "/app/": "/base/app/" 54 | }, 55 | 56 | customLaunchers: { 57 | Chrome_travis_ci: { 58 | base: 'Chrome', 59 | flags: ['--no-sandbox'] 60 | } 61 | }, 62 | 63 | reporters: ['progress'], 64 | port: 9876, 65 | colors: true, 66 | logLevel: config.LOG_INFO, 67 | autoWatch: true, 68 | browsers: ['Chrome'], 69 | singleRun: true 70 | }) 71 | 72 | if (process.env.TRAVIS) { 73 | config.browsers = ['Chrome_travis_ci']; 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular2-typescript-todo", 3 | "version": "1.0.0", 4 | "description": "angular2 typescript todo", 5 | "repository": "ericmdantas/angular2-typescript-todo", 6 | "keywords": [ 7 | "angular2", 8 | "typescript", 9 | "todo", 10 | "ng2", 11 | "test", 12 | "boilerplate", 13 | "example", 14 | "ng2-karma", 15 | "ng2-test", 16 | "unit test" 17 | ], 18 | "main": "index.js", 19 | "scripts": { 20 | "start": "aliv --quiet", 21 | "test": "npm run build && karma start karma.conf.js", 22 | "build": "tsc" 23 | }, 24 | "author": { 25 | "name": "Eric Mendes Dantas", 26 | "email": "ericdantas0@gmail.com", 27 | "url": "https://github.com/ericmdantas" 28 | }, 29 | "license": "MIT", 30 | "devDependencies": { 31 | "aliv": "^1.5.0", 32 | "jasmine": "^2.3.2", 33 | "karma": "^0.13.15", 34 | "karma-chrome-launcher": "^0.2.1", 35 | "karma-jasmine": "^0.3.6", 36 | "typescript": "^2.0.2" 37 | }, 38 | "dependencies": { 39 | "@angular/common": "^2.4.6", 40 | "@angular/compiler": "^2.4.6", 41 | "@angular/core": "^2.4.6", 42 | "@angular/forms": "^2.4.6", 43 | "@angular/platform-browser": "^2.4.6", 44 | "@angular/platform-browser-dynamic": "^2.4.6", 45 | "@angular/router": "^3.4.6", 46 | "reflect-metadata": "^0.1.3", 47 | "rxjs": "5.0.1", 48 | "systemjs": "^0.20.5", 49 | "zone.js": "^0.7.6" 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /tests/components/todo_cmp_test.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | import { 4 | async, 5 | inject, 6 | TestBed 7 | } from '@angular/core/testing'; 8 | 9 | import {Observable} from 'rxjs/Observable'; 10 | import {TodoCmp} from '../../app/todo/components/todo_cmp'; 11 | import {TodoService} from '../../app/todo/services/todo_service'; 12 | import {TodoModel} from '../../app/todo/models/todo_model'; 13 | 14 | class MockTodoService { 15 | add() { 16 | return new Observable((o) => { 17 | o.next(1); 18 | }); 19 | } 20 | 21 | remove() { 22 | return new Observable((o) => { 23 | o.next(2); 24 | }); 25 | } 26 | } 27 | 28 | describe('todo_cmp', () => { 29 | beforeEach(() => { 30 | TestBed.configureTestingModule({ 31 | declarations: [TodoCmp] 32 | }) 33 | }); 34 | 35 | describe('creation', () => { 36 | it('should create the cmp correctly', async(() => { 37 | let fixture = TestBed.createComponent(TodoCmp); 38 | fixture.detectChanges(); 39 | 40 | let compiled = fixture.debugElement.nativeElement; 41 | 42 | expect(compiled).toBeDefined(); 43 | })); 44 | 45 | it('should have todoList as an empty array', async(() => { 46 | let fixture = TestBed.createComponent(TodoCmp); 47 | fixture.detectChanges(); 48 | 49 | let instance = fixture.debugElement.componentInstance; 50 | 51 | expect(instance.todoList).toEqual([]); 52 | })); 53 | 54 | it('should have _todoService an instance of TodoService', async(() => { 55 | let fixture = TestBed.createComponent(TodoCmp); 56 | fixture.detectChanges(); 57 | 58 | let instance = fixture.debugElement.componentInstance; 59 | 60 | expect(instance._todoService).toBeDefined(); 61 | })); 62 | }); 63 | 64 | describe('methods', () => { 65 | describe('customTrackBy', () => { 66 | it('should return the createdAt correctly', async(() => { 67 | let fixture = TestBed.createComponent(TodoCmp); 68 | fixture.detectChanges(); 69 | 70 | let instance = fixture.debugElement.componentInstance; 71 | let todo = new TodoModel('abc'); 72 | let index = 0; 73 | 74 | let resultCustomCall = instance.customTrackBy(index, todo); 75 | 76 | expect(resultCustomCall).toBeDefined(); 77 | expect(resultCustomCall).toBe(todo.createdAt); 78 | })); 79 | }) 80 | 81 | }); 82 | 83 | describe('form stuff', () => { 84 | it('should have the submit button disabled on creation', async(() => { 85 | let fixture = TestBed.createComponent(TodoCmp); 86 | fixture.detectChanges(); 87 | 88 | let compiled = fixture.debugElement.nativeElement; 89 | 90 | expect(compiled.getElementsByClassName('todo_button')[0].getAttribute('disabled')).not.toBe(null); 91 | expect(compiled.getElementsByClassName('todo_button')[0].getAttribute('disabled')).toBeDefined(); 92 | })); 93 | 94 | it('should have the submit button enabled after form changes', async(() => { 95 | let fixture = TestBed.createComponent(TodoCmp); 96 | fixture.detectChanges(); 97 | 98 | let instance = fixture.debugElement.componentInstance; 99 | let compiled = fixture.debugElement.nativeElement; 100 | 101 | instance.todoForm.controls.message.updateValue('abc'); 102 | 103 | fixture.detectChanges(); 104 | 105 | expect(compiled.getElementsByClassName('todo_button')[0].getAttribute('disabled')).toBe(null); 106 | 107 | instance.todoForm.controls.message.updateValue(undefined); 108 | 109 | fixture.detectChanges(); 110 | 111 | expect(compiled.getElementsByClassName('todo_button')[0].getAttribute('disabled')).not.toBe(null); 112 | })); 113 | 114 | it('should clear the input after the submit', async(() => { 115 | let fixture = TestBed.createComponent(TodoCmp); 116 | fixture.detectChanges(); 117 | 118 | let compiled = fixture.debugElement.nativeElement; 119 | let instance = fixture.debugElement.componentInstance; 120 | 121 | const TEXT = 'something something'; 122 | 123 | instance.todoForm.controls.message.updateValue(TEXT); 124 | 125 | fixture.detectChanges(); 126 | 127 | expect(compiled.getElementsByClassName('todo_button')[0].getAttribute('disabled')).toBe(null); 128 | expect(instance.todoForm.controls.message.value).toBe(TEXT); 129 | 130 | compiled.getElementsByClassName('todo_button')[0].click(); 131 | 132 | expect(instance.todoForm.controls.message.value).toBe(''); 133 | })); 134 | }) 135 | }); 136 | -------------------------------------------------------------------------------- /tests/models/todo_model_test.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | import {TodoModel} from '../../app/todo/models/todo_model'; 4 | 5 | describe('todo_model', () => { 6 | it('should have the right values - empty constructor', () => { 7 | spyOn(Date, 'now').and.returnValue(1); 8 | 9 | let _todo = new TodoModel(); 10 | 11 | expect(_todo.message).toBe(''); 12 | expect(_todo.createdAt).toBe(1); 13 | }); 14 | 15 | it('should have the right values - filled constructor', () => { 16 | spyOn(Date, 'now').and.returnValue(1); 17 | 18 | let _todo = new TodoModel('a'); 19 | 20 | expect(_todo.message).toBe('a'); 21 | expect(_todo.createdAt).toBe(1); 22 | }); 23 | }); 24 | -------------------------------------------------------------------------------- /tests/services/todo_service_test.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | import { 4 | inject 5 | } from '@angular/core/testing'; 6 | 7 | import {TodoService} from '../../app/todo/services/todo_service'; 8 | import {TodoModel} from '../../app/todo/models/todo_model'; 9 | 10 | describe('todo_service', () => { 11 | describe('add', () => { 12 | it('should do something', inject([TodoService], (service) => { 13 | let _todo = new TodoModel(); 14 | 15 | service.add(_todo) 16 | .subscribe((r) => { 17 | expect(r).toEqual(_todo); 18 | }); 19 | })); 20 | }); 21 | 22 | describe('remove', () => { 23 | it('should remove', inject([TodoService], (service) => { 24 | let _id = 1; 25 | 26 | service.remove(_id) 27 | .subscribe((r) => { 28 | expect(r).toEqual(_id); 29 | }); 30 | })) 31 | }); 32 | }); 33 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "moduleResolution": "node", 5 | "target": "es5", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "noImplicitAny": false 10 | }, 11 | "exclude": [ 12 | "node_modules", 13 | "typings" 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /typings.json: -------------------------------------------------------------------------------- 1 | { 2 | "globalDependencies": { 3 | "es6-shim": "registry:dt/es6-shim#0.31.2+20160317120654", 4 | "jasmine": "registry:dt/jasmine#2.2.0+20160505161446" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@angular/common@^2.4.6": 6 | version "2.4.6" 7 | resolved "https://registry.yarnpkg.com/@angular/common/-/common-2.4.6.tgz#f005528f75d0a6deaaf636f3b779f26bda4adb07" 8 | 9 | "@angular/compiler@^2.4.6": 10 | version "2.4.6" 11 | resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-2.4.6.tgz#17236b858f5730eed257d93e90bcbae45e21e0fe" 12 | 13 | "@angular/core@^2.4.6": 14 | version "2.4.6" 15 | resolved "https://registry.yarnpkg.com/@angular/core/-/core-2.4.6.tgz#4abec78ee035b27e8192acf70409c3dbca24e829" 16 | 17 | "@angular/forms@^2.4.6": 18 | version "2.4.6" 19 | resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-2.4.6.tgz#aca73ad404ebe3022ffb6461cb6c06da864185fe" 20 | 21 | "@angular/platform-browser-dynamic@^2.4.6": 22 | version "2.4.6" 23 | resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-2.4.6.tgz#d50d8b66f7fa00c0449f33c2c1b5348b67c9fcda" 24 | 25 | "@angular/platform-browser@^2.4.6": 26 | version "2.4.6" 27 | resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-2.4.6.tgz#ded44169d4a870d5ee40e95496d34e9ab03c2c3a" 28 | 29 | "@angular/router@^3.4.6": 30 | version "3.4.6" 31 | resolved "https://registry.yarnpkg.com/@angular/router/-/router-3.4.6.tgz#df708503f2006a090a2704f5490a9ea1ba9fc9d0" 32 | 33 | abab@^1.0.0: 34 | version "1.0.3" 35 | resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.3.tgz#b81de5f7274ec4e756d797cd834f303642724e5d" 36 | 37 | abbrev@1: 38 | version "1.0.9" 39 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" 40 | 41 | accepts@1.3.3, accepts@~1.3.3: 42 | version "1.3.3" 43 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" 44 | dependencies: 45 | mime-types "~2.1.11" 46 | negotiator "0.6.1" 47 | 48 | acorn-globals@^1.0.4: 49 | version "1.0.9" 50 | resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-1.0.9.tgz#55bb5e98691507b74579d0513413217c380c54cf" 51 | dependencies: 52 | acorn "^2.1.0" 53 | 54 | acorn@^2.1.0, acorn@^2.4.0: 55 | version "2.7.0" 56 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-2.7.0.tgz#ab6e7d9d886aaca8b085bc3312b79a198433f0e7" 57 | 58 | after@0.8.2: 59 | version "0.8.2" 60 | resolved "https://registry.yarnpkg.com/after/-/after-0.8.2.tgz#fedb394f9f0e02aa9768e702bda23b505fae7e1f" 61 | 62 | aliv@^1.5.0: 63 | version "1.5.0" 64 | resolved "https://registry.yarnpkg.com/aliv/-/aliv-1.5.0.tgz#2079b64d60254af1e944c1eef72f0232bdc00fac" 65 | dependencies: 66 | chalk "^1.1.1" 67 | cheerio "^0.20.0" 68 | chokidar "^1.4.2" 69 | compression "^1.6.2" 70 | express "^4.13.4" 71 | http-proxy "^1.13.2" 72 | minimist "^1.2.0" 73 | open "0.0.5" 74 | ws "^1.1.0" 75 | 76 | amdefine@>=0.0.4: 77 | version "1.0.1" 78 | resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" 79 | 80 | ansi-regex@^2.0.0: 81 | version "2.1.1" 82 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 83 | 84 | ansi-styles@^2.2.1: 85 | version "2.2.1" 86 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 87 | 88 | anymatch@^1.3.0: 89 | version "1.3.0" 90 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" 91 | dependencies: 92 | arrify "^1.0.0" 93 | micromatch "^2.1.5" 94 | 95 | aproba@^1.0.3: 96 | version "1.0.4" 97 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0" 98 | 99 | are-we-there-yet@~1.1.2: 100 | version "1.1.2" 101 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" 102 | dependencies: 103 | delegates "^1.0.0" 104 | readable-stream "^2.0.0 || ^1.1.13" 105 | 106 | arr-diff@^2.0.0: 107 | version "2.0.0" 108 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 109 | dependencies: 110 | arr-flatten "^1.0.1" 111 | 112 | arr-flatten@^1.0.1: 113 | version "1.0.1" 114 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" 115 | 116 | array-flatten@1.1.1: 117 | version "1.1.1" 118 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 119 | 120 | array-slice@^0.2.3: 121 | version "0.2.3" 122 | resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" 123 | 124 | array-unique@^0.2.1: 125 | version "0.2.1" 126 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 127 | 128 | arraybuffer.slice@0.0.6: 129 | version "0.0.6" 130 | resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" 131 | 132 | arrify@^1.0.0: 133 | version "1.0.1" 134 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 135 | 136 | asn1@~0.2.3: 137 | version "0.2.3" 138 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 139 | 140 | assert-plus@^0.2.0: 141 | version "0.2.0" 142 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 143 | 144 | assert-plus@^1.0.0: 145 | version "1.0.0" 146 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 147 | 148 | async-each@^1.0.0: 149 | version "1.0.1" 150 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 151 | 152 | asynckit@^0.4.0: 153 | version "0.4.0" 154 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 155 | 156 | aws-sign2@~0.6.0: 157 | version "0.6.0" 158 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 159 | 160 | aws4@^1.2.1: 161 | version "1.5.0" 162 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755" 163 | 164 | backo2@1.0.2: 165 | version "1.0.2" 166 | resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" 167 | 168 | balanced-match@^0.4.1: 169 | version "0.4.2" 170 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 171 | 172 | base64-arraybuffer@0.1.5: 173 | version "0.1.5" 174 | resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" 175 | 176 | base64id@1.0.0: 177 | version "1.0.0" 178 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-1.0.0.tgz#47688cb99bb6804f0e06d3e763b1c32e57d8e6b6" 179 | 180 | batch@^0.5.3: 181 | version "0.5.3" 182 | resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" 183 | 184 | bcrypt-pbkdf@^1.0.0: 185 | version "1.0.1" 186 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 187 | dependencies: 188 | tweetnacl "^0.14.3" 189 | 190 | better-assert@~1.0.0: 191 | version "1.0.2" 192 | resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" 193 | dependencies: 194 | callsite "1.0.0" 195 | 196 | binary-extensions@^1.0.0: 197 | version "1.8.0" 198 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" 199 | 200 | blob@0.0.4: 201 | version "0.0.4" 202 | resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" 203 | 204 | block-stream@*: 205 | version "0.0.9" 206 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 207 | dependencies: 208 | inherits "~2.0.0" 209 | 210 | bluebird@^2.9.27: 211 | version "2.11.0" 212 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" 213 | 214 | body-parser@^1.12.4: 215 | version "1.16.0" 216 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.16.0.tgz#924a5e472c6229fb9d69b85a20d5f2532dec788b" 217 | dependencies: 218 | bytes "2.4.0" 219 | content-type "~1.0.2" 220 | debug "2.6.0" 221 | depd "~1.1.0" 222 | http-errors "~1.5.1" 223 | iconv-lite "0.4.15" 224 | on-finished "~2.3.0" 225 | qs "6.2.1" 226 | raw-body "~2.2.0" 227 | type-is "~1.6.14" 228 | 229 | boolbase@~1.0.0: 230 | version "1.0.0" 231 | resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" 232 | 233 | boom@2.x.x: 234 | version "2.10.1" 235 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 236 | dependencies: 237 | hoek "2.x.x" 238 | 239 | brace-expansion@^1.0.0: 240 | version "1.1.6" 241 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" 242 | dependencies: 243 | balanced-match "^0.4.1" 244 | concat-map "0.0.1" 245 | 246 | braces@^0.1.2: 247 | version "0.1.5" 248 | resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6" 249 | dependencies: 250 | expand-range "^0.1.0" 251 | 252 | braces@^1.8.2: 253 | version "1.8.5" 254 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 255 | dependencies: 256 | expand-range "^1.8.1" 257 | preserve "^0.2.0" 258 | repeat-element "^1.1.2" 259 | 260 | buffer-shims@^1.0.0: 261 | version "1.0.0" 262 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 263 | 264 | bytes@2.3.0: 265 | version "2.3.0" 266 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070" 267 | 268 | bytes@2.4.0: 269 | version "2.4.0" 270 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339" 271 | 272 | callsite@1.0.0: 273 | version "1.0.0" 274 | resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" 275 | 276 | caseless@~0.11.0: 277 | version "0.11.0" 278 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" 279 | 280 | chalk@^1.1.1: 281 | version "1.1.3" 282 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 283 | dependencies: 284 | ansi-styles "^2.2.1" 285 | escape-string-regexp "^1.0.2" 286 | has-ansi "^2.0.0" 287 | strip-ansi "^3.0.0" 288 | supports-color "^2.0.0" 289 | 290 | cheerio@^0.20.0: 291 | version "0.20.0" 292 | resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-0.20.0.tgz#5c710f2bab95653272842ba01c6ea61b3545ec35" 293 | dependencies: 294 | css-select "~1.2.0" 295 | dom-serializer "~0.1.0" 296 | entities "~1.1.1" 297 | htmlparser2 "~3.8.1" 298 | lodash "^4.1.0" 299 | optionalDependencies: 300 | jsdom "^7.0.2" 301 | 302 | chokidar@^1.4.1, chokidar@^1.4.2: 303 | version "1.6.1" 304 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" 305 | dependencies: 306 | anymatch "^1.3.0" 307 | async-each "^1.0.0" 308 | glob-parent "^2.0.0" 309 | inherits "^2.0.1" 310 | is-binary-path "^1.0.0" 311 | is-glob "^2.0.0" 312 | path-is-absolute "^1.0.0" 313 | readdirp "^2.0.0" 314 | optionalDependencies: 315 | fsevents "^1.0.0" 316 | 317 | code-point-at@^1.0.0: 318 | version "1.1.0" 319 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 320 | 321 | colors@^1.1.0: 322 | version "1.1.2" 323 | resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" 324 | 325 | combined-stream@^1.0.5, combined-stream@~1.0.5: 326 | version "1.0.5" 327 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 328 | dependencies: 329 | delayed-stream "~1.0.0" 330 | 331 | commander@^2.9.0: 332 | version "2.9.0" 333 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 334 | dependencies: 335 | graceful-readlink ">= 1.0.0" 336 | 337 | component-bind@1.0.0: 338 | version "1.0.0" 339 | resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" 340 | 341 | component-emitter@1.1.2: 342 | version "1.1.2" 343 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" 344 | 345 | component-emitter@1.2.1: 346 | version "1.2.1" 347 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 348 | 349 | component-inherit@0.0.3: 350 | version "0.0.3" 351 | resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" 352 | 353 | compressible@~2.0.8: 354 | version "2.0.9" 355 | resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.9.tgz#6daab4e2b599c2770dd9e21e7a891b1c5a755425" 356 | dependencies: 357 | mime-db ">= 1.24.0 < 2" 358 | 359 | compression@^1.6.2: 360 | version "1.6.2" 361 | resolved "https://registry.yarnpkg.com/compression/-/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3" 362 | dependencies: 363 | accepts "~1.3.3" 364 | bytes "2.3.0" 365 | compressible "~2.0.8" 366 | debug "~2.2.0" 367 | on-headers "~1.0.1" 368 | vary "~1.1.0" 369 | 370 | concat-map@0.0.1: 371 | version "0.0.1" 372 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 373 | 374 | connect@^3.3.5: 375 | version "3.5.0" 376 | resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198" 377 | dependencies: 378 | debug "~2.2.0" 379 | finalhandler "0.5.0" 380 | parseurl "~1.3.1" 381 | utils-merge "1.0.0" 382 | 383 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 384 | version "1.1.0" 385 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 386 | 387 | content-disposition@0.5.2: 388 | version "0.5.2" 389 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" 390 | 391 | content-type@~1.0.2: 392 | version "1.0.2" 393 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" 394 | 395 | cookie-signature@1.0.6: 396 | version "1.0.6" 397 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 398 | 399 | cookie@0.3.1: 400 | version "0.3.1" 401 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" 402 | 403 | core-js@^2.1.0: 404 | version "2.4.1" 405 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" 406 | 407 | core-util-is@~1.0.0: 408 | version "1.0.2" 409 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 410 | 411 | cryptiles@2.x.x: 412 | version "2.0.5" 413 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 414 | dependencies: 415 | boom "2.x.x" 416 | 417 | css-select@~1.2.0: 418 | version "1.2.0" 419 | resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" 420 | dependencies: 421 | boolbase "~1.0.0" 422 | css-what "2.1" 423 | domutils "1.5.1" 424 | nth-check "~1.0.1" 425 | 426 | css-what@2.1: 427 | version "2.1.0" 428 | resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd" 429 | 430 | cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0": 431 | version "0.3.2" 432 | resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.2.tgz#b8036170c79f07a90ff2f16e22284027a243848b" 433 | 434 | "cssstyle@>= 0.2.29 < 0.3.0": 435 | version "0.2.37" 436 | resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-0.2.37.tgz#541097234cb2513c83ceed3acddc27ff27987d54" 437 | dependencies: 438 | cssom "0.3.x" 439 | 440 | custom-event@~1.0.0: 441 | version "1.0.1" 442 | resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" 443 | 444 | dashdash@^1.12.0: 445 | version "1.14.1" 446 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 447 | dependencies: 448 | assert-plus "^1.0.0" 449 | 450 | debug@2.2.0, debug@~2.2.0: 451 | version "2.2.0" 452 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 453 | dependencies: 454 | ms "0.7.1" 455 | 456 | debug@2.3.3: 457 | version "2.3.3" 458 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" 459 | dependencies: 460 | ms "0.7.2" 461 | 462 | debug@2.6.0: 463 | version "2.6.0" 464 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.0.tgz#bc596bcabe7617f11d9fa15361eded5608b8499b" 465 | dependencies: 466 | ms "0.7.2" 467 | 468 | deep-extend@~0.4.0: 469 | version "0.4.1" 470 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" 471 | 472 | deep-is@~0.1.3: 473 | version "0.1.3" 474 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" 475 | 476 | delayed-stream@~1.0.0: 477 | version "1.0.0" 478 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 479 | 480 | delegates@^1.0.0: 481 | version "1.0.0" 482 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 483 | 484 | depd@~1.1.0: 485 | version "1.1.0" 486 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" 487 | 488 | destroy@~1.0.4: 489 | version "1.0.4" 490 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 491 | 492 | di@^0.0.1: 493 | version "0.0.1" 494 | resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" 495 | 496 | dom-serialize@^2.2.0: 497 | version "2.2.1" 498 | resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" 499 | dependencies: 500 | custom-event "~1.0.0" 501 | ent "~2.2.0" 502 | extend "^3.0.0" 503 | void-elements "^2.0.0" 504 | 505 | dom-serializer@0, dom-serializer@~0.1.0: 506 | version "0.1.0" 507 | resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82" 508 | dependencies: 509 | domelementtype "~1.1.1" 510 | entities "~1.1.1" 511 | 512 | domelementtype@1, domelementtype@~1.1.1: 513 | version "1.1.3" 514 | resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b" 515 | 516 | domhandler@2.3: 517 | version "2.3.0" 518 | resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.3.0.tgz#2de59a0822d5027fabff6f032c2b25a2a8abe738" 519 | dependencies: 520 | domelementtype "1" 521 | 522 | domutils@1.5, domutils@1.5.1: 523 | version "1.5.1" 524 | resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" 525 | dependencies: 526 | dom-serializer "0" 527 | domelementtype "1" 528 | 529 | ecc-jsbn@~0.1.1: 530 | version "0.1.1" 531 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 532 | dependencies: 533 | jsbn "~0.1.0" 534 | 535 | ee-first@1.1.1: 536 | version "1.1.1" 537 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 538 | 539 | encodeurl@~1.0.1: 540 | version "1.0.1" 541 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" 542 | 543 | engine.io-client@1.8.2: 544 | version "1.8.2" 545 | resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.2.tgz#c38767547f2a7d184f5752f6f0ad501006703766" 546 | dependencies: 547 | component-emitter "1.2.1" 548 | component-inherit "0.0.3" 549 | debug "2.3.3" 550 | engine.io-parser "1.3.2" 551 | has-cors "1.1.0" 552 | indexof "0.0.1" 553 | parsejson "0.0.3" 554 | parseqs "0.0.5" 555 | parseuri "0.0.5" 556 | ws "1.1.1" 557 | xmlhttprequest-ssl "1.5.3" 558 | yeast "0.1.2" 559 | 560 | engine.io-parser@1.3.2: 561 | version "1.3.2" 562 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.2.tgz#937b079f0007d0893ec56d46cb220b8cb435220a" 563 | dependencies: 564 | after "0.8.2" 565 | arraybuffer.slice "0.0.6" 566 | base64-arraybuffer "0.1.5" 567 | blob "0.0.4" 568 | has-binary "0.1.7" 569 | wtf-8 "1.0.0" 570 | 571 | engine.io@1.8.2: 572 | version "1.8.2" 573 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.2.tgz#6b59be730b348c0125b0a4589de1c355abcf7a7e" 574 | dependencies: 575 | accepts "1.3.3" 576 | base64id "1.0.0" 577 | cookie "0.3.1" 578 | debug "2.3.3" 579 | engine.io-parser "1.3.2" 580 | ws "1.1.1" 581 | 582 | ent@~2.2.0: 583 | version "2.2.0" 584 | resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" 585 | 586 | entities@1.0: 587 | version "1.0.0" 588 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.0.0.tgz#b2987aa3821347fcde642b24fdfc9e4fb712bf26" 589 | 590 | entities@~1.1.1: 591 | version "1.1.1" 592 | resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0" 593 | 594 | escape-html@~1.0.3: 595 | version "1.0.3" 596 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 597 | 598 | escape-string-regexp@^1.0.2: 599 | version "1.0.5" 600 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 601 | 602 | escodegen@^1.6.1: 603 | version "1.8.1" 604 | resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" 605 | dependencies: 606 | esprima "^2.7.1" 607 | estraverse "^1.9.1" 608 | esutils "^2.0.2" 609 | optionator "^0.8.1" 610 | optionalDependencies: 611 | source-map "~0.2.0" 612 | 613 | esprima@^2.7.1: 614 | version "2.7.3" 615 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" 616 | 617 | estraverse@^1.9.1: 618 | version "1.9.3" 619 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" 620 | 621 | esutils@^2.0.2: 622 | version "2.0.2" 623 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" 624 | 625 | etag@~1.7.0: 626 | version "1.7.0" 627 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" 628 | 629 | eventemitter3@1.x.x: 630 | version "1.2.0" 631 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" 632 | 633 | exit@^0.1.2: 634 | version "0.1.2" 635 | resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" 636 | 637 | expand-braces@^0.1.1: 638 | version "0.1.2" 639 | resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea" 640 | dependencies: 641 | array-slice "^0.2.3" 642 | array-unique "^0.2.1" 643 | braces "^0.1.2" 644 | 645 | expand-brackets@^0.1.4: 646 | version "0.1.5" 647 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 648 | dependencies: 649 | is-posix-bracket "^0.1.0" 650 | 651 | expand-range@^0.1.0: 652 | version "0.1.1" 653 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044" 654 | dependencies: 655 | is-number "^0.1.1" 656 | repeat-string "^0.2.2" 657 | 658 | expand-range@^1.8.1: 659 | version "1.8.2" 660 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 661 | dependencies: 662 | fill-range "^2.1.0" 663 | 664 | express@^4.13.4: 665 | version "4.14.1" 666 | resolved "https://registry.yarnpkg.com/express/-/express-4.14.1.tgz#646c237f766f148c2120aff073817b9e4d7e0d33" 667 | dependencies: 668 | accepts "~1.3.3" 669 | array-flatten "1.1.1" 670 | content-disposition "0.5.2" 671 | content-type "~1.0.2" 672 | cookie "0.3.1" 673 | cookie-signature "1.0.6" 674 | debug "~2.2.0" 675 | depd "~1.1.0" 676 | encodeurl "~1.0.1" 677 | escape-html "~1.0.3" 678 | etag "~1.7.0" 679 | finalhandler "0.5.1" 680 | fresh "0.3.0" 681 | merge-descriptors "1.0.1" 682 | methods "~1.1.2" 683 | on-finished "~2.3.0" 684 | parseurl "~1.3.1" 685 | path-to-regexp "0.1.7" 686 | proxy-addr "~1.1.3" 687 | qs "6.2.0" 688 | range-parser "~1.2.0" 689 | send "0.14.2" 690 | serve-static "~1.11.2" 691 | type-is "~1.6.14" 692 | utils-merge "1.0.0" 693 | vary "~1.1.0" 694 | 695 | extend@^3.0.0, extend@~3.0.0: 696 | version "3.0.0" 697 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" 698 | 699 | extglob@^0.3.1: 700 | version "0.3.2" 701 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 702 | dependencies: 703 | is-extglob "^1.0.0" 704 | 705 | extsprintf@1.0.2: 706 | version "1.0.2" 707 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" 708 | 709 | fast-levenshtein@~2.0.4: 710 | version "2.0.6" 711 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 712 | 713 | filename-regex@^2.0.0: 714 | version "2.0.0" 715 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" 716 | 717 | fill-range@^2.1.0: 718 | version "2.2.3" 719 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 720 | dependencies: 721 | is-number "^2.1.0" 722 | isobject "^2.0.0" 723 | randomatic "^1.1.3" 724 | repeat-element "^1.1.2" 725 | repeat-string "^1.5.2" 726 | 727 | finalhandler@0.5.0: 728 | version "0.5.0" 729 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7" 730 | dependencies: 731 | debug "~2.2.0" 732 | escape-html "~1.0.3" 733 | on-finished "~2.3.0" 734 | statuses "~1.3.0" 735 | unpipe "~1.0.0" 736 | 737 | finalhandler@0.5.1: 738 | version "0.5.1" 739 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.1.tgz#2c400d8d4530935bc232549c5fa385ec07de6fcd" 740 | dependencies: 741 | debug "~2.2.0" 742 | escape-html "~1.0.3" 743 | on-finished "~2.3.0" 744 | statuses "~1.3.1" 745 | unpipe "~1.0.0" 746 | 747 | for-in@^0.1.5: 748 | version "0.1.6" 749 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8" 750 | 751 | for-own@^0.1.4: 752 | version "0.1.4" 753 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072" 754 | dependencies: 755 | for-in "^0.1.5" 756 | 757 | forever-agent@~0.6.1: 758 | version "0.6.1" 759 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 760 | 761 | form-data@~2.1.1: 762 | version "2.1.2" 763 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" 764 | dependencies: 765 | asynckit "^0.4.0" 766 | combined-stream "^1.0.5" 767 | mime-types "^2.1.12" 768 | 769 | forwarded@~0.1.0: 770 | version "0.1.0" 771 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" 772 | 773 | fresh@0.3.0: 774 | version "0.3.0" 775 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" 776 | 777 | fs-access@^1.0.0: 778 | version "1.0.1" 779 | resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a" 780 | dependencies: 781 | null-check "^1.0.0" 782 | 783 | fs.realpath@^1.0.0: 784 | version "1.0.0" 785 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 786 | 787 | fsevents@^1.0.0: 788 | version "1.0.17" 789 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.17.tgz#8537f3f12272678765b4fd6528c0f1f66f8f4558" 790 | dependencies: 791 | nan "^2.3.0" 792 | node-pre-gyp "^0.6.29" 793 | 794 | fstream-ignore@~1.0.5: 795 | version "1.0.5" 796 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 797 | dependencies: 798 | fstream "^1.0.0" 799 | inherits "2" 800 | minimatch "^3.0.0" 801 | 802 | fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: 803 | version "1.0.10" 804 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822" 805 | dependencies: 806 | graceful-fs "^4.1.2" 807 | inherits "~2.0.0" 808 | mkdirp ">=0.5 0" 809 | rimraf "2" 810 | 811 | gauge@~2.7.1: 812 | version "2.7.2" 813 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.2.tgz#15cecc31b02d05345a5d6b0e171cdb3ad2307774" 814 | dependencies: 815 | aproba "^1.0.3" 816 | console-control-strings "^1.0.0" 817 | has-unicode "^2.0.0" 818 | object-assign "^4.1.0" 819 | signal-exit "^3.0.0" 820 | string-width "^1.0.1" 821 | strip-ansi "^3.0.1" 822 | supports-color "^0.2.0" 823 | wide-align "^1.1.0" 824 | 825 | generate-function@^2.0.0: 826 | version "2.0.0" 827 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 828 | 829 | generate-object-property@^1.1.0: 830 | version "1.2.0" 831 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 832 | dependencies: 833 | is-property "^1.0.0" 834 | 835 | getpass@^0.1.1: 836 | version "0.1.6" 837 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" 838 | dependencies: 839 | assert-plus "^1.0.0" 840 | 841 | glob-base@^0.3.0: 842 | version "0.3.0" 843 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 844 | dependencies: 845 | glob-parent "^2.0.0" 846 | is-glob "^2.0.0" 847 | 848 | glob-parent@^2.0.0: 849 | version "2.0.0" 850 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 851 | dependencies: 852 | is-glob "^2.0.0" 853 | 854 | glob@^7.0.0, glob@^7.0.5, glob@^7.0.6: 855 | version "7.1.1" 856 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 857 | dependencies: 858 | fs.realpath "^1.0.0" 859 | inflight "^1.0.4" 860 | inherits "2" 861 | minimatch "^3.0.2" 862 | once "^1.3.0" 863 | path-is-absolute "^1.0.0" 864 | 865 | graceful-fs@^4.1.2: 866 | version "4.1.11" 867 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 868 | 869 | "graceful-readlink@>= 1.0.0": 870 | version "1.0.1" 871 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 872 | 873 | har-validator@~2.0.6: 874 | version "2.0.6" 875 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" 876 | dependencies: 877 | chalk "^1.1.1" 878 | commander "^2.9.0" 879 | is-my-json-valid "^2.12.4" 880 | pinkie-promise "^2.0.0" 881 | 882 | has-ansi@^2.0.0: 883 | version "2.0.0" 884 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 885 | dependencies: 886 | ansi-regex "^2.0.0" 887 | 888 | has-binary@0.1.7: 889 | version "0.1.7" 890 | resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" 891 | dependencies: 892 | isarray "0.0.1" 893 | 894 | has-cors@1.1.0: 895 | version "1.1.0" 896 | resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" 897 | 898 | has-unicode@^2.0.0: 899 | version "2.0.1" 900 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 901 | 902 | hawk@~3.1.3: 903 | version "3.1.3" 904 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 905 | dependencies: 906 | boom "2.x.x" 907 | cryptiles "2.x.x" 908 | hoek "2.x.x" 909 | sntp "1.x.x" 910 | 911 | hoek@2.x.x: 912 | version "2.16.3" 913 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 914 | 915 | htmlparser2@~3.8.1: 916 | version "3.8.3" 917 | resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.8.3.tgz#996c28b191516a8be86501a7d79757e5c70c1068" 918 | dependencies: 919 | domelementtype "1" 920 | domhandler "2.3" 921 | domutils "1.5" 922 | entities "1.0" 923 | readable-stream "1.1" 924 | 925 | http-errors@~1.5.1: 926 | version "1.5.1" 927 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" 928 | dependencies: 929 | inherits "2.0.3" 930 | setprototypeof "1.0.2" 931 | statuses ">= 1.3.1 < 2" 932 | 933 | http-proxy@^1.13.0, http-proxy@^1.13.2: 934 | version "1.16.2" 935 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.16.2.tgz#06dff292952bf64dbe8471fa9df73066d4f37742" 936 | dependencies: 937 | eventemitter3 "1.x.x" 938 | requires-port "1.x.x" 939 | 940 | http-signature@~1.1.0: 941 | version "1.1.1" 942 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 943 | dependencies: 944 | assert-plus "^0.2.0" 945 | jsprim "^1.2.2" 946 | sshpk "^1.7.0" 947 | 948 | iconv-lite@0.4.15: 949 | version "0.4.15" 950 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.15.tgz#fe265a218ac6a57cfe854927e9d04c19825eddeb" 951 | 952 | indexof@0.0.1: 953 | version "0.0.1" 954 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 955 | 956 | inflight@^1.0.4: 957 | version "1.0.6" 958 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 959 | dependencies: 960 | once "^1.3.0" 961 | wrappy "1" 962 | 963 | inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: 964 | version "2.0.3" 965 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 966 | 967 | ini@~1.3.0: 968 | version "1.3.4" 969 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" 970 | 971 | ipaddr.js@1.2.0: 972 | version "1.2.0" 973 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4" 974 | 975 | is-binary-path@^1.0.0: 976 | version "1.0.1" 977 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 978 | dependencies: 979 | binary-extensions "^1.0.0" 980 | 981 | is-buffer@^1.0.2: 982 | version "1.1.4" 983 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b" 984 | 985 | is-dotfile@^1.0.0: 986 | version "1.0.2" 987 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" 988 | 989 | is-equal-shallow@^0.1.3: 990 | version "0.1.3" 991 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 992 | dependencies: 993 | is-primitive "^2.0.0" 994 | 995 | is-extendable@^0.1.1: 996 | version "0.1.1" 997 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 998 | 999 | is-extglob@^1.0.0: 1000 | version "1.0.0" 1001 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1002 | 1003 | is-fullwidth-code-point@^1.0.0: 1004 | version "1.0.0" 1005 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1006 | dependencies: 1007 | number-is-nan "^1.0.0" 1008 | 1009 | is-glob@^2.0.0, is-glob@^2.0.1: 1010 | version "2.0.1" 1011 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1012 | dependencies: 1013 | is-extglob "^1.0.0" 1014 | 1015 | is-my-json-valid@^2.12.4: 1016 | version "2.15.0" 1017 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b" 1018 | dependencies: 1019 | generate-function "^2.0.0" 1020 | generate-object-property "^1.1.0" 1021 | jsonpointer "^4.0.0" 1022 | xtend "^4.0.0" 1023 | 1024 | is-number@^0.1.1: 1025 | version "0.1.1" 1026 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" 1027 | 1028 | is-number@^2.0.2, is-number@^2.1.0: 1029 | version "2.1.0" 1030 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1031 | dependencies: 1032 | kind-of "^3.0.2" 1033 | 1034 | is-posix-bracket@^0.1.0: 1035 | version "0.1.1" 1036 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1037 | 1038 | is-primitive@^2.0.0: 1039 | version "2.0.0" 1040 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1041 | 1042 | is-property@^1.0.0: 1043 | version "1.0.2" 1044 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 1045 | 1046 | is-typedarray@~1.0.0: 1047 | version "1.0.0" 1048 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1049 | 1050 | isarray@0.0.1: 1051 | version "0.0.1" 1052 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1053 | 1054 | isarray@1.0.0, isarray@~1.0.0: 1055 | version "1.0.0" 1056 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1057 | 1058 | isbinaryfile@^3.0.0: 1059 | version "3.0.2" 1060 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.2.tgz#4a3e974ec0cba9004d3fc6cde7209ea69368a621" 1061 | 1062 | isexe@^1.1.1: 1063 | version "1.1.2" 1064 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" 1065 | 1066 | isobject@^2.0.0: 1067 | version "2.1.0" 1068 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1069 | dependencies: 1070 | isarray "1.0.0" 1071 | 1072 | isstream@~0.1.2: 1073 | version "0.1.2" 1074 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1075 | 1076 | jasmine-core@~2.5.2: 1077 | version "2.5.2" 1078 | resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297" 1079 | 1080 | jasmine@^2.3.2: 1081 | version "2.5.3" 1082 | resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.5.3.tgz#5441f254e1fc2269deb1dfd93e0e57d565ff4d22" 1083 | dependencies: 1084 | exit "^0.1.2" 1085 | glob "^7.0.6" 1086 | jasmine-core "~2.5.2" 1087 | 1088 | jodid25519@^1.0.0: 1089 | version "1.0.2" 1090 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" 1091 | dependencies: 1092 | jsbn "~0.1.0" 1093 | 1094 | jsbn@~0.1.0: 1095 | version "0.1.0" 1096 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd" 1097 | 1098 | jsdom@^7.0.2: 1099 | version "7.2.2" 1100 | resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-7.2.2.tgz#40b402770c2bda23469096bee91ab675e3b1fc6e" 1101 | dependencies: 1102 | abab "^1.0.0" 1103 | acorn "^2.4.0" 1104 | acorn-globals "^1.0.4" 1105 | cssom ">= 0.3.0 < 0.4.0" 1106 | cssstyle ">= 0.2.29 < 0.3.0" 1107 | escodegen "^1.6.1" 1108 | nwmatcher ">= 1.3.7 < 2.0.0" 1109 | parse5 "^1.5.1" 1110 | request "^2.55.0" 1111 | sax "^1.1.4" 1112 | symbol-tree ">= 3.1.0 < 4.0.0" 1113 | tough-cookie "^2.2.0" 1114 | webidl-conversions "^2.0.0" 1115 | whatwg-url-compat "~0.6.5" 1116 | xml-name-validator ">= 2.0.1 < 3.0.0" 1117 | 1118 | json-schema@0.2.3: 1119 | version "0.2.3" 1120 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1121 | 1122 | json-stringify-safe@~5.0.1: 1123 | version "5.0.1" 1124 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1125 | 1126 | json3@3.3.2: 1127 | version "3.3.2" 1128 | resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" 1129 | 1130 | jsonpointer@^4.0.0: 1131 | version "4.0.1" 1132 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 1133 | 1134 | jsprim@^1.2.2: 1135 | version "1.3.1" 1136 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" 1137 | dependencies: 1138 | extsprintf "1.0.2" 1139 | json-schema "0.2.3" 1140 | verror "1.3.6" 1141 | 1142 | karma-chrome-launcher@^0.2.1: 1143 | version "0.2.3" 1144 | resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-0.2.3.tgz#4c6d700d163a9d34c618efd87918be49e7a4a8c9" 1145 | dependencies: 1146 | fs-access "^1.0.0" 1147 | which "^1.2.1" 1148 | 1149 | karma-jasmine@^0.3.6: 1150 | version "0.3.8" 1151 | resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-0.3.8.tgz#5b6457791ad9b89aa173f079e3ebe1b8c805236c" 1152 | 1153 | karma@^0.13.15: 1154 | version "0.13.22" 1155 | resolved "https://registry.yarnpkg.com/karma/-/karma-0.13.22.tgz#07750b1bd063d7e7e7b91bcd2e6354d8f2aa8744" 1156 | dependencies: 1157 | batch "^0.5.3" 1158 | bluebird "^2.9.27" 1159 | body-parser "^1.12.4" 1160 | chokidar "^1.4.1" 1161 | colors "^1.1.0" 1162 | connect "^3.3.5" 1163 | core-js "^2.1.0" 1164 | di "^0.0.1" 1165 | dom-serialize "^2.2.0" 1166 | expand-braces "^0.1.1" 1167 | glob "^7.0.0" 1168 | graceful-fs "^4.1.2" 1169 | http-proxy "^1.13.0" 1170 | isbinaryfile "^3.0.0" 1171 | lodash "^3.8.0" 1172 | log4js "^0.6.31" 1173 | mime "^1.3.4" 1174 | minimatch "^3.0.0" 1175 | optimist "^0.6.1" 1176 | rimraf "^2.3.3" 1177 | socket.io "^1.4.5" 1178 | source-map "^0.5.3" 1179 | useragent "^2.1.6" 1180 | 1181 | kind-of@^3.0.2: 1182 | version "3.1.0" 1183 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" 1184 | dependencies: 1185 | is-buffer "^1.0.2" 1186 | 1187 | levn@~0.3.0: 1188 | version "0.3.0" 1189 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" 1190 | dependencies: 1191 | prelude-ls "~1.1.2" 1192 | type-check "~0.3.2" 1193 | 1194 | lodash@^3.8.0: 1195 | version "3.10.1" 1196 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" 1197 | 1198 | lodash@^4.1.0: 1199 | version "4.17.4" 1200 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 1201 | 1202 | log4js@^0.6.31: 1203 | version "0.6.38" 1204 | resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd" 1205 | dependencies: 1206 | readable-stream "~1.0.2" 1207 | semver "~4.3.3" 1208 | 1209 | lru-cache@2.2.x: 1210 | version "2.2.4" 1211 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d" 1212 | 1213 | media-typer@0.3.0: 1214 | version "0.3.0" 1215 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1216 | 1217 | merge-descriptors@1.0.1: 1218 | version "1.0.1" 1219 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1220 | 1221 | methods@~1.1.2: 1222 | version "1.1.2" 1223 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1224 | 1225 | micromatch@^2.1.5: 1226 | version "2.3.11" 1227 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1228 | dependencies: 1229 | arr-diff "^2.0.0" 1230 | array-unique "^0.2.1" 1231 | braces "^1.8.2" 1232 | expand-brackets "^0.1.4" 1233 | extglob "^0.3.1" 1234 | filename-regex "^2.0.0" 1235 | is-extglob "^1.0.0" 1236 | is-glob "^2.0.1" 1237 | kind-of "^3.0.2" 1238 | normalize-path "^2.0.1" 1239 | object.omit "^2.0.0" 1240 | parse-glob "^3.0.4" 1241 | regex-cache "^0.4.2" 1242 | 1243 | "mime-db@>= 1.24.0 < 2", mime-db@~1.26.0: 1244 | version "1.26.0" 1245 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" 1246 | 1247 | mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7: 1248 | version "2.1.14" 1249 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" 1250 | dependencies: 1251 | mime-db "~1.26.0" 1252 | 1253 | mime@1.3.4, mime@^1.3.4: 1254 | version "1.3.4" 1255 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" 1256 | 1257 | minimatch@^3.0.0, minimatch@^3.0.2: 1258 | version "3.0.3" 1259 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 1260 | dependencies: 1261 | brace-expansion "^1.0.0" 1262 | 1263 | minimist@0.0.8: 1264 | version "0.0.8" 1265 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1266 | 1267 | minimist@^1.2.0: 1268 | version "1.2.0" 1269 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1270 | 1271 | minimist@~0.0.1: 1272 | version "0.0.10" 1273 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" 1274 | 1275 | "mkdirp@>=0.5 0", mkdirp@~0.5.1: 1276 | version "0.5.1" 1277 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1278 | dependencies: 1279 | minimist "0.0.8" 1280 | 1281 | ms@0.7.1: 1282 | version "0.7.1" 1283 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 1284 | 1285 | ms@0.7.2: 1286 | version "0.7.2" 1287 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" 1288 | 1289 | nan@^2.3.0: 1290 | version "2.5.1" 1291 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2" 1292 | 1293 | negotiator@0.6.1: 1294 | version "0.6.1" 1295 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" 1296 | 1297 | node-pre-gyp@^0.6.29: 1298 | version "0.6.33" 1299 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9" 1300 | dependencies: 1301 | mkdirp "~0.5.1" 1302 | nopt "~3.0.6" 1303 | npmlog "^4.0.1" 1304 | rc "~1.1.6" 1305 | request "^2.79.0" 1306 | rimraf "~2.5.4" 1307 | semver "~5.3.0" 1308 | tar "~2.2.1" 1309 | tar-pack "~3.3.0" 1310 | 1311 | nopt@~3.0.6: 1312 | version "3.0.6" 1313 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 1314 | dependencies: 1315 | abbrev "1" 1316 | 1317 | normalize-path@^2.0.1: 1318 | version "2.0.1" 1319 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" 1320 | 1321 | npmlog@^4.0.1: 1322 | version "4.0.2" 1323 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" 1324 | dependencies: 1325 | are-we-there-yet "~1.1.2" 1326 | console-control-strings "~1.1.0" 1327 | gauge "~2.7.1" 1328 | set-blocking "~2.0.0" 1329 | 1330 | nth-check@~1.0.1: 1331 | version "1.0.1" 1332 | resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4" 1333 | dependencies: 1334 | boolbase "~1.0.0" 1335 | 1336 | null-check@^1.0.0: 1337 | version "1.0.0" 1338 | resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" 1339 | 1340 | number-is-nan@^1.0.0: 1341 | version "1.0.1" 1342 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 1343 | 1344 | "nwmatcher@>= 1.3.7 < 2.0.0": 1345 | version "1.3.9" 1346 | resolved "https://registry.yarnpkg.com/nwmatcher/-/nwmatcher-1.3.9.tgz#8bab486ff7fa3dfd086656bbe8b17116d3692d2a" 1347 | 1348 | oauth-sign@~0.8.1: 1349 | version "0.8.2" 1350 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 1351 | 1352 | object-assign@4.1.0, object-assign@^4.1.0: 1353 | version "4.1.0" 1354 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" 1355 | 1356 | object-component@0.0.3: 1357 | version "0.0.3" 1358 | resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" 1359 | 1360 | object.omit@^2.0.0: 1361 | version "2.0.1" 1362 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 1363 | dependencies: 1364 | for-own "^0.1.4" 1365 | is-extendable "^0.1.1" 1366 | 1367 | on-finished@~2.3.0: 1368 | version "2.3.0" 1369 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1370 | dependencies: 1371 | ee-first "1.1.1" 1372 | 1373 | on-headers@~1.0.1: 1374 | version "1.0.1" 1375 | resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7" 1376 | 1377 | once@^1.3.0: 1378 | version "1.4.0" 1379 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1380 | dependencies: 1381 | wrappy "1" 1382 | 1383 | once@~1.3.3: 1384 | version "1.3.3" 1385 | resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" 1386 | dependencies: 1387 | wrappy "1" 1388 | 1389 | open@0.0.5: 1390 | version "0.0.5" 1391 | resolved "https://registry.yarnpkg.com/open/-/open-0.0.5.tgz#42c3e18ec95466b6bf0dc42f3a2945c3f0cad8fc" 1392 | 1393 | optimist@^0.6.1: 1394 | version "0.6.1" 1395 | resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" 1396 | dependencies: 1397 | minimist "~0.0.1" 1398 | wordwrap "~0.0.2" 1399 | 1400 | optionator@^0.8.1: 1401 | version "0.8.2" 1402 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" 1403 | dependencies: 1404 | deep-is "~0.1.3" 1405 | fast-levenshtein "~2.0.4" 1406 | levn "~0.3.0" 1407 | prelude-ls "~1.1.2" 1408 | type-check "~0.3.2" 1409 | wordwrap "~1.0.0" 1410 | 1411 | options@>=0.0.5: 1412 | version "0.0.6" 1413 | resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" 1414 | 1415 | parse-glob@^3.0.4: 1416 | version "3.0.4" 1417 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 1418 | dependencies: 1419 | glob-base "^0.3.0" 1420 | is-dotfile "^1.0.0" 1421 | is-extglob "^1.0.0" 1422 | is-glob "^2.0.0" 1423 | 1424 | parse5@^1.5.1: 1425 | version "1.5.1" 1426 | resolved "https://registry.yarnpkg.com/parse5/-/parse5-1.5.1.tgz#9b7f3b0de32be78dc2401b17573ccaf0f6f59d94" 1427 | 1428 | parsejson@0.0.3: 1429 | version "0.0.3" 1430 | resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" 1431 | dependencies: 1432 | better-assert "~1.0.0" 1433 | 1434 | parseqs@0.0.5: 1435 | version "0.0.5" 1436 | resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" 1437 | dependencies: 1438 | better-assert "~1.0.0" 1439 | 1440 | parseuri@0.0.5: 1441 | version "0.0.5" 1442 | resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" 1443 | dependencies: 1444 | better-assert "~1.0.0" 1445 | 1446 | parseurl@~1.3.1: 1447 | version "1.3.1" 1448 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" 1449 | 1450 | path-is-absolute@^1.0.0: 1451 | version "1.0.1" 1452 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1453 | 1454 | path-to-regexp@0.1.7: 1455 | version "0.1.7" 1456 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 1457 | 1458 | pinkie-promise@^2.0.0: 1459 | version "2.0.1" 1460 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 1461 | dependencies: 1462 | pinkie "^2.0.0" 1463 | 1464 | pinkie@^2.0.0: 1465 | version "2.0.4" 1466 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 1467 | 1468 | prelude-ls@~1.1.2: 1469 | version "1.1.2" 1470 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" 1471 | 1472 | preserve@^0.2.0: 1473 | version "0.2.0" 1474 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 1475 | 1476 | process-nextick-args@~1.0.6: 1477 | version "1.0.7" 1478 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 1479 | 1480 | proxy-addr@~1.1.3: 1481 | version "1.1.3" 1482 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074" 1483 | dependencies: 1484 | forwarded "~0.1.0" 1485 | ipaddr.js "1.2.0" 1486 | 1487 | punycode@^1.4.1: 1488 | version "1.4.1" 1489 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1490 | 1491 | qs@6.2.0: 1492 | version "6.2.0" 1493 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b" 1494 | 1495 | qs@6.2.1: 1496 | version "6.2.1" 1497 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" 1498 | 1499 | qs@~6.3.0: 1500 | version "6.3.0" 1501 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442" 1502 | 1503 | randomatic@^1.1.3: 1504 | version "1.1.6" 1505 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" 1506 | dependencies: 1507 | is-number "^2.0.2" 1508 | kind-of "^3.0.2" 1509 | 1510 | range-parser@~1.2.0: 1511 | version "1.2.0" 1512 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" 1513 | 1514 | raw-body@~2.2.0: 1515 | version "2.2.0" 1516 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.2.0.tgz#994976cf6a5096a41162840492f0bdc5d6e7fb96" 1517 | dependencies: 1518 | bytes "2.4.0" 1519 | iconv-lite "0.4.15" 1520 | unpipe "1.0.0" 1521 | 1522 | rc@~1.1.6: 1523 | version "1.1.6" 1524 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9" 1525 | dependencies: 1526 | deep-extend "~0.4.0" 1527 | ini "~1.3.0" 1528 | minimist "^1.2.0" 1529 | strip-json-comments "~1.0.4" 1530 | 1531 | readable-stream@1.1: 1532 | version "1.1.13" 1533 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.13.tgz#f6eef764f514c89e2b9e23146a75ba106756d23e" 1534 | dependencies: 1535 | core-util-is "~1.0.0" 1536 | inherits "~2.0.1" 1537 | isarray "0.0.1" 1538 | string_decoder "~0.10.x" 1539 | 1540 | "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2: 1541 | version "2.2.2" 1542 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.2.tgz#a9e6fec3c7dda85f8bb1b3ba7028604556fc825e" 1543 | dependencies: 1544 | buffer-shims "^1.0.0" 1545 | core-util-is "~1.0.0" 1546 | inherits "~2.0.1" 1547 | isarray "~1.0.0" 1548 | process-nextick-args "~1.0.6" 1549 | string_decoder "~0.10.x" 1550 | util-deprecate "~1.0.1" 1551 | 1552 | readable-stream@~1.0.2: 1553 | version "1.0.34" 1554 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" 1555 | dependencies: 1556 | core-util-is "~1.0.0" 1557 | inherits "~2.0.1" 1558 | isarray "0.0.1" 1559 | string_decoder "~0.10.x" 1560 | 1561 | readable-stream@~2.1.4: 1562 | version "2.1.5" 1563 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" 1564 | dependencies: 1565 | buffer-shims "^1.0.0" 1566 | core-util-is "~1.0.0" 1567 | inherits "~2.0.1" 1568 | isarray "~1.0.0" 1569 | process-nextick-args "~1.0.6" 1570 | string_decoder "~0.10.x" 1571 | util-deprecate "~1.0.1" 1572 | 1573 | readdirp@^2.0.0: 1574 | version "2.1.0" 1575 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 1576 | dependencies: 1577 | graceful-fs "^4.1.2" 1578 | minimatch "^3.0.2" 1579 | readable-stream "^2.0.2" 1580 | set-immediate-shim "^1.0.1" 1581 | 1582 | reflect-metadata@^0.1.3: 1583 | version "0.1.9" 1584 | resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.9.tgz#987238dc87a516895fe457f130435ffbd763a4d4" 1585 | 1586 | regex-cache@^0.4.2: 1587 | version "0.4.3" 1588 | resolved "http://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" 1589 | dependencies: 1590 | is-equal-shallow "^0.1.3" 1591 | is-primitive "^2.0.0" 1592 | 1593 | repeat-element@^1.1.2: 1594 | version "1.1.2" 1595 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 1596 | 1597 | repeat-string@^0.2.2: 1598 | version "0.2.2" 1599 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae" 1600 | 1601 | repeat-string@^1.5.2: 1602 | version "1.6.1" 1603 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 1604 | 1605 | request@^2.55.0, request@^2.79.0: 1606 | version "2.79.0" 1607 | resolved "https://registry.yarnpkg.com/request/-/request-2.79.0.tgz#4dfe5bf6be8b8cdc37fcf93e04b65577722710de" 1608 | dependencies: 1609 | aws-sign2 "~0.6.0" 1610 | aws4 "^1.2.1" 1611 | caseless "~0.11.0" 1612 | combined-stream "~1.0.5" 1613 | extend "~3.0.0" 1614 | forever-agent "~0.6.1" 1615 | form-data "~2.1.1" 1616 | har-validator "~2.0.6" 1617 | hawk "~3.1.3" 1618 | http-signature "~1.1.0" 1619 | is-typedarray "~1.0.0" 1620 | isstream "~0.1.2" 1621 | json-stringify-safe "~5.0.1" 1622 | mime-types "~2.1.7" 1623 | oauth-sign "~0.8.1" 1624 | qs "~6.3.0" 1625 | stringstream "~0.0.4" 1626 | tough-cookie "~2.3.0" 1627 | tunnel-agent "~0.4.1" 1628 | uuid "^3.0.0" 1629 | 1630 | requires-port@1.x.x: 1631 | version "1.0.0" 1632 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 1633 | 1634 | rimraf@2, rimraf@^2.3.3, rimraf@~2.5.1, rimraf@~2.5.4: 1635 | version "2.5.4" 1636 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" 1637 | dependencies: 1638 | glob "^7.0.5" 1639 | 1640 | rxjs@5.0.1: 1641 | version "5.0.1" 1642 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.0.1.tgz#3a69bdf9f0ca0a986303370d4708f72bdfac8356" 1643 | dependencies: 1644 | symbol-observable "^1.0.1" 1645 | 1646 | sax@^1.1.4: 1647 | version "1.2.1" 1648 | resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a" 1649 | 1650 | semver@~4.3.3: 1651 | version "4.3.6" 1652 | resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" 1653 | 1654 | semver@~5.3.0: 1655 | version "5.3.0" 1656 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 1657 | 1658 | send@0.14.2: 1659 | version "0.14.2" 1660 | resolved "https://registry.yarnpkg.com/send/-/send-0.14.2.tgz#39b0438b3f510be5dc6f667a11f71689368cdeef" 1661 | dependencies: 1662 | debug "~2.2.0" 1663 | depd "~1.1.0" 1664 | destroy "~1.0.4" 1665 | encodeurl "~1.0.1" 1666 | escape-html "~1.0.3" 1667 | etag "~1.7.0" 1668 | fresh "0.3.0" 1669 | http-errors "~1.5.1" 1670 | mime "1.3.4" 1671 | ms "0.7.2" 1672 | on-finished "~2.3.0" 1673 | range-parser "~1.2.0" 1674 | statuses "~1.3.1" 1675 | 1676 | serve-static@~1.11.2: 1677 | version "1.11.2" 1678 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.2.tgz#2cf9889bd4435a320cc36895c9aa57bd662e6ac7" 1679 | dependencies: 1680 | encodeurl "~1.0.1" 1681 | escape-html "~1.0.3" 1682 | parseurl "~1.3.1" 1683 | send "0.14.2" 1684 | 1685 | set-blocking@~2.0.0: 1686 | version "2.0.0" 1687 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 1688 | 1689 | set-immediate-shim@^1.0.1: 1690 | version "1.0.1" 1691 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 1692 | 1693 | setprototypeof@1.0.2: 1694 | version "1.0.2" 1695 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" 1696 | 1697 | signal-exit@^3.0.0: 1698 | version "3.0.2" 1699 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 1700 | 1701 | sntp@1.x.x: 1702 | version "1.0.9" 1703 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 1704 | dependencies: 1705 | hoek "2.x.x" 1706 | 1707 | socket.io-adapter@0.5.0: 1708 | version "0.5.0" 1709 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" 1710 | dependencies: 1711 | debug "2.3.3" 1712 | socket.io-parser "2.3.1" 1713 | 1714 | socket.io-client@1.7.2: 1715 | version "1.7.2" 1716 | resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.7.2.tgz#39fdb0c3dd450e321b7e40cfd83612ec533dd644" 1717 | dependencies: 1718 | backo2 "1.0.2" 1719 | component-bind "1.0.0" 1720 | component-emitter "1.2.1" 1721 | debug "2.3.3" 1722 | engine.io-client "1.8.2" 1723 | has-binary "0.1.7" 1724 | indexof "0.0.1" 1725 | object-component "0.0.3" 1726 | parseuri "0.0.5" 1727 | socket.io-parser "2.3.1" 1728 | to-array "0.1.4" 1729 | 1730 | socket.io-parser@2.3.1: 1731 | version "2.3.1" 1732 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" 1733 | dependencies: 1734 | component-emitter "1.1.2" 1735 | debug "2.2.0" 1736 | isarray "0.0.1" 1737 | json3 "3.3.2" 1738 | 1739 | socket.io@^1.4.5: 1740 | version "1.7.2" 1741 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.7.2.tgz#83bbbdf2e79263b378900da403e7843e05dc3b71" 1742 | dependencies: 1743 | debug "2.3.3" 1744 | engine.io "1.8.2" 1745 | has-binary "0.1.7" 1746 | object-assign "4.1.0" 1747 | socket.io-adapter "0.5.0" 1748 | socket.io-client "1.7.2" 1749 | socket.io-parser "2.3.1" 1750 | 1751 | source-map@^0.5.3: 1752 | version "0.5.6" 1753 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412" 1754 | 1755 | source-map@~0.2.0: 1756 | version "0.2.0" 1757 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" 1758 | dependencies: 1759 | amdefine ">=0.0.4" 1760 | 1761 | sshpk@^1.7.0: 1762 | version "1.10.2" 1763 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.2.tgz#d5a804ce22695515638e798dbe23273de070a5fa" 1764 | dependencies: 1765 | asn1 "~0.2.3" 1766 | assert-plus "^1.0.0" 1767 | dashdash "^1.12.0" 1768 | getpass "^0.1.1" 1769 | optionalDependencies: 1770 | bcrypt-pbkdf "^1.0.0" 1771 | ecc-jsbn "~0.1.1" 1772 | jodid25519 "^1.0.0" 1773 | jsbn "~0.1.0" 1774 | tweetnacl "~0.14.0" 1775 | 1776 | "statuses@>= 1.3.1 < 2", statuses@~1.3.0, statuses@~1.3.1: 1777 | version "1.3.1" 1778 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" 1779 | 1780 | string-width@^1.0.1: 1781 | version "1.0.2" 1782 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 1783 | dependencies: 1784 | code-point-at "^1.0.0" 1785 | is-fullwidth-code-point "^1.0.0" 1786 | strip-ansi "^3.0.0" 1787 | 1788 | string_decoder@~0.10.x: 1789 | version "0.10.31" 1790 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 1791 | 1792 | stringstream@~0.0.4: 1793 | version "0.0.5" 1794 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 1795 | 1796 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 1797 | version "3.0.1" 1798 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 1799 | dependencies: 1800 | ansi-regex "^2.0.0" 1801 | 1802 | strip-json-comments@~1.0.4: 1803 | version "1.0.4" 1804 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91" 1805 | 1806 | supports-color@^0.2.0: 1807 | version "0.2.0" 1808 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" 1809 | 1810 | supports-color@^2.0.0: 1811 | version "2.0.0" 1812 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 1813 | 1814 | symbol-observable@^1.0.1: 1815 | version "1.0.4" 1816 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" 1817 | 1818 | "symbol-tree@>= 3.1.0 < 4.0.0": 1819 | version "3.2.1" 1820 | resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.1.tgz#8549dd1d01fa9f893c18cc9ab0b106b4d9b168cb" 1821 | 1822 | systemjs@^0.20.5: 1823 | version "0.20.5" 1824 | resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-0.20.5.tgz#42dca26b521019faaf7c3e30be4e5ca1708841b2" 1825 | 1826 | tar-pack@~3.3.0: 1827 | version "3.3.0" 1828 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" 1829 | dependencies: 1830 | debug "~2.2.0" 1831 | fstream "~1.0.10" 1832 | fstream-ignore "~1.0.5" 1833 | once "~1.3.3" 1834 | readable-stream "~2.1.4" 1835 | rimraf "~2.5.1" 1836 | tar "~2.2.1" 1837 | uid-number "~0.0.6" 1838 | 1839 | tar@~2.2.1: 1840 | version "2.2.1" 1841 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 1842 | dependencies: 1843 | block-stream "*" 1844 | fstream "^1.0.2" 1845 | inherits "2" 1846 | 1847 | to-array@0.1.4: 1848 | version "0.1.4" 1849 | resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" 1850 | 1851 | tough-cookie@^2.2.0, tough-cookie@~2.3.0: 1852 | version "2.3.2" 1853 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 1854 | dependencies: 1855 | punycode "^1.4.1" 1856 | 1857 | tr46@~0.0.1: 1858 | version "0.0.3" 1859 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" 1860 | 1861 | tunnel-agent@~0.4.1: 1862 | version "0.4.3" 1863 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" 1864 | 1865 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 1866 | version "0.14.5" 1867 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 1868 | 1869 | type-check@~0.3.2: 1870 | version "0.3.2" 1871 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" 1872 | dependencies: 1873 | prelude-ls "~1.1.2" 1874 | 1875 | type-is@~1.6.14: 1876 | version "1.6.14" 1877 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2" 1878 | dependencies: 1879 | media-typer "0.3.0" 1880 | mime-types "~2.1.13" 1881 | 1882 | typescript@^2.0.2: 1883 | version "2.2.0" 1884 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.2.0.tgz#626f2fc70087d2480f21ebb12c1888288c8614e3" 1885 | 1886 | uid-number@~0.0.6: 1887 | version "0.0.6" 1888 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 1889 | 1890 | ultron@1.0.x: 1891 | version "1.0.2" 1892 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" 1893 | 1894 | unpipe@1.0.0, unpipe@~1.0.0: 1895 | version "1.0.0" 1896 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1897 | 1898 | useragent@^2.1.6: 1899 | version "2.1.11" 1900 | resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.11.tgz#6a026e6a6c619b46ca7a0b2fdef6c1ac3da8ca29" 1901 | dependencies: 1902 | lru-cache "2.2.x" 1903 | 1904 | util-deprecate@~1.0.1: 1905 | version "1.0.2" 1906 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1907 | 1908 | utils-merge@1.0.0: 1909 | version "1.0.0" 1910 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" 1911 | 1912 | uuid@^3.0.0: 1913 | version "3.0.1" 1914 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" 1915 | 1916 | vary@~1.1.0: 1917 | version "1.1.0" 1918 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140" 1919 | 1920 | verror@1.3.6: 1921 | version "1.3.6" 1922 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" 1923 | dependencies: 1924 | extsprintf "1.0.2" 1925 | 1926 | void-elements@^2.0.0: 1927 | version "2.0.1" 1928 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" 1929 | 1930 | webidl-conversions@^2.0.0: 1931 | version "2.0.1" 1932 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-2.0.1.tgz#3bf8258f7d318c7443c36f2e169402a1a6703506" 1933 | 1934 | whatwg-url-compat@~0.6.5: 1935 | version "0.6.5" 1936 | resolved "https://registry.yarnpkg.com/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz#00898111af689bb097541cd5a45ca6c8798445bf" 1937 | dependencies: 1938 | tr46 "~0.0.1" 1939 | 1940 | which@^1.2.1: 1941 | version "1.2.12" 1942 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" 1943 | dependencies: 1944 | isexe "^1.1.1" 1945 | 1946 | wide-align@^1.1.0: 1947 | version "1.1.0" 1948 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" 1949 | dependencies: 1950 | string-width "^1.0.1" 1951 | 1952 | wordwrap@~0.0.2: 1953 | version "0.0.3" 1954 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" 1955 | 1956 | wordwrap@~1.0.0: 1957 | version "1.0.0" 1958 | resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" 1959 | 1960 | wrappy@1: 1961 | version "1.0.2" 1962 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1963 | 1964 | ws@1.1.1, ws@^1.1.0: 1965 | version "1.1.1" 1966 | resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018" 1967 | dependencies: 1968 | options ">=0.0.5" 1969 | ultron "1.0.x" 1970 | 1971 | wtf-8@1.0.0: 1972 | version "1.0.0" 1973 | resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" 1974 | 1975 | "xml-name-validator@>= 2.0.1 < 3.0.0": 1976 | version "2.0.1" 1977 | resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-2.0.1.tgz#4d8b8f1eccd3419aa362061becef515e1e559635" 1978 | 1979 | xmlhttprequest-ssl@1.5.3: 1980 | version "1.5.3" 1981 | resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" 1982 | 1983 | xtend@^4.0.0: 1984 | version "4.0.1" 1985 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 1986 | 1987 | yeast@0.1.2: 1988 | version "0.1.2" 1989 | resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" 1990 | 1991 | zone.js@^0.7.6: 1992 | version "0.7.6" 1993 | resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.7.6.tgz#fbbc39d3e0261d0986f1ba06306eb3aeb0d22009" 1994 | --------------------------------------------------------------------------------
ng2do