├── .gitignore ├── README.MD ├── imgur_scraping ├── app.js ├── package.json └── scraper.js ├── mean_setup ├── README.md ├── gulpfile.js ├── package.json ├── public │ ├── app │ │ ├── app.component.html │ │ ├── app.component.js │ │ ├── app.component.ts │ │ ├── app.module.js │ │ ├── app.module.ts │ │ ├── app.routing.js │ │ ├── app.routing.ts │ │ ├── main.js │ │ └── main.ts │ ├── assets │ │ └── css │ │ │ └── styles.css │ ├── index.html │ └── systemjs.config.js ├── server.js ├── server │ ├── config │ │ ├── config.js │ │ ├── database.js │ │ ├── env │ │ │ └── development.json │ │ └── express.js │ └── views │ │ └── 404.html └── tsconfig.json ├── mongoose ├── README.md ├── app.js ├── app2.js ├── book.model.js └── package.json ├── ng2_node ├── optionA │ ├── .gitignore │ ├── README.md │ ├── gulpfile.js │ ├── package.json │ ├── public │ │ ├── app │ │ │ ├── app.component.js │ │ │ ├── app.component.ts │ │ │ ├── app.module.js │ │ │ ├── app.module.ts │ │ │ ├── app.routing.js │ │ │ ├── app.routing.ts │ │ │ ├── app.template.html │ │ │ ├── home │ │ │ │ ├── home.component.js │ │ │ │ ├── home.component.ts │ │ │ │ ├── home.styles.css │ │ │ │ └── home.template.html │ │ │ ├── main.js │ │ │ ├── main.ts │ │ │ └── shared │ │ │ │ ├── css │ │ │ │ └── styles.css │ │ │ │ ├── socket.service.js │ │ │ │ └── socket.service.ts │ │ ├── index.html │ │ └── systemjs.config.js │ ├── server.js │ ├── server │ │ └── routes.js │ ├── tsconfig.json │ └── yarn.lock └── optionB │ ├── .gitignore │ ├── README.md │ ├── gulpfile.js │ ├── index.html │ ├── package.json │ ├── public │ ├── app.component.js │ ├── app.component.ts │ ├── app.module.js │ ├── app.module.ts │ ├── app.routing.js │ ├── app.routing.ts │ ├── app.template.html │ ├── home │ │ ├── home.component.js │ │ ├── home.component.ts │ │ ├── home.styles.css │ │ └── home.template.html │ ├── main.js │ ├── main.ts │ └── shared │ │ ├── css │ │ └── styles.css │ │ ├── socket.service.js │ │ └── socket.service.ts │ ├── server.js │ ├── server │ └── routes.js │ ├── systemjs.config.js │ ├── tsconfig.json │ └── yarn.lock └── servers ├── README.md ├── package.json ├── server.js ├── server2.js ├── server_old.js └── views └── index.html /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | typings 3 | node_modules 4 | lib 5 | dist 6 | jspm_packages 7 | link-checker-results.txt 8 | npm-debug.log 9 | **/*npm-debug.log.* 10 | *.js.map 11 | _test-output 12 | _temp 13 | .editorconfig 14 | CHANGELOG.md 15 | app/**/*.js 16 | app/**/*.js.map -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | # NodeJS Examples 2 | 3 | > **servers** folder 4 | - node Server setups using es6 and Classes 5 | - [Video Walk-Through](https://www.youtube.com/watch?v=b4GPyuqBsuA) 6 | 7 | > **mongoose** folder 8 | - using Promises with mongoose 9 | - [Video Walk-Through](https://www.youtube.com/watch?v=Eqhero22-Rg) 10 | 11 | > **mean_setup** folder 12 | - basic MEAN starter using gulp 13 | - [Video Walk-Through](https://www.youtube.com/watch?v=x-l12DWwbUo) 14 | 15 | > **ng2_node** folder 16 | - different options for setting up Angular 2 with Node.js 17 | - [Video Walk-Through](https://www.youtube.com/watch?v=9J-eo1gRJ8s) 18 | 19 | > **imgur_scraping** folder 20 | - scrape imgur using request/cheerio + callback vs promise example 21 | - [Video Walk-Through](https://www.youtube.com/watch?v=5AtGTi3hviQ) -------------------------------------------------------------------------------- /imgur_scraping/app.js: -------------------------------------------------------------------------------- 1 | const scraper = require('./scraper'); 2 | const fs = require('fs'); 3 | const url = 'http://imgur.com/gallery/hj4NW'; 4 | const path = 'text.txt' 5 | 6 | // Callback example 7 | // scraper.imgScrape(url, (data) => { 8 | // console.log('data from scraper received'); 9 | // console.log(data); 10 | // }) 11 | 12 | // Promise example 13 | scraper.imgScrape2(url) 14 | .then((data) => { 15 | console.log('data from scraper received '); 16 | fs.writeFile(path, JSON.stringify(data), (error) => { 17 | if(error) { 18 | console.log(error); 19 | } 20 | console.log('Successfully wrote to ' + path); 21 | }) 22 | }) 23 | .catch((error) => { 24 | console.log('error scraping data'); 25 | }) -------------------------------------------------------------------------------- /imgur_scraping/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "imgur", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "app.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "cheerio": "^0.22.0", 13 | "request": "^2.81.0" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /imgur_scraping/scraper.js: -------------------------------------------------------------------------------- 1 | const request = require('request'); 2 | const cheerio = require('cheerio'); 3 | 4 | // Callback Example 5 | exports.imgScrape = (url, cb) => { 6 | request(url, (error, resp, body) => { 7 | if(error) { 8 | cb({ 9 | error: error 10 | }); 11 | } 12 | let $ = cheerio.load(body); 13 | let $url = url; 14 | let $img = $('.post-image img').attr('src'); 15 | let $title = $('.post-title').text(); 16 | let $desc = $('[itemprop=description]').text(); 17 | 18 | let image = { 19 | url: $url, 20 | img: "http:" + $img, 21 | title: $title, 22 | description: $desc 23 | } 24 | 25 | // respond with the final JSON 26 | console.log('scraped from scraper.js ', image); 27 | cb(image); 28 | 29 | }); 30 | } 31 | 32 | // Promise Example 33 | exports.imgScrape2 = (url) => { 34 | return new Promise((resolve, reject) => { 35 | request(url, (error, resp, body) => { 36 | if(error) { 37 | reject(error); 38 | } 39 | let $ = cheerio.load(body); 40 | let $url = url; 41 | let $img = $('.post-image img').attr('src'); 42 | let $title = $('.post-title').text(); 43 | let $desc = $('[itemprop=description]').text(); 44 | 45 | let image = { 46 | url: $url, 47 | img: "http:" + $img, 48 | title: $title, 49 | description: $desc 50 | } 51 | 52 | // respond with the final JSON 53 | console.log('scraped from scraper.js ', image); 54 | resolve(image); 55 | 56 | }); 57 | }) 58 | } -------------------------------------------------------------------------------- /mean_setup/README.md: -------------------------------------------------------------------------------- 1 | ## MEAN Starter## 2 | 3 | > minimal setup to start hacking MEAN stack apps 4 | 5 | ## How To Use## 6 | npm install 7 | 8 | gulp copy:libs 9 | 10 | npm start 11 | 12 | running on localhost:3000 13 | 14 | -------------------------------------------------------------------------------- /mean_setup/gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'), 2 | sass = require('gulp-sass'), 3 | csso = require('gulp-csso'), 4 | uglify = require('gulp-uglify'), 5 | concat = require('gulp-concat'), 6 | plumber = require('gulp-plumber'), 7 | del = require('del'), 8 | sequence = require('run-sequence'), 9 | jsPath = 'public/app', 10 | jsDist = 'public/dist', 11 | cssPath = 'public/assets/css', 12 | cssDist = 'public/assets/css/dist', 13 | libPath = 'public/lib', 14 | nodeModulesPath = 'node_modules'; 15 | 16 | gulp.task('sass', function() { 17 | gulp.src(cssPath + '/*.scss') 18 | .pipe(plumber()) 19 | .pipe(sass({ errLogToConsole: true })) 20 | .pipe(csso()) 21 | .pipe(gulp.dest(cssDist)); 22 | }); 23 | 24 | gulp.task('clean', function () { 25 | return del(libPath + '/**/*', { force: true }); 26 | }); 27 | 28 | gulp.task('copy:libs', function (done) { 29 | sequence('clean', 'copy:vendor', 'copy:rxjs', 'copy:angular', 'copy:bootstrap', done); 30 | }); 31 | 32 | gulp.task('copy:vendor', function() { 33 | return gulp.src([ 34 | nodeModulesPath + '/core-js/client/**/*', 35 | nodeModulesPath + '/zone.js/dist/zone.js', 36 | nodeModulesPath + '/reflect-metadata/**/*', 37 | nodeModulesPath + '/systemjs/dist/system-polyfills.js', 38 | nodeModulesPath + '/systemjs/dist/system.src.js' 39 | ]) 40 | .pipe(gulp.dest(libPath)); 41 | }); 42 | 43 | gulp.task('copy:rxjs', function() { 44 | return gulp.src([ 45 | nodeModulesPath + '/rxjs/**/*' 46 | ]) 47 | .pipe(gulp.dest(libPath + '/rxjs')); 48 | }); 49 | 50 | gulp.task('copy:angular', function() { 51 | return gulp 52 | .src([nodeModulesPath + '/@angular/**/*']) 53 | .pipe(gulp.dest(libPath + '/@angular')); 54 | }); 55 | 56 | gulp.task('copy:bootstrap', function() { 57 | return gulp 58 | .src([nodeModulesPath + '/bootstrap/**/*']) 59 | .pipe(gulp.dest(libPath + '/bootstrap')); 60 | }); 61 | 62 | gulp.task('compressScripts', function() { 63 | gulp.src([ 64 | jsPath + '/**/*.js' 65 | ]) 66 | .pipe(concat('scripts.min.js')) 67 | .pipe(uglify()) 68 | .pipe(gulp.dest(jsDist)); 69 | }); 70 | 71 | gulp.task('watch', function() { 72 | 73 | gulp.watch(cssPath + '/*.scss', ['sass']); 74 | 75 | gulp.watch([ 76 | jsPath + '/**/*.js', ['compressScripts'] 77 | ]); 78 | 79 | }); 80 | 81 | gulp.task('default', ['sass', 'compressScripts', 'watch']); 82 | 83 | -------------------------------------------------------------------------------- /mean_setup/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mean_setup", 3 | "version": "1.0.0", 4 | "repository": { 5 | "url": "" 6 | }, 7 | "license": "MIT", 8 | "scripts": { 9 | "tsc": "tsc", 10 | "tsc:w": "tsc -w", 11 | "server": "node server.js", 12 | "start": "concurrently \"npm run tsc:w\" \"nodemon server.js\"" 13 | }, 14 | "dependencies": { 15 | "@angular/common": "~2.3.0", 16 | "@angular/compiler": "~2.3.0", 17 | "@angular/core": "~2.3.0", 18 | "@angular/forms": "~2.3.0", 19 | "@angular/http": "~2.3.0", 20 | "@angular/platform-browser": "~2.3.0", 21 | "@angular/platform-browser-dynamic": "~2.3.0", 22 | "@angular/router": "~3.3.0", 23 | "@angular/upgrade": "2.2.0", 24 | "bootstrap": "^4.0.0-alpha.5", 25 | 26 | "angular-in-memory-web-api": "~0.2.1", 27 | "systemjs": "0.19.40", 28 | "core-js": "^2.4.1", 29 | "reflect-metadata": "^0.1.8", 30 | "rxjs": "5.0.0-rc.4", 31 | "zone.js": "0.7.2", 32 | 33 | "body-parser": "^1.15.2", 34 | "compression": "1.6.0", 35 | "cookie-parser": "^1.4.3", 36 | "connect-mongo": "1.3.2", 37 | "csurf": "^1.9.0", 38 | "ejs": "2.5.2", 39 | "errorhandler": "^1.5.0", 40 | "express": "^4.14.0", 41 | "express-session": "^1.14.2", 42 | "method-override": "2.3.6", 43 | "mongoose": "^4.6.8", 44 | "morgan": "~1.7.0", 45 | "serve-favicon": "~2.3.2" 46 | }, 47 | "devDependencies": { 48 | "concurrently": "^3.1.0", 49 | "lite-server": "^2.2.2", 50 | "typescript": "2.0.10", 51 | 52 | "del": "^2.2.2", 53 | "gulp": "^3.9.1", 54 | "gulp-concat": "^2.6.1", 55 | "gulp-csso": "^2.0.0", 56 | "gulp-plumber": "^1.1.0", 57 | "gulp-sass": "^2.3.2", 58 | "gulp-uglify": "^2.0.0", 59 | "run-sequence": "^1.2.2", 60 | 61 | "@types/core-js": "^0.9.34", 62 | "@types/node": "^6.0.48" 63 | } 64 | } -------------------------------------------------------------------------------- /mean_setup/public/app/app.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

{{ title }}

4 |

Lalalal is a modified jumbotron that occupies the entire horizontal space of its parent.

5 |
6 |
-------------------------------------------------------------------------------- /mean_setup/public/app/app.component.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var AppComponent = (function () { 13 | function AppComponent() { 14 | this.title = "My MEAN Setup"; 15 | } 16 | AppComponent = __decorate([ 17 | core_1.Component({ 18 | moduleId: module.id, 19 | selector: 'mt-app', 20 | templateUrl: 'app.component.html' 21 | }), 22 | __metadata('design:paramtypes', []) 23 | ], AppComponent); 24 | return AppComponent; 25 | }()); 26 | exports.AppComponent = AppComponent; 27 | //# sourceMappingURL=app.component.js.map -------------------------------------------------------------------------------- /mean_setup/public/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | moduleId: module.id, 5 | selector: 'mt-app', 6 | templateUrl: 'app.component.html' 7 | }) 8 | 9 | export class AppComponent { 10 | 11 | title: string = "My MEAN Setup"; 12 | } -------------------------------------------------------------------------------- /mean_setup/public/app/app.module.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var platform_browser_1 = require('@angular/platform-browser'); 13 | var forms_1 = require('@angular/forms'); 14 | var app_component_1 = require('./app.component'); 15 | var AppModule = (function () { 16 | function AppModule() { 17 | } 18 | AppModule = __decorate([ 19 | core_1.NgModule({ 20 | imports: [platform_browser_1.BrowserModule, 21 | forms_1.FormsModule], 22 | declarations: [app_component_1.AppComponent 23 | ], 24 | bootstrap: [app_component_1.AppComponent] 25 | }), 26 | __metadata('design:paramtypes', []) 27 | ], AppModule); 28 | return AppModule; 29 | }()); 30 | exports.AppModule = AppModule; 31 | //# sourceMappingURL=app.module.js.map -------------------------------------------------------------------------------- /mean_setup/public/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | import { FormsModule } from '@angular/forms'; 4 | import { AppComponent } from './app.component'; 5 | 6 | @NgModule({ 7 | imports: [ BrowserModule, 8 | FormsModule ], 9 | declarations: [ AppComponent 10 | ], 11 | bootstrap: [ AppComponent ] 12 | }) 13 | 14 | export class AppModule { } -------------------------------------------------------------------------------- /mean_setup/public/app/app.routing.js: -------------------------------------------------------------------------------- 1 | //# sourceMappingURL=app.routing.js.map -------------------------------------------------------------------------------- /mean_setup/public/app/app.routing.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jakblak/nodeJS_examples/5a0291d0789335dd9cc358b4e613a11ff7b461db/mean_setup/public/app/app.routing.ts -------------------------------------------------------------------------------- /mean_setup/public/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_module_1 = require('./app.module'); 4 | var platform = platform_browser_dynamic_1.platformBrowserDynamic(); 5 | platform.bootstrapModule(app_module_1.AppModule); 6 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /mean_setup/public/app/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | import { AppModule } from './app.module'; 3 | 4 | const platform = platformBrowserDynamic(); 5 | 6 | platform.bootstrapModule(AppModule); -------------------------------------------------------------------------------- /mean_setup/public/assets/css/styles.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jakblak/nodeJS_examples/5a0291d0789335dd9cc358b4e613a11ff7b461db/mean_setup/public/assets/css/styles.css -------------------------------------------------------------------------------- /mean_setup/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | MEAN Trello App 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /mean_setup/public/systemjs.config.js: -------------------------------------------------------------------------------- 1 | (function(global) { 2 | 3 | // map tells the System loader where to look for things 4 | var map = { 5 | 'app': 'app', // 'dist', 6 | '@angular': 'lib/@angular', 7 | 'rxjs': 'lib/rxjs' 8 | }; 9 | 10 | // packages tells the System loader how to load when no filename and/or no extension 11 | var packages = { 12 | 'app': { main: 'main.js', defaultExtension: 'js' }, 13 | 'rxjs': { defaultExtension: 'js' } 14 | }; 15 | 16 | var ngPackageNames = [ 17 | 'common', 18 | 'compiler', 19 | 'core', 20 | 'forms', 21 | 'http', 22 | 'platform-browser', 23 | 'platform-browser-dynamic', 24 | 'router', 25 | 'upgrade', 26 | ]; 27 | 28 | // Individual files (~300 requests): 29 | function packIndex(pkgName) { 30 | packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' }; 31 | } 32 | 33 | // Bundled (~40 requests): 34 | function packUmd(pkgName) { 35 | packages['@angular/'+pkgName] = { main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js' }; 36 | } 37 | 38 | // Most environments should use UMD; some (Karma) need the individual index files 39 | var setPackageConfig = System.packageWithIndex ? packIndex : packUmd; 40 | // Add package entries for angular packages 41 | ngPackageNames.forEach(setPackageConfig); 42 | 43 | var config = { 44 | map: map, 45 | packages: packages 46 | }; 47 | 48 | System.config(config); 49 | 50 | })(this); -------------------------------------------------------------------------------- /mean_setup/server.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Entry point to Node server 3 | */ 4 | 5 | // Set default node environment to development 6 | process.env.NODE_ENV = process.env.NODE_ENV || 'development'; 7 | 8 | // Load the module dependencies 9 | const initDatabase = require('./server/config/database'); 10 | const configureExpress = require('./server/config/express'); 11 | // const configurePassport = require('.server/config/passport'); 12 | const port = 3000; 13 | 14 | // Open DB and create a new Mongoose connection instance 15 | const db = initDatabase(); 16 | 17 | // Create a new Express application instance 18 | const app = configureExpress(db); 19 | 20 | // Configure the Passport middleware 21 | // const passport = configurePassport(); 22 | 23 | // Use the Express application instance to listen to the '3000' port 24 | app.listen(port, (err) => { 25 | console.log('[%s] Listening on http://localhost:%d', process.env.NODE_ENV, port); 26 | }); 27 | 28 | // Use the module.exports property to expose our Express application instance for external usage 29 | module.exports = app; -------------------------------------------------------------------------------- /mean_setup/server/config/config.js: -------------------------------------------------------------------------------- 1 | // Load the correct configuration file according to the 'NODE_ENV' variable 2 | 'use strict'; 3 | 4 | if (!process.env.NODE_ENV) process.env.NODE_ENV = 'development'; 5 | 6 | const env = process.env.NODE_ENV; 7 | 8 | console.log(`Node environment: ${env}`); 9 | console.log(`loading config.${env}.json`); 10 | 11 | module.exports = require(`./env/${env}.json`); -------------------------------------------------------------------------------- /mean_setup/server/config/database.js: -------------------------------------------------------------------------------- 1 | // Module dependencies 2 | const mongoose = require('mongoose'); 3 | const dbConfig = require('./config').databaseConfig; 4 | const connectionString = 'mongodb://' + dbConfig.host + '/' + dbConfig.database; 5 | 6 | // Define the Mongoose configuration method 7 | module.exports = function() { 8 | 9 | // Use Mongoose to connect to MongoDB 10 | // function open() { 11 | // mongoose.connect(connectionString); 12 | // mongoose.connection.on('open', () => { 13 | // console.log('We have connected to mongodb'); 14 | // }); 15 | // } 16 | 17 | const db = mongoose.connect(connectionString); 18 | 19 | // Load the 'User' model 20 | // require('../app/models/user.server.model'); 21 | // require('../app/models/article.server.model'); 22 | 23 | // Return the Mongoose connection instance 24 | return db; 25 | }; -------------------------------------------------------------------------------- /mean_setup/server/config/env/development.json: -------------------------------------------------------------------------------- 1 | { 2 | "databaseConfig": { 3 | "host": "localhost", 4 | "database": "mean-trello", 5 | "sessionSecret": "developmentSessionSecret" 6 | } 7 | } -------------------------------------------------------------------------------- /mean_setup/server/config/express.js: -------------------------------------------------------------------------------- 1 | // Load the module dependencies 2 | const config = require('./config'); 3 | const path = require('path'); 4 | const express = require('express'); 5 | const morgan = require('morgan'); 6 | const compress = require('compression'); 7 | const bodyParser = require('body-parser'); 8 | const cookieParser = require('cookie-parser'); 9 | const errorhandler = require('errorhandler'); 10 | const csrf = require('csurf'); 11 | const methodOverride = require('method-override'); 12 | const session = require('express-session'); 13 | const MongoStore = require('connect-mongo')(session); 14 | 15 | // Define the Express configuration method 16 | module.exports = function(db) { 17 | // Create a new Express application instance 18 | const app = express(); 19 | 20 | // Use the 'NODE_ENV' variable to activate the 'morgan' logger or 'compress' middleware 21 | if (process.env.NODE_ENV === 'development') { 22 | app.use(morgan('dev')); 23 | } else if (process.env.NODE_ENV === 'production') { 24 | app.use(compress()); 25 | } 26 | 27 | // Use the 'body-parser' and 'method-override' middleware functions 28 | app.use(bodyParser.urlencoded({ 29 | extended: true 30 | })); 31 | app.use(bodyParser.json()); 32 | app.use(methodOverride()); 33 | app.use(errorhandler()); 34 | app.use(cookieParser()); 35 | app.use(csrf({ cookie: true })); 36 | 37 | app.use(function (req, res, next) { 38 | var csrfToken = req.csrfToken(); 39 | res.locals._csrf = csrfToken; 40 | res.cookie('XSRF-TOKEN', csrfToken); 41 | next(); 42 | }); 43 | 44 | // Configure the MongoDB session storage 45 | const mongoStore = new MongoStore({ 46 | mongooseConnection: db.connection 47 | }); 48 | 49 | // Configure the 'session' middleware 50 | app.use(session({ 51 | name: 'sid', 52 | saveUninitialized: false, 53 | resave: true, 54 | secret: "416351*&(^&*FJIAS", 55 | // secret: process.env.sessionSecret, 56 | store: mongoStore 57 | })); 58 | 59 | // Set the application view engine and 'views' folder 60 | app.set('views', './server/views'); 61 | app.set('view engine', 'ejs'); 62 | 63 | // Configure static file serving 64 | app.use('/', express.static(path.resolve('./public'))); 65 | 66 | // Load the routing files 67 | // require('../app/routes/users.server.routes.js')(app); 68 | 69 | // Return the Server instance 70 | return app; 71 | }; -------------------------------------------------------------------------------- /mean_setup/server/views/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Page Not Found :( 6 | 141 | 142 | 143 |
144 |

