diff --git a/.editorconfig b/.editorconfig
index 5760be5..869ff6c 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,12 +1,16 @@
+# @AngularClass
# http://editorconfig.org
+
root = true
[*]
+charset = utf-8
indent_style = space
indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
+end_of_line = lf
insert_final_newline = true
+trim_trailing_whitespace = true
[*.md]
+insert_final_newline = false
trim_trailing_whitespace = false
diff --git a/.gitignore b/.gitignore
index b38db2f..12d2915 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,62 @@
-node_modules/
-build/
+# @AngularClass
+
+# Logs
+logs
+*.log
+
+# Runtime data
+pids
+*.pid
+*.seed
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Compiled binary addons (http://nodejs.org/api/addons.html)
+build/Release
+
+# Users Environment Variables
+.lock-wscript
+
+# OS generated files #
+.DS_Store
+ehthumbs.db
+Icon?
+Thumbs.db
+
+# Node Files #
+/node_modules
+/bower_components
+npm-debug.log
+
+# Coverage #
+/coverage/
+
+# Typing #
+/src/typings/tsd/
+/typings/
+/tsd_typings/
+
+# Dist #
+/dist
+/public/__build__/
+/src/*/__build__/
+/__build__/**
+/public/dist/
+/src/*/dist/
+/dist/**
+/.awcache
+.webpack.json
+
+# Doc #
+/doc/
+
+# IDE #
+.idea/
+*.swp
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 0000000..b009dfb
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+lts/*
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..7a1f206
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,29 @@
+language: node_js
+node_js:
+ - "4"
+ - "5"
+ - "6"
+ - "node"
+services:
+ - docker
+before_install:
+ - export CHROME_BIN=chromium-browser
+ - export DISPLAY=:99.0
+ - sh -e /etc/init.d/xvfb start
+ # Repo for yarn
+ - sudo apt-key adv --keyserver pgp.mit.edu --recv D101F7899D41F3C3
+ - echo "deb http://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
+ - sudo apt-get update -qq
+ - sudo apt-get install -y -qq yarn
+ - sleep 3
+ # Updating NPM to relevant version >= 3 on Node.JS LTS
+ - npm i -g npm@^3
+install:
+ - yarn
+script:
+ - npm test
+ - npm run build:docker
+cache:
+ directories:
+ - $HOME/.yarn-cache
+sudo: required
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..cb51733
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,3 @@
+# Builds a Docker to deliver dist/
+FROM nginx:latest
+COPY dist/ /usr/share/nginx/html
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index c545e32..88bd8b8 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,13 +1,22 @@
-Copyright <greg.fun@gmail.com>
+The MIT License (MIT)
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
+Copyright (c) 2015-2016 AngularClass LLC
- http://www.apache.org/licenses/LICENSE-2.0
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/README.md b/README.md
index fe272f8..e68160f 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,383 @@
-# webpack-test
+
+
+
+
+
+___
+
+[![taylor swift](https://img.shields.io/badge/secured%20by-taylor%20swift-brightgreen.svg)](https://twitter.com/SwiftOnSecurity)
+[![volkswagen status](https://auchenberg.github.io/volkswagen/volkswargen_ci.svg?v=1)](https://github.com/auchenberg/volkswagen) [![GitHub version](https://badge.fury.io/gh/angularclass%2Fangular2-webpack-starter.svg)](https://badge.fury.io/gh/angularclass%2Fangular2-webpack-starter) [![Dependency Status](https://david-dm.org/angularclass/angular2-webpack-starter.svg)](https://david-dm.org/angularclass/angular2-webpack-starter)
+[![Stack Share](http://img.shields.io/badge/tech-stack-0690fa.svg?style=flat)](http://stackshare.io/angularclass/angular-2-webpack-starter)
+
+
+
+
+
+
+
+# Angular2 Webpack Starter [![Join Slack](https://img.shields.io/badge/slack-join-brightgreen.svg)](https://angularclass.com/slack-join) [![Join the chat at https://gitter.im/angularclass/angular2-webpack-starter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/angularclass/angular2-webpack-starter?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+
+
+> An Angular 2 starter kit featuring [Angular 2](https://angular.io) ([Router](https://angular.io/docs/js/latest/api/router/), [Forms](https://angular.io/docs/js/latest/api/forms/),
+[Http](https://angular.io/docs/js/latest/api/http/),
+[Services](https://gist.github.com/gdi2290/634101fec1671ee12b3e#_follow_@AngularClass_on_twitter),
+[Tests](https://angular.io/docs/js/latest/api/test/), [E2E](https://angular.github.io/protractor/#/faq#what-s-the-difference-between-karma-and-protractor-when-do-i-use-which-)), [Material](https://github.com/angular/material2), [Karma](https://karma-runner.github.io/), [Protractor](https://angular.github.io/protractor/), [Jasmine](https://github.com/jasmine/jasmine), [Istanbul](https://github.com/gotwarlost/istanbul), [TypeScript](http://www.typescriptlang.org/), [@types](https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0ahUKEwjgjdrR7u_NAhUQ7GMKHXgpC4EQFggnMAI&url=https%3A%2F%2Fwww.npmjs.com%2F~types&usg=AFQjCNG2PFhwEo88JKo12mrw_4d0w1oNiA&sig2=N69zbO0yN8ET7v4KVCUOKA), [TsLint](http://palantir.github.io/tslint/), [Codelyzer](https://github.com/mgechev/codelyzer), [Hot Module Replacement](https://webpack.github.io/docs/hot-module-replacement-with-webpack.html), and [Webpack 2](http://webpack.github.io/) by [AngularClass](https://angularclass.com).
+
+> If you're looking for Angular 1.x please use [NG6-starter](https://github.com/angularclass/NG6-starter)
+> If you're looking to learn about Webpack and ES6 Build Tools check out [ES6-build-tools](https://github.com/AngularClass/ES6-build-tools)
+> If you're looking to learn TypeScript see [TypeStrong/learn-typescript](https://github.com/TypeStrong/learn-typescript)
+> If you're looking for something easier to get started with then see the angular2-seed that I also maintain [angular/angular2-seed](https://github.com/AngularClass/angular2-seed)
+> If you're looking to add Angular 2 Material Design we have a branch [material2](https://github.com/AngularClass/angular2-webpack-starter/tree/material2)
+
+This seed repo serves as an Angular 2 starter for anyone looking to get up and running with Angular 2 and TypeScript fast. Using a [Webpack 2](http://webpack.github.io/) for building our files and assisting with boilerplate. We're also using Protractor for our end-to-end story and Karma for our unit tests.
+* Best practices in file and application organization for Angular 2.
+* Ready to go build system using Webpack for working with TypeScript.
+* Angular 2 examples that are ready to go when experimenting with Angular 2.
+* A great Angular 2 seed repo for anyone who wants to start their project.
+* Testing Angular 2 code with Jasmine and Karma.
+* Coverage with Istanbul and Karma
+* End-to-end Angular 2 code using Protractor.
+* Type manager with @types
+* Hot Module Replacement with Webpack and [@angularclass/hmr](https://github.com/angularclass/angular2-hmr) and [@angularclass/hmr-loader](https://github.com/angularclass/angular2-hmr-loader)
+* Material Design with [angular/material2](https://github.com/angular/material2)
+
+### Quick start
+**Make sure you have Node version >= 5.0 and NPM >= 3**
+> Clone/Download the repo then edit `app.ts` inside [`/src/app/app.ts`](/src/app/app.ts)
+
+```bash
+# clone our repo
+# --depth 1 removes all but one .git commit history
+git clone --depth 1 https://github.com/angularclass/angular2-webpack-starter.git
+
+# change directory to our repo
+cd angular2-webpack-starter
+
+# install the repo with npm
+npm install
+
+# start the server
+npm start
+
+# use Hot Module Replacement
+npm run server:dev:hmr
+
+# if you're in China use cnpm
+# https://github.com/cnpm/cnpm
+```
+go to [http://0.0.0.0:3000](http://0.0.0.0:3000) or [http://localhost:3000](http://localhost:3000) in your browser
+
+# Table of Contents
+* [File Structure](#file-structure)
+* [Getting Started](#getting-started)
+ * [Dependencies](#dependencies)
+ * [Installing](#installing)
+ * [Running the app](#running-the-app)
+* [Configuration](#configuration)
+* [Contributing](#contributing)
+* [TypeScript](#typescript)
+* [@Types](#types)
+* [Frequently asked questions](#frequently-asked-questions)
+* [Support, Questions, or Feedback](#support-questions-or-feedback)
+* [License](#license)
+
+
+## File Structure
+We use the component approach in our starter. This is the new standard for developing Angular apps and a great way to ensure maintainable code by encapsulation of our behavior logic. A component is basically a self contained app usually in a single file or a folder with each concern as a file: style, template, specs, e2e, and component class. Here's how it looks:
+```
+angular2-webpack-starter/
+ ├──config/ * our configuration
+ | ├──helpers.js * helper functions for our configuration files
+ | ├──spec-bundle.js * ignore this magic that sets up our angular 2 testing environment
+ | ├──karma.conf.js * karma config for our unit tests
+ | ├──protractor.conf.js * protractor config for our end-to-end tests
+ │ ├──webpack.dev.js * our development webpack config
+ │ ├──webpack.prod.js * our production webpack config
+ │ └──webpack.test.js * our testing webpack config
+ │
+ ├──src/ * our source files that will be compiled to javascript
+ | ├──main.browser.ts * our entry file for our browser environment
+ │ │
+ | ├──index.html * Index.html: where we generate our index page
+ │ │
+ | ├──polyfills.ts * our polyfills file
+ │ │
+ | ├──vendor.ts * our vendor file
+ │ │
+ │ ├──app/ * WebApp: folder
+ │ │ ├──app.spec.ts * a simple test of components in app.ts
+ │ │ ├──app.e2e.ts * a simple end-to-end test for /
+ │ │ └──app.ts * App.ts: a simple version of our App component components
+ │ │
+ │ └──assets/ * static assets are served here
+ │ ├──icon/ * our list of icons from www.favicon-generator.org
+ │ ├──service-worker.js * ignore this. Web App service worker that's not complete yet
+ │ ├──robots.txt * for search engines to crawl your website
+ │ └──humans.txt * for humans to know who the developers are
+ │
+ │
+ ├──tslint.json * typescript lint config
+ ├──typedoc.json * typescript documentation generator
+ ├──tsconfig.json * config that webpack uses for typescript
+ ├──package.json * what npm uses to manage it's dependencies
+ └──webpack.config.js * webpack main configuration file
+
+```
+
+# Getting Started
+## Dependencies
+What you need to run this app:
+* `node` and `npm` (`brew install node`)
+* Ensure you're running the latest versions Node `v4.x.x`+ (or `v5.x.x`) and NPM `3.x.x`+
+
+> If you have `nvm` installed, which is highly recommended (`brew install nvm`) you can do a `nvm install --lts && nvm use` in `$` to run with the latest Node LTS. You can also have this `zsh` done for you [automatically](https://github.com/creationix/nvm#calling-nvm-use-automatically-in-a-directory-with-a-nvmrc-file)
+
+Once you have those, you should install these globals with `npm install --global`:
+* `webpack` (`npm install --global webpack`)
+* `webpack-dev-server` (`npm install --global webpack-dev-server`)
+* `karma` (`npm install --global karma-cli`)
+* `protractor` (`npm install --global protractor`)
+* `typescript` (`npm install --global typescript`)
+
+## Installing
+* `fork` this repo
+* `clone` your fork
+* `npm install webpack-dev-server rimraf webpack -g` to install required global dependencies
+* `npm install` to install all dependencies or `yarn`
+* `npm run server` to start the dev server in another tab
+
+## Running the app
+After you have installed all dependencies you can now run the app. Run `npm run server` to start a local server using `webpack-dev-server` which will watch, build (in-memory), and reload for you. The port will be displayed to you as `http://0.0.0.0:3000` (or if you prefer IPv6, if you're using `express` server, then it's `http://[::1]:3000/`).
+
+### server
+```bash
+# development
+npm run server
+# production
+npm run build:prod
+npm run server:prod
+```
+
+## Other commands
+
+### build files
+```bash
+# development
+npm run build:dev
+# production
+npm run build:prod
+```
+
+### hot module replacement
+```bash
+npm run server:dev:hmr
+```
+
+### watch and build files
+```bash
+npm run watch
+```
+
+### run tests
+```bash
+npm run test
+```
+
+### watch and run our tests
+```bash
+npm run watch:test
+```
+
+### run end-to-end tests
+```bash
+# make sure you have your server running in another terminal
+npm run e2e
+```
+
+### run webdriver (for end-to-end)
+```bash
+npm run webdriver:update
+npm run webdriver:start
+```
+
+### run Protractor's elementExplorer (for end-to-end)
+```bash
+npm run webdriver:start
+# in another terminal
+npm run e2e:live
+```
+
+### build Docker
+```bash
+npm run build:docker
+```
+
+# Configuration
+Configuration files live in `config/` we are currently using webpack, karma, and protractor for different stages of your application
+
+# Contributing
+You can include more examples as components but they must introduce a new concept such as `Home` component (separate folders), and Todo (services). I'll accept pretty much everything so feel free to open a Pull-Request
+
+# TypeScript
+> To take full advantage of TypeScript with autocomplete you would have to install it globally and use an editor with the correct TypeScript plugins.
+
+## Use latest TypeScript compiler
+TypeScript 1.7.x includes everything you need. Make sure to upgrade, even if you installed TypeScript previously.
+
+```
+npm install --global typescript
+```
+
+## Use a TypeScript-aware editor
+We have good experience using these editors:
+
+* [Visual Studio Code](https://code.visualstudio.com/)
+* [Webstorm 10](https://www.jetbrains.com/webstorm/download/)
+* [Atom](https://atom.io/) with [TypeScript plugin](https://atom.io/packages/atom-typescript)
+* [Sublime Text](http://www.sublimetext.com/3) with [Typescript-Sublime-Plugin](https://github.com/Microsoft/Typescript-Sublime-plugin#installation)
+
+### Visual Studio Code + Debugger for Chrome
+> Install [Debugger for Chrome](https://marketplace.visualstudio.com/items?itemName=msjsdiag.debugger-for-chrome) and see docs for instructions to launch Chrome
+
+The included `.vscode` automatically connects to the webpack development server on port `3000`.
+
+# Types
+> When you include a module that doesn't include Type Definitions inside of the module you can include external Type Definitions with @types
+
+i.e, to have youtube api support, run this command in terminal:
+```shell
+npm i @types/youtube @types/gapi @types/gapi.youtube
+```
+In some cases where your code editor doesn't support Typescript 2 yet or these types weren't listed in ```tsconfig.json```, add these to **"src/custom-typings.d.ts"** to make peace with the compile check:
+```es6
+import '@types/gapi.youtube';
+import '@types/gapi';
+import '@types/youtube';
+```
+
+## Custom Type Definitions
+When including 3rd party modules you also need to include the type definition for the module
+if they don't provide one within the module. You can try to install it with @types
+
+```
+npm install @types/node
+npm install @types/lodash
+```
+
+If you can't find the type definition in the registry we can make an ambient definition in
+this file for now. For example
+
+```typescript
+declare module "my-module" {
+ export function doesSomething(value: string): string;
+}
+```
+
+
+If you're prototyping and you will fix the types later you can also declare it as type any
+
+```typescript
+declare var assert: any;
+declare var _: any;
+declare var $: any;
+```
+
+If you're importing a module that uses Node.js modules which are CommonJS you need to import as
+
+```typescript
+import * as _ from 'lodash';
+```
+
+
+# Frequently asked questions
+* What's the current browser support for Angular 2 Beta?
+ * Please view the updated list of [browser support for Angular 2](https://github.com/angularclass/awesome-angular2#current-browser-support-for-angular-2)
+* Why is my service, aka provider, is not injecting parameter correctly?
+ * Please use `@Injectable()` for your service for typescript to correctly attach the metadata (this is a TypeScript problem)
+* How do I run protractor with node 0.12.x?
+ * please check out this repo to use the old version of protractor [#146](https://github.com/AngularClass/angular2-webpack-starter/pull/146/files)
+* Where do I write my tests?
+ * You can write your tests next to your component files. See [`/src/app/home/home.spec.ts`](/src/app/home/home.spec.ts)
+* How do I start the app when I get `EACCES` and `EADDRINUSE` errors?
+ * The `EADDRINUSE` error means the port `3000` is currently being used and `EACCES` is lack of permission for webpack to build files to `./dist/`
+* How to use `sass` for css?
+ * `loaders: ['raw-loader','sass-loader']` and `@Component({ styleUrls: ['./filename.scss'] })` see issue [#136](https://github.com/AngularClass/angular2-webpack-starter/issues/136)
+* How do I test a Service?
+ * See issue [#130](https://github.com/AngularClass/angular2-webpack-starter/issues/130#issuecomment-158872648)
+* How do I add `vscode-chrome-debug` support?
+ * The VS Code chrome debug extension support can be done via `launch.json` see issue [#144](https://github.com/AngularClass/angular2-webpack-starter/issues/144#issuecomment-164063790)
+* How do I make the repo work in a virtual machine?
+ * You need to use `0.0.0.0` so revert these changes [#205](https://github.com/AngularClass/angular2-webpack-starter/pull/205/files)
+* What are the naming conventions for Angular 2?
+ * please see issue [#185](https://github.com/AngularClass/angular2-webpack-starter/issues/185) and PR [196](https://github.com/AngularClass/angular2-webpack-starter/pull/196)
+* How do I include bootstrap or jQuery?
+ * please see issue [#215](https://github.com/AngularClass/angular2-webpack-starter/issues/215) and [#214](https://github.com/AngularClass/angular2-webpack-starter/issues/214#event-511768416)
+* How do I async load a component?
+ * see wiki [How-do-I-async-load-a-component-with-AsyncRoute](https://github.com/AngularClass/angular2-webpack-starter/wiki/How-do-I-async-load-a-component-with-AsyncRoute)
+* Error: Cannot find module 'tapable'
+ * Remove `node_modules/` and run `npm cache clean` then `npm install`
+* What about Webpack 2?
+ * If you're looking for Webpack 2 version then see the [experimental version](https://github.com/gdi2290/angular2-webpack2-starter) that will be merged soon.
+* How do I turn on Hot Module Replacement
+ * Run `npm run server:dev:hmr`
+* `RangeError: Maximum call stack size exceeded`
+ * This is a problem with minifying Angular 2 and it's recent JIT templates. If you set `mangle` to `false` then you should be good.
+* Why is the size of my app larger in development?
+ * We are using inline source-maps and hot module replacement which will increase the bundle size.
+* If you're in China
+ * check out https://github.com/cnpm/cnpm
+* If you're looking to add Angular 2 Material Design
+ * check out the [material2](https://github.com/AngularClass/angular2-webpack-starter/tree/material2) branch
+* node-pre-gyp ERR in npm install (Windows)
+ * install Python x86 version between 2.5 and 3.0 on windows see issue [#626](https://github.com/AngularClass/angular2-webpack-starter/issues/626)
+* `Error:Error: Parse tsconfig error [{"messageText":"Unknown compiler option 'lib'.","category":1,"code":5023},{"messageText":"Unknown compiler option 'strictNullChecks'.","category":1,"code":5023},{"messageText":"Unknown compiler option 'baseUrl'.","category":1,"code":5023},{"messageText":"Unknown compiler option 'paths'.","category":1,"code":5023},{"messageText":"Unknown compiler option 'types'.","category":1,"code":5023}]`
+ * remove `node_modules/typescript` and run `npm install typescript@beta`. This repo now uses ts 2.0
+* "There are multiple modules with names that only differ in casing"
+ * change `c:\[path to angular2-webpack-starter]` to `C:\[path to angular2-webpack-starter]` see [926#issuecomment-245223547](https://github.com/AngularClass/angular2-webpack-starter/issues/926#issuecomment-245223547)
+
+# Support, Questions, or Feedback
+> Contact us anytime for anything about this repo or Angular 2
+
+* [Chat: AngularClass.slack](http://angularclass.com/member-join/)
+* [Twitter: @AngularClass](https://twitter.com/AngularClass)
+* [Gitter: AngularClass/angular2-webpack-starter](https://gitter.im/angularclass/angular2-webpack-starter)
+
+# Quick Start Guides
+
+## Nitrous
+
+You can quickly create a free development environment to get started using this
+starter kit in the cloud on [Nitrous](https://www.nitrous.io/):
+
+
+
+
+
+Simply run `HOST=0.0.0.0 npm start` from the terminal inside of
+`~/code/angular2-webpack-starter` and access your site via the "Preview > 3000"
+link in the IDE.
+
+
+
+
+
+
+
+___
+
+enjoy — **AngularClass**
+
+
+
+[![AngularClass](https://cloud.githubusercontent.com/assets/1016365/9863770/cb0620fc-5af7-11e5-89df-d4b0b2cdfc43.png "Angular Class")](https://angularclass.com)
+##[AngularClass](https://angularclass.com)
+> Learn AngularJS, Angular 2, and Modern Web Development from the best.
+> Looking for corporate Angular training, want to host us, or Angular consulting? patrick@angularclass.com
+
+___
+
# License
-[Apache-2.0](/LICENSE)
+ [MIT](/LICENSE)
diff --git a/config/github-deploy/index.js b/config/github-deploy/index.js
new file mode 100644
index 0000000..e03899b
--- /dev/null
+++ b/config/github-deploy/index.js
@@ -0,0 +1,59 @@
+const helpers = require('../helpers');
+const execSync = require('child_process').execSync;
+
+const REPO_NAME_RE = /Push {2}URL: https:\/\/github\.com\/.*\/(.*)\.git/;
+
+function getWebpackConfigModule() {
+ if (helpers.hasProcessFlag('github-dev')) {
+ return require('../webpack.dev.js');
+ } else if (helpers.hasProcessFlag('github-prod')) {
+ return require('../webpack.prod.js');
+ } else {
+ throw new Error('Invalid compile option.');
+ }
+}
+
+function getRepoName(remoteName) {
+ remoteName = remoteName || 'origin';
+
+ var stdout = execSync('git remote show ' + remoteName),
+ match = REPO_NAME_RE.exec(stdout);
+
+ if (!match) {
+ throw new Error('Could not find a repository on remote ' + remoteName);
+ } else {
+ return match[1];
+ }
+}
+
+function stripTrailing(str, char) {
+
+ if (str[0] === char) {
+ str = str.substr(1);
+ }
+
+ if (str.substr(-1) === char) {
+ str = str.substr(0, str.length - 1);
+ }
+
+ return str;
+}
+
+/**
+ * Given a string remove trailing slashes and adds 1 slash at the end of the string.
+ *
+ * Example:
+ * safeUrl('/value/')
+ * // 'value/'
+ *
+ * @param url
+ * @returns {string}
+ */
+function safeUrl(url) {
+ const stripped = stripTrailing(url || '', '/');
+ return stripped ? stripped + '/' : '';
+}
+
+exports.getWebpackConfigModule = getWebpackConfigModule;
+exports.getRepoName = getRepoName;
+exports.safeUrl = safeUrl;
diff --git a/config/head-config.common.js b/config/head-config.common.js
new file mode 100644
index 0000000..ce6dec9
--- /dev/null
+++ b/config/head-config.common.js
@@ -0,0 +1,45 @@
+/**
+ * Configuration for head elements added during the creation of index.html.
+ *
+ * All href attributes are added the publicPath (if exists) by default.
+ * You can explicitly hint to prefix a publicPath by setting a boolean value to a key that has
+ * the same name as the attribute you want to operate on, but prefix with =
+ *
+ * Example:
+ * { name: 'msapplication-TileImage', content: '/assets/icon/ms-icon-144x144.png', '=content': true },
+ * Will prefix the publicPath to content.
+ *
+ * { rel: 'apple-touch-icon', sizes: '57x57', href: '/assets/icon/apple-icon-57x57.png', '=href': false },
+ * Will not prefix the publicPath on href (href attributes are added by default
+ *
+ */
+module.exports = {
+ link: [
+ /** tags for 'apple-touch-icon' (AKA Web Clips). **/
+ { rel: 'apple-touch-icon', sizes: '57x57', href: '/assets/icon/apple-icon-57x57.png' },
+ { rel: 'apple-touch-icon', sizes: '60x60', href: '/assets/icon/apple-icon-60x60.png' },
+ { rel: 'apple-touch-icon', sizes: '72x72', href: '/assets/icon/apple-icon-72x72.png' },
+ { rel: 'apple-touch-icon', sizes: '76x76', href: '/assets/icon/apple-icon-76x76.png' },
+ { rel: 'apple-touch-icon', sizes: '114x114', href: '/assets/icon/apple-icon-114x114.png' },
+ { rel: 'apple-touch-icon', sizes: '120x120', href: '/assets/icon/apple-icon-120x120.png' },
+ { rel: 'apple-touch-icon', sizes: '144x144', href: '/assets/icon/apple-icon-144x144.png' },
+ { rel: 'apple-touch-icon', sizes: '152x152', href: '/assets/icon/apple-icon-152x152.png' },
+ { rel: 'apple-touch-icon', sizes: '180x180', href: '/assets/icon/apple-icon-180x180.png' },
+
+ /** tags for android web app icons **/
+ { rel: 'icon', type: 'image/png', sizes: '192x192', href: '/assets/icon/android-icon-192x192.png' },
+
+ /** tags for favicons **/
+ { rel: 'icon', type: 'image/png', sizes: '32x32', href: '/assets/icon/favicon-32x32.png' },
+ { rel: 'icon', type: 'image/png', sizes: '96x96', href: '/assets/icon/favicon-96x96.png' },
+ { rel: 'icon', type: 'image/png', sizes: '16x16', href: '/assets/icon/favicon-16x16.png' },
+
+ /** tags for a Web App Manifest **/
+ { rel: 'manifest', href: '/assets/manifest.json' }
+ ],
+ meta: [
+ { name: 'msapplication-TileColor', content: '#00bcd4' },
+ { name: 'msapplication-TileImage', content: '/assets/icon/ms-icon-144x144.png', '=content': true },
+ { name: 'theme-color', content: '#00bcd4' }
+ ]
+};
diff --git a/config/helpers.js b/config/helpers.js
new file mode 100644
index 0000000..41c9c77
--- /dev/null
+++ b/config/helpers.js
@@ -0,0 +1,24 @@
+/**
+ * @author: @AngularClass
+ */
+var path = require('path');
+
+// Helper functions
+var ROOT = path.resolve(__dirname, '..');
+
+function hasProcessFlag(flag) {
+ return process.argv.join('').indexOf(flag) > -1;
+}
+
+function isWebpackDevServer() {
+ return process.argv[1] && !! (/webpack-dev-server/.exec(process.argv[1]));
+}
+
+function root(args) {
+ args = Array.prototype.slice.call(arguments, 0);
+ return path.join.apply(path, [ROOT].concat(args));
+}
+
+exports.hasProcessFlag = hasProcessFlag;
+exports.isWebpackDevServer = isWebpackDevServer;
+exports.root = root;
diff --git a/config/html-elements-plugin/index.js b/config/html-elements-plugin/index.js
new file mode 100644
index 0000000..5766a2f
--- /dev/null
+++ b/config/html-elements-plugin/index.js
@@ -0,0 +1,106 @@
+
+function HtmlElementsPlugin(locations) {
+ this.locations = locations;
+}
+
+HtmlElementsPlugin.prototype.apply = function(compiler) {
+ var self = this;
+ compiler.plugin('compilation', function(compilation) {
+ compilation.options.htmlElements = compilation.options.htmlElements || {};
+
+ compilation.plugin('html-webpack-plugin-before-html-generation', function(htmlPluginData, callback) {
+ const locations = self.locations;
+
+ if (locations) {
+ const publicPath = htmlPluginData.assets.publicPath;
+
+ Object.getOwnPropertyNames(locations).forEach(function(loc) {
+ compilation.options.htmlElements[loc] = getHtmlElementString(locations[loc], publicPath);
+ });
+ }
+
+
+ callback(null, htmlPluginData);
+ });
+ });
+
+};
+
+const RE_ENDS_WITH_BS = /\/$/;
+
+/**
+ * Create an HTML tag with attributes from a map.
+ *
+ * Example:
+ * createTag('link', { rel: "manifest", href: "/assets/manifest.json" })
+ * //
+ * @param tagName The name of the tag
+ * @param attrMap A Map of attribute names (keys) and their values.
+ * @param publicPath a path to add to eh start of static asset url
+ * @returns {string}
+ */
+function createTag(tagName, attrMap, publicPath) {
+ publicPath = publicPath || '';
+
+ // add trailing slash if we have a publicPath and it doesn't have one.
+ if (publicPath && !RE_ENDS_WITH_BS.test(publicPath)) {
+ publicPath += '/';
+ }
+
+ const attributes = Object.getOwnPropertyNames(attrMap)
+ .filter(function(name) { return name[0] !== '='; } )
+ .map(function(name) {
+ var value = attrMap[name];
+
+ if (publicPath) {
+ // check if we have explicit instruction, use it if so (e.g: =herf: false)
+ // if no instruction, use public path if it's href attribute.
+ const usePublicPath = attrMap.hasOwnProperty('=' + name) ? !!attrMap['=' + name] : name === 'href';
+
+ if (usePublicPath) {
+ // remove a starting trailing slash if the value has one so we wont have //
+ value = publicPath + (value[0] === '/' ? value.substr(1) : value);
+ }
+ }
+
+ return name + '="' + value + '"';
+ });
+
+ return '<' + tagName + ' ' + attributes.join(' ') + '>';
+}
+
+/**
+ * Returns a string representing all html elements defined in a data source.
+ *
+ * Example:
+ *
+ * const ds = {
+ * link: [
+ * { rel: "apple-touch-icon", sizes: "57x57", href: "/assets/icon/apple-icon-57x57.png" }
+ * ],
+ * meta: [
+ * { name: "msapplication-TileColor", content: "#00bcd4" }
+ * ]
+ * }
+ *
+ * getHeadTags(ds);
+ * // " "
+ * " "
+ *
+ * @returns {string}
+ */
+function getHtmlElementString(dataSource, publicPath) {
+ return Object.getOwnPropertyNames(dataSource)
+ .map(function(name) {
+ if (Array.isArray(dataSource[name])) {
+ return dataSource[name].map(function(attrs) { return createTag(name, attrs, publicPath); } );
+ } else {
+ return [ createTag(name, dataSource[name], publicPath) ];
+ }
+ })
+ .reduce(function(arr, curr) {
+ return arr.concat(curr);
+ }, [])
+ .join('\n\t');
+}
+module.exports = HtmlElementsPlugin;
diff --git a/config/karma.conf.js b/config/karma.conf.js
new file mode 100644
index 0000000..1f35c87
--- /dev/null
+++ b/config/karma.conf.js
@@ -0,0 +1,104 @@
+/**
+ * @author: @AngularClass
+ */
+
+module.exports = function(config) {
+ var testWebpackConfig = require('./webpack.test.js')({env: 'test'});
+
+ var configuration = {
+
+ // base path that will be used to resolve all patterns (e.g. files, exclude)
+ basePath: '',
+
+ /*
+ * Frameworks to use
+ *
+ * available frameworks: https://npmjs.org/browse/keyword/karma-adapter
+ */
+ frameworks: ['jasmine'],
+
+ // list of files to exclude
+ exclude: [ ],
+
+ /*
+ * list of files / patterns to load in the browser
+ *
+ * we are building the test environment in ./spec-bundle.js
+ */
+ files: [ { pattern: './config/spec-bundle.js', watched: false } ],
+
+ /*
+ * preprocess matching files before serving them to the browser
+ * available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
+ */
+ preprocessors: { './config/spec-bundle.js': ['coverage', 'webpack', 'sourcemap'] },
+
+ // Webpack Config at ./webpack.test.js
+ webpack: testWebpackConfig,
+
+ coverageReporter: {
+ type: 'in-memory'
+ },
+
+ remapCoverageReporter: {
+ 'text-summary': null,
+ json: './coverage/coverage.json',
+ html: './coverage/html'
+ },
+
+ // Webpack please don't spam the console when running in karma!
+ webpackMiddleware: { stats: 'errors-only'},
+
+ /*
+ * test results reporter to use
+ *
+ * possible values: 'dots', 'progress'
+ * available reporters: https://npmjs.org/browse/keyword/karma-reporter
+ */
+ reporters: [ 'mocha', 'coverage', 'remap-coverage' ],
+
+ // web server port
+ port: 9876,
+
+ // enable / disable colors in the output (reporters and logs)
+ colors: true,
+
+ /*
+ * level of logging
+ * possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
+ */
+ logLevel: config.LOG_INFO,
+
+ // enable / disable watching file and executing tests whenever any file changes
+ autoWatch: false,
+
+ /*
+ * start these browsers
+ * available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
+ */
+ browsers: [
+ 'Chrome'
+ ],
+
+ customLaunchers: {
+ ChromeTravisCi: {
+ base: 'Chrome',
+ flags: ['--no-sandbox']
+ }
+ },
+
+ /*
+ * Continuous Integration mode
+ * if true, Karma captures browsers, runs the tests and exits
+ */
+ singleRun: true
+ };
+
+ if (process.env.TRAVIS){
+ configuration.browsers = [
+ 'ChromeTravisCi'
+ ];
+ }
+
+ config.set(configuration);
+};
diff --git a/config/modules/angular2-hmr-prod.js b/config/modules/angular2-hmr-prod.js
new file mode 100644
index 0000000..26fce46
--- /dev/null
+++ b/config/modules/angular2-hmr-prod.js
@@ -0,0 +1,3 @@
+exports.HmrState = function() {
+
+};
diff --git a/config/protractor.conf.js b/config/protractor.conf.js
new file mode 100644
index 0000000..989911d
--- /dev/null
+++ b/config/protractor.conf.js
@@ -0,0 +1,49 @@
+/**
+ * @author: @AngularClass
+ */
+
+require('ts-node/register');
+var helpers = require('./helpers');
+
+exports.config = {
+ baseUrl: 'http://localhost:3000/',
+
+ // use `npm run e2e`
+ specs: [
+ helpers.root('src/**/**.e2e.ts'),
+ helpers.root('src/**/*.e2e.ts')
+ ],
+ exclude: [],
+
+ framework: 'jasmine2',
+
+ allScriptsTimeout: 110000,
+
+ jasmineNodeOpts: {
+ showTiming: true,
+ showColors: true,
+ isVerbose: false,
+ includeStackTrace: false,
+ defaultTimeoutInterval: 400000
+ },
+ directConnect: true,
+
+ capabilities: {
+ 'browserName': 'chrome',
+ 'chromeOptions': {
+ 'args': ['show-fps-counter=true']
+ }
+ },
+
+ onPrepare: function() {
+ browser.ignoreSynchronization = true;
+ },
+
+ /**
+ * Angular 2 configuration
+ *
+ * useAllAngular2AppRoots: tells Protractor to wait for any angular2 apps on the page instead of just the one matching
+ * `rootEl`
+ */
+ useAllAngular2AppRoots: true
+};
diff --git a/config/spec-bundle.js b/config/spec-bundle.js
new file mode 100644
index 0000000..63a0f14
--- /dev/null
+++ b/config/spec-bundle.js
@@ -0,0 +1,62 @@
+/**
+ * @author: @AngularClass
+ */
+
+/*
+ * When testing with webpack and ES6, we have to do some extra
+ * things to get testing to work right. Because we are gonna write tests
+ * in ES6 too, we have to compile those as well. That's handled in
+ * karma.conf.js with the karma-webpack plugin. This is the entry
+ * file for webpack test. Just like webpack will create a bundle.js
+ * file for our client, when we run test, it will compile and bundle them
+ * all here! Crazy huh. So we need to do some setup
+ */
+Error.stackTraceLimit = Infinity;
+
+require('core-js/es6');
+require('core-js/es7/reflect');
+
+// Typescript emit helpers polyfill
+require('ts-helpers');
+
+require('zone.js/dist/zone');
+require('zone.js/dist/long-stack-trace-zone');
+require('zone.js/dist/proxy'); // since zone.js 0.6.15
+require('zone.js/dist/sync-test');
+require('zone.js/dist/jasmine-patch'); // put here since zone.js 0.6.14
+require('zone.js/dist/async-test');
+require('zone.js/dist/fake-async-test');
+
+// RxJS
+require('rxjs/Rx');
+
+var testing = require('@angular/core/testing');
+var browser = require('@angular/platform-browser-dynamic/testing');
+
+testing.TestBed.initTestEnvironment(
+ browser.BrowserDynamicTestingModule,
+ browser.platformBrowserDynamicTesting()
+);
+
+/*
+ * Ok, this is kinda crazy. We can use the context method on
+ * require that webpack created in order to tell webpack
+ * what files we actually want to require or import.
+ * Below, context will be a function/object with file names as keys.
+ * Using that regex we are saying look in ../src then find
+ * any file that ends with spec.ts and get its path. By passing in true
+ * we say do this recursively
+ */
+var testContext = require.context('../src', true, /\.spec\.ts/);
+
+/*
+ * get all the files, for each file, call the context function
+ * that will require the file and load it up here. Context will
+ * loop and require those spec files here
+ */
+function requireAll(requireContext) {
+ return requireContext.keys().map(requireContext);
+}
+
+// requires and returns all modules that match
+var modules = requireAll(testContext);
diff --git a/config/webpack.common.js b/config/webpack.common.js
new file mode 100644
index 0000000..6f14980
--- /dev/null
+++ b/config/webpack.common.js
@@ -0,0 +1,289 @@
+/**
+ * @author: @AngularClass
+ */
+
+const webpack = require('webpack');
+const helpers = require('./helpers');
+
+/*
+ * Webpack Plugins
+ */
+// problem with copy-webpack-plugin
+const AssetsPlugin = require('assets-webpack-plugin');
+const ContextReplacementPlugin = require('webpack/lib/ContextReplacementPlugin');
+const CommonsChunkPlugin = require('webpack/lib/optimize/CommonsChunkPlugin');
+const CopyWebpackPlugin = require('copy-webpack-plugin');
+const ForkCheckerPlugin = require('awesome-typescript-loader').ForkCheckerPlugin;
+const HtmlElementsPlugin = require('./html-elements-plugin');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin');
+const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin');
+
+/*
+ * Webpack Constants
+ */
+const HMR = helpers.hasProcessFlag('hot');
+const METADATA = {
+ title: 'Angular2 Webpack Starter by @gdi2290 from @AngularClass',
+ baseUrl: '/',
+ isDevServer: helpers.isWebpackDevServer()
+};
+
+/*
+ * Webpack configuration
+ *
+ * See: http://webpack.github.io/docs/configuration.html#cli
+ */
+module.exports = function (options) {
+ isProd = options.env === 'production';
+ return {
+
+ /*
+ * Cache generated modules and chunks to improve performance for multiple incremental builds.
+ * This is enabled by default in watch mode.
+ * You can pass false to disable it.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#cache
+ */
+ //cache: false,
+
+ /*
+ * The entry point for the bundle
+ * Our Angular.js app
+ *
+ * See: http://webpack.github.io/docs/configuration.html#entry
+ */
+ entry: {
+
+ 'polyfills': './src/polyfills.browser.ts',
+ 'vendor': './src/vendor.browser.ts',
+ 'main': './src/main.browser.ts'
+
+ },
+
+ /*
+ * Options affecting the resolving of modules.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#resolve
+ */
+ resolve: {
+
+ /*
+ * An array of extensions that should be used to resolve modules.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#resolve-extensions
+ */
+ extensions: ['.ts', '.js', '.json'],
+
+ // An array of directory names to be resolved to the current directory
+ modules: [helpers.root('src'), 'node_modules'],
+
+ },
+
+ /*
+ * Options affecting the normal modules.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#module
+ */
+ module: {
+
+ rules: [
+
+ /*
+ * Typescript loader support for .ts and Angular 2 async routes via .async.ts
+ * Replace templateUrl and stylesUrl with require()
+ *
+ * See: https://github.com/s-panferov/awesome-typescript-loader
+ * See: https://github.com/TheLarkInn/angular2-template-loader
+ */
+ {
+ test: /\.ts$/,
+ loaders: [
+ '@angularclass/hmr-loader?pretty=' + !isProd + '&prod=' + isProd,
+ 'awesome-typescript-loader',
+ 'angular2-template-loader'
+ ],
+ exclude: [/\.(spec|e2e)\.ts$/]
+ },
+
+ /*
+ * Json loader support for *.json files.
+ *
+ * See: https://github.com/webpack/json-loader
+ */
+ {
+ test: /\.json$/,
+ loader: 'json-loader'
+ },
+
+ /*
+ * to string and css loader support for *.css files
+ * Returns file content as string
+ *
+ */
+ {
+ test: /\.css$/,
+ loaders: ['to-string-loader', 'css-loader']
+ },
+
+ /* Raw loader support for *.html
+ * Returns file content as string
+ *
+ * See: https://github.com/webpack/raw-loader
+ */
+ {
+ test: /\.html$/,
+ loader: 'raw-loader',
+ exclude: [helpers.root('src/index.html')]
+ },
+
+ /* File loader for supporting images, for example, in CSS files.
+ */
+ {
+ test: /\.(jpg|png|gif)$/,
+ loader: 'file'
+ },
+
+ ],
+
+ },
+
+ /*
+ * Add additional plugins to the compiler.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#plugins
+ */
+ plugins: [
+ new AssetsPlugin({
+ path: helpers.root('dist'),
+ filename: 'webpack-assets.json',
+ prettyPrint: true
+ }),
+
+ /*
+ * Plugin: ForkCheckerPlugin
+ * Description: Do type checking in a separate process, so webpack don't need to wait.
+ *
+ * See: https://github.com/s-panferov/awesome-typescript-loader#forkchecker-boolean-defaultfalse
+ */
+ new ForkCheckerPlugin(),
+ /*
+ * Plugin: CommonsChunkPlugin
+ * Description: Shares common code between the pages.
+ * It identifies common modules and put them into a commons chunk.
+ *
+ * See: https://webpack.github.io/docs/list-of-plugins.html#commonschunkplugin
+ * See: https://github.com/webpack/docs/wiki/optimization#multi-page-app
+ */
+ new CommonsChunkPlugin({
+ name: ['polyfills', 'vendor'].reverse()
+ }),
+
+ /**
+ * Plugin: ContextReplacementPlugin
+ * Description: Provides context to Angular's use of System.import
+ *
+ * See: https://webpack.github.io/docs/list-of-plugins.html#contextreplacementplugin
+ * See: https://github.com/angular/angular/issues/11580
+ */
+ new ContextReplacementPlugin(
+ // The (\\|\/) piece accounts for path separators in *nix and Windows
+ /angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/,
+ helpers.root('src') // location of your src
+ ),
+
+ /*
+ * Plugin: CopyWebpackPlugin
+ * Description: Copy files and directories in webpack.
+ *
+ * Copies project static assets.
+ *
+ * See: https://www.npmjs.com/package/copy-webpack-plugin
+ */
+ new CopyWebpackPlugin([{
+ from: 'src/assets',
+ to: 'assets',
+ }, {
+ from: 'src/meta',
+ }, ]),
+
+
+ /*
+ * Plugin: HtmlWebpackPlugin
+ * Description: Simplifies creation of HTML files to serve your webpack bundles.
+ * This is especially useful for webpack bundles that include a hash in the filename
+ * which changes every compilation.
+ *
+ * See: https://github.com/ampedandwired/html-webpack-plugin
+ */
+ new HtmlWebpackPlugin({
+ template: 'src/index.html',
+ title: METADATA.title,
+ chunksSortMode: 'dependency',
+ metadata: METADATA,
+ inject: 'head'
+ }),
+
+ /*
+ * Plugin: ScriptExtHtmlWebpackPlugin
+ * Description: Enhances html-webpack-plugin functionality
+ * with different deployment options for your scripts including:
+ *
+ * See: https://github.com/numical/script-ext-html-webpack-plugin
+ */
+ new ScriptExtHtmlWebpackPlugin({
+ defaultAttribute: 'defer'
+ }),
+
+ /*
+ * Plugin: HtmlElementsPlugin
+ * Description: Generate html tags based on javascript maps.
+ *
+ * If a publicPath is set in the webpack output configuration, it will be automatically added to
+ * href attributes, you can disable that by adding a "=href": false property.
+ * You can also enable it to other attribute by settings "=attName": true.
+ *
+ * The configuration supplied is map between a location (key) and an element definition object (value)
+ * The location (key) is then exported to the template under then htmlElements property in webpack configuration.
+ *
+ * Example:
+ * Adding this plugin configuration
+ * new HtmlElementsPlugin({
+ * headTags: { ... }
+ * })
+ *
+ * Means we can use it in the template like this:
+ * <%= webpackConfig.htmlElements.headTags %>
+ *
+ * Dependencies: HtmlWebpackPlugin
+ */
+ new HtmlElementsPlugin({
+ headTags: require('./head-config.common')
+ }),
+
+ /**
+ * Plugin LoaderOptionsPlugin (experimental)
+ *
+ * See: https://gist.github.com/sokra/27b24881210b56bbaff7
+ */
+ new LoaderOptionsPlugin({}),
+
+ ],
+
+ /*
+ * Include polyfills or mocks for various node stuff
+ * Description: Node configuration
+ *
+ * See: https://webpack.github.io/docs/configuration.html#node
+ */
+ node: {
+ global: true,
+ crypto: 'empty',
+ process: true,
+ module: false,
+ clearImmediate: false,
+ setImmediate: false
+ }
+
+ };
+}
diff --git a/config/webpack.dev.js b/config/webpack.dev.js
new file mode 100644
index 0000000..d0680a3
--- /dev/null
+++ b/config/webpack.dev.js
@@ -0,0 +1,178 @@
+/**
+ * @author: @AngularClass
+ */
+
+const helpers = require('./helpers');
+const webpackMerge = require('webpack-merge'); // used to merge webpack configs
+const commonConfig = require('./webpack.common.js'); // the settings that are common to prod and dev
+
+/**
+ * Webpack Plugins
+ */
+const DefinePlugin = require('webpack/lib/DefinePlugin');
+const NamedModulesPlugin = require('webpack/lib/NamedModulesPlugin');
+const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin');
+
+/**
+ * Webpack Constants
+ */
+const ENV = process.env.ENV = process.env.NODE_ENV = 'development';
+const HOST = process.env.HOST || 'localhost';
+const PORT = process.env.PORT || 3000;
+const HMR = helpers.hasProcessFlag('hot');
+const METADATA = webpackMerge(commonConfig({env: ENV}).metadata, {
+ host: HOST,
+ port: PORT,
+ ENV: ENV,
+ HMR: HMR
+});
+
+/**
+ * Webpack configuration
+ *
+ * See: http://webpack.github.io/docs/configuration.html#cli
+ */
+module.exports = function (options) {
+ return webpackMerge(commonConfig({env: ENV}), {
+
+ /**
+ * Developer tool to enhance debugging
+ *
+ * See: http://webpack.github.io/docs/configuration.html#devtool
+ * See: https://github.com/webpack/docs/wiki/build-performance#sourcemaps
+ */
+ devtool: 'cheap-module-source-map',
+
+ /**
+ * Options affecting the output of the compilation.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#output
+ */
+ output: {
+
+ /**
+ * The output directory as absolute path (required).
+ *
+ * See: http://webpack.github.io/docs/configuration.html#output-path
+ */
+ path: helpers.root('dist'),
+
+ /**
+ * Specifies the name of each output file on disk.
+ * IMPORTANT: You must not specify an absolute path here!
+ *
+ * See: http://webpack.github.io/docs/configuration.html#output-filename
+ */
+ filename: '[name].bundle.js',
+
+ /**
+ * The filename of the SourceMaps for the JavaScript files.
+ * They are inside the output.path directory.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#output-sourcemapfilename
+ */
+ sourceMapFilename: '[name].map',
+
+ /** The filename of non-entry chunks as relative path
+ * inside the output.path directory.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#output-chunkfilename
+ */
+ chunkFilename: '[id].chunk.js',
+
+ library: 'ac_[name]',
+ libraryTarget: 'var',
+ },
+
+ plugins: [
+
+ /**
+ * Plugin: DefinePlugin
+ * Description: Define free variables.
+ * Useful for having development builds with debug logging or adding global constants.
+ *
+ * Environment helpers
+ *
+ * See: https://webpack.github.io/docs/list-of-plugins.html#defineplugin
+ */
+ // NOTE: when adding more properties, make sure you include them in custom-typings.d.ts
+ new DefinePlugin({
+ 'ENV': JSON.stringify(METADATA.ENV),
+ 'HMR': METADATA.HMR,
+ 'process.env': {
+ 'ENV': JSON.stringify(METADATA.ENV),
+ 'NODE_ENV': JSON.stringify(METADATA.ENV),
+ 'HMR': METADATA.HMR,
+ }
+ }),
+
+ /**
+ * Plugin: NamedModulesPlugin (experimental)
+ * Description: Uses file names as module name.
+ *
+ * See: https://github.com/webpack/webpack/commit/a04ffb928365b19feb75087c63f13cadfc08e1eb
+ */
+ new NamedModulesPlugin(),
+
+ /**
+ * Plugin LoaderOptionsPlugin (experimental)
+ *
+ * See: https://gist.github.com/sokra/27b24881210b56bbaff7
+ */
+ new LoaderOptionsPlugin({
+ debug: true,
+ options: {
+
+ /**
+ * Static analysis linter for TypeScript advanced options configuration
+ * Description: An extensible linter for the TypeScript language.
+ *
+ * See: https://github.com/wbuchwalter/tslint-loader
+ */
+ tslint: {
+ emitErrors: false,
+ failOnHint: false,
+ resourcePath: 'src'
+ },
+
+ }
+ }),
+
+ ],
+
+ /**
+ * Webpack Development Server configuration
+ * Description: The webpack-dev-server is a little node.js Express server.
+ * The server emits information about the compilation state to the client,
+ * which reacts to those events.
+ *
+ * See: https://webpack.github.io/docs/webpack-dev-server.html
+ */
+ devServer: {
+ port: METADATA.port,
+ host: METADATA.host,
+ historyApiFallback: true,
+ watchOptions: {
+ aggregateTimeout: 300,
+ poll: 1000
+ },
+ outputPath: helpers.root('dist')
+ },
+
+ /*
+ * Include polyfills or mocks for various node stuff
+ * Description: Node configuration
+ *
+ * See: https://webpack.github.io/docs/configuration.html#node
+ */
+ node: {
+ global: true,
+ crypto: 'empty',
+ process: true,
+ module: false,
+ clearImmediate: false,
+ setImmediate: false
+ }
+
+ });
+}
diff --git a/config/webpack.github-deploy.js b/config/webpack.github-deploy.js
new file mode 100644
index 0000000..5ad4519
--- /dev/null
+++ b/config/webpack.github-deploy.js
@@ -0,0 +1,79 @@
+/**
+ * @author: @AngularClass
+ */
+const helpers = require('./helpers');
+const ghDeploy = require('./github-deploy');
+const webpackMerge = require('webpack-merge'); // used to merge webpack configs
+const ghpages = require('gh-pages');
+const webpackConfig = ghDeploy.getWebpackConfigModule(); // the settings that are common to prod and dev
+
+
+/**
+ * Webpack Constants
+ */
+const GIT_REMOTE_NAME = 'origin';
+const COMMIT_MESSAGE = 'Updates';
+const GH_REPO_NAME = ghDeploy.getRepoName(GIT_REMOTE_NAME);
+
+const METADATA = webpackMerge(webpackConfig.metadata, {
+ /**
+ * Prefixing the REPO name to the baseUrl for router support.
+ * This also means all resource URIs (CSS/Images/JS) will have this prefix added by the browser
+ * unless they are absolute (start with '/'). We will handle it via `output.publicPath`
+ */
+ baseUrl: '/' + GH_REPO_NAME + '/' + ghDeploy.safeUrl(webpackConfig.metadata.baseUrl)
+});
+
+module.exports = webpackMerge(webpackConfig, {
+ /**
+ * Merged metadata from webpack.common.js for index.html
+ *
+ * See: (custom attribute)
+ */
+ metadata: METADATA,
+
+
+ output: {
+ /**
+ * The public path is set to the REPO name.
+ *
+ * `HtmlElementsPlugin` will add it to all resources url's created by it.
+ * `HtmlWebpackPlugin` will add it to all webpack bundels/chunks.
+ *
+ * In theory publicPath shouldn't be used since the browser should automatically prefix the
+ * `baseUrl` into all URLs, however this is not the case when the URL is absolute (start with /)
+ *
+ * It's important to prefix & suffix the repo name with a slash (/).
+ * Prefixing so every resource will be absolute (otherwise it will be url.com/repoName/repoName...
+ * Suffixing since chunks will not do it automatically (testes against about page)
+ */
+ publicPath: '/' + GH_REPO_NAME + '/' + ghDeploy.safeUrl(webpackConfig.output.publicPath)
+ },
+
+ plugins: [
+ function() {
+ this.plugin('done', function(stats) {
+ console.log('Starting deployment to GitHub.');
+
+ const logger = function (msg) {
+ console.log(msg);
+ };
+
+ const options = {
+ logger: logger,
+ remote: GIT_REMOTE_NAME,
+ message: COMMIT_MESSAGE
+ };
+
+ ghpages.publish(webpackConfig.output.path, options, function(err) {
+ if (err) {
+ console.log('GitHub deployment done. STATUS: ERROR.');
+ throw err;
+ } else {
+ console.log('GitHub deployment done. STATUS: SUCCESS.');
+ }
+ });
+ });
+ }
+ ]
+});
diff --git a/config/webpack.prod.js b/config/webpack.prod.js
new file mode 100644
index 0000000..64d3845
--- /dev/null
+++ b/config/webpack.prod.js
@@ -0,0 +1,260 @@
+/**
+ * @author: @AngularClass
+ */
+
+const helpers = require('./helpers');
+const webpackMerge = require('webpack-merge'); // used to merge webpack configs
+const commonConfig = require('./webpack.common.js'); // the settings that are common to prod and dev
+
+/**
+ * Webpack Plugins
+ */
+const DedupePlugin = require('webpack/lib/optimize/DedupePlugin');
+const DefinePlugin = require('webpack/lib/DefinePlugin');
+const IgnorePlugin = require('webpack/lib/IgnorePlugin');
+const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin');
+const NormalModuleReplacementPlugin = require('webpack/lib/NormalModuleReplacementPlugin');
+const ProvidePlugin = require('webpack/lib/ProvidePlugin');
+const UglifyJsPlugin = require('webpack/lib/optimize/UglifyJsPlugin');
+const WebpackMd5Hash = require('webpack-md5-hash');
+
+/**
+ * Webpack Constants
+ */
+const ENV = process.env.NODE_ENV = process.env.ENV = 'production';
+const HOST = process.env.HOST || 'localhost';
+const PORT = process.env.PORT || 8080;
+const METADATA = webpackMerge(commonConfig({env: ENV}).metadata, {
+ host: HOST,
+ port: PORT,
+ ENV: ENV,
+ HMR: false
+});
+
+module.exports = function (env) {
+ return webpackMerge(commonConfig({env: ENV}), {
+
+ /**
+ * Developer tool to enhance debugging
+ *
+ * See: http://webpack.github.io/docs/configuration.html#devtool
+ * See: https://github.com/webpack/docs/wiki/build-performance#sourcemaps
+ */
+ devtool: 'source-map',
+
+ /**
+ * Options affecting the output of the compilation.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#output
+ */
+ output: {
+
+ /**
+ * The output directory as absolute path (required).
+ *
+ * See: http://webpack.github.io/docs/configuration.html#output-path
+ */
+ path: helpers.root('dist'),
+
+ /**
+ * Specifies the name of each output file on disk.
+ * IMPORTANT: You must not specify an absolute path here!
+ *
+ * See: http://webpack.github.io/docs/configuration.html#output-filename
+ */
+ filename: '[name].[chunkhash].bundle.js',
+
+ /**
+ * The filename of the SourceMaps for the JavaScript files.
+ * They are inside the output.path directory.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#output-sourcemapfilename
+ */
+ sourceMapFilename: '[name].[chunkhash].bundle.map',
+
+ /**
+ * The filename of non-entry chunks as relative path
+ * inside the output.path directory.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#output-chunkfilename
+ */
+ chunkFilename: '[id].[chunkhash].chunk.js'
+
+ },
+
+ /**
+ * Add additional plugins to the compiler.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#plugins
+ */
+ plugins: [
+
+ /**
+ * Plugin: WebpackMd5Hash
+ * Description: Plugin to replace a standard webpack chunkhash with md5.
+ *
+ * See: https://www.npmjs.com/package/webpack-md5-hash
+ */
+ new WebpackMd5Hash(),
+
+ /**
+ * Plugin: DedupePlugin
+ * Description: Prevents the inclusion of duplicate code into your bundle
+ * and instead applies a copy of the function at runtime.
+ *
+ * See: https://webpack.github.io/docs/list-of-plugins.html#defineplugin
+ * See: https://github.com/webpack/docs/wiki/optimization#deduplication
+ */
+ // new DedupePlugin(), // see: https://github.com/angular/angular-cli/issues/1587
+
+ /**
+ * Plugin: DefinePlugin
+ * Description: Define free variables.
+ * Useful for having development builds with debug logging or adding global constants.
+ *
+ * Environment helpers
+ *
+ * See: https://webpack.github.io/docs/list-of-plugins.html#defineplugin
+ */
+ // NOTE: when adding more properties make sure you include them in custom-typings.d.ts
+ new DefinePlugin({
+ 'ENV': JSON.stringify(METADATA.ENV),
+ 'HMR': METADATA.HMR,
+ 'process.env': {
+ 'ENV': JSON.stringify(METADATA.ENV),
+ 'NODE_ENV': JSON.stringify(METADATA.ENV),
+ 'HMR': METADATA.HMR,
+ }
+ }),
+
+ /**
+ * Plugin: UglifyJsPlugin
+ * Description: Minimize all JavaScript output of chunks.
+ * Loaders are switched into minimizing mode.
+ *
+ * See: https://webpack.github.io/docs/list-of-plugins.html#uglifyjsplugin
+ */
+ // NOTE: To debug prod builds uncomment //debug lines and comment //prod lines
+ new UglifyJsPlugin({
+ // beautify: true, //debug
+ // mangle: false, //debug
+ // dead_code: false, //debug
+ // unused: false, //debug
+ // deadCode: false, //debug
+ // compress: {
+ // screw_ie8: true,
+ // keep_fnames: true,
+ // drop_debugger: false,
+ // dead_code: false,
+ // unused: false
+ // }, // debug
+ // comments: true, //debug
+
+
+ beautify: false, //prod
+ mangle: {
+ screw_ie8: true,
+ keep_fnames: true
+ }, //prod
+ compress: {
+ screw_ie8: true
+ }, //prod
+ comments: false //prod
+ }),
+
+ /**
+ * Plugin: NormalModuleReplacementPlugin
+ * Description: Replace resources that matches resourceRegExp with newResource
+ *
+ * See: http://webpack.github.io/docs/list-of-plugins.html#normalmodulereplacementplugin
+ */
+
+ new NormalModuleReplacementPlugin(
+ /angular2-hmr/,
+ helpers.root('config/modules/angular2-hmr-prod.js')
+ ),
+
+ /**
+ * Plugin: IgnorePlugin
+ * Description: Don’t generate modules for requests matching the provided RegExp.
+ *
+ * See: http://webpack.github.io/docs/list-of-plugins.html#ignoreplugin
+ */
+
+ // new IgnorePlugin(/angular2-hmr/),
+
+ /**
+ * Plugin: CompressionPlugin
+ * Description: Prepares compressed versions of assets to serve
+ * them with Content-Encoding
+ *
+ * See: https://github.com/webpack/compression-webpack-plugin
+ */
+ // install compression-webpack-plugin
+ // new CompressionPlugin({
+ // regExp: /\.css$|\.html$|\.js$|\.map$/,
+ // threshold: 2 * 1024
+ // })
+
+ /**
+ * Plugin LoaderOptionsPlugin (experimental)
+ *
+ * See: https://gist.github.com/sokra/27b24881210b56bbaff7
+ */
+ new LoaderOptionsPlugin({
+ debug: false,
+ options: {
+
+ /**
+ * Static analysis linter for TypeScript advanced options configuration
+ * Description: An extensible linter for the TypeScript language.
+ *
+ * See: https://github.com/wbuchwalter/tslint-loader
+ */
+ tslint: {
+ emitErrors: true,
+ failOnHint: true,
+ resourcePath: 'src'
+ },
+
+
+ /**
+ * Html loader advanced options
+ *
+ * See: https://github.com/webpack/html-loader#advanced-options
+ */
+ // TODO: Need to workaround Angular 2's html syntax => #id [bind] (event) *ngFor
+ htmlLoader: {
+ minimize: true,
+ removeAttributeQuotes: false,
+ caseSensitive: true,
+ customAttrSurround: [
+ [/#/, /(?:)/],
+ [/\*/, /(?:)/],
+ [/\[?\(?/, /(?:)/]
+ ],
+ customAttrAssign: [/\)?\]?=/]
+ },
+
+ }
+ }),
+
+ ],
+
+ /*
+ * Include polyfills or mocks for various node stuff
+ * Description: Node configuration
+ *
+ * See: https://webpack.github.io/docs/configuration.html#node
+ */
+ node: {
+ global: true,
+ crypto: 'empty',
+ process: false,
+ module: false,
+ clearImmediate: false,
+ setImmediate: false
+ }
+
+ });
+}
diff --git a/config/webpack.test.js b/config/webpack.test.js
new file mode 100644
index 0000000..416df68
--- /dev/null
+++ b/config/webpack.test.js
@@ -0,0 +1,256 @@
+/**
+ * @author: @AngularClass
+ */
+
+const helpers = require('./helpers');
+const path = require('path');
+
+/**
+ * Webpack Plugins
+ */
+const ProvidePlugin = require('webpack/lib/ProvidePlugin');
+const DefinePlugin = require('webpack/lib/DefinePlugin');
+const LoaderOptionsPlugin = require('webpack/lib/LoaderOptionsPlugin');
+const ContextReplacementPlugin = require('webpack/lib/ContextReplacementPlugin');
+
+/**
+ * Webpack Constants
+ */
+const ENV = process.env.ENV = process.env.NODE_ENV = 'test';
+
+/**
+ * Webpack configuration
+ *
+ * See: http://webpack.github.io/docs/configuration.html#cli
+ */
+module.exports = function (options) {
+ return {
+
+ /**
+ * Source map for Karma from the help of karma-sourcemap-loader & karma-webpack
+ *
+ * Do not change, leave as is or it wont work.
+ * See: https://github.com/webpack/karma-webpack#source-maps
+ */
+ devtool: 'inline-source-map',
+
+ /**
+ * Options affecting the resolving of modules.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#resolve
+ */
+ resolve: {
+
+ /**
+ * An array of extensions that should be used to resolve modules.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#resolve-extensions
+ */
+ extensions: ['.ts', '.js'],
+
+ /**
+ * Make sure root is src
+ */
+ modules: [ path.resolve(__dirname, 'src'), 'node_modules' ]
+
+ },
+
+ /**
+ * Options affecting the normal modules.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#module
+ */
+ module: {
+
+ rules: [
+
+ /**
+ * Tslint loader support for *.ts files
+ *
+ * See: https://github.com/wbuchwalter/tslint-loader
+ */
+ {
+ enforce: 'pre',
+ test: /\.ts$/,
+ loader: 'tslint-loader',
+ exclude: [helpers.root('node_modules')]
+ },
+
+ /**
+ * Source map loader support for *.js files
+ * Extracts SourceMaps for source files that as added as sourceMappingURL comment.
+ *
+ * See: https://github.com/webpack/source-map-loader
+ */
+ {
+ enforce: 'pre',
+ test: /\.js$/,
+ loader: 'source-map-loader',
+ exclude: [
+ // these packages have problems with their sourcemaps
+ helpers.root('node_modules/rxjs'),
+ helpers.root('node_modules/@angular')
+ ]
+ },
+
+ /**
+ * Typescript loader support for .ts and Angular 2 async routes via .async.ts
+ *
+ * See: https://github.com/s-panferov/awesome-typescript-loader
+ */
+ {
+ test: /\.ts$/,
+ loader: 'awesome-typescript-loader',
+ query: {
+ // use inline sourcemaps for "karma-remap-coverage" reporter
+ sourceMap: false,
+ inlineSourceMap: true,
+ compilerOptions: {
+
+ // Remove TypeScript helpers to be injected
+ // below by DefinePlugin
+ removeComments: true
+
+ }
+ },
+ exclude: [/\.e2e\.ts$/]
+ },
+
+ /**
+ * Json loader support for *.json files.
+ *
+ * See: https://github.com/webpack/json-loader
+ */
+ {
+ test: /\.json$/,
+ loader: 'json-loader',
+ exclude: [helpers.root('src/index.html')]
+ },
+
+ /**
+ * Raw loader support for *.css files
+ * Returns file content as string
+ *
+ * See: https://github.com/webpack/raw-loader
+ */
+ {
+ test: /\.css$/,
+ loaders: ['to-string-loader', 'css-loader'],
+ exclude: [helpers.root('src/index.html')]
+ },
+
+ /**
+ * Raw loader support for *.html
+ * Returns file content as string
+ *
+ * See: https://github.com/webpack/raw-loader
+ */
+ {
+ test: /\.html$/,
+ loader: 'raw-loader',
+ exclude: [helpers.root('src/index.html')]
+ },
+
+ /**
+ * Instruments JS files with Istanbul for subsequent code coverage reporting.
+ * Instrument only testing sources.
+ *
+ * See: https://github.com/deepsweet/istanbul-instrumenter-loader
+ */
+ {
+ enforce: 'post',
+ test: /\.(js|ts)$/,
+ loader: 'istanbul-instrumenter-loader',
+ include: helpers.root('src'),
+ exclude: [
+ /\.(e2e|spec)\.ts$/,
+ /node_modules/
+ ]
+ }
+
+ ]
+ },
+
+ /**
+ * Add additional plugins to the compiler.
+ *
+ * See: http://webpack.github.io/docs/configuration.html#plugins
+ */
+ plugins: [
+
+ /**
+ * Plugin: DefinePlugin
+ * Description: Define free variables.
+ * Useful for having development builds with debug logging or adding global constants.
+ *
+ * Environment helpers
+ *
+ * See: https://webpack.github.io/docs/list-of-plugins.html#defineplugin
+ */
+ // NOTE: when adding more properties make sure you include them in custom-typings.d.ts
+ new DefinePlugin({
+ 'ENV': JSON.stringify(ENV),
+ 'HMR': false,
+ 'process.env': {
+ 'ENV': JSON.stringify(ENV),
+ 'NODE_ENV': JSON.stringify(ENV),
+ 'HMR': false,
+ }
+ }),
+
+ /**
+ * Plugin: ContextReplacementPlugin
+ * Description: Provides context to Angular's use of System.import
+ *
+ * See: https://webpack.github.io/docs/list-of-plugins.html#contextreplacementplugin
+ * See: https://github.com/angular/angular/issues/11580
+ */
+ new ContextReplacementPlugin(
+ // The (\\|\/) piece accounts for path separators in *nix and Windows
+ /angular(\\|\/)core(\\|\/)(esm(\\|\/)src|src)(\\|\/)linker/,
+ helpers.root('src') // location of your src
+ ),
+
+ /**
+ * Plugin LoaderOptionsPlugin (experimental)
+ *
+ * See: https://gist.github.com/sokra/27b24881210b56bbaff7
+ */
+ new LoaderOptionsPlugin({
+ debug: true,
+ options: {
+
+ /**
+ * Static analysis linter for TypeScript advanced options configuration
+ * Description: An extensible linter for the TypeScript language.
+ *
+ * See: https://github.com/wbuchwalter/tslint-loader
+ */
+ tslint: {
+ emitErrors: false,
+ failOnHint: false,
+ resourcePath: 'src'
+ },
+
+ }
+ }),
+
+ ],
+
+ /**
+ * Include polyfills or mocks for various node stuff
+ * Description: Node configuration
+ *
+ * See: https://webpack.github.io/docs/configuration.html#node
+ */
+ node: {
+ global: true,
+ process: false,
+ crypto: 'empty',
+ module: false,
+ clearImmediate: false,
+ setImmediate: false
+ }
+
+ };
+}
diff --git a/karma.conf.js b/karma.conf.js
index a772e73..27c49ad 100644
--- a/karma.conf.js
+++ b/karma.conf.js
@@ -1,67 +1,6 @@
-// @AngularClass
-var path = require('path');
+/**
+ * @author: @AngularClass
+ */
-module.exports = function(config) {
- var testWebpackConfig = require('./webpack.test.config.js');
- config.set({
-
- // base path that will be used to resolve all patterns (e.g. files, exclude)
- basePath: '',
-
- // frameworks to use
- // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
- frameworks: ['jasmine'],
-
- // list of files to exclude
- exclude: [ ],
-
- // list of files / patterns to load in the browser
- // we are building the test environment in ./spec-bundle.js
- files: [ { pattern: 'spec-bundle.js', watched: false } ],
-
- // preprocess matching files before serving them to the browser
- // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
- preprocessors: { 'spec-bundle.js': ['webpack', 'sourcemap'] },
-
- // Webpack Config at ./webpack.test.config.js
- webpack: testWebpackConfig,
-
- coverageReporter: {
- dir : 'coverage/',
- reporters: [
- { type: 'text-summary' },
- { type: 'html' }
- ],
- },
-
- // Webpack please don't spam the console when running in karma!
- webpackServer: { noInfo: true },
-
- // test results reporter to use
- // possible values: 'dots', 'progress'
- // available reporters: https://npmjs.org/browse/keyword/karma-reporter
- reporters: [ 'progress', 'coverage' ],
-
- // web server port
- port: 9876,
-
- // enable / disable colors in the output (reporters and logs)
- colors: true,
-
- // level of logging
- // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
- logLevel: config.LOG_INFO,
-
- // enable / disable watching file and executing tests whenever any file changes
- autoWatch: false,
-
- // start these browsers
- // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
- browsers: [ 'PhantomJS' ],
-
- // Continuous Integration mode
- // if true, Karma captures browsers, runs the tests and exits
- singleRun: true
- });
-
-};
+// Look in ./config for karma.conf.js
+module.exports = require('./config/karma.conf.js');
diff --git a/package.json b/package.json
index 1a53e83..220fced 100644
--- a/package.json
+++ b/package.json
@@ -1,85 +1,134 @@
{
- "name": "webpack-test",
- "version": "0.0.0",
- "description": "",
- "author": " ",
- "homepage": "",
- "license": "Apache-2.0",
+ "name": "angular2-webpack-starter",
+ "version": "5.1.1",
+ "description": "An Angular 2 Webpack Starter kit featuring Angular 2 (Router, Http, Forms, Services, Tests, E2E, Coverage), Karma, Protractor, Jasmine, Istanbul, TypeScript, and Webpack by AngularClass",
+ "keywords": [
+ "angular2",
+ "webpack",
+ "typescript"
+ ],
+ "author": "Patrick Stapleton ",
+ "homepage": "https://github.com/angularclass/angular2-webpack-starter",
+ "license": "MIT",
"scripts": {
- "clean": "./node_modules/.bin/rimraf node_modules doc typings coverage dist && npm cache clean",
- "clean:dist": "./node_modules/.bin/rimraf dist",
- "preclean:install": "npm run clean",
- "clean:install": "npm install",
- "preclean:start": "npm run clean",
- "clean:start": "npm start",
- "watch": "npm run watch:dev",
- "watch:dev": "./node_modules/.bin/webpack --watch --progress --profile --colors --display-error-details --display-cached",
- "watch:prod": "./node_modules/.bin/webpack --watch --config webpack.prod.config.js --progress --profile --colors --display-error-details --display-cached",
+ "build:dev": "webpack --config config/webpack.dev.js --progress --profile",
+ "build:docker": "npm run build:prod && docker build -t angular2-webpack-start:latest .",
+ "build:prod": "webpack --config config/webpack.prod.js --progress --profile --bail",
"build": "npm run build:prod",
+ "ci": "npm run lint && npm test && npm run e2e",
+ "clean:dist": "npm run rimraf -- dist",
+ "clean:install": "npm set progress=false && npm install",
+ "clean:start": "npm start",
+ "clean": "npm cache clean && npm run rimraf -- node_modules doc coverage dist",
+ "docker": "docker",
+ "docs": "npm run typedoc -- --options typedoc.json --exclude '**/*.spec.ts' ./src/",
+ "e2e:live": "npm run e2e -- --elementExplorer",
+ "e2e": "npm run protractor",
+ "github-deploy:dev": "webpack --config config/webpack.github-deploy.js --progress --profile --github-dev",
+ "github-deploy:prod": "webpack --config config/webpack.github-deploy.js --progress --profile --github-prod",
+ "github-deploy": "npm run github-deploy:dev",
+ "lint": "npm run tslint \"src/**/*.ts\"",
+ "postversion": "git push && git push --tags",
"prebuild:dev": "npm run clean:dist",
- "build:dev": "./node_modules/.bin/webpack --progress --profile --colors --display-error-details --display-cached",
"prebuild:prod": "npm run clean:dist",
- "build:prod": "./node_modules/.bin/webpack --config webpack.prod.config.js --progress --profile --colors --display-error-details --display-cached",
+ "preclean:install": "npm run clean",
+ "preclean:start": "npm run clean",
+ "pree2e": "npm run webdriver:update -- --standalone",
+ "preversion": "npm test",
+ "protractor": "protractor",
+ "rimraf": "rimraf",
+ "server:dev:hmr": "npm run server:dev -- --inline --hot",
+ "server:dev": "webpack-dev-server --config config/webpack.dev.js --progress --profile --watch --content-base src/",
+ "server:prod": "http-server dist --cors",
"server": "npm run server:dev",
- "server:dev": "./node_modules/.bin/webpack-dev-server --progress --profile --colors --display-error-details --display-cached",
- "server:prod": "./node_modules/.bin/http-server dist --cors",
- "webdriver:update": "./node_modules/.bin/webdriver-manager update",
- "webdriver:start": "./node_modules/.bin/webdriver-manager start",
- "lint": "./node_modules/.bin/tsconfig-lint",
- "e2e": "./node_modules/.bin/protractor",
- "test": "./node_modules/.bin/karma start",
- "ci": "npm run e2e && npm run test",
- "docs": "./node_modules/.bin/typedoc --options typedoc.json src/**/*.ts",
+ "start:hmr": "npm run server:dev:hmr",
"start": "npm run server:dev",
- "postinstall": "./node_modules/.bin/typings install"
+ "test": "karma start",
+ "tslint": "tslint",
+ "typedoc": "typedoc",
+ "version": "npm run build",
+ "watch:dev:hmr": "npm run watch:dev -- --hot",
+ "watch:dev": "npm run build:dev -- --watch",
+ "watch:prod": "npm run build:prod -- --watch",
+ "watch:test": "npm run test -- --auto-watch --no-single-run",
+ "watch": "npm run watch:dev",
+ "webdriver-manager": "webdriver-manager",
+ "webdriver:start": "npm run webdriver-manager start",
+ "webdriver:update": "npm run webdriver-manager update",
+ "webpack-dev-server": "webpack-dev-server",
+ "webpack": "webpack"
},
"dependencies": {
- "angular2": "2.0.0-beta.1",
- "es6-promise": "^3.0.2",
- "es6-shim": "^0.33.3",
- "es7-reflect-metadata": "^1.4.0",
- "github-api": "^0.10.7",
- "rxjs": "5.0.0-beta.0",
- "zone.js": "0.5.10"
+ "@angular/common": "2.1.1",
+ "@angular/compiler": "2.1.1",
+ "@angular/core": "2.1.1",
+ "@angular/forms": "^2.1.1",
+ "@angular/http": "2.1.1",
+ "@angular/platform-browser": "2.1.1",
+ "@angular/platform-browser-dynamic": "2.1.1",
+ "@angular/platform-server": "2.1.1",
+ "@angular/router": "3.1.1",
+ "@angularclass/conventions-loader": "^1.0.2",
+ "@angularclass/hmr": "~1.2.0",
+ "@angularclass/hmr-loader": "~3.0.2",
+ "assets-webpack-plugin": "^3.4.0",
+ "core-js": "^2.4.1",
+ "http-server": "^0.9.0",
+ "ie-shim": "^0.1.0",
+ "rxjs": "^5.0.0-rc.1",
+ "zone.js": "~0.6.17"
},
"devDependencies": {
- "copy-webpack-plugin": "^0.3.3",
- "css-loader": "^0.23.0",
- "exports-loader": "0.6.2",
+ "@types/hammerjs": "^2.0.33",
+ "@types/jasmine": "^2.2.34",
+ "@types/node": "^6.0.38",
+ "@types/protractor": "^1.5.20",
+ "@types/selenium-webdriver": "2.44.29",
+ "@types/source-map": "^0.1.27",
+ "@types/uglify-js": "^2.0.27",
+ "@types/webpack": "^1.12.34",
+ "angular2-template-loader": "^0.5.0",
+ "awesome-typescript-loader": "^2.2.1",
+ "codelyzer": "~1.0.0-beta.2",
+ "copy-webpack-plugin": "^4.0.0",
+ "css-loader": "^0.25.0",
+ "exports-loader": "^0.6.3",
"expose-loader": "^0.7.1",
- "file-loader": "^0.8.4",
- "html-webpack-plugin": "^1.7.0",
- "http-server": "^0.8.5",
- "imports-loader": "^0.6.4",
- "istanbul-instrumenter-loader": "^0.1.3",
- "json-loader": "^0.5.3",
- "karma": "^0.13.15",
- "karma-chrome-launcher": "^0.2.1",
- "karma-coverage": "^0.5.3",
- "karma-jasmine": "^0.3.6",
- "karma-phantomjs-launcher": "^0.2.1",
- "karma-sourcemap-loader": "^0.3.6",
- "karma-webpack": "1.7.0",
- "phantomjs": "^1.9.18",
- "phantomjs-polyfill": "0.0.1",
- "protractor": "^3.0.0",
+ "file-loader": "^0.9.0",
+ "gh-pages": "^0.11.0",
+ "html-webpack-plugin": "^2.21.0",
+ "imports-loader": "^0.6.5",
+ "istanbul-instrumenter-loader": "^1.0.0",
+ "json-loader": "^0.5.4",
+ "karma": "^1.2.0",
+ "karma-chrome-launcher": "^2.0.0",
+ "karma-coverage": "^1.1.1",
+ "karma-jasmine": "^1.0.2",
+ "karma-mocha-reporter": "^2.0.0",
+ "karma-remap-coverage": "^0.1.1",
+ "karma-sourcemap-loader": "^0.3.7",
+ "karma-webpack": "1.8.0",
+ "parse5": "^2.2.2",
+ "protractor": "^4.0.9",
"raw-loader": "0.5.1",
- "reflect-metadata": "0.1.2",
- "remap-istanbul": "^0.5.1",
- "rimraf": "^2.4.4",
- "style-loader": "^0.13.0",
- "ts-helper": "0.0.1",
- "ts-loader": "^0.7.2",
- "tsconfig-lint": "^0.4.3",
- "tslint": "^3.2.0",
- "tslint-loader": "^2.1.0",
- "typedoc": "^0.3.12",
- "typescript": "^1.7.3",
- "typings": "^0.6.1",
- "url-loader": "^0.5.6",
- "webpack": "^1.12.9",
- "webpack-dev-server": "^1.12.1",
- "webpack-md5-hash": "0.0.4"
+ "rimraf": "^2.5.2",
+ "script-ext-html-webpack-plugin": "^1.3.2",
+ "source-map-loader": "^0.1.5",
+ "string-replace-loader": "1.0.5",
+ "style-loader": "^0.13.1",
+ "to-string-loader": "^1.1.4",
+ "ts-helpers": "1.1.2",
+ "ts-node": "^1.3.0",
+ "tslint": "^4.0.0-dev.0",
+ "tslint-loader": "^2.1.3",
+ "typedoc": "^0.5.0",
+ "typescript": "^2.0.6",
+ "url-loader": "^0.5.7",
+ "webpack": "2.1.0-beta.25",
+ "webpack-dev-middleware": "^1.6.1",
+ "webpack-dev-server": "^2.1.0-beta.9",
+ "webpack-md5-hash": "^0.0.5",
+ "webpack-merge": "^0.15.0"
},
"repository": {
"type": "git",
@@ -89,10 +138,7 @@
"url": "https://github.com/angularclass/angular2-webpack-starter/issues"
},
"engines": {
- "node": ">= 4.2.1 <= 5",
+ "node": ">= 4.2.1",
"npm": ">= 3"
- },
- "keywords": [
- ""
- ]
-}
\ No newline at end of file
+ }
+}
diff --git a/protractor.conf.js b/protractor.conf.js
index c70f502..b3f7738 100644
--- a/protractor.conf.js
+++ b/protractor.conf.js
@@ -1,44 +1,6 @@
-// @AngularClass
+/**
+ * @author: @AngularClass
+ */
-exports.config = {
- baseUrl: 'http://localhost:3000/',
-
- specs: [
- 'test/**/*.e2e.js'
- ],
- exclude: [],
-
- framework: 'jasmine',
-
- allScriptsTimeout: 110000,
-
- jasmineNodeOpts: {
- showTiming: true,
- showColors: true,
- isVerbose: false,
- includeStackTrace: false,
- defaultTimeoutInterval: 400000
- },
- directConnect: true,
-
- capabilities: {
- 'browserName': 'chrome',
- 'chromeOptions': {
- 'args': ['show-fps-counter=true']
- }
- },
-
- onPrepare: function() {
- browser.ignoreSynchronization = true;
- },
-
-
- /**
- * Angular 2 configuration
- *
- * useAllAngular2AppRoots: tells Protractor to wait for any angular2 apps on the page instead of just the one matching
- * `rootEl`
- *
- */
- useAllAngular2AppRoots: true
-};
+// look in ./config for protractor.conf.js
+exports.config = require('./config/protractor.conf.js').config;
diff --git a/spec-bundle.js b/spec-bundle.js
deleted file mode 100644
index 88117ab..0000000
--- a/spec-bundle.js
+++ /dev/null
@@ -1,43 +0,0 @@
-// @AngularClass
-/*
- * When testing with webpack and ES6, we have to do some extra
- * things get testing to work right. Because we are gonna write test
- * in ES6 to, we have to compile those as well. That's handled in
- * karma.conf.js with the karma-webpack plugin. This is the entry
- * file for webpack test. Just like webpack will create a bundle.js
- * file for our client, when we run test, it well compile and bundle them
- * all here! Crazy huh. So we need to do some setup
-*/
-Error.stackTraceLimit = Infinity;
-require('phantomjs-polyfill');
-require('es6-promise');
-require('es6-shim');
-require('es7-reflect-metadata/dist/browser');
-
-require('zone.js/lib/browser/zone-microtask.js');
-require('zone.js/lib/browser/long-stack-trace-zone.js');
-require('zone.js/dist/jasmine-patch.js');
-
-/*
- Ok, this is kinda crazy. We can use the the context method on
- require that webpack created in order to tell webpack
- what files we actually want to require or import.
- Below, context will be an function/object with file names as keys.
- using that regex we are saying look in ./src/app and ./test then find
- any file that ends with spec.js and get its path. By passing in true
- we say do this recursively
-*/
-var testContext = require.context('./test', true, /\.spec\.ts/);
-var appContext = require.context('./src', true, /\.spec\.ts/);
-
-// get all the files, for each file, call the context function
-// that will require the file and load it up here. Context will
-// loop and require those spec files here
-appContext.keys().forEach(appContext);
-testContext.keys().forEach(testContext);
-
-// Select BrowserDomAdapter.
-// see https://github.com/AngularClass/angular2-webpack-starter/issues/124
-var domAdapter = require('angular2/src/platform/browser/browser_adapter');
-domAdapter.BrowserDomAdapter.makeCurrent();
-
diff --git a/src/app/+detail/detail.component.ts b/src/app/+detail/detail.component.ts
new file mode 100644
index 0000000..8209f7f
--- /dev/null
+++ b/src/app/+detail/detail.component.ts
@@ -0,0 +1,19 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'detail',
+ template: `
+ Hello from Detail
+
+ `
+})
+export class DetailComponent {
+ constructor() {
+
+ }
+
+ ngOnInit() {
+ console.log('hello `Detail` component');
+ }
+
+}
diff --git a/src/app/+detail/index.ts b/src/app/+detail/index.ts
new file mode 100644
index 0000000..8b92a74
--- /dev/null
+++ b/src/app/+detail/index.ts
@@ -0,0 +1,27 @@
+import { CommonModule } from '@angular/common';
+import { FormsModule } from '@angular/forms';
+import { NgModule } from '@angular/core';
+import { RouterModule } from '@angular/router';
+
+import { DetailComponent } from './detail.component';
+
+console.log('`Detail` bundle loaded asynchronously');
+// async components must be named routes for WebpackAsyncRoute
+export const routes = [
+ { path: '', component: DetailComponent, pathMatch: 'full' }
+];
+
+@NgModule({
+ declarations: [
+ // Components / Directives/ Pipes
+ DetailComponent
+ ],
+ imports: [
+ CommonModule,
+ FormsModule,
+ RouterModule.forChild(routes),
+ ]
+})
+export default class AboutModule {
+ static routes = routes;
+}
diff --git a/src/app/about/about.component.spec.ts b/src/app/about/about.component.spec.ts
new file mode 100644
index 0000000..7caf858
--- /dev/null
+++ b/src/app/about/about.component.spec.ts
@@ -0,0 +1,35 @@
+import { ActivatedRoute, Data } from '@angular/router';
+import { Component } from '@angular/core';
+import { inject, TestBed } from '@angular/core/testing';
+
+// Load the implementations that should be tested
+import { AboutComponent } from './about.component';
+
+describe('About', () => {
+ // provide our implementations or mocks to the dependency injector
+ beforeEach(() => TestBed.configureTestingModule({
+ providers: [
+ // provide a better mock
+ {
+ provide: ActivatedRoute,
+ useValue: {
+ data: {
+ subscribe: (fn: (value: Data) => void) => fn({
+ yourData: 'yolo'
+ })
+ }
+ }
+ },
+ AboutComponent
+ ]
+ }));
+
+ it('should log ngOnInit', inject([AboutComponent], (about: AboutComponent) => {
+ spyOn(console, 'log');
+ expect(console.log).not.toHaveBeenCalled();
+
+ about.ngOnInit();
+ expect(console.log).toHaveBeenCalled();
+ }));
+
+});
diff --git a/src/app/about/about.component.ts b/src/app/about/about.component.ts
new file mode 100644
index 0000000..f175245
--- /dev/null
+++ b/src/app/about/about.component.ts
@@ -0,0 +1,65 @@
+import { Component } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
+/*
+ * We're loading this component asynchronously
+ * We are using some magic with es6-promise-loader that will wrap the module with a Promise
+ * see https://github.com/gdi2290/es6-promise-loader for more info
+ */
+
+console.log('`About` component loaded asynchronously');
+
+@Component({
+ selector: 'about',
+ styles: [`
+ `],
+ template: `
+ About
+
+ For hot module reloading run
+
npm run start:hmr
+
+
+
+ patrick@AngularClass.com
+
+
+ this.localState = {{ localState | json }}
+ `
+})
+export class AboutComponent {
+ localState: any;
+ constructor(public route: ActivatedRoute) {
+
+ }
+
+ ngOnInit() {
+ this.route
+ .data
+ .subscribe((data: any) => {
+ // your resolved data from route
+ this.localState = data.yourData;
+ });
+
+ console.log('hello `About` component');
+ // static data that is bundled
+ // var mockData = require('assets/mock-data/mock-data.json');
+ // console.log('mockData', mockData);
+ // if you're working with mock data you can also use http.get('assets/mock-data/mock-data.json')
+ this.asyncDataWithWebpack();
+ }
+ asyncDataWithWebpack() {
+ // you can also async load mock data with 'es6-promise-loader'
+ // you would do this if you don't want the mock-data bundled
+ // remember that 'es6-promise-loader' is a promise
+ setTimeout(() => {
+
+ System.import('../../assets/mock-data/mock-data.json')
+ .then(json => {
+ console.log('async mockData', json);
+ this.localState = json;
+ });
+
+ });
+ }
+
+}
diff --git a/src/app/about/index.ts b/src/app/about/index.ts
new file mode 100644
index 0000000..b7cb92a
--- /dev/null
+++ b/src/app/about/index.ts
@@ -0,0 +1 @@
+export * from './about.component';
diff --git a/src/app/app.component.css b/src/app/app.component.css
new file mode 100644
index 0000000..2fc581c
--- /dev/null
+++ b/src/app/app.component.css
@@ -0,0 +1,8 @@
+html, body{
+ height: 100%;
+ font-family: Arial, Helvetica, sans-serif
+}
+
+span.active {
+ background-color: gray;
+}
diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts
new file mode 100644
index 0000000..2809520
--- /dev/null
+++ b/src/app/app.component.spec.ts
@@ -0,0 +1,22 @@
+import {
+ inject,
+ TestBed
+} from '@angular/core/testing';
+
+// Load the implementations that should be tested
+import { AppComponent } from './app.component';
+import { AppState } from './app.service';
+
+describe('App', () => {
+ // provide our implementations or mocks to the dependency injector
+ beforeEach(() => TestBed.configureTestingModule({
+ providers: [
+ AppState,
+ AppComponent
+ ]}));
+
+ it('should have a url', inject([ AppComponent ], (app: AppComponent) => {
+ expect(app.url).toEqual('https://twitter.com/AngularClass');
+ }));
+
+});
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
new file mode 100644
index 0000000..06c53d6
--- /dev/null
+++ b/src/app/app.component.ts
@@ -0,0 +1,83 @@
+/*
+ * Angular 2 decorators and services
+ */
+import { Component, ViewEncapsulation } from '@angular/core';
+
+import { AppState } from './app.service';
+
+/*
+ * App Component
+ * Top Level Component
+ */
+@Component({
+ selector: 'app',
+ encapsulation: ViewEncapsulation.None,
+ styleUrls: [
+ './app.component.css'
+ ],
+ template: `
+
+
+
+ Index
+
+
+ |
+
+
+ Home
+
+
+ |
+
+
+ Detail
+
+
+ |
+
+
+ About
+
+
+
+
+
+
+
+
+ this.appState.state = {{ appState.state | json }}
+
+
+ `
+})
+export class AppComponent {
+ angularclassLogo = 'assets/img/angularclass-avatar.png';
+ name = 'Angular 2 Webpack Starter';
+ url = 'https://twitter.com/AngularClass';
+
+ constructor(
+ public appState: AppState) {
+
+ }
+
+ ngOnInit() {
+ console.log('Initial App State', this.appState.state);
+ }
+
+}
+
+/*
+ * Please review the https://github.com/AngularClass/angular2-examples/ repo for
+ * more angular app examples that you may copy/paste
+ * (The examples may not be updated as quickly. Please open an issue on github for us to update it)
+ * For help or questions please contact us at @AngularClass on twitter
+ * or our chat on Slack at https://AngularClass.com/slack-join
+ */
diff --git a/src/app/app.e2e.ts b/src/app/app.e2e.ts
new file mode 100644
index 0000000..59cb217
--- /dev/null
+++ b/src/app/app.e2e.ts
@@ -0,0 +1,32 @@
+describe('App', () => {
+
+ beforeEach(() => {
+ browser.get('/');
+ });
+
+
+ it('should have a title', () => {
+ let subject = browser.getTitle();
+ let result = 'Angular2 Webpack Starter by @gdi2290 from @AngularClass';
+ expect(subject).toEqual(result);
+ });
+
+ it('should have header', () => {
+ let subject = element(by.css('h1')).isPresent();
+ let result = true;
+ expect(subject).toEqual(result);
+ });
+
+ it('should have ', () => {
+ let subject = element(by.css('app home')).isPresent();
+ let result = true;
+ expect(subject).toEqual(result);
+ });
+
+ it('should have buttons', () => {
+ let subject = element(by.css('button')).getText();
+ let result = 'Submit Value';
+ expect(subject).toEqual(result);
+ });
+
+});
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
new file mode 100644
index 0000000..093cc7f
--- /dev/null
+++ b/src/app/app.module.ts
@@ -0,0 +1,96 @@
+import { NgModule, ApplicationRef } from '@angular/core';
+import { BrowserModule } from '@angular/platform-browser';
+import { FormsModule } from '@angular/forms';
+import { HttpModule } from '@angular/http';
+import { RouterModule } from '@angular/router';
+import { removeNgStyles, createNewHosts, createInputTransfer } from '@angularclass/hmr';
+
+/*
+ * Platform and Environment providers/directives/pipes
+ */
+import { ENV_PROVIDERS } from './environment';
+import { ROUTES } from './app.routes';
+// App is our top level component
+import { AppComponent } from './app.component';
+import { APP_RESOLVER_PROVIDERS } from './app.resolver';
+import { AppState, InternalStateType } from './app.service';
+import { HomeComponent } from './home';
+import { AboutComponent } from './about';
+import { NoContentComponent } from './no-content';
+import { XLarge } from './home/x-large';
+
+// Application wide providers
+const APP_PROVIDERS = [
+ ...APP_RESOLVER_PROVIDERS,
+ AppState
+];
+
+type StoreType = {
+ state: InternalStateType,
+ restoreInputValues: () => void,
+ disposeOldHosts: () => void
+};
+
+/**
+ * `AppModule` is the main entry point into Angular2's bootstraping process
+ */
+@NgModule({
+ bootstrap: [ AppComponent ],
+ declarations: [
+ AppComponent,
+ AboutComponent,
+ HomeComponent,
+ NoContentComponent,
+ XLarge
+ ],
+ imports: [ // import Angular's modules
+ BrowserModule,
+ FormsModule,
+ HttpModule,
+ RouterModule.forRoot(ROUTES, { useHash: true })
+ ],
+ providers: [ // expose our Services and Providers into Angular's dependency injection
+ ENV_PROVIDERS,
+ APP_PROVIDERS
+ ]
+})
+export class AppModule {
+ constructor(public appRef: ApplicationRef, public appState: AppState) {}
+
+ hmrOnInit(store: StoreType) {
+ if (!store || !store.state) return;
+ console.log('HMR store', JSON.stringify(store, null, 2));
+ // set state
+ this.appState._state = store.state;
+ // set input values
+ if ('restoreInputValues' in store) {
+ let restoreInputValues = store.restoreInputValues;
+ setTimeout(restoreInputValues);
+ }
+
+ this.appRef.tick();
+ delete store.state;
+ delete store.restoreInputValues;
+ }
+
+ hmrOnDestroy(store: StoreType) {
+ const cmpLocation = this.appRef.components.map(cmp => cmp.location.nativeElement);
+ // save state
+ const state = this.appState._state;
+ store.state = state;
+ // recreate root elements
+ store.disposeOldHosts = createNewHosts(cmpLocation);
+ // save input values
+ store.restoreInputValues = createInputTransfer();
+ // remove styles
+ removeNgStyles();
+ }
+
+ hmrAfterDestroy(store: StoreType) {
+ // display new elements
+ store.disposeOldHosts();
+ delete store.disposeOldHosts;
+ }
+
+}
+
diff --git a/src/app/app.resolver.ts b/src/app/app.resolver.ts
new file mode 100644
index 0000000..09cf0fc
--- /dev/null
+++ b/src/app/app.resolver.ts
@@ -0,0 +1,19 @@
+import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
+import { Injectable } from '@angular/core';
+import { Observable } from 'rxjs/Observable';
+import 'rxjs/add/observable/of';
+
+@Injectable()
+export class DataResolver implements Resolve {
+ constructor() {
+
+ }
+ resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
+ return Observable.of({ res: 'I am data'});
+ }
+}
+
+// an array of services to resolve routes with data
+export const APP_RESOLVER_PROVIDERS = [
+ DataResolver
+];
diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts
new file mode 100644
index 0000000..5b81288
--- /dev/null
+++ b/src/app/app.routes.ts
@@ -0,0 +1,20 @@
+import { Routes, RouterModule } from '@angular/router';
+import { HomeComponent } from './home';
+import { AboutComponent } from './about';
+import { NoContentComponent } from './no-content';
+
+import { DataResolver } from './app.resolver';
+
+
+export const ROUTES: Routes = [
+ { path: '', component: HomeComponent },
+ { path: 'home', component: HomeComponent },
+ { path: 'about', component: AboutComponent },
+ {
+ path: 'detail', loadChildren: () => System.import('./+detail').then((comp: any) => {
+ return comp.default;
+ })
+ ,
+ },
+ { path: '**', component: NoContentComponent },
+];
diff --git a/src/app/app.service.ts b/src/app/app.service.ts
new file mode 100644
index 0000000..854db96
--- /dev/null
+++ b/src/app/app.service.ts
@@ -0,0 +1,41 @@
+import { Injectable } from '@angular/core';
+
+export type InternalStateType = {
+ [key: string]: any
+};
+
+@Injectable()
+export class AppState {
+ _state: InternalStateType = { };
+
+ constructor() {
+
+ }
+
+ // already return a clone of the current state
+ get state() {
+ return this._state = this._clone(this._state);
+ }
+ // never allow mutation
+ set state(value) {
+ throw new Error('do not mutate the `.state` directly');
+ }
+
+
+ get(prop?: any) {
+ // use our state getter for the clone
+ const state = this.state;
+ return state.hasOwnProperty(prop) ? state[prop] : state;
+ }
+
+ set(prop: string, value: any) {
+ // internally mutate our state
+ return this._state[prop] = value;
+ }
+
+
+ private _clone(object: InternalStateType) {
+ // simple object clone
+ return JSON.parse(JSON.stringify( object ));
+ }
+}
diff --git a/src/app/app.spec.ts b/src/app/app.spec.ts
deleted file mode 100644
index c20da77..0000000
--- a/src/app/app.spec.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {
-it,
-inject,
-injectAsync,
-beforeEachProviders,
-TestComponentBuilder
-} from 'angular2/testing';
-
-// Load the implementations that should be tested
-import {App} from './app';
-
-describe('App', () => {
- // provide our implementations or mocks to the dependency injector
- beforeEachProviders(() => [
- App
- ]);
-
- it('should have a name', inject([App], (app) => {
- expect(app.name).toEqual('webpack-test');
- }));
-
-});
diff --git a/src/app/app.ts b/src/app/app.ts
deleted file mode 100644
index 6a3f7dd..0000000
--- a/src/app/app.ts
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Angular 2 decorators and services
- */
-import {Component} from 'angular2/core';
-import {RouteConfig, Router, ROUTER_DIRECTIVES} from 'angular2/router';
-import {FORM_PROVIDERS} from 'angular2/common';
-
-import {RouterActive} from './directives/router-active';
-import {Home} from './home/home';
-
-/*
- * App Component
- * Top Level Component
- */
-@Component({
- selector: 'app',
- providers: [...FORM_PROVIDERS],
- directives: [...ROUTER_DIRECTIVES, RouterActive],
- pipes: [],
- styles: [`
- nav ul {
- display: inline;
- list-style-type: none;
- margin: 0;
- padding: 0;
- width: 60px;
- }
- nav li {
- display: inline;
- }
- nav li.active {
- background-color: lightgray;
- }
- `],
- template: `
-
-
- Hello {{ name }}
-
-
-
-
-
- Random
-
-
-
- `
-})
-@RouteConfig([
- { path: '/', component: Home, name: 'Index' },
- { path: '/home', component: Home, name: 'Home' },
- { path: '/**', redirectTo: ['Index'] }
-])
-export class App {
- name = 'webpack-test';
- constructor() {
-
- }
-}
-
-/*
- * Please review the https://github.com/AngularClass/angular2-examples/ repo for
- * more angular app examples that you may copy/paste
- * (The examples may not be updated as quickly. Please open an issue on github for us to update it)
- * For help or questions please contact us at @AngularClass on twitter
- * or our chat on Slack at https://AngularClass.com/slack-join
- * or via chat on Gitter at https://gitter.im/AngularClass/angular2-webpack-starter
- */
diff --git a/src/app/directives/router-active.ts b/src/app/directives/router-active.ts
deleted file mode 100644
index d8e52ae..0000000
--- a/src/app/directives/router-active.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import {Router} from 'angular2/router';
-import {isPresent} from 'angular2/src/facade/lang';
-import {Directive, Query, QueryList, Attribute, ElementRef, Renderer} from 'angular2/core';
-import {Instruction, RouterLink} from 'angular2/router';
-
-/**
- * RouterActive dynamically finds the first element with routerLink and toggles the active class
- *
- * ## Use
- *
- * ```
- * Home
- * Home
- * ```
- */
-@Directive({
- selector: '[router-active]',
- inputs: ['routerActive']
-})
-export class RouterActive {
- routerActive: string = null;
- routerActiveAttr: string = 'active';
-
- constructor(
- router: Router,
- element: ElementRef,
- renderer: Renderer,
- @Query(RouterLink) routerLink: QueryList,
- @Attribute('router-active') routerActiveAttr: string) {
-
- router.subscribe(() => {
- let active = (routerLink).first.isRouteActive;
- renderer.setElementClass(element.nativeElement, this._attrOrProp(), active);
- });
- }
- private _attrOrProp() {
- return isPresent(this.routerActive) ? this.routerActive : this.routerActiveAttr;
- }
-}
diff --git a/src/app/environment.ts b/src/app/environment.ts
new file mode 100644
index 0000000..8d5288f
--- /dev/null
+++ b/src/app/environment.ts
@@ -0,0 +1,50 @@
+
+// Angular 2
+// rc2 workaround
+import { enableDebugTools, disableDebugTools } from '@angular/platform-browser';
+import { enableProdMode, ApplicationRef } from '@angular/core';
+// Environment Providers
+let PROVIDERS: any[] = [
+ // common env directives
+];
+
+// Angular debug tools in the dev console
+// https://github.com/angular/angular/blob/86405345b781a9dc2438c0fbe3e9409245647019/TOOLS_JS.md
+let _decorateModuleRef = function identity(value: T): T { return value; };
+
+if ('production' === ENV) {
+ // Production
+ disableDebugTools();
+ enableProdMode();
+
+ PROVIDERS = [
+ ...PROVIDERS,
+ // custom providers in production
+ ];
+
+} else {
+
+ _decorateModuleRef = (modRef: any) => {
+ const appRef = modRef.injector.get(ApplicationRef);
+ const cmpRef = appRef.components[0];
+
+ let _ng = (window).ng;
+ enableDebugTools(cmpRef);
+ (window).ng.probe = _ng.probe;
+ (window).ng.coreTokens = _ng.coreTokens;
+ return modRef;
+ };
+
+ // Development
+ PROVIDERS = [
+ ...PROVIDERS,
+ // custom providers in development
+ ];
+
+}
+
+export const decorateModuleRef = _decorateModuleRef;
+
+export const ENV_PROVIDERS = [
+ ...PROVIDERS
+];
diff --git a/src/app/home/directives/x-large.spec.ts b/src/app/home/directives/x-large.spec.ts
deleted file mode 100644
index 90a1b6b..0000000
--- a/src/app/home/directives/x-large.spec.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import {
-it,
-inject,
-injectAsync,
-describe,
-beforeEachProviders,
-TestComponentBuilder
-} from 'angular2/testing';
-
-import {Component, provide} from 'angular2/core';
-import {BaseRequestOptions, Http} from 'angular2/http';
-import {MockBackend} from 'angular2/http/testing';
-
-// Load the implementations that should be tested
-import {XLarge} from './x-large';
-
-describe('x-large directive', () => {
- // Create a test component to test directives
- @Component({
- template: '',
- directives: [XLarge]
- })
- class TestComponent { }
-
- it('should sent font-size to x-large', injectAsync([TestComponentBuilder], (tcb) => {
- return tcb.overrideTemplate(TestComponent, 'Content
')
- .createAsync(TestComponent).then((fixture: any) => {
- fixture.detectChanges();
- let compiled = fixture.debugElement.nativeElement.children[0];
- expect(compiled.style.fontSize).toBe('x-large');
- });
- }));
-
-});
diff --git a/src/app/home/home.component.css b/src/app/home/home.component.css
new file mode 100644
index 0000000..4511e22
--- /dev/null
+++ b/src/app/home/home.component.css
@@ -0,0 +1 @@
+/*styles for home content only*/
\ No newline at end of file
diff --git a/src/app/home/home.component.html b/src/app/home/home.component.html
new file mode 100644
index 0000000..dcc5f59
--- /dev/null
+++ b/src/app/home/home.component.html
@@ -0,0 +1,41 @@
+
+
Your Content Here
+
+
+ For material design components use the
material2 branch
+
+
+
+
+
+ For hot module reloading run
+
npm run start:hmr
+
+
+
+
+
+
Local State
+
+
+
+
+
this.localState = {{ localState | json }}
+
+
+
+
diff --git a/src/app/home/home.component.spec.ts b/src/app/home/home.component.spec.ts
new file mode 100644
index 0000000..75d3eb8
--- /dev/null
+++ b/src/app/home/home.component.spec.ts
@@ -0,0 +1,53 @@
+import {
+ inject,
+ TestBed
+} from '@angular/core/testing';
+import { Component } from '@angular/core';
+import {
+ BaseRequestOptions,
+ ConnectionBackend,
+ Http
+} from '@angular/http';
+import { MockBackend } from '@angular/http/testing';
+
+// Load the implementations that should be tested
+import { AppState } from '../app.service';
+import { HomeComponent } from './home.component';
+import { Title } from './title';
+
+describe('Home', () => {
+ // provide our implementations or mocks to the dependency injector
+ beforeEach(() => TestBed.configureTestingModule({
+ providers: [
+ BaseRequestOptions,
+ MockBackend,
+ {
+ provide: Http,
+ useFactory: function(backend: ConnectionBackend, defaultOptions: BaseRequestOptions) {
+ return new Http(backend, defaultOptions);
+ },
+ deps: [MockBackend, BaseRequestOptions]
+ },
+ AppState,
+ Title,
+ HomeComponent
+ ]
+ }));
+
+ it('should have default data', inject([ HomeComponent ], (home: HomeComponent) => {
+ expect(home.localState).toEqual({ value: '' });
+ }));
+
+ it('should have a title', inject([ HomeComponent ], (home: HomeComponent) => {
+ expect(!!home.title).toEqual(true);
+ }));
+
+ it('should log ngOnInit', inject([ HomeComponent ], (home: HomeComponent) => {
+ spyOn(console, 'log');
+ expect(console.log).not.toHaveBeenCalled();
+
+ home.ngOnInit();
+ expect(console.log).toHaveBeenCalled();
+ }));
+
+});
diff --git a/src/app/home/home.component.ts b/src/app/home/home.component.ts
new file mode 100644
index 0000000..47e31a6
--- /dev/null
+++ b/src/app/home/home.component.ts
@@ -0,0 +1,39 @@
+import { Component } from '@angular/core';
+
+import { AppState } from '../app.service';
+import { Title } from './title';
+import { XLarge } from './x-large';
+
+@Component({
+ // The selector is what angular internally uses
+ // for `document.querySelectorAll(selector)` in our index.html
+ // where, in this case, selector is the string 'home'
+ selector: 'home', //
+ // We need to tell Angular's Dependency Injection which providers are in our app.
+ providers: [
+ Title
+ ],
+ // Our list of styles in our component. We may add more to compose many styles together
+ styleUrls: [ './home.component.css' ],
+ // Every Angular template is first compiled by the browser before Angular runs it's compiler
+ templateUrl: './home.component.html'
+})
+export class HomeComponent {
+ // Set our default values
+ localState = { value: '' };
+ // TypeScript public modifiers
+ constructor(public appState: AppState, public title: Title) {
+
+ }
+
+ ngOnInit() {
+ console.log('hello `Home` component');
+ // this.title.getData().subscribe(data => this.data = data);
+ }
+
+ submitState(value: string) {
+ console.log('submitState', value);
+ this.appState.set('value', value);
+ this.localState.value = '';
+ }
+}
diff --git a/src/app/home/home.css b/src/app/home/home.css
deleted file mode 100644
index e69de29..0000000
diff --git a/src/app/home/home.e2e.ts b/src/app/home/home.e2e.ts
new file mode 100644
index 0000000..ec1f519
--- /dev/null
+++ b/src/app/home/home.e2e.ts
@@ -0,0 +1,22 @@
+describe('App', () => {
+
+ beforeEach(() => {
+ // change hash depending on router LocationStrategy
+ browser.get('/#/home');
+ });
+
+
+ it('should have a title', () => {
+ let subject = browser.getTitle();
+ let result = 'Angular2 Webpack Starter by @gdi2290 from @AngularClass';
+ expect(subject).toEqual(result);
+ });
+
+ it('should have `your content here` x-large', () => {
+ let subject = element(by.css('[x-large]')).getText();
+ let result = 'Your Content Here';
+ expect(subject).toEqual(result);
+ });
+
+
+});
diff --git a/src/app/home/home.html b/src/app/home/home.html
deleted file mode 100644
index d3ed070..0000000
--- a/src/app/home/home.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
Your Content Here
-
-
-
-
this.title = {{ title | json }}
-
diff --git a/src/app/home/home.spec.ts b/src/app/home/home.spec.ts
deleted file mode 100644
index 17e267e..0000000
--- a/src/app/home/home.spec.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import {
-it,
-inject,
-injectAsync,
-describe,
-beforeEachProviders,
-TestComponentBuilder
-} from 'angular2/testing';
-
-import {Component, provide} from 'angular2/core';
-import {BaseRequestOptions, Http} from 'angular2/http';
-import {MockBackend} from 'angular2/http/testing';
-
-// Load the implementations that should be tested
-import {Home} from './home';
-import {Title} from './providers/title';
-
-describe('Home', () => {
- // provide our implementations or mocks to the dependency injector
- beforeEachProviders(() => [
- Title,
- Home,
- BaseRequestOptions,
- MockBackend,
- provide(Http, {
- useFactory: function(backend, defaultOptions) {
- return new Http(backend, defaultOptions);
- },
- deps: [MockBackend, BaseRequestOptions]
- })
- ]);
-
- it('should have a title', inject([Home], (home) => {
- expect(home.title.value).toEqual('Angular 2');
- }));
-
- it('should have a http', inject([Home], (home) => {
- expect(!!home.http).toEqual(true);
- }));
-
- it('should log ngOnInit', inject([Home], (home) => {
- spyOn(console, 'log');
- expect(console.log).not.toHaveBeenCalled();
-
- home.ngOnInit();
- expect(console.log).toHaveBeenCalled();
- }));
-
-});
diff --git a/src/app/home/home.ts b/src/app/home/home.ts
deleted file mode 100644
index 67628bd..0000000
--- a/src/app/home/home.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import {Component} from 'angular2/core';
-import {FORM_DIRECTIVES} from 'angular2/common';
-import {Http} from 'angular2/http';
-
-import {Title} from './providers/title';
-import {XLarge} from './directives/x-large';
-
-@Component({
- // The selector is what angular internally uses
- // for `document.querySelectorAll(selector)` in our index.html
- // where, in this case, selector is the string 'app'
- selector: 'home', //
- // We need to tell Angular's Dependency Injection which providers are in our app.
- providers: [
- Title
- ],
- // We need to tell Angular's compiler which directives are in our template.
- // Doing so will allow Angular to attach our behavior to an element
- directives: [
- ...FORM_DIRECTIVES,
- XLarge
- ],
- // We need to tell Angular's compiler which custom pipes are in our template.
- pipes: [],
- // Our list of styles in our component. We may add more to compose many styles together
- styles: [require('./home.css')],
- // Every Angular template is first compiled by the browser before Angular runs it's compiler
- template: require('./home.html')
-})
-export class Home {
- // TypeScript public modifiers
- constructor(public title: Title, public http: Http) {
-
- }
-
- ngOnInit() {
- console.log('hello Home component');
- }
-
-}
diff --git a/src/app/home/index.ts b/src/app/home/index.ts
new file mode 100644
index 0000000..ab5a522
--- /dev/null
+++ b/src/app/home/index.ts
@@ -0,0 +1 @@
+export * from './home.component';
diff --git a/src/app/home/providers/title.spec.ts b/src/app/home/providers/title.spec.ts
deleted file mode 100644
index 7800e98..0000000
--- a/src/app/home/providers/title.spec.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import {
-it,
-inject,
-injectAsync,
-beforeEachProviders,
-TestComponentBuilder
-} from 'angular2/testing';
-import {Title} from './title';
-
-describe('Title', () => {
- let title;
-
- beforeEach(() => {
- title = new Title();
- });
-
- it('should return the list of names', () => {
- expect(title.value).toEqual('Angular 2');
- });
-});
diff --git a/src/app/home/providers/title.ts b/src/app/home/providers/title.ts
deleted file mode 100644
index fad92e9..0000000
--- a/src/app/home/providers/title.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import {Injectable} from 'angular2/core';
-
-@Injectable()
-export class Title {
- value = 'Angular 2';
- constructor() {
- }
-}
diff --git a/src/app/home/title/index.ts b/src/app/home/title/index.ts
new file mode 100644
index 0000000..1410559
--- /dev/null
+++ b/src/app/home/title/index.ts
@@ -0,0 +1 @@
+export * from './title.service';
diff --git a/src/app/home/title/title.service.spec.ts b/src/app/home/title/title.service.spec.ts
new file mode 100644
index 0000000..8cca3fd
--- /dev/null
+++ b/src/app/home/title/title.service.spec.ts
@@ -0,0 +1,43 @@
+import {
+ inject,
+ TestBed
+} from '@angular/core/testing';
+import { Component } from '@angular/core';
+import {
+ BaseRequestOptions,
+ ConnectionBackend,
+ Http
+} from '@angular/http';
+import { MockBackend } from '@angular/http/testing';
+
+import { Title } from './title.service';
+
+describe('Title', () => {
+ beforeEach(() => TestBed.configureTestingModule({
+ providers: [
+ BaseRequestOptions,
+ MockBackend,
+ {
+ provide: Http,
+ useFactory: function(backend: ConnectionBackend, defaultOptions: BaseRequestOptions) {
+ return new Http(backend, defaultOptions);
+ },
+ deps: [MockBackend, BaseRequestOptions]
+ },
+ Title
+ ]}));
+
+ it('should have http', inject([ Title ], (title: Title) => {
+ expect(!!title.http).toEqual(true);
+ }));
+
+ it('should get data from the server', inject([ Title ], (title: Title) => {
+ spyOn(console, 'log');
+ expect(console.log).not.toHaveBeenCalled();
+
+ title.getData();
+ expect(console.log).toHaveBeenCalled();
+ expect(title.getData()).toEqual({ value: 'AngularClass' });
+ }));
+
+});
diff --git a/src/app/home/title/title.service.ts b/src/app/home/title/title.service.ts
new file mode 100644
index 0000000..599ef56
--- /dev/null
+++ b/src/app/home/title/title.service.ts
@@ -0,0 +1,20 @@
+import { Injectable } from '@angular/core';
+import { Http } from '@angular/http';
+
+@Injectable()
+export class Title {
+ value = 'Angular 2';
+ constructor(public http: Http) {
+
+ }
+
+ getData() {
+ console.log('Title#getData(): Get Data');
+ // return this.http.get('/assets/data.json')
+ // .map(res => res.json());
+ return {
+ value: 'AngularClass'
+ };
+ }
+
+}
diff --git a/src/app/home/x-large/index.ts b/src/app/home/x-large/index.ts
new file mode 100644
index 0000000..7038da2
--- /dev/null
+++ b/src/app/home/x-large/index.ts
@@ -0,0 +1 @@
+export * from './x-large.directive';
diff --git a/src/app/home/x-large/x-large.directive.spec.ts b/src/app/home/x-large/x-large.directive.spec.ts
new file mode 100644
index 0000000..9f23b2a
--- /dev/null
+++ b/src/app/home/x-large/x-large.directive.spec.ts
@@ -0,0 +1,44 @@
+import {
+ fakeAsync,
+ inject,
+ tick,
+ TestBed
+} from '@angular/core/testing';
+import { Component } from '@angular/core';
+import { BaseRequestOptions, Http } from '@angular/http';
+import { By } from '@angular/platform-browser/src/dom/debug/by';
+import { MockBackend } from '@angular/http/testing';
+
+// Load the implementations that should be tested
+import { XLarge } from './x-large.directive';
+
+describe('x-large directive', () => {
+ // Create a test component to test directives
+ @Component({
+ template: 'Content
'
+ })
+ class TestComponent { }
+
+ beforeEach(() => {
+ TestBed.configureTestingModule({
+ declarations: [
+ XLarge,
+ TestComponent
+ ]
+ });
+ });
+
+ it('should sent font-size to x-large', fakeAsync(() => {
+ TestBed.compileComponents().then(() => {
+
+ const fixture = TestBed.createComponent(TestComponent);
+ fixture.detectChanges();
+ tick();
+ const element = fixture.debugElement.query(By.css('div'));
+
+ expect(element.nativeElement.style.fontSize).toBe('x-large');
+
+ });
+ }));
+
+});
diff --git a/src/app/home/directives/x-large.ts b/src/app/home/x-large/x-large.directive.ts
similarity index 87%
rename from src/app/home/directives/x-large.ts
rename to src/app/home/x-large/x-large.directive.ts
index eaa250c..3719f75 100644
--- a/src/app/home/directives/x-large.ts
+++ b/src/app/home/x-large/x-large.directive.ts
@@ -1,4 +1,4 @@
-import {Directive, Component, ElementRef, Renderer} from 'angular2/core';
+import { Component, Directive, ElementRef, Renderer } from '@angular/core';
/*
* Directive
* XLarge is a simple directive to show how one is made
diff --git a/src/app/index.ts b/src/app/index.ts
new file mode 100644
index 0000000..4d4a9db
--- /dev/null
+++ b/src/app/index.ts
@@ -0,0 +1,2 @@
+// App
+export * from './app.module';
diff --git a/src/app/no-content/index.ts b/src/app/no-content/index.ts
new file mode 100644
index 0000000..93ea576
--- /dev/null
+++ b/src/app/no-content/index.ts
@@ -0,0 +1 @@
+export * from './no-content.component';
diff --git a/src/app/no-content/no-content.component.ts b/src/app/no-content/no-content.component.ts
new file mode 100644
index 0000000..7aef10e
--- /dev/null
+++ b/src/app/no-content/no-content.component.ts
@@ -0,0 +1,13 @@
+import { Component } from '@angular/core';
+
+@Component({
+ selector: 'no-content',
+ template: `
+
+
404: page missing
+
+ `
+})
+export class NoContentComponent {
+
+}
diff --git a/src/assets/css/.gitkeep b/src/assets/css/.gitkeep
new file mode 100644
index 0000000..857ef8c
--- /dev/null
+++ b/src/assets/css/.gitkeep
@@ -0,0 +1 @@
+@AngularClass
diff --git a/src/assets/data.json b/src/assets/data.json
new file mode 100644
index 0000000..b566a0b
--- /dev/null
+++ b/src/assets/data.json
@@ -0,0 +1,3 @@
+{
+ "value": "AngularClass"
+}
diff --git a/src/assets/img/angular-logo.png b/src/assets/img/angular-logo.png
new file mode 100644
index 0000000..9838bd7
Binary files /dev/null and b/src/assets/img/angular-logo.png differ
diff --git a/src/assets/img/angularclass-avatar.png b/src/assets/img/angularclass-avatar.png
new file mode 100644
index 0000000..3f5f8bc
Binary files /dev/null and b/src/assets/img/angularclass-avatar.png differ
diff --git a/src/assets/img/angularclass-logo.png b/src/assets/img/angularclass-logo.png
new file mode 100644
index 0000000..4342316
Binary files /dev/null and b/src/assets/img/angularclass-logo.png differ
diff --git a/src/assets/manifest.json b/src/assets/manifest.json
index b8b45ed..850f16f 100644
--- a/src/assets/manifest.json
+++ b/src/assets/manifest.json
@@ -1,41 +1,35 @@
{
- "name": "webpack-test",
+ "name": "App",
"icons": [
{
"src": "/assets/icon/android-icon-36x36.png",
"sizes": "36x36",
- "type": "image/png",
- "density": 0.75
+ "type": "image/png"
},
{
"src": "/assets/icon/android-icon-48x48.png",
"sizes": "48x48",
- "type": "image/png",
- "density": 1.0
+ "type": "image/png"
},
{
"src": "/assets/icon/android-icon-72x72.png",
"sizes": "72x72",
- "type": "image/png",
- "density": 1.5
+ "type": "image/png"
},
{
"src": "/assets/icon/android-icon-96x96.png",
"sizes": "96x96",
- "type": "image/png",
- "density": 2.0
+ "type": "image/png"
},
{
"src": "/assets/icon/android-icon-144x144.png",
"sizes": "144x144",
- "type": "image/png",
- "density": 3.0
+ "type": "image/png"
},
{
"src": "/assets/icon/android-icon-192x192.png",
"sizes": "192x192",
- "type": "image/png",
- "density": 4.0
+ "type": "image/png"
}
]
}
diff --git a/src/assets/mock-data/mock-data.json b/src/assets/mock-data/mock-data.json
new file mode 100644
index 0000000..d7285e8
--- /dev/null
+++ b/src/assets/mock-data/mock-data.json
@@ -0,0 +1,3 @@
+[
+ {"res": "data"}
+]
diff --git a/src/custom-typings.d.ts b/src/custom-typings.d.ts
new file mode 100644
index 0000000..0ad70d9
--- /dev/null
+++ b/src/custom-typings.d.ts
@@ -0,0 +1,123 @@
+/*
+ * Custom Type Definitions
+ * When including 3rd party modules you also need to include the type definition for the module
+ * if they don't provide one within the module. You can try to install it with @types
+
+npm install @types/node
+npm install @types/lodash
+
+ * If you can't find the type definition in the registry we can make an ambient/global definition in
+ * this file for now. For example
+
+declare module 'my-module' {
+ export function doesSomething(value: string): string;
+}
+
+ * If you are using a CommonJS module that is using module.exports then you will have to write your
+ * types using export = yourObjectOrFunction with a namespace above it
+ * notice how we have to create a namespace that is equal to the function we're
+ * assigning the export to
+
+declare module 'jwt-decode' {
+ function jwtDecode(token: string): any;
+ namespace jwtDecode {}
+ export = jwtDecode;
+}
+
+ *
+ * If you're prototying and you will fix the types later you can also declare it as type any
+ *
+
+declare var assert: any;
+declare var _: any;
+declare var $: any;
+
+ *
+ * If you're importing a module that uses Node.js modules which are CommonJS you need to import as
+ * in the files such as main.browser.ts or any file within app/
+ *
+
+import * as _ from 'lodash'
+
+ * You can include your type definitions in this file until you create one for the @types
+ *
+ */
+
+// support NodeJS modules without type definitions
+declare module '*';
+
+// Extra variables that live on Global that will be replaced by webpack DefinePlugin
+declare var ENV: string;
+declare var HMR: boolean;
+declare var System: SystemJS;
+
+interface SystemJS {
+ import: (path?: string) => Promise;
+}
+
+interface GlobalEnvironment {
+ ENV: string;
+ HMR: boolean;
+ SystemJS: SystemJS;
+ System: SystemJS;
+}
+
+interface Es6PromiseLoader {
+ (id: string): (exportName?: string) => Promise;
+}
+
+type FactoryEs6PromiseLoader = () => Es6PromiseLoader;
+type FactoryPromise = () => Promise;
+
+type AsyncRoutes = {
+ [component: string]: Es6PromiseLoader |
+ Function |
+ FactoryEs6PromiseLoader |
+ FactoryPromise
+};
+
+
+type IdleCallbacks = Es6PromiseLoader |
+ Function |
+ FactoryEs6PromiseLoader |
+ FactoryPromise ;
+
+interface WebpackModule {
+ hot: {
+ data?: any,
+ idle: any,
+ accept(dependencies?: string | string[], callback?: (updatedDependencies?: any) => void): void;
+ decline(deps?: any | string | string[]): void;
+ dispose(callback?: (data?: any) => void): void;
+ addDisposeHandler(callback?: (data?: any) => void): void;
+ removeDisposeHandler(callback?: (data?: any) => void): void;
+ check(autoApply?: any, callback?: (err?: Error, outdatedModules?: any[]) => void): void;
+ apply(options?: any, callback?: (err?: Error, outdatedModules?: any[]) => void): void;
+ status(callback?: (status?: string) => void): void | string;
+ removeStatusHandler(callback?: (status?: string) => void): void;
+ };
+}
+
+
+interface WebpackRequire {
+ (id: string): any;
+ (paths: string[], callback: (...modules: any[]) => void): void;
+ ensure(ids: string[], callback: (req: WebpackRequire) => void, chunkName?: string): void;
+ context(directory: string, useSubDirectories?: boolean, regExp?: RegExp): WebpackContext;
+}
+
+interface WebpackContext extends WebpackRequire {
+ keys(): string[];
+}
+
+interface ErrorStackTraceLimit {
+ stackTraceLimit: number;
+}
+
+
+// Extend typings
+interface NodeRequire extends WebpackRequire {}
+interface ErrorConstructor extends ErrorStackTraceLimit {}
+interface NodeRequireFunction extends Es6PromiseLoader {}
+interface NodeModule extends WebpackModule {}
+interface Global extends GlobalEnvironment {}
diff --git a/src/index.html b/src/index.html
index 018fdad..c173de8 100644
--- a/src/index.html
+++ b/src/index.html
@@ -1,41 +1,25 @@
-
- {%= o.webpackConfig.metadata.title %}
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ <%= htmlWebpackPlugin.options.title %>
+
+
+
+ <% if (webpackConfig.htmlElements.headTags) { %>
+
+ <%= webpackConfig.htmlElements.headTags %>
+ <% } %>
-
+
+
- {% for (var css in o.htmlWebpackPlugin.files.css) { %}
-
- {% } %}
+
@@ -43,25 +27,21 @@
-
-
-
-
-
+ -->
+ ga('create', 'UA-71073175-1', 'auto');
+ ga('send', 'pageview');
+
- {% if (o.webpackConfig.metadata.ENV === 'development') { %}
+ <% if (htmlWebpackPlugin.options.metadata.isDevServer && htmlWebpackPlugin.options.metadata.HMR !== true) { %>
-
- {% } %}
+
+ <% } %>
-
- {% for (var chunk in o.htmlWebpackPlugin.files.chunks) { %}
-
- {% } %}
diff --git a/src/main.browser.ts b/src/main.browser.ts
new file mode 100644
index 0000000..6114ae7
--- /dev/null
+++ b/src/main.browser.ts
@@ -0,0 +1,25 @@
+/*
+ * Angular bootstraping
+ */
+import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
+import { decorateModuleRef } from './app/environment';
+import { bootloader } from '@angularclass/hmr';
+/*
+ * App Module
+ * our top level module that holds all of our components
+ */
+import { AppModule } from './app';
+
+/*
+ * Bootstrap our Angular app with a top level NgModule
+ */
+export function main(): Promise {
+ return platformBrowserDynamic()
+ .bootstrapModule(AppModule)
+ .then(decorateModuleRef)
+ .catch(err => console.error(err));
+}
+
+// needed for hmr
+// in prod this is replace for document ready
+bootloader(main);
diff --git a/src/main.ts b/src/main.ts
deleted file mode 100644
index 3f7c2b6..0000000
--- a/src/main.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Providers provided by Angular
- */
-import {provide} from 'angular2/core';
-import {bootstrap, ELEMENT_PROBE_PROVIDERS} from 'angular2/platform/browser';
-import {ROUTER_PROVIDERS, LocationStrategy, HashLocationStrategy} from 'angular2/router';
-import {HTTP_PROVIDERS} from 'angular2/http';
-
-/*
- * App Component
- * our top level component that holds all of our components
- */
-import {App} from './app/app';
-/*
- * Bootstrap our Angular app with a top level component `App` and inject
- * our Services and Providers into Angular's dependency injection
- */
-document.addEventListener('DOMContentLoaded', function main() {
- bootstrap(App, [
- ...('production' === process.env.ENV ? [] : ELEMENT_PROBE_PROVIDERS),
- ...HTTP_PROVIDERS,
- ...ROUTER_PROVIDERS,
- provide(LocationStrategy, { useClass: HashLocationStrategy })
- ])
- .catch(err => console.error(err));
-});
diff --git a/src/meta/humans.txt b/src/meta/humans.txt
new file mode 100644
index 0000000..b2d8794
--- /dev/null
+++ b/src/meta/humans.txt
@@ -0,0 +1,17 @@
+# humanstxt.org/
+# The humans responsible & technology colophon
+
+# TEAM
+
+ -- --
+
+# THANKS
+
+
+ PatrickJS -- @gdi2290
+ AngularClass -- @AngularClass
+
+# TECHNOLOGY COLOPHON
+
+ HTML5, CSS3
+ Angular2, TypeScript, Webpack
diff --git a/src/meta/robots.txt b/src/meta/robots.txt
new file mode 100644
index 0000000..9417495
--- /dev/null
+++ b/src/meta/robots.txt
@@ -0,0 +1,3 @@
+# robotstxt.org
+
+User-agent: *
diff --git a/src/polyfills.browser.ts b/src/polyfills.browser.ts
new file mode 100644
index 0000000..3d0dcd0
--- /dev/null
+++ b/src/polyfills.browser.ts
@@ -0,0 +1,47 @@
+// TODO(gdi2290): switch to DLLs
+
+// Polyfills
+
+// import 'ie-shim'; // Internet Explorer 9 support
+
+
+// import 'core-js/es6';
+// Added parts of es6 which are necessary for your project or your browser support requirements.
+import 'core-js/es6/symbol';
+import 'core-js/es6/object';
+import 'core-js/es6/function';
+import 'core-js/es6/parse-int';
+import 'core-js/es6/parse-float';
+import 'core-js/es6/number';
+import 'core-js/es6/math';
+import 'core-js/es6/string';
+import 'core-js/es6/date';
+import 'core-js/es6/array';
+import 'core-js/es6/regexp';
+import 'core-js/es6/map';
+import 'core-js/es6/set';
+import 'core-js/es6/weak-map';
+import 'core-js/es6/weak-set';
+import 'core-js/es6/typed';
+import 'core-js/es6/reflect';
+// see issue https://github.com/AngularClass/angular2-webpack-starter/issues/709
+// import 'core-js/es6/promise';
+
+import 'core-js/es7/reflect';
+import 'zone.js/dist/zone';
+
+// Typescript emit helpers polyfill
+import 'ts-helpers';
+
+if ('production' === ENV) {
+ // Production
+
+
+} else {
+ // Development
+
+ Error.stackTraceLimit = Infinity;
+
+ require('zone.js/dist/long-stack-trace-zone');
+
+}
diff --git a/src/vendor.browser.ts b/src/vendor.browser.ts
new file mode 100644
index 0000000..cec2d7d
--- /dev/null
+++ b/src/vendor.browser.ts
@@ -0,0 +1,31 @@
+// For vendors for example jQuery, Lodash, angular2-jwt just import them here unless you plan on
+// chunking vendors files for async loading. You would need to import the async loaded vendors
+// at the entry point of the async loaded file. Also see custom-typings.d.ts as you also need to
+// run `typings install x` where `x` is your module
+
+// TODO(gdi2290): switch to DLLs
+
+// Angular 2
+import '@angular/platform-browser';
+import '@angular/platform-browser-dynamic';
+import '@angular/core';
+import '@angular/common';
+import '@angular/forms';
+import '@angular/http';
+import '@angular/router';
+
+// AngularClass
+import '@angularclass/hmr';
+
+// RxJS
+import 'rxjs/add/operator/map';
+import 'rxjs/add/operator/mergeMap';
+
+if ('production' === ENV) {
+ // Production
+
+
+} else {
+ // Development
+
+}
diff --git a/src/vendor.ts b/src/vendor.ts
deleted file mode 100644
index 711c815..0000000
--- a/src/vendor.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-// Polyfills
-import 'es6-shim';
-// (these modules are what are in 'angular2/bundles/angular2-polyfills' so don't use that here)
-import 'es6-promise';
-import 'zone.js/lib/browser/zone-microtask';
-
-if ('production' !== process.env.ENV) {
- // Reflect Polyfill
- require('es7-reflect-metadata/dist/browser');
- Error['stackTraceLimit'] = Infinity;
- Zone['longStackTraceZone'] = require('zone.js/lib/zones/long-stack-trace.js');
-}
-
-if ('production' === process.env.ENV) {
- // Reflect with es7-reflect-metadata/reflect-metadata is added
- // by webpack.prod.config ProvidePlugin
- let ngCore = require('angular2/core');
- ngCore.enableProdMode();
-}
-// Angular 2
-import 'angular2/platform/browser';
-import 'angular2/platform/common_dom';
-import 'angular2/router';
-import 'angular2/http';
-import 'angular2/core';
-
-// RxJS
-import 'rxjs';
-
-// Other vendors for example jQuery, Lodash, angular2-jwt
-import 'github-api/github';
diff --git a/test/app/app.e2e.js b/test/app/app.e2e.js
deleted file mode 100644
index 6562f9d..0000000
--- a/test/app/app.e2e.js
+++ /dev/null
@@ -1,35 +0,0 @@
- /*
- * TODO: ES5 for now until I make a webpack plugin for protractor
- */
-describe('App', function() {
-
- beforeEach(function() {
- browser.get('/');
- });
-
-
- it('should have a title', function() {
- var subject = browser.getTitle();
- var result = 'webpack-test';
- expect(subject).toEqual(result);
- });
-
- it('should have ', function() {
- var subject = element(by.deepCss('app /deep/ header')).isPresent();
- var result = true;
- expect(subject).toEqual(result);
- });
-
- it('should have ', function() {
- var subject = element(by.deepCss('app /deep/ main')).isPresent();
- var result = true;
- expect(subject).toEqual(result);
- });
-
- it('should have ', function() {
- var subject = element(by.deepCss('app /deep/ footer')).getText();
- var result = 'WebPack Angular 2 Starter by @AngularClass';
- expect(subject).toEqual(result);
- });
-
-});
diff --git a/test/injector.spec.ts b/test/injector.spec.ts
deleted file mode 100644
index f1b7ceb..0000000
--- a/test/injector.spec.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-import {
-it,
-inject,
-injectAsync,
-beforeEachProviders,
-TestComponentBuilder
-} from 'angular2/testing';
-import {APP_ID} from 'angular2/core';
-
-
-describe('default test injector', () => {
- it('should provide default id', inject([APP_ID], (id) => {
- expect(id).toBe('a');
- }));
-});
diff --git a/test/sanity-test.spec.ts b/test/sanity-test.spec.ts
deleted file mode 100644
index 0434da0..0000000
--- a/test/sanity-test.spec.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import {
-it,
-inject,
-injectAsync,
-beforeEachProviders,
-TestComponentBuilder
-} from 'angular2/testing';
-
-describe('sanity checks', () => {
- it('should also be able to test', () => {
- expect(true).toBe(true);
- });
-});
diff --git a/tsconfig.json b/tsconfig.json
index c6f4094..9c7effb 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -2,29 +2,40 @@
"compilerOptions": {
"target": "es5",
"module": "commonjs",
- "removeComments": true,
+ "moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
- "noEmitHelpers": false,
- "sourceMap": true
+ "allowSyntheticDefaultImports": true,
+ "sourceMap": true,
+ "noEmitHelpers": true,
+ "strictNullChecks": false,
+ "baseUrl": "./src",
+ "paths": {
+ },
+ "lib": [
+ "dom",
+ "es6"
+ ],
+ "types": [
+ "hammerjs",
+ "jasmine",
+ "node",
+ "protractor",
+ "selenium-webdriver",
+ "source-map",
+ "uglify-js",
+ "webpack"
+ ]
},
- "files": [
- "typings/main.d.ts",
- "test/injector.spec.ts",
- "test/sanity-test.spec.ts",
- "src/app/app.spec.ts",
- "src/app/home/home.spec.ts",
- "src/app/home/directives/x-large.spec.ts",
- "src/app/home/providers/title.spec.ts",
- "src/main.ts",
- "src/vendor.ts"
- ],
- "filesGlob": [
- "./src/**/*.ts",
- "./test/**/*.ts",
- "!./node_modules/**/*.ts"
+ "exclude": [
+ "node_modules",
+ "dist"
],
+ "awesomeTypescriptLoaderOptions": {
+ "forkChecker": true,
+ "useWebpackText": true
+ },
"compileOnSave": false,
"buildOnSave": false,
- "atom": { "rewriteTsconfig": true }
+ "atom": { "rewriteTsconfig": false }
}
diff --git a/tsfmt.json b/tsfmt.json
deleted file mode 100644
index d6d46e6..0000000
--- a/tsfmt.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "indentSize": 2,
- "tabSize": 4,
- "newLineCharacter": "\r\n",
- "convertTabsToSpaces": true,
- "insertSpaceAfterCommaDelimiter": true,
- "insertSpaceAfterSemicolonInForStatements": true,
- "insertSpaceBeforeAndAfterBinaryOperators": true,
- "insertSpaceAfterKeywordsInControlFlowStatements": true,
- "insertSpaceAfterFunctionKeywordForAnonymousFunctions": false,
- "insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis": false,
- "insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets": false,
- "placeOpenBraceOnNewLineForFunctions": false,
- "placeOpenBraceOnNewLineForControlBlocks": false
-}
diff --git a/tslint.json b/tslint.json
index 2bcbfcd..b7ace52 100644
--- a/tslint.json
+++ b/tslint.json
@@ -1,48 +1,129 @@
{
+ "rulesDirectory": [
+ "node_modules/codelyzer"
+ ],
"rules": {
- "class-name": true,
- "curly": false,
- "eofline": true,
- "indent": [true, 2],
- "max-line-length": [
- true,
- 100
- ],
+ "member-access": false,
"member-ordering": [
true,
"public-before-private",
"static-before-instance",
"variables-before-functions"
],
+ "no-any": false,
+ "no-inferrable-types": false,
+ "no-internal-module": true,
+ "no-var-requires": false,
+ "typedef": false,
+ "typedef-whitespace": [
+ true,
+ {
+ "call-signature": "nospace",
+ "index-signature": "nospace",
+ "parameter": "nospace",
+ "property-declaration": "nospace",
+ "variable-declaration": "nospace"
+ },
+ {
+ "call-signature": "space",
+ "index-signature": "space",
+ "parameter": "space",
+ "property-declaration": "space",
+ "variable-declaration": "space"
+ }
+ ],
+
+ "ban": false,
+ "curly": false,
+ "forin": true,
+ "label-position": true,
+ "label-undefined": true,
"no-arg": true,
+ "no-bitwise": true,
+ "no-conditional-assignment": true,
+ "no-console": [
+ true,
+ "debug",
+ "info",
+ "time",
+ "timeEnd",
+ "trace"
+ ],
"no-construct": true,
- "no-duplicate-key": true,
+ "no-debugger": true,
"no-duplicate-variable": true,
"no-empty": false,
"no-eval": true,
- "no-trailing-comma": true,
- "no-trailing-whitespace": true,
+ "no-null-keyword": false,
+ "no-shadowed-variable": true,
+ "no-string-literal": false,
+ "no-switch-case-fall-through": true,
+ "no-unreachable": true,
"no-unused-expression": true,
"no-unused-variable": false,
- "no-unreachable": true,
"no-use-before-declare": true,
+ "no-var-keyword": true,
+ "radix": true,
+ "switch-default": true,
+ "triple-equals": [
+ true,
+ "allow-null-check"
+ ],
+ "use-strict": [
+ true,
+ "check-module"
+ ],
+
+ "eofline": true,
+ "indent": [
+ true,
+ "spaces"
+ ],
+ "max-line-length": [
+ true,
+ 100
+ ],
+ "no-require-imports": false,
+ "no-trailing-whitespace": true,
+ "object-literal-sort-keys": false,
+ "trailing-comma": [
+ true,
+ {
+ "multiline": false,
+ "singleline": "never"
+ }
+ ],
+
+ "align": false,
+ "class-name": true,
+ "comment-format": [
+ true,
+ "check-space"
+ ],
+ "interface-name": false,
+ "jsdoc-format": true,
+ "no-consecutive-blank-lines": false,
+ "no-constructor-vars": false,
"one-line": [
true,
"check-open-brace",
"check-catch",
"check-else",
+ "check-finally",
"check-whitespace"
],
"quotemark": [
true,
- "single"
+ "single",
+ "avoid-escape"
],
- "semicolon": true,
- "triple-equals": [
+ "semicolon": [true, "always"],
+ "variable-name": [
true,
- "allow-null-check"
+ "check-format",
+ "allow-leading-underscore",
+ "ban-keywords"
],
- "variable-name": false,
"whitespace": [
true,
"check-branch",
@@ -50,6 +131,7 @@
"check-operator",
"check-separator",
"check-type"
- ]
+ ],
+ "import-destructuring-spacing": true
}
}
diff --git a/typings.json b/typings.json
deleted file mode 100644
index 66315c2..0000000
--- a/typings.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "dependencies": {
- "es6-promise": "github:typings/typed-es6-promise#9243c53f70fb4909ed7cce3094bec221b9fb6d5f"
- },
- "devDependencies": {},
- "ambientDependencies": {
- "angular-protractor": "github:angular/DefinitelyTyped/angular-protractor/angular-protractor.d.ts#31e7317c9a0793857109236ef7c7f223305a8aa9",
- "es6-shim": "github:angular/DefinitelyTyped/es6-shim/es6-shim.d.ts#31e7317c9a0793857109236ef7c7f223305a8aa9",
- "hammerjs": "github:angular/DefinitelyTyped/hammerjs/hammerjs.d.ts#31e7317c9a0793857109236ef7c7f223305a8aa9",
- "jasmine": "github:angular/DefinitelyTyped/jasmine/jasmine.d.ts#31e7317c9a0793857109236ef7c7f223305a8aa9",
- "node": "github:angular/DefinitelyTyped/node/node.d.ts#31e7317c9a0793857109236ef7c7f223305a8aa9",
- "selenium-webdriver": "github:angular/DefinitelyTyped/selenium-webdriver/selenium-webdriver.d.ts#31e7317c9a0793857109236ef7c7f223305a8aa9",
- "webpack": "github:DefinitelyTyped/DefinitelyTyped/webpack/webpack.d.ts#95c02169ba8fa58ac1092422efbd2e3174a206f4",
- "zone": "github:angular/DefinitelyTyped/zone/zone.d.ts#31e7317c9a0793857109236ef7c7f223305a8aa9"
- }
-}
diff --git a/webpack.config.js b/webpack.config.js
index 379a9eb..d319a59 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -1,118 +1,19 @@
-// @AngularClass
-
-/*
- * Helper: root(), and rootDir() are defined at the bottom
- */
-var path = require('path');
-var webpack = require('webpack');
-var CopyWebpackPlugin = require('copy-webpack-plugin');
-var HtmlWebpackPlugin = require('html-webpack-plugin');
-var ENV = process.env.ENV = process.env.NODE_ENV = 'development';
-
-var metadata = {
- title: 'webpack-test',
- baseUrl: '/',
- host: 'localhost',
- port: 3000,
- ENV: ENV
-};
-/*
- * Config
+/**
+ * @author: @AngularClass
*/
-module.exports = {
- // static data for index.html
- metadata: metadata,
- // for faster builds use 'eval'
- devtool: 'source-map',
- debug: true,
-
- // our angular app
- entry: { 'vendor': './src/vendor.ts', 'main': './src/main.ts' },
-
- // Config for our build files
- output: {
- path: root('dist'),
- filename: '[name].bundle.js',
- sourceMapFilename: '[name].map',
- chunkFilename: '[id].chunk.js'
- },
-
- resolve: {
- // ensure loader extensions match
- extensions: ['','.ts','.js','.json','.css','.html']
- },
-
- module: {
- preLoaders: [{ test: /\.ts$/, loader: 'tslint-loader', exclude: [/node_modules/] }],
- loaders: [
- // Support for .ts files.
- {
- test: /\.ts$/,
- loader: 'ts-loader',
- query: {
- 'ignoreDiagnostics': [
- 2403, // 2403 -> Subsequent variable declarations
- 2300, // 2300 -> Duplicate identifier
- 2374, // 2374 -> Duplicate number index signature
- 2375 // 2375 -> Duplicate string index signature
- ]
- },
- exclude: [ /\.(spec|e2e)\.ts$/, /node_modules\/(?!(ng2-.+))/ ]
- },
-
- // Support for *.json files.
- { test: /\.json$/, loader: 'json-loader' },
-
- // Support for CSS as raw text
- { test: /\.css$/, loader: 'raw-loader' },
-
- // support for .html as raw text
- { test: /\.html$/, loader: 'raw-loader' }
-
- // if you add a loader include the resolve file extension above
- ]
- },
-
- plugins: [
- new webpack.optimize.OccurenceOrderPlugin(true),
- new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', filename: 'vendor.bundle.js', minChunks: Infinity }),
- // static assets
- new CopyWebpackPlugin([ { from: 'src/assets', to: 'assets' } ]),
- // generating html
- new HtmlWebpackPlugin({ template: 'src/index.html', inject: false }),
- // replace
- new webpack.DefinePlugin({
- 'process.env': {
- 'ENV': JSON.stringify(metadata.ENV),
- 'NODE_ENV': JSON.stringify(metadata.ENV)
- }
- })
- ],
-
- // Other module loader config
- tslint: {
- emitErrors: false,
- failOnHint: false
- },
- // our Webpack Development Server config
- devServer: {
- port: metadata.port,
- host: metadata.host,
- historyApiFallback: true,
- watchOptions: { aggregateTimeout: 300, poll: 1000 }
- },
- // we need this due to problems with es6-shim
- node: {global: 'window', progress: false, crypto: 'empty', module: false, clearImmediate: false, setImmediate: false}
-};
-
-// Helper functions
-
-function root(args) {
- args = Array.prototype.slice.call(arguments, 0);
- return path.join.apply(path, [__dirname].concat(args));
-}
-function rootNode(args) {
- args = Array.prototype.slice.call(arguments, 0);
- return root.apply(path, ['node_modules'].concat(args));
+// Look in ./config folder for webpack.dev.js
+switch (process.env.NODE_ENV) {
+ case 'prod':
+ case 'production':
+ module.exports = require('./config/webpack.prod')({env: 'production'});
+ break;
+ case 'test':
+ case 'testing':
+ module.exports = require('./config/webpack.test')({env: 'test'});
+ break;
+ case 'dev':
+ case 'development':
+ default:
+ module.exports = require('./config/webpack.dev')({env: 'development'});
}
diff --git a/webpack.prod.config.js b/webpack.prod.config.js
deleted file mode 100644
index dae01ef..0000000
--- a/webpack.prod.config.js
+++ /dev/null
@@ -1,181 +0,0 @@
-// @AngularClass
-
-/*
- * Helper: root(), and rootDir() are defined at the bottom
- */
-var path = require('path');
-// Webpack Plugins
-var webpack = require('webpack');
-var ProvidePlugin = require('webpack/lib/ProvidePlugin');
-var DefinePlugin = require('webpack/lib/DefinePlugin');
-var OccurenceOrderPlugin = require('webpack/lib/optimize/OccurenceOrderPlugin');
-var DedupePlugin = require('webpack/lib/optimize/DedupePlugin');
-var UglifyJsPlugin = require('webpack/lib/optimize/UglifyJsPlugin');
-var CommonsChunkPlugin = require('webpack/lib/optimize/CommonsChunkPlugin');
-var CopyWebpackPlugin = require('copy-webpack-plugin');
-var HtmlWebpackPlugin = require('html-webpack-plugin');
-var WebpackMd5Hash = require('webpack-md5-hash');
-var ENV = process.env.NODE_ENV = process.env.ENV = 'production';
-var HOST = process.env.HOST || 'localhost';
-var PORT = process.env.PORT || 8080;
-
-var metadata = {
- title: 'webpack-test',
- baseUrl: '/',
- host: HOST,
- port: PORT,
- ENV: ENV
-};
-
-/*
- * Config
- */
-module.exports = {
- // static data for index.html
- metadata: metadata,
- // for faster builds use 'eval'
- devtool: 'source-map',
- debug: false,
-
- entry: {
- 'vendor':'./src/vendor.ts',
- 'main':'./src/main.ts' // our angular app
- },
-
- // Config for our build files
- output: {
- path: root('dist'),
- filename: '[name].[chunkhash].bundle.js',
- sourceMapFilename: '[name].[chunkhash].bundle.map',
- chunkFilename: '[id].[chunkhash].chunk.js'
- },
-
- resolve: {
- cache: false,
- // ensure loader extensions match
- extensions: ['','.ts','.js','.json','.css','.html']
- },
-
- module: {
- preLoaders: [
- {
- test: /\.ts$/,
- loader: 'tslint-loader',
- exclude: [
- /node_modules/
- ]
- }
- ],
- loaders: [
- // Support for .ts files.
- {
- test: /\.ts$/,
- loader: 'ts-loader',
- query: {
- // remove TypeScript helpers to be injected below by DefinePlugin
- 'compilerOptions': {
- 'removeComments': true,
- 'noEmitHelpers': true,
- },
- 'ignoreDiagnostics': [
- 2403, // 2403 -> Subsequent variable declarations
- 2300, // 2300 -> Duplicate identifier
- 2374, // 2374 -> Duplicate number index signature
- 2375 // 2375 -> Duplicate string index signature
- ]
- },
- exclude: [ /\.(spec|e2e)\.ts$/ ]
- },
-
- // Support for *.json files.
- { test: /\.json$/, loader: 'json-loader' },
-
- // Support for CSS as raw text
- { test: /\.css$/, loader: 'raw-loader' },
-
- // support for .html as raw text
- { test: /\.html$/, loader: 'raw-loader' }
-
- // if you add a loader include the file extension
- ]
- },
-
- plugins: [
- new WebpackMd5Hash(),
- new DedupePlugin(),
- new OccurenceOrderPlugin(true),
- new CommonsChunkPlugin({
- name: 'vendor',
- filename: 'vendor.[chunkhash].bundle.js',
- minChunks: Infinity
- }),
- // static assets
- new CopyWebpackPlugin([
- {
- from: 'src/assets',
- to: 'assets'
- }
- ]),
- // generating html
- new HtmlWebpackPlugin({
- template: 'src/index.html'
- }),
- new DefinePlugin({
- // Environment helpers
- 'process.env': {
- 'ENV': JSON.stringify(metadata.ENV),
- 'NODE_ENV': JSON.stringify(metadata.ENV)
- }
- }),
- new ProvidePlugin({
- // TypeScript helpers
- '__metadata': 'ts-helper/metadata',
- '__decorate': 'ts-helper/decorate',
- '__awaiter': 'ts-helper/awaiter',
- '__extends': 'ts-helper/extends',
- '__param': 'ts-helper/param',
- 'Reflect': 'es7-reflect-metadata/dist/browser'
- }),
- new UglifyJsPlugin({
- // beautify: true,
- mangle: false,
- comments: false,
- compress : {
- screw_ie8 : true
- },
- // TODO(gdi2290): uncomment in beta.2
- //mangle: {
- // screw_ie8 : true
- //}
- })
- // include uglify in production
- ],
- // Other module loader config
- tslint: {
- emitErrors: true,
- failOnHint: true
- },
- // don't use devServer for production
-
- // we need this due to problems with es6-shim
- node: {
- global: 'window',
- progress: false,
- crypto: 'empty',
- module: false,
- clearImmediate: false,
- setImmediate: false
- }
-};
-
-// Helper functions
-
-function root(args) {
- args = Array.prototype.slice.call(arguments, 0);
- return path.join.apply(path, [__dirname].concat(args));
-}
-
-function rootNode(args) {
- args = Array.prototype.slice.call(arguments, 0);
- return root.apply(path, ['node_modules'].concat(args));
-}
diff --git a/webpack.test.config.js b/webpack.test.config.js
deleted file mode 100644
index 2637f35..0000000
--- a/webpack.test.config.js
+++ /dev/null
@@ -1,106 +0,0 @@
-// @AngularClass
-
-/*
- * Helper: root(), and rootDir() are defined at the bottom
- */
-var path = require('path');
-// Webpack Plugins
-var ProvidePlugin = require('webpack/lib/ProvidePlugin');
-var DefinePlugin = require('webpack/lib/DefinePlugin');
-var ENV = process.env.ENV = process.env.NODE_ENV = 'test';
-
-/*
- * Config
- */
-module.exports = {
- resolve: {
- cache: false,
- extensions: ['','.ts','.js','.json','.css','.html']
- },
- devtool: 'inline-source-map',
- module: {
- loaders: [
- {
- test: /\.ts$/,
- loader: 'ts-loader',
- query: {
- // remove TypeScript helpers to be injected below by DefinePlugin
- 'compilerOptions': {
- 'removeComments': true,
- 'noEmitHelpers': true,
- },
- 'ignoreDiagnostics': [
- 2403, // 2403 -> Subsequent variable declarations
- 2300, // 2300 Duplicate identifier
- 2374, // 2374 -> Duplicate number index signature
- 2375 // 2375 -> Duplicate string index signature
- ]
- },
- exclude: [ /\.e2e\.ts$/, /node_modules/ ]
- },
- { test: /\.json$/, loader: 'json-loader' },
- { test: /\.html$/, loader: 'raw-loader' },
- { test: /\.css$/, loader: 'raw-loader' }
- ],
- postLoaders: [
- // instrument only testing sources with Istanbul
- {
- test: /\.(js|ts)$/,
- include: root('src'),
- loader: 'istanbul-instrumenter-loader',
- exclude: [
- /\.e2e\.ts$/,
- /node_modules/
- ]
- }
- ],
- noParse: [
- /zone\.js\/dist\/.+/,
- /angular2\/bundles\/.+/
- ]
- },
- stats: { colors: true, reasons: true },
- debug: false,
- plugins: [
- new DefinePlugin({
- // Environment helpers
- 'process.env': {
- 'ENV': JSON.stringify(ENV),
- 'NODE_ENV': JSON.stringify(ENV)
- },
- 'global': 'window',
- // TypeScript helpers
- '__metadata': 'Reflect.metadata',
- '__decorate': 'Reflect.decorate'
- }),
- new ProvidePlugin({
- // '__metadata': 'ts-helper/metadata',
- // '__decorate': 'ts-helper/decorate',
- '__awaiter': 'ts-helper/awaiter',
- '__extends': 'ts-helper/extends',
- '__param': 'ts-helper/param',
- 'Reflect': 'es7-reflect-metadata/dist/browser'
- })
- ],
- // we need this due to problems with es6-shim
- node: {
- global: 'window',
- progress: false,
- crypto: 'empty',
- module: false,
- clearImmediate: false,
- setImmediate: false
- }
-};
-
-// Helper functions
-
-function root(args) {
- args = Array.prototype.slice.call(arguments, 0);
- return path.join.apply(path, [__dirname].concat(args));
-}
-
-function rootNode(args) {
- args = Array.prototype.slice.call(arguments, 0);
- return root.apply(path, ['node_modules'].concat(args));
-}
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..1698947
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,5167 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+"@angular/common@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@angular/common/-/common-2.1.1.tgz#4b28de02c07f1395fbbdb403983c82a47490f39e"
+
+"@angular/compiler@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-2.1.1.tgz#41d04cdd121ab17d7e4d4e660512fe424949fbd6"
+
+"@angular/core@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@angular/core/-/core-2.1.1.tgz#2100ba90023c8184bd1ea7a63f194b15e8c2dfe1"
+
+"@angular/forms@^2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-2.1.1.tgz#d7b79d8078cd30107d43666f4af3d7ac6600b083"
+
+"@angular/http@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@angular/http/-/http-2.1.1.tgz#6cec2c675aa0b8f8e7f809d617e4cde5b713437a"
+
+"@angular/platform-browser-dynamic@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-2.1.1.tgz#d1e671abbc35c4c3dab01d266a239ebfb0ef8b6e"
+
+"@angular/platform-browser@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-2.1.1.tgz#03687a14bb914b113d1068aa0a44b5820109c0c0"
+
+"@angular/platform-server@2.1.1":
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-2.1.1.tgz#e4bd7b9f3dd20789a4d820a3fcc47ea174de7483"
+ dependencies:
+ parse5 "^2.2.1"
+
+"@angular/router@3.1.1":
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/@angular/router/-/router-3.1.1.tgz#14c53e6789274e4cb6e0bb3f7269c82910c805fd"
+
+"@angularclass/conventions-loader@^1.0.2":
+ version "1.0.12"
+ resolved "https://registry.yarnpkg.com/@angularclass/conventions-loader/-/conventions-loader-1.0.12.tgz#911963adaf5d556e9f8c0a067e8fb0c16233ac45"
+ dependencies:
+ loader-utils "^0.2.15"
+
+"@angularclass/hmr-loader@~3.0.2":
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/@angularclass/hmr-loader/-/hmr-loader-3.0.2.tgz#c789182411f09d0b98929e6acbfd3e4aeaace597"
+ dependencies:
+ loader-utils "^0.2.15"
+
+"@angularclass/hmr@~1.2.0":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@angularclass/hmr/-/hmr-1.2.1.tgz#991314ee4e9babeb0908dee25ee7c1b0aa31d44f"
+
+"@types/hammerjs@^2.0.33":
+ version "2.0.33"
+ resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.33.tgz#45f57352474181425bb4b65f7313a60426d54bab"
+
+"@types/jasmine@^2.2.31", "@types/jasmine@^2.2.34":
+ version "2.5.35"
+ resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.35.tgz#5566406dc8417d380d6c2f9562ec3c71ec28ef78"
+
+"@types/node@^6.0.35", "@types/node@^6.0.38":
+ version "6.0.45"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-6.0.45.tgz#c4842a9d653d767831e4ff495b6008cc0d579966"
+
+"@types/protractor@^1.5.20":
+ version "1.5.20"
+ resolved "https://registry.yarnpkg.com/@types/protractor/-/protractor-1.5.20.tgz#7437e94b89af90d507eec9b9261a81a69a367300"
+ dependencies:
+ "@types/selenium-webdriver" "*"
+
+"@types/q@^0.0.30":
+ version "0.0.30"
+ resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.30.tgz#fd7ee1af40f21cdd1f519268073b3432ec17d7a3"
+
+"@types/selenium-webdriver@*", "@types/selenium-webdriver@~2.53.30":
+ version "2.53.33"
+ resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.53.33.tgz#64672bae3acedf9d9e6bcfa8bdb7c37497751c3d"
+
+"@types/selenium-webdriver@2.44.29":
+ version "2.44.29"
+ resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-2.44.29.tgz#5be245a74e9aa3336429ab853e93ddbdce86a717"
+
+"@types/source-map@*", "@types/source-map@^0.1.27":
+ version "0.1.28"
+ resolved "https://registry.yarnpkg.com/@types/source-map/-/source-map-0.1.28.tgz#ee1fd82cef382cc269be4910f941dd26ea96a974"
+
+"@types/uglify-js@*", "@types/uglify-js@^2.0.27":
+ version "2.6.28"
+ resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-2.6.28.tgz#1499b48ca3a44132250b318cdde25b8f45f0c616"
+ dependencies:
+ "@types/source-map" "*"
+
+"@types/webpack@^1.12.34":
+ version "1.12.35"
+ resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-1.12.35.tgz#803024d0918eb23effa8dbe9209829c856652a52"
+ dependencies:
+ "@types/uglify-js" "*"
+
+abbrev@1, abbrev@1.0.x:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
+
+accepts@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.3.tgz#c3ca7434938648c3e0d9c1e328dd68b622c284ca"
+ dependencies:
+ mime-types "~2.1.11"
+ negotiator "0.6.1"
+
+accepts@1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.1.4.tgz#d71c96f7d41d0feda2c38cd14e8a27c04158df4a"
+ dependencies:
+ mime-types "~2.0.4"
+ negotiator "0.4.9"
+
+acorn@^3.2.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a"
+
+adm-zip@^0.4.7, adm-zip@0.4.7:
+ version "0.4.7"
+ resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.7.tgz#8606c2cbf1c426ce8c8ec00174447fd49b6eafc1"
+
+adm-zip@0.4.4:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.4.tgz#a61ed5ae6905c3aea58b3a657d25033091052736"
+
+after@0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/after/-/after-0.8.1.tgz#ab5d4fb883f596816d3515f8f791c0af486dd627"
+
+agent-base@2:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-2.0.1.tgz#bd8f9e86a8eb221fffa07bd14befd55df142815e"
+ dependencies:
+ extend "~3.0.0"
+ semver "~5.0.1"
+
+ajv@^4.7.0:
+ version "4.8.2"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.8.2.tgz#65486936ca36fea39a1504332a78bebd5d447bdc"
+ dependencies:
+ co "^4.6.0"
+ json-stable-stringify "^1.0.1"
+
+align-text@^0.1.1, align-text@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117"
+ dependencies:
+ kind-of "^3.0.2"
+ longest "^1.0.1"
+ repeat-string "^1.5.2"
+
+alphanum-sort@^1.0.1, alphanum-sort@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
+
+amdefine@>=0.0.4, amdefine@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.0.tgz#fd17474700cb5cc9c2b709f0be9d23ce3c198c33"
+
+angular2-template-loader@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/angular2-template-loader/-/angular2-template-loader-0.5.0.tgz#a16db190faaf9f8e8e9410f3c468370de75127a6"
+ dependencies:
+ codecov "^1.0.1"
+ loader-utils "^0.2.15"
+
+ansi-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.0.0.tgz#c5061b6e0ef8a81775e50f5d66151bf6bf371107"
+
+ansi-styles@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
+
+any-promise@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f"
+
+anymatch@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.0.tgz#a3e52fa39168c825ff57b0248126ce5a8ff95507"
+ dependencies:
+ arrify "^1.0.0"
+ micromatch "^2.1.5"
+
+aproba@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.0.4.tgz#2713680775e7614c8ba186c065d4e2e52d1072c0"
+
+are-we-there-yet@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.2.tgz#80e470e95a084794fe1899262c5667c6e88de1b3"
+ dependencies:
+ delegates "^1.0.0"
+ readable-stream "^2.0.0 || ^1.1.13"
+
+argparse@^1.0.7:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.9.tgz#73d83bc263f86e97f8cc4f6bae1b0e90a7d22c86"
+ dependencies:
+ sprintf-js "~1.0.2"
+
+argv@>=0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/argv/-/argv-0.0.2.tgz#ecbd16f8949b157183711b1bda334f37840185ab"
+
+arr-diff@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
+ dependencies:
+ arr-flatten "^1.0.1"
+
+arr-flatten@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.0.1.tgz#e5ffe54d45e19f32f216e91eb99c8ce892bb604b"
+
+array-differ@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031"
+
+array-find-index@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1"
+
+array-flatten@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
+
+array-slice@^0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5"
+
+array-union@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39"
+ dependencies:
+ array-uniq "^1.0.1"
+
+array-uniq@^1.0.1, array-uniq@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6"
+
+array-unique@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
+
+arraybuffer.slice@0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz#f33b2159f0532a3f3107a272c0ccfbd1ad2979ca"
+
+arrify@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d"
+
+asn1.js@^4.0.0:
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.8.1.tgz#3949b7f5fd1e8bedc13be3abebf477f93490c810"
+ dependencies:
+ bn.js "^4.0.0"
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+asn1@~0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
+
+assert-plus@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
+
+assert-plus@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
+
+assert@^1.1.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91"
+ dependencies:
+ util "0.10.3"
+
+assets-webpack-plugin@^3.4.0:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/assets-webpack-plugin/-/assets-webpack-plugin-3.5.0.tgz#933b16bf679c7510dd3475e4df9ba495d9dc0368"
+ dependencies:
+ camelcase "^1.2.1"
+ escape-string-regexp "^1.0.3"
+ lodash.assign "^3.2.0"
+ lodash.merge "^3.3.2"
+ mkdirp "^0.5.1"
+
+async-each@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
+
+async@^0.9.0, async@~0.9.0:
+ version "0.9.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d"
+
+async@^1.3.0, async@^1.4.0, async@1.5.2, async@1.x:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a"
+
+async@~0.2.6:
+ version "0.2.10"
+ resolved "https://registry.yarnpkg.com/async/-/async-0.2.10.tgz#b6bbe0b0674b9d719708ca38de8c237cb526c3d1"
+
+async@0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/async/-/async-0.9.0.tgz#ac3613b1da9bed1b47510bb4651b8931e47146c7"
+
+async@2.0.0-rc.4:
+ version "2.0.0-rc.4"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.0.0-rc.4.tgz#9b7f60724c17962a973f787419e0ebc5571dbad8"
+ dependencies:
+ lodash "^4.3.0"
+
+asynckit@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
+
+autoprefixer@^6.3.1:
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-6.5.1.tgz#ae759a5221e709f3da17c2d656230e67c43cbb75"
+ dependencies:
+ browserslist "~1.4.0"
+ caniuse-db "^1.0.30000554"
+ normalize-range "^0.1.2"
+ num2fraction "^1.2.2"
+ postcss "^5.2.4"
+ postcss-value-parser "^3.2.3"
+
+awesome-typescript-loader@^2.2.1:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/awesome-typescript-loader/-/awesome-typescript-loader-2.2.4.tgz#4185d60c035c25515f9c2a747fa5f69b2a001e9e"
+ dependencies:
+ colors "^1.1.2"
+ enhanced-resolve "^2.2.2"
+ loader-utils "^0.2.6"
+ lodash "^4.13.1"
+ object-assign "^4.1.0"
+ source-map-support "^0.4.0"
+
+aws-sign2@~0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
+
+aws4@^1.2.1:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.5.0.tgz#0a29ffb79c31c9e712eeb087e8e7a64b4a56d755"
+
+babel-code-frame@^6.11.0, babel-code-frame@^6.16.0:
+ version "6.16.0"
+ resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.16.0.tgz#f90e60da0862909d3ce098733b5d3987c97cb8de"
+ dependencies:
+ chalk "^1.1.0"
+ esutils "^2.0.2"
+ js-tokens "^2.0.0"
+
+babel-generator@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.18.0.tgz#e4f104cb3063996d9850556a45aae4a022060a07"
+ dependencies:
+ babel-messages "^6.8.0"
+ babel-runtime "^6.9.0"
+ babel-types "^6.18.0"
+ detect-indent "^4.0.0"
+ jsesc "^1.3.0"
+ lodash "^4.2.0"
+ source-map "^0.5.0"
+
+babel-messages@^6.8.0:
+ version "6.8.0"
+ resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.8.0.tgz#bf504736ca967e6d65ef0adb5a2a5f947c8e0eb9"
+ dependencies:
+ babel-runtime "^6.0.0"
+
+babel-runtime@^6.0.0, babel-runtime@^6.9.0, babel-runtime@^6.9.1:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.18.0.tgz#0f4177ffd98492ef13b9f823e9994a02584c9078"
+ dependencies:
+ core-js "^2.4.0"
+ regenerator-runtime "^0.9.5"
+
+babel-template@^6.16.0:
+ version "6.16.0"
+ resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.16.0.tgz#e149dd1a9f03a35f817ddbc4d0481988e7ebc8ca"
+ dependencies:
+ babel-runtime "^6.9.0"
+ babel-traverse "^6.16.0"
+ babel-types "^6.16.0"
+ babylon "^6.11.0"
+ lodash "^4.2.0"
+
+babel-traverse@^6.16.0, babel-traverse@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.18.0.tgz#5aeaa980baed2a07c8c47329cd90c3b90c80f05e"
+ dependencies:
+ babel-code-frame "^6.16.0"
+ babel-messages "^6.8.0"
+ babel-runtime "^6.9.0"
+ babel-types "^6.18.0"
+ babylon "^6.11.0"
+ debug "^2.2.0"
+ globals "^9.0.0"
+ invariant "^2.2.0"
+ lodash "^4.2.0"
+
+babel-types@^6.16.0, babel-types@^6.18.0:
+ version "6.18.0"
+ resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.18.0.tgz#1f7d5a73474c59eb9151b2417bbff4e4fce7c3f8"
+ dependencies:
+ babel-runtime "^6.9.1"
+ esutils "^2.0.2"
+ lodash "^4.2.0"
+ to-fast-properties "^1.0.1"
+
+babylon@^6.11.0, babylon@^6.13.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.13.0.tgz#58ed40dd2a8120612be5f318c2c0bedbebde4a0b"
+
+backo2@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/backo2/-/backo2-1.0.2.tgz#31ab1ac8b129363463e35b3ebb69f4dfcfba7947"
+
+balanced-match@^0.4.1, balanced-match@^0.4.2:
+ version "0.4.2"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.4.2.tgz#cb3f3e3c732dc0f01ee70b403f302e61d7709838"
+
+balanced-match@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-0.1.0.tgz#b504bd05869b39259dd0c5efc35d843176dccc4a"
+
+base64-arraybuffer@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.2.tgz#474df4a9f2da24e05df3158c3b1db3c3cd46a154"
+
+base64-js@^1.0.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.0.tgz#a39992d723584811982be5e290bb6a53d86700f1"
+
+Base64@~0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/Base64/-/Base64-0.2.1.tgz#ba3a4230708e186705065e66babdd4c35cf60028"
+
+base64id@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/base64id/-/base64id-0.1.0.tgz#02ce0fdeee0cef4f40080e1e73e834f0b1bfce3f"
+
+batch@0.5.3:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/batch/-/batch-0.5.3.tgz#3f3414f380321743bfc1042f9a83ff1d5824d464"
+
+bcrypt-pbkdf@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz#3ca76b85241c7170bf7d9703e7b9aa74630040d4"
+ dependencies:
+ tweetnacl "^0.14.3"
+
+beeper@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.0.tgz#9ee6fc1ce7f54feaace7ce73588b056037866a2c"
+
+benchmark@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/benchmark/-/benchmark-1.0.0.tgz#2f1e2fa4c359f11122aa183082218e957e390c73"
+
+better-assert@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/better-assert/-/better-assert-1.0.2.tgz#40866b9e1b9e0b55b481894311e68faffaebc522"
+ dependencies:
+ callsite "1.0.0"
+
+big.js@^3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.1.3.tgz#4cada2193652eb3ca9ec8e55c9015669c9806978"
+
+binary-extensions@^1.0.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.7.0.tgz#6c1610db163abfb34edfe42fa423343a1e01185d"
+
+blob@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.4.tgz#bcf13052ca54463f30f9fc7e95b9a47630a94921"
+
+block-stream@*:
+ version "0.0.9"
+ resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
+ dependencies:
+ inherits "~2.0.0"
+
+bluebird@^2.10.2:
+ version "2.11.0"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1"
+
+bluebird@^3.3.0, bluebird@^3.4.6:
+ version "3.4.6"
+ resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.6.tgz#01da8d821d87813d158967e743d5fe6c62cf8c0f"
+
+bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
+ version "4.11.6"
+ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215"
+
+body-parser@^1.12.4:
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.15.2.tgz#d7578cf4f1d11d5f6ea804cef35dc7a7ff6dae67"
+ dependencies:
+ bytes "2.4.0"
+ content-type "~1.0.2"
+ debug "~2.2.0"
+ depd "~1.1.0"
+ http-errors "~1.5.0"
+ iconv-lite "0.4.13"
+ on-finished "~2.3.0"
+ qs "6.2.0"
+ raw-body "~2.1.7"
+ type-is "~1.6.13"
+
+boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
+
+boom@2.x.x:
+ version "2.10.1"
+ resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
+ dependencies:
+ hoek "2.x.x"
+
+brace-expansion@^1.0.0:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.6.tgz#7197d7eaa9b87e648390ea61fc66c84427420df9"
+ dependencies:
+ balanced-match "^0.4.1"
+ concat-map "0.0.1"
+
+braces@^0.1.2:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-0.1.5.tgz#c085711085291d8b75fdd74eab0f8597280711e6"
+ dependencies:
+ expand-range "^0.1.0"
+
+braces@^1.8.2:
+ version "1.8.5"
+ resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
+ dependencies:
+ expand-range "^1.8.1"
+ preserve "^0.2.0"
+ repeat-element "^1.1.2"
+
+brorand@^1.0.1:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.0.6.tgz#4028706b915f91f7b349a2e0bf3c376039d216e5"
+
+browserify-aes@^1.0.0, browserify-aes@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.0.6.tgz#5e7725dbdef1fd5930d4ebab48567ce451c48a0a"
+ dependencies:
+ buffer-xor "^1.0.2"
+ cipher-base "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ inherits "^2.0.1"
+
+browserify-cipher@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a"
+ dependencies:
+ browserify-aes "^1.0.4"
+ browserify-des "^1.0.0"
+ evp_bytestokey "^1.0.0"
+
+browserify-des@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd"
+ dependencies:
+ cipher-base "^1.0.1"
+ des.js "^1.0.0"
+ inherits "^2.0.1"
+
+browserify-rsa@^4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524"
+ dependencies:
+ bn.js "^4.1.0"
+ randombytes "^2.0.1"
+
+browserify-sign@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.0.tgz#10773910c3c206d5420a46aad8694f820b85968f"
+ dependencies:
+ bn.js "^4.1.1"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.2"
+ elliptic "^6.0.0"
+ inherits "^2.0.1"
+ parse-asn1 "^5.0.0"
+
+browserify-zlib@~0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.1.4.tgz#bb35f8a519f600e0fa6b8485241c979d0141fb2d"
+ dependencies:
+ pako "~0.2.0"
+
+browserslist@~1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-1.4.0.tgz#9cfdcf5384d9158f5b70da2aa00b30e8ff019049"
+ dependencies:
+ caniuse-db "^1.0.30000539"
+
+buffer-shims@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+
+buffer-xor@^1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
+
+buffer@^4.3.0:
+ version "4.9.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298"
+ dependencies:
+ base64-js "^1.0.2"
+ ieee754 "^1.1.4"
+ isarray "^1.0.0"
+
+builtin-modules@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
+
+bytes@2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.3.0.tgz#d5b680a165b6201739acb611542aabc2d8ceb070"
+
+bytes@2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/bytes/-/bytes-2.4.0.tgz#7d97196f9d5baf7f6935e25985549edd2a6c2339"
+
+callsite@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/callsite/-/callsite-1.0.0.tgz#280398e5d664bd74038b6f0905153e6e8af1bc20"
+
+camel-case@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73"
+ dependencies:
+ no-case "^2.2.0"
+ upper-case "^1.1.1"
+
+camelcase-keys@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7"
+ dependencies:
+ camelcase "^2.0.0"
+ map-obj "^1.0.0"
+
+camelcase@^1.0.2, camelcase@^1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39"
+
+camelcase@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f"
+
+camelcase@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a"
+
+caniuse-db@^1.0.30000539, caniuse-db@^1.0.30000554:
+ version "1.0.30000566"
+ resolved "https://registry.yarnpkg.com/caniuse-db/-/caniuse-db-1.0.30000566.tgz#9463db955f509136fd35b385903bb61b07150f27"
+
+caseless@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
+
+center-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad"
+ dependencies:
+ align-text "^0.1.3"
+ lazy-cache "^1.0.3"
+
+chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3, chalk@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
+ dependencies:
+ ansi-styles "^2.2.1"
+ escape-string-regexp "^1.0.2"
+ has-ansi "^2.0.0"
+ strip-ansi "^3.0.0"
+ supports-color "^2.0.0"
+
+change-case@3.0.x:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.0.0.tgz#6c9c8e35f8790870a82b6b0745be8c3cbef9b081"
+ dependencies:
+ camel-case "^3.0.0"
+ constant-case "^2.0.0"
+ dot-case "^2.1.0"
+ header-case "^1.0.0"
+ is-lower-case "^1.1.0"
+ is-upper-case "^1.1.0"
+ lower-case "^1.1.1"
+ lower-case-first "^1.0.0"
+ no-case "^2.2.0"
+ param-case "^2.1.0"
+ pascal-case "^2.0.0"
+ path-case "^2.1.0"
+ sentence-case "^2.1.0"
+ snake-case "^2.1.0"
+ swap-case "^1.1.0"
+ title-case "^2.1.0"
+ upper-case "^1.1.1"
+ upper-case-first "^1.1.0"
+
+charenc@~0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.1.tgz#004cff9feaf102382ed12db58dd6f962796d6e88"
+
+chokidar@^1.4.1, chokidar@^1.4.3, chokidar@^1.6.0:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.6.1.tgz#2f4447ab5e96e50fb3d789fd90d4c72e0e4c70c2"
+ dependencies:
+ anymatch "^1.3.0"
+ async-each "^1.0.0"
+ glob-parent "^2.0.0"
+ inherits "^2.0.1"
+ is-binary-path "^1.0.0"
+ is-glob "^2.0.0"
+ path-is-absolute "^1.0.0"
+ readdirp "^2.0.0"
+ optionalDependencies:
+ fsevents "^1.0.0"
+
+cipher-base@^1.0.0, cipher-base@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.3.tgz#eeabf194419ce900da3018c207d212f2a6df0a07"
+ dependencies:
+ inherits "^2.0.1"
+
+clap@^1.0.9:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/clap/-/clap-1.1.1.tgz#a8a93e0bfb7581ac199c4f001a5525a724ce696d"
+ dependencies:
+ chalk "^1.1.3"
+
+clean-css@3.4.x:
+ version "3.4.20"
+ resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-3.4.20.tgz#c0d8963b5448e030f0bcd3ddd0dac4dfe3dea501"
+ dependencies:
+ commander "2.8.x"
+ source-map "0.4.x"
+
+cliui@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1"
+ dependencies:
+ center-align "^0.1.1"
+ right-align "^0.1.1"
+ wordwrap "0.0.2"
+
+cliui@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d"
+ dependencies:
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wrap-ansi "^2.0.0"
+
+clone-stats@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1"
+
+clone@^1.0.0, clone@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.2.tgz#260b7a99ebb1edfe247538175f783243cb19d149"
+
+co@^4.6.0:
+ version "4.6.0"
+ resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
+
+coa@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/coa/-/coa-1.0.1.tgz#7f959346cfc8719e3f7233cd6852854a7c67d8a3"
+ dependencies:
+ q "^1.1.2"
+
+code-point-at@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.0.1.tgz#1104cd34f9b5b45d3eba88f1babc1924e1ce35fb"
+ dependencies:
+ number-is-nan "^1.0.0"
+
+codecov@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/codecov/-/codecov-1.0.1.tgz#97260ceac0e96b8eda8d562006558a53a139dffd"
+ dependencies:
+ argv ">=0.0.2"
+ execSync "1.0.2"
+ request ">=2.42.0"
+ urlgrey ">=0.4.0"
+
+codelyzer@~1.0.0-beta.2:
+ version "1.0.0-beta.3"
+ resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-1.0.0-beta.3.tgz#779bf699aeae4194056dc5016a9970ba55353fee"
+ dependencies:
+ css-selector-tokenizer "^0.7.0"
+ cssauron "^1.4.0"
+ sprintf-js "^1.0.3"
+
+collections@^0.2.0:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/collections/-/collections-0.2.2.tgz#1f23026b2ef36f927eecc901e99c5f0d48fa334e"
+ dependencies:
+ weak-map "1.0.0"
+
+color-convert@^1.3.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.5.0.tgz#7a2b4efb4488df85bca6443cb038b7100fbe7de1"
+
+color-name@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.1.tgz#4b1415304cf50028ea81643643bd82ea05803689"
+
+color-string@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/color-string/-/color-string-0.3.0.tgz#27d46fb67025c5c2fa25993bfbf579e47841b991"
+ dependencies:
+ color-name "^1.0.0"
+
+color@^0.11.0:
+ version "0.11.3"
+ resolved "https://registry.yarnpkg.com/color/-/color-0.11.3.tgz#4bad1d0d52499dd00dbd6f0868442467e49394e6"
+ dependencies:
+ clone "^1.0.2"
+ color-convert "^1.3.0"
+ color-string "^0.3.0"
+
+colormin@^1.0.5:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/colormin/-/colormin-1.1.2.tgz#ea2f7420a72b96881a38aae59ec124a6f7298133"
+ dependencies:
+ color "^0.11.0"
+ css-color-names "0.0.4"
+ has "^1.0.1"
+
+colors@^1.1.0, colors@^1.1.2, colors@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63"
+
+colors@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b"
+
+combine-lists@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/combine-lists/-/combine-lists-1.0.1.tgz#458c07e09e0d900fc28b70a3fec2dacd1d2cb7f6"
+ dependencies:
+ lodash "^4.5.0"
+
+combined-stream@^1.0.5, combined-stream@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
+ dependencies:
+ delayed-stream "~1.0.0"
+
+commander@^2.9.0, commander@2.9.0, commander@2.9.x:
+ version "2.9.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4"
+ dependencies:
+ graceful-readlink ">= 1.0.0"
+
+commander@2.8.x:
+ version "2.8.1"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-2.8.1.tgz#06be367febfda0c330aa1e2a072d3dc9762425d4"
+ dependencies:
+ graceful-readlink ">= 1.0.0"
+
+component-bind@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
+
+component-emitter@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.1.2.tgz#296594f2753daa63996d2af08d15a95116c9aec3"
+
+component-emitter@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.0.tgz#ccd113a86388d06482d03de3fc7df98526ba8efe"
+
+component-inherit@0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
+
+compressible@~2.0.8:
+ version "2.0.8"
+ resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.8.tgz#7162e6c46d3b9d200ffb45cb4e4a0f7832732503"
+ dependencies:
+ mime-db ">= 1.23.0 < 2"
+
+compression@^1.5.2:
+ version "1.6.2"
+ resolved "https://registry.yarnpkg.com/compression/-/compression-1.6.2.tgz#cceb121ecc9d09c52d7ad0c3350ea93ddd402bc3"
+ dependencies:
+ accepts "~1.3.3"
+ bytes "2.3.0"
+ compressible "~2.0.8"
+ debug "~2.2.0"
+ on-headers "~1.0.1"
+ vary "~1.1.0"
+
+concat-map@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
+
+connect-history-api-fallback@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz#e51d17f8f0ef0db90a64fdb47de3051556e9f169"
+
+connect@^3.3.5:
+ version "3.5.0"
+ resolved "https://registry.yarnpkg.com/connect/-/connect-3.5.0.tgz#b357525a0b4c1f50599cd983e1d9efeea9677198"
+ dependencies:
+ debug "~2.2.0"
+ finalhandler "0.5.0"
+ parseurl "~1.3.1"
+ utils-merge "1.0.0"
+
+console-browserify@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10"
+ dependencies:
+ date-now "^0.1.4"
+
+console-control-strings@^1.0.0, console-control-strings@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e"
+
+constant-case@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46"
+ dependencies:
+ snake-case "^2.1.0"
+ upper-case "^1.1.1"
+
+constants-browserify@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
+
+content-disposition@0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.1.tgz#87476c6a67c8daa87e32e87616df883ba7fb071b"
+
+content-type@~1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.2.tgz#b7d113aee7a8dd27bd21133c4dc2529df1721eed"
+
+cookie-signature@1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
+
+cookie@0.3.1:
+ version "0.3.1"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb"
+
+copy-webpack-plugin@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-4.0.0.tgz#385e7f8deeb993f6d48b9f9854d50391912633ae"
+ dependencies:
+ bluebird "^2.10.2"
+ fs-extra "^0.26.4"
+ glob "^6.0.4"
+ loader-utils "^0.2.15"
+ lodash "^4.3.0"
+ minimatch "^3.0.0"
+ node-dir "^0.1.10"
+
+core-js@^2.2.0, core-js@^2.4.0, core-js@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.4.1.tgz#4de911e667b0eae9124e34254b53aea6fc618d3e"
+
+core-util-is@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
+
+corser@~2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87"
+
+create-ecdh@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d"
+ dependencies:
+ bn.js "^4.1.0"
+ elliptic "^6.0.0"
+
+create-hash@^1.1.0, create-hash@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.2.tgz#51210062d7bb7479f6c65bb41a92208b1d61abad"
+ dependencies:
+ cipher-base "^1.0.1"
+ inherits "^2.0.1"
+ ripemd160 "^1.0.0"
+ sha.js "^2.3.6"
+
+create-hmac@^1.1.0, create-hmac@^1.1.2:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.4.tgz#d3fb4ba253eb8b3f56e39ea2fbcb8af747bd3170"
+ dependencies:
+ create-hash "^1.1.0"
+ inherits "^2.0.1"
+
+crypt@~0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.1.tgz#5f11b21a6c05ef1b5e79708366da6374ece1e6a2"
+
+cryptiles@2.x.x:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
+ dependencies:
+ boom "2.x.x"
+
+crypto-browserify@^3.11.0:
+ version "3.11.0"
+ resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.11.0.tgz#3652a0906ab9b2a7e0c3ce66a408e957a2485522"
+ dependencies:
+ browserify-cipher "^1.0.0"
+ browserify-sign "^4.0.0"
+ create-ecdh "^4.0.0"
+ create-hash "^1.1.0"
+ create-hmac "^1.1.0"
+ diffie-hellman "^5.0.0"
+ inherits "^2.0.1"
+ pbkdf2 "^3.0.3"
+ public-encrypt "^4.0.0"
+ randombytes "^2.0.0"
+
+css-color-names@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/css-color-names/-/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
+
+css-loader@^0.25.0:
+ version "0.25.0"
+ resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-0.25.0.tgz#c3febc8ce28f4c83576b6b13707f47f90c390223"
+ dependencies:
+ babel-code-frame "^6.11.0"
+ css-selector-tokenizer "^0.6.0"
+ cssnano ">=2.6.1 <4"
+ loader-utils "~0.2.2"
+ lodash.camelcase "^3.0.1"
+ object-assign "^4.0.1"
+ postcss "^5.0.6"
+ postcss-modules-extract-imports "^1.0.0"
+ postcss-modules-local-by-default "^1.0.1"
+ postcss-modules-scope "^1.0.0"
+ postcss-modules-values "^1.1.0"
+ source-list-map "^0.1.4"
+
+css-select@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858"
+ dependencies:
+ boolbase "~1.0.0"
+ css-what "2.1"
+ domutils "1.5.1"
+ nth-check "~1.0.1"
+
+css-selector-tokenizer@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.6.0.tgz#6445f582c7930d241dcc5007a43d6fcb8f073152"
+ dependencies:
+ cssesc "^0.1.0"
+ fastparse "^1.1.1"
+ regexpu-core "^1.0.0"
+
+css-selector-tokenizer@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz#e6988474ae8c953477bf5e7efecfceccd9cf4c86"
+ dependencies:
+ cssesc "^0.1.0"
+ fastparse "^1.1.1"
+ regexpu-core "^1.0.0"
+
+css-what@2.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.0.tgz#9467d032c38cfaefb9f2d79501253062f87fa1bd"
+
+cssauron@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8"
+ dependencies:
+ through X.X.X
+
+cssesc@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-0.1.0.tgz#c814903e45623371a0477b40109aaafbeeaddbb4"
+
+"cssnano@>=2.6.1 <4":
+ version "3.8.0"
+ resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-3.8.0.tgz#bb90ac5292f42b679d9a05f6da0e9697556bb80d"
+ dependencies:
+ autoprefixer "^6.3.1"
+ decamelize "^1.1.2"
+ defined "^1.0.0"
+ has "^1.0.1"
+ object-assign "^4.0.1"
+ postcss "^5.0.14"
+ postcss-calc "^5.2.0"
+ postcss-colormin "^2.1.8"
+ postcss-convert-values "^2.3.4"
+ postcss-discard-comments "^2.0.4"
+ postcss-discard-duplicates "^2.0.1"
+ postcss-discard-empty "^2.0.1"
+ postcss-discard-overridden "^0.1.1"
+ postcss-discard-unused "^2.2.1"
+ postcss-filter-plugins "^2.0.0"
+ postcss-merge-idents "^2.1.5"
+ postcss-merge-longhand "^2.0.1"
+ postcss-merge-rules "^2.0.3"
+ postcss-minify-font-values "^1.0.2"
+ postcss-minify-gradients "^1.0.1"
+ postcss-minify-params "^1.0.4"
+ postcss-minify-selectors "^2.0.4"
+ postcss-normalize-charset "^1.1.0"
+ postcss-normalize-url "^3.0.7"
+ postcss-ordered-values "^2.1.0"
+ postcss-reduce-idents "^2.2.2"
+ postcss-reduce-initial "^1.0.0"
+ postcss-reduce-transforms "^1.0.3"
+ postcss-svgo "^2.1.1"
+ postcss-unique-selectors "^2.0.2"
+ postcss-value-parser "^3.2.3"
+ postcss-zindex "^2.0.1"
+
+csso@~2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/csso/-/csso-2.2.1.tgz#51fbb5347e50e81e6ed51668a48490ae6fe2afe2"
+ dependencies:
+ clap "^1.0.9"
+ source-map "^0.5.3"
+
+currently-unhandled@^0.4.1:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
+ dependencies:
+ array-find-index "^1.0.1"
+
+custom-event@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425"
+
+dashdash@^1.12.0:
+ version "1.14.0"
+ resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.0.tgz#29e486c5418bf0f356034a993d51686a33e84141"
+ dependencies:
+ assert-plus "^1.0.0"
+
+date-now@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
+
+dateformat@^1.0.11, dateformat@^1.0.6:
+ version "1.0.12"
+ resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9"
+ dependencies:
+ get-stdin "^4.0.1"
+ meow "^3.3.0"
+
+debug@^2.2.0, debug@~2.2.0, debug@2, debug@2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-2.2.0.tgz#f87057e995b1a1f6ae6a4960664137bc56f039da"
+ dependencies:
+ ms "0.7.1"
+
+debug@0.7.4:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-0.7.4.tgz#06e1ea8082c2cb14e39806e22e2f6f757f92af39"
+
+decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
+
+deep-extend@~0.4.0:
+ version "0.4.1"
+ resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.1.tgz#efe4113d08085f4e6f9687759810f807469e2253"
+
+deep-is@~0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
+
+defined@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693"
+
+del@^2.2.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8"
+ dependencies:
+ globby "^5.0.0"
+ is-path-cwd "^1.0.0"
+ is-path-in-cwd "^1.0.0"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ rimraf "^2.2.8"
+
+delayed-stream@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
+
+delegates@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
+
+depd@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.0.tgz#e1bd82c6aab6ced965b97b88b17ed3e528ca18c3"
+
+des.js@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc"
+ dependencies:
+ inherits "^2.0.1"
+ minimalistic-assert "^1.0.0"
+
+destroy@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80"
+
+detect-indent@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208"
+ dependencies:
+ repeating "^2.0.0"
+
+di@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c"
+
+diff@^2.2.1:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99"
+
+diffie-hellman@^5.0.0:
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e"
+ dependencies:
+ bn.js "^4.1.0"
+ miller-rabin "^4.0.0"
+ randombytes "^2.0.0"
+
+dom-converter@~0.1:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.1.4.tgz#a45ef5727b890c9bffe6d7c876e7b19cb0e17f3b"
+ dependencies:
+ utila "~0.3"
+
+dom-serialize@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b"
+ dependencies:
+ custom-event "~1.0.0"
+ ent "~2.2.0"
+ extend "^3.0.0"
+ void-elements "^2.0.0"
+
+dom-serializer@0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.0.tgz#073c697546ce0780ce23be4a28e293e40bc30c82"
+ dependencies:
+ domelementtype "~1.1.1"
+ entities "~1.1.1"
+
+domain-browser@^1.1.1:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.1.7.tgz#867aa4b093faa05f1de08c06f4d7b21fdf8698bc"
+
+domelementtype@~1.1.1:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.1.3.tgz#bd28773e2642881aec51544924299c5cd822185b"
+
+domelementtype@1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.0.tgz#b17aed82e8ab59e52dd9c19b1756e0fc187204c2"
+
+domhandler@2.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.1.0.tgz#d2646f5e57f6c3bab11cf6cb05d3c0acf7412594"
+ dependencies:
+ domelementtype "1"
+
+domutils@1.1:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.1.6.tgz#bddc3de099b9a2efacc51c623f28f416ecc57485"
+ dependencies:
+ domelementtype "1"
+
+domutils@1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
+ dependencies:
+ dom-serializer "0"
+ domelementtype "1"
+
+dot-case@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.0.tgz#4b43dd0d7403c34cb645424add397e80bfe85ca6"
+ dependencies:
+ no-case "^2.2.0"
+
+duplexer2@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db"
+ dependencies:
+ readable-stream "~1.1.9"
+
+ecc-jsbn@~0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
+ dependencies:
+ jsbn "~0.1.0"
+
+ecstatic@^1.4.0:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/ecstatic/-/ecstatic-1.4.1.tgz#32cb7b6fa2e290d58668674d115e8f0c3d567d6a"
+ dependencies:
+ he "^0.5.0"
+ mime "^1.2.11"
+ minimist "^1.1.0"
+ url-join "^1.0.0"
+
+ee-first@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
+
+elliptic@^6.0.0:
+ version "6.3.2"
+ resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.2.tgz#e4c81e0829cf0a65ab70e998b8232723b5c1bc48"
+ dependencies:
+ bn.js "^4.4.0"
+ brorand "^1.0.1"
+ hash.js "^1.0.0"
+ inherits "^2.0.1"
+
+emojis-list@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389"
+
+encodeurl@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20"
+
+engine.io-client@1.6.9:
+ version "1.6.9"
+ resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-1.6.9.tgz#1d6ad48048a5083c95096943b29d36efdb212401"
+ dependencies:
+ component-emitter "1.1.2"
+ component-inherit "0.0.3"
+ debug "2.2.0"
+ engine.io-parser "1.2.4"
+ has-cors "1.1.0"
+ indexof "0.0.1"
+ parsejson "0.0.1"
+ parseqs "0.0.2"
+ parseuri "0.0.4"
+ ws "1.0.1"
+ xmlhttprequest-ssl "1.5.1"
+ yeast "0.1.2"
+
+engine.io-parser@1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-1.2.4.tgz#e0897b0bf14e792d4cd2a5950553919c56948c42"
+ dependencies:
+ after "0.8.1"
+ arraybuffer.slice "0.0.6"
+ base64-arraybuffer "0.1.2"
+ blob "0.0.4"
+ has-binary "0.1.6"
+ utf8 "2.1.0"
+
+engine.io@1.6.10:
+ version "1.6.10"
+ resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-1.6.10.tgz#f87d84e1bd21d1a2ec7f8deef0c62054acdfb27a"
+ dependencies:
+ accepts "1.1.4"
+ base64id "0.1.0"
+ debug "2.2.0"
+ engine.io-parser "1.2.4"
+ ws "1.0.1"
+
+enhanced-resolve@^2.2.0, enhanced-resolve@^2.2.2:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-2.3.0.tgz#a115c32504b6302e85a76269d7a57ccdd962e359"
+ dependencies:
+ graceful-fs "^4.1.2"
+ memory-fs "^0.3.0"
+ object-assign "^4.0.1"
+ tapable "^0.2.3"
+
+ent@~2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d"
+
+entities@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.1.tgz#6e5c2d0a5621b5dadaecef80b90edfb5cd7772f0"
+
+errno@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.4.tgz#b896e23a9e5e8ba33871fc996abd3635fc9a1c7d"
+ dependencies:
+ prr "~0.0.0"
+
+error-ex@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.0.tgz#e67b43f3e82c96ea3a584ffee0b9fc3325d802d9"
+ dependencies:
+ is-arrayish "^0.2.1"
+
+escape-html@~1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
+
+escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.3:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
+
+escodegen@1.8.x:
+ version "1.8.1"
+ resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018"
+ dependencies:
+ esprima "^2.7.1"
+ estraverse "^1.9.1"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.2.0"
+
+esprima@^2.6.0, esprima@^2.7.1, esprima@2.7.x:
+ version "2.7.3"
+ resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581"
+
+estraverse@^1.9.1:
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44"
+
+esutils@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b"
+
+etag@~1.7.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/etag/-/etag-1.7.0.tgz#03d30b5f67dd6e632d2945d30d6652731a34d5d8"
+
+eventemitter3@1.x.x:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-1.2.0.tgz#1c86991d816ad1e504750e73874224ecf3bec508"
+
+events@^1.0.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
+
+eventsource@~0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-0.1.6.tgz#0acede849ed7dd1ccc32c811bb11b944d4f29232"
+ dependencies:
+ original ">=0.0.5"
+
+evp_bytestokey@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz#497b66ad9fef65cd7c08a6180824ba1476b66e53"
+ dependencies:
+ create-hash "^1.1.1"
+
+execSync@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/execSync/-/execSync-1.0.2.tgz#1f42eda582225180053224ecdd3fd1960fdb3139"
+ dependencies:
+ temp "~0.5.1"
+
+exit@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
+
+expand-braces@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/expand-braces/-/expand-braces-0.1.2.tgz#488b1d1d2451cb3d3a6b192cfc030f44c5855fea"
+ dependencies:
+ array-slice "^0.2.3"
+ array-unique "^0.2.1"
+ braces "^0.1.2"
+
+expand-brackets@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
+ dependencies:
+ is-posix-bracket "^0.1.0"
+
+expand-range@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-0.1.1.tgz#4cb8eda0993ca56fa4f41fc42f3cbb4ccadff044"
+ dependencies:
+ is-number "^0.1.1"
+ repeat-string "^0.2.2"
+
+expand-range@^1.8.1:
+ version "1.8.2"
+ resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
+ dependencies:
+ fill-range "^2.1.0"
+
+exports-loader@^0.6.3:
+ version "0.6.3"
+ resolved "https://registry.yarnpkg.com/exports-loader/-/exports-loader-0.6.3.tgz#57dc78917f709b96f247fa91e69b554c855013c8"
+ dependencies:
+ loader-utils "0.2.x"
+ source-map "0.1.x"
+
+expose-loader@^0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/expose-loader/-/expose-loader-0.7.1.tgz#411ee89443aa682f8ea9d9111accf41bfd7e94d9"
+
+express@^4.13.3:
+ version "4.14.0"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.14.0.tgz#c1ee3f42cdc891fb3dc650a8922d51ec847d0d66"
+ dependencies:
+ accepts "~1.3.3"
+ array-flatten "1.1.1"
+ content-disposition "0.5.1"
+ content-type "~1.0.2"
+ cookie "0.3.1"
+ cookie-signature "1.0.6"
+ debug "~2.2.0"
+ depd "~1.1.0"
+ encodeurl "~1.0.1"
+ escape-html "~1.0.3"
+ etag "~1.7.0"
+ finalhandler "0.5.0"
+ fresh "0.3.0"
+ merge-descriptors "1.0.1"
+ methods "~1.1.2"
+ on-finished "~2.3.0"
+ parseurl "~1.3.1"
+ path-to-regexp "0.1.7"
+ proxy-addr "~1.1.2"
+ qs "6.2.0"
+ range-parser "~1.2.0"
+ send "0.14.1"
+ serve-static "~1.11.1"
+ type-is "~1.6.13"
+ utils-merge "1.0.0"
+ vary "~1.1.0"
+
+extend@^3.0.0, extend@~3.0.0, extend@3:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.0.tgz#5a474353b9f3353ddd8176dfd37b91c83a46f1d4"
+
+extglob@^0.3.1:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
+ dependencies:
+ is-extglob "^1.0.0"
+
+extsprintf@1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.0.2.tgz#e1080e0658e300b06294990cc70e1502235fd550"
+
+fancy-log@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.2.0.tgz#d5a51b53e9ab22ca07d558f2b67ae55fdb5fcbd8"
+ dependencies:
+ chalk "^1.1.1"
+ time-stamp "^1.0.0"
+
+fast-levenshtein@~2.0.4:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.5.tgz#bd33145744519ab1c36c3ee9f31f08e9079b67f2"
+
+fastparse@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.1.tgz#d1e2643b38a94d7583b479060e6c4affc94071f8"
+
+faye-websocket@^0.10.0:
+ version "0.10.0"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.10.0.tgz#4e492f8d04dfb6f89003507f6edbf2d501e7c6f4"
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+faye-websocket@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.0.tgz#d9ccf0e789e7db725d74bc4877d23aa42972ac50"
+ dependencies:
+ websocket-driver ">=0.5.1"
+
+file-loader@^0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-0.9.0.tgz#1d2daddd424ce6d1b07cfe3f79731bed3617ab42"
+ dependencies:
+ loader-utils "~0.2.5"
+
+filename-regex@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.0.tgz#996e3e80479b98b9897f15a8a58b3d084e926775"
+
+fill-range@^2.1.0:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
+ dependencies:
+ is-number "^2.1.0"
+ isobject "^2.0.0"
+ randomatic "^1.1.3"
+ repeat-element "^1.1.2"
+ repeat-string "^1.5.2"
+
+finalhandler@0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-0.5.0.tgz#e9508abece9b6dba871a6942a1d7911b91911ac7"
+ dependencies:
+ debug "~2.2.0"
+ escape-html "~1.0.3"
+ on-finished "~2.3.0"
+ statuses "~1.3.0"
+ unpipe "~1.0.0"
+
+find-up@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f"
+ dependencies:
+ path-exists "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+findup-sync@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16"
+ dependencies:
+ glob "~5.0.0"
+
+flatten@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
+
+for-in@^0.1.5:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.6.tgz#c9f96e89bfad18a545af5ec3ed352a1d9e5b4dc8"
+
+for-own@^0.1.3:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.4.tgz#0149b41a39088c7515f51ebe1c1386d45f935072"
+ dependencies:
+ for-in "^0.1.5"
+
+forever-agent@~0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
+
+form-data@~2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.1.tgz#4adf0342e1a79afa1e84c8c320a9ffc82392a1f3"
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.5"
+ mime-types "^2.1.12"
+
+forwarded@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.0.tgz#19ef9874c4ae1c297bcf078fde63a09b66a84363"
+
+fresh@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.3.0.tgz#651f838e22424e7566de161d8358caa199f83d4f"
+
+fs-access@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/fs-access/-/fs-access-1.0.1.tgz#d6a87f262271cefebec30c553407fb995da8777a"
+ dependencies:
+ null-check "^1.0.0"
+
+fs-extra@^0.26.4:
+ version "0.26.7"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.26.7.tgz#9ae1fdd94897798edab76d0918cf42d0c3184fa9"
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^2.1.0"
+ klaw "^1.0.0"
+ path-is-absolute "^1.0.0"
+ rimraf "^2.2.8"
+
+fs-extra@^0.30.0:
+ version "0.30.0"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0"
+ dependencies:
+ graceful-fs "^4.1.2"
+ jsonfile "^2.1.0"
+ klaw "^1.0.0"
+ path-is-absolute "^1.0.0"
+ rimraf "^2.2.8"
+
+fs.realpath@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
+
+fsevents@^1.0.0:
+ version "1.0.14"
+ resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.0.14.tgz#558e8cc38643d8ef40fe45158486d0d25758eee4"
+ dependencies:
+ nan "^2.3.0"
+ node-pre-gyp "^0.6.29"
+
+fstream-ignore@~1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
+ dependencies:
+ fstream "^1.0.0"
+ inherits "2"
+ minimatch "^3.0.0"
+
+fstream@^1.0.0, fstream@^1.0.2, fstream@~1.0.10:
+ version "1.0.10"
+ resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.10.tgz#604e8a92fe26ffd9f6fae30399d4984e1ab22822"
+ dependencies:
+ graceful-fs "^4.1.2"
+ inherits "~2.0.0"
+ mkdirp ">=0.5 0"
+ rimraf "2"
+
+function-bind@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.0.tgz#16176714c801798e4e8f2cf7f7529467bb4a5771"
+
+gauge@~2.6.0:
+ version "2.6.0"
+ resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.6.0.tgz#d35301ad18e96902b4751dcbbe40f4218b942a46"
+ dependencies:
+ aproba "^1.0.3"
+ console-control-strings "^1.0.0"
+ has-color "^0.1.7"
+ has-unicode "^2.0.0"
+ object-assign "^4.1.0"
+ signal-exit "^3.0.0"
+ string-width "^1.0.1"
+ strip-ansi "^3.0.1"
+ wide-align "^1.1.0"
+
+generate-function@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/generate-function/-/generate-function-2.0.0.tgz#6858fe7c0969b7d4e9093337647ac79f60dfbe74"
+
+generate-object-property@^1.1.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/generate-object-property/-/generate-object-property-1.2.0.tgz#9c0e1c40308ce804f4783618b937fa88f99d50d0"
+ dependencies:
+ is-property "^1.0.0"
+
+get-caller-file@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5"
+
+get-stdin@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe"
+
+getpass@^0.1.1:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.6.tgz#283ffd9fc1256840875311c1b60e8c40187110e6"
+ dependencies:
+ assert-plus "^1.0.0"
+
+gh-pages@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/gh-pages/-/gh-pages-0.11.0.tgz#93313c6dcbfc74d426bc89a29ebff6420acc3c1b"
+ dependencies:
+ async "1.5.2"
+ commander "2.9.0"
+ globby "^4.0.0"
+ graceful-fs "4.1.2"
+ q "1.4.1"
+ q-io "1.13.2"
+ wrench "1.5.8"
+
+glob-base@^0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
+ dependencies:
+ glob-parent "^2.0.0"
+ is-glob "^2.0.0"
+
+glob-parent@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
+ dependencies:
+ is-glob "^2.0.0"
+
+glob@^5.0.15, glob@~5.0.0:
+ version "5.0.15"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1"
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^6.0.1, glob@^6.0.4:
+ version "6.0.4"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22"
+ dependencies:
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "2 || 3"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.0.6:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8"
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.0.2"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+globals@^9.0.0:
+ version "9.12.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-9.12.0.tgz#992ce90828c3a55fa8f16fada177adb64664cf9d"
+
+globby@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-4.1.0.tgz#080f54549ec1b82a6c60e631fc82e1211dbe95f8"
+ dependencies:
+ array-union "^1.0.1"
+ arrify "^1.0.0"
+ glob "^6.0.1"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+globby@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d"
+ dependencies:
+ array-union "^1.0.1"
+ arrify "^1.0.0"
+ glob "^7.0.3"
+ object-assign "^4.0.1"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+glogg@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.0.tgz#7fe0f199f57ac906cf512feead8f90ee4a284fc5"
+ dependencies:
+ sparkles "^1.0.0"
+
+graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
+ version "4.1.9"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.9.tgz#baacba37d19d11f9d146d3578bc99958c3787e29"
+
+graceful-fs@~1:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364"
+
+graceful-fs@4.1.2:
+ version "4.1.2"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.2.tgz#fe2239b7574972e67e41f808823f9bfa4a991e37"
+
+"graceful-readlink@>= 1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"
+
+gulp-util@3.0.7:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.7.tgz#78925c4b8f8b49005ac01a011c557e6218941cbb"
+ dependencies:
+ array-differ "^1.0.0"
+ array-uniq "^1.0.2"
+ beeper "^1.0.0"
+ chalk "^1.0.0"
+ dateformat "^1.0.11"
+ fancy-log "^1.1.0"
+ gulplog "^1.0.0"
+ has-gulplog "^0.1.0"
+ lodash._reescape "^3.0.0"
+ lodash._reevaluate "^3.0.0"
+ lodash._reinterpolate "^3.0.0"
+ lodash.template "^3.0.0"
+ minimist "^1.1.0"
+ multipipe "^0.1.2"
+ object-assign "^3.0.0"
+ replace-ext "0.0.1"
+ through2 "^2.0.0"
+ vinyl "^0.5.0"
+
+gulplog@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5"
+ dependencies:
+ glogg "^1.0.0"
+
+handle-thing@^1.2.4:
+ version "1.2.5"
+ resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-1.2.5.tgz#fd7aad726bf1a5fd16dfc29b2f7a6601d27139c4"
+
+handlebars@^4.0.1, handlebars@4.0.5:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.0.5.tgz#92c6ed6bb164110c50d4d8d0fbddc70806c6f8e7"
+ dependencies:
+ async "^1.4.0"
+ optimist "^0.6.1"
+ source-map "^0.4.4"
+ optionalDependencies:
+ uglify-js "^2.6"
+
+har-validator@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-2.0.6.tgz#cdcbc08188265ad119b6a5a7c8ab70eecfb5d27d"
+ dependencies:
+ chalk "^1.1.1"
+ commander "^2.9.0"
+ is-my-json-valid "^2.12.4"
+ pinkie-promise "^2.0.0"
+
+has-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
+ dependencies:
+ ansi-regex "^2.0.0"
+
+has-binary@0.1.6:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.6.tgz#25326f39cfa4f616ad8787894e3af2cfbc7b6e10"
+ dependencies:
+ isarray "0.0.1"
+
+has-binary@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/has-binary/-/has-binary-0.1.7.tgz#68e61eb16210c9545a0a5cce06a873912fe1e68c"
+ dependencies:
+ isarray "0.0.1"
+
+has-color@^0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f"
+
+has-cors@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/has-cors/-/has-cors-1.1.0.tgz#5e474793f7ea9843d1bb99c23eef49ff126fff39"
+
+has-flag@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
+
+has-gulplog@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce"
+ dependencies:
+ sparkles "^1.0.0"
+
+has-unicode@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
+
+has@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has/-/has-1.0.1.tgz#8461733f538b0837c9361e39a9ab9e9704dc2f28"
+ dependencies:
+ function-bind "^1.0.2"
+
+hash.js@^1.0.0:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.0.3.tgz#1332ff00156c0a0ffdd8236013d07b77a0451573"
+ dependencies:
+ inherits "^2.0.1"
+
+hawk@~3.1.3:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
+ dependencies:
+ boom "2.x.x"
+ cryptiles "2.x.x"
+ hoek "2.x.x"
+ sntp "1.x.x"
+
+he@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/he/-/he-0.5.0.tgz#2c05ffaef90b68e860f3fd2b54ef580989277ee2"
+
+he@1.1.x:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/he/-/he-1.1.0.tgz#29319d49beec13a9b1f3c4f9b2a6dde4859bb2a7"
+
+header-case@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.0.tgz#d9e335909505d56051ec16a0106821889e910781"
+ dependencies:
+ no-case "^2.2.0"
+ upper-case "^1.1.3"
+
+highlight.js@^9.0.0:
+ version "9.7.0"
+ resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.7.0.tgz#e7a926bf3079c65b2ae50314878e456a009b4aac"
+
+hoek@2.x.x:
+ version "2.16.3"
+ resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
+
+hosted-git-info@^2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.1.5.tgz#0ba81d90da2e25ab34a332e6ec77936e1598118b"
+
+hpack.js@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
+ dependencies:
+ inherits "^2.0.1"
+ obuf "^1.0.0"
+ readable-stream "^2.0.1"
+ wbuf "^1.1.0"
+
+html-comment-regex@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/html-comment-regex/-/html-comment-regex-1.1.1.tgz#668b93776eaae55ebde8f3ad464b307a4963625e"
+
+html-minifier@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-3.1.0.tgz#e0b35d7a1fff89ae989e2fa51c572bc0d1f2d1f6"
+ dependencies:
+ change-case "3.0.x"
+ clean-css "3.4.x"
+ commander "2.9.x"
+ he "1.1.x"
+ ncname "1.0.x"
+ relateurl "0.2.x"
+ uglify-js "2.7.x"
+
+html-webpack-plugin@^2.21.0:
+ version "2.24.0"
+ resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-2.24.0.tgz#53697cea79a9f3cd1f8c239ac71f949d5673cacb"
+ dependencies:
+ bluebird "^3.4.6"
+ html-minifier "^3.1.0"
+ loader-utils "^0.2.16"
+ lodash "^4.16.4"
+ pretty-error "^2.0.2"
+ toposort "^1.0.0"
+
+htmlparser2@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.3.0.tgz#cc70d05a59f6542e43f0e685c982e14c924a9efe"
+ dependencies:
+ domelementtype "1"
+ domhandler "2.1"
+ domutils "1.1"
+ readable-stream "1.0"
+
+http-browserify@^1.3.2:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/http-browserify/-/http-browserify-1.7.0.tgz#33795ade72df88acfbfd36773cefeda764735b20"
+ dependencies:
+ Base64 "~0.2.0"
+ inherits "~2.0.1"
+
+http-deceiver@^1.2.4:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
+
+http-errors@~1.5.0:
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.5.0.tgz#b1cb3d8260fd8e2386cad3189045943372d48211"
+ dependencies:
+ inherits "2.0.1"
+ setprototypeof "1.0.1"
+ statuses ">= 1.3.0 < 2"
+
+http-proxy-middleware@~0.17.1:
+ version "0.17.2"
+ resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.17.2.tgz#572d517a6d2fb1063a469de294eed96066352007"
+ dependencies:
+ http-proxy "^1.15.1"
+ is-glob "^3.0.0"
+ lodash "^4.16.2"
+ micromatch "^2.3.11"
+
+http-proxy@^1.13.0, http-proxy@^1.15.1, http-proxy@^1.8.1:
+ version "1.15.2"
+ resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.15.2.tgz#642fdcaffe52d3448d2bda3b0079e9409064da31"
+ dependencies:
+ eventemitter3 "1.x.x"
+ requires-port "1.x.x"
+
+http-server@^0.9.0:
+ version "0.9.0"
+ resolved "https://registry.yarnpkg.com/http-server/-/http-server-0.9.0.tgz#8f1b06bdc733618d4dc42831c7ba1aff4e06001a"
+ dependencies:
+ colors "1.0.3"
+ corser "~2.0.0"
+ ecstatic "^1.4.0"
+ http-proxy "^1.8.1"
+ opener "~1.4.0"
+ optimist "0.6.x"
+ portfinder "0.4.x"
+ union "~0.4.3"
+
+http-signature@~1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
+ dependencies:
+ assert-plus "^0.2.0"
+ jsprim "^1.2.2"
+ sshpk "^1.7.0"
+
+https-browserify@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-0.0.1.tgz#3f91365cabe60b77ed0ebba24b454e3e09d95a82"
+
+https-proxy-agent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz#35f7da6c48ce4ddbfa264891ac593ee5ff8671e6"
+ dependencies:
+ agent-base "2"
+ debug "2"
+ extend "3"
+
+iconv-lite@0.4.13:
+ version "0.4.13"
+ resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.13.tgz#1f88aba4ab0b1508e8312acc39345f36e992e2f2"
+
+icss-replace-symbols@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.0.2.tgz#cb0b6054eb3af6edc9ab1d62d01933e2d4c8bfa5"
+
+ie-shim@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/ie-shim/-/ie-shim-0.1.0.tgz#d329de228e7dfe656feaea3e20748ef095363c5d"
+
+ieee754@^1.1.4:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4"
+
+imports-loader@^0.6.5:
+ version "0.6.5"
+ resolved "https://registry.yarnpkg.com/imports-loader/-/imports-loader-0.6.5.tgz#ae74653031d59e37b3c2fb2544ac61aeae3530a6"
+ dependencies:
+ loader-utils "0.2.x"
+ source-map "0.1.x"
+
+indent-string@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80"
+ dependencies:
+ repeating "^2.0.0"
+
+indexes-of@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
+
+indexof@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d"
+
+inflight@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
+ dependencies:
+ once "^1.3.0"
+ wrappy "1"
+
+inherits@^2.0.1, inherits@~2.0.0, inherits@~2.0.1, inherits@2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+
+inherits@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1"
+
+ini@^1.3.4, ini@~1.3.0:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.4.tgz#0537cb79daf59b59a1a517dff706c86ec039162e"
+
+interpret@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.1.tgz#d579fb7f693b858004947af39fa0db49f795602c"
+
+invariant@^2.2.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.1.tgz#b097010547668c7e337028ebe816ebe36c8a8d54"
+ dependencies:
+ loose-envify "^1.0.0"
+
+invert-kv@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6"
+
+ipaddr.js@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.1.1.tgz#c791d95f52b29c1247d5df80ada39b8a73647230"
+
+is-absolute-url@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.0.0.tgz#9c4b20b0e5c0cbef9a479a367ede6f991679f359"
+
+is-arrayish@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
+
+is-binary-path@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+ dependencies:
+ binary-extensions "^1.0.0"
+
+is-buffer@^1.0.2, is-buffer@~1.1.1:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.4.tgz#cfc86ccd5dc5a52fa80489111c6920c457e2d98b"
+
+is-builtin-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-1.0.0.tgz#540572d34f7ac3119f8f76c30cbc1b1e037affbe"
+ dependencies:
+ builtin-modules "^1.0.0"
+
+is-dotfile@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.2.tgz#2c132383f39199f8edc268ca01b9b007d205cc4d"
+
+is-equal-shallow@^0.1.3:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
+ dependencies:
+ is-primitive "^2.0.0"
+
+is-extendable@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
+
+is-extglob@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
+
+is-extglob@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.0.tgz#33411a482b046bf95e6b0cb27ee2711af4cf15ad"
+
+is-finite@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa"
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-fullwidth-code-point@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb"
+ dependencies:
+ number-is-nan "^1.0.0"
+
+is-glob@^2.0.0, is-glob@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863"
+ dependencies:
+ is-extglob "^1.0.0"
+
+is-glob@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
+ dependencies:
+ is-extglob "^2.1.0"
+
+is-lower-case@^1.1.0:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393"
+ dependencies:
+ lower-case "^1.1.0"
+
+is-my-json-valid@^2.12.4:
+ version "2.15.0"
+ resolved "https://registry.yarnpkg.com/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz#936edda3ca3c211fd98f3b2d3e08da43f7b2915b"
+ dependencies:
+ generate-function "^2.0.0"
+ generate-object-property "^1.1.0"
+ jsonpointer "^4.0.0"
+ xtend "^4.0.0"
+
+is-number@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806"
+
+is-number@^2.0.2, is-number@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
+ dependencies:
+ kind-of "^3.0.2"
+
+is-path-cwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
+
+is-path-in-cwd@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz#6477582b8214d602346094567003be8a9eac04dc"
+ dependencies:
+ is-path-inside "^1.0.0"
+
+is-path-inside@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.0.tgz#fc06e5a1683fbda13de667aff717bbc10a48f37f"
+ dependencies:
+ path-is-inside "^1.0.1"
+
+is-plain-obj@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
+
+is-posix-bracket@^0.1.0:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
+
+is-primitive@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
+
+is-property@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/is-property/-/is-property-1.0.2.tgz#57fe1c4e48474edd65b09911f26b1cd4095dda84"
+
+is-svg@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-2.0.1.tgz#f93ab3bf1d6bbca30e9753cd3485b1300eebc013"
+ dependencies:
+ html-comment-regex "^1.1.0"
+
+is-typedarray@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
+
+is-upper-case@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f"
+ dependencies:
+ upper-case "^1.1.0"
+
+is-utf8@^0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
+
+isarray@^1.0.0, isarray@~1.0.0, isarray@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
+
+isarray@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
+
+isbinaryfile@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.1.tgz#6e99573675372e841a0520c036b41513d783e79e"
+
+isexe@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/isexe/-/isexe-1.1.2.tgz#36f3e22e60750920f5e7241a476a8c6a42275ad0"
+
+isobject@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
+ dependencies:
+ isarray "1.0.0"
+
+isstream@~0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
+
+istanbul-instrumenter-loader@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-1.0.0.tgz#ed87446a3a72af342e00521e81b189eb9763d781"
+ dependencies:
+ istanbul-lib-instrument "^1.1.3"
+ loader-utils "^0.2.16"
+ object-assign "^4.1.0"
+
+istanbul-lib-coverage@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.0.0.tgz#c3f9b6d226da12424064cce87fce0fb57fdfa7a2"
+
+istanbul-lib-instrument@^1.1.3:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-1.2.0.tgz#73d5d108ab7568c373fdcb7d01c1d42d565bc8c4"
+ dependencies:
+ babel-generator "^6.18.0"
+ babel-template "^6.16.0"
+ babel-traverse "^6.18.0"
+ babel-types "^6.18.0"
+ babylon "^6.13.0"
+ istanbul-lib-coverage "^1.0.0"
+ semver "^5.3.0"
+
+istanbul@^0.4.0, istanbul@0.4.5:
+ version "0.4.5"
+ resolved "https://registry.yarnpkg.com/istanbul/-/istanbul-0.4.5.tgz#65c7d73d4c4da84d4f3ac310b918fb0b8033733b"
+ dependencies:
+ abbrev "1.0.x"
+ async "1.x"
+ escodegen "1.8.x"
+ esprima "2.7.x"
+ glob "^5.0.15"
+ handlebars "^4.0.1"
+ js-yaml "3.x"
+ mkdirp "0.5.x"
+ nopt "3.x"
+ once "1.x"
+ resolve "1.1.x"
+ supports-color "^3.1.0"
+ which "^1.1.1"
+ wordwrap "^1.0.0"
+
+jasmine-core@~2.5.2:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.5.2.tgz#6f61bd79061e27f43e6f9355e44b3c6cab6ff297"
+
+jasmine@2.5.2:
+ version "2.5.2"
+ resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.5.2.tgz#6283cef7085c095cc25d651e954df004f7e3e421"
+ dependencies:
+ exit "^0.1.2"
+ glob "^7.0.6"
+ jasmine-core "~2.5.2"
+
+jasminewd2@0.0.10:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-0.0.10.tgz#94f48ae2bc946cad643035467b4bb7ea9c1075ef"
+
+jodid25519@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/jodid25519/-/jodid25519-1.0.2.tgz#06d4912255093419477d425633606e0e90782967"
+ dependencies:
+ jsbn "~0.1.0"
+
+js-base64@^2.1.9:
+ version "2.1.9"
+ resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.1.9.tgz#f0e80ae039a4bd654b5f281fc93f04a914a7fcce"
+
+js-tokens@^1.0.1:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-1.0.3.tgz#14e56eb68c8f1a92c43d59f5014ec29dc20f2ae1"
+
+js-tokens@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-2.0.0.tgz#79903f5563ee778cc1162e6dcf1a0027c97f9cb5"
+
+js-yaml@~3.6.1, js-yaml@3.x:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.6.1.tgz#6e5fe67d8b205ce4d22fad05b7781e8dadcc4b30"
+ dependencies:
+ argparse "^1.0.7"
+ esprima "^2.6.0"
+
+jsbn@~0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.0.tgz#650987da0dd74f4ebf5a11377a2aa2d273e97dfd"
+
+jsesc@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b"
+
+jsesc@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
+
+json-loader@^0.5.4:
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.4.tgz#8baa1365a632f58a3c46d20175fc6002c96e37de"
+
+json-schema@0.2.3:
+ version "0.2.3"
+ resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
+
+json-stable-stringify@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
+ dependencies:
+ jsonify "~0.0.0"
+
+json-stringify-safe@~5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
+
+json3@^3.3.2, json3@3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1"
+
+json3@3.2.6:
+ version "3.2.6"
+ resolved "https://registry.yarnpkg.com/json3/-/json3-3.2.6.tgz#f6efc93c06a04de9aec53053df2559bb19e2038b"
+
+json5@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.0.tgz#9b20715b026cbe3778fd769edccd822d8332a5b2"
+
+jsonfile@^2.1.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
+ optionalDependencies:
+ graceful-fs "^4.1.6"
+
+jsonify@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
+
+jsonpointer@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.0.tgz#6661e161d2fc445f19f98430231343722e1fcbd5"
+
+jsprim@^1.2.2:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.3.1.tgz#2a7256f70412a29ee3670aaca625994c4dcff252"
+ dependencies:
+ extsprintf "1.0.2"
+ json-schema "0.2.3"
+ verror "1.3.6"
+
+karma-chrome-launcher@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-2.0.0.tgz#c2790c5a32b15577d0fff5a4d5a2703b3b439c25"
+ dependencies:
+ fs-access "^1.0.0"
+ which "^1.2.1"
+
+karma-coverage@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/karma-coverage/-/karma-coverage-1.1.1.tgz#5aff8b39cf6994dc22de4c84362c76001b637cf6"
+ dependencies:
+ dateformat "^1.0.6"
+ istanbul "^0.4.0"
+ lodash "^3.8.0"
+ minimatch "^3.0.0"
+ source-map "^0.5.1"
+
+karma-jasmine@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-1.0.2.tgz#c0b3ab327bf207db60e17fa27db37cfdef5d8e6c"
+
+karma-mocha-reporter@^2.0.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/karma-mocha-reporter/-/karma-mocha-reporter-2.2.0.tgz#20367b93f6651cd2c0d06b10d4eea3b81181fb4e"
+ dependencies:
+ chalk "1.1.3"
+
+karma-remap-coverage@^0.1.1:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/karma-remap-coverage/-/karma-remap-coverage-0.1.2.tgz#29135a4d165b8e812d5d3833cf50d662b381c88e"
+ dependencies:
+ remap-istanbul "^0.7.0"
+
+karma-sourcemap-loader@^0.3.7:
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.3.7.tgz#91322c77f8f13d46fed062b042e1009d4c4505d8"
+ dependencies:
+ graceful-fs "^4.1.2"
+
+karma-webpack@1.8.0:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-1.8.0.tgz#340c7999eb3745b47becab47d0d304dac2c55257"
+ dependencies:
+ async "~0.9.0"
+ loader-utils "^0.2.5"
+ lodash "^3.8.0"
+ source-map "^0.1.41"
+ webpack-dev-middleware "^1.0.11"
+
+karma@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/karma/-/karma-1.3.0.tgz#b2b94e8f499fadd0069d54f9aef4a4d48ec5cc1f"
+ dependencies:
+ bluebird "^3.3.0"
+ body-parser "^1.12.4"
+ chokidar "^1.4.1"
+ colors "^1.1.0"
+ combine-lists "^1.0.0"
+ connect "^3.3.5"
+ core-js "^2.2.0"
+ di "^0.0.1"
+ dom-serialize "^2.2.0"
+ expand-braces "^0.1.1"
+ glob "^7.0.3"
+ graceful-fs "^4.1.2"
+ http-proxy "^1.13.0"
+ isbinaryfile "^3.0.0"
+ lodash "^3.8.0"
+ log4js "^0.6.31"
+ mime "^1.3.4"
+ minimatch "^3.0.0"
+ optimist "^0.6.1"
+ qjobs "^1.1.4"
+ range-parser "^1.2.0"
+ rimraf "^2.3.3"
+ socket.io "1.4.7"
+ source-map "^0.5.3"
+ tmp "0.0.28"
+ useragent "^2.1.9"
+
+kind-of@^3.0.2:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.0.4.tgz#7b8ecf18a4e17f8269d73b501c9f232c96887a74"
+ dependencies:
+ is-buffer "^1.0.2"
+
+klaw@^1.0.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
+ optionalDependencies:
+ graceful-fs "^4.1.9"
+
+lazy-cache@^1.0.3:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e"
+
+lcid@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835"
+ dependencies:
+ invert-kv "^1.0.0"
+
+levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
+load-json-file@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0"
+ dependencies:
+ graceful-fs "^4.1.2"
+ parse-json "^2.2.0"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+ strip-bom "^2.0.0"
+
+loader-runner@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.2.0.tgz#824c1b699c4e7a2b6501b85902d5b862bf45b3fa"
+
+loader-utils@^0.2.11, loader-utils@^0.2.15, loader-utils@^0.2.16, loader-utils@^0.2.5, loader-utils@^0.2.6, loader-utils@^0.2.7, loader-utils@~0.2.2, loader-utils@~0.2.5, loader-utils@0.2.x:
+ version "0.2.16"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.16.tgz#f08632066ed8282835dff88dfb52704765adee6d"
+ dependencies:
+ big.js "^3.1.3"
+ emojis-list "^2.0.0"
+ json5 "^0.5.0"
+ object-assign "^4.0.1"
+
+lodash._arraycopy@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1"
+
+lodash._arrayeach@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz#bab156b2a90d3f1bbd5c653403349e5e5933ef9e"
+
+lodash._baseassign@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e"
+ dependencies:
+ lodash._basecopy "^3.0.0"
+ lodash.keys "^3.0.0"
+
+lodash._basecallback@^3.0.0:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/lodash._basecallback/-/lodash._basecallback-3.3.1.tgz#b7b2bb43dc2160424a21ccf26c57e443772a8e27"
+ dependencies:
+ lodash._baseisequal "^3.0.0"
+ lodash._bindcallback "^3.0.0"
+ lodash.isarray "^3.0.0"
+ lodash.pairs "^3.0.0"
+
+lodash._basecopy@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36"
+
+lodash._baseeach@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/lodash._baseeach/-/lodash._baseeach-3.0.4.tgz#cf8706572ca144e8d9d75227c990da982f932af3"
+ dependencies:
+ lodash.keys "^3.0.0"
+
+lodash._basefind@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._basefind/-/lodash._basefind-3.0.0.tgz#b2bba05cc645f972de2cf925fa2bf63a0f60c8ae"
+
+lodash._basefindindex@^3.0.0:
+ version "3.6.0"
+ resolved "https://registry.yarnpkg.com/lodash._basefindindex/-/lodash._basefindindex-3.6.0.tgz#f083360a1b022418ed81bc899beb312e21e74a4f"
+
+lodash._basefor@^3.0.0:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/lodash._basefor/-/lodash._basefor-3.0.3.tgz#7550b4e9218ef09fad24343b612021c79b4c20c2"
+
+lodash._baseisequal@^3.0.0:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/lodash._baseisequal/-/lodash._baseisequal-3.0.7.tgz#d8025f76339d29342767dcc887ce5cb95a5b51f1"
+ dependencies:
+ lodash.isarray "^3.0.0"
+ lodash.istypedarray "^3.0.0"
+ lodash.keys "^3.0.0"
+
+lodash._basetostring@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5"
+
+lodash._basevalues@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7"
+
+lodash._bindcallback@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e"
+
+lodash._createassigner@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/lodash._createassigner/-/lodash._createassigner-3.1.1.tgz#838a5bae2fdaca63ac22dee8e19fa4e6d6970b11"
+ dependencies:
+ lodash._bindcallback "^3.0.0"
+ lodash._isiterateecall "^3.0.0"
+ lodash.restparam "^3.0.0"
+
+lodash._createcompounder@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._createcompounder/-/lodash._createcompounder-3.0.0.tgz#5dd2cb55372d6e70e0e2392fb2304d6631091075"
+ dependencies:
+ lodash.deburr "^3.0.0"
+ lodash.words "^3.0.0"
+
+lodash._getnative@^3.0.0:
+ version "3.9.1"
+ resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5"
+
+lodash._isiterateecall@^3.0.0:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c"
+
+lodash._reescape@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a"
+
+lodash._reevaluate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed"
+
+lodash._reinterpolate@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d"
+
+lodash._root@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692"
+
+lodash.assign@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-3.2.0.tgz#3ce9f0234b4b2223e296b8fa0ac1fee8ebca64fa"
+ dependencies:
+ lodash._baseassign "^3.0.0"
+ lodash._createassigner "^3.0.0"
+ lodash.keys "^3.0.0"
+
+lodash.assign@^4.0.3, lodash.assign@^4.0.6:
+ version "4.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7"
+
+lodash.camelcase@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-3.0.1.tgz#932c8b87f8a4377897c67197533282f97aeac298"
+ dependencies:
+ lodash._createcompounder "^3.0.0"
+
+lodash.deburr@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.deburr/-/lodash.deburr-3.2.0.tgz#6da8f54334a366a7cf4c4c76ef8d80aa1b365ed5"
+ dependencies:
+ lodash._root "^3.0.0"
+
+lodash.escape@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698"
+ dependencies:
+ lodash._root "^3.0.0"
+
+lodash.find@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-3.2.1.tgz#046e319f3ace912ac6c9246c7f683c5ec07b36ad"
+ dependencies:
+ lodash._basecallback "^3.0.0"
+ lodash._baseeach "^3.0.0"
+ lodash._basefind "^3.0.0"
+ lodash._basefindindex "^3.0.0"
+ lodash.isarray "^3.0.0"
+ lodash.keys "^3.0.0"
+
+lodash.indexof@^4.0.5:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/lodash.indexof/-/lodash.indexof-4.0.5.tgz#53714adc2cddd6ed87638f893aa9b6c24e31ef3c"
+
+lodash.isarguments@^3.0.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
+
+lodash.isarray@^3.0.0:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55"
+
+lodash.isequal@^4.2.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.4.0.tgz#6295768e98e14dc15ce8d362ef6340db82852031"
+
+lodash.isplainobject@^3.0.0, lodash.isplainobject@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-3.2.0.tgz#9a8238ae16b200432960cd7346512d0123fbf4c5"
+ dependencies:
+ lodash._basefor "^3.0.0"
+ lodash.isarguments "^3.0.0"
+ lodash.keysin "^3.0.0"
+
+lodash.istypedarray@^3.0.0:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/lodash.istypedarray/-/lodash.istypedarray-3.0.6.tgz#c9a477498607501d8e8494d283b87c39281cef62"
+
+lodash.keys@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a"
+ dependencies:
+ lodash._getnative "^3.0.0"
+ lodash.isarguments "^3.0.0"
+ lodash.isarray "^3.0.0"
+
+lodash.keysin@^3.0.0:
+ version "3.0.8"
+ resolved "https://registry.yarnpkg.com/lodash.keysin/-/lodash.keysin-3.0.8.tgz#22c4493ebbedb1427962a54b445b2c8a767fb47f"
+ dependencies:
+ lodash.isarguments "^3.0.0"
+ lodash.isarray "^3.0.0"
+
+lodash.merge@^3.3.2:
+ version "3.3.2"
+ resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-3.3.2.tgz#0d90d93ed637b1878437bb3e21601260d7afe994"
+ dependencies:
+ lodash._arraycopy "^3.0.0"
+ lodash._arrayeach "^3.0.0"
+ lodash._createassigner "^3.0.0"
+ lodash._getnative "^3.0.0"
+ lodash.isarguments "^3.0.0"
+ lodash.isarray "^3.0.0"
+ lodash.isplainobject "^3.0.0"
+ lodash.istypedarray "^3.0.0"
+ lodash.keys "^3.0.0"
+ lodash.keysin "^3.0.0"
+ lodash.toplainobject "^3.0.0"
+
+lodash.pairs@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/lodash.pairs/-/lodash.pairs-3.0.1.tgz#bbe08d5786eeeaa09a15c91ebf0dcb7d2be326a9"
+ dependencies:
+ lodash.keys "^3.0.0"
+
+lodash.restparam@^3.0.0:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805"
+
+lodash.template@^3.0.0:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f"
+ dependencies:
+ lodash._basecopy "^3.0.0"
+ lodash._basetostring "^3.0.0"
+ lodash._basevalues "^3.0.0"
+ lodash._isiterateecall "^3.0.0"
+ lodash._reinterpolate "^3.0.0"
+ lodash.escape "^3.0.0"
+ lodash.keys "^3.0.0"
+ lodash.restparam "^3.0.0"
+ lodash.templatesettings "^3.0.0"
+
+lodash.templatesettings@^3.0.0:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5"
+ dependencies:
+ lodash._reinterpolate "^3.0.0"
+ lodash.escape "^3.0.0"
+
+lodash.toplainobject@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/lodash.toplainobject/-/lodash.toplainobject-3.0.0.tgz#28790ad942d293d78aa663a07ecf7f52ca04198d"
+ dependencies:
+ lodash._basecopy "^3.0.0"
+ lodash.keysin "^3.0.0"
+
+lodash.words@^3.0.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/lodash.words/-/lodash.words-3.2.0.tgz#4e2a8649bc08745b17c695b1a3ce8fee596623b3"
+ dependencies:
+ lodash._root "^3.0.0"
+
+lodash@^3.10.1, lodash@^3.8.0:
+ version "3.10.1"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
+
+lodash@^4.13.1, lodash@^4.16.2, lodash@^4.16.4, lodash@^4.2.0, lodash@^4.3.0, lodash@^4.5.0:
+ version "4.16.4"
+ resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.16.4.tgz#01ce306b9bad1319f2a5528674f88297aeb70127"
+
+log4js@^0.6.31:
+ version "0.6.38"
+ resolved "https://registry.yarnpkg.com/log4js/-/log4js-0.6.38.tgz#2c494116695d6fb25480943d3fc872e662a522fd"
+ dependencies:
+ readable-stream "~1.0.2"
+ semver "~4.3.3"
+
+longest@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097"
+
+loose-envify@^1.0.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.2.0.tgz#69a65aad3de542cf4ee0f4fe74e8e33c709ccb0f"
+ dependencies:
+ js-tokens "^1.0.1"
+
+loud-rejection@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f"
+ dependencies:
+ currently-unhandled "^0.4.1"
+ signal-exit "^3.0.0"
+
+lower-case-first@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1"
+ dependencies:
+ lower-case "^1.1.2"
+
+lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.3.tgz#c92393d976793eee5ba4edb583cf8eae35bd9bfb"
+
+lru-cache@2.2.x:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d"
+
+macaddress@^0.2.8:
+ version "0.2.8"
+ resolved "https://registry.yarnpkg.com/macaddress/-/macaddress-0.2.8.tgz#5904dc537c39ec6dbefeae902327135fa8511f12"
+
+make-error@^1.1.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.2.1.tgz#9a6dfb4844423b9f145806728d05c6e935670e75"
+
+map-obj@^1.0.0, map-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d"
+
+marked@^0.3.5:
+ version "0.3.6"
+ resolved "https://registry.yarnpkg.com/marked/-/marked-0.3.6.tgz#b2c6c618fccece4ef86c4fc6cb8a7cbf5aeda8d7"
+
+math-expression-evaluator@^1.2.14:
+ version "1.2.14"
+ resolved "https://registry.yarnpkg.com/math-expression-evaluator/-/math-expression-evaluator-1.2.14.tgz#39511771ed9602405fba9affff17eb4d2a3843ab"
+ dependencies:
+ lodash.indexof "^4.0.5"
+
+md5@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/md5/-/md5-2.2.1.tgz#53ab38d5fe3c8891ba465329ea23fac0540126f9"
+ dependencies:
+ charenc "~0.0.1"
+ crypt "~0.0.1"
+ is-buffer "~1.1.1"
+
+media-typer@0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
+
+memory-fs@^0.3.0, memory-fs@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.3.0.tgz#7bcc6b629e3a43e871d7e29aca6ae8a7f15cbb20"
+ dependencies:
+ errno "^0.1.3"
+ readable-stream "^2.0.1"
+
+meow@^3.3.0:
+ version "3.7.0"
+ resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
+ dependencies:
+ camelcase-keys "^2.0.0"
+ decamelize "^1.1.2"
+ loud-rejection "^1.0.0"
+ map-obj "^1.0.1"
+ minimist "^1.1.3"
+ normalize-package-data "^2.3.4"
+ object-assign "^4.0.1"
+ read-pkg-up "^1.0.1"
+ redent "^1.0.0"
+ trim-newlines "^1.0.0"
+
+merge-descriptors@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
+
+methods@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
+
+micromatch@^2.1.5, micromatch@^2.3.11:
+ version "2.3.11"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
+ dependencies:
+ arr-diff "^2.0.0"
+ array-unique "^0.2.1"
+ braces "^1.8.2"
+ expand-brackets "^0.1.4"
+ extglob "^0.3.1"
+ filename-regex "^2.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.1"
+ kind-of "^3.0.2"
+ normalize-path "^2.0.1"
+ object.omit "^2.0.0"
+ parse-glob "^3.0.4"
+ regex-cache "^0.4.2"
+
+miller-rabin@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.0.tgz#4a62fb1d42933c05583982f4c716f6fb9e6c6d3d"
+ dependencies:
+ bn.js "^4.0.0"
+ brorand "^1.0.1"
+
+"mime-db@>= 1.23.0 < 2", mime-db@~1.24.0:
+ version "1.24.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.24.0.tgz#e2d13f939f0016c6e4e9ad25a8652f126c467f0c"
+
+mime-db@~1.12.0:
+ version "1.12.0"
+ resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.12.0.tgz#3d0c63180f458eb10d325aaa37d7c58ae312e9d7"
+
+mime-types@^2.1.12, mime-types@~2.1.11, mime-types@~2.1.7:
+ version "2.1.12"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.12.tgz#152ba256777020dd4663f54c2e7bc26381e71729"
+ dependencies:
+ mime-db "~1.24.0"
+
+mime-types@~2.0.4:
+ version "2.0.14"
+ resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.0.14.tgz#310e159db23e077f8bb22b748dabfa4957140aa6"
+ dependencies:
+ mime-db "~1.12.0"
+
+mime@^1.2.11, mime@^1.3.4, mime@1.3.4:
+ version "1.3.4"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.3.4.tgz#115f9e3b6b3daf2959983cb38f149a2d40eb5d53"
+
+mime@1.2.x:
+ version "1.2.11"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10"
+
+mimeparse@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/mimeparse/-/mimeparse-0.1.4.tgz#dafb02752370fd226093ae3152c271af01ac254a"
+
+minimalistic-assert@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
+
+minimatch@^3.0.0, minimatch@^3.0.2, "minimatch@2 || 3":
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.3.tgz#2a4e4090b96b2db06a9d7df01055a62a77c9b774"
+ dependencies:
+ brace-expansion "^1.0.0"
+
+minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
+
+minimist@~0.0.1:
+ version "0.0.10"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf"
+
+minimist@0.0.8:
+ version "0.0.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
+
+mkdirp@^0.5.1, "mkdirp@>=0.5 0", mkdirp@~0.5.0, mkdirp@~0.5.1, mkdirp@0.5.x:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
+ dependencies:
+ minimist "0.0.8"
+
+ms@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/ms/-/ms-0.7.1.tgz#9cd13c03adbff25b65effde7ce864ee952017098"
+
+multipipe@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b"
+ dependencies:
+ duplexer2 "0.0.2"
+
+nan@^2.3.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.4.0.tgz#fb3c59d45fe4effe215f0b890f8adf6eb32d2232"
+
+ncname@1.0.x:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/ncname/-/ncname-1.0.0.tgz#5b57ad18b1ca092864ef62b0b1ed8194f383b71c"
+ dependencies:
+ xml-char-classes "^1.0.0"
+
+negotiator@0.4.9:
+ version "0.4.9"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.4.9.tgz#92e46b6db53c7e421ed64a2bc94f08be7630df3f"
+
+negotiator@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9"
+
+no-case@^2.2.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.0.tgz#ca2825ccb76b18e6f79d573dcfbf1eace33dd164"
+ dependencies:
+ lower-case "^1.1.1"
+
+node-dir@^0.1.10:
+ version "0.1.16"
+ resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.16.tgz#d2ef583aa50b90d93db8cdd26fcea58353957fe4"
+ dependencies:
+ minimatch "^3.0.2"
+
+node-libs-browser@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-1.0.0.tgz#ff8ad6c2cfa78043bdd0091ec07f0aaa581620fc"
+ dependencies:
+ assert "^1.1.1"
+ browserify-zlib "~0.1.4"
+ buffer "^4.3.0"
+ console-browserify "^1.1.0"
+ constants-browserify "^1.0.0"
+ crypto-browserify "^3.11.0"
+ domain-browser "^1.1.1"
+ events "^1.0.0"
+ http-browserify "^1.3.2"
+ https-browserify "0.0.1"
+ os-browserify "~0.2.0"
+ path-browserify "0.0.0"
+ process "~0.11.0"
+ punycode "^1.2.4"
+ querystring-es3 "~0.2.0"
+ readable-stream "^2.0.5"
+ stream-browserify "^2.0.1"
+ string_decoder "~0.10.25"
+ timers-browserify "^1.0.1"
+ tty-browserify "0.0.0"
+ url "~0.11.0"
+ util "~0.10.3"
+ vm-browserify "0.0.4"
+
+node-pre-gyp@^0.6.29:
+ version "0.6.31"
+ resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.31.tgz#d8a00ddaa301a940615dbcc8caad4024d58f6017"
+ dependencies:
+ mkdirp "~0.5.1"
+ nopt "~3.0.6"
+ npmlog "^4.0.0"
+ rc "~1.1.6"
+ request "^2.75.0"
+ rimraf "~2.5.4"
+ semver "~5.3.0"
+ tar "~2.2.1"
+ tar-pack "~3.3.0"
+
+node-uuid@~1.4.7:
+ version "1.4.7"
+ resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.7.tgz#6da5a17668c4b3dd59623bda11cf7fa4c1f60a6f"
+
+nopt@~3.0.6, nopt@3.x:
+ version "3.0.6"
+ resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9"
+ dependencies:
+ abbrev "1"
+
+normalize-package-data@^2.3.2, normalize-package-data@^2.3.4:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.3.5.tgz#8d924f142960e1777e7ffe170543631cc7cb02df"
+ dependencies:
+ hosted-git-info "^2.1.4"
+ is-builtin-module "^1.0.0"
+ semver "2 || 3 || 4 || 5"
+ validate-npm-package-license "^3.0.1"
+
+normalize-path@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.0.1.tgz#47886ac1662760d4261b7d979d241709d3ce3f7a"
+
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
+
+normalize-url@^1.4.0:
+ version "1.7.0"
+ resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-1.7.0.tgz#d82452d98d38821cffddab4d77a5f8d20ce66db0"
+ dependencies:
+ object-assign "^4.0.1"
+ prepend-http "^1.0.0"
+ query-string "^4.1.0"
+ sort-keys "^1.0.0"
+
+npmlog@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.0.0.tgz#e094503961c70c1774eb76692080e8d578a9f88f"
+ dependencies:
+ are-we-there-yet "~1.1.2"
+ console-control-strings "~1.1.0"
+ gauge "~2.6.0"
+ set-blocking "~2.0.0"
+
+nth-check@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.1.tgz#9929acdf628fc2c41098deab82ac580cf149aae4"
+ dependencies:
+ boolbase "~1.0.0"
+
+null-check@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd"
+
+num2fraction@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
+
+number-is-nan@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d"
+
+oauth-sign@~0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
+
+object-assign@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2"
+
+object-assign@^4.0.1, object-assign@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.0.tgz#7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0"
+
+object-component@0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/object-component/-/object-component-0.0.3.tgz#f0c69aa50efc95b866c186f400a33769cb2f1291"
+
+object.omit@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.0.tgz#868597333d54e60662940bb458605dd6ae12fe94"
+ dependencies:
+ for-own "^0.1.3"
+ is-extendable "^0.1.1"
+
+obuf@^1.0.0, obuf@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.1.tgz#104124b6c602c6796881a042541d36db43a5264e"
+
+on-finished@~2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
+ dependencies:
+ ee-first "1.1.1"
+
+on-headers@~1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.1.tgz#928f5d0f470d49342651ea6794b0857c100693f7"
+
+once@^1.3.0, once@1.x:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
+ dependencies:
+ wrappy "1"
+
+once@~1.3.3:
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
+ dependencies:
+ wrappy "1"
+
+opener@~1.4.0:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/opener/-/opener-1.4.2.tgz#b32582080042af8680c389a499175b4c54fff523"
+
+opn@4.0.2:
+ version "4.0.2"
+ resolved "https://registry.yarnpkg.com/opn/-/opn-4.0.2.tgz#7abc22e644dff63b0a96d5ab7f2790c0f01abc95"
+ dependencies:
+ object-assign "^4.0.1"
+ pinkie-promise "^2.0.0"
+
+optimist@^0.6.1, optimist@~0.6.0, optimist@0.6.x:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686"
+ dependencies:
+ minimist "~0.0.1"
+ wordwrap "~0.0.2"
+
+optionator@^0.8.1:
+ version "0.8.2"
+ resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64"
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.4"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ wordwrap "~1.0.0"
+
+options@>=0.0.5:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/options/-/options-0.0.6.tgz#ec22d312806bb53e731773e7cdaefcf1c643128f"
+
+original@>=0.0.5:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b"
+ dependencies:
+ url-parse "1.0.x"
+
+os-browserify@~0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.2.1.tgz#63fc4ccee5d2d7763d26bbf8601078e6c2e0044f"
+
+os-locale@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9"
+ dependencies:
+ lcid "^1.0.0"
+
+os-tmpdir@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
+
+pako@~0.2.0:
+ version "0.2.9"
+ resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
+
+param-case@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.0.tgz#2619f90fd6c829ed0b958f1c84ed03a745a6d70a"
+ dependencies:
+ no-case "^2.2.0"
+
+parse-asn1@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.0.0.tgz#35060f6d5015d37628c770f4e091a0b5a278bc23"
+ dependencies:
+ asn1.js "^4.0.0"
+ browserify-aes "^1.0.0"
+ create-hash "^1.1.0"
+ evp_bytestokey "^1.0.0"
+ pbkdf2 "^3.0.3"
+
+parse-glob@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
+ dependencies:
+ glob-base "^0.3.0"
+ is-dotfile "^1.0.0"
+ is-extglob "^1.0.0"
+ is-glob "^2.0.0"
+
+parse-json@^2.2.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9"
+ dependencies:
+ error-ex "^1.2.0"
+
+parse5@^2.2.1, parse5@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-2.2.3.tgz#0c4fc41c1000c5e6b93d48b03f8083837834e9f6"
+
+parsejson@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/parsejson/-/parsejson-0.0.1.tgz#9b10c6c0d825ab589e685153826de0a3ba278bcc"
+ dependencies:
+ better-assert "~1.0.0"
+
+parseqs@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/parseqs/-/parseqs-0.0.2.tgz#9dfe70b2cddac388bde4f35b1f240fa58adbe6c7"
+ dependencies:
+ better-assert "~1.0.0"
+
+parseuri@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.4.tgz#806582a39887e1ea18dd5e2fe0e01902268e9350"
+ dependencies:
+ better-assert "~1.0.0"
+
+parseurl@~1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.1.tgz#c8ab8c9223ba34888aa64a297b28853bec18da56"
+
+pascal-case@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.0.tgz#39c248bde5a8dc02d5160696bdb01e044d016ee1"
+ dependencies:
+ camel-case "^3.0.0"
+ upper-case-first "^1.1.0"
+
+path-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a"
+
+path-case@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.0.tgz#5ac491de642936e5dfe0e18d16c461b8be8cf073"
+ dependencies:
+ no-case "^2.2.0"
+
+path-exists@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b"
+ dependencies:
+ pinkie-promise "^2.0.0"
+
+path-is-absolute@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
+
+path-is-inside@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53"
+
+path-to-regexp@0.1.7:
+ version "0.1.7"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
+
+path-type@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441"
+ dependencies:
+ graceful-fs "^4.1.2"
+ pify "^2.0.0"
+ pinkie-promise "^2.0.0"
+
+pbkdf2@^3.0.3:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.0.9.tgz#f2c4b25a600058b3c3773c086c37dbbee1ffe693"
+ dependencies:
+ create-hmac "^1.1.2"
+
+pify@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
+
+pinkie-promise@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa"
+ dependencies:
+ pinkie "^2.0.0"
+
+pinkie@^2.0.0, pinkie@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870"
+
+portfinder@0.4.x:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-0.4.0.tgz#a3ffadffafe4fb98e0601a85eda27c27ce84ca1e"
+ dependencies:
+ async "0.9.0"
+ mkdirp "0.5.x"
+
+postcss-calc@^5.2.0:
+ version "5.3.1"
+ resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-5.3.1.tgz#77bae7ca928ad85716e2fda42f261bf7c1d65b5e"
+ dependencies:
+ postcss "^5.0.2"
+ postcss-message-helpers "^2.0.0"
+ reduce-css-calc "^1.2.6"
+
+postcss-colormin@^2.1.8:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-2.2.1.tgz#dc5421b6ae6f779ef6bfd47352b94abe59d0316b"
+ dependencies:
+ colormin "^1.0.5"
+ postcss "^5.0.13"
+ postcss-value-parser "^3.2.3"
+
+postcss-convert-values@^2.3.4:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-2.4.1.tgz#45dce4d4e33b7d967b97a4d937f270ea98d2fe7a"
+ dependencies:
+ postcss "^5.0.11"
+ postcss-value-parser "^3.1.2"
+
+postcss-discard-comments@^2.0.4:
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz#befe89fafd5b3dace5ccce51b76b81514be00e3d"
+ dependencies:
+ postcss "^5.0.14"
+
+postcss-discard-duplicates@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-2.0.1.tgz#5fae3f1a71df3e19cffb37309d1a7dba56c4589c"
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-discard-empty@^2.0.1:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz#d2b4bd9d5ced5ebd8dcade7640c7d7cd7f4f92b5"
+ dependencies:
+ postcss "^5.0.14"
+
+postcss-discard-overridden@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz#8b1eaf554f686fb288cd874c55667b0aa3668d58"
+ dependencies:
+ postcss "^5.0.16"
+
+postcss-discard-unused@^2.2.1:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/postcss-discard-unused/-/postcss-discard-unused-2.2.2.tgz#5d72f7d05d11de0a9589e001958067ccae1b4931"
+ dependencies:
+ postcss "^5.0.14"
+ uniqs "^2.0.0"
+
+postcss-filter-plugins@^2.0.0:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz#6d85862534d735ac420e4a85806e1f5d4286d84c"
+ dependencies:
+ postcss "^5.0.4"
+ uniqid "^4.0.0"
+
+postcss-merge-idents@^2.1.5:
+ version "2.1.7"
+ resolved "https://registry.yarnpkg.com/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz#4c5530313c08e1d5b3bbf3d2bbc747e278eea270"
+ dependencies:
+ has "^1.0.1"
+ postcss "^5.0.10"
+ postcss-value-parser "^3.1.1"
+
+postcss-merge-longhand@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-2.0.1.tgz#ff59b5dec6d586ce2cea183138f55c5876fa9cdc"
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-merge-rules@^2.0.3:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-2.0.10.tgz#54b360be804e7e69a5c7222635247b92a3569e9b"
+ dependencies:
+ postcss "^5.0.4"
+ vendors "^1.0.0"
+
+postcss-message-helpers@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz#a4f2f4fab6e4fe002f0aed000478cdf52f9ba60e"
+
+postcss-minify-font-values@^1.0.2:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz#4b58edb56641eba7c8474ab3526cafd7bbdecb69"
+ dependencies:
+ object-assign "^4.0.1"
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.2"
+
+postcss-minify-gradients@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-1.0.4.tgz#47d4fef7efbcc64e541fae6115c9a3cc84d47006"
+ dependencies:
+ postcss "^5.0.12"
+ postcss-value-parser "^3.3.0"
+
+postcss-minify-params@^1.0.4:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-1.0.5.tgz#82d602643b8616a61fb3634d7ede0289836d67f9"
+ dependencies:
+ alphanum-sort "^1.0.1"
+ postcss "^5.0.2"
+ postcss-value-parser "^3.0.2"
+ uniqs "^2.0.0"
+
+postcss-minify-selectors@^2.0.4:
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-2.0.5.tgz#4e1f966fb49c95266804016ba9a3c6645bb601e0"
+ dependencies:
+ alphanum-sort "^1.0.2"
+ postcss "^5.0.14"
+ postcss-selector-parser "^2.0.0"
+
+postcss-modules-extract-imports@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.0.1.tgz#8fb3fef9a6dd0420d3f6d4353cf1ff73f2b2a341"
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-modules-local-by-default@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.1.1.tgz#29a10673fa37d19251265ca2ba3150d9040eb4ce"
+ dependencies:
+ css-selector-tokenizer "^0.6.0"
+ postcss "^5.0.4"
+
+postcss-modules-scope@^1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.0.2.tgz#ff977395e5e06202d7362290b88b1e8cd049de29"
+ dependencies:
+ css-selector-tokenizer "^0.6.0"
+ postcss "^5.0.4"
+
+postcss-modules-values@^1.1.0:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-1.2.2.tgz#f0e7d476fe1ed88c5e4c7f97533a3e772ad94ca1"
+ dependencies:
+ icss-replace-symbols "^1.0.2"
+ postcss "^5.0.14"
+
+postcss-normalize-charset@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-1.1.0.tgz#2fbd30e12248c442981d31ea2484d46fd0628970"
+ dependencies:
+ postcss "^5.0.5"
+
+postcss-normalize-url@^3.0.7:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-3.0.7.tgz#6bd90d0a4bc5a1df22c26ea65c53257dc3829f4e"
+ dependencies:
+ is-absolute-url "^2.0.0"
+ normalize-url "^1.4.0"
+ postcss "^5.0.14"
+ postcss-value-parser "^3.2.3"
+
+postcss-ordered-values@^2.1.0:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-2.2.2.tgz#be8b511741fab2dac8e614a2302e9d10267b0771"
+ dependencies:
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.1"
+
+postcss-reduce-idents@^2.2.2:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-idents/-/postcss-reduce-idents-2.3.1.tgz#024e8e219f52773313408573db9645ba62d2d2fe"
+ dependencies:
+ postcss "^5.0.4"
+ postcss-value-parser "^3.0.2"
+
+postcss-reduce-initial@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-1.0.0.tgz#8f739b938289ef2e48936d7101783e4741ca9bbb"
+ dependencies:
+ postcss "^5.0.4"
+
+postcss-reduce-transforms@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.3.tgz#fc193e435a973c10f9801c74700a830f79643343"
+ dependencies:
+ postcss "^5.0.8"
+ postcss-value-parser "^3.0.1"
+
+postcss-selector-parser@^2.0.0:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-2.2.1.tgz#fdbf696103b12b0a64060e5610507f410491f7c8"
+ dependencies:
+ flatten "^1.0.2"
+ indexes-of "^1.0.1"
+ uniq "^1.0.1"
+
+postcss-svgo@^2.1.1:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-2.1.5.tgz#46fc0363f01bab6a36a9abb01c229fcc45363094"
+ dependencies:
+ is-svg "^2.0.0"
+ postcss "^5.0.14"
+ postcss-value-parser "^3.2.3"
+ svgo "^0.7.0"
+
+postcss-unique-selectors@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz#981d57d29ddcb33e7b1dfe1fd43b8649f933ca1d"
+ dependencies:
+ alphanum-sort "^1.0.1"
+ postcss "^5.0.4"
+ uniqs "^2.0.0"
+
+postcss-value-parser@^3.0.1, postcss-value-parser@^3.0.2, postcss-value-parser@^3.1.1, postcss-value-parser@^3.1.2, postcss-value-parser@^3.2.3, postcss-value-parser@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz#87f38f9f18f774a4ab4c8a232f5c5ce8872a9d15"
+
+postcss-zindex@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/postcss-zindex/-/postcss-zindex-2.1.1.tgz#ea3fbe656c9738aa8729e2ee96ec2a46089b720f"
+ dependencies:
+ postcss "^5.0.4"
+ uniqs "^2.0.0"
+
+postcss@^5.0.10, postcss@^5.0.11, postcss@^5.0.12, postcss@^5.0.13, postcss@^5.0.14, postcss@^5.0.16, postcss@^5.0.2, postcss@^5.0.4, postcss@^5.0.5, postcss@^5.0.6, postcss@^5.0.8, postcss@^5.2.4:
+ version "5.2.5"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.5.tgz#ec428c27dffc7fac65961340a9b022fa4af5f056"
+ dependencies:
+ chalk "^1.1.3"
+ js-base64 "^2.1.9"
+ source-map "^0.5.6"
+ supports-color "^3.1.2"
+
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
+
+prepend-http@^1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
+
+preserve@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
+
+pretty-error@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-2.0.2.tgz#a7db19cbb529ca9f0af3d3a2f77d5caf8e5dec23"
+ dependencies:
+ renderkid "~2.0.0"
+ utila "~0.4"
+
+process-nextick-args@~1.0.6:
+ version "1.0.7"
+ resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
+
+process@~0.11.0:
+ version "0.11.9"
+ resolved "https://registry.yarnpkg.com/process/-/process-0.11.9.tgz#7bd5ad21aa6253e7da8682264f1e11d11c0318c1"
+
+progress@^1.1.8:
+ version "1.1.8"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-1.1.8.tgz#e260c78f6161cdd9b0e56cc3e0a85de17c7a57be"
+
+protractor@^4.0.9:
+ version "4.0.9"
+ resolved "https://registry.yarnpkg.com/protractor/-/protractor-4.0.9.tgz#152f72e3729b2576226e370dc308699cccfa77ba"
+ dependencies:
+ "@types/jasmine" "^2.2.31"
+ "@types/node" "^6.0.35"
+ "@types/q" "^0.0.30"
+ "@types/selenium-webdriver" "~2.53.30"
+ adm-zip "0.4.7"
+ chalk "^1.1.3"
+ glob "^7.0.3"
+ jasmine "2.5.2"
+ jasminewd2 "0.0.10"
+ optimist "~0.6.0"
+ q "1.4.1"
+ saucelabs "~1.3.0"
+ selenium-webdriver "2.53.3"
+ source-map-support "~0.4.0"
+ webdriver-manager "^10.2.2"
+
+proxy-addr@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-1.1.2.tgz#b4cc5f22610d9535824c123aef9d3cf73c40ba37"
+ dependencies:
+ forwarded "~0.1.0"
+ ipaddr.js "1.1.1"
+
+prr@~0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/prr/-/prr-0.0.0.tgz#1a84b85908325501411853d0081ee3fa86e2926a"
+
+public-encrypt@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6"
+ dependencies:
+ bn.js "^4.1.0"
+ browserify-rsa "^4.0.0"
+ create-hash "^1.1.0"
+ parse-asn1 "^5.0.0"
+ randombytes "^2.0.1"
+
+punycode@^1.2.4, punycode@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
+
+punycode@1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
+
+q-io@1.13.2:
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/q-io/-/q-io-1.13.2.tgz#eea130d481ddb5e1aa1bc5a66855f7391d06f003"
+ dependencies:
+ collections "^0.2.0"
+ mime "^1.2.11"
+ mimeparse "^0.1.4"
+ q "^1.0.1"
+ qs "^1.2.1"
+ url2 "^0.0.0"
+
+q@^1.0.1, q@^1.1.2, q@^1.4.1, q@1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e"
+
+qjobs@^1.1.4:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.1.5.tgz#659de9f2cf8dcc27a1481276f205377272382e73"
+
+qs@^1.2.1:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-1.2.2.tgz#19b57ff24dc2a99ce1f8bdf6afcda59f8ef61f88"
+
+qs@~2.3.3:
+ version "2.3.3"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-2.3.3.tgz#e9e85adbe75da0bbe4c8e0476a086290f863b404"
+
+qs@~6.3.0:
+ version "6.3.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.3.0.tgz#f403b264f23bc01228c74131b407f18d5ea5d442"
+
+qs@6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.2.0.tgz#3b7848c03c2dece69a9522b0fae8c4126d745f3b"
+
+query-string@^4.1.0:
+ version "4.2.3"
+ resolved "https://registry.yarnpkg.com/query-string/-/query-string-4.2.3.tgz#9f27273d207a25a8ee4c7b8c74dcd45d556db822"
+ dependencies:
+ object-assign "^4.1.0"
+ strict-uri-encode "^1.0.0"
+
+querystring-es3@~0.2.0:
+ version "0.2.1"
+ resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
+
+querystring@0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
+
+querystringify@0.0.x:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-0.0.4.tgz#0cf7f84f9463ff0ae51c4c4b142d95be37724d9c"
+
+randomatic@^1.1.3:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.5.tgz#5e9ef5f2d573c67bd2b8124ae90b5156e457840b"
+ dependencies:
+ is-number "^2.0.2"
+ kind-of "^3.0.2"
+
+randombytes@^2.0.0, randombytes@^2.0.1:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.3.tgz#674c99760901c3c4112771a31e521dc349cc09ec"
+
+range-parser@^1.0.3, range-parser@^1.2.0, range-parser@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.0.tgz#f49be6b487894ddc40dcc94a322f611092e00d5e"
+
+raw-body@~2.1.7:
+ version "2.1.7"
+ resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.1.7.tgz#adfeace2e4fb3098058014d08c072dcc59758774"
+ dependencies:
+ bytes "2.4.0"
+ iconv-lite "0.4.13"
+ unpipe "1.0.0"
+
+raw-loader@0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/raw-loader/-/raw-loader-0.5.1.tgz#0c3d0beaed8a01c966d9787bf778281252a979aa"
+
+rc@~1.1.6:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/rc/-/rc-1.1.6.tgz#43651b76b6ae53b5c802f1151fa3fc3b059969c9"
+ dependencies:
+ deep-extend "~0.4.0"
+ ini "~1.3.0"
+ minimist "^1.2.0"
+ strip-json-comments "~1.0.4"
+
+read-pkg-up@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
+ dependencies:
+ find-up "^1.0.0"
+ read-pkg "^1.0.0"
+
+read-pkg@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28"
+ dependencies:
+ load-json-file "^1.0.0"
+ normalize-package-data "^2.3.2"
+ path-type "^1.0.0"
+
+"readable-stream@^2.0.0 || ^1.1.13", readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@~2.1.4:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.1.5.tgz#66fa8b720e1438b364681f2ad1a63c618448c9d0"
+ dependencies:
+ buffer-shims "^1.0.0"
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readable-stream@~1.0.2, readable-stream@1.0:
+ version "1.0.34"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readable-stream@~1.1.9:
+ version "1.1.14"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9"
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "0.0.1"
+ string_decoder "~0.10.x"
+
+readable-stream@~2.0.0:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.0.6.tgz#8f90341e68a53ccc928788dacfcd11b36eb9b78e"
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.1"
+ isarray "~1.0.0"
+ process-nextick-args "~1.0.6"
+ string_decoder "~0.10.x"
+ util-deprecate "~1.0.1"
+
+readdirp@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
+ dependencies:
+ graceful-fs "^4.1.2"
+ minimatch "^3.0.2"
+ readable-stream "^2.0.2"
+ set-immediate-shim "^1.0.1"
+
+rechoir@^0.6.2:
+ version "0.6.2"
+ resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384"
+ dependencies:
+ resolve "^1.1.6"
+
+redent@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde"
+ dependencies:
+ indent-string "^2.1.0"
+ strip-indent "^1.0.1"
+
+reduce-css-calc@^1.2.6:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz#747c914e049614a4c9cfbba629871ad1d2927716"
+ dependencies:
+ balanced-match "^0.4.2"
+ math-expression-evaluator "^1.2.14"
+ reduce-function-call "^1.0.1"
+
+reduce-function-call@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/reduce-function-call/-/reduce-function-call-1.0.1.tgz#fa02e126e695824263cab91d3a5b0fdc1dd27a9a"
+ dependencies:
+ balanced-match "~0.1.0"
+
+regenerate@^1.2.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.1.tgz#0300203a5d2fdcf89116dce84275d011f5903f33"
+
+regenerator-runtime@^0.9.5:
+ version "0.9.5"
+ resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.9.5.tgz#403d6d40a4bdff9c330dd9392dcbb2d9a8bba1fc"
+
+regex-cache@^0.4.2:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.3.tgz#9b1a6c35d4d0dfcef5711ae651e8e9d3d7114145"
+ dependencies:
+ is-equal-shallow "^0.1.3"
+ is-primitive "^2.0.0"
+
+regexpu-core@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-1.0.0.tgz#86a763f58ee4d7c2f6b102e4764050de7ed90c6b"
+ dependencies:
+ regenerate "^1.2.1"
+ regjsgen "^0.2.0"
+ regjsparser "^0.1.4"
+
+regjsgen@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7"
+
+regjsparser@^0.1.4:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c"
+ dependencies:
+ jsesc "~0.5.0"
+
+relateurl@0.2.x:
+ version "0.2.7"
+ resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
+
+remap-istanbul@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.yarnpkg.com/remap-istanbul/-/remap-istanbul-0.7.0.tgz#c360dadaea641dba734cb6a58cabe9ebd88a2858"
+ dependencies:
+ amdefine "1.0.0"
+ gulp-util "3.0.7"
+ istanbul "0.4.5"
+ source-map ">=0.5.6"
+ through2 "2.0.1"
+
+renderkid@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-2.0.0.tgz#1859753e7a5adbf35443aba0d4e4579e78abee85"
+ dependencies:
+ css-select "^1.1.0"
+ dom-converter "~0.1"
+ htmlparser2 "~3.3.0"
+ strip-ansi "^3.0.0"
+ utila "~0.3"
+
+repeat-element@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
+
+repeat-string@^0.2.2:
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-0.2.2.tgz#c7a8d3236068362059a7e4651fc6884e8b1fb4ae"
+
+repeat-string@^1.5.2:
+ version "1.6.1"
+ resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
+
+repeating@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda"
+ dependencies:
+ is-finite "^1.0.0"
+
+replace-ext@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924"
+
+request@^2.69.0, request@^2.75.0, request@>=2.42.0:
+ version "2.76.0"
+ resolved "https://registry.yarnpkg.com/request/-/request-2.76.0.tgz#be44505afef70360a0436955106be3945d95560e"
+ dependencies:
+ aws-sign2 "~0.6.0"
+ aws4 "^1.2.1"
+ caseless "~0.11.0"
+ combined-stream "~1.0.5"
+ extend "~3.0.0"
+ forever-agent "~0.6.1"
+ form-data "~2.1.1"
+ har-validator "~2.0.6"
+ hawk "~3.1.3"
+ http-signature "~1.1.0"
+ is-typedarray "~1.0.0"
+ isstream "~0.1.2"
+ json-stringify-safe "~5.0.1"
+ mime-types "~2.1.7"
+ node-uuid "~1.4.7"
+ oauth-sign "~0.8.1"
+ qs "~6.3.0"
+ stringstream "~0.0.4"
+ tough-cookie "~2.3.0"
+ tunnel-agent "~0.4.1"
+
+require-directory@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
+
+require-main-filename@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1"
+
+requires-port@1.0.x, requires-port@1.x.x:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
+
+resolve@^1.1.6, resolve@^1.1.7, resolve@1.1.x:
+ version "1.1.7"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b"
+
+right-align@^0.1.1:
+ version "0.1.3"
+ resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef"
+ dependencies:
+ align-text "^0.1.1"
+
+rimraf@^2.2.8, rimraf@^2.3.3, rimraf@^2.4.4, rimraf@^2.5.2, rimraf@~2.5.1, rimraf@~2.5.4, rimraf@2:
+ version "2.5.4"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.5.4.tgz#96800093cbf1a0c86bd95b4625467535c29dfa04"
+ dependencies:
+ glob "^7.0.5"
+
+rimraf@~2.1.4:
+ version "2.1.4"
+ resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.1.4.tgz#5a6eb62eeda068f51ede50f29b3e5cd22f3d9bb2"
+ optionalDependencies:
+ graceful-fs "~1"
+
+ripemd160@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-1.0.1.tgz#93a4bbd4942bc574b69a8fa57c71de10ecca7d6e"
+
+rxjs@^5.0.0-rc.1:
+ version "5.0.0-rc.1"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.0.0-rc.1.tgz#9e02b7044da81a2d5e138908d22af77e22d96973"
+ dependencies:
+ symbol-observable "^1.0.1"
+
+saucelabs@~1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.3.0.tgz#d240e8009df7fa87306ec4578a69ba3b5c424fee"
+ dependencies:
+ https-proxy-agent "^1.0.0"
+
+sax@~1.2.1:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.1.tgz#7b8e656190b228e81a66aea748480d828cd2d37a"
+
+sax@0.6.x:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/sax/-/sax-0.6.1.tgz#563b19c7c1de892e09bfc4f2fc30e3c27f0952b9"
+
+script-ext-html-webpack-plugin@^1.3.2:
+ version "1.3.2"
+ resolved "https://registry.yarnpkg.com/script-ext-html-webpack-plugin/-/script-ext-html-webpack-plugin-1.3.2.tgz#ec88c7ff194f0ae699ffdf4cbd8d66d9c36ae60a"
+
+select-hose@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
+
+selenium-webdriver@2.53.3:
+ version "2.53.3"
+ resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz#d29ff5a957dff1a1b49dc457756e4e4bfbdce085"
+ dependencies:
+ adm-zip "0.4.4"
+ rimraf "^2.2.8"
+ tmp "0.0.24"
+ ws "^1.0.1"
+ xml2js "0.4.4"
+
+semver@^5.3.0, semver@~5.3.0, "semver@2 || 3 || 4 || 5":
+ version "5.3.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"
+
+semver@~4.3.3:
+ version "4.3.6"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-4.3.6.tgz#300bc6e0e86374f7ba61068b5b1ecd57fc6532da"
+
+semver@~5.0.1:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.0.3.tgz#77466de589cd5d3c95f138aa78bc569a3cb5d27a"
+
+send@0.14.1:
+ version "0.14.1"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.14.1.tgz#a954984325392f51532a7760760e459598c89f7a"
+ dependencies:
+ debug "~2.2.0"
+ depd "~1.1.0"
+ destroy "~1.0.4"
+ encodeurl "~1.0.1"
+ escape-html "~1.0.3"
+ etag "~1.7.0"
+ fresh "0.3.0"
+ http-errors "~1.5.0"
+ mime "1.3.4"
+ ms "0.7.1"
+ on-finished "~2.3.0"
+ range-parser "~1.2.0"
+ statuses "~1.3.0"
+
+sentence-case@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.0.tgz#d592fbed457fd1a59e3af0ee17e99f6fd70d7efd"
+ dependencies:
+ no-case "^2.2.0"
+ upper-case-first "^1.1.2"
+
+serve-index@^1.7.2:
+ version "1.8.0"
+ resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.8.0.tgz#7c5d96c13fb131101f93c1c5774f8516a1e78d3b"
+ dependencies:
+ accepts "~1.3.3"
+ batch "0.5.3"
+ debug "~2.2.0"
+ escape-html "~1.0.3"
+ http-errors "~1.5.0"
+ mime-types "~2.1.11"
+ parseurl "~1.3.1"
+
+serve-static@~1.11.1:
+ version "1.11.1"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.11.1.tgz#d6cce7693505f733c759de57befc1af76c0f0805"
+ dependencies:
+ encodeurl "~1.0.1"
+ escape-html "~1.0.3"
+ parseurl "~1.3.1"
+ send "0.14.1"
+
+set-blocking@^2.0.0, set-blocking@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
+
+set-immediate-shim@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
+
+setprototypeof@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.0.1.tgz#52009b27888c4dc48f591949c0a8275834c1ca7e"
+
+sha.js@^2.3.6:
+ version "2.4.5"
+ resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.5.tgz#27d171efcc82a118b99639ff581660242b506e7c"
+ dependencies:
+ inherits "^2.0.1"
+
+shelljs@^0.7.0:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.7.4.tgz#b8f04b3a74ddfafea22acf98e0be45ded53d59c8"
+ dependencies:
+ glob "^7.0.0"
+ interpret "^1.0.0"
+ rechoir "^0.6.2"
+
+signal-exit@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.1.tgz#5a4c884992b63a7acd9badb7894c3ee9cfccad81"
+
+snake-case@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f"
+ dependencies:
+ no-case "^2.2.0"
+
+sntp@1.x.x:
+ version "1.0.9"
+ resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
+ dependencies:
+ hoek "2.x.x"
+
+socket.io-adapter@0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-0.4.0.tgz#fb9f82ab1aa65290bf72c3657955b930a991a24f"
+ dependencies:
+ debug "2.2.0"
+ socket.io-parser "2.2.2"
+
+socket.io-client@1.4.6:
+ version "1.4.6"
+ resolved "https://registry.yarnpkg.com/socket.io-client/-/socket.io-client-1.4.6.tgz#49b0ba537efd15b8297c84016e642e1c7c752c3d"
+ dependencies:
+ backo2 "1.0.2"
+ component-bind "1.0.0"
+ component-emitter "1.2.0"
+ debug "2.2.0"
+ engine.io-client "1.6.9"
+ has-binary "0.1.7"
+ indexof "0.0.1"
+ object-component "0.0.3"
+ parseuri "0.0.4"
+ socket.io-parser "2.2.6"
+ to-array "0.1.4"
+
+socket.io-parser@2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.2.2.tgz#3d7af6b64497e956b7d9fe775f999716027f9417"
+ dependencies:
+ benchmark "1.0.0"
+ component-emitter "1.1.2"
+ debug "0.7.4"
+ isarray "0.0.1"
+ json3 "3.2.6"
+
+socket.io-parser@2.2.6:
+ version "2.2.6"
+ resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-2.2.6.tgz#38dfd61df50dcf8ab1d9e2091322bf902ba28b99"
+ dependencies:
+ benchmark "1.0.0"
+ component-emitter "1.1.2"
+ debug "2.2.0"
+ isarray "0.0.1"
+ json3 "3.3.2"
+
+socket.io@1.4.7:
+ version "1.4.7"
+ resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-1.4.7.tgz#92b7f7cb88c5797d4daee279fe8075dbe6d3fa1c"
+ dependencies:
+ debug "2.2.0"
+ engine.io "1.6.10"
+ has-binary "0.1.7"
+ socket.io-adapter "0.4.0"
+ socket.io-client "1.4.6"
+ socket.io-parser "2.2.6"
+
+sockjs-client@1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.1.1.tgz#284843e9a9784d7c474b1571b3240fca9dda4bb0"
+ dependencies:
+ debug "^2.2.0"
+ eventsource "~0.1.6"
+ faye-websocket "~0.11.0"
+ inherits "^2.0.1"
+ json3 "^3.3.2"
+ url-parse "^1.1.1"
+
+sockjs@0.3.18:
+ version "0.3.18"
+ resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.18.tgz#d9b289316ca7df77595ef299e075f0f937eb4207"
+ dependencies:
+ faye-websocket "^0.10.0"
+ uuid "^2.0.2"
+
+sort-keys@^1.0.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad"
+ dependencies:
+ is-plain-obj "^1.0.0"
+
+source-list-map@^0.1.4, source-list-map@~0.1.0:
+ version "0.1.6"
+ resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-0.1.6.tgz#e1e6f94f0b40c4d28dcf8f5b8766e0e45636877f"
+
+source-map-loader@^0.1.5:
+ version "0.1.5"
+ resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-0.1.5.tgz#0ec6ca58aa0e61463a28673dd4c49e8ba67dc718"
+ dependencies:
+ async "^0.9.0"
+ loader-utils "~0.2.2"
+ source-map "~0.1.33"
+
+source-map-support@^0.4.0, source-map-support@~0.4.0:
+ version "0.4.5"
+ resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.5.tgz#4438df4219e1b3c7feb674614b4c67f9722db1e4"
+ dependencies:
+ source-map "^0.5.3"
+
+source-map@^0.1.41, source-map@~0.1.33, source-map@0.1.x:
+ version "0.1.43"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.1.43.tgz#c24bc146ca517c1471f5dacbe2571b2b7f9e3346"
+ dependencies:
+ amdefine ">=0.0.4"
+
+source-map@^0.4.4, source-map@0.4.x:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.4.4.tgz#eba4f5da9c0dc999de68032d8b4f76173652036b"
+ dependencies:
+ amdefine ">=0.0.4"
+
+source-map@^0.5.0, source-map@^0.5.1, source-map@^0.5.3, source-map@^0.5.6, source-map@>=0.5.6, source-map@~0.5.1, source-map@~0.5.3:
+ version "0.5.6"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.6.tgz#75ce38f52bf0733c5a7f0c118d81334a2bb5f412"
+
+source-map@~0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d"
+ dependencies:
+ amdefine ">=0.0.4"
+
+sparkles@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.0.tgz#1acbbfb592436d10bbe8f785b7cc6f82815012c3"
+
+spdx-correct@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-1.0.2.tgz#4b3073d933ff51f3912f03ac5519498a4150db40"
+ dependencies:
+ spdx-license-ids "^1.0.2"
+
+spdx-expression-parse@~1.0.0:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz#9bdf2f20e1f40ed447fbe273266191fced51626c"
+
+spdx-license-ids@^1.0.2:
+ version "1.2.2"
+ resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz#c9df7a3424594ade6bd11900d596696dc06bac57"
+
+spdy-transport@^2.0.15:
+ version "2.0.15"
+ resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-2.0.15.tgz#10bd739d18973f00e1d1071d0c2bce8020f51207"
+ dependencies:
+ debug "^2.2.0"
+ hpack.js "^2.1.6"
+ obuf "^1.1.0"
+ readable-stream "^2.0.1"
+ wbuf "^1.4.0"
+
+spdy@^3.4.1:
+ version "3.4.4"
+ resolved "https://registry.yarnpkg.com/spdy/-/spdy-3.4.4.tgz#e0406407ca90ff01b553eb013505442649f5a819"
+ dependencies:
+ debug "^2.2.0"
+ handle-thing "^1.2.4"
+ http-deceiver "^1.2.4"
+ select-hose "^2.0.0"
+ spdy-transport "^2.0.15"
+
+sprintf-js@^1.0.3, sprintf-js@~1.0.2:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
+
+sshpk@^1.7.0:
+ version "1.10.1"
+ resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.10.1.tgz#30e1a5d329244974a1af61511339d595af6638b0"
+ dependencies:
+ asn1 "~0.2.3"
+ assert-plus "^1.0.0"
+ dashdash "^1.12.0"
+ getpass "^0.1.1"
+ optionalDependencies:
+ bcrypt-pbkdf "^1.0.0"
+ ecc-jsbn "~0.1.1"
+ jodid25519 "^1.0.0"
+ jsbn "~0.1.0"
+ tweetnacl "~0.14.0"
+
+"statuses@>= 1.3.0 < 2", statuses@~1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.3.0.tgz#8e55758cb20e7682c1f4fce8dcab30bf01d1e07a"
+
+stream-browserify@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db"
+ dependencies:
+ inherits "~2.0.1"
+ readable-stream "^2.0.2"
+
+strict-uri-encode@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
+
+string_decoder@~0.10.25, string_decoder@~0.10.x:
+ version "0.10.31"
+ resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
+
+string-replace-loader@1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/string-replace-loader/-/string-replace-loader-1.0.5.tgz#e2b0d4fcd611f0d41ca433bbf50e029450e37a3d"
+ dependencies:
+ loader-utils "^0.2.11"
+ lodash "^3.10.1"
+
+string-width@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
+ dependencies:
+ code-point-at "^1.0.0"
+ is-fullwidth-code-point "^1.0.0"
+ strip-ansi "^3.0.0"
+
+stringstream@~0.0.4:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
+
+strip-ansi@^3.0.0, strip-ansi@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
+ dependencies:
+ ansi-regex "^2.0.0"
+
+strip-bom@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e"
+ dependencies:
+ is-utf8 "^0.2.0"
+
+strip-indent@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2"
+ dependencies:
+ get-stdin "^4.0.1"
+
+strip-json-comments@^1.0.2, strip-json-comments@~1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-1.0.4.tgz#1e15fbcac97d3ee99bf2d73b4c656b082bbafb91"
+
+strip-json-comments@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a"
+
+style-loader@^0.13.1:
+ version "0.13.1"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-0.13.1.tgz#468280efbc0473023cd3a6cd56e33b5a1d7fc3a9"
+ dependencies:
+ loader-utils "^0.2.7"
+
+supports-color@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
+
+supports-color@^3.1.0, supports-color@^3.1.1, supports-color@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5"
+ dependencies:
+ has-flag "^1.0.0"
+
+svgo@^0.7.0:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/svgo/-/svgo-0.7.1.tgz#287320fed972cb097e72c2bb1685f96fe08f8034"
+ dependencies:
+ coa "~1.0.1"
+ colors "~1.1.2"
+ csso "~2.2.1"
+ js-yaml "~3.6.1"
+ mkdirp "~0.5.1"
+ sax "~1.2.1"
+ whet.extend "~0.9.9"
+
+swap-case@^1.1.0:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3"
+ dependencies:
+ lower-case "^1.1.1"
+ upper-case "^1.1.1"
+
+symbol-observable@^1.0.1:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
+
+tapable@^0.2.3, tapable@~0.2.3:
+ version "0.2.4"
+ resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.4.tgz#a7814605089d4ba896c33c7e3566e13dcd194aa5"
+
+tar-pack@~3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.3.0.tgz#30931816418f55afc4d21775afdd6720cee45dae"
+ dependencies:
+ debug "~2.2.0"
+ fstream "~1.0.10"
+ fstream-ignore "~1.0.5"
+ once "~1.3.3"
+ readable-stream "~2.1.4"
+ rimraf "~2.5.1"
+ tar "~2.2.1"
+ uid-number "~0.0.6"
+
+tar@~2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
+ dependencies:
+ block-stream "*"
+ fstream "^1.0.2"
+ inherits "2"
+
+temp@~0.5.1:
+ version "0.5.1"
+ resolved "https://registry.yarnpkg.com/temp/-/temp-0.5.1.tgz#77ab19c79aa7b593cbe4fac2441768cad987b8df"
+ dependencies:
+ rimraf "~2.1.4"
+
+through@X.X.X:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+
+through2@^2.0.0, through2@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.1.tgz#384e75314d49f32de12eebb8136b8eb6b5d59da9"
+ dependencies:
+ readable-stream "~2.0.0"
+ xtend "~4.0.0"
+
+time-stamp@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.0.1.tgz#9f4bd23559c9365966f3302dbba2b07c6b99b151"
+
+timers-browserify@^1.0.1:
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
+ dependencies:
+ process "~0.11.0"
+
+title-case@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.0.tgz#c68ccb4232079ded64f94b91b4941ade91391979"
+ dependencies:
+ no-case "^2.2.0"
+ upper-case "^1.0.3"
+
+tmp@0.0.24:
+ version "0.0.24"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.24.tgz#d6a5e198d14a9835cc6f2d7c3d9e302428c8cf12"
+
+tmp@0.0.28:
+ version "0.0.28"
+ resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.28.tgz#172735b7f614ea7af39664fa84cf0de4e515d120"
+ dependencies:
+ os-tmpdir "~1.0.1"
+
+to-array@0.1.4:
+ version "0.1.4"
+ resolved "https://registry.yarnpkg.com/to-array/-/to-array-0.1.4.tgz#17e6c11f73dd4f3d74cda7a4ff3238e9ad9bf890"
+
+to-fast-properties@^1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.2.tgz#f3f5c0c3ba7299a7ef99427e44633257ade43320"
+
+to-string-loader@^1.1.4:
+ version "1.1.5"
+ resolved "https://registry.yarnpkg.com/to-string-loader/-/to-string-loader-1.1.5.tgz#7b7aa17891b7bb4947a7a11bfb03b5fde9c6e695"
+ dependencies:
+ loader-utils "^0.2.16"
+
+toposort@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/toposort/-/toposort-1.0.0.tgz#b66cf385a1a8a8e68e45b8259e7f55875e8b06ef"
+
+tough-cookie@~2.3.0:
+ version "2.3.2"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.2.tgz#f081f76e4c85720e6c37a5faced737150d84072a"
+ dependencies:
+ punycode "^1.4.1"
+
+trim-newlines@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613"
+
+ts-helpers@1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/ts-helpers/-/ts-helpers-1.1.2.tgz#fc69be9f1f3baed01fb1a0ef8d4cfe748814d835"
+
+ts-node@^1.3.0:
+ version "1.6.0"
+ resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-1.6.0.tgz#a1eb6a62eb0c4011a66fb322b2687eea00866ee7"
+ dependencies:
+ arrify "^1.0.0"
+ chalk "^1.1.1"
+ make-error "^1.1.1"
+ minimist "^1.2.0"
+ mkdirp "^0.5.1"
+ pinkie "^2.0.4"
+ source-map-support "^0.4.0"
+ tsconfig "^5.0.2"
+ xtend "^4.0.0"
+ yn "^1.2.0"
+
+tsconfig@^5.0.2:
+ version "5.0.3"
+ resolved "https://registry.yarnpkg.com/tsconfig/-/tsconfig-5.0.3.tgz#5f4278e701800967a8fc383fd19648878f2a6e3a"
+ dependencies:
+ any-promise "^1.3.0"
+ parse-json "^2.2.0"
+ strip-bom "^2.0.0"
+ strip-json-comments "^2.0.0"
+
+tslint-loader@^2.1.3:
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/tslint-loader/-/tslint-loader-2.1.5.tgz#77abdfd9bf13d7133a6efa4447a1690783c4bb49"
+ dependencies:
+ loader-utils "^0.2.7"
+ mkdirp "^0.5.1"
+ object-assign "^4.0.1"
+ rimraf "^2.4.4"
+ strip-json-comments "^1.0.2"
+
+tslint@^4.0.0-dev.0:
+ version "4.0.0-dev.0"
+ resolved "https://registry.yarnpkg.com/tslint/-/tslint-4.0.0-dev.0.tgz#38826e164299c0fefb024a5587d391a430e0a6be"
+ dependencies:
+ colors "^1.1.2"
+ diff "^2.2.1"
+ findup-sync "~0.3.0"
+ glob "^7.0.3"
+ optimist "~0.6.0"
+ resolve "^1.1.7"
+ underscore.string "^3.3.4"
+
+tty-browserify@0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6"
+
+tunnel-agent@~0.4.1:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.4.3.tgz#6373db76909fe570e08d73583365ed828a74eeeb"
+
+tweetnacl@^0.14.3, tweetnacl@~0.14.0:
+ version "0.14.3"
+ resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.3.tgz#3da382f670f25ded78d7b3d1792119bca0b7132d"
+
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-is@~1.6.13:
+ version "1.6.13"
+ resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.13.tgz#6e83ba7bc30cd33a7bb0b7fb00737a2085bf9d08"
+ dependencies:
+ media-typer "0.3.0"
+ mime-types "~2.1.11"
+
+typedoc-default-themes@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/typedoc-default-themes/-/typedoc-default-themes-0.4.0.tgz#e6d9daa14296a0a922d2accd05c2314f978f86b8"
+
+typedoc@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/typedoc/-/typedoc-0.5.0.tgz#3bf2b8ea91eb3fd31bff6800f4a399c5d35ff5b3"
+ dependencies:
+ fs-extra "^0.30.0"
+ handlebars "4.0.5"
+ highlight.js "^9.0.0"
+ lodash "^4.13.1"
+ marked "^0.3.5"
+ minimatch "^3.0.0"
+ progress "^1.1.8"
+ shelljs "^0.7.0"
+ typedoc-default-themes "^0.4.0"
+ typescript "2.0.3"
+
+typescript@^2.0.6:
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.0.6.tgz#5385499ac9811508c2c43e0ea07a1ddca435e111"
+
+typescript@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.0.3.tgz#33dec9eae86b8eee327dd419ca050c853cabd514"
+
+uglify-js@^2.6, uglify-js@~2.7.3, uglify-js@2.7.x:
+ version "2.7.4"
+ resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.7.4.tgz#a295a0de12b6a650c031c40deb0dc40b14568bd2"
+ dependencies:
+ async "~0.2.6"
+ source-map "~0.5.1"
+ uglify-to-browserify "~1.0.0"
+ yargs "~3.10.0"
+
+uglify-to-browserify@~1.0.0:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7"
+
+uid-number@~0.0.6:
+ version "0.0.6"
+ resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
+
+ultron@1.0.x:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.0.2.tgz#ace116ab557cd197386a4e88f4685378c8b2e4fa"
+
+underscore.string@^3.3.4:
+ version "3.3.4"
+ resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.4.tgz#2c2a3f9f83e64762fdc45e6ceac65142864213db"
+ dependencies:
+ sprintf-js "^1.0.3"
+ util-deprecate "^1.0.2"
+
+union@~0.4.3:
+ version "0.4.6"
+ resolved "https://registry.yarnpkg.com/union/-/union-0.4.6.tgz#198fbdaeba254e788b0efcb630bc11f24a2959e0"
+ dependencies:
+ qs "~2.3.3"
+
+uniq@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff"
+
+uniqid@^4.0.0:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/uniqid/-/uniqid-4.1.0.tgz#33d9679f65022f48988a03fd24e7dcaf8f109eca"
+ dependencies:
+ macaddress "^0.2.8"
+
+uniqs@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02"
+
+unpipe@~1.0.0, unpipe@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
+
+upper-case-first@^1.1.0, upper-case-first@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115"
+ dependencies:
+ upper-case "^1.1.1"
+
+upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598"
+
+url-join@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/url-join/-/url-join-1.1.0.tgz#741c6c2f4596c4830d6718460920d0c92202dc78"
+
+url-loader@^0.5.7:
+ version "0.5.7"
+ resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-0.5.7.tgz#67e8779759f8000da74994906680c943a9b0925d"
+ dependencies:
+ loader-utils "0.2.x"
+ mime "1.2.x"
+
+url-parse@^1.1.1:
+ version "1.1.6"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.1.6.tgz#ab8ff5aea1388071961255e2236147c52ca5fc48"
+ dependencies:
+ querystringify "0.0.x"
+ requires-port "1.0.x"
+
+url-parse@1.0.x:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.0.5.tgz#0854860422afdcfefeb6c965c662d4800169927b"
+ dependencies:
+ querystringify "0.0.x"
+ requires-port "1.0.x"
+
+url@~0.11.0:
+ version "0.11.0"
+ resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
+ dependencies:
+ punycode "1.3.2"
+ querystring "0.2.0"
+
+url2@^0.0.0:
+ version "0.0.0"
+ resolved "https://registry.yarnpkg.com/url2/-/url2-0.0.0.tgz#4eaabd1d5c3ac90d62ab4485c998422865a04b1a"
+
+urlgrey@>=0.4.0:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.4.tgz#892fe95960805e85519f1cd4389f2cb4cbb7652f"
+
+useragent@^2.1.9:
+ version "2.1.9"
+ resolved "https://registry.yarnpkg.com/useragent/-/useragent-2.1.9.tgz#4dba2bc4dad1875777ab15de3ff8098b475000b7"
+ dependencies:
+ lru-cache "2.2.x"
+
+utf8@2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/utf8/-/utf8-2.1.0.tgz#0cfec5c8052d44a23e3aaa908104e8075f95dfd5"
+
+util-deprecate@^1.0.2, util-deprecate@~1.0.1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
+
+util@~0.10.3, util@0.10.3:
+ version "0.10.3"
+ resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9"
+ dependencies:
+ inherits "2.0.1"
+
+utila@~0.3:
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/utila/-/utila-0.3.3.tgz#d7e8e7d7e309107092b05f8d9688824d633a4226"
+
+utila@~0.4:
+ version "0.4.0"
+ resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
+
+utils-merge@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.0.tgz#0294fb922bb9375153541c4f7096231f287c8af8"
+
+uuid@^2.0.2:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a"
+
+validate-npm-package-license@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc"
+ dependencies:
+ spdx-correct "~1.0.0"
+ spdx-expression-parse "~1.0.0"
+
+vary@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.0.tgz#e1e5affbbd16ae768dd2674394b9ad3022653140"
+
+vendors@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/vendors/-/vendors-1.0.1.tgz#37ad73c8ee417fb3d580e785312307d274847f22"
+
+verror@1.3.6:
+ version "1.3.6"
+ resolved "https://registry.yarnpkg.com/verror/-/verror-1.3.6.tgz#cff5df12946d297d2baaefaa2689e25be01c005c"
+ dependencies:
+ extsprintf "1.0.2"
+
+vinyl@^0.5.0:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde"
+ dependencies:
+ clone "^1.0.0"
+ clone-stats "^0.0.1"
+ replace-ext "0.0.1"
+
+vm-browserify@0.0.4:
+ version "0.0.4"
+ resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73"
+ dependencies:
+ indexof "0.0.1"
+
+void-elements@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
+
+watchpack@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.1.0.tgz#42d44627464a2fadffc9308c0f7562cfde795f24"
+ dependencies:
+ async "2.0.0-rc.4"
+ chokidar "^1.4.3"
+ graceful-fs "^4.1.2"
+
+wbuf@^1.1.0, wbuf@^1.4.0:
+ version "1.7.2"
+ resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.2.tgz#d697b99f1f59512df2751be42769c1580b5801fe"
+ dependencies:
+ minimalistic-assert "^1.0.0"
+
+weak-map@1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/weak-map/-/weak-map-1.0.0.tgz#b66e56a9df0bd25a76bbf1b514db129080614a37"
+
+webdriver-manager@^10.2.2:
+ version "10.2.5"
+ resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-10.2.5.tgz#6433c1a64b038388c295ed0dc9daa71e5df5024e"
+ dependencies:
+ adm-zip "^0.4.7"
+ chalk "^1.1.1"
+ del "^2.2.0"
+ glob "^7.0.3"
+ ini "^1.3.4"
+ minimist "^1.2.0"
+ q "^1.4.1"
+ request "^2.69.0"
+ rimraf "^2.5.2"
+ semver "^5.3.0"
+
+webpack-dev-middleware@^1.0.11, webpack-dev-middleware@^1.4.0, webpack-dev-middleware@^1.6.1:
+ version "1.8.4"
+ resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-1.8.4.tgz#e8765c9122887ce9e3abd4cc9c3eb31b61e0948d"
+ dependencies:
+ memory-fs "~0.3.0"
+ mime "^1.3.4"
+ path-is-absolute "^1.0.0"
+ range-parser "^1.0.3"
+
+webpack-dev-server@^2.1.0-beta.9:
+ version "2.1.0-beta.9"
+ resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-2.1.0-beta.9.tgz#45745a4a6b84849c63e3a21dfab3be7bdb897554"
+ dependencies:
+ chokidar "^1.6.0"
+ compression "^1.5.2"
+ connect-history-api-fallback "^1.3.0"
+ express "^4.13.3"
+ http-proxy-middleware "~0.17.1"
+ opn "4.0.2"
+ serve-index "^1.7.2"
+ sockjs "0.3.18"
+ sockjs-client "1.1.1"
+ spdy "^3.4.1"
+ strip-ansi "^3.0.0"
+ supports-color "^3.1.1"
+ webpack-dev-middleware "^1.4.0"
+ yargs "^4.7.1"
+
+webpack-md5-hash@^0.0.5:
+ version "0.0.5"
+ resolved "https://registry.yarnpkg.com/webpack-md5-hash/-/webpack-md5-hash-0.0.5.tgz#d9f1899ead664459dd8b6b0c926ac71cfbd7bc7a"
+ dependencies:
+ md5 "^2.0.0"
+
+webpack-merge@^0.15.0:
+ version "0.15.0"
+ resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-0.15.0.tgz#f6a930516d5eccba0baabeb30ea96b6a6737c193"
+ dependencies:
+ lodash.find "^3.2.1"
+ lodash.isequal "^4.2.0"
+ lodash.isplainobject "^3.2.0"
+ lodash.merge "^3.3.2"
+
+webpack-sources@^0.1.0:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-0.1.2.tgz#057a3f3255f8ba561b901d9150589aa103a57e65"
+ dependencies:
+ source-list-map "~0.1.0"
+ source-map "~0.5.3"
+
+webpack@2.1.0-beta.25:
+ version "2.1.0-beta.25"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-2.1.0-beta.25.tgz#c35ff4da4ee70344a2f14c35258d95412709e9ed"
+ dependencies:
+ acorn "^3.2.0"
+ ajv "^4.7.0"
+ async "^1.3.0"
+ clone "^1.0.2"
+ enhanced-resolve "^2.2.0"
+ interpret "^1.0.0"
+ loader-runner "^2.2.0"
+ loader-utils "^0.2.11"
+ memory-fs "~0.3.0"
+ mkdirp "~0.5.0"
+ node-libs-browser "^1.0.0"
+ object-assign "^4.0.1"
+ source-map "^0.5.3"
+ supports-color "^3.1.0"
+ tapable "~0.2.3"
+ uglify-js "~2.7.3"
+ watchpack "^1.0.0"
+ webpack-sources "^0.1.0"
+ yargs "^4.7.1"
+
+websocket-driver@>=0.5.1:
+ version "0.6.5"
+ resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.6.5.tgz#5cb2556ceb85f4373c6d8238aa691c8454e13a36"
+ dependencies:
+ websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+ version "0.1.1"
+ resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.1.tgz#76899499c184b6ef754377c2dbb0cd6cb55d29e7"
+
+whet.extend@~0.9.9:
+ version "0.9.9"
+ resolved "https://registry.yarnpkg.com/whet.extend/-/whet.extend-0.9.9.tgz#f877d5bf648c97e5aa542fadc16d6a259b9c11a1"
+
+which-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f"
+
+which@^1.1.1, which@^1.2.1:
+ version "1.2.11"
+ resolved "https://registry.yarnpkg.com/which/-/which-1.2.11.tgz#c8b2eeea6b8c1659fa7c1dd4fdaabe9533dc5e8b"
+ dependencies:
+ isexe "^1.1.1"
+
+wide-align@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.0.tgz#40edde802a71fea1f070da3e62dcda2e7add96ad"
+ dependencies:
+ string-width "^1.0.1"
+
+window-size@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075"
+
+window-size@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d"
+
+wordwrap@^1.0.0, wordwrap@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
+
+wordwrap@~0.0.2:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107"
+
+wordwrap@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f"
+
+wrap-ansi@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.0.0.tgz#7d30f8f873f9a5bbc3a64dabc8d177e071ae426f"
+ dependencies:
+ string-width "^1.0.1"
+
+wrappy@1:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
+
+wrench@1.5.8:
+ version "1.5.8"
+ resolved "https://registry.yarnpkg.com/wrench/-/wrench-1.5.8.tgz#7a31c97f7869246d76c5cf2f5c977a1c4c8e5ab5"
+
+ws@^1.0.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-1.1.1.tgz#082ddb6c641e85d4bb451f03d52f06eabdb1f018"
+ dependencies:
+ options ">=0.0.5"
+ ultron "1.0.x"
+
+ws@1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-1.0.1.tgz#7d0b2a2e58cddd819039c29c9de65045e1b310e9"
+ dependencies:
+ options ">=0.0.5"
+ ultron "1.0.x"
+
+xml-char-classes@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/xml-char-classes/-/xml-char-classes-1.0.0.tgz#64657848a20ffc5df583a42ad8a277b4512bbc4d"
+
+xml2js@0.4.4:
+ version "0.4.4"
+ resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.4.tgz#3111010003008ae19240eba17497b57c729c555d"
+ dependencies:
+ sax "0.6.x"
+ xmlbuilder ">=1.0.0"
+
+xmlbuilder@>=1.0.0:
+ version "8.2.2"
+ resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-8.2.2.tgz#69248673410b4ba42e1a6136551d2922335aa773"
+
+xmlhttprequest-ssl@1.5.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.1.tgz#3b7741fea4a86675976e908d296d4445961faa67"
+
+xtend@^4.0.0, xtend@~4.0.0:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af"
+
+y18n@^3.2.1:
+ version "3.2.1"
+ resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41"
+
+yargs-parser@^2.4.1:
+ version "2.4.1"
+ resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4"
+ dependencies:
+ camelcase "^3.0.0"
+ lodash.assign "^4.0.6"
+
+yargs@^4.7.1:
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0"
+ dependencies:
+ cliui "^3.2.0"
+ decamelize "^1.1.1"
+ get-caller-file "^1.0.1"
+ lodash.assign "^4.0.3"
+ os-locale "^1.4.0"
+ read-pkg-up "^1.0.1"
+ require-directory "^2.1.1"
+ require-main-filename "^1.0.1"
+ set-blocking "^2.0.0"
+ string-width "^1.0.1"
+ which-module "^1.0.0"
+ window-size "^0.2.0"
+ y18n "^3.2.1"
+ yargs-parser "^2.4.1"
+
+yargs@~3.10.0:
+ version "3.10.0"
+ resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1"
+ dependencies:
+ camelcase "^1.0.2"
+ cliui "^2.1.0"
+ decamelize "^1.0.0"
+ window-size "0.1.0"
+
+yeast@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
+
+yn@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/yn/-/yn-1.2.0.tgz#d237a4c533f279b2b89d3acac2db4b8c795e4a63"
+
+zone.js@~0.6.17:
+ version "0.6.26"
+ resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.6.26.tgz#067c13b8b80223a89b62e9dc82680f09762c4636"
+