Not found :(

145 |

Sorry, but the page you were trying to view does not exist.

146 |

It looks like this was the result of either:

147 | 151 | 154 | 155 |
156 | 157 | 158 | -------------------------------------------------------------------------------- /mean_setup/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "removeComments": false, 10 | "noImplicitAny": true, 11 | "suppressImplicitAnyIndexErrors": true 12 | }, 13 | "exclude": [ 14 | "node_modules", 15 | "public/lib" 16 | ] 17 | } -------------------------------------------------------------------------------- /mongoose/README.md: -------------------------------------------------------------------------------- 1 | # CRUD examples using Mongoose 2 | 3 | - added Promise example to app2.js -------------------------------------------------------------------------------- /mongoose/app.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const app = express(); 3 | const bodyParser = require('body-parser'); 4 | const mongoose = require('mongoose'); 5 | const Book = require('./Book.model'); 6 | 7 | const port = 8080; 8 | const db = 'mongodb://localhost/example'; 9 | 10 | mongoose.connect(db); 11 | 12 | app.use(bodyParser.json()); 13 | app.use(bodyParser.urlencoded({ 14 | extended: true 15 | })); 16 | 17 | app.get('/', (req, res) => 18 | res.send('happy to be here')); 19 | 20 | app.get('/books', (req, res) => { 21 | console.log('getting all books'); 22 | Book.find({}) 23 | .exec((err, books) => { 24 | if(err) { 25 | res.send('error occured') 26 | } else { 27 | console.log(books); 28 | res.json(books); 29 | } 30 | }) 31 | }); 32 | 33 | app.get('/books/:id', (req, res) => 34 | // console.log('getting all books'); 35 | Book.findOne({ 36 | _id: req.params.id 37 | }) 38 | .exec((err, books) => { 39 | if(err) { 40 | res.send('error occured') 41 | } else { 42 | console.log(books); 43 | res.json(books); 44 | } 45 | })); 46 | 47 | app.post('/book', (req, res) => { 48 | let newBook = new Book(); 49 | 50 | newBook.title = req.body.title; 51 | newBook.author = req.body.author; 52 | newBook.category = req.body.category; 53 | 54 | newBook.save((err, book) => { 55 | if(err) { 56 | res.send('error saving book'); 57 | } else { 58 | console.log(book); 59 | res.send(book); 60 | } 61 | }) 62 | }); 63 | 64 | app.post('/book2', (req, res) => 65 | Book.create(req.body, (err, book) => { 66 | if(err) { 67 | res.send('error saving book'); 68 | } else { 69 | console.log(book); 70 | res.send(book); 71 | } 72 | })); 73 | 74 | app.put('/book/:id', (req, res) => 75 | Book.findOneAndUpdate({ 76 | _id: req.params.id 77 | }, 78 | { $set: { title: req.body.title } 79 | }, {upsert: true}, (err, newBook) => { 80 | if (err) { 81 | res.send('error updating '); 82 | } else { 83 | console.log(newBook); 84 | res.send(newBook); 85 | } 86 | })); 87 | 88 | app.delete('/book/:id', (req, res) => 89 | Book.findOneAndRemove({ 90 | _id: req.params.id 91 | }, (err, book) => { 92 | if(err) { 93 | res.send('error removing') 94 | } else { 95 | console.log(book); 96 | res.status(204); 97 | } 98 | })); 99 | 100 | app.listen(port, () => 101 | console.log('app listening on port ' + port)); -------------------------------------------------------------------------------- /mongoose/app2.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const app = express(); 3 | const bodyParser = require('body-parser'); 4 | const mongoose = require('mongoose'); 5 | const Book = require('./Book.model'); 6 | 7 | const port = 8080; 8 | const db = 'mongodb://localhost/example'; 9 | 10 | // Use native ES6 promises 11 | mongoose.Promise = global.Promise; 12 | mongoose.connect(db); 13 | 14 | // connect to mongo function 15 | // const open = () => { 16 | // let connection = mongoose.connection; 17 | // mongoose.Promise = global.Promise; 18 | // mongoose.connect(db); 19 | // mongoose.connection.on('open', () => { 20 | // console.log('We have connected to mongodb'); 21 | // }); 22 | // return connection; 23 | // }; 24 | 25 | // open(); 26 | 27 | app.use(bodyParser.json()); 28 | app.use(bodyParser.urlencoded({ 29 | extended: true 30 | })); 31 | 32 | app.get('/', (req, res) => 33 | res.send('happy to be here')); 34 | 35 | app.get('/books', (req, res) => { 36 | console.log('getting all books'); 37 | Book.find({}) 38 | .exec((err, books) => { 39 | if(err) { 40 | res.send('error occured') 41 | } else { 42 | console.log(books); 43 | res.json(books); 44 | } 45 | }) 46 | }); 47 | 48 | // app.get('/books', (req, res) => { 49 | // console.log('getting all books'); 50 | // Book.find({}) 51 | // .exec((err, books) => { 52 | // if(err) { 53 | // res.send('error occured') 54 | // } else { 55 | // console.log(books); 56 | // res.json(books); 57 | // } 58 | // }) 59 | // }); 60 | 61 | // Promise Example 62 | app.get('/books', (req, res) => { 63 | console.log('getting all books'); 64 | Book.find({}) 65 | .exec() 66 | .then((books) => { 67 | console(books); 68 | res.json(books); 69 | }) 70 | .catch((err) => { 71 | res.send('error occured'); 72 | }); 73 | }); 74 | 75 | app.get('/books/:id', (req, res) => 76 | // console.log('getting all books'); 77 | Book.findOne({ 78 | _id: req.params.id 79 | }) 80 | .exec((err, books) => { 81 | if(err) { 82 | res.send('error occured') 83 | } else { 84 | console.log(books); 85 | res.json(books); 86 | } 87 | })); 88 | 89 | app.post('/book', (req, res) => { 90 | let newBook = new Book(); 91 | 92 | newBook.title = req.body.title; 93 | newBook.author = req.body.author; 94 | newBook.category = req.body.category; 95 | 96 | newBook.save((err, book) => { 97 | if(err) { 98 | res.send('error saving book'); 99 | } else { 100 | console.log(book); 101 | res.send(book); 102 | } 103 | }) 104 | }); 105 | 106 | app.post('/book2', (req, res) => 107 | Book.create(req.body, (err, book) => { 108 | if(err) { 109 | res.send('error saving book'); 110 | } else { 111 | console.log(book); 112 | res.send(book); 113 | } 114 | })); 115 | 116 | app.put('/book/:id', (req, res) => 117 | Book.findOneAndUpdate({ 118 | _id: req.params.id 119 | }, 120 | { $set: { title: req.body.title } 121 | }, {upsert: true}, (err, newBook) => { 122 | if (err) { 123 | res.send('error updating '); 124 | } else { 125 | console.log(newBook); 126 | res.send(newBook); 127 | } 128 | })); 129 | 130 | app.delete('/book/:id', (req, res) => 131 | Book.findOneAndRemove({ 132 | _id: req.params.id 133 | }, (err, book) => { 134 | if(err) { 135 | res.send('error removing') 136 | } else { 137 | console.log(book); 138 | res.status(204); 139 | } 140 | })); 141 | 142 | app.listen(port, () => 143 | console.log('app listening on port ' + port)); -------------------------------------------------------------------------------- /mongoose/book.model.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | var Schema = mongoose.Schema; 3 | 4 | var BookSchema = new Schema({ 5 | title: String, 6 | author: String, 7 | category: String 8 | }); 9 | 10 | module.exports = mongoose.model('Book', BookSchema); -------------------------------------------------------------------------------- /mongoose/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mongoose_app", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "app.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "body-parser": "^1.15.2", 13 | "express": "^4.14.0", 14 | "mongoose": "^4.7.4" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /ng2_node/optionA/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | typings 3 | node_modules 4 | lib 5 | dist 6 | jspm_packages 7 | link-checker-results.txt 8 | npm-debug.log 9 | **/*npm-debug.log.* 10 | *.js.map 11 | _test-output 12 | _temp 13 | .editorconfig 14 | CHANGELOG.md 15 | app/**/*.js 16 | app/**/*.js.map -------------------------------------------------------------------------------- /ng2_node/optionA/README.md: -------------------------------------------------------------------------------- 1 | ## Node + Angular 2 with 1 server 2 | 3 | ## Run the project 4 | - `npm i` or `yarn` 5 | - `gulp` 6 | - command prompt 1 type `tsc` to compile Typescript files 7 | - command prompt 2 type `nodemon server.js` or `node server.js` 8 | 9 | ### Navigate to port 8000 10 | 11 | - includes socket.io setup -------------------------------------------------------------------------------- /ng2_node/optionA/gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'), 2 | del = require('del'), 3 | sequence = require('run-sequence'), 4 | libPath = 'public/lib', 5 | nodeModulesPath = 'node_modules'; 6 | 7 | gulp.task('clean', function () { 8 | return del(libPath + '/**/*', { force: true }); 9 | }); 10 | 11 | gulp.task('copy:libs', function (done) { 12 | sequence('clean', 'copy:vendor', 'copy:rxjs', 'copy:angular', 'copy:bootstrap', 'copy:socketIO', done); 13 | }); 14 | 15 | gulp.task('copy:vendor', function() { 16 | return gulp 17 | .src([ 18 | nodeModulesPath + '/core-js/client/**/*', 19 | nodeModulesPath + '/zone.js/dist/zone.js', 20 | nodeModulesPath + '/reflect-metadata/**/*', 21 | nodeModulesPath + '/systemjs/dist/system-polyfills.js', 22 | nodeModulesPath + '/systemjs/dist/system.src.js']) 23 | .pipe(gulp.dest(libPath)); 24 | }); 25 | 26 | gulp.task('copy:rxjs', function() { 27 | return gulp 28 | .src([nodeModulesPath + '/rxjs/**/*']) 29 | .pipe(gulp.dest(libPath + '/rxjs')); 30 | }); 31 | 32 | gulp.task('copy:angular', function() { 33 | return gulp 34 | .src([nodeModulesPath + '/@angular/**/*']) 35 | .pipe(gulp.dest(libPath + '/@angular')); 36 | }); 37 | 38 | gulp.task('copy:bootstrap', function() { 39 | return gulp 40 | .src([nodeModulesPath + '/bootstrap/**/*']) 41 | .pipe(gulp.dest(libPath + '/bootstrap')); 42 | }); 43 | 44 | gulp.task('copy:socketIO', function() { 45 | return gulp 46 | .src([nodeModulesPath + '/socket.io-client/**/*']) 47 | .pipe(gulp.dest(libPath + '/socket.io-client')); 48 | }); 49 | 50 | gulp.task('default', ['copy:libs']); -------------------------------------------------------------------------------- /ng2_node/optionA/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular2-socket.io", 3 | "version": "1.0.0", 4 | "description": "Simple chat app using socket.io, angular 2 and a node.js web server", 5 | "scripts": { 6 | "start": "tsc && concurrently \"tsc -w\" \"lite-server\" ", 7 | "lite": "lite-server", 8 | "postinstall": "typings install", 9 | "tsc": "tsc", 10 | "tsc:w": "tsc -w", 11 | "typings": "typings" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "license": "MIT", 16 | "dependencies": { 17 | "@angular/common": "~2.4.0", 18 | "@angular/compiler": "~2.4.0", 19 | "@angular/core": "~2.4.0", 20 | "@angular/forms": "~2.4.0", 21 | "@angular/http": "~2.4.0", 22 | "@angular/platform-browser": "~2.4.0", 23 | "@angular/platform-browser-dynamic": "~2.4.0", 24 | "@angular/router": "~3.4.0", 25 | "@angular/upgrade": "^2.4.9", 26 | "@types/socket.io": "^1.4.28", 27 | "angular-in-memory-web-api": "~0.2.4", 28 | "bootstrap": "^3.3.7", 29 | "core-js": "^2.4.1", 30 | "express": "^4.13.4", 31 | "path": "^0.12.7", 32 | "rxjs": "5.0.1", 33 | "socket.io": "1.4.5", 34 | "systemjs": "0.19.40", 35 | "zone.js": "^0.7.4" 36 | }, 37 | "devDependencies": { 38 | "concurrently": "^3.2.0", 39 | "lite-server": "^2.2.2", 40 | "typescript": "~2.0.10", 41 | "@types/node": "^6.0.46", 42 | "@types/jasmine": "2.5.36", 43 | "@types/socket.io-client": "1.4.29", 44 | "del": "^2.2.2", 45 | "gulp": "^3.9.1", 46 | "run-sequence": "^1.2.2" 47 | }, 48 | "repository": {} 49 | } 50 | -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/app.component.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var AppComponent = (function () { 13 | function AppComponent() { 14 | this.appName = "Angular 2 Chat App"; 15 | } 16 | AppComponent = __decorate([ 17 | core_1.Component({ 18 | moduleId: module.id, 19 | selector: 'ch-app', 20 | templateUrl: 'app.template.html' 21 | }), 22 | __metadata('design:paramtypes', []) 23 | ], AppComponent); 24 | return AppComponent; 25 | }()); 26 | exports.AppComponent = AppComponent; 27 | //# sourceMappingURL=app.component.js.map -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | moduleId: module.id, 5 | selector: 'ch-app', 6 | templateUrl: 'app.template.html' 7 | }) 8 | 9 | export class AppComponent { 10 | appName: string = "Angular 2 Chat App"; 11 | } 12 | -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/app.module.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var platform_browser_1 = require('@angular/platform-browser'); 13 | var forms_1 = require('@angular/forms'); 14 | var app_component_1 = require('./app.component'); 15 | var home_component_1 = require('./home/home.component'); 16 | var socket_service_1 = require('./shared/socket.service'); 17 | var AppModule = (function () { 18 | function AppModule() { 19 | } 20 | AppModule = __decorate([ 21 | core_1.NgModule({ 22 | imports: [platform_browser_1.BrowserModule, 23 | forms_1.FormsModule 24 | ], 25 | declarations: [app_component_1.AppComponent, 26 | home_component_1.HomeComponent], 27 | providers: [socket_service_1.SocketService], 28 | bootstrap: [app_component_1.AppComponent] 29 | }), 30 | __metadata('design:paramtypes', []) 31 | ], AppModule); 32 | return AppModule; 33 | }()); 34 | exports.AppModule = AppModule; 35 | //# sourceMappingURL=app.module.js.map -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | import { FormsModule } from '@angular/forms'; 4 | 5 | import { AppComponent } from './app.component'; 6 | import { HomeComponent } from './home/home.component'; 7 | 8 | import { SocketService } from './shared/socket.service'; 9 | 10 | @NgModule({ 11 | imports: [ BrowserModule, 12 | FormsModule 13 | ], 14 | declarations: [ AppComponent, 15 | HomeComponent], 16 | providers: [ SocketService ], 17 | bootstrap: [ AppComponent ] 18 | }) 19 | 20 | export class AppModule { } -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/app.routing.js: -------------------------------------------------------------------------------- 1 | //# sourceMappingURL=app.routing.js.map -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/app.routing.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jakblak/nodeJS_examples/5a0291d0789335dd9cc358b4e613a11ff7b461db/ng2_node/optionA/public/app/app.routing.ts -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/app.template.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/home/home.component.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var io = require('socket.io-client'); 13 | var HomeComponent = (function () { 14 | function HomeComponent() { 15 | // this.socket = io.connect('http://localhost:8000'); 16 | this.socket = io.connect(); 17 | } 18 | HomeComponent.prototype.ngOnInit = function () { 19 | var _this = this; 20 | this.messages = new Array(); 21 | this.socket.on('message-received', function (msg) { 22 | _this.messages.push(msg); 23 | console.log(msg); 24 | console.log(_this.messages); 25 | }); 26 | this.socket.emit('event1', { 27 | msg: 'Client to server, can you hear me server?' 28 | }); 29 | this.socket.on('event2', function (data) { 30 | console.log(data.msg); 31 | _this.socket.emit('event3', { 32 | msg: 'Yes, its working for me!!' 33 | }); 34 | }); 35 | this.socket.on('event4', function (data) { 36 | console.log(data.msg); 37 | }); 38 | }; 39 | HomeComponent.prototype.sendMessage = function () { 40 | var message = { 41 | text: this.messageText 42 | }; 43 | this.socket.emit('send-message', message); 44 | // console.log(message.text); 45 | this.messageText = ''; 46 | }; 47 | HomeComponent = __decorate([ 48 | core_1.Component({ 49 | moduleId: module.id, 50 | selector: 'ch-home', 51 | styleUrls: ['home.styles.css'], 52 | templateUrl: 'home.template.html' 53 | }), 54 | __metadata('design:paramtypes', []) 55 | ], HomeComponent); 56 | return HomeComponent; 57 | }()); 58 | exports.HomeComponent = HomeComponent; 59 | //# sourceMappingURL=home.component.js.map -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import * as io from 'socket.io-client'; 3 | 4 | @Component({ 5 | moduleId: module.id, 6 | selector: 'ch-home', 7 | styleUrls: ['home.styles.css'], 8 | templateUrl: 'home.template.html' 9 | }) 10 | 11 | export class HomeComponent implements OnInit { 12 | messageText: string; 13 | messages: Array; 14 | socket: SocketIOClient.Socket; 15 | 16 | constructor() { 17 | // this.socket = io.connect('http://localhost:8000'); 18 | this.socket = io.connect(); 19 | } 20 | 21 | ngOnInit() { 22 | this.messages = new Array(); 23 | 24 | this.socket.on('message-received', (msg: any) => { 25 | this.messages.push(msg); 26 | console.log(msg); 27 | console.log(this.messages); 28 | }); 29 | this.socket.emit('event1', { 30 | msg: 'Client to server, can you hear me server?' 31 | }); 32 | this.socket.on('event2', (data: any) => { 33 | console.log(data.msg); 34 | this.socket.emit('event3', { 35 | msg: 'Yes, its working for me!!' 36 | }); 37 | }); 38 | this.socket.on('event4', (data: any) => { 39 | console.log(data.msg); 40 | }); 41 | } 42 | 43 | sendMessage() { 44 | const message = { 45 | text: this.messageText 46 | }; 47 | this.socket.emit('send-message', message); 48 | // console.log(message.text); 49 | this.messageText = ''; 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/home/home.styles.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | body { 6 | background-color: #edeff2; 7 | font-family: "Calibri", "Roboto", sans-serif; 8 | } 9 | 10 | .chat_window { 11 | position: absolute; 12 | width: calc(100% - 20px); 13 | max-width: 800px; 14 | height: 500px; 15 | border-radius: 10px; 16 | background-color: #fff; 17 | left: 50%; 18 | top: 50%; 19 | transform: translateX(-50%) translateY(-50%); 20 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15); 21 | background-color: #f8f8f8; 22 | overflow: hidden; 23 | } 24 | 25 | .top_menu { 26 | background-color: #fff; 27 | width: 100%; 28 | padding: 20px 0 15px; 29 | box-shadow: 0 1px 30px rgba(0, 0, 0, 0.1); 30 | } 31 | .top_menu .buttons { 32 | margin: 3px 0 0 20px; 33 | position: absolute; 34 | } 35 | .top_menu .buttons .button { 36 | width: 16px; 37 | height: 16px; 38 | border-radius: 50%; 39 | display: inline-block; 40 | margin-right: 10px; 41 | position: relative; 42 | } 43 | .top_menu .buttons .button.close { 44 | background-color: #f5886e; 45 | } 46 | .top_menu .buttons .button.minimize { 47 | background-color: #fdbf68; 48 | } 49 | .top_menu .buttons .button.maximize { 50 | background-color: #a3d063; 51 | } 52 | .top_menu .title { 53 | text-align: center; 54 | color: #bcbdc0; 55 | font-size: 20px; 56 | } 57 | 58 | .messages { 59 | position: relative; 60 | list-style: none; 61 | padding: 20px 10px 0 10px; 62 | margin: 0; 63 | height: 347px; 64 | overflow: scroll; 65 | } 66 | .messages .message { 67 | clear: both; 68 | overflow: hidden; 69 | margin-bottom: 20px; 70 | transition: all 0.5s linear; 71 | opacity: 0; 72 | } 73 | .messages .message.left .avatar { 74 | background-color: #f5886e; 75 | float: left; 76 | } 77 | .messages .message.left .text_wrapper { 78 | background-color: #ffe6cb; 79 | margin-left: 20px; 80 | } 81 | .messages .message.left .text_wrapper::after, .messages .message.left .text_wrapper::before { 82 | right: 100%; 83 | border-right-color: #ffe6cb; 84 | } 85 | .messages .message.left .text { 86 | color: #c48843; 87 | } 88 | .messages .message.right .avatar { 89 | background-color: #fdbf68; 90 | float: right; 91 | } 92 | .messages .message.right .text_wrapper { 93 | background-color: #c7eafc; 94 | margin-right: 20px; 95 | float: right; 96 | } 97 | .messages .message.right .text_wrapper::after, .messages .message.right .text_wrapper::before { 98 | left: 100%; 99 | border-left-color: #c7eafc; 100 | } 101 | .messages .message.right .text { 102 | color: #45829b; 103 | } 104 | .messages .message.appeared { 105 | opacity: 1; 106 | } 107 | .messages .message .avatar { 108 | width: 60px; 109 | height: 60px; 110 | border-radius: 50%; 111 | display: inline-block; 112 | } 113 | .messages .message .text_wrapper { 114 | display: inline-block; 115 | padding: 20px; 116 | border-radius: 6px; 117 | width: calc(100% - 85px); 118 | min-width: 100px; 119 | position: relative; 120 | } 121 | .messages .message .text_wrapper::after, .messages .message .text_wrapper:before { 122 | top: 18px; 123 | border: solid transparent; 124 | content: " "; 125 | height: 0; 126 | width: 0; 127 | position: absolute; 128 | pointer-events: none; 129 | } 130 | .messages .message .text_wrapper::after { 131 | border-width: 13px; 132 | margin-top: 0px; 133 | } 134 | .messages .message .text_wrapper::before { 135 | border-width: 15px; 136 | margin-top: -2px; 137 | } 138 | .messages .message .text_wrapper .text { 139 | font-size: 18px; 140 | font-weight: 300; 141 | } 142 | 143 | .bottom_wrapper { 144 | position: relative; 145 | width: 100%; 146 | background-color: #fff; 147 | padding: 20px 20px; 148 | position: absolute; 149 | bottom: 0; 150 | } 151 | .bottom_wrapper .message_input_wrapper { 152 | display: inline-block; 153 | height: 50px; 154 | border-radius: 25px; 155 | border: 1px solid #bcbdc0; 156 | width: calc(100% - 160px); 157 | position: relative; 158 | padding: 0 20px; 159 | } 160 | .bottom_wrapper .message_input_wrapper .message_input { 161 | border: none; 162 | height: 100%; 163 | box-sizing: border-box; 164 | width: calc(100% - 40px); 165 | position: absolute; 166 | outline-width: 0; 167 | color: gray; 168 | } 169 | .bottom_wrapper .send_message { 170 | width: 140px; 171 | height: 50px; 172 | display: inline-block; 173 | border-radius: 50px; 174 | background-color: #a3d063; 175 | border: 2px solid #a3d063; 176 | color: #fff; 177 | cursor: pointer; 178 | transition: all 0.2s linear; 179 | text-align: center; 180 | float: right; 181 | } 182 | .bottom_wrapper .send_message:hover { 183 | color: #a3d063; 184 | background-color: #fff; 185 | } 186 | .bottom_wrapper .send_message .text { 187 | font-size: 18px; 188 | font-weight: 300; 189 | display: inline-block; 190 | line-height: 48px; 191 | } 192 | 193 | .message_template { 194 | display: none; 195 | } -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/home/home.template.html: -------------------------------------------------------------------------------- 1 | 37 | 38 |
39 |
40 |
41 | 46 | 47 | 50 | 51 |
52 |
53 |
54 |
55 |
    56 |
  • 57 | 58 |   59 | 60 |   61 | {{ message.text }} 62 |
  • 63 |
64 |
65 |
-------------------------------------------------------------------------------- /ng2_node/optionA/public/app/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_module_1 = require('./app.module'); 4 | platform_browser_dynamic_1.platformBrowserDynamic().bootstrapModule(app_module_1.AppModule); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | import { AppModule } from './app.module'; 3 | 4 | platformBrowserDynamic().bootstrapModule(AppModule); -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/shared/css/styles.css: -------------------------------------------------------------------------------- 1 | /* Navbar */ 2 | .nav .navbar-nav { 3 | font-size: 15px; 4 | } 5 | #searchForm { 6 | margin-right: 100px; 7 | } 8 | @media (max-width: 1200px) { 9 | #searchForm { 10 | display: none; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/shared/socket.service.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var SocketService = (function () { 13 | function SocketService() { 14 | } 15 | SocketService = __decorate([ 16 | core_1.Injectable(), 17 | __metadata('design:paramtypes', []) 18 | ], SocketService); 19 | return SocketService; 20 | }()); 21 | exports.SocketService = SocketService; 22 | //# sourceMappingURL=socket.service.js.map -------------------------------------------------------------------------------- /ng2_node/optionA/public/app/shared/socket.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import * as io from 'socket.io-client'; 3 | 4 | @Injectable() 5 | export class SocketService { 6 | 7 | // constructor() { 8 | // this.socket = io.connect('http://localhost:8000'); 9 | // this.socket.on("connection", () => console.log("this is onl a test")); 10 | // } 11 | 12 | // socket.on('event1', function (data) { 13 | // console.log(data.msg); 14 | // socket.emit('event2', { msg: 'Yes, its working for me !!' }); 15 | // }); 16 | 17 | // on(eventName: any, callback: any) { 18 | // if (this.socket) { 19 | // this.socket.on(eventName, function(data: any) { 20 | // callback(data); 21 | // }); 22 | // } 23 | // }; 24 | 25 | // emit(eventName: any, data: any) { 26 | // if (this.socket) { 27 | // this.socket.emit(eventName, data); 28 | // } 29 | // }; 30 | 31 | // removeListener(eventName: any) { 32 | // if (this.socket) { 33 | // this.socket.removeListener(eventName); 34 | // } 35 | // }; 36 | } 37 | -------------------------------------------------------------------------------- /ng2_node/optionA/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | NG2 Chat App 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 27 | 28 | 29 | 30 | Loading App... 31 | 32 | 33 | -------------------------------------------------------------------------------- /ng2_node/optionA/public/systemjs.config.js: -------------------------------------------------------------------------------- 1 | (function(global) { 2 | 3 | // map tells the System loader where to look for things 4 | var map = { 5 | 'app': 'app', // 'dist', 6 | '@angular': 'lib/@angular', 7 | 'rxjs': 'lib/rxjs', 8 | 'socket.io-client': 'lib/socket.io-client' 9 | }; 10 | 11 | // packages tells the System loader how to load when no filename and/or no extension 12 | var packages = { 13 | 'app': { main: 'main.js', defaultExtension: 'js' }, 14 | 'rxjs': { defaultExtension: 'js' }, 15 | 'socket.io-client': { main: 'socket.io.js'} 16 | }; 17 | 18 | var ngPackageNames = [ 19 | 'common', 20 | 'compiler', 21 | 'core', 22 | 'forms', 23 | 'http', 24 | 'platform-browser', 25 | 'platform-browser-dynamic', 26 | 'router', 27 | 'upgrade', 28 | ]; 29 | 30 | // Individual files (~300 requests): 31 | function packIndex(pkgName) { 32 | packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' }; 33 | } 34 | 35 | // Bundled (~40 requests): 36 | function packUmd(pkgName) { 37 | packages['@angular/'+pkgName] = { main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js' }; 38 | } 39 | 40 | // Most environments should use UMD; some (Karma) need the individual index files 41 | var setPackageConfig = System.packageWithIndex ? packIndex : packUmd; 42 | // Add package entries for angular packages 43 | ngPackageNames.forEach(setPackageConfig); 44 | 45 | var config = { 46 | map: map, 47 | packages: packages 48 | }; 49 | 50 | System.config(config); 51 | 52 | })(this); -------------------------------------------------------------------------------- /ng2_node/optionA/server.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var path = require('path'); 3 | var app = express(); 4 | var server = require('http').Server(app); 5 | var io = require('socket.io')(server); 6 | 7 | var port = 8000; 8 | 9 | app.use(express.static(path.join(__dirname, "public"))); 10 | 11 | io.on('connection', (socket) => { 12 | console.log('new connection made'); 13 | 14 | socket.on('send-message', (data) => { 15 | console.log(data.text); 16 | io.emit('message-received', data); 17 | }); 18 | 19 | socket.on('event1', (data) => { 20 | console.log(data.msg); 21 | }); 22 | 23 | socket.emit('event2', { 24 | msg: 'Server to client, do you read me? Over.' 25 | }); 26 | 27 | socket.on('event3', (data) => { 28 | console.log(data.msg); 29 | socket.emit('event4', { 30 | msg: 'Loud and clear :)' 31 | }); 32 | }); 33 | 34 | }); 35 | 36 | server.listen(port, () => { 37 | console.log("Listening on port " + port); 38 | }); -------------------------------------------------------------------------------- /ng2_node/optionA/server/routes.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jakblak/nodeJS_examples/5a0291d0789335dd9cc358b4e613a11ff7b461db/ng2_node/optionA/server/routes.js -------------------------------------------------------------------------------- /ng2_node/optionA/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "lib": [ "es2015", "dom" ], 10 | "noImplicitAny": true, 11 | "suppressImplicitAnyIndexErrors": true 12 | } 13 | } -------------------------------------------------------------------------------- /ng2_node/optionA/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.0": 6 | version "2.4.9" 7 | resolved "https://registry.yarnpkg.com/@angular/common/-/common-2.4.9.tgz#3094f973e18330526256dcd13fcf27609b7abc08" 8 | 9 | "@angular/compiler@~2.4.0": 10 | version "2.4.9" 11 | resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-2.4.9.tgz#ee159181c4013046598e1d176b45063bddb141f6" 12 | 13 | "@angular/core@~2.4.0": 14 | version "2.4.9" 15 | resolved "https://registry.yarnpkg.com/@angular/core/-/core-2.4.9.tgz#85dca2afa4021be91512c97597702ac8d73092e6" 16 | 17 | "@angular/forms@~2.4.0": 18 | version "2.4.9" 19 | resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-2.4.9.tgz#a1ee9f403267fd78041f9ee77d1c9c24150e1d7c" 20 | 21 | "@angular/http@~2.4.0": 22 | version "2.4.9" 23 | resolved "https://registry.yarnpkg.com/@angular/http/-/http-2.4.9.tgz#a7de980d564ac25a497c5e822d2b941c1f143d48" 24 | 25 | "@angular/platform-browser-dynamic@~2.4.0": 26 | version "2.4.9" 27 | resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-2.4.9.tgz#353b92e8670065ab5b1b6baea3a96928b174ee09" 28 | 29 | "@angular/platform-browser@~2.4.0": 30 | version "2.4.9" 31 | resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-2.4.9.tgz#936139a1e0d280394988473a8a11d922d768f89e" 32 | 33 | "@angular/router@~3.4.0": 34 | version "3.4.9" 35 | resolved "https://registry.yarnpkg.com/@angular/router/-/router-3.4.9.tgz#2525384124140fefae20bf661262b611f28ffc92" 36 | 37 | "@angular/upgrade@^2.4.9": 38 | version "2.4.9" 39 | resolved "https://registry.yarnpkg.com/@angular/upgrade/-/upgrade-2.4.9.tgz#931e1e8413d54cf921b2752cbcc2ce791b7a4966" 40 | 41 | "@types/jasmine@2.5.36": 42 | version "2.5.36" 43 | resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.36.tgz#6d804b79a57e9380d766a2680e9362c17d9556d2" 44 | 45 | "@types/node@*", "@types/node@^6.0.46": 46 | version "6.0.65" 47 | resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.65.tgz#c00faa7ffcfc9842b5dd7bf650872562504d5670" 48 | 49 | "@types/socket.io-client@1.4.29": 50 | version "1.4.29" 51 | resolved "https://registry.yarnpkg.com/@types/socket.io-client/-/socket.io-client-1.4.29.tgz#f8743070cee93175e36e0b6a77a8af73e58ccb32" 52 | 53 | "@types/socket.io@^1.4.28": 54 | version "1.4.28" 55 | resolved "https://registry.yarnpkg.com/@types/socket.io/-/socket.io-1.4.28.tgz#52ff4a45ee7b58d275af13ced3947487ede07a1b" 56 | dependencies: 57 | "@types/node" "*" 58 | 59 | abbrev@1: 60 | version "1.1.0" 61 | resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f" 62 | 63 | accepts@1.1.4: 64 | version "1.1.4" 65 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.1.4.tgz#d71c96f7d41d0feda2c38cd14e8a27c04158df4a" 66 | dependencies: 67 | mime-types "~2.0.4" 68 | negotiator "0.4.9" 69 | 70 | accepts@1.3.3, accepts@~1.3.3: 71 | version "1.3.3" 72 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca" 73 | dependencies: 74 | mime-types "~2.1.11" 75 | negotiator "0.6.1" 76 | 77 | acorn-jsx@^3.0.1: 78 | version "3.0.1" 79 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" 80 | dependencies: 81 | acorn "^3.0.4" 82 | 83 | acorn-object-spread@^1.0.0: 84 | version "1.0.0" 85 | resolved "https://registry.yarnpkg.com/acorn-object-spread/-/acorn-object-spread-1.0.0.tgz#48ead0f4a8eb16995a17a0db9ffc6acaada4ba68" 86 | dependencies: 87 | acorn "^3.1.0" 88 | 89 | acorn@^3.0.4, acorn@^3.1.0: 90 | version "3.3.0" 91 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" 92 | 93 | after@0.8.1: 94 | version "0.8.1" 95 | resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627" 96 | 97 | ajv@^4.9.1: 98 | version "4.11.5" 99 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.5.tgz#b6ee74657b993a01dce44b7944d56f485828d5bd" 100 | dependencies: 101 | co "^4.6.0" 102 | json-stable-stringify "^1.0.1" 103 | 104 | angular-in-memory-web-api@~0.2.4: 105 | version "0.2.5" 106 | resolved "https://registry.yarnpkg.com/angular-in-memory-web-api/-/angular-in-memory-web-api-0.2.5.tgz#bd599ec6f5b86fa5173dd7bb5710f393e804dd05" 107 | 108 | ansi-regex@^0.2.0, ansi-regex@^0.2.1: 109 | version "0.2.1" 110 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-0.2.1.tgz#0d8e946967a3d8143f93e24e298525fc1b2235f9" 111 | 112 | ansi-regex@^2.0.0: 113 | version "2.1.1" 114 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" 115 | 116 | ansi-styles@^1.1.0: 117 | version "1.1.0" 118 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.1.0.tgz#eaecbf66cd706882760b2f4691582b8f55d7a7de" 119 | 120 | ansi-styles@^2.2.1: 121 | version "2.2.1" 122 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" 123 | 124 | anymatch@^1.3.0: 125 | version "1.3.0" 126 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507" 127 | dependencies: 128 | arrify "^1.0.0" 129 | micromatch "^2.1.5" 130 | 131 | aproba@^1.0.3: 132 | version "1.1.1" 133 | resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.1.tgz#95d3600f07710aa0e9298c726ad5ecf2eacbabab" 134 | 135 | archy@^1.0.0: 136 | version "1.0.0" 137 | resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" 138 | 139 | are-we-there-yet@~1.1.2: 140 | version "1.1.2" 141 | resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3" 142 | dependencies: 143 | delegates "^1.0.0" 144 | readable-stream "^2.0.0 || ^1.1.13" 145 | 146 | arr-diff@^2.0.0: 147 | version "2.0.0" 148 | resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" 149 | dependencies: 150 | arr-flatten "^1.0.1" 151 | 152 | arr-flatten@^1.0.1: 153 | version "1.0.1" 154 | resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b" 155 | 156 | array-differ@^1.0.0: 157 | version "1.0.0" 158 | resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" 159 | 160 | array-flatten@1.1.1: 161 | version "1.1.1" 162 | resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" 163 | 164 | array-union@^1.0.1: 165 | version "1.0.2" 166 | resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" 167 | dependencies: 168 | array-uniq "^1.0.1" 169 | 170 | array-uniq@^1.0.1, array-uniq@^1.0.2: 171 | version "1.0.3" 172 | resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" 173 | 174 | array-unique@^0.2.1: 175 | version "0.2.1" 176 | resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" 177 | 178 | arraybuffer.slice@0.0.6: 179 | version "0.0.6" 180 | resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca" 181 | 182 | arrify@^1.0.0: 183 | version "1.0.1" 184 | resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" 185 | 186 | asn1@~0.2.3: 187 | version "0.2.3" 188 | resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" 189 | 190 | assert-plus@^0.2.0: 191 | version "0.2.0" 192 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" 193 | 194 | assert-plus@^1.0.0: 195 | version "1.0.0" 196 | resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" 197 | 198 | async-each-series@0.1.1: 199 | version "0.1.1" 200 | resolved "https://registry.yarnpkg.com/async-each-series/-/async-each-series-0.1.1.tgz#7617c1917401fd8ca4a28aadce3dbae98afeb432" 201 | 202 | async-each@^1.0.0: 203 | version "1.0.1" 204 | resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" 205 | 206 | async@1.5.2: 207 | version "1.5.2" 208 | resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" 209 | 210 | asynckit@^0.4.0: 211 | version "0.4.0" 212 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 213 | 214 | aws-sign2@~0.6.0: 215 | version "0.6.0" 216 | resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" 217 | 218 | aws4@^1.2.1: 219 | version "1.6.0" 220 | resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" 221 | 222 | backo2@1.0.2: 223 | version "1.0.2" 224 | resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947" 225 | 226 | balanced-match@^0.4.1: 227 | version "0.4.2" 228 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838" 229 | 230 | base64-arraybuffer@0.1.2: 231 | version "0.1.2" 232 | resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz#474df4a9f2da24e05df3158c3b1db3c3cd46a154" 233 | 234 | base64-arraybuffer@0.1.5: 235 | version "0.1.5" 236 | resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz#73926771923b5a19747ad666aa5cd4bf9c6e9ce8" 237 | 238 | base64id@0.1.0: 239 | version "0.1.0" 240 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f" 241 | 242 | batch@0.5.3: 243 | version "0.5.3" 244 | resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464" 245 | 246 | bcrypt-pbkdf@^1.0.0: 247 | version "1.0.1" 248 | resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" 249 | dependencies: 250 | tweetnacl "^0.14.3" 251 | 252 | beeper@^1.0.0: 253 | version "1.1.1" 254 | resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" 255 | 256 | benchmark@1.0.0: 257 | version "1.0.0" 258 | resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-1.0.0.tgz#2f1e2fa4c359f11122aa183082218e957e390c73" 259 | 260 | better-assert@~1.0.0: 261 | version "1.0.2" 262 | resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522" 263 | dependencies: 264 | callsite "1.0.0" 265 | 266 | binary-extensions@^1.0.0: 267 | version "1.8.0" 268 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.8.0.tgz#48ec8d16df4377eae5fa5884682480af4d95c774" 269 | 270 | blob@0.0.4: 271 | version "0.0.4" 272 | resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921" 273 | 274 | block-stream@*: 275 | version "0.0.9" 276 | resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" 277 | dependencies: 278 | inherits "~2.0.0" 279 | 280 | boom@2.x.x: 281 | version "2.10.1" 282 | resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" 283 | dependencies: 284 | hoek "2.x.x" 285 | 286 | bootstrap@^3.3.7: 287 | version "3.3.7" 288 | resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-3.3.7.tgz#5a389394549f23330875a3b150656574f8a9eb71" 289 | 290 | brace-expansion@^1.0.0: 291 | version "1.1.6" 292 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9" 293 | dependencies: 294 | balanced-match "^0.4.1" 295 | concat-map "0.0.1" 296 | 297 | braces@^1.8.2: 298 | version "1.8.5" 299 | resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" 300 | dependencies: 301 | expand-range "^1.8.1" 302 | preserve "^0.2.0" 303 | repeat-element "^1.1.2" 304 | 305 | browser-sync-client@2.4.5: 306 | version "2.4.5" 307 | resolved "https://registry.yarnpkg.com/browser-sync-client/-/browser-sync-client-2.4.5.tgz#976afab1a54f255baa38fe22ae3c0d3753ad337b" 308 | dependencies: 309 | etag "^1.7.0" 310 | fresh "^0.3.0" 311 | 312 | browser-sync-ui@0.6.3: 313 | version "0.6.3" 314 | resolved "https://registry.yarnpkg.com/browser-sync-ui/-/browser-sync-ui-0.6.3.tgz#640a537c180689303d5be92bc476b9ebc441c0bc" 315 | dependencies: 316 | async-each-series "0.1.1" 317 | connect-history-api-fallback "^1.1.0" 318 | immutable "^3.7.6" 319 | server-destroy "1.0.1" 320 | stream-throttle "^0.1.3" 321 | weinre "^2.0.0-pre-I0Z7U9OV" 322 | 323 | browser-sync@^2.18.5: 324 | version "2.18.8" 325 | resolved "https://registry.yarnpkg.com/browser-sync/-/browser-sync-2.18.8.tgz#2fb4de253798d7cfb839afb9c2f801968490cec2" 326 | dependencies: 327 | browser-sync-client "2.4.5" 328 | browser-sync-ui "0.6.3" 329 | bs-recipes "1.3.4" 330 | chokidar "1.6.1" 331 | connect "3.5.0" 332 | dev-ip "^1.0.1" 333 | easy-extender "2.3.2" 334 | eazy-logger "3.0.2" 335 | emitter-steward "^1.0.0" 336 | fs-extra "1.0.0" 337 | http-proxy "1.15.2" 338 | immutable "3.8.1" 339 | localtunnel "1.8.2" 340 | micromatch "2.3.11" 341 | opn "4.0.2" 342 | portscanner "2.1.1" 343 | qs "6.2.1" 344 | resp-modifier "6.0.2" 345 | rx "4.1.0" 346 | serve-index "1.8.0" 347 | serve-static "1.11.1" 348 | server-destroy "1.0.1" 349 | socket.io "1.6.0" 350 | socket.io-client "1.6.0" 351 | ua-parser-js "0.7.12" 352 | yargs "6.4.0" 353 | 354 | bs-recipes@1.3.4: 355 | version "1.3.4" 356 | resolved "https://registry.yarnpkg.com/bs-recipes/-/bs-recipes-1.3.4.tgz#0d2d4d48a718c8c044769fdc4f89592dc8b69585" 357 | 358 | buble@^0.12.0: 359 | version "0.12.5" 360 | resolved "https://registry.yarnpkg.com/buble/-/buble-0.12.5.tgz#c66ffe92f9f4a3c65d3256079b711e2bd0bc5013" 361 | dependencies: 362 | acorn "^3.1.0" 363 | acorn-jsx "^3.0.1" 364 | acorn-object-spread "^1.0.0" 365 | chalk "^1.1.3" 366 | magic-string "^0.14.0" 367 | minimist "^1.2.0" 368 | os-homedir "^1.0.1" 369 | 370 | bubleify@^0.5.1: 371 | version "0.5.1" 372 | resolved "https://registry.yarnpkg.com/bubleify/-/bubleify-0.5.1.tgz#f65c47cee31b80cad8b9e747bbe187d7fe51e927" 373 | dependencies: 374 | buble "^0.12.0" 375 | object-assign "^4.0.1" 376 | 377 | buffer-shims@^1.0.0: 378 | version "1.0.0" 379 | resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51" 380 | 381 | builtin-modules@^1.0.0: 382 | version "1.1.1" 383 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" 384 | 385 | callsite@1.0.0: 386 | version "1.0.0" 387 | resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20" 388 | 389 | camelcase@^1.2.1: 390 | version "1.2.1" 391 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" 392 | 393 | camelcase@^3.0.0: 394 | version "3.0.0" 395 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" 396 | 397 | caseless@~0.11.0: 398 | version "0.11.0" 399 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7" 400 | 401 | caseless@~0.12.0: 402 | version "0.12.0" 403 | resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" 404 | 405 | chalk@*, chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: 406 | version "1.1.3" 407 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" 408 | dependencies: 409 | ansi-styles "^2.2.1" 410 | escape-string-regexp "^1.0.2" 411 | has-ansi "^2.0.0" 412 | strip-ansi "^3.0.0" 413 | supports-color "^2.0.0" 414 | 415 | chalk@0.5.1: 416 | version "0.5.1" 417 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.5.1.tgz#663b3a648b68b55d04690d49167aa837858f2174" 418 | dependencies: 419 | ansi-styles "^1.1.0" 420 | escape-string-regexp "^1.0.0" 421 | has-ansi "^0.1.0" 422 | strip-ansi "^0.3.0" 423 | supports-color "^0.2.0" 424 | 425 | chokidar@1.6.1: 426 | version "1.6.1" 427 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2" 428 | dependencies: 429 | anymatch "^1.3.0" 430 | async-each "^1.0.0" 431 | glob-parent "^2.0.0" 432 | inherits "^2.0.1" 433 | is-binary-path "^1.0.0" 434 | is-glob "^2.0.0" 435 | path-is-absolute "^1.0.0" 436 | readdirp "^2.0.0" 437 | optionalDependencies: 438 | fsevents "^1.0.0" 439 | 440 | cliui@^3.0.3, cliui@^3.2.0: 441 | version "3.2.0" 442 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" 443 | dependencies: 444 | string-width "^1.0.1" 445 | strip-ansi "^3.0.1" 446 | wrap-ansi "^2.0.0" 447 | 448 | clone-stats@^0.0.1: 449 | version "0.0.1" 450 | resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" 451 | 452 | clone@^0.2.0: 453 | version "0.2.0" 454 | resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" 455 | 456 | clone@^1.0.0, clone@^1.0.2: 457 | version "1.0.2" 458 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149" 459 | 460 | co@^4.6.0: 461 | version "4.6.0" 462 | resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" 463 | 464 | code-point-at@^1.0.0: 465 | version "1.1.0" 466 | resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" 467 | 468 | combined-stream@^1.0.5, combined-stream@~1.0.5: 469 | version "1.0.5" 470 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009" 471 | dependencies: 472 | delayed-stream "~1.0.0" 473 | 474 | commander@2.6.0, commander@^2.2.0: 475 | version "2.6.0" 476 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.6.0.tgz#9df7e52fb2a0cb0fb89058ee80c3104225f37e1d" 477 | 478 | commander@^2.9.0: 479 | version "2.9.0" 480 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" 481 | dependencies: 482 | graceful-readlink ">= 1.0.0" 483 | 484 | component-bind@1.0.0: 485 | version "1.0.0" 486 | resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1" 487 | 488 | component-emitter@1.1.2: 489 | version "1.1.2" 490 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3" 491 | 492 | component-emitter@1.2.0: 493 | version "1.2.0" 494 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.0.tgz#ccd113a86388d06482d03de3fc7df98526ba8efe" 495 | 496 | component-emitter@1.2.1: 497 | version "1.2.1" 498 | resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" 499 | 500 | component-inherit@0.0.3: 501 | version "0.0.3" 502 | resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143" 503 | 504 | concat-map@0.0.1: 505 | version "0.0.1" 506 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 507 | 508 | concurrently@^3.2.0: 509 | version "3.4.0" 510 | resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-3.4.0.tgz#60662b3defde07375bae19aac0ab780ec748ba79" 511 | dependencies: 512 | chalk "0.5.1" 513 | commander "2.6.0" 514 | date-fns "^1.23.0" 515 | lodash "^4.5.1" 516 | rx "2.3.24" 517 | spawn-command "^0.0.2-1" 518 | supports-color "^3.2.3" 519 | tree-kill "^1.1.0" 520 | 521 | connect-history-api-fallback@^1.1.0, connect-history-api-fallback@^1.2.0: 522 | version "1.3.0" 523 | resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169" 524 | 525 | connect-logger@0.0.1: 526 | version "0.0.1" 527 | resolved "https://registry.yarnpkg.com/connect-logger/-/connect-logger-0.0.1.tgz#4d999978a1d20bb4608e7cd434d741652255174b" 528 | dependencies: 529 | moment "*" 530 | 531 | connect@1.x: 532 | version "1.9.2" 533 | resolved "https://registry.yarnpkg.com/connect/-/connect-1.9.2.tgz#42880a22e9438ae59a8add74e437f58ae8e52807" 534 | dependencies: 535 | formidable "1.0.x" 536 | mime ">= 0.0.1" 537 | qs ">= 0.4.0" 538 | 539 | connect@3.5.0: 540 | version "3.5.0" 541 | resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198" 542 | dependencies: 543 | debug "~2.2.0" 544 | finalhandler "0.5.0" 545 | parseurl "~1.3.1" 546 | utils-merge "1.0.0" 547 | 548 | console-control-strings@^1.0.0, console-control-strings@~1.1.0: 549 | version "1.1.0" 550 | resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" 551 | 552 | content-disposition@0.5.2: 553 | version "0.5.2" 554 | resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" 555 | 556 | content-type@~1.0.2: 557 | version "1.0.2" 558 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed" 559 | 560 | cookie-signature@1.0.6: 561 | version "1.0.6" 562 | resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" 563 | 564 | cookie@0.3.1: 565 | version "0.3.1" 566 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" 567 | 568 | core-js@^2.4.1: 569 | version "2.4.1" 570 | resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e" 571 | 572 | core-util-is@~1.0.0: 573 | version "1.0.2" 574 | resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" 575 | 576 | cryptiles@2.x.x: 577 | version "2.0.5" 578 | resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" 579 | dependencies: 580 | boom "2.x.x" 581 | 582 | dashdash@^1.12.0: 583 | version "1.14.1" 584 | resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" 585 | dependencies: 586 | assert-plus "^1.0.0" 587 | 588 | date-fns@^1.23.0: 589 | version "1.28.0" 590 | resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.28.0.tgz#3b12f54b66467807bb95e5930caf7bfb4170bc1a" 591 | 592 | dateformat@^2.0.0: 593 | version "2.0.0" 594 | resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.0.0.tgz#2743e3abb5c3fc2462e527dca445e04e9f4dee17" 595 | 596 | debug@0.7.4: 597 | version "0.7.4" 598 | resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39" 599 | 600 | debug@2.2.0, debug@~2.2.0: 601 | version "2.2.0" 602 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da" 603 | dependencies: 604 | ms "0.7.1" 605 | 606 | debug@2.3.3: 607 | version "2.3.3" 608 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.3.3.tgz#40c453e67e6e13c901ddec317af8986cda9eff8c" 609 | dependencies: 610 | ms "0.7.2" 611 | 612 | debug@2.6.1, debug@^2.2.0: 613 | version "2.6.1" 614 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.1.tgz#79855090ba2c4e3115cc7d8769491d58f0491351" 615 | dependencies: 616 | ms "0.7.2" 617 | 618 | decamelize@^1.0.0, decamelize@^1.1.1: 619 | version "1.2.0" 620 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 621 | 622 | deep-extend@~0.4.0: 623 | version "0.4.1" 624 | resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253" 625 | 626 | defaults@^1.0.0: 627 | version "1.0.3" 628 | resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" 629 | dependencies: 630 | clone "^1.0.2" 631 | 632 | del@^2.2.2: 633 | version "2.2.2" 634 | resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" 635 | dependencies: 636 | globby "^5.0.0" 637 | is-path-cwd "^1.0.0" 638 | is-path-in-cwd "^1.0.0" 639 | object-assign "^4.0.1" 640 | pify "^2.0.0" 641 | pinkie-promise "^2.0.0" 642 | rimraf "^2.2.8" 643 | 644 | delayed-stream@~1.0.0: 645 | version "1.0.0" 646 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 647 | 648 | delegates@^1.0.0: 649 | version "1.0.0" 650 | resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" 651 | 652 | depd@1.1.0, depd@~1.1.0: 653 | version "1.1.0" 654 | resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3" 655 | 656 | deprecated@^0.0.1: 657 | version "0.0.1" 658 | resolved "https://registry.yarnpkg.com/deprecated/-/deprecated-0.0.1.tgz#f9c9af5464afa1e7a971458a8bdef2aa94d5bb19" 659 | 660 | destroy@~1.0.4: 661 | version "1.0.4" 662 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" 663 | 664 | detect-file@^0.1.0: 665 | version "0.1.0" 666 | resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-0.1.0.tgz#4935dedfd9488648e006b0129566e9386711ea63" 667 | dependencies: 668 | fs-exists-sync "^0.1.0" 669 | 670 | dev-ip@^1.0.1: 671 | version "1.0.1" 672 | resolved "https://registry.yarnpkg.com/dev-ip/-/dev-ip-1.0.1.tgz#a76a3ed1855be7a012bb8ac16cb80f3c00dc28f0" 673 | 674 | duplexer2@0.0.2: 675 | version "0.0.2" 676 | resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" 677 | dependencies: 678 | readable-stream "~1.1.9" 679 | 680 | easy-extender@2.3.2: 681 | version "2.3.2" 682 | resolved "https://registry.yarnpkg.com/easy-extender/-/easy-extender-2.3.2.tgz#3d3248febe2b159607316d8f9cf491c16648221d" 683 | dependencies: 684 | lodash "^3.10.1" 685 | 686 | eazy-logger@3.0.2: 687 | version "3.0.2" 688 | resolved "https://registry.yarnpkg.com/eazy-logger/-/eazy-logger-3.0.2.tgz#a325aa5e53d13a2225889b2ac4113b2b9636f4fc" 689 | dependencies: 690 | tfunk "^3.0.1" 691 | 692 | ecc-jsbn@~0.1.1: 693 | version "0.1.1" 694 | resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" 695 | dependencies: 696 | jsbn "~0.1.0" 697 | 698 | ee-first@1.1.1: 699 | version "1.1.1" 700 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 701 | 702 | emitter-steward@^1.0.0: 703 | version "1.0.0" 704 | resolved "https://registry.yarnpkg.com/emitter-steward/-/emitter-steward-1.0.0.tgz#f3411ade9758a7565df848b2da0cbbd1b46cbd64" 705 | 706 | encodeurl@~1.0.1: 707 | version "1.0.1" 708 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" 709 | 710 | end-of-stream@~0.1.5: 711 | version "0.1.5" 712 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" 713 | dependencies: 714 | once "~1.3.0" 715 | 716 | engine.io-client@1.6.8: 717 | version "1.6.8" 718 | resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.6.8.tgz#6e2db11648b45e405c46b172ea3e3dac37cc0ceb" 719 | dependencies: 720 | component-emitter "1.1.2" 721 | component-inherit "0.0.3" 722 | debug "2.2.0" 723 | engine.io-parser "1.2.4" 724 | has-cors "1.1.0" 725 | indexof "0.0.1" 726 | parsejson "0.0.1" 727 | parseqs "0.0.2" 728 | parseuri "0.0.4" 729 | ws "1.0.1" 730 | xmlhttprequest-ssl "1.5.1" 731 | yeast "0.1.2" 732 | 733 | engine.io-client@1.8.0: 734 | version "1.8.0" 735 | resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.8.0.tgz#7b730e4127414087596d9be3c88d2bc5fdb6cf5c" 736 | dependencies: 737 | component-emitter "1.2.1" 738 | component-inherit "0.0.3" 739 | debug "2.3.3" 740 | engine.io-parser "1.3.1" 741 | has-cors "1.1.0" 742 | indexof "0.0.1" 743 | parsejson "0.0.3" 744 | parseqs "0.0.5" 745 | parseuri "0.0.5" 746 | ws "1.1.1" 747 | xmlhttprequest-ssl "1.5.3" 748 | yeast "0.1.2" 749 | 750 | engine.io-parser@1.2.4: 751 | version "1.2.4" 752 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.2.4.tgz#e0897b0bf14e792d4cd2a5950553919c56948c42" 753 | dependencies: 754 | after "0.8.1" 755 | arraybuffer.slice "0.0.6" 756 | base64-arraybuffer "0.1.2" 757 | blob "0.0.4" 758 | has-binary "0.1.6" 759 | utf8 "2.1.0" 760 | 761 | engine.io-parser@1.3.1: 762 | version "1.3.1" 763 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.3.1.tgz#9554f1ae33107d6fbd170ca5466d2f833f6a07cf" 764 | dependencies: 765 | after "0.8.1" 766 | arraybuffer.slice "0.0.6" 767 | base64-arraybuffer "0.1.5" 768 | blob "0.0.4" 769 | has-binary "0.1.6" 770 | wtf-8 "1.0.0" 771 | 772 | engine.io@1.6.8: 773 | version "1.6.8" 774 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.6.8.tgz#de05a06b757e7517695e088c7b051c47819f511b" 775 | dependencies: 776 | accepts "1.1.4" 777 | base64id "0.1.0" 778 | debug "2.2.0" 779 | engine.io-parser "1.2.4" 780 | ws "1.0.1" 781 | 782 | engine.io@1.8.0: 783 | version "1.8.0" 784 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.8.0.tgz#3eeb5f264cb75dbbec1baaea26d61f5a4eace2aa" 785 | dependencies: 786 | accepts "1.3.3" 787 | base64id "0.1.0" 788 | cookie "0.3.1" 789 | debug "2.3.3" 790 | engine.io-parser "1.3.1" 791 | ws "1.1.1" 792 | 793 | error-ex@^1.2.0: 794 | version "1.3.1" 795 | resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" 796 | dependencies: 797 | is-arrayish "^0.2.1" 798 | 799 | escape-html@~1.0.3: 800 | version "1.0.3" 801 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 802 | 803 | escape-string-regexp@^1.0.0, escape-string-regexp@^1.0.2: 804 | version "1.0.5" 805 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 806 | 807 | etag@^1.7.0, etag@~1.8.0: 808 | version "1.8.0" 809 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.0.tgz#6f631aef336d6c46362b51764044ce216be3c051" 810 | 811 | etag@~1.7.0: 812 | version "1.7.0" 813 | resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8" 814 | 815 | eventemitter3@1.x.x: 816 | version "1.2.0" 817 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508" 818 | 819 | expand-brackets@^0.1.4: 820 | version "0.1.5" 821 | resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" 822 | dependencies: 823 | is-posix-bracket "^0.1.0" 824 | 825 | expand-range@^1.8.1: 826 | version "1.8.2" 827 | resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" 828 | dependencies: 829 | fill-range "^2.1.0" 830 | 831 | expand-tilde@^1.2.1, expand-tilde@^1.2.2: 832 | version "1.2.2" 833 | resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" 834 | dependencies: 835 | os-homedir "^1.0.1" 836 | 837 | express@2.5.x: 838 | version "2.5.11" 839 | resolved "https://registry.yarnpkg.com/express/-/express-2.5.11.tgz#4ce8ea1f3635e69e49f0ebb497b6a4b0a51ce6f0" 840 | dependencies: 841 | connect "1.x" 842 | mime "1.2.4" 843 | mkdirp "0.3.0" 844 | qs "0.4.x" 845 | 846 | express@^4.13.4: 847 | version "4.15.2" 848 | resolved "https://registry.yarnpkg.com/express/-/express-4.15.2.tgz#af107fc148504457f2dca9a6f2571d7129b97b35" 849 | dependencies: 850 | accepts "~1.3.3" 851 | array-flatten "1.1.1" 852 | content-disposition "0.5.2" 853 | content-type "~1.0.2" 854 | cookie "0.3.1" 855 | cookie-signature "1.0.6" 856 | debug "2.6.1" 857 | depd "~1.1.0" 858 | encodeurl "~1.0.1" 859 | escape-html "~1.0.3" 860 | etag "~1.8.0" 861 | finalhandler "~1.0.0" 862 | fresh "0.5.0" 863 | merge-descriptors "1.0.1" 864 | methods "~1.1.2" 865 | on-finished "~2.3.0" 866 | parseurl "~1.3.1" 867 | path-to-regexp "0.1.7" 868 | proxy-addr "~1.1.3" 869 | qs "6.4.0" 870 | range-parser "~1.2.0" 871 | send "0.15.1" 872 | serve-static "1.12.1" 873 | setprototypeof "1.0.3" 874 | statuses "~1.3.1" 875 | type-is "~1.6.14" 876 | utils-merge "1.0.0" 877 | vary "~1.1.0" 878 | 879 | extend@^3.0.0, extend@~3.0.0: 880 | version "3.0.0" 881 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4" 882 | 883 | extglob@^0.3.1: 884 | version "0.3.2" 885 | resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" 886 | dependencies: 887 | is-extglob "^1.0.0" 888 | 889 | extsprintf@1.0.2: 890 | version "1.0.2" 891 | resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550" 892 | 893 | fancy-log@^1.1.0: 894 | version "1.3.0" 895 | resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.0.tgz#45be17d02bb9917d60ccffd4995c999e6c8c9948" 896 | dependencies: 897 | chalk "^1.1.1" 898 | time-stamp "^1.0.0" 899 | 900 | filename-regex@^2.0.0: 901 | version "2.0.0" 902 | resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775" 903 | 904 | fill-range@^2.1.0: 905 | version "2.2.3" 906 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723" 907 | dependencies: 908 | is-number "^2.1.0" 909 | isobject "^2.0.0" 910 | randomatic "^1.1.3" 911 | repeat-element "^1.1.2" 912 | repeat-string "^1.5.2" 913 | 914 | finalhandler@0.5.0: 915 | version "0.5.0" 916 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7" 917 | dependencies: 918 | debug "~2.2.0" 919 | escape-html "~1.0.3" 920 | on-finished "~2.3.0" 921 | statuses "~1.3.0" 922 | unpipe "~1.0.0" 923 | 924 | finalhandler@~1.0.0: 925 | version "1.0.0" 926 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.0.0.tgz#b5691c2c0912092f18ac23e9416bde5cd7dc6755" 927 | dependencies: 928 | debug "2.6.1" 929 | encodeurl "~1.0.1" 930 | escape-html "~1.0.3" 931 | on-finished "~2.3.0" 932 | parseurl "~1.3.1" 933 | statuses "~1.3.1" 934 | unpipe "~1.0.0" 935 | 936 | find-index@^0.1.1: 937 | version "0.1.1" 938 | resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" 939 | 940 | find-up@^1.0.0: 941 | version "1.1.2" 942 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" 943 | dependencies: 944 | path-exists "^2.0.0" 945 | pinkie-promise "^2.0.0" 946 | 947 | findup-sync@^0.4.2: 948 | version "0.4.3" 949 | resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.4.3.tgz#40043929e7bc60adf0b7f4827c4c6e75a0deca12" 950 | dependencies: 951 | detect-file "^0.1.0" 952 | is-glob "^2.0.1" 953 | micromatch "^2.3.7" 954 | resolve-dir "^0.1.0" 955 | 956 | fined@^1.0.1: 957 | version "1.0.2" 958 | resolved "https://registry.yarnpkg.com/fined/-/fined-1.0.2.tgz#5b28424b760d7598960b7ef8480dff8ad3660e97" 959 | dependencies: 960 | expand-tilde "^1.2.1" 961 | lodash.assignwith "^4.0.7" 962 | lodash.isempty "^4.2.1" 963 | lodash.isplainobject "^4.0.4" 964 | lodash.isstring "^4.0.1" 965 | lodash.pick "^4.2.1" 966 | parse-filepath "^1.0.1" 967 | 968 | first-chunk-stream@^1.0.0: 969 | version "1.0.0" 970 | resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" 971 | 972 | flagged-respawn@^0.3.2: 973 | version "0.3.2" 974 | resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-0.3.2.tgz#ff191eddcd7088a675b2610fffc976be9b8074b5" 975 | 976 | for-in@^1.0.1: 977 | version "1.0.2" 978 | resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" 979 | 980 | for-own@^0.1.4: 981 | version "0.1.5" 982 | resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" 983 | dependencies: 984 | for-in "^1.0.1" 985 | 986 | forever-agent@~0.6.1: 987 | version "0.6.1" 988 | resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" 989 | 990 | form-data@~2.1.1: 991 | version "2.1.2" 992 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.2.tgz#89c3534008b97eada4cbb157d58f6f5df025eae4" 993 | dependencies: 994 | asynckit "^0.4.0" 995 | combined-stream "^1.0.5" 996 | mime-types "^2.1.12" 997 | 998 | formidable@1.0.x: 999 | version "1.0.17" 1000 | resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.0.17.tgz#ef5491490f9433b705faa77249c99029ae348559" 1001 | 1002 | forwarded@~0.1.0: 1003 | version "0.1.0" 1004 | resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363" 1005 | 1006 | fresh@0.3.0, fresh@^0.3.0: 1007 | version "0.3.0" 1008 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f" 1009 | 1010 | fresh@0.5.0: 1011 | version "0.5.0" 1012 | resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.0.tgz#f474ca5e6a9246d6fd8e0953cfa9b9c805afa78e" 1013 | 1014 | fs-exists-sync@^0.1.0: 1015 | version "0.1.0" 1016 | resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" 1017 | 1018 | fs-extra@1.0.0: 1019 | version "1.0.0" 1020 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-1.0.0.tgz#cd3ce5f7e7cb6145883fcae3191e9877f8587950" 1021 | dependencies: 1022 | graceful-fs "^4.1.2" 1023 | jsonfile "^2.1.0" 1024 | klaw "^1.0.0" 1025 | 1026 | fs.realpath@^1.0.0: 1027 | version "1.0.0" 1028 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1029 | 1030 | fsevents@^1.0.0: 1031 | version "1.1.1" 1032 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.1.tgz#f19fd28f43eeaf761680e519a203c4d0b3d31aff" 1033 | dependencies: 1034 | nan "^2.3.0" 1035 | node-pre-gyp "^0.6.29" 1036 | 1037 | fstream-ignore@~1.0.5: 1038 | version "1.0.5" 1039 | resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" 1040 | dependencies: 1041 | fstream "^1.0.0" 1042 | inherits "2" 1043 | minimatch "^3.0.0" 1044 | 1045 | fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10: 1046 | version "1.0.11" 1047 | resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" 1048 | dependencies: 1049 | graceful-fs "^4.1.2" 1050 | inherits "~2.0.0" 1051 | mkdirp ">=0.5 0" 1052 | rimraf "2" 1053 | 1054 | gauge@~2.7.1: 1055 | version "2.7.3" 1056 | resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.3.tgz#1c23855f962f17b3ad3d0dc7443f304542edfe09" 1057 | dependencies: 1058 | aproba "^1.0.3" 1059 | console-control-strings "^1.0.0" 1060 | has-unicode "^2.0.0" 1061 | object-assign "^4.1.0" 1062 | signal-exit "^3.0.0" 1063 | string-width "^1.0.1" 1064 | strip-ansi "^3.0.1" 1065 | wide-align "^1.1.0" 1066 | 1067 | gaze@^0.5.1: 1068 | version "0.5.2" 1069 | resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" 1070 | dependencies: 1071 | globule "~0.1.0" 1072 | 1073 | generate-function@^2.0.0: 1074 | version "2.0.0" 1075 | resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74" 1076 | 1077 | generate-object-property@^1.1.0: 1078 | version "1.2.0" 1079 | resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0" 1080 | dependencies: 1081 | is-property "^1.0.0" 1082 | 1083 | get-caller-file@^1.0.1: 1084 | version "1.0.2" 1085 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" 1086 | 1087 | getpass@^0.1.1: 1088 | version "0.1.6" 1089 | resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6" 1090 | dependencies: 1091 | assert-plus "^1.0.0" 1092 | 1093 | glob-base@^0.3.0: 1094 | version "0.3.0" 1095 | resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" 1096 | dependencies: 1097 | glob-parent "^2.0.0" 1098 | is-glob "^2.0.0" 1099 | 1100 | glob-parent@^2.0.0: 1101 | version "2.0.0" 1102 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" 1103 | dependencies: 1104 | is-glob "^2.0.0" 1105 | 1106 | glob-stream@^3.1.5: 1107 | version "3.1.18" 1108 | resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-3.1.18.tgz#9170a5f12b790306fdfe598f313f8f7954fd143b" 1109 | dependencies: 1110 | glob "^4.3.1" 1111 | glob2base "^0.0.12" 1112 | minimatch "^2.0.1" 1113 | ordered-read-streams "^0.1.0" 1114 | through2 "^0.6.1" 1115 | unique-stream "^1.0.0" 1116 | 1117 | glob-watcher@^0.0.6: 1118 | version "0.0.6" 1119 | resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.6.tgz#b95b4a8df74b39c83298b0c05c978b4d9a3b710b" 1120 | dependencies: 1121 | gaze "^0.5.1" 1122 | 1123 | glob2base@^0.0.12: 1124 | version "0.0.12" 1125 | resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" 1126 | dependencies: 1127 | find-index "^0.1.1" 1128 | 1129 | glob@^4.3.1: 1130 | version "4.5.3" 1131 | resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" 1132 | dependencies: 1133 | inflight "^1.0.4" 1134 | inherits "2" 1135 | minimatch "^2.0.1" 1136 | once "^1.3.0" 1137 | 1138 | glob@^7.0.3, glob@^7.0.5: 1139 | version "7.1.1" 1140 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" 1141 | dependencies: 1142 | fs.realpath "^1.0.0" 1143 | inflight "^1.0.4" 1144 | inherits "2" 1145 | minimatch "^3.0.2" 1146 | once "^1.3.0" 1147 | path-is-absolute "^1.0.0" 1148 | 1149 | glob@~3.1.21: 1150 | version "3.1.21" 1151 | resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" 1152 | dependencies: 1153 | graceful-fs "~1.2.0" 1154 | inherits "1" 1155 | minimatch "~0.2.11" 1156 | 1157 | global-modules@^0.2.3: 1158 | version "0.2.3" 1159 | resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" 1160 | dependencies: 1161 | global-prefix "^0.1.4" 1162 | is-windows "^0.2.0" 1163 | 1164 | global-prefix@^0.1.4: 1165 | version "0.1.5" 1166 | resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" 1167 | dependencies: 1168 | homedir-polyfill "^1.0.0" 1169 | ini "^1.3.4" 1170 | is-windows "^0.2.0" 1171 | which "^1.2.12" 1172 | 1173 | globby@^5.0.0: 1174 | version "5.0.0" 1175 | resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" 1176 | dependencies: 1177 | array-union "^1.0.1" 1178 | arrify "^1.0.0" 1179 | glob "^7.0.3" 1180 | object-assign "^4.0.1" 1181 | pify "^2.0.0" 1182 | pinkie-promise "^2.0.0" 1183 | 1184 | globule@~0.1.0: 1185 | version "0.1.0" 1186 | resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" 1187 | dependencies: 1188 | glob "~3.1.21" 1189 | lodash "~1.0.1" 1190 | minimatch "~0.2.11" 1191 | 1192 | glogg@^1.0.0: 1193 | version "1.0.0" 1194 | resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5" 1195 | dependencies: 1196 | sparkles "^1.0.0" 1197 | 1198 | graceful-fs@^3.0.0: 1199 | version "3.0.11" 1200 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.11.tgz#7613c778a1afea62f25c630a086d7f3acbbdd818" 1201 | dependencies: 1202 | natives "^1.1.0" 1203 | 1204 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: 1205 | version "4.1.11" 1206 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" 1207 | 1208 | graceful-fs@~1.2.0: 1209 | version "1.2.3" 1210 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" 1211 | 1212 | "graceful-readlink@>= 1.0.0": 1213 | version "1.0.1" 1214 | resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" 1215 | 1216 | gulp-util@*, gulp-util@^3.0.0: 1217 | version "3.0.8" 1218 | resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" 1219 | dependencies: 1220 | array-differ "^1.0.0" 1221 | array-uniq "^1.0.2" 1222 | beeper "^1.0.0" 1223 | chalk "^1.0.0" 1224 | dateformat "^2.0.0" 1225 | fancy-log "^1.1.0" 1226 | gulplog "^1.0.0" 1227 | has-gulplog "^0.1.0" 1228 | lodash._reescape "^3.0.0" 1229 | lodash._reevaluate "^3.0.0" 1230 | lodash._reinterpolate "^3.0.0" 1231 | lodash.template "^3.0.0" 1232 | minimist "^1.1.0" 1233 | multipipe "^0.1.2" 1234 | object-assign "^3.0.0" 1235 | replace-ext "0.0.1" 1236 | through2 "^2.0.0" 1237 | vinyl "^0.5.0" 1238 | 1239 | gulp@^3.9.1: 1240 | version "3.9.1" 1241 | resolved "https://registry.yarnpkg.com/gulp/-/gulp-3.9.1.tgz#571ce45928dd40af6514fc4011866016c13845b4" 1242 | dependencies: 1243 | archy "^1.0.0" 1244 | chalk "^1.0.0" 1245 | deprecated "^0.0.1" 1246 | gulp-util "^3.0.0" 1247 | interpret "^1.0.0" 1248 | liftoff "^2.1.0" 1249 | minimist "^1.1.0" 1250 | orchestrator "^0.3.0" 1251 | pretty-hrtime "^1.0.0" 1252 | semver "^4.1.0" 1253 | tildify "^1.0.0" 1254 | v8flags "^2.0.2" 1255 | vinyl-fs "^0.3.0" 1256 | 1257 | gulplog@^1.0.0: 1258 | version "1.0.0" 1259 | resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" 1260 | dependencies: 1261 | glogg "^1.0.0" 1262 | 1263 | har-schema@^1.0.5: 1264 | version "1.0.5" 1265 | resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" 1266 | 1267 | har-validator@~2.0.6: 1268 | version "2.0.6" 1269 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d" 1270 | dependencies: 1271 | chalk "^1.1.1" 1272 | commander "^2.9.0" 1273 | is-my-json-valid "^2.12.4" 1274 | pinkie-promise "^2.0.0" 1275 | 1276 | har-validator@~4.2.1: 1277 | version "4.2.1" 1278 | resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" 1279 | dependencies: 1280 | ajv "^4.9.1" 1281 | har-schema "^1.0.5" 1282 | 1283 | has-ansi@^0.1.0: 1284 | version "0.1.0" 1285 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-0.1.0.tgz#84f265aae8c0e6a88a12d7022894b7568894c62e" 1286 | dependencies: 1287 | ansi-regex "^0.2.0" 1288 | 1289 | has-ansi@^2.0.0: 1290 | version "2.0.0" 1291 | resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" 1292 | dependencies: 1293 | ansi-regex "^2.0.0" 1294 | 1295 | has-binary@0.1.6: 1296 | version "0.1.6" 1297 | resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.6.tgz#25326f39cfa4f616ad8787894e3af2cfbc7b6e10" 1298 | dependencies: 1299 | isarray "0.0.1" 1300 | 1301 | has-binary@0.1.7: 1302 | version "0.1.7" 1303 | resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c" 1304 | dependencies: 1305 | isarray "0.0.1" 1306 | 1307 | has-cors@1.1.0: 1308 | version "1.1.0" 1309 | resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39" 1310 | 1311 | has-flag@^1.0.0: 1312 | version "1.0.0" 1313 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" 1314 | 1315 | has-gulplog@^0.1.0: 1316 | version "0.1.0" 1317 | resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" 1318 | dependencies: 1319 | sparkles "^1.0.0" 1320 | 1321 | has-unicode@^2.0.0: 1322 | version "2.0.1" 1323 | resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" 1324 | 1325 | hawk@~3.1.3: 1326 | version "3.1.3" 1327 | resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" 1328 | dependencies: 1329 | boom "2.x.x" 1330 | cryptiles "2.x.x" 1331 | hoek "2.x.x" 1332 | sntp "1.x.x" 1333 | 1334 | hoek@2.x.x: 1335 | version "2.16.3" 1336 | resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" 1337 | 1338 | homedir-polyfill@^1.0.0: 1339 | version "1.0.1" 1340 | resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" 1341 | dependencies: 1342 | parse-passwd "^1.0.0" 1343 | 1344 | hosted-git-info@^2.1.4: 1345 | version "2.2.0" 1346 | resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.2.0.tgz#7a0d097863d886c0fabbdcd37bf1758d8becf8a5" 1347 | 1348 | http-errors@~1.5.0: 1349 | version "1.5.1" 1350 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.1.tgz#788c0d2c1de2c81b9e6e8c01843b6b97eb920750" 1351 | dependencies: 1352 | inherits "2.0.3" 1353 | setprototypeof "1.0.2" 1354 | statuses ">= 1.3.1 < 2" 1355 | 1356 | http-errors@~1.6.1: 1357 | version "1.6.1" 1358 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.1.tgz#5f8b8ed98aca545656bf572997387f904a722257" 1359 | dependencies: 1360 | depd "1.1.0" 1361 | inherits "2.0.3" 1362 | setprototypeof "1.0.3" 1363 | statuses ">= 1.3.1 < 2" 1364 | 1365 | http-proxy@1.15.2: 1366 | version "1.15.2" 1367 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31" 1368 | dependencies: 1369 | eventemitter3 "1.x.x" 1370 | requires-port "1.x.x" 1371 | 1372 | http-signature@~1.1.0: 1373 | version "1.1.1" 1374 | resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" 1375 | dependencies: 1376 | assert-plus "^0.2.0" 1377 | jsprim "^1.2.2" 1378 | sshpk "^1.7.0" 1379 | 1380 | immutable@3.8.1, immutable@^3.7.6: 1381 | version "3.8.1" 1382 | resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.8.1.tgz#200807f11ab0f72710ea485542de088075f68cd2" 1383 | 1384 | indexof@0.0.1: 1385 | version "0.0.1" 1386 | resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" 1387 | 1388 | inflight@^1.0.4: 1389 | version "1.0.6" 1390 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1391 | dependencies: 1392 | once "^1.3.0" 1393 | wrappy "1" 1394 | 1395 | inherits@1: 1396 | version "1.0.2" 1397 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" 1398 | 1399 | inherits@2, inherits@2.0.3, inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1: 1400 | version "2.0.3" 1401 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" 1402 | 1403 | inherits@2.0.1: 1404 | version "2.0.1" 1405 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" 1406 | 1407 | ini@^1.3.4, ini@~1.3.0: 1408 | version "1.3.4" 1409 | resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e" 1410 | 1411 | interpret@^1.0.0: 1412 | version "1.0.1" 1413 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c" 1414 | 1415 | invert-kv@^1.0.0: 1416 | version "1.0.0" 1417 | resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" 1418 | 1419 | ipaddr.js@1.2.0: 1420 | version "1.2.0" 1421 | resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.2.0.tgz#8aba49c9192799585bdd643e0ccb50e8ae777ba4" 1422 | 1423 | is-absolute@^0.2.3: 1424 | version "0.2.6" 1425 | resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" 1426 | dependencies: 1427 | is-relative "^0.2.1" 1428 | is-windows "^0.2.0" 1429 | 1430 | is-arrayish@^0.2.1: 1431 | version "0.2.1" 1432 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" 1433 | 1434 | is-binary-path@^1.0.0: 1435 | version "1.0.1" 1436 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" 1437 | dependencies: 1438 | binary-extensions "^1.0.0" 1439 | 1440 | is-buffer@^1.0.2: 1441 | version "1.1.5" 1442 | resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.5.tgz#1f3b26ef613b214b88cbca23cc6c01d87961eecc" 1443 | 1444 | is-builtin-module@^1.0.0: 1445 | version "1.0.0" 1446 | resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe" 1447 | dependencies: 1448 | builtin-modules "^1.0.0" 1449 | 1450 | is-dotfile@^1.0.0: 1451 | version "1.0.2" 1452 | resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d" 1453 | 1454 | is-equal-shallow@^0.1.3: 1455 | version "0.1.3" 1456 | resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" 1457 | dependencies: 1458 | is-primitive "^2.0.0" 1459 | 1460 | is-extendable@^0.1.1: 1461 | version "0.1.1" 1462 | resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" 1463 | 1464 | is-extglob@^1.0.0: 1465 | version "1.0.0" 1466 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" 1467 | 1468 | is-fullwidth-code-point@^1.0.0: 1469 | version "1.0.0" 1470 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" 1471 | dependencies: 1472 | number-is-nan "^1.0.0" 1473 | 1474 | is-glob@^2.0.0, is-glob@^2.0.1: 1475 | version "2.0.1" 1476 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" 1477 | dependencies: 1478 | is-extglob "^1.0.0" 1479 | 1480 | is-my-json-valid@^2.12.4: 1481 | version "2.16.0" 1482 | resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz#f079dd9bfdae65ee2038aae8acbc86ab109e3693" 1483 | dependencies: 1484 | generate-function "^2.0.0" 1485 | generate-object-property "^1.1.0" 1486 | jsonpointer "^4.0.0" 1487 | xtend "^4.0.0" 1488 | 1489 | is-number-like@^1.0.3: 1490 | version "1.0.7" 1491 | resolved "https://registry.yarnpkg.com/is-number-like/-/is-number-like-1.0.7.tgz#a38d6b0fd2cd4282449128859eed86c03fd23552" 1492 | dependencies: 1493 | bubleify "^0.5.1" 1494 | lodash.isfinite "^3.3.2" 1495 | 1496 | is-number@^2.0.2, is-number@^2.1.0: 1497 | version "2.1.0" 1498 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" 1499 | dependencies: 1500 | kind-of "^3.0.2" 1501 | 1502 | is-path-cwd@^1.0.0: 1503 | version "1.0.0" 1504 | resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" 1505 | 1506 | is-path-in-cwd@^1.0.0: 1507 | version "1.0.0" 1508 | resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc" 1509 | dependencies: 1510 | is-path-inside "^1.0.0" 1511 | 1512 | is-path-inside@^1.0.0: 1513 | version "1.0.0" 1514 | resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f" 1515 | dependencies: 1516 | path-is-inside "^1.0.1" 1517 | 1518 | is-posix-bracket@^0.1.0: 1519 | version "0.1.1" 1520 | resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" 1521 | 1522 | is-primitive@^2.0.0: 1523 | version "2.0.0" 1524 | resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" 1525 | 1526 | is-property@^1.0.0: 1527 | version "1.0.2" 1528 | resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84" 1529 | 1530 | is-relative@^0.2.1: 1531 | version "0.2.1" 1532 | resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" 1533 | dependencies: 1534 | is-unc-path "^0.1.1" 1535 | 1536 | is-typedarray@~1.0.0: 1537 | version "1.0.0" 1538 | resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" 1539 | 1540 | is-unc-path@^0.1.1: 1541 | version "0.1.2" 1542 | resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" 1543 | dependencies: 1544 | unc-path-regex "^0.1.0" 1545 | 1546 | is-utf8@^0.2.0: 1547 | version "0.2.1" 1548 | resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" 1549 | 1550 | is-windows@^0.2.0: 1551 | version "0.2.0" 1552 | resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" 1553 | 1554 | isarray@0.0.1: 1555 | version "0.0.1" 1556 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" 1557 | 1558 | isarray@1.0.0, isarray@~1.0.0: 1559 | version "1.0.0" 1560 | resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" 1561 | 1562 | isexe@^1.1.1: 1563 | version "1.1.2" 1564 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0" 1565 | 1566 | isobject@^2.0.0: 1567 | version "2.1.0" 1568 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" 1569 | dependencies: 1570 | isarray "1.0.0" 1571 | 1572 | isstream@~0.1.2: 1573 | version "0.1.2" 1574 | resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" 1575 | 1576 | jodid25519@^1.0.0: 1577 | version "1.0.2" 1578 | resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967" 1579 | dependencies: 1580 | jsbn "~0.1.0" 1581 | 1582 | jsbn@~0.1.0: 1583 | version "0.1.1" 1584 | resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" 1585 | 1586 | json-schema@0.2.3: 1587 | version "0.2.3" 1588 | resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" 1589 | 1590 | json-stable-stringify@^1.0.1: 1591 | version "1.0.1" 1592 | resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" 1593 | dependencies: 1594 | jsonify "~0.0.0" 1595 | 1596 | json-stringify-safe@~5.0.1: 1597 | version "5.0.1" 1598 | resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" 1599 | 1600 | json3@3.2.6: 1601 | version "3.2.6" 1602 | resolved "https://registry.yarnpkg.com/json3/-/json3-3.2.6.tgz#f6efc93c06a04de9aec53053df2559bb19e2038b" 1603 | 1604 | json3@3.3.2: 1605 | version "3.3.2" 1606 | resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" 1607 | 1608 | jsonfile@^2.1.0: 1609 | version "2.4.0" 1610 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" 1611 | optionalDependencies: 1612 | graceful-fs "^4.1.6" 1613 | 1614 | jsonify@~0.0.0: 1615 | version "0.0.0" 1616 | resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" 1617 | 1618 | jsonpointer@^4.0.0: 1619 | version "4.0.1" 1620 | resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9" 1621 | 1622 | jsprim@^1.2.2: 1623 | version "1.3.1" 1624 | resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252" 1625 | dependencies: 1626 | extsprintf "1.0.2" 1627 | json-schema "0.2.3" 1628 | verror "1.3.6" 1629 | 1630 | kind-of@^3.0.2: 1631 | version "3.1.0" 1632 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.1.0.tgz#475d698a5e49ff5e53d14e3e732429dc8bf4cf47" 1633 | dependencies: 1634 | is-buffer "^1.0.2" 1635 | 1636 | klaw@^1.0.0: 1637 | version "1.3.1" 1638 | resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" 1639 | optionalDependencies: 1640 | graceful-fs "^4.1.9" 1641 | 1642 | lcid@^1.0.0: 1643 | version "1.0.0" 1644 | resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" 1645 | dependencies: 1646 | invert-kv "^1.0.0" 1647 | 1648 | liftoff@^2.1.0: 1649 | version "2.3.0" 1650 | resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.3.0.tgz#a98f2ff67183d8ba7cfaca10548bd7ff0550b385" 1651 | dependencies: 1652 | extend "^3.0.0" 1653 | findup-sync "^0.4.2" 1654 | fined "^1.0.1" 1655 | flagged-respawn "^0.3.2" 1656 | lodash.isplainobject "^4.0.4" 1657 | lodash.isstring "^4.0.1" 1658 | lodash.mapvalues "^4.4.0" 1659 | rechoir "^0.6.2" 1660 | resolve "^1.1.7" 1661 | 1662 | limiter@^1.0.5: 1663 | version "1.1.0" 1664 | resolved "https://registry.yarnpkg.com/limiter/-/limiter-1.1.0.tgz#6e2bd12ca3fcdaa11f224e2e53c896df3f08d913" 1665 | 1666 | lite-server@^2.2.2: 1667 | version "2.3.0" 1668 | resolved "https://registry.yarnpkg.com/lite-server/-/lite-server-2.3.0.tgz#5b4cc8f5d5fd4836105480ab2ac48a3a0de2b0c8" 1669 | dependencies: 1670 | browser-sync "^2.18.5" 1671 | connect-history-api-fallback "^1.2.0" 1672 | connect-logger "0.0.1" 1673 | lodash "^4.11.1" 1674 | minimist "1.2.0" 1675 | 1676 | load-json-file@^1.0.0: 1677 | version "1.1.0" 1678 | resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" 1679 | dependencies: 1680 | graceful-fs "^4.1.2" 1681 | parse-json "^2.2.0" 1682 | pify "^2.0.0" 1683 | pinkie-promise "^2.0.0" 1684 | strip-bom "^2.0.0" 1685 | 1686 | localtunnel@1.8.2: 1687 | version "1.8.2" 1688 | resolved "https://registry.yarnpkg.com/localtunnel/-/localtunnel-1.8.2.tgz#913051e8328b51f75ad8a22ad1f5c5b8c599a359" 1689 | dependencies: 1690 | debug "2.2.0" 1691 | openurl "1.1.0" 1692 | request "2.78.0" 1693 | yargs "3.29.0" 1694 | 1695 | lodash._basecopy@^3.0.0: 1696 | version "3.0.1" 1697 | resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" 1698 | 1699 | lodash._basetostring@^3.0.0: 1700 | version "3.0.1" 1701 | resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" 1702 | 1703 | lodash._basevalues@^3.0.0: 1704 | version "3.0.0" 1705 | resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" 1706 | 1707 | lodash._getnative@^3.0.0: 1708 | version "3.9.1" 1709 | resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" 1710 | 1711 | lodash._isiterateecall@^3.0.0: 1712 | version "3.0.9" 1713 | resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" 1714 | 1715 | lodash._reescape@^3.0.0: 1716 | version "3.0.0" 1717 | resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" 1718 | 1719 | lodash._reevaluate@^3.0.0: 1720 | version "3.0.0" 1721 | resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" 1722 | 1723 | lodash._reinterpolate@^3.0.0: 1724 | version "3.0.0" 1725 | resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" 1726 | 1727 | lodash._root@^3.0.0: 1728 | version "3.0.1" 1729 | resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" 1730 | 1731 | lodash.assignwith@^4.0.7: 1732 | version "4.2.0" 1733 | resolved "https://registry.yarnpkg.com/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz#127a97f02adc41751a954d24b0de17e100e038eb" 1734 | 1735 | lodash.escape@^3.0.0: 1736 | version "3.2.0" 1737 | resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" 1738 | dependencies: 1739 | lodash._root "^3.0.0" 1740 | 1741 | lodash.isarguments@^3.0.0: 1742 | version "3.1.0" 1743 | resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" 1744 | 1745 | lodash.isarray@^3.0.0: 1746 | version "3.0.4" 1747 | resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" 1748 | 1749 | lodash.isempty@^4.2.1: 1750 | version "4.4.0" 1751 | resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" 1752 | 1753 | lodash.isfinite@^3.3.2: 1754 | version "3.3.2" 1755 | resolved "https://registry.yarnpkg.com/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz#fb89b65a9a80281833f0b7478b3a5104f898ebb3" 1756 | 1757 | lodash.isplainobject@^4.0.4: 1758 | version "4.0.6" 1759 | resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" 1760 | 1761 | lodash.isstring@^4.0.1: 1762 | version "4.0.1" 1763 | resolved "https://registry.yarnpkg.com/lodash.isstring/-/lodash.isstring-4.0.1.tgz#d527dfb5456eca7cc9bb95d5daeaf88ba54a5451" 1764 | 1765 | lodash.keys@^3.0.0: 1766 | version "3.1.2" 1767 | resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" 1768 | dependencies: 1769 | lodash._getnative "^3.0.0" 1770 | lodash.isarguments "^3.0.0" 1771 | lodash.isarray "^3.0.0" 1772 | 1773 | lodash.mapvalues@^4.4.0: 1774 | version "4.6.0" 1775 | resolved "https://registry.yarnpkg.com/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz#1bafa5005de9dd6f4f26668c30ca37230cc9689c" 1776 | 1777 | lodash.pick@^4.2.1: 1778 | version "4.4.0" 1779 | resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" 1780 | 1781 | lodash.restparam@^3.0.0: 1782 | version "3.6.1" 1783 | resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" 1784 | 1785 | lodash.template@^3.0.0: 1786 | version "3.6.2" 1787 | resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" 1788 | dependencies: 1789 | lodash._basecopy "^3.0.0" 1790 | lodash._basetostring "^3.0.0" 1791 | lodash._basevalues "^3.0.0" 1792 | lodash._isiterateecall "^3.0.0" 1793 | lodash._reinterpolate "^3.0.0" 1794 | lodash.escape "^3.0.0" 1795 | lodash.keys "^3.0.0" 1796 | lodash.restparam "^3.0.0" 1797 | lodash.templatesettings "^3.0.0" 1798 | 1799 | lodash.templatesettings@^3.0.0: 1800 | version "3.1.1" 1801 | resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" 1802 | dependencies: 1803 | lodash._reinterpolate "^3.0.0" 1804 | lodash.escape "^3.0.0" 1805 | 1806 | lodash@^3.10.1: 1807 | version "3.10.1" 1808 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" 1809 | 1810 | lodash@^4.11.1, lodash@^4.5.1: 1811 | version "4.17.4" 1812 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" 1813 | 1814 | lodash@~1.0.1: 1815 | version "1.0.2" 1816 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" 1817 | 1818 | lru-cache@2: 1819 | version "2.7.3" 1820 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" 1821 | 1822 | magic-string@^0.14.0: 1823 | version "0.14.0" 1824 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.14.0.tgz#57224aef1701caeed273b17a39a956e72b172462" 1825 | dependencies: 1826 | vlq "^0.2.1" 1827 | 1828 | map-cache@^0.2.0: 1829 | version "0.2.2" 1830 | resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" 1831 | 1832 | media-typer@0.3.0: 1833 | version "0.3.0" 1834 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1835 | 1836 | merge-descriptors@1.0.1: 1837 | version "1.0.1" 1838 | resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" 1839 | 1840 | methods@~1.1.2: 1841 | version "1.1.2" 1842 | resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" 1843 | 1844 | micromatch@2.3.11, micromatch@^2.1.5, micromatch@^2.3.7: 1845 | version "2.3.11" 1846 | resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" 1847 | dependencies: 1848 | arr-diff "^2.0.0" 1849 | array-unique "^0.2.1" 1850 | braces "^1.8.2" 1851 | expand-brackets "^0.1.4" 1852 | extglob "^0.3.1" 1853 | filename-regex "^2.0.0" 1854 | is-extglob "^1.0.0" 1855 | is-glob "^2.0.1" 1856 | kind-of "^3.0.2" 1857 | normalize-path "^2.0.1" 1858 | object.omit "^2.0.0" 1859 | parse-glob "^3.0.4" 1860 | regex-cache "^0.4.2" 1861 | 1862 | mime-db@~1.12.0: 1863 | version "1.12.0" 1864 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz#3d0c63180f458eb10d325aaa37d7c58ae312e9d7" 1865 | 1866 | mime-db@~1.26.0: 1867 | version "1.26.0" 1868 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.26.0.tgz#eaffcd0e4fc6935cf8134da246e2e6c35305adff" 1869 | 1870 | mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.13, mime-types@~2.1.7: 1871 | version "2.1.14" 1872 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.14.tgz#f7ef7d97583fcaf3b7d282b6f8b5679dab1e94ee" 1873 | dependencies: 1874 | mime-db "~1.26.0" 1875 | 1876 | mime-types@~2.0.4: 1877 | version "2.0.14" 1878 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.0.14.tgz#310e159db23e077f8bb22b748dabfa4957140aa6" 1879 | dependencies: 1880 | mime-db "~1.12.0" 1881 | 1882 | mime@1.2.4: 1883 | version "1.2.4" 1884 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.4.tgz#11b5fdaf29c2509255176b80ad520294f5de92b7" 1885 | 1886 | mime@1.3.4, "mime@>= 0.0.1": 1887 | version "1.3.4" 1888 | resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53" 1889 | 1890 | minimatch@^2.0.1: 1891 | version "2.0.10" 1892 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" 1893 | dependencies: 1894 | brace-expansion "^1.0.0" 1895 | 1896 | minimatch@^3.0.0, minimatch@^3.0.2: 1897 | version "3.0.3" 1898 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774" 1899 | dependencies: 1900 | brace-expansion "^1.0.0" 1901 | 1902 | minimatch@~0.2.11: 1903 | version "0.2.14" 1904 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" 1905 | dependencies: 1906 | lru-cache "2" 1907 | sigmund "~1.0.0" 1908 | 1909 | minimist@0.0.8: 1910 | version "0.0.8" 1911 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" 1912 | 1913 | minimist@1.2.0, minimist@^1.1.0, minimist@^1.2.0: 1914 | version "1.2.0" 1915 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" 1916 | 1917 | mkdirp@0.3.0: 1918 | version "0.3.0" 1919 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.3.0.tgz#1bbf5ab1ba827af23575143490426455f481fe1e" 1920 | 1921 | "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@~0.5.1: 1922 | version "0.5.1" 1923 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" 1924 | dependencies: 1925 | minimist "0.0.8" 1926 | 1927 | moment@*: 1928 | version "2.17.1" 1929 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.17.1.tgz#fed9506063f36b10f066c8b59a144d7faebe1d82" 1930 | 1931 | ms@0.7.1: 1932 | version "0.7.1" 1933 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098" 1934 | 1935 | ms@0.7.2: 1936 | version "0.7.2" 1937 | resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.2.tgz#ae25cf2512b3885a1d95d7f037868d8431124765" 1938 | 1939 | multipipe@^0.1.2: 1940 | version "0.1.2" 1941 | resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" 1942 | dependencies: 1943 | duplexer2 "0.0.2" 1944 | 1945 | nan@^2.3.0: 1946 | version "2.5.1" 1947 | resolved "https://registry.yarnpkg.com/nan/-/nan-2.5.1.tgz#d5b01691253326a97a2bbee9e61c55d8d60351e2" 1948 | 1949 | natives@^1.1.0: 1950 | version "1.1.0" 1951 | resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.0.tgz#e9ff841418a6b2ec7a495e939984f78f163e6e31" 1952 | 1953 | negotiator@0.4.9: 1954 | version "0.4.9" 1955 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.4.9.tgz#92e46b6db53c7e421ed64a2bc94f08be7630df3f" 1956 | 1957 | negotiator@0.6.1: 1958 | version "0.6.1" 1959 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" 1960 | 1961 | node-pre-gyp@^0.6.29: 1962 | version "0.6.33" 1963 | resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.33.tgz#640ac55198f6a925972e0c16c4ac26a034d5ecc9" 1964 | dependencies: 1965 | mkdirp "~0.5.1" 1966 | nopt "~3.0.6" 1967 | npmlog "^4.0.1" 1968 | rc "~1.1.6" 1969 | request "^2.79.0" 1970 | rimraf "~2.5.4" 1971 | semver "~5.3.0" 1972 | tar "~2.2.1" 1973 | tar-pack "~3.3.0" 1974 | 1975 | node-uuid@~1.4.7: 1976 | version "1.4.7" 1977 | resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f" 1978 | 1979 | nopt@3.0.x, nopt@~3.0.6: 1980 | version "3.0.6" 1981 | resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" 1982 | dependencies: 1983 | abbrev "1" 1984 | 1985 | normalize-package-data@^2.3.2: 1986 | version "2.3.6" 1987 | resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.6.tgz#498fa420c96401f787402ba21e600def9f981fff" 1988 | dependencies: 1989 | hosted-git-info "^2.1.4" 1990 | is-builtin-module "^1.0.0" 1991 | semver "2 || 3 || 4 || 5" 1992 | validate-npm-package-license "^3.0.1" 1993 | 1994 | normalize-path@^2.0.1: 1995 | version "2.0.1" 1996 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a" 1997 | 1998 | npmlog@^4.0.1: 1999 | version "4.0.2" 2000 | resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.2.tgz#d03950e0e78ce1527ba26d2a7592e9348ac3e75f" 2001 | dependencies: 2002 | are-we-there-yet "~1.1.2" 2003 | console-control-strings "~1.1.0" 2004 | gauge "~2.7.1" 2005 | set-blocking "~2.0.0" 2006 | 2007 | number-is-nan@^1.0.0: 2008 | version "1.0.1" 2009 | resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" 2010 | 2011 | oauth-sign@~0.8.1: 2012 | version "0.8.2" 2013 | resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" 2014 | 2015 | object-assign@4.1.0: 2016 | version "4.1.0" 2017 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0" 2018 | 2019 | object-assign@^3.0.0: 2020 | version "3.0.0" 2021 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" 2022 | 2023 | object-assign@^4.0.1, object-assign@^4.1.0: 2024 | version "4.1.1" 2025 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 2026 | 2027 | object-component@0.0.3: 2028 | version "0.0.3" 2029 | resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291" 2030 | 2031 | object-path@^0.9.0: 2032 | version "0.9.2" 2033 | resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.9.2.tgz#0fd9a74fc5fad1ae3968b586bda5c632bd6c05a5" 2034 | 2035 | object.omit@^2.0.0: 2036 | version "2.0.1" 2037 | resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" 2038 | dependencies: 2039 | for-own "^0.1.4" 2040 | is-extendable "^0.1.1" 2041 | 2042 | on-finished@~2.3.0: 2043 | version "2.3.0" 2044 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 2045 | dependencies: 2046 | ee-first "1.1.1" 2047 | 2048 | once@^1.3.0: 2049 | version "1.4.0" 2050 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 2051 | dependencies: 2052 | wrappy "1" 2053 | 2054 | once@~1.3.0, once@~1.3.3: 2055 | version "1.3.3" 2056 | resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" 2057 | dependencies: 2058 | wrappy "1" 2059 | 2060 | openurl@1.1.0: 2061 | version "1.1.0" 2062 | resolved "https://registry.yarnpkg.com/openurl/-/openurl-1.1.0.tgz#e2f2189d999c04823201f083f0f1a7cd8903187a" 2063 | 2064 | opn@4.0.2: 2065 | version "4.0.2" 2066 | resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95" 2067 | dependencies: 2068 | object-assign "^4.0.1" 2069 | pinkie-promise "^2.0.0" 2070 | 2071 | options@>=0.0.5: 2072 | version "0.0.6" 2073 | resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f" 2074 | 2075 | orchestrator@^0.3.0: 2076 | version "0.3.8" 2077 | resolved "https://registry.yarnpkg.com/orchestrator/-/orchestrator-0.3.8.tgz#14e7e9e2764f7315fbac184e506c7aa6df94ad7e" 2078 | dependencies: 2079 | end-of-stream "~0.1.5" 2080 | sequencify "~0.0.7" 2081 | stream-consume "~0.1.0" 2082 | 2083 | ordered-read-streams@^0.1.0: 2084 | version "0.1.0" 2085 | resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" 2086 | 2087 | os-homedir@^1.0.0, os-homedir@^1.0.1: 2088 | version "1.0.2" 2089 | resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" 2090 | 2091 | os-locale@^1.4.0: 2092 | version "1.4.0" 2093 | resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" 2094 | dependencies: 2095 | lcid "^1.0.0" 2096 | 2097 | parse-filepath@^1.0.1: 2098 | version "1.0.1" 2099 | resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.1.tgz#159d6155d43904d16c10ef698911da1e91969b73" 2100 | dependencies: 2101 | is-absolute "^0.2.3" 2102 | map-cache "^0.2.0" 2103 | path-root "^0.1.1" 2104 | 2105 | parse-glob@^3.0.4: 2106 | version "3.0.4" 2107 | resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" 2108 | dependencies: 2109 | glob-base "^0.3.0" 2110 | is-dotfile "^1.0.0" 2111 | is-extglob "^1.0.0" 2112 | is-glob "^2.0.0" 2113 | 2114 | parse-json@^2.2.0: 2115 | version "2.2.0" 2116 | resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" 2117 | dependencies: 2118 | error-ex "^1.2.0" 2119 | 2120 | parse-passwd@^1.0.0: 2121 | version "1.0.0" 2122 | resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" 2123 | 2124 | parsejson@0.0.1: 2125 | version "0.0.1" 2126 | resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.1.tgz#9b10c6c0d825ab589e685153826de0a3ba278bcc" 2127 | dependencies: 2128 | better-assert "~1.0.0" 2129 | 2130 | parsejson@0.0.3: 2131 | version "0.0.3" 2132 | resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.3.tgz#ab7e3759f209ece99437973f7d0f1f64ae0e64ab" 2133 | dependencies: 2134 | better-assert "~1.0.0" 2135 | 2136 | parseqs@0.0.2: 2137 | version "0.0.2" 2138 | resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.2.tgz#9dfe70b2cddac388bde4f35b1f240fa58adbe6c7" 2139 | dependencies: 2140 | better-assert "~1.0.0" 2141 | 2142 | parseqs@0.0.5: 2143 | version "0.0.5" 2144 | resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.5.tgz#d5208a3738e46766e291ba2ea173684921a8b89d" 2145 | dependencies: 2146 | better-assert "~1.0.0" 2147 | 2148 | parseuri@0.0.4: 2149 | version "0.0.4" 2150 | resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.4.tgz#806582a39887e1ea18dd5e2fe0e01902268e9350" 2151 | dependencies: 2152 | better-assert "~1.0.0" 2153 | 2154 | parseuri@0.0.5: 2155 | version "0.0.5" 2156 | resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.5.tgz#80204a50d4dbb779bfdc6ebe2778d90e4bce320a" 2157 | dependencies: 2158 | better-assert "~1.0.0" 2159 | 2160 | parseurl@~1.3.1: 2161 | version "1.3.1" 2162 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56" 2163 | 2164 | path-exists@^2.0.0: 2165 | version "2.1.0" 2166 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" 2167 | dependencies: 2168 | pinkie-promise "^2.0.0" 2169 | 2170 | path-is-absolute@^1.0.0: 2171 | version "1.0.1" 2172 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 2173 | 2174 | path-is-inside@^1.0.1: 2175 | version "1.0.2" 2176 | resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" 2177 | 2178 | path-parse@^1.0.5: 2179 | version "1.0.5" 2180 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.5.tgz#3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1" 2181 | 2182 | path-root-regex@^0.1.0: 2183 | version "0.1.2" 2184 | resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" 2185 | 2186 | path-root@^0.1.1: 2187 | version "0.1.1" 2188 | resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" 2189 | dependencies: 2190 | path-root-regex "^0.1.0" 2191 | 2192 | path-to-regexp@0.1.7: 2193 | version "0.1.7" 2194 | resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" 2195 | 2196 | path-type@^1.0.0: 2197 | version "1.1.0" 2198 | resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" 2199 | dependencies: 2200 | graceful-fs "^4.1.2" 2201 | pify "^2.0.0" 2202 | pinkie-promise "^2.0.0" 2203 | 2204 | path@^0.12.7: 2205 | version "0.12.7" 2206 | resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" 2207 | dependencies: 2208 | process "^0.11.1" 2209 | util "^0.10.3" 2210 | 2211 | performance-now@^0.2.0: 2212 | version "0.2.0" 2213 | resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" 2214 | 2215 | pify@^2.0.0: 2216 | version "2.3.0" 2217 | resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" 2218 | 2219 | pinkie-promise@^2.0.0: 2220 | version "2.0.1" 2221 | resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" 2222 | dependencies: 2223 | pinkie "^2.0.0" 2224 | 2225 | pinkie@^2.0.0: 2226 | version "2.0.4" 2227 | resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" 2228 | 2229 | portscanner@2.1.1: 2230 | version "2.1.1" 2231 | resolved "https://registry.yarnpkg.com/portscanner/-/portscanner-2.1.1.tgz#eabb409e4de24950f5a2a516d35ae769343fbb96" 2232 | dependencies: 2233 | async "1.5.2" 2234 | is-number-like "^1.0.3" 2235 | 2236 | preserve@^0.2.0: 2237 | version "0.2.0" 2238 | resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" 2239 | 2240 | pretty-hrtime@^1.0.0: 2241 | version "1.0.3" 2242 | resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" 2243 | 2244 | process-nextick-args@~1.0.6: 2245 | version "1.0.7" 2246 | resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3" 2247 | 2248 | process@^0.11.1: 2249 | version "0.11.9" 2250 | resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1" 2251 | 2252 | proxy-addr@~1.1.3: 2253 | version "1.1.3" 2254 | resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.3.tgz#dc97502f5722e888467b3fa2297a7b1ff47df074" 2255 | dependencies: 2256 | forwarded "~0.1.0" 2257 | ipaddr.js "1.2.0" 2258 | 2259 | punycode@^1.4.1: 2260 | version "1.4.1" 2261 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 2262 | 2263 | qs@0.4.x: 2264 | version "0.4.2" 2265 | resolved "https://registry.yarnpkg.com/qs/-/qs-0.4.2.tgz#3cac4c861e371a8c9c4770ac23cda8de639b8e5f" 2266 | 2267 | qs@6.2.1: 2268 | version "6.2.1" 2269 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.1.tgz#ce03c5ff0935bc1d9d69a9f14cbd18e568d67625" 2270 | 2271 | qs@6.4.0, "qs@>= 0.4.0", qs@~6.4.0: 2272 | version "6.4.0" 2273 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" 2274 | 2275 | qs@~6.3.0: 2276 | version "6.3.2" 2277 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.2.tgz#e75bd5f6e268122a2a0e0bda630b2550c166502c" 2278 | 2279 | randomatic@^1.1.3: 2280 | version "1.1.6" 2281 | resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.6.tgz#110dcabff397e9dcff7c0789ccc0a49adf1ec5bb" 2282 | dependencies: 2283 | is-number "^2.0.2" 2284 | kind-of "^3.0.2" 2285 | 2286 | range-parser@~1.2.0: 2287 | version "1.2.0" 2288 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e" 2289 | 2290 | rc@~1.1.6: 2291 | version "1.1.7" 2292 | resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.7.tgz#c5ea564bb07aff9fd3a5b32e906c1d3a65940fea" 2293 | dependencies: 2294 | deep-extend "~0.4.0" 2295 | ini "~1.3.0" 2296 | minimist "^1.2.0" 2297 | strip-json-comments "~2.0.1" 2298 | 2299 | read-pkg-up@^1.0.1: 2300 | version "1.0.1" 2301 | resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" 2302 | dependencies: 2303 | find-up "^1.0.0" 2304 | read-pkg "^1.0.0" 2305 | 2306 | read-pkg@^1.0.0: 2307 | version "1.1.0" 2308 | resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" 2309 | dependencies: 2310 | load-json-file "^1.0.0" 2311 | normalize-package-data "^2.3.2" 2312 | path-type "^1.0.0" 2313 | 2314 | "readable-stream@>=1.0.33-1 <1.1.0-0": 2315 | version "1.0.34" 2316 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" 2317 | dependencies: 2318 | core-util-is "~1.0.0" 2319 | inherits "~2.0.1" 2320 | isarray "0.0.1" 2321 | string_decoder "~0.10.x" 2322 | 2323 | "readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.2, readable-stream@^2.1.5: 2324 | version "2.2.3" 2325 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.3.tgz#9cf49463985df016c8ae8813097a9293a9b33729" 2326 | dependencies: 2327 | buffer-shims "^1.0.0" 2328 | core-util-is "~1.0.0" 2329 | inherits "~2.0.1" 2330 | isarray "~1.0.0" 2331 | process-nextick-args "~1.0.6" 2332 | string_decoder "~0.10.x" 2333 | util-deprecate "~1.0.1" 2334 | 2335 | readable-stream@~1.1.9: 2336 | version "1.1.14" 2337 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" 2338 | dependencies: 2339 | core-util-is "~1.0.0" 2340 | inherits "~2.0.1" 2341 | isarray "0.0.1" 2342 | string_decoder "~0.10.x" 2343 | 2344 | readable-stream@~2.1.4: 2345 | version "2.1.5" 2346 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0" 2347 | dependencies: 2348 | buffer-shims "^1.0.0" 2349 | core-util-is "~1.0.0" 2350 | inherits "~2.0.1" 2351 | isarray "~1.0.0" 2352 | process-nextick-args "~1.0.6" 2353 | string_decoder "~0.10.x" 2354 | util-deprecate "~1.0.1" 2355 | 2356 | readdirp@^2.0.0: 2357 | version "2.1.0" 2358 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" 2359 | dependencies: 2360 | graceful-fs "^4.1.2" 2361 | minimatch "^3.0.2" 2362 | readable-stream "^2.0.2" 2363 | set-immediate-shim "^1.0.1" 2364 | 2365 | rechoir@^0.6.2: 2366 | version "0.6.2" 2367 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" 2368 | dependencies: 2369 | resolve "^1.1.6" 2370 | 2371 | regex-cache@^0.4.2: 2372 | version "0.4.3" 2373 | resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145" 2374 | dependencies: 2375 | is-equal-shallow "^0.1.3" 2376 | is-primitive "^2.0.0" 2377 | 2378 | repeat-element@^1.1.2: 2379 | version "1.1.2" 2380 | resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a" 2381 | 2382 | repeat-string@^1.5.2: 2383 | version "1.6.1" 2384 | resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" 2385 | 2386 | replace-ext@0.0.1: 2387 | version "0.0.1" 2388 | resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" 2389 | 2390 | request@2.78.0: 2391 | version "2.78.0" 2392 | resolved "https://registry.yarnpkg.com/request/-/request-2.78.0.tgz#e1c8dec346e1c81923b24acdb337f11decabe9cc" 2393 | dependencies: 2394 | aws-sign2 "~0.6.0" 2395 | aws4 "^1.2.1" 2396 | caseless "~0.11.0" 2397 | combined-stream "~1.0.5" 2398 | extend "~3.0.0" 2399 | forever-agent "~0.6.1" 2400 | form-data "~2.1.1" 2401 | har-validator "~2.0.6" 2402 | hawk "~3.1.3" 2403 | http-signature "~1.1.0" 2404 | is-typedarray "~1.0.0" 2405 | isstream "~0.1.2" 2406 | json-stringify-safe "~5.0.1" 2407 | mime-types "~2.1.7" 2408 | node-uuid "~1.4.7" 2409 | oauth-sign "~0.8.1" 2410 | qs "~6.3.0" 2411 | stringstream "~0.0.4" 2412 | tough-cookie "~2.3.0" 2413 | tunnel-agent "~0.4.1" 2414 | 2415 | request@^2.79.0: 2416 | version "2.81.0" 2417 | resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" 2418 | dependencies: 2419 | aws-sign2 "~0.6.0" 2420 | aws4 "^1.2.1" 2421 | caseless "~0.12.0" 2422 | combined-stream "~1.0.5" 2423 | extend "~3.0.0" 2424 | forever-agent "~0.6.1" 2425 | form-data "~2.1.1" 2426 | har-validator "~4.2.1" 2427 | hawk "~3.1.3" 2428 | http-signature "~1.1.0" 2429 | is-typedarray "~1.0.0" 2430 | isstream "~0.1.2" 2431 | json-stringify-safe "~5.0.1" 2432 | mime-types "~2.1.7" 2433 | oauth-sign "~0.8.1" 2434 | performance-now "^0.2.0" 2435 | qs "~6.4.0" 2436 | safe-buffer "^5.0.1" 2437 | stringstream "~0.0.4" 2438 | tough-cookie "~2.3.0" 2439 | tunnel-agent "^0.6.0" 2440 | uuid "^3.0.0" 2441 | 2442 | require-directory@^2.1.1: 2443 | version "2.1.1" 2444 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 2445 | 2446 | require-main-filename@^1.0.1: 2447 | version "1.0.1" 2448 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" 2449 | 2450 | requires-port@1.x.x: 2451 | version "1.0.0" 2452 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 2453 | 2454 | resolve-dir@^0.1.0: 2455 | version "0.1.1" 2456 | resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" 2457 | dependencies: 2458 | expand-tilde "^1.2.2" 2459 | global-modules "^0.2.3" 2460 | 2461 | resolve@^1.1.6, resolve@^1.1.7: 2462 | version "1.3.2" 2463 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.3.2.tgz#1f0442c9e0cbb8136e87b9305f932f46c7f28235" 2464 | dependencies: 2465 | path-parse "^1.0.5" 2466 | 2467 | resp-modifier@6.0.2: 2468 | version "6.0.2" 2469 | resolved "https://registry.yarnpkg.com/resp-modifier/-/resp-modifier-6.0.2.tgz#b124de5c4fbafcba541f48ffa73970f4aa456b4f" 2470 | dependencies: 2471 | debug "^2.2.0" 2472 | minimatch "^3.0.2" 2473 | 2474 | rimraf@2, rimraf@^2.2.8: 2475 | version "2.6.1" 2476 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.1.tgz#c2338ec643df7a1b7fe5c54fa86f57428a55f33d" 2477 | dependencies: 2478 | glob "^7.0.5" 2479 | 2480 | rimraf@~2.5.1, rimraf@~2.5.4: 2481 | version "2.5.4" 2482 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04" 2483 | dependencies: 2484 | glob "^7.0.5" 2485 | 2486 | run-sequence@^1.2.2: 2487 | version "1.2.2" 2488 | resolved "https://registry.yarnpkg.com/run-sequence/-/run-sequence-1.2.2.tgz#5095a0bebe98733b0140bd08dd80ec030ddacdeb" 2489 | dependencies: 2490 | chalk "*" 2491 | gulp-util "*" 2492 | 2493 | rx@2.3.24: 2494 | version "2.3.24" 2495 | resolved "https://registry.yarnpkg.com/rx/-/rx-2.3.24.tgz#14f950a4217d7e35daa71bbcbe58eff68ea4b2b7" 2496 | 2497 | rx@4.1.0: 2498 | version "4.1.0" 2499 | resolved "https://registry.yarnpkg.com/rx/-/rx-4.1.0.tgz#a5f13ff79ef3b740fe30aa803fb09f98805d4782" 2500 | 2501 | rxjs@5.0.1: 2502 | version "5.0.1" 2503 | resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.0.1.tgz#3a69bdf9f0ca0a986303370d4708f72bdfac8356" 2504 | dependencies: 2505 | symbol-observable "^1.0.1" 2506 | 2507 | safe-buffer@^5.0.1: 2508 | version "5.0.1" 2509 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.0.1.tgz#d263ca54696cd8a306b5ca6551e92de57918fbe7" 2510 | 2511 | "semver@2 || 3 || 4 || 5", semver@~5.3.0: 2512 | version "5.3.0" 2513 | resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" 2514 | 2515 | semver@^4.1.0: 2516 | version "4.3.6" 2517 | resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da" 2518 | 2519 | send@0.14.1: 2520 | version "0.14.1" 2521 | resolved "https://registry.yarnpkg.com/send/-/send-0.14.1.tgz#a954984325392f51532a7760760e459598c89f7a" 2522 | dependencies: 2523 | debug "~2.2.0" 2524 | depd "~1.1.0" 2525 | destroy "~1.0.4" 2526 | encodeurl "~1.0.1" 2527 | escape-html "~1.0.3" 2528 | etag "~1.7.0" 2529 | fresh "0.3.0" 2530 | http-errors "~1.5.0" 2531 | mime "1.3.4" 2532 | ms "0.7.1" 2533 | on-finished "~2.3.0" 2534 | range-parser "~1.2.0" 2535 | statuses "~1.3.0" 2536 | 2537 | send@0.15.1: 2538 | version "0.15.1" 2539 | resolved "https://registry.yarnpkg.com/send/-/send-0.15.1.tgz#8a02354c26e6f5cca700065f5f0cdeba90ec7b5f" 2540 | dependencies: 2541 | debug "2.6.1" 2542 | depd "~1.1.0" 2543 | destroy "~1.0.4" 2544 | encodeurl "~1.0.1" 2545 | escape-html "~1.0.3" 2546 | etag "~1.8.0" 2547 | fresh "0.5.0" 2548 | http-errors "~1.6.1" 2549 | mime "1.3.4" 2550 | ms "0.7.2" 2551 | on-finished "~2.3.0" 2552 | range-parser "~1.2.0" 2553 | statuses "~1.3.1" 2554 | 2555 | sequencify@~0.0.7: 2556 | version "0.0.7" 2557 | resolved "https://registry.yarnpkg.com/sequencify/-/sequencify-0.0.7.tgz#90cff19d02e07027fd767f5ead3e7b95d1e7380c" 2558 | 2559 | serve-index@1.8.0: 2560 | version "1.8.0" 2561 | resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b" 2562 | dependencies: 2563 | accepts "~1.3.3" 2564 | batch "0.5.3" 2565 | debug "~2.2.0" 2566 | escape-html "~1.0.3" 2567 | http-errors "~1.5.0" 2568 | mime-types "~2.1.11" 2569 | parseurl "~1.3.1" 2570 | 2571 | serve-static@1.11.1: 2572 | version "1.11.1" 2573 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.1.tgz#d6cce7693505f733c759de57befc1af76c0f0805" 2574 | dependencies: 2575 | encodeurl "~1.0.1" 2576 | escape-html "~1.0.3" 2577 | parseurl "~1.3.1" 2578 | send "0.14.1" 2579 | 2580 | serve-static@1.12.1: 2581 | version "1.12.1" 2582 | resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.12.1.tgz#7443a965e3ced647aceb5639fa06bf4d1bbe0039" 2583 | dependencies: 2584 | encodeurl "~1.0.1" 2585 | escape-html "~1.0.3" 2586 | parseurl "~1.3.1" 2587 | send "0.15.1" 2588 | 2589 | server-destroy@1.0.1: 2590 | version "1.0.1" 2591 | resolved "https://registry.yarnpkg.com/server-destroy/-/server-destroy-1.0.1.tgz#f13bf928e42b9c3e79383e61cc3998b5d14e6cdd" 2592 | 2593 | set-blocking@^2.0.0, set-blocking@~2.0.0: 2594 | version "2.0.0" 2595 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 2596 | 2597 | set-immediate-shim@^1.0.1: 2598 | version "1.0.1" 2599 | resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" 2600 | 2601 | setprototypeof@1.0.2: 2602 | version "1.0.2" 2603 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.2.tgz#81a552141ec104b88e89ce383103ad5c66564d08" 2604 | 2605 | setprototypeof@1.0.3: 2606 | version "1.0.3" 2607 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.3.tgz#66567e37043eeb4f04d91bd658c0cbefb55b8e04" 2608 | 2609 | sigmund@~1.0.0: 2610 | version "1.0.1" 2611 | resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" 2612 | 2613 | signal-exit@^3.0.0: 2614 | version "3.0.2" 2615 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" 2616 | 2617 | sntp@1.x.x: 2618 | version "1.0.9" 2619 | resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" 2620 | dependencies: 2621 | hoek "2.x.x" 2622 | 2623 | socket.io-adapter@0.4.0: 2624 | version "0.4.0" 2625 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.4.0.tgz#fb9f82ab1aa65290bf72c3657955b930a991a24f" 2626 | dependencies: 2627 | debug "2.2.0" 2628 | socket.io-parser "2.2.2" 2629 | 2630 | socket.io-adapter@0.5.0: 2631 | version "0.5.0" 2632 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz#cb6d4bb8bec81e1078b99677f9ced0046066bb8b" 2633 | dependencies: 2634 | debug "2.3.3" 2635 | socket.io-parser "2.3.1" 2636 | 2637 | socket.io-client@1.4.5: 2638 | version "1.4.5" 2639 | resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.4.5.tgz#400d630c31e7c9579e45173f977e4f5bd8dc7d2e" 2640 | dependencies: 2641 | backo2 "1.0.2" 2642 | component-bind "1.0.0" 2643 | component-emitter "1.2.0" 2644 | debug "2.2.0" 2645 | engine.io-client "1.6.8" 2646 | has-binary "0.1.7" 2647 | indexof "0.0.1" 2648 | object-component "0.0.3" 2649 | parseuri "0.0.4" 2650 | socket.io-parser "2.2.6" 2651 | to-array "0.1.4" 2652 | 2653 | socket.io-client@1.6.0: 2654 | version "1.6.0" 2655 | resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.6.0.tgz#5b668f4f771304dfeed179064708386fa6717853" 2656 | dependencies: 2657 | backo2 "1.0.2" 2658 | component-bind "1.0.0" 2659 | component-emitter "1.2.1" 2660 | debug "2.3.3" 2661 | engine.io-client "1.8.0" 2662 | has-binary "0.1.7" 2663 | indexof "0.0.1" 2664 | object-component "0.0.3" 2665 | parseuri "0.0.5" 2666 | socket.io-parser "2.3.1" 2667 | to-array "0.1.4" 2668 | 2669 | socket.io-parser@2.2.2: 2670 | version "2.2.2" 2671 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.2.2.tgz#3d7af6b64497e956b7d9fe775f999716027f9417" 2672 | dependencies: 2673 | benchmark "1.0.0" 2674 | component-emitter "1.1.2" 2675 | debug "0.7.4" 2676 | isarray "0.0.1" 2677 | json3 "3.2.6" 2678 | 2679 | socket.io-parser@2.2.6: 2680 | version "2.2.6" 2681 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.2.6.tgz#38dfd61df50dcf8ab1d9e2091322bf902ba28b99" 2682 | dependencies: 2683 | benchmark "1.0.0" 2684 | component-emitter "1.1.2" 2685 | debug "2.2.0" 2686 | isarray "0.0.1" 2687 | json3 "3.3.2" 2688 | 2689 | socket.io-parser@2.3.1: 2690 | version "2.3.1" 2691 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.3.1.tgz#dd532025103ce429697326befd64005fcfe5b4a0" 2692 | dependencies: 2693 | component-emitter "1.1.2" 2694 | debug "2.2.0" 2695 | isarray "0.0.1" 2696 | json3 "3.3.2" 2697 | 2698 | socket.io@1.4.5: 2699 | version "1.4.5" 2700 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.4.5.tgz#f202f49eeb9cf7cf6c0971ad75d8d96d451ea4f7" 2701 | dependencies: 2702 | debug "2.2.0" 2703 | engine.io "1.6.8" 2704 | has-binary "0.1.7" 2705 | socket.io-adapter "0.4.0" 2706 | socket.io-client "1.4.5" 2707 | socket.io-parser "2.2.6" 2708 | 2709 | socket.io@1.6.0: 2710 | version "1.6.0" 2711 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.6.0.tgz#3e40d932637e6bd923981b25caf7c53e83b6e2e1" 2712 | dependencies: 2713 | debug "2.3.3" 2714 | engine.io "1.8.0" 2715 | has-binary "0.1.7" 2716 | object-assign "4.1.0" 2717 | socket.io-adapter "0.5.0" 2718 | socket.io-client "1.6.0" 2719 | socket.io-parser "2.3.1" 2720 | 2721 | sparkles@^1.0.0: 2722 | version "1.0.0" 2723 | resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3" 2724 | 2725 | spawn-command@^0.0.2-1: 2726 | version "0.0.2" 2727 | resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e" 2728 | 2729 | spdx-correct@~1.0.0: 2730 | version "1.0.2" 2731 | resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40" 2732 | dependencies: 2733 | spdx-license-ids "^1.0.2" 2734 | 2735 | spdx-expression-parse@~1.0.0: 2736 | version "1.0.4" 2737 | resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c" 2738 | 2739 | spdx-license-ids@^1.0.2: 2740 | version "1.2.2" 2741 | resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57" 2742 | 2743 | sshpk@^1.7.0: 2744 | version "1.11.0" 2745 | resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.11.0.tgz#2d8d5ebb4a6fab28ffba37fa62a90f4a3ea59d77" 2746 | dependencies: 2747 | asn1 "~0.2.3" 2748 | assert-plus "^1.0.0" 2749 | dashdash "^1.12.0" 2750 | getpass "^0.1.1" 2751 | optionalDependencies: 2752 | bcrypt-pbkdf "^1.0.0" 2753 | ecc-jsbn "~0.1.1" 2754 | jodid25519 "^1.0.0" 2755 | jsbn "~0.1.0" 2756 | tweetnacl "~0.14.0" 2757 | 2758 | "statuses@>= 1.3.1 < 2", statuses@~1.3.0, statuses@~1.3.1: 2759 | version "1.3.1" 2760 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.1.tgz#faf51b9eb74aaef3b3acf4ad5f61abf24cb7b93e" 2761 | 2762 | stream-consume@~0.1.0: 2763 | version "0.1.0" 2764 | resolved "https://registry.yarnpkg.com/stream-consume/-/stream-consume-0.1.0.tgz#a41ead1a6d6081ceb79f65b061901b6d8f3d1d0f" 2765 | 2766 | stream-throttle@^0.1.3: 2767 | version "0.1.3" 2768 | resolved "https://registry.yarnpkg.com/stream-throttle/-/stream-throttle-0.1.3.tgz#add57c8d7cc73a81630d31cd55d3961cfafba9c3" 2769 | dependencies: 2770 | commander "^2.2.0" 2771 | limiter "^1.0.5" 2772 | 2773 | string-width@^1.0.1, string-width@^1.0.2: 2774 | version "1.0.2" 2775 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" 2776 | dependencies: 2777 | code-point-at "^1.0.0" 2778 | is-fullwidth-code-point "^1.0.0" 2779 | strip-ansi "^3.0.0" 2780 | 2781 | string_decoder@~0.10.x: 2782 | version "0.10.31" 2783 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" 2784 | 2785 | stringstream@~0.0.4: 2786 | version "0.0.5" 2787 | resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" 2788 | 2789 | strip-ansi@^0.3.0: 2790 | version "0.3.0" 2791 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.3.0.tgz#25f48ea22ca79187f3174a4db8759347bb126220" 2792 | dependencies: 2793 | ansi-regex "^0.2.1" 2794 | 2795 | strip-ansi@^3.0.0, strip-ansi@^3.0.1: 2796 | version "3.0.1" 2797 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" 2798 | dependencies: 2799 | ansi-regex "^2.0.0" 2800 | 2801 | strip-bom@^1.0.0: 2802 | version "1.0.0" 2803 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" 2804 | dependencies: 2805 | first-chunk-stream "^1.0.0" 2806 | is-utf8 "^0.2.0" 2807 | 2808 | strip-bom@^2.0.0: 2809 | version "2.0.0" 2810 | resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" 2811 | dependencies: 2812 | is-utf8 "^0.2.0" 2813 | 2814 | strip-json-comments@~2.0.1: 2815 | version "2.0.1" 2816 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" 2817 | 2818 | supports-color@^0.2.0: 2819 | version "0.2.0" 2820 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-0.2.0.tgz#d92de2694eb3f67323973d7ae3d8b55b4c22190a" 2821 | 2822 | supports-color@^2.0.0: 2823 | version "2.0.0" 2824 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" 2825 | 2826 | supports-color@^3.2.3: 2827 | version "3.2.3" 2828 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" 2829 | dependencies: 2830 | has-flag "^1.0.0" 2831 | 2832 | symbol-observable@^1.0.1: 2833 | version "1.0.4" 2834 | resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d" 2835 | 2836 | systemjs@0.19.40: 2837 | version "0.19.40" 2838 | resolved "https://registry.yarnpkg.com/systemjs/-/systemjs-0.19.40.tgz#158f64a9f4ef541a7fda6b40e527ee46b6c54cd0" 2839 | dependencies: 2840 | when "^3.7.5" 2841 | 2842 | tar-pack@~3.3.0: 2843 | version "3.3.0" 2844 | resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae" 2845 | dependencies: 2846 | debug "~2.2.0" 2847 | fstream "~1.0.10" 2848 | fstream-ignore "~1.0.5" 2849 | once "~1.3.3" 2850 | readable-stream "~2.1.4" 2851 | rimraf "~2.5.1" 2852 | tar "~2.2.1" 2853 | uid-number "~0.0.6" 2854 | 2855 | tar@~2.2.1: 2856 | version "2.2.1" 2857 | resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 2858 | dependencies: 2859 | block-stream "*" 2860 | fstream "^1.0.2" 2861 | inherits "2" 2862 | 2863 | tfunk@^3.0.1: 2864 | version "3.1.0" 2865 | resolved "https://registry.yarnpkg.com/tfunk/-/tfunk-3.1.0.tgz#38e4414fc64977d87afdaa72facb6d29f82f7b5b" 2866 | dependencies: 2867 | chalk "^1.1.1" 2868 | object-path "^0.9.0" 2869 | 2870 | through2@^0.6.1: 2871 | version "0.6.5" 2872 | resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" 2873 | dependencies: 2874 | readable-stream ">=1.0.33-1 <1.1.0-0" 2875 | xtend ">=4.0.0 <4.1.0-0" 2876 | 2877 | through2@^2.0.0: 2878 | version "2.0.3" 2879 | resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" 2880 | dependencies: 2881 | readable-stream "^2.1.5" 2882 | xtend "~4.0.1" 2883 | 2884 | tildify@^1.0.0: 2885 | version "1.2.0" 2886 | resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" 2887 | dependencies: 2888 | os-homedir "^1.0.0" 2889 | 2890 | time-stamp@^1.0.0: 2891 | version "1.0.1" 2892 | resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151" 2893 | 2894 | to-array@0.1.4: 2895 | version "0.1.4" 2896 | resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890" 2897 | 2898 | tough-cookie@~2.3.0: 2899 | version "2.3.2" 2900 | resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a" 2901 | dependencies: 2902 | punycode "^1.4.1" 2903 | 2904 | tree-kill@^1.1.0: 2905 | version "1.1.0" 2906 | resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.1.0.tgz#c963dcf03722892ec59cba569e940b71954d1729" 2907 | 2908 | tunnel-agent@^0.6.0: 2909 | version "0.6.0" 2910 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" 2911 | dependencies: 2912 | safe-buffer "^5.0.1" 2913 | 2914 | tunnel-agent@~0.4.1: 2915 | version "0.4.3" 2916 | resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb" 2917 | 2918 | tweetnacl@^0.14.3, tweetnacl@~0.14.0: 2919 | version "0.14.5" 2920 | resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" 2921 | 2922 | type-is@~1.6.14: 2923 | version "1.6.14" 2924 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.14.tgz#e219639c17ded1ca0789092dd54a03826b817cb2" 2925 | dependencies: 2926 | media-typer "0.3.0" 2927 | mime-types "~2.1.13" 2928 | 2929 | typescript@~2.0.10: 2930 | version "2.0.10" 2931 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.0.10.tgz#ccdd4ed86fd5550a407101a0814012e1b3fac3dd" 2932 | 2933 | ua-parser-js@0.7.12: 2934 | version "0.7.12" 2935 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.12.tgz#04c81a99bdd5dc52263ea29d24c6bf8d4818a4bb" 2936 | 2937 | uid-number@~0.0.6: 2938 | version "0.0.6" 2939 | resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" 2940 | 2941 | ultron@1.0.x: 2942 | version "1.0.2" 2943 | resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa" 2944 | 2945 | unc-path-regex@^0.1.0: 2946 | version "0.1.2" 2947 | resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" 2948 | 2949 | underscore@1.7.x: 2950 | version "1.7.0" 2951 | resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" 2952 | 2953 | unique-stream@^1.0.0: 2954 | version "1.0.0" 2955 | resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-1.0.0.tgz#d59a4a75427447d9aa6c91e70263f8d26a4b104b" 2956 | 2957 | unpipe@~1.0.0: 2958 | version "1.0.0" 2959 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 2960 | 2961 | user-home@^1.1.1: 2962 | version "1.1.1" 2963 | resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" 2964 | 2965 | utf8@2.1.0: 2966 | version "2.1.0" 2967 | resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.0.tgz#0cfec5c8052d44a23e3aaa908104e8075f95dfd5" 2968 | 2969 | util-deprecate@~1.0.1: 2970 | version "1.0.2" 2971 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 2972 | 2973 | util@^0.10.3: 2974 | version "0.10.3" 2975 | resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" 2976 | dependencies: 2977 | inherits "2.0.1" 2978 | 2979 | utils-merge@1.0.0: 2980 | version "1.0.0" 2981 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8" 2982 | 2983 | uuid@^3.0.0: 2984 | version "3.0.1" 2985 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.0.1.tgz#6544bba2dfda8c1cf17e629a3a305e2bb1fee6c1" 2986 | 2987 | v8flags@^2.0.2: 2988 | version "2.0.11" 2989 | resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.0.11.tgz#bca8f30f0d6d60612cc2c00641e6962d42ae6881" 2990 | dependencies: 2991 | user-home "^1.1.1" 2992 | 2993 | validate-npm-package-license@^3.0.1: 2994 | version "3.0.1" 2995 | resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" 2996 | dependencies: 2997 | spdx-correct "~1.0.0" 2998 | spdx-expression-parse "~1.0.0" 2999 | 3000 | vary@~1.1.0: 3001 | version "1.1.0" 3002 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140" 3003 | 3004 | verror@1.3.6: 3005 | version "1.3.6" 3006 | resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c" 3007 | dependencies: 3008 | extsprintf "1.0.2" 3009 | 3010 | vinyl-fs@^0.3.0: 3011 | version "0.3.14" 3012 | resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-0.3.14.tgz#9a6851ce1cac1c1cea5fe86c0931d620c2cfa9e6" 3013 | dependencies: 3014 | defaults "^1.0.0" 3015 | glob-stream "^3.1.5" 3016 | glob-watcher "^0.0.6" 3017 | graceful-fs "^3.0.0" 3018 | mkdirp "^0.5.0" 3019 | strip-bom "^1.0.0" 3020 | through2 "^0.6.1" 3021 | vinyl "^0.4.0" 3022 | 3023 | vinyl@^0.4.0: 3024 | version "0.4.6" 3025 | resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" 3026 | dependencies: 3027 | clone "^0.2.0" 3028 | clone-stats "^0.0.1" 3029 | 3030 | vinyl@^0.5.0: 3031 | version "0.5.3" 3032 | resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" 3033 | dependencies: 3034 | clone "^1.0.0" 3035 | clone-stats "^0.0.1" 3036 | replace-ext "0.0.1" 3037 | 3038 | vlq@^0.2.1: 3039 | version "0.2.1" 3040 | resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.1.tgz#14439d711891e682535467f8587c5630e4222a6c" 3041 | 3042 | weinre@^2.0.0-pre-I0Z7U9OV: 3043 | version "2.0.0-pre-I0Z7U9OV" 3044 | resolved "https://registry.yarnpkg.com/weinre/-/weinre-2.0.0-pre-I0Z7U9OV.tgz#fef8aa223921f7b40bbbbd4c3ed4302f6fd0a813" 3045 | dependencies: 3046 | express "2.5.x" 3047 | nopt "3.0.x" 3048 | underscore "1.7.x" 3049 | 3050 | when@^3.7.5: 3051 | version "3.7.8" 3052 | resolved "https://registry.yarnpkg.com/when/-/when-3.7.8.tgz#c7130b6a7ea04693e842cdc9e7a1f2aa39a39f82" 3053 | 3054 | which-module@^1.0.0: 3055 | version "1.0.0" 3056 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" 3057 | 3058 | which@^1.2.12: 3059 | version "1.2.12" 3060 | resolved "https://registry.yarnpkg.com/which/-/which-1.2.12.tgz#de67b5e450269f194909ef23ece4ebe416fa1192" 3061 | dependencies: 3062 | isexe "^1.1.1" 3063 | 3064 | wide-align@^1.1.0: 3065 | version "1.1.0" 3066 | resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad" 3067 | dependencies: 3068 | string-width "^1.0.1" 3069 | 3070 | window-size@^0.1.2: 3071 | version "0.1.4" 3072 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" 3073 | 3074 | window-size@^0.2.0: 3075 | version "0.2.0" 3076 | resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" 3077 | 3078 | wrap-ansi@^2.0.0: 3079 | version "2.1.0" 3080 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" 3081 | dependencies: 3082 | string-width "^1.0.1" 3083 | strip-ansi "^3.0.1" 3084 | 3085 | wrappy@1: 3086 | version "1.0.2" 3087 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 3088 | 3089 | ws@1.0.1: 3090 | version "1.0.1" 3091 | resolved "https://registry.yarnpkg.com/ws/-/ws-1.0.1.tgz#7d0b2a2e58cddd819039c29c9de65045e1b310e9" 3092 | dependencies: 3093 | options ">=0.0.5" 3094 | ultron "1.0.x" 3095 | 3096 | ws@1.1.1: 3097 | version "1.1.1" 3098 | resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018" 3099 | dependencies: 3100 | options ">=0.0.5" 3101 | ultron "1.0.x" 3102 | 3103 | wtf-8@1.0.0: 3104 | version "1.0.0" 3105 | resolved "https://registry.yarnpkg.com/wtf-8/-/wtf-8-1.0.0.tgz#392d8ba2d0f1c34d1ee2d630f15d0efb68e1048a" 3106 | 3107 | xmlhttprequest-ssl@1.5.1: 3108 | version "1.5.1" 3109 | resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.1.tgz#3b7741fea4a86675976e908d296d4445961faa67" 3110 | 3111 | xmlhttprequest-ssl@1.5.3: 3112 | version "1.5.3" 3113 | resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz#185a888c04eca46c3e4070d99f7b49de3528992d" 3114 | 3115 | "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: 3116 | version "4.0.1" 3117 | resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" 3118 | 3119 | y18n@^3.2.0, y18n@^3.2.1: 3120 | version "3.2.1" 3121 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" 3122 | 3123 | yargs-parser@^4.1.0: 3124 | version "4.2.1" 3125 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-4.2.1.tgz#29cceac0dc4f03c6c87b4a9f217dd18c9f74871c" 3126 | dependencies: 3127 | camelcase "^3.0.0" 3128 | 3129 | yargs@3.29.0: 3130 | version "3.29.0" 3131 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.29.0.tgz#1aab9660eae79d8b8f675bcaeeab6ee34c2cf69c" 3132 | dependencies: 3133 | camelcase "^1.2.1" 3134 | cliui "^3.0.3" 3135 | decamelize "^1.0.0" 3136 | os-locale "^1.4.0" 3137 | window-size "^0.1.2" 3138 | y18n "^3.2.0" 3139 | 3140 | yargs@6.4.0: 3141 | version "6.4.0" 3142 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-6.4.0.tgz#816e1a866d5598ccf34e5596ddce22d92da490d4" 3143 | dependencies: 3144 | camelcase "^3.0.0" 3145 | cliui "^3.2.0" 3146 | decamelize "^1.1.1" 3147 | get-caller-file "^1.0.1" 3148 | os-locale "^1.4.0" 3149 | read-pkg-up "^1.0.1" 3150 | require-directory "^2.1.1" 3151 | require-main-filename "^1.0.1" 3152 | set-blocking "^2.0.0" 3153 | string-width "^1.0.2" 3154 | which-module "^1.0.0" 3155 | window-size "^0.2.0" 3156 | y18n "^3.2.1" 3157 | yargs-parser "^4.1.0" 3158 | 3159 | yeast@0.1.2: 3160 | version "0.1.2" 3161 | resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419" 3162 | 3163 | zone.js@^0.7.4: 3164 | version "0.7.8" 3165 | resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.7.8.tgz#4f3fe8834d44597f2639053a0fa438df34fffded" 3166 | -------------------------------------------------------------------------------- /ng2_node/optionB/.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | typings 3 | node_modules 4 | lib 5 | dist 6 | jspm_packages 7 | link-checker-results.txt 8 | npm-debug.log 9 | **/*npm-debug.log.* 10 | *.js.map 11 | _test-output 12 | _temp 13 | .editorconfig 14 | CHANGELOG.md 15 | app/**/*.js 16 | app/**/*.js.map -------------------------------------------------------------------------------- /ng2_node/optionB/README.md: -------------------------------------------------------------------------------- 1 | ## Node + Angular 2 with 2 servers 2 | 3 | ## Run the project 4 | - `npm i` or `yarn` 5 | - command prompt 1 type `nodemon server.js` or `node server.js` 6 | - command prompt 2 type `npm start` to load the lite-server and run application 7 | 8 | ### Project opens on Port 3000 9 | 10 | - includes socket.io setup -------------------------------------------------------------------------------- /ng2_node/optionB/gulpfile.js: -------------------------------------------------------------------------------- 1 | var gulp = require('gulp'), 2 | del = require('del'), 3 | sequence = require('run-sequence'), 4 | libPath = 'public/lib', 5 | nodeModulesPath = 'node_modules'; 6 | 7 | gulp.task('clean', function () { 8 | return del(libPath + '/**/*', { force: true }); 9 | }); 10 | 11 | gulp.task('copy:libs', function (done) { 12 | sequence('clean', 'copy:vendor', 'copy:rxjs', 'copy:angular', 'copy:bootstrap', 'copy:socketIO', done); 13 | }); 14 | 15 | gulp.task('copy:vendor', function() { 16 | return gulp 17 | .src([ 18 | nodeModulesPath + '/core-js/client/**/*', 19 | nodeModulesPath + '/zone.js/dist/zone.js', 20 | nodeModulesPath + '/reflect-metadata/**/*', 21 | nodeModulesPath + '/systemjs/dist/system-polyfills.js', 22 | nodeModulesPath + '/systemjs/dist/system.src.js']) 23 | .pipe(gulp.dest(libPath)); 24 | }); 25 | 26 | gulp.task('copy:rxjs', function() { 27 | return gulp 28 | .src([nodeModulesPath + '/rxjs/**/*']) 29 | .pipe(gulp.dest(libPath + '/rxjs')); 30 | }); 31 | 32 | gulp.task('copy:angular', function() { 33 | return gulp 34 | .src([nodeModulesPath + '/@angular/**/*']) 35 | .pipe(gulp.dest(libPath + '/@angular')); 36 | }); 37 | 38 | gulp.task('copy:bootstrap', function() { 39 | return gulp 40 | .src([nodeModulesPath + '/bootstrap/**/*']) 41 | .pipe(gulp.dest(libPath + '/bootstrap')); 42 | }); 43 | 44 | gulp.task('copy:socketIO', function() { 45 | return gulp 46 | .src([nodeModulesPath + '/socket.io-client/**/*']) 47 | .pipe(gulp.dest(libPath + '/socket.io-client')); 48 | }); 49 | 50 | gulp.task('default', ['copy:libs']); -------------------------------------------------------------------------------- /ng2_node/optionB/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | NG2 Chat App 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 30 | 31 | 32 | 33 | Loading App... 34 | 35 | 36 | -------------------------------------------------------------------------------- /ng2_node/optionB/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular2-socket.io", 3 | "version": "1.0.0", 4 | "description": "Simple chat app using socket.io, angular 2 and a node.js web server", 5 | "scripts": { 6 | "start": "tsc && concurrently \"tsc -w\" \"lite-server\" ", 7 | "lite": "lite-server", 8 | "postinstall": "typings install", 9 | "tsc": "tsc", 10 | "tsc:w": "tsc -w", 11 | "typings": "typings" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "license": "MIT", 16 | "dependencies": { 17 | "@angular/common": "~2.4.0", 18 | "@angular/compiler": "~2.4.0", 19 | "@angular/core": "~2.4.0", 20 | "@angular/forms": "~2.4.0", 21 | "@angular/http": "~2.4.0", 22 | "@angular/platform-browser": "~2.4.0", 23 | "@angular/platform-browser-dynamic": "~2.4.0", 24 | "@angular/router": "~3.4.0", 25 | "@angular/upgrade": "^2.4.9", 26 | "@types/socket.io": "^1.4.28", 27 | "angular-in-memory-web-api": "~0.2.4", 28 | "bootstrap": "^3.3.7", 29 | "core-js": "^2.4.1", 30 | "express": "^4.13.4", 31 | "path": "^0.12.7", 32 | "rxjs": "5.0.1", 33 | "socket.io": "1.4.5", 34 | "systemjs": "0.19.40", 35 | "zone.js": "^0.7.4" 36 | }, 37 | "devDependencies": { 38 | "concurrently": "^3.2.0", 39 | "lite-server": "^2.2.2", 40 | "typescript": "~2.0.10", 41 | "@types/node": "^6.0.46", 42 | "@types/jasmine": "2.5.36", 43 | "@types/socket.io-client": "1.4.29", 44 | "del": "^2.2.2", 45 | "gulp": "^3.9.1", 46 | "run-sequence": "^1.2.2" 47 | }, 48 | "repository": {} 49 | } 50 | -------------------------------------------------------------------------------- /ng2_node/optionB/public/app.component.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var AppComponent = (function () { 13 | function AppComponent() { 14 | this.appName = "Angular 2 Chat App"; 15 | } 16 | AppComponent = __decorate([ 17 | core_1.Component({ 18 | moduleId: module.id, 19 | selector: 'ch-app', 20 | templateUrl: 'app.template.html' 21 | }), 22 | __metadata('design:paramtypes', []) 23 | ], AppComponent); 24 | return AppComponent; 25 | }()); 26 | exports.AppComponent = AppComponent; 27 | //# sourceMappingURL=app.component.js.map -------------------------------------------------------------------------------- /ng2_node/optionB/public/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | moduleId: module.id, 5 | selector: 'ch-app', 6 | templateUrl: 'app.template.html' 7 | }) 8 | 9 | export class AppComponent { 10 | appName: string = "Angular 2 Chat App"; 11 | } 12 | -------------------------------------------------------------------------------- /ng2_node/optionB/public/app.module.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var platform_browser_1 = require('@angular/platform-browser'); 13 | var forms_1 = require('@angular/forms'); 14 | var app_component_1 = require('./app.component'); 15 | var home_component_1 = require('./home/home.component'); 16 | var socket_service_1 = require('./shared/socket.service'); 17 | var AppModule = (function () { 18 | function AppModule() { 19 | } 20 | AppModule = __decorate([ 21 | core_1.NgModule({ 22 | imports: [platform_browser_1.BrowserModule, 23 | forms_1.FormsModule 24 | ], 25 | declarations: [app_component_1.AppComponent, 26 | home_component_1.HomeComponent], 27 | providers: [socket_service_1.SocketService], 28 | bootstrap: [app_component_1.AppComponent] 29 | }), 30 | __metadata('design:paramtypes', []) 31 | ], AppModule); 32 | return AppModule; 33 | }()); 34 | exports.AppModule = AppModule; 35 | //# sourceMappingURL=app.module.js.map -------------------------------------------------------------------------------- /ng2_node/optionB/public/app.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule } from '@angular/core'; 2 | import { BrowserModule } from '@angular/platform-browser'; 3 | import { FormsModule } from '@angular/forms'; 4 | 5 | import { AppComponent } from './app.component'; 6 | import { HomeComponent } from './home/home.component'; 7 | 8 | import { SocketService } from './shared/socket.service'; 9 | 10 | @NgModule({ 11 | imports: [ BrowserModule, 12 | FormsModule 13 | ], 14 | declarations: [ AppComponent, 15 | HomeComponent], 16 | providers: [ SocketService ], 17 | bootstrap: [ AppComponent ] 18 | }) 19 | 20 | export class AppModule { } -------------------------------------------------------------------------------- /ng2_node/optionB/public/app.routing.js: -------------------------------------------------------------------------------- 1 | //# sourceMappingURL=app.routing.js.map -------------------------------------------------------------------------------- /ng2_node/optionB/public/app.routing.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jakblak/nodeJS_examples/5a0291d0789335dd9cc358b4e613a11ff7b461db/ng2_node/optionB/public/app.routing.ts -------------------------------------------------------------------------------- /ng2_node/optionB/public/app.template.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ng2_node/optionB/public/home/home.component.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | var io = require('socket.io-client'); 13 | var HomeComponent = (function () { 14 | function HomeComponent() { 15 | this.socket = io.connect('http://localhost:8000'); 16 | // this.socket = io.connect(); 17 | } 18 | HomeComponent.prototype.ngOnInit = function () { 19 | var _this = this; 20 | this.socket.emit('event1', { 21 | msg: 'Client to server, can you hear me server?' 22 | }); 23 | this.socket.on('event2', function (data) { 24 | console.log(data.msg); 25 | _this.socket.emit('event3', { 26 | msg: 'Yes, its working for me!!' 27 | }); 28 | }); 29 | this.socket.on('event4', function (data) { 30 | console.log(data.msg); 31 | }); 32 | }; 33 | HomeComponent = __decorate([ 34 | core_1.Component({ 35 | moduleId: module.id, 36 | selector: 'ch-home', 37 | styleUrls: ['home.styles.css'], 38 | templateUrl: 'home.template.html' 39 | }), 40 | __metadata('design:paramtypes', []) 41 | ], HomeComponent); 42 | return HomeComponent; 43 | }()); 44 | exports.HomeComponent = HomeComponent; 45 | //# sourceMappingURL=home.component.js.map -------------------------------------------------------------------------------- /ng2_node/optionB/public/home/home.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, OnInit } from '@angular/core'; 2 | import * as io from 'socket.io-client'; 3 | 4 | @Component({ 5 | moduleId: module.id, 6 | selector: 'ch-home', 7 | styleUrls: ['home.styles.css'], 8 | templateUrl: 'home.template.html' 9 | }) 10 | 11 | export class HomeComponent implements OnInit { 12 | messageText: string; 13 | messages: Array; 14 | socket: SocketIOClient.Socket; 15 | 16 | constructor() { 17 | this.socket = io.connect('http://localhost:8000'); 18 | // this.socket = io.connect(); 19 | } 20 | 21 | ngOnInit() { 22 | this.socket.emit('event1', { 23 | msg: 'Client to server, can you hear me server?' 24 | }); 25 | 26 | this.socket.on('event2', (data: any) => { 27 | console.log(data.msg); 28 | this.socket.emit('event3', { 29 | msg: 'Yes, its working for me!!' 30 | }); 31 | }); 32 | 33 | this.socket.on('event4', (data: any) => { 34 | console.log(data.msg); 35 | }); 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /ng2_node/optionB/public/home/home.styles.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | body { 6 | background-color: #edeff2; 7 | font-family: "Calibri", "Roboto", sans-serif; 8 | } 9 | 10 | .chat_window { 11 | position: absolute; 12 | width: calc(100% - 20px); 13 | max-width: 800px; 14 | height: 500px; 15 | border-radius: 10px; 16 | background-color: #fff; 17 | left: 50%; 18 | top: 50%; 19 | transform: translateX(-50%) translateY(-50%); 20 | box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15); 21 | background-color: #f8f8f8; 22 | overflow: hidden; 23 | } 24 | 25 | .top_menu { 26 | background-color: #fff; 27 | width: 100%; 28 | padding: 20px 0 15px; 29 | box-shadow: 0 1px 30px rgba(0, 0, 0, 0.1); 30 | } 31 | .top_menu .buttons { 32 | margin: 3px 0 0 20px; 33 | position: absolute; 34 | } 35 | .top_menu .buttons .button { 36 | width: 16px; 37 | height: 16px; 38 | border-radius: 50%; 39 | display: inline-block; 40 | margin-right: 10px; 41 | position: relative; 42 | } 43 | .top_menu .buttons .button.close { 44 | background-color: #f5886e; 45 | } 46 | .top_menu .buttons .button.minimize { 47 | background-color: #fdbf68; 48 | } 49 | .top_menu .buttons .button.maximize { 50 | background-color: #a3d063; 51 | } 52 | .top_menu .title { 53 | text-align: center; 54 | color: #bcbdc0; 55 | font-size: 20px; 56 | } 57 | 58 | .messages { 59 | position: relative; 60 | list-style: none; 61 | padding: 20px 10px 0 10px; 62 | margin: 0; 63 | height: 347px; 64 | overflow: scroll; 65 | } 66 | .messages .message { 67 | clear: both; 68 | overflow: hidden; 69 | margin-bottom: 20px; 70 | transition: all 0.5s linear; 71 | opacity: 0; 72 | } 73 | .messages .message.left .avatar { 74 | background-color: #f5886e; 75 | float: left; 76 | } 77 | .messages .message.left .text_wrapper { 78 | background-color: #ffe6cb; 79 | margin-left: 20px; 80 | } 81 | .messages .message.left .text_wrapper::after, .messages .message.left .text_wrapper::before { 82 | right: 100%; 83 | border-right-color: #ffe6cb; 84 | } 85 | .messages .message.left .text { 86 | color: #c48843; 87 | } 88 | .messages .message.right .avatar { 89 | background-color: #fdbf68; 90 | float: right; 91 | } 92 | .messages .message.right .text_wrapper { 93 | background-color: #c7eafc; 94 | margin-right: 20px; 95 | float: right; 96 | } 97 | .messages .message.right .text_wrapper::after, .messages .message.right .text_wrapper::before { 98 | left: 100%; 99 | border-left-color: #c7eafc; 100 | } 101 | .messages .message.right .text { 102 | color: #45829b; 103 | } 104 | .messages .message.appeared { 105 | opacity: 1; 106 | } 107 | .messages .message .avatar { 108 | width: 60px; 109 | height: 60px; 110 | border-radius: 50%; 111 | display: inline-block; 112 | } 113 | .messages .message .text_wrapper { 114 | display: inline-block; 115 | padding: 20px; 116 | border-radius: 6px; 117 | width: calc(100% - 85px); 118 | min-width: 100px; 119 | position: relative; 120 | } 121 | .messages .message .text_wrapper::after, .messages .message .text_wrapper:before { 122 | top: 18px; 123 | border: solid transparent; 124 | content: " "; 125 | height: 0; 126 | width: 0; 127 | position: absolute; 128 | pointer-events: none; 129 | } 130 | .messages .message .text_wrapper::after { 131 | border-width: 13px; 132 | margin-top: 0px; 133 | } 134 | .messages .message .text_wrapper::before { 135 | border-width: 15px; 136 | margin-top: -2px; 137 | } 138 | .messages .message .text_wrapper .text { 139 | font-size: 18px; 140 | font-weight: 300; 141 | } 142 | 143 | .bottom_wrapper { 144 | position: relative; 145 | width: 100%; 146 | background-color: #fff; 147 | padding: 20px 20px; 148 | position: absolute; 149 | bottom: 0; 150 | } 151 | .bottom_wrapper .message_input_wrapper { 152 | display: inline-block; 153 | height: 50px; 154 | border-radius: 25px; 155 | border: 1px solid #bcbdc0; 156 | width: calc(100% - 160px); 157 | position: relative; 158 | padding: 0 20px; 159 | } 160 | .bottom_wrapper .message_input_wrapper .message_input { 161 | border: none; 162 | height: 100%; 163 | box-sizing: border-box; 164 | width: calc(100% - 40px); 165 | position: absolute; 166 | outline-width: 0; 167 | color: gray; 168 | } 169 | .bottom_wrapper .send_message { 170 | width: 140px; 171 | height: 50px; 172 | display: inline-block; 173 | border-radius: 50px; 174 | background-color: #a3d063; 175 | border: 2px solid #a3d063; 176 | color: #fff; 177 | cursor: pointer; 178 | transition: all 0.2s linear; 179 | text-align: center; 180 | float: right; 181 | } 182 | .bottom_wrapper .send_message:hover { 183 | color: #a3d063; 184 | background-color: #fff; 185 | } 186 | .bottom_wrapper .send_message .text { 187 | font-size: 18px; 188 | font-weight: 300; 189 | display: inline-block; 190 | line-height: 48px; 191 | } 192 | 193 | .message_template { 194 | display: none; 195 | } -------------------------------------------------------------------------------- /ng2_node/optionB/public/home/home.template.html: -------------------------------------------------------------------------------- 1 | 37 | 38 |
39 |
40 |
41 | 46 | 47 | 50 | 51 |
52 |
53 |
54 |
55 |
    56 |
  • 57 | 58 |   59 | 60 |   61 | {{ message.text }} 62 |
  • 63 |
64 |
65 |
-------------------------------------------------------------------------------- /ng2_node/optionB/public/main.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var platform_browser_dynamic_1 = require('@angular/platform-browser-dynamic'); 3 | var app_module_1 = require('./app.module'); 4 | platform_browser_dynamic_1.platformBrowserDynamic().bootstrapModule(app_module_1.AppModule); 5 | //# sourceMappingURL=main.js.map -------------------------------------------------------------------------------- /ng2_node/optionB/public/main.ts: -------------------------------------------------------------------------------- 1 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 2 | import { AppModule } from './app.module'; 3 | 4 | platformBrowserDynamic().bootstrapModule(AppModule); -------------------------------------------------------------------------------- /ng2_node/optionB/public/shared/css/styles.css: -------------------------------------------------------------------------------- 1 | /* Navbar */ 2 | .nav .navbar-nav { 3 | font-size: 15px; 4 | } 5 | #searchForm { 6 | margin-right: 100px; 7 | } 8 | @media (max-width: 1200px) { 9 | #searchForm { 10 | display: none; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /ng2_node/optionB/public/shared/socket.service.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { 3 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; 4 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); 5 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; 6 | return c > 3 && r && Object.defineProperty(target, key, r), r; 7 | }; 8 | var __metadata = (this && this.__metadata) || function (k, v) { 9 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); 10 | }; 11 | var core_1 = require('@angular/core'); 12 | // import * as io from 'socket.io-client'; 13 | var SocketService = (function () { 14 | function SocketService() { 15 | } 16 | SocketService = __decorate([ 17 | core_1.Injectable(), 18 | __metadata('design:paramtypes', []) 19 | ], SocketService); 20 | return SocketService; 21 | }()); 22 | exports.SocketService = SocketService; 23 | //# sourceMappingURL=socket.service.js.map -------------------------------------------------------------------------------- /ng2_node/optionB/public/shared/socket.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | // import * as io from 'socket.io-client'; 3 | 4 | @Injectable() 5 | export class SocketService { 6 | // private socket: any = io.connect('http://localhost:8000'); 7 | // socket: SocketIOClient.Socket; 8 | 9 | // constructor() { 10 | // this.socket = io.connect('http://localhost:8000'); 11 | // this.socket.on("connection", () => console.log("this is onl a test")); 12 | // } 13 | 14 | // socket.on('event1', function (data) { 15 | // console.log(data.msg); 16 | // socket.emit('event2', { msg: 'Yes, its working for me !!' }); 17 | // }); 18 | 19 | // on(eventName: any, callback: any) { 20 | // if (this.socket) { 21 | // this.socket.on(eventName, function(data: any) { 22 | // callback(data); 23 | // }); 24 | // } 25 | // }; 26 | 27 | // emit(eventName: any, data: any) { 28 | // if (this.socket) { 29 | // this.socket.emit(eventName, data); 30 | // } 31 | // }; 32 | 33 | // removeListener(eventName: any) { 34 | // if (this.socket) { 35 | // this.socket.removeListener(eventName); 36 | // } 37 | // }; 38 | } 39 | -------------------------------------------------------------------------------- /ng2_node/optionB/server.js: -------------------------------------------------------------------------------- 1 | var express = require('express'); 2 | var path = require('path'); 3 | var app = express(); 4 | var server = require('http').Server(app); 5 | var io = require('socket.io')(server); 6 | 7 | var port = 8000; 8 | 9 | app.use(express.static(path.join(__dirname, "public"))); 10 | 11 | io.on('connection', (socket) => { 12 | console.log('new connection made'); 13 | 14 | socket.on('event1', (data) => { 15 | console.log(data.msg); 16 | }); 17 | 18 | socket.emit('event2', { 19 | msg: 'Server to client, do you read me? Over.' 20 | }); 21 | 22 | socket.on('event3', (data) => { 23 | console.log(data.msg); 24 | socket.emit('event4', { 25 | msg: 'Loud and clear :)' 26 | }); 27 | }); 28 | 29 | }); 30 | 31 | server.listen(port, () => { 32 | console.log("Listening on port " + port); 33 | }); -------------------------------------------------------------------------------- /ng2_node/optionB/server/routes.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jakblak/nodeJS_examples/5a0291d0789335dd9cc358b4e613a11ff7b461db/ng2_node/optionB/server/routes.js -------------------------------------------------------------------------------- /ng2_node/optionB/systemjs.config.js: -------------------------------------------------------------------------------- 1 | (function(global) { 2 | 3 | // map tells the System loader where to look for things 4 | var map = { 5 | 'app': 'public', // 'dist', 6 | '@angular': 'node_modules/@angular', 7 | 'rxjs': 'node_modules/rxjs', 8 | 'angular-in-memory-web-api': 'node_modules/angular-in-memory-web-api/bundles/in-memory-web-api.umd.js', 9 | 'socket.io-client': 'node_modules/socket.io-client' 10 | }; 11 | 12 | // packages tells the System loader how to load when no filename and/or no extension 13 | var packages = { 14 | 'app': { main: 'main.js', defaultExtension: 'js' }, 15 | 'rxjs': { defaultExtension: 'js' }, 16 | 'socket.io-client': { main: 'socket.io.js'} 17 | }; 18 | 19 | var ngPackageNames = [ 20 | 'common', 21 | 'compiler', 22 | 'core', 23 | 'forms', 24 | 'http', 25 | 'platform-browser', 26 | 'platform-browser-dynamic', 27 | 'router', 28 | 'upgrade', 29 | ]; 30 | 31 | // Individual files (~300 requests): 32 | function packIndex(pkgName) { 33 | packages['@angular/'+pkgName] = { main: 'index.js', defaultExtension: 'js' }; 34 | } 35 | 36 | // Bundled (~40 requests): 37 | function packUmd(pkgName) { 38 | packages['@angular/'+pkgName] = { main: '/bundles/' + pkgName + '.umd.js', defaultExtension: 'js' }; 39 | } 40 | 41 | // Most environments should use UMD; some (Karma) need the individual index files 42 | var setPackageConfig = System.packageWithIndex ? packIndex : packUmd; 43 | // Add package entries for angular packages 44 | ngPackageNames.forEach(setPackageConfig); 45 | 46 | var config = { 47 | map: map, 48 | packages: packages 49 | }; 50 | 51 | System.config(config); 52 | 53 | })(this); -------------------------------------------------------------------------------- /ng2_node/optionB/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "sourceMap": true, 7 | "emitDecoratorMetadata": true, 8 | "experimentalDecorators": true, 9 | "lib": [ "es2015", "dom" ], 10 | "noImplicitAny": true, 11 | "suppressImplicitAnyIndexErrors": true 12 | } 13 | } -------------------------------------------------------------------------------- /servers/README.md: -------------------------------------------------------------------------------- 1 | ##Simple Server Examples 2 | 3 | Different ways you can scaffold your simple express app. Includes mongoose and swig. 4 | 5 | ###How to Follow Along 6 | 1. Download the package.json, views and sever_old.js from the repo. 7 | 2. Open a terminal and type: mongod 8 | 3. Open another terminal and type: npm install 9 | 4. convert server_old into classes 10 | 11 | **server.js** - using const and => 12 | 13 | **server2.js** - uses classes 14 | 15 | **server_old.js** - starting code -------------------------------------------------------------------------------- /servers/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server_setups", 3 | "version": "1.0.0", 4 | "repository": { 5 | "url": "" 6 | }, 7 | "license": "MIT", 8 | "scripts": { 9 | "start": "nodemon server.js\"" 10 | }, 11 | "dependencies": { 12 | "body-parser": "^1.15.2", 13 | "compression": "1.6.0", 14 | "cookie-parser": "^1.4.3", 15 | "express": "^4.14.0", 16 | "mongoose": "^4.6.8", 17 | "path": "^0.12.7", 18 | "swig": "^1.4.2", 19 | "serve-favicon": "~2.3.2" 20 | }, 21 | "devDependencies": { 22 | } 23 | } -------------------------------------------------------------------------------- /servers/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const path = require('path'); 3 | const bodyParser = require('body-parser'); 4 | const mongoose = require('mongoose'); 5 | const swig = require('swig'); 6 | const port = 8000; 7 | const app = express(); 8 | 9 | mongoose.connect('mongodb://localhost/meetings'); 10 | 11 | app.engine('html', swig.renderFile); 12 | 13 | app.set('views', path.join(__dirname, 'views')); 14 | app.set('view engine', 'html'); 15 | 16 | app.use(bodyParser.json()); 17 | app.use(bodyParser.urlencoded({ extended: false })); 18 | 19 | app.get('/', (req, res) => { 20 | res.render('index.html'); 21 | }); 22 | 23 | app.listen(port, () => { 24 | console.log('app listening on port ' + port); 25 | }); -------------------------------------------------------------------------------- /servers/server2.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const path = require('path'); 3 | const bodyParser = require('body-parser'); 4 | const mongoose = require('mongoose'); 5 | const swig = require('swig'); 6 | const port = 8001; 7 | const app = express(); 8 | 9 | class Server { 10 | 11 | constructor() { 12 | this.initDB(); 13 | this.initViewEngine(); 14 | this.initExpressMiddleware(); 15 | this.initRoutes(); 16 | this.start(); 17 | } 18 | 19 | start() { 20 | app.listen(port, () => 21 | console.log('app listening on port ' + port)); 22 | } 23 | 24 | initViewEngine() { 25 | app.engine('html', swig.renderFile); 26 | app.set('views', path.join(__dirname, 'views')); 27 | app.set('view engine', 'html'); 28 | } 29 | 30 | initExpressMiddleware() { 31 | app.use(bodyParser.json()); 32 | app.use(bodyParser.urlencoded({ extended: false })); 33 | } 34 | 35 | initDB() { 36 | mongoose.connect('mongodb://localhost/meetings'); 37 | } 38 | 39 | initRoutes() { 40 | app.get('/', (req, res) => 41 | res.render('index.html')); 42 | } 43 | } 44 | 45 | new Server(); -------------------------------------------------------------------------------- /servers/server_old.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const path = require('path'); 3 | const bodyParser = require('body-parser'); 4 | const mongoose = require('mongoose'); 5 | const swig = require('swig'); 6 | const port = 8000; 7 | const app = express(); 8 | 9 | class Server { 10 | 11 | constructor() { 12 | this.initDB(); 13 | this.initViewEngine(); 14 | this.initExpressMiddleware(); 15 | this.initRoutes(); 16 | this.start(); 17 | } 18 | 19 | start() { 20 | app.listen(port, () => 21 | console.log('app listening on port ' + port)); 22 | } 23 | 24 | initViewEngine() { 25 | app.engine('html', swig.renderFile); 26 | 27 | app.set('views', path.join(__dirname, 'views')); 28 | app.set('view engine', 'html'); 29 | } 30 | 31 | initExpressMiddleware() { 32 | app.use(bodyParser.json()); 33 | app.use(bodyParser.urlencoded({ extended: false })); 34 | } 35 | 36 | initRoutes() { 37 | app.get('/', (req, res) => 38 | res.render('index.html')); 39 | } 40 | 41 | initDB() { 42 | mongoose.connect('mongodb://localhost/meetings'); 43 | } 44 | } 45 | 46 | new Server(); -------------------------------------------------------------------------------- /servers/views/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ title }} 5 | 6 | 7 | 8 | 9 | 10 | 29 |
30 |
31 |

32 |

Virtual Meeting Notes

33 |

This is a list of the last dozen meeting notes that were entered in.

34 |
35 |
36 | 37 |
38 | 39 |
40 |
41 |
42 | 49 |
50 |
51 | 52 | 56 |
57 |
58 | 59 | 60 | 61 | 62 | 63 | --------------------------------------------------------------------------------