From 35518da69176828b200262405be65915e6424111 Mon Sep 17 00:00:00 2001 From: "kamil.mysliwiec" Date: Sat, 26 Aug 2017 10:12:55 +0200 Subject: [PATCH] Initial commit --- .angular-cli.json | 62 + .editorconfig | 13 + .gitignore | 46 + README.md | 28 + e2e/app.e2e-spec.ts | 14 + e2e/app.po.ts | 11 + e2e/tsconfig.e2e.json | 14 + karma.conf.js | 33 + package-lock.json | 7620 +++++++++++++++++ package.json | 66 + protractor.conf.js | 28 + src/app/app-routing.module.ts | 77 + src/app/app.component.css | 0 src/app/app.component.html | 1 + src/app/app.component.spec.ts | 32 + src/app/app.component.ts | 17 + src/app/app.module.ts | 59 + src/app/common/animations/index.ts | 1 + .../common/animations/router.animations.ts | 18 + .../directives/match-height.directive.ts | 39 + src/app/common/index.ts | 1 + src/app/constants.ts | 0 src/app/core/config/config.service.ts | 6 + src/app/core/config/dev-config.service.ts | 5 + src/app/core/config/prod-config.service.ts | 5 + src/app/core/core.module.ts | 21 + src/app/homepage/footer/footer.component.html | 18 + src/app/homepage/footer/footer.component.scss | 67 + .../homepage/footer/footer.component.spec.ts | 25 + src/app/homepage/footer/footer.component.ts | 9 + src/app/homepage/header/header.component.html | 13 + src/app/homepage/header/header.component.scss | 80 + .../homepage/header/header.component.spec.ts | 25 + src/app/homepage/header/header.component.ts | 12 + src/app/homepage/homepage.component.html | 26 + src/app/homepage/homepage.component.scss | 62 + src/app/homepage/homepage.component.spec.ts | 25 + src/app/homepage/homepage.component.ts | 31 + .../menu/menu-item/menu-item.component.html | 22 + .../menu/menu-item/menu-item.component.scss | 72 + .../menu-item/menu-item.component.spec.ts | 25 + .../menu/menu-item/menu-item.component.ts | 18 + src/app/homepage/menu/menu.component.html | 9 + src/app/homepage/menu/menu.component.scss | 23 + src/app/homepage/menu/menu.component.spec.ts | 25 + src/app/homepage/menu/menu.component.ts | 94 + .../async-components.component.html | 3 + .../async-components.component.scss | 0 .../async-components.component.spec.ts | 25 + .../async-components.component.ts | 15 + .../dependency-injection.component.html | 3 + .../dependency-injection.component.scss | 0 .../dependency-injection.component.spec.ts | 25 + .../dependency-injection.component.ts | 15 + .../components/components.component.html | 67 + .../components/components.component.scss | 0 .../components/components.component.spec.ts | 25 + .../pages/components/components.component.ts | 73 + .../controllers/controllers.component.html | 198 + .../controllers/controllers.component.scss | 0 .../controllers/controllers.component.spec.ts | 25 + .../controllers/controllers.component.ts | 132 + .../exception-filters.component.html | 11 + .../exception-filters.component.scss | 0 .../exception-filters.component.spec.ts | 25 + .../exception-filters.component.ts | 15 + .../first-steps/first-steps.component.html | 39 + .../first-steps/first-steps.component.scss | 0 .../first-steps/first-steps.component.spec.ts | 25 + .../first-steps/first-steps.component.ts | 23 + .../pages/guards/guards.component.html | 3 + .../pages/guards/guards.component.scss | 0 .../pages/guards/guards.component.spec.ts | 25 + .../homepage/pages/guards/guards.component.ts | 15 + .../introduction/introduction.component.html | 38 + .../introduction/introduction.component.scss | 0 .../introduction.component.spec.ts | 25 + .../introduction/introduction.component.ts | 10 + .../middlewares/middlewares.component.html | 89 + .../middlewares/middlewares.component.scss | 0 .../middlewares/middlewares.component.spec.ts | 25 + .../middlewares/middlewares.component.ts | 135 + .../pages/modules/modules.component.html | 89 + .../pages/modules/modules.component.scss | 0 .../pages/modules/modules.component.spec.ts | 25 + .../pages/modules/modules.component.ts | 81 + src/app/homepage/pages/page/page.component.ts | 33 + .../homepage/pages/pipes/pipes.component.html | 3 + .../homepage/pages/pipes/pipes.component.scss | 0 .../pages/pipes/pipes.component.spec.ts | 25 + .../homepage/pages/pipes/pipes.component.ts | 15 + src/app/store/app-store.module.ts | 27 + src/app/store/common/index.ts | 1 + .../common/interfaces/action.interface.ts | 4 + .../common/interfaces/app-state.interface.ts | 8 + src/app/store/common/interfaces/index.ts | 2 + src/app/store/initial-state.ts | 7 + src/app/store/root-effects.ts | 3 + src/app/store/root-reducers.ts | 8 + .../user/interfaces/user-state.interface.ts | 3 + src/app/store/user/reducer.ts | 7 + src/app/store/user/selectors.ts | 3 + src/assets/.gitkeep | 0 src/assets/Components_1.png | Bin 0 -> 41177 bytes src/assets/Controllers_1.png | Bin 0 -> 39314 bytes src/assets/Filter_1.png | Bin 0 -> 48727 bytes src/assets/Gateways_1.png | Bin 0 -> 57343 bytes src/assets/Microservices_1.png | Bin 0 -> 38175 bytes src/assets/Middlewares_1.png | Bin 0 -> 28390 bytes src/assets/Modules_1.png | Bin 0 -> 50224 bytes src/assets/Pipe_1.png | Bin 0 -> 49136 bytes src/assets/Redis_1.png | Bin 0 -> 30643 bytes src/assets/Shared_Module_1.png | Bin 0 -> 31268 bytes src/assets/css/fontawesome.min.css | 4 + src/assets/css/perfect-scrollbar.min.css | 2 + src/assets/fonts/Montserrat-Black.eot | Bin 0 -> 68166 bytes src/assets/fonts/Montserrat-Black.otf | Bin 0 -> 50692 bytes src/assets/fonts/Montserrat-Black.svg | Bin 0 -> 50692 bytes src/assets/fonts/Montserrat-Black.ttf | Bin 0 -> 67868 bytes src/assets/fonts/Montserrat-Black.woff | Bin 0 -> 33468 bytes src/assets/fonts/Montserrat-Bold.eot | Bin 0 -> 69618 bytes src/assets/fonts/Montserrat-Bold.otf | Bin 0 -> 53324 bytes src/assets/fonts/Montserrat-Bold.svg | Bin 0 -> 53324 bytes src/assets/fonts/Montserrat-Bold.ttf | Bin 0 -> 69340 bytes src/assets/fonts/Montserrat-Bold.woff | Bin 0 -> 35264 bytes src/assets/fonts/Montserrat-ExtraLight.eot | Bin 0 -> 70634 bytes src/assets/fonts/Montserrat-ExtraLight.otf | Bin 0 -> 50488 bytes src/assets/fonts/Montserrat-ExtraLight.svg | Bin 0 -> 50488 bytes src/assets/fonts/Montserrat-ExtraLight.ttf | Bin 0 -> 70316 bytes src/assets/fonts/Montserrat-ExtraLight.woff | Bin 0 -> 33504 bytes src/assets/fonts/Montserrat-Light.eot | Bin 0 -> 70658 bytes src/assets/fonts/Montserrat-Light.otf | Bin 0 -> 51376 bytes src/assets/fonts/Montserrat-Light.svg | Bin 0 -> 51376 bytes src/assets/fonts/Montserrat-Light.ttf | Bin 0 -> 70360 bytes src/assets/fonts/Montserrat-Light.woff | Bin 0 -> 34360 bytes src/assets/fonts/Montserrat-Medium.eot | Bin 0 -> 70490 bytes src/assets/fonts/Montserrat-Medium.otf | Bin 0 -> 52764 bytes src/assets/fonts/Montserrat-Medium.svg | Bin 0 -> 52764 bytes src/assets/fonts/Montserrat-Medium.ttf | Bin 0 -> 70188 bytes src/assets/fonts/Montserrat-Medium.woff | Bin 0 -> 35332 bytes src/assets/fonts/Montserrat-Regular.eot | Bin 0 -> 70334 bytes src/assets/fonts/Montserrat-Regular.otf | Bin 0 -> 52376 bytes src/assets/fonts/Montserrat-Regular.svg | Bin 0 -> 52376 bytes src/assets/fonts/Montserrat-Regular.ttf | Bin 0 -> 70044 bytes src/assets/fonts/Montserrat-Regular.woff | Bin 0 -> 35244 bytes src/assets/fonts/Montserrat-SemiBold.eot | Bin 0 -> 70206 bytes src/assets/fonts/Montserrat-SemiBold.svg | Bin 0 -> 52684 bytes src/assets/fonts/Montserrat-SemiBold.ttf | Bin 0 -> 69896 bytes src/assets/fonts/Montserrat-SemiBold.woff | Bin 0 -> 35156 bytes src/assets/fonts/Montserrat-Thin.eot | Bin 0 -> 70066 bytes src/assets/fonts/Montserrat-Thin.otf | Bin 0 -> 47612 bytes src/assets/fonts/Montserrat-Thin.svg | Bin 0 -> 47612 bytes src/assets/fonts/Montserrat-Thin.ttf | Bin 0 -> 69772 bytes src/assets/fonts/Montserrat-Thin.woff | Bin 0 -> 30924 bytes src/assets/fonts/fontawesome-webfont.eot | Bin 0 -> 70807 bytes src/assets/fonts/fontawesome-webfont.svg | 655 ++ src/assets/fonts/fontawesome-webfont.ttf | Bin 0 -> 142072 bytes src/assets/fonts/fontawesome-webfont.woff | Bin 0 -> 83588 bytes src/assets/fonts/fontawesome-webfont.woff2 | Bin 0 -> 66624 bytes src/assets/js/highlight.min.js | 3 + src/assets/js/prism.js | 942 ++ src/assets/js/typescript.min.js | 1 + src/assets/logo.png | Bin 0 -> 9108 bytes src/assets/menu.png | Bin 0 -> 3514 bytes src/environments/environment.prod.ts | 3 + src/environments/environment.ts | 8 + src/favicon.ico | Bin 0 -> 1150 bytes src/index.html | 19 + src/main.ts | 11 + src/polyfills.ts | 74 + src/scss/hljs.scss | 156 + src/scss/reset.scss | 43 + src/scss/utils.scss | 205 + src/scss/variables.scss | 8 + src/styles.css | 1 + src/styles.scss | 145 + src/test.ts | 32 + src/tsconfig.app.json | 13 + src/tsconfig.spec.json | 20 + src/typings.d.ts | 5 + src/vendor.ts | 14 + tsconfig.json | 22 + tslint.json | 139 + 183 files changed, 12876 insertions(+) create mode 100644 .angular-cli.json create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 README.md create mode 100644 e2e/app.e2e-spec.ts create mode 100644 e2e/app.po.ts create mode 100644 e2e/tsconfig.e2e.json create mode 100644 karma.conf.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 protractor.conf.js create mode 100644 src/app/app-routing.module.ts create mode 100644 src/app/app.component.css create mode 100644 src/app/app.component.html create mode 100644 src/app/app.component.spec.ts create mode 100644 src/app/app.component.ts create mode 100644 src/app/app.module.ts create mode 100644 src/app/common/animations/index.ts create mode 100644 src/app/common/animations/router.animations.ts create mode 100644 src/app/common/directives/match-height.directive.ts create mode 100644 src/app/common/index.ts create mode 100644 src/app/constants.ts create mode 100644 src/app/core/config/config.service.ts create mode 100644 src/app/core/config/dev-config.service.ts create mode 100644 src/app/core/config/prod-config.service.ts create mode 100644 src/app/core/core.module.ts create mode 100644 src/app/homepage/footer/footer.component.html create mode 100644 src/app/homepage/footer/footer.component.scss create mode 100644 src/app/homepage/footer/footer.component.spec.ts create mode 100644 src/app/homepage/footer/footer.component.ts create mode 100644 src/app/homepage/header/header.component.html create mode 100644 src/app/homepage/header/header.component.scss create mode 100644 src/app/homepage/header/header.component.spec.ts create mode 100644 src/app/homepage/header/header.component.ts create mode 100644 src/app/homepage/homepage.component.html create mode 100644 src/app/homepage/homepage.component.scss create mode 100644 src/app/homepage/homepage.component.spec.ts create mode 100644 src/app/homepage/homepage.component.ts create mode 100644 src/app/homepage/menu/menu-item/menu-item.component.html create mode 100644 src/app/homepage/menu/menu-item/menu-item.component.scss create mode 100644 src/app/homepage/menu/menu-item/menu-item.component.spec.ts create mode 100644 src/app/homepage/menu/menu-item/menu-item.component.ts create mode 100644 src/app/homepage/menu/menu.component.html create mode 100644 src/app/homepage/menu/menu.component.scss create mode 100644 src/app/homepage/menu/menu.component.spec.ts create mode 100644 src/app/homepage/menu/menu.component.ts create mode 100644 src/app/homepage/pages/advanced/async-components/async-components.component.html create mode 100644 src/app/homepage/pages/advanced/async-components/async-components.component.scss create mode 100644 src/app/homepage/pages/advanced/async-components/async-components.component.spec.ts create mode 100644 src/app/homepage/pages/advanced/async-components/async-components.component.ts create mode 100644 src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.html create mode 100644 src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.scss create mode 100644 src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.spec.ts create mode 100644 src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.ts create mode 100644 src/app/homepage/pages/components/components.component.html create mode 100644 src/app/homepage/pages/components/components.component.scss create mode 100644 src/app/homepage/pages/components/components.component.spec.ts create mode 100644 src/app/homepage/pages/components/components.component.ts create mode 100644 src/app/homepage/pages/controllers/controllers.component.html create mode 100644 src/app/homepage/pages/controllers/controllers.component.scss create mode 100644 src/app/homepage/pages/controllers/controllers.component.spec.ts create mode 100644 src/app/homepage/pages/controllers/controllers.component.ts create mode 100644 src/app/homepage/pages/exception-filters/exception-filters.component.html create mode 100644 src/app/homepage/pages/exception-filters/exception-filters.component.scss create mode 100644 src/app/homepage/pages/exception-filters/exception-filters.component.spec.ts create mode 100644 src/app/homepage/pages/exception-filters/exception-filters.component.ts create mode 100644 src/app/homepage/pages/first-steps/first-steps.component.html create mode 100644 src/app/homepage/pages/first-steps/first-steps.component.scss create mode 100644 src/app/homepage/pages/first-steps/first-steps.component.spec.ts create mode 100644 src/app/homepage/pages/first-steps/first-steps.component.ts create mode 100644 src/app/homepage/pages/guards/guards.component.html create mode 100644 src/app/homepage/pages/guards/guards.component.scss create mode 100644 src/app/homepage/pages/guards/guards.component.spec.ts create mode 100644 src/app/homepage/pages/guards/guards.component.ts create mode 100644 src/app/homepage/pages/introduction/introduction.component.html create mode 100644 src/app/homepage/pages/introduction/introduction.component.scss create mode 100644 src/app/homepage/pages/introduction/introduction.component.spec.ts create mode 100644 src/app/homepage/pages/introduction/introduction.component.ts create mode 100644 src/app/homepage/pages/middlewares/middlewares.component.html create mode 100644 src/app/homepage/pages/middlewares/middlewares.component.scss create mode 100644 src/app/homepage/pages/middlewares/middlewares.component.spec.ts create mode 100644 src/app/homepage/pages/middlewares/middlewares.component.ts create mode 100644 src/app/homepage/pages/modules/modules.component.html create mode 100644 src/app/homepage/pages/modules/modules.component.scss create mode 100644 src/app/homepage/pages/modules/modules.component.spec.ts create mode 100644 src/app/homepage/pages/modules/modules.component.ts create mode 100644 src/app/homepage/pages/page/page.component.ts create mode 100644 src/app/homepage/pages/pipes/pipes.component.html create mode 100644 src/app/homepage/pages/pipes/pipes.component.scss create mode 100644 src/app/homepage/pages/pipes/pipes.component.spec.ts create mode 100644 src/app/homepage/pages/pipes/pipes.component.ts create mode 100644 src/app/store/app-store.module.ts create mode 100644 src/app/store/common/index.ts create mode 100644 src/app/store/common/interfaces/action.interface.ts create mode 100644 src/app/store/common/interfaces/app-state.interface.ts create mode 100644 src/app/store/common/interfaces/index.ts create mode 100644 src/app/store/initial-state.ts create mode 100644 src/app/store/root-effects.ts create mode 100644 src/app/store/root-reducers.ts create mode 100644 src/app/store/user/interfaces/user-state.interface.ts create mode 100644 src/app/store/user/reducer.ts create mode 100644 src/app/store/user/selectors.ts create mode 100644 src/assets/.gitkeep create mode 100644 src/assets/Components_1.png create mode 100644 src/assets/Controllers_1.png create mode 100644 src/assets/Filter_1.png create mode 100644 src/assets/Gateways_1.png create mode 100644 src/assets/Microservices_1.png create mode 100644 src/assets/Middlewares_1.png create mode 100644 src/assets/Modules_1.png create mode 100644 src/assets/Pipe_1.png create mode 100644 src/assets/Redis_1.png create mode 100644 src/assets/Shared_Module_1.png create mode 100644 src/assets/css/fontawesome.min.css create mode 100644 src/assets/css/perfect-scrollbar.min.css create mode 100644 src/assets/fonts/Montserrat-Black.eot create mode 100644 src/assets/fonts/Montserrat-Black.otf create mode 100644 src/assets/fonts/Montserrat-Black.svg create mode 100644 src/assets/fonts/Montserrat-Black.ttf create mode 100644 src/assets/fonts/Montserrat-Black.woff create mode 100644 src/assets/fonts/Montserrat-Bold.eot create mode 100644 src/assets/fonts/Montserrat-Bold.otf create mode 100644 src/assets/fonts/Montserrat-Bold.svg create mode 100644 src/assets/fonts/Montserrat-Bold.ttf create mode 100644 src/assets/fonts/Montserrat-Bold.woff create mode 100644 src/assets/fonts/Montserrat-ExtraLight.eot create mode 100644 src/assets/fonts/Montserrat-ExtraLight.otf create mode 100644 src/assets/fonts/Montserrat-ExtraLight.svg create mode 100644 src/assets/fonts/Montserrat-ExtraLight.ttf create mode 100644 src/assets/fonts/Montserrat-ExtraLight.woff create mode 100644 src/assets/fonts/Montserrat-Light.eot create mode 100644 src/assets/fonts/Montserrat-Light.otf create mode 100644 src/assets/fonts/Montserrat-Light.svg create mode 100644 src/assets/fonts/Montserrat-Light.ttf create mode 100644 src/assets/fonts/Montserrat-Light.woff create mode 100644 src/assets/fonts/Montserrat-Medium.eot create mode 100644 src/assets/fonts/Montserrat-Medium.otf create mode 100644 src/assets/fonts/Montserrat-Medium.svg create mode 100644 src/assets/fonts/Montserrat-Medium.ttf create mode 100644 src/assets/fonts/Montserrat-Medium.woff create mode 100644 src/assets/fonts/Montserrat-Regular.eot create mode 100644 src/assets/fonts/Montserrat-Regular.otf create mode 100644 src/assets/fonts/Montserrat-Regular.svg create mode 100644 src/assets/fonts/Montserrat-Regular.ttf create mode 100644 src/assets/fonts/Montserrat-Regular.woff create mode 100644 src/assets/fonts/Montserrat-SemiBold.eot create mode 100644 src/assets/fonts/Montserrat-SemiBold.svg create mode 100644 src/assets/fonts/Montserrat-SemiBold.ttf create mode 100644 src/assets/fonts/Montserrat-SemiBold.woff create mode 100644 src/assets/fonts/Montserrat-Thin.eot create mode 100644 src/assets/fonts/Montserrat-Thin.otf create mode 100644 src/assets/fonts/Montserrat-Thin.svg create mode 100644 src/assets/fonts/Montserrat-Thin.ttf create mode 100644 src/assets/fonts/Montserrat-Thin.woff create mode 100644 src/assets/fonts/fontawesome-webfont.eot create mode 100644 src/assets/fonts/fontawesome-webfont.svg create mode 100644 src/assets/fonts/fontawesome-webfont.ttf create mode 100644 src/assets/fonts/fontawesome-webfont.woff create mode 100644 src/assets/fonts/fontawesome-webfont.woff2 create mode 100644 src/assets/js/highlight.min.js create mode 100644 src/assets/js/prism.js create mode 100644 src/assets/js/typescript.min.js create mode 100644 src/assets/logo.png create mode 100644 src/assets/menu.png create mode 100644 src/environments/environment.prod.ts create mode 100644 src/environments/environment.ts create mode 100644 src/favicon.ico create mode 100644 src/index.html create mode 100644 src/main.ts create mode 100644 src/polyfills.ts create mode 100644 src/scss/hljs.scss create mode 100644 src/scss/reset.scss create mode 100644 src/scss/utils.scss create mode 100644 src/scss/variables.scss create mode 100644 src/styles.css create mode 100644 src/styles.scss create mode 100644 src/test.ts create mode 100644 src/tsconfig.app.json create mode 100644 src/tsconfig.spec.json create mode 100644 src/typings.d.ts create mode 100644 src/vendor.ts create mode 100644 tsconfig.json create mode 100644 tslint.json diff --git a/.angular-cli.json b/.angular-cli.json new file mode 100644 index 0000000000..d677284930 --- /dev/null +++ b/.angular-cli.json @@ -0,0 +1,62 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "project": { + "name": "scalio-base2-front" + }, + "apps": [ + { + "root": "src", + "outDir": "dist", + "assets": [ + "assets", + "favicon.ico" + ], + "index": "index.html", + "main": "main.ts", + "polyfills": "polyfills.ts", + "test": "test.ts", + "tsconfig": "tsconfig.app.json", + "testTsconfig": "tsconfig.spec.json", + "prefix": "app", + "styles": [ + "styles.scss" + ], + "scripts": [ + "assets/js/prism.js" + ], + "environmentSource": "environments/environment.ts", + "environments": { + "dev": "environments/environment.ts", + "prod": "environments/environment.prod.ts" + } + } + ], + "e2e": { + "protractor": { + "config": "./protractor.conf.js" + } + }, + "lint": [ + { + "project": "src/tsconfig.app.json", + "exclude": "**/node_modules/**" + }, + { + "project": "src/tsconfig.spec.json", + "exclude": "**/node_modules/**" + }, + { + "project": "e2e/tsconfig.e2e.json", + "exclude": "**/node_modules/**" + } + ], + "test": { + "karma": { + "config": "./karma.conf.js" + } + }, + "defaults": { + "styleExt": "scss", + "component": {} + } +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000000..6e87a003da --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..d8df2b1a1c --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +/.vscode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +testem.log +/typings + +# e2e +/e2e/*.js +/e2e/*.map + +# System Files +.DS_Store +Thumbs.db + +# Mock API +/api/node_modules \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000000..7a25ea531a --- /dev/null +++ b/README.md @@ -0,0 +1,28 @@ +# ScalioBase2Front + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.2.3. + +## Development server + +Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|module`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). +Before running the tests make sure you are serving the app via `ng serve`. + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). diff --git a/e2e/app.e2e-spec.ts b/e2e/app.e2e-spec.ts new file mode 100644 index 0000000000..ecfdb56f8a --- /dev/null +++ b/e2e/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { DocsPage } from './app.po'; + +describe('docs App', () => { + let page: DocsPage; + + beforeEach(() => { + page = new DocsPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getParagraphText()).toEqual('Welcome to app!'); + }); +}); diff --git a/e2e/app.po.ts b/e2e/app.po.ts new file mode 100644 index 0000000000..b9f7d28a0a --- /dev/null +++ b/e2e/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class DocsPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root h1')).getText(); + } +} diff --git a/e2e/tsconfig.e2e.json b/e2e/tsconfig.e2e.json new file mode 100644 index 0000000000..1d9e5edf09 --- /dev/null +++ b/e2e/tsconfig.e2e.json @@ -0,0 +1,14 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "baseUrl": "./", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/karma.conf.js b/karma.conf.js new file mode 100644 index 0000000000..4d9ab9d948 --- /dev/null +++ b/karma.conf.js @@ -0,0 +1,33 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/0.13/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular/cli'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular/cli/plugins/karma') + ], + client:{ + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + reports: [ 'html', 'lcovonly' ], + fixWebpackSourcePaths: true + }, + angularCli: { + environment: 'dev' + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..5a69bd104a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,7620 @@ +{ + "name": "scalio-base2-front", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular/animations": { + "version": "https://registry.npmjs.org/@angular/animations/-/animations-4.3.1.tgz", + "integrity": "sha1-H34LuAPvwhxggkbmdlocZH89Gl8=", + "requires": { + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" + } + }, + "@angular/cdk": { + "version": "https://registry.npmjs.org/@angular/cdk/-/cdk-2.0.0-beta.8.tgz", + "integrity": "sha1-cZYchR376xngheiYv15EYUCPi1c=", + "requires": { + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" + } + }, + "@angular/cli": { + "version": "https://registry.npmjs.org/@angular/cli/-/cli-1.2.3.tgz", + "integrity": "sha1-eOx77OmGV5K5l0WlRAF0m0j/Tqg=", + "dev": true, + "requires": { + "@ngtools/json-schema": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.1.0.tgz", + "@ngtools/webpack": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.5.2.tgz", + "autoprefixer": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "common-tags": "https://registry.npmjs.org/common-tags/-/common-tags-1.4.0.tgz", + "core-object": "https://registry.npmjs.org/core-object/-/core-object-3.1.3.tgz", + "css-loader": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.4.tgz", + "cssnano": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "denodeify": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "diff": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", + "ember-cli-normalize-entity-name": "https://registry.npmjs.org/ember-cli-normalize-entity-name/-/ember-cli-normalize-entity-name-1.0.0.tgz", + "ember-cli-string-utils": "https://registry.npmjs.org/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz", + "exports-loader": "https://registry.npmjs.org/exports-loader/-/exports-loader-0.6.4.tgz", + "extract-text-webpack-plugin": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz", + "file-loader": "https://registry.npmjs.org/file-loader/-/file-loader-0.10.1.tgz", + "fs-extra": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "get-caller-file": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "heimdalljs": "https://registry.npmjs.org/heimdalljs/-/heimdalljs-0.2.5.tgz", + "heimdalljs-logger": "https://registry.npmjs.org/heimdalljs-logger/-/heimdalljs-logger-0.1.9.tgz", + "html-webpack-plugin": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.29.0.tgz", + "inflection": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "inquirer": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.0.tgz", + "isbinaryfile": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", + "istanbul-instrumenter-loader": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-2.0.0.tgz", + "json-loader": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "karma-source-map-support": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.2.0.tgz", + "less": "https://registry.npmjs.org/less/-/less-2.7.2.tgz", + "less-loader": "https://registry.npmjs.org/less-loader/-/less-loader-4.0.5.tgz", + "license-webpack-plugin": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-0.4.3.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "memory-fs": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "node-modules-path": "https://registry.npmjs.org/node-modules-path/-/node-modules-path-1.0.1.tgz", + "node-sass": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz", + "nopt": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "opn": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "portfinder": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "postcss-loader": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-1.3.3.tgz", + "postcss-url": "https://registry.npmjs.org/postcss-url/-/postcss-url-5.1.2.tgz", + "raw-loader": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "resolve": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "rsvp": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "rxjs": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.2.tgz", + "sass-loader": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", + "script-loader": "https://registry.npmjs.org/script-loader/-/script-loader-0.7.0.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "silent-error": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.0.tgz", + "source-map-loader": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.1.tgz", + "style-loader": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.2.tgz", + "stylus": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "stylus-loader": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.1.tgz", + "temp": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "typescript": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", + "url-loader": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", + "walk-sync": "https://registry.npmjs.org/walk-sync/-/walk-sync-0.3.2.tgz", + "webpack": "https://registry.npmjs.org/webpack/-/webpack-2.4.1.tgz", + "webpack-dev-middleware": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz", + "webpack-dev-server": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.4.5.tgz", + "webpack-merge": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-2.6.1.tgz", + "zone.js": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.14.tgz" + } + }, + "@angular/common": { + "version": "https://registry.npmjs.org/@angular/common/-/common-4.3.1.tgz", + "integrity": "sha1-Jg9IenzcoybENr0+qVFceX3i/3I=", + "requires": { + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" + } + }, + "@angular/compiler": { + "version": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.3.1.tgz", + "integrity": "sha1-OiTUns8BrCtuB/Y+N4uP+OJX/gk=", + "requires": { + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" + } + }, + "@angular/compiler-cli": { + "version": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.3.1.tgz", + "integrity": "sha1-ALQa+2+utK71YbhCeASsiICv9jw=", + "dev": true, + "requires": { + "@angular/tsc-wrapped": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.3.1.tgz", + "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "reflect-metadata": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.10.tgz" + }, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "@angular/core": { + "version": "https://registry.npmjs.org/@angular/core/-/core-4.3.1.tgz", + "integrity": "sha1-qdCn1kS5YmBnQmm2iaBP7qYyqNM=", + "requires": { + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" + } + }, + "@angular/flex-layout": { + "version": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-2.0.0-beta.8.tgz", + "integrity": "sha1-uc9XhlqTyhWP5W2FCVJCPySNEDs=" + }, + "@angular/forms": { + "version": "https://registry.npmjs.org/@angular/forms/-/forms-4.3.1.tgz", + "integrity": "sha1-M5FNossUZDD/kBRx5oLHZlRiLf4=", + "requires": { + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" + } + }, + "@angular/http": { + "version": "https://registry.npmjs.org/@angular/http/-/http-4.3.1.tgz", + "integrity": "sha1-5PZh90ZxHojsvqdqPJBbq/l9MVo=", + "requires": { + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" + } + }, + "@angular/language-service": { + "version": "https://registry.npmjs.org/@angular/language-service/-/language-service-4.3.1.tgz", + "integrity": "sha1-mRCDP8id2qw+SNP/r4u4k2GM2hE=", + "dev": true + }, + "@angular/material": { + "version": "https://registry.npmjs.org/@angular/material/-/material-2.0.0-beta.8.tgz", + "integrity": "sha1-qShSq8kmGuomwkAfV2ZFRwvizzg=", + "requires": { + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" + } + }, + "@angular/platform-browser": { + "version": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.3.1.tgz", + "integrity": "sha1-23J7Bu7WS9pd7+xxgV2yak2i9pA=", + "requires": { + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" + } + }, + "@angular/platform-browser-dynamic": { + "version": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.3.1.tgz", + "integrity": "sha1-hANNpgqC7zbn7/2ns63m5kWzMLM=", + "requires": { + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" + } + }, + "@angular/router": { + "version": "https://registry.npmjs.org/@angular/router/-/router-4.3.1.tgz", + "integrity": "sha1-UhnURSYVbYFgZYQRJ2EBZaAVtFA=", + "requires": { + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" + } + }, + "@angular/tsc-wrapped": { + "version": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.3.1.tgz", + "integrity": "sha1-9mFqTSo7vsHN7WZP0fUm7c6Z70E=", + "dev": true, + "requires": { + "tsickle": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz" + } + }, + "@ngrx/core": { + "version": "https://registry.npmjs.org/@ngrx/core/-/core-1.2.0.tgz", + "integrity": "sha1-iCtGq6+i4ObYh8txobLC+j5tDcY=" + }, + "@ngrx/effects": { + "version": "https://registry.npmjs.org/@ngrx/effects/-/effects-4.0.2.tgz", + "integrity": "sha1-MdbRSxyiOAtb4GHpHZoO2w8PJ8c=" + }, + "@ngrx/router-store": { + "version": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-4.0.2.tgz", + "integrity": "sha1-eHyf469g9fkxjtgNP4yKwmAblNo=" + }, + "@ngrx/store": { + "version": "https://registry.npmjs.org/@ngrx/store/-/store-4.0.2.tgz", + "integrity": "sha1-vQOI8ERKeLhwWXOCdKPTtcxD5AI=" + }, + "@ngrx/store-devtools": { + "version": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-4.0.0.tgz", + "integrity": "sha1-t5wkdzIX33/Zc1rSH5y/JTPJbgQ=" + }, + "@ngtools/json-schema": { + "version": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.1.0.tgz", + "integrity": "sha1-w6DFRNYjkqzCgTpCyKDcb1j4aSI=", + "dev": true + }, + "@ngtools/webpack": { + "version": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.5.2.tgz", + "integrity": "sha1-+t7wa6aprA2q+JHQE9rQMda/DCY=", + "dev": true, + "requires": { + "enhanced-resolve": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "magic-string": "https://registry.npmjs.org/magic-string/-/magic-string-0.19.1.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + } + }, + "@types/jasmine": { + "version": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.53.tgz", + "integrity": "sha1-TgzvrQnfXsSMjdQEM1EvhLFWjWE=", + "dev": true + }, + "@types/jasminewd2": { + "version": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.2.tgz", + "integrity": "sha1-X2jh5pe/ELxv2Mvy4Aaj1nEsW2Q=", + "dev": true, + "requires": { + "@types/jasmine": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.53.tgz" + } + }, + "@types/lodash": { + "version": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.71.tgz", + "integrity": "sha1-DcOD94mBIWrHbi8sOv2ZjgRQ5ME=", + "dev": true + }, + "@types/node": { + "version": "https://registry.npmjs.org/@types/node/-/node-6.0.85.tgz", + "integrity": "sha1-7AK/5UphBE8r5E8Ts4nGoOjuBa4=", + "dev": true + }, + "@types/q": { + "version": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.42.tgz", + "integrity": "sha1-dMt3+2BS7a/yqJhN2v2I1BnyXKw=", + "dev": true + }, + "@ultimate/ngxerrors": { + "version": "https://registry.npmjs.org/@ultimate/ngxerrors/-/ngxerrors-1.3.0.tgz", + "integrity": "sha1-K/Io66vjr3l+gPa3GKZsHzD/Mj4=" + }, + "abbrev": { + "version": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", + "dev": true + }, + "accepts": { + "version": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dev": true, + "requires": { + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "negotiator": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz" + } + }, + "acorn": { + "version": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", + "integrity": "sha1-U/4WERH5EquZnuiHqQoLxSgi/XU=", + "dev": true + }, + "acorn-dynamic-import": { + "version": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", + "dev": true, + "requires": { + "acorn": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz" + }, + "dependencies": { + "acorn": { + "version": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "adm-zip": { + "version": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", + "integrity": "sha1-hgbCy/HEJs6MjsABdER/1Jtur8E=", + "dev": true + }, + "after": { + "version": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", + "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", + "dev": true, + "requires": { + "extend": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz" + }, + "dependencies": { + "semver": { + "version": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", + "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=", + "dev": true + } + } + }, + "ajv": { + "version": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz", + "integrity": "sha1-R8aNaehvXZUxA7AHSpQw3GPaXjk=", + "dev": true, + "requires": { + "co": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "fast-deep-equal": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "json-schema-traverse": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" + } + }, + "ajv-keywords": { + "version": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "align-text": { + "version": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "longest": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "repeat-string": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + } + }, + "alphanum-sort": { + "version": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "amdefine": { + "version": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "angular2-highlight-js": { + "version": "https://registry.npmjs.org/angular2-highlight-js/-/angular2-highlight-js-5.0.2.tgz", + "integrity": "sha1-OoPupH5RzyBTKIjMUFnKgCdYzpY=" + }, + "ansi-escapes": { + "version": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", + "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", + "dev": true + }, + "ansi-html": { + "version": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "anymatch": { + "version": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "integrity": "sha1-o+Uvo5FoyCX/V7AkgSbOWo/5VQc=", + "dev": true, + "requires": { + "arrify": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "micromatch": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" + } + }, + "app-root-path": { + "version": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz", + "integrity": "sha1-zWLc+OT9WkF+/GZNLlsQZTxlG0Y=", + "dev": true + }, + "append-transform": { + "version": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz" + } + }, + "aproba": { + "version": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", + "integrity": "sha1-RcZikJTeTpb2k+9+q3SuB5wkD8E=", + "dev": true + }, + "are-we-there-yet": { + "version": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "integrity": "sha1-u13KOCu5TwXhUZQ3PRb9O6HKEQ0=", + "dev": true, + "requires": { + "delegates": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" + } + }, + "argparse": { + "version": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + } + }, + "arr-diff": { + "version": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" + } + }, + "arr-flatten": { + "version": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", + "dev": true + }, + "array-find-index": { + "version": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true, + "optional": true + }, + "array-flatten": { + "version": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "array-slice": { + "version": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "array-union": { + "version": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + } + }, + "array-uniq": { + "version": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arraybuffer.slice": { + "version": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", + "dev": true + }, + "arrify": { + "version": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "asn1.js": { + "version": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "integrity": "sha1-SLokC0WpKA6UdImQull9IWYX/UA=", + "dev": true, + "requires": { + "bn.js": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimalistic-assert": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" + } + }, + "assert": { + "version": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "https://registry.npmjs.org/util/-/util-0.10.3.tgz" + } + }, + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "async": { + "version": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha1-hDGQ/WtzV6C54clW7d3V7IRitU0=", + "dev": true, + "requires": { + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + } + }, + "async-each": { + "version": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-foreach": { + "version": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true, + "optional": true + }, + "asynckit": { + "version": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "autoprefixer": { + "version": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "caniuse-db": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000704.tgz", + "normalize-range": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "num2fraction": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" + } + }, + "aws-sign2": { + "version": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "js-tokens": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" + } + }, + "babel-generator": { + "version": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", + "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "dev": true, + "requires": { + "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "detect-indent": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "jsesc": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "trim-right": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz" + }, + "dependencies": { + "jsesc": { + "version": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + } + } + }, + "babel-messages": { + "version": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" + } + }, + "babel-runtime": { + "version": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", + "dev": true, + "requires": { + "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "regenerator-runtime": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz" + } + }, + "babel-template": { + "version": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "dev": true, + "requires": { + "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "babylon": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + } + }, + "babel-traverse": { + "version": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "dev": true, + "requires": { + "babel-code-frame": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "babel-messages": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "babylon": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "globals": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "invariant": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + } + }, + "babel-types": { + "version": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "dev": true, + "requires": { + "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz", + "esutils": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "to-fast-properties": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz" + } + }, + "babylon": { + "version": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "integrity": "sha1-Pot0AriNIsNCPhN6FXeIOxX/hpo=", + "dev": true + }, + "backo2": { + "version": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + }, + "base64-arraybuffer": { + "version": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "integrity": "sha1-qRlH2h9KUW6jjltOwOw3c2deCIY=", + "dev": true + }, + "base64id": { + "version": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + } + }, + "better-assert": { + "version": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz" + } + }, + "big.js": { + "version": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "integrity": "sha1-TK2iGTZS6zyp7I5VyQFWacmAaXg=", + "dev": true + }, + "binary-extensions": { + "version": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.9.0.tgz", + "integrity": "sha1-ZlBsFs5vTWkopbPNajPKQelB43s=", + "dev": true + }, + "blob": { + "version": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "dev": true + }, + "block-stream": { + "version": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "optional": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + } + }, + "blocking-proxy": { + "version": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-0.0.5.tgz", + "integrity": "sha1-RikF4Nz76pcPQao3Ij3anAexkSs=", + "dev": true, + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz" + }, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "bluebird": { + "version": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, + "bn.js": { + "version": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "integrity": "sha1-3bBI5Q2UgnkAlME+s/z8gzznq0Y=", + "dev": true + }, + "body-parser": { + "version": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", + "integrity": "sha1-+IkqvI+eYn1Crtr7yma/WrmRBO4=", + "dev": true, + "requires": { + "bytes": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "content-type": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "depd": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "http-errors": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "iconv-lite": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "on-finished": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "qs": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "raw-body": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", + "type-is": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz" + }, + "dependencies": { + "bytes": { + "version": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", + "dev": true + }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + } + }, + "iconv-lite": { + "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", + "dev": true + } + } + }, + "boolbase": { + "version": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "boom": { + "version": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + } + }, + "brace-expansion": { + "version": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "concat-map": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + }, + "dependencies": { + "balanced-match": { + "version": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + } + } + }, + "braces": { + "version": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "preserve": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "repeat-element": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz" + } + }, + "brorand": { + "version": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "integrity": "sha1-Xncl297x/Vkw1OurSFZ85FHEigo=", + "dev": true, + "requires": { + "buffer-xor": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "cipher-base": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "create-hash": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "evp_bytestokey": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + } + }, + "browserify-cipher": { + "version": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "dev": true, + "requires": { + "browserify-aes": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "browserify-des": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "evp_bytestokey": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz" + } + }, + "browserify-des": { + "version": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", + "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "dev": true, + "requires": { + "cipher-base": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "des.js": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + } + }, + "browserify-rsa": { + "version": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "randombytes": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz" + } + }, + "browserify-sign": { + "version": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "browserify-rsa": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "create-hash": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "create-hmac": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "elliptic": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "parse-asn1": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz" + } + }, + "browserify-zlib": { + "version": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha1-uzX4pRn2AOD6a4SFJByXnQFB+y0=", + "dev": true, + "requires": { + "pako": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz" + } + }, + "browserslist": { + "version": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000704.tgz", + "electron-to-chromium": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.16.tgz" + } + }, + "buffer": { + "version": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.1.tgz", + "ieee754": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + } + }, + "buffer-xor": { + "version": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "https://registry.npmjs.org/bytes/-/bytes-2.5.0.tgz", + "integrity": "sha1-TJQj6i0lLCcMQbK97+/5u2tiwGo=", + "dev": true + }, + "callsite": { + "version": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camel-case": { + "version": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", + "upper-case": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz" + } + }, + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true, + "optional": true + }, + "camelcase-keys": { + "version": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "map-obj": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + } + }, + "caniuse-api": { + "version": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "caniuse-db": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000704.tgz", + "lodash.memoize": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "lodash.uniq": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz" + } + }, + "caniuse-db": { + "version": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000704.tgz", + "integrity": "sha1-jFqm/tgFjmXHDywfXWP3CIZQcFw=", + "dev": true + }, + "caseless": { + "version": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "requires": { + "align-text": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "lazy-cache": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz" + }, + "dependencies": { + "lazy-cache": { + "version": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + } + } + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + }, + "dependencies": { + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "chokidar": { + "version": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.0.tgz", + "async-each": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "glob-parent": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "is-binary-path": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "readdirp": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz" + } + }, + "cipher-base": { + "version": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=", + "dev": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" + } + }, + "clap": { + "version": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", + "integrity": "sha1-WckP4+E3EEdG/xlGmiemNP9oyFc=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + } + }, + "clean-css": { + "version": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.7.tgz", + "integrity": "sha1-ua6k+FZ5iJzz6ui0A0nsTr390DI=", + "dev": true, + "requires": { + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + } + }, + "cli-cursor": { + "version": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz" + } + }, + "cli-width": { + "version": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", + "dev": true + }, + "clipboard": { + "version": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz", + "integrity": "sha1-Ng1taUbpmnof7zleQrqStem1oWs=", + "optional": true, + "requires": { + "good-listener": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "select": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "tiny-emitter": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.1.tgz" + } + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "wrap-ansi": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + } + } + }, + "clone": { + "version": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", + "dev": true + }, + "clone-deep": { + "version": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "integrity": "sha1-NIxhrpzb4O3+BT2R/0zFIdeQ7eg=", + "dev": true, + "requires": { + "for-own": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "is-plain-object": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "shallow-clone": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz" + } + }, + "co": { + "version": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "https://registry.npmjs.org/q/-/q-1.5.0.tgz" + } + }, + "code-point-at": { + "version": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codelyzer": { + "version": "https://registry.npmjs.org/codelyzer/-/codelyzer-3.0.1.tgz", + "integrity": "sha1-uma3sqpWT+n0XWAEtAA60s8RaCg=", + "dev": true, + "requires": { + "app-root-path": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.0.1.tgz", + "css-selector-tokenizer": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "cssauron": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "semver-dsl": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "sprintf-js": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + } + }, + "color": { + "version": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "color-convert": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "color-string": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz" + } + }, + "color-convert": { + "version": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "dev": true, + "requires": { + "color-name": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + } + }, + "color-name": { + "version": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + } + }, + "colormin": { + "version": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "css-color-names": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "has": "https://registry.npmjs.org/has/-/has-1.0.1.tgz" + } + }, + "colors": { + "version": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combine-lists": { + "version": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", + "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", + "dev": true, + "requires": { + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + } + }, + "combined-stream": { + "version": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + } + }, + "commander": { + "version": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "integrity": "sha1-FXFS/R56bI2YpbcVzzdt+SgARWM=", + "dev": true + }, + "common-tags": { + "version": "https://registry.npmjs.org/common-tags/-/common-tags-1.4.0.tgz", + "integrity": "sha1-EYe+Tz1M8MBCfUP3Tu8fc1AWFMA=", + "dev": true, + "requires": { + "babel-runtime": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.23.0.tgz" + } + }, + "component-bind": { + "version": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", + "dev": true + }, + "component-inherit": { + "version": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "https://registry.npmjs.org/compressible/-/compressible-2.0.10.tgz", + "integrity": "sha1-/tocf3YXkScyspv4zyYlKiC57s0=", + "dev": true, + "requires": { + "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz" + } + }, + "compression": { + "version": "https://registry.npmjs.org/compression/-/compression-1.7.0.tgz", + "integrity": "sha1-AwyfGY8WQ6BX13anOOki2kNzAS0=", + "dev": true, + "requires": { + "accepts": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "bytes": "https://registry.npmjs.org/bytes/-/bytes-2.5.0.tgz", + "compressible": "https://registry.npmjs.org/compressible/-/compressible-2.0.10.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "on-headers": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "vary": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz" + } + }, + "concat-map": { + "version": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concurrently": { + "version": "https://registry.npmjs.org/concurrently/-/concurrently-3.5.0.tgz", + "integrity": "sha1-jPG3cHppFqeKT/W3e7BN7FSzebI=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "commander": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", + "date-fns": "https://registry.npmjs.org/date-fns/-/date-fns-1.28.5.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "rx": "https://registry.npmjs.org/rx/-/rx-2.3.24.tgz", + "spawn-command": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "tree-kill": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.1.0.tgz" + }, + "dependencies": { + "ansi-regex": { + "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", + "dev": true + }, + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "dev": true + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "dev": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "has-ansi": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz" + }, + "dependencies": { + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "dev": true + } + } + }, + "commander": { + "version": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", + "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=", + "dev": true + }, + "has-ansi": { + "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "dev": true, + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + } + }, + "strip-ansi": { + "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "dev": true, + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz" + } + } + } + }, + "connect": { + "version": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz", + "integrity": "sha1-aU6NIGgb/kkCgsiriGvpjwn0L+c=", + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "finalhandler": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", + "parseurl": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "utils-merge": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz" + }, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + } + } + } + }, + "connect-history-api-fallback": { + "version": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz", + "integrity": "sha1-5R0X+PDvDbkKZP20feMFFVbp8Wk=", + "dev": true + }, + "console-browserify": { + "version": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz" + } + }, + "console-control-strings": { + "version": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", + "dev": true + }, + "convert-source-map": { + "version": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "cookie": { + "version": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "core-js": { + "version": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=" + }, + "core-object": { + "version": "https://registry.npmjs.org/core-object/-/core-object-3.1.3.tgz", + "integrity": "sha1-3zmbMxG9sMkJ6Krokp/DwcSyWIA=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + } + }, + "core-util-is": { + "version": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.1.tgz", + "integrity": "sha1-f73G+0dZfV+IF13h32lrZtNuWUQ=", + "dev": true, + "requires": { + "is-directory": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "js-yaml": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "os-homedir": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "parse-json": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "require-from-string": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz" + }, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "create-ecdh": { + "version": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "dev": true, + "requires": { + "bn.js": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "elliptic": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz" + } + }, + "create-hash": { + "version": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "dev": true, + "requires": { + "cipher-base": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "ripemd160": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "sha.js": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz" + } + }, + "create-hmac": { + "version": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "dev": true, + "requires": { + "cipher-base": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "create-hash": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "ripemd160": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "sha.js": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz" + } + }, + "cross-spawn": { + "version": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "which": "https://registry.npmjs.org/which/-/which-1.2.14.tgz" + } + }, + "cryptiles": { + "version": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz" + } + }, + "crypto-browserify": { + "version": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", + "integrity": "sha1-lIlF78Z1ekANbl5a9HGU0QBkJ58=", + "dev": true, + "requires": { + "browserify-cipher": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", + "browserify-sign": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "create-ecdh": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", + "create-hash": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "create-hmac": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "diffie-hellman": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "pbkdf2": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", + "public-encrypt": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "randombytes": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz" + } + }, + "css-color-names": { + "version": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-loader": { + "version": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.4.tgz", + "integrity": "sha1-bPNXkZLONV6LONX0Ldeh8uyJjQ8=", + "dev": true, + "requires": { + "babel-code-frame": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "css-selector-tokenizer": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "cssnano": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "icss-utils": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "lodash.camelcase": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-modules-extract-imports": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "postcss-modules-local-by-default": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "postcss-modules-scope": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "postcss-modules-values": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "source-list-map": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz" + } + }, + "css-parse": { + "version": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-select": { + "version": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "css-what": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "domutils": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "nth-check": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz" + } + }, + "css-selector-tokenizer": { + "version": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "requires": { + "cssesc": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "fastparse": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "regexpu-core": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz" + } + }, + "css-what": { + "version": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssauron": { + "version": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + } + }, + "cssesc": { + "version": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "defined": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "has": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-calc": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "postcss-colormin": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "postcss-convert-values": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "postcss-discard-comments": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "postcss-discard-duplicates": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "postcss-discard-empty": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "postcss-discard-overridden": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "postcss-discard-unused": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "postcss-filter-plugins": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "postcss-merge-idents": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "postcss-merge-longhand": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "postcss-merge-rules": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "postcss-minify-font-values": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "postcss-minify-gradients": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "postcss-minify-params": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "postcss-minify-selectors": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "postcss-normalize-charset": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "postcss-normalize-url": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "postcss-ordered-values": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "postcss-reduce-idents": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "postcss-reduce-initial": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "postcss-reduce-transforms": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "postcss-svgo": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "postcss-unique-selectors": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "postcss-zindex": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz" + } + }, + "csso": { + "version": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "https://registry.npmjs.org/clap/-/clap-1.2.0.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + } + }, + "currently-unhandled": { + "version": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "optional": true, + "requires": { + "array-find-index": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" + } + }, + "custom-event": { + "version": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "dashdash": { + "version": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "date-fns": { + "version": "https://registry.npmjs.org/date-fns/-/date-fns-1.28.5.tgz", + "integrity": "sha1-JXz8RdMi30XvVlhmWWfuhBzXP68=", + "dev": true + }, + "date-now": { + "version": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + } + }, + "decamelize": { + "version": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "default-require-extensions": { + "version": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" + } + }, + "defined": { + "version": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "del": { + "version": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "is-path-cwd": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "is-path-in-cwd": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" + } + }, + "delayed-stream": { + "version": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegate": { + "version": "https://registry.npmjs.org/delegate/-/delegate-3.1.3.tgz", + "integrity": "sha1-moJRp3fXAl+qVXN7w7BxdCEnqf0=", + "optional": true + }, + "delegates": { + "version": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "denodeify": { + "version": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=", + "dev": true + }, + "depd": { + "version": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", + "dev": true + }, + "des.js": { + "version": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimalistic-assert": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" + } + }, + "destroy": { + "version": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" + } + }, + "detect-node": { + "version": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "integrity": "sha1-ogM8CcyOFY03dI+951B4Mr1s4Sc=", + "dev": true + }, + "di": { + "version": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", + "integrity": "sha1-BWaVFQ16qTI3yn43isOxaCt5Y7k=", + "dev": true + }, + "diffie-hellman": { + "version": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", + "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "dev": true, + "requires": { + "bn.js": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "miller-rabin": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "randombytes": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz" + } + }, + "directory-encoder": { + "version": "https://registry.npmjs.org/directory-encoder/-/directory-encoder-0.7.2.tgz", + "integrity": "sha1-WbTiqk8lQi9sY7UntGL14tDdLFg=", + "dev": true, + "requires": { + "fs-extra": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.23.1.tgz", + "handlebars": "https://registry.npmjs.org/handlebars/-/handlebars-1.3.0.tgz", + "img-stats": "https://registry.npmjs.org/img-stats/-/img-stats-0.5.2.tgz" + }, + "dependencies": { + "fs-extra": { + "version": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.23.1.tgz", + "integrity": "sha1-ZhHbpq3yq43Jxp+rN83fiBgVfj0=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "jsonfile": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" + } + }, + "jsonfile": { + "version": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } + } + } + }, + "dom-converter": { + "version": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "requires": { + "utila": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz" + }, + "dependencies": { + "utila": { + "version": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "dom-serialize": { + "version": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "ent": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "extend": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "void-elements": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz" + } + }, + "dom-serializer": { + "version": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "entities": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz" + }, + "dependencies": { + "domelementtype": { + "version": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", + "dev": true + }, + "domelementtype": { + "version": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" + } + }, + "domutils": { + "version": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" + } + }, + "ecc-jsbn": { + "version": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + } + }, + "ee-first": { + "version": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.16.tgz", + "integrity": "sha1-0OAmc1dUdwkBrjAaIWZMukXZL30=", + "dev": true + }, + "elliptic": { + "version": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", + "integrity": "sha1-ysmvh2LIWDYYcAPI3+GT5eLq5d8=", + "dev": true, + "requires": { + "bn.js": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "brorand": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "hash.js": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "hmac-drbg": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimalistic-assert": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "minimalistic-crypto-utils": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + } + }, + "ember-cli-normalize-entity-name": { + "version": "https://registry.npmjs.org/ember-cli-normalize-entity-name/-/ember-cli-normalize-entity-name-1.0.0.tgz", + "integrity": "sha1-CxT3vLxZmqEXtf3cgeT9A8S61bc=", + "dev": true, + "requires": { + "silent-error": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.0.tgz" + } + }, + "ember-cli-string-utils": { + "version": "https://registry.npmjs.org/ember-cli-string-utils/-/ember-cli-string-utils-1.1.0.tgz", + "integrity": "sha1-ObZ3/CgF9VFzc1N2/O8njqpEUqE=", + "dev": true + }, + "emojis-list": { + "version": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=", + "dev": true + }, + "engine.io": { + "version": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", + "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", + "dev": true, + "requires": { + "accepts": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "base64id": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "cookie": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "engine.io-parser": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "ws": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz" + }, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz" + } + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-client": { + "version": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", + "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", + "dev": true, + "requires": { + "component-emitter": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "component-inherit": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "engine.io-parser": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "has-cors": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "indexof": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "parsejson": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "parseqs": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "parseuri": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "ws": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "xmlhttprequest-ssl": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", + "yeast": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz" + }, + "dependencies": { + "component-emitter": { + "version": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz" + } + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "dev": true, + "requires": { + "after": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "arraybuffer.slice": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "base64-arraybuffer": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "blob": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "has-binary": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "wtf-8": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz" + } + }, + "enhanced-resolve": { + "version": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", + "integrity": "sha1-lQlk7MfwMypCMhtnOzjcj/FVNbM=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "memory-fs": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "tapable": "https://registry.npmjs.org/tapable/-/tapable-0.2.7.tgz" + } + }, + "ensure-posix-path": { + "version": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.0.2.tgz", + "integrity": "sha1-pls+QtC3HPxYXrd0+ZQ8jZuRsMI=", + "dev": true + }, + "ent": { + "version": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true, + "requires": { + "prr": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz" + } + }, + "error-ex": { + "version": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + } + }, + "escape-html": { + "version": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esutils": { + "version": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "integrity": "sha1-b2Ma7zNtbEY2K1F2QETOIWvjwFE=", + "dev": true + }, + "eventemitter3": { + "version": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "integrity": "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=", + "dev": true + }, + "events": { + "version": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": "https://registry.npmjs.org/original/-/original-1.0.0.tgz" + } + }, + "evp_bytestokey": { + "version": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", + "integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", + "dev": true, + "requires": { + "create-hash": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz" + } + }, + "exit": { + "version": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-braces": { + "version": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", + "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", + "dev": true, + "requires": { + "array-slice": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "array-unique": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "braces": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz" + }, + "dependencies": { + "braces": { + "version": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", + "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", + "dev": true, + "requires": { + "expand-range": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz" + } + }, + "expand-range": { + "version": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", + "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", + "dev": true, + "requires": { + "is-number": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", + "repeat-string": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz" + } + }, + "is-number": { + "version": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", + "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", + "dev": true + }, + "repeat-string": { + "version": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", + "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", + "dev": true + } + } + }, + "expand-brackets": { + "version": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz" + } + }, + "expand-range": { + "version": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz" + } + }, + "exports-loader": { + "version": "https://registry.npmjs.org/exports-loader/-/exports-loader-0.6.4.tgz", + "integrity": "sha1-1w/GEhl1s1/BKDDPUnVL4nQPyIY=", + "dev": true, + "requires": { + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + } + }, + "express": { + "version": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", + "integrity": "sha1-urZdDwOqgMNYQIly/HAPkWlEtmI=", + "dev": true, + "requires": { + "accepts": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "array-flatten": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "content-disposition": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "content-type": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "cookie": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "cookie-signature": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "depd": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "encodeurl": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "escape-html": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "etag": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "finalhandler": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", + "fresh": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "merge-descriptors": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "methods": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "on-finished": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "parseurl": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "path-to-regexp": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "proxy-addr": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", + "qs": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "range-parser": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "send": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", + "serve-static": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", + "setprototypeof": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "statuses": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "type-is": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "utils-merge": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "vary": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz" + }, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + } + } + } + }, + "extend": { + "version": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "external-editor": { + "version": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", + "integrity": "sha1-HtkZnanL/i7y96MbL96LDRI2iXI=", + "dev": true, + "requires": { + "iconv-lite": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", + "jschardet": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.0.tgz", + "tmp": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz" + } + }, + "extglob": { + "version": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + } + }, + "extract-text-webpack-plugin": { + "version": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-2.1.2.tgz", + "integrity": "sha1-dW7076gVXDaBgz+8NNpTuUF0bWw=", + "dev": true, + "requires": { + "async": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "schema-utils": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "webpack-sources": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz" + } + }, + "extsprintf": { + "version": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "dev": true + }, + "fast-deep-equal": { + "version": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz", + "integrity": "sha1-liVqO8l1WV6zbYLpkp0GDYk0Of8=", + "dev": true + }, + "fastparse": { + "version": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "faye-websocket": { + "version": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz" + } + }, + "figures": { + "version": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + } + }, + "file-loader": { + "version": "https://registry.npmjs.org/file-loader/-/file-loader-0.10.1.tgz", + "integrity": "sha1-gVA0EZiR/GRB+1pkwRvJPCLd2EI=", + "dev": true, + "requires": { + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz" + } + }, + "filename-regex": { + "version": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + } + }, + "fill-range": { + "version": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "isobject": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "randomatic": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "repeat-element": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "repeat-string": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + }, + "dependencies": { + "isobject": { + "version": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + } + } + } + }, + "finalhandler": { + "version": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.0.3.tgz", + "integrity": "sha1-70fneVDpmXgOhgIqVg4yF+DQzIk=", + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "encodeurl": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "escape-html": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "on-finished": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "parseurl": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "statuses": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "unpipe": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + }, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + } + } + } + }, + "find-up": { + "version": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "flatten": { + "version": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", + "dev": true + }, + "for-in": { + "version": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + } + }, + "forever-agent": { + "version": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz" + } + }, + "forwarded": { + "version": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=", + "dev": true + }, + "fresh": { + "version": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "integrity": "sha1-9HTKXmqSRtb9jglTz6m5yAWvp44=", + "dev": true + }, + "fs-access": { + "version": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz" + } + }, + "fs-extra": { + "version": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "jsonfile": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "universalify": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz" + } + }, + "fs.realpath": { + "version": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fstream": { + "version": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" + } + }, + "function-bind": { + "version": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", + "dev": true + }, + "gauge": { + "version": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "https://registry.npmjs.org/aproba/-/aproba-1.1.2.tgz", + "console-control-strings": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "has-unicode": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "signal-exit": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "wide-align": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + } + } + }, + "gaze": { + "version": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "integrity": "sha1-hHIkZ3rbiHDWeSV+0ziP22HkAQU=", + "dev": true, + "optional": true, + "requires": { + "globule": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz" + } + }, + "get-caller-file": { + "version": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "dev": true + }, + "get-stdin": { + "version": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "getpass": { + "version": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "dev": true, + "requires": { + "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + } + }, + "glob-base": { + "version": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + } + }, + "glob-parent": { + "version": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + } + }, + "globals": { + "version": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha1-qjiWs+abSH8X4x7SFD1pqOMMLYo=", + "dev": true + }, + "globby": { + "version": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "arrify": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "globule": { + "version": "https://registry.npmjs.org/globule/-/globule-1.2.0.tgz", + "integrity": "sha1-HcScaCLdnoovoAuiopUAboZkvQk=", + "dev": true, + "optional": true, + "requires": { + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + } + }, + "good-listener": { + "version": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "optional": true, + "requires": { + "delegate": "https://registry.npmjs.org/delegate/-/delegate-3.1.3.tgz" + } + }, + "graceful-fs": { + "version": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "hammerjs": { + "version": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, + "handle-thing": { + "version": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "handlebars": { + "version": "https://registry.npmjs.org/handlebars/-/handlebars-1.3.0.tgz", + "integrity": "sha1-npsTCpPjiUkTItl1zz7BgYw3zjQ=", + "dev": true, + "requires": { + "optimist": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "uglify-js": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz" + }, + "dependencies": { + "async": { + "version": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "integrity": "sha1-trvgsGdLnXGXCMo43owjfLUmw9E=", + "dev": true, + "optional": true + }, + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "optional": true, + "requires": { + "amdefine": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + } + }, + "uglify-js": { + "version": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.3.6.tgz", + "integrity": "sha1-+gmEdwtCi3qbKoBY9GNV0U/vIRo=", + "dev": true, + "optional": true, + "requires": { + "async": "https://registry.npmjs.org/async/-/async-0.2.10.tgz", + "optimist": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz" + } + } + } + }, + "har-schema": { + "version": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "requires": { + "ajv": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "har-schema": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz" + }, + "dependencies": { + "ajv": { + "version": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" + } + } + } + }, + "has": { + "version": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "dev": true, + "requires": { + "function-bind": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz" + } + }, + "has-ansi": { + "version": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } + }, + "has-binary": { + "version": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "dev": true, + "requires": { + "isarray": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "dependencies": { + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "has-cors": { + "version": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "has-unicode": { + "version": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "hash-base": { + "version": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "dev": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + } + }, + "hash.js": { + "version": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha1-NA3tvmKQGHFRweodd3o0SJNd+EY=", + "dev": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimalistic-assert": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" + } + }, + "hawk": { + "version": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "cryptiles": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "sntp": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" + } + }, + "he": { + "version": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "heimdalljs": { + "version": "https://registry.npmjs.org/heimdalljs/-/heimdalljs-0.2.5.tgz", + "integrity": "sha1-aqVDCO7nk7ZCz/nPlHgURfN3MKw=", + "dev": true, + "requires": { + "rsvp": "https://registry.npmjs.org/rsvp/-/rsvp-3.2.1.tgz" + }, + "dependencies": { + "rsvp": { + "version": "https://registry.npmjs.org/rsvp/-/rsvp-3.2.1.tgz", + "integrity": "sha1-B8tKXfJa3Z6Cbrxn3Mn9idsn2Eo=", + "dev": true + } + } + }, + "heimdalljs-logger": { + "version": "https://registry.npmjs.org/heimdalljs-logger/-/heimdalljs-logger-0.1.9.tgz", + "integrity": "sha1-12raTkW3u294b8nAEKaOsuL68XY=", + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "heimdalljs": "https://registry.npmjs.org/heimdalljs/-/heimdalljs-0.2.5.tgz" + } + }, + "hmac-drbg": { + "version": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "minimalistic-assert": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "minimalistic-crypto-utils": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + } + }, + "hoek": { + "version": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "hosted-git-info": { + "version": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha1-bWDjSzq7yDEwYsO3mO+NkBoHrzw=", + "dev": true + }, + "hpack.js": { + "version": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "obuf": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "wbuf": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz" + } + }, + "html-comment-regex": { + "version": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz", + "integrity": "sha1-ZouTd26q5V696POtRkswekljYl4=", + "dev": true + }, + "html-entities": { + "version": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.3.tgz", + "integrity": "sha1-SideOxoWY5q7ebTBEZH/DQ/PGrk=", + "dev": true, + "requires": { + "camel-case": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "clean-css": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.7.tgz", + "commander": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "he": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "ncname": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "param-case": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "relateurl": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "uglify-js": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.26.tgz" + } + }, + "html-webpack-plugin": { + "version": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-2.29.0.tgz", + "integrity": "sha1-6Yf0IYU9O2k4yMTIFxhC5f0XryM=", + "dev": true, + "requires": { + "bluebird": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "html-minifier": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.3.tgz", + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "pretty-error": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "toposort": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz" + }, + "dependencies": { + "loader-utils": { + "version": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "emojis-list": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "json5": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + } + } + } + }, + "htmlparser2": { + "version": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "domhandler": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "domutils": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz" + }, + "dependencies": { + "domutils": { + "version": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz" + } + }, + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + } + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-deceiver": { + "version": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "integrity": "sha1-X4uO2YrKVFZWv1cplzh/kEpyIlc=", + "dev": true, + "requires": { + "depd": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "setprototypeof": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "statuses": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz" + } + }, + "http-proxy": { + "version": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "integrity": "sha1-Bt/ykpUr9k2+hHH6nfcwZtTzd0I=", + "dev": true, + "requires": { + "eventemitter3": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz", + "requires-port": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + } + }, + "http-proxy-middleware": { + "version": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "integrity": "sha1-ZC6ISIUdZvCdTxJJEoRtuutBuDM=", + "dev": true, + "requires": { + "http-proxy": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "micromatch": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz" + }, + "dependencies": { + "is-extglob": { + "version": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + } + } + } + }, + "http-signature": { + "version": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "jsprim": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "sshpk": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz" + } + }, + "https-browserify": { + "version": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", + "dev": true + }, + "https-proxy-agent": { + "version": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", + "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", + "dev": true, + "requires": { + "agent-base": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "extend": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz" + } + }, + "iconv-lite": { + "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", + "integrity": "sha1-I9hlaxaq5nQqwpcy6o8DNqR4nPI=", + "dev": true + }, + "icss-replace-symbols": { + "version": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz" + }, + "dependencies": { + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "dev": true, + "requires": { + "color-convert": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz" + } + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "integrity": "sha1-2+xJQ20q4V9TYRTnbRRlbNvA9E0=", + "dev": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz" + } + }, + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz", + "integrity": "sha1-iQZ6nOixH4qEy8URfvwwQZoIV7M=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz" + } + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha1-ZaS7JjHpDgJCDbpVVMN1pHVLuDY=", + "dev": true, + "requires": { + "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" + } + } + } + }, + "ieee754": { + "version": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "dev": true + }, + "image-size": { + "version": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "img-stats": { + "version": "https://registry.npmjs.org/img-stats/-/img-stats-0.5.2.tgz", + "integrity": "sha1-wgNJbELy2esuWrgjL6dWurMsnis=", + "dev": true, + "requires": { + "xmldom": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz" + } + }, + "in-publish": { + "version": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true, + "optional": true + }, + "indent-string": { + "version": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "optional": true, + "requires": { + "repeating": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" + } + }, + "indexes-of": { + "version": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflection": { + "version": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz", + "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=", + "dev": true + }, + "inflight": { + "version": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + }, + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=", + "dev": true + }, + "inquirer": { + "version": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.0.tgz", + "integrity": "sha1-RbRMIWDHKddXjFQGCz7tlEh7tCs=", + "dev": true, + "requires": { + "ansi-escapes": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "cli-cursor": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "cli-width": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", + "external-editor": "https://registry.npmjs.org/external-editor/-/external-editor-2.0.4.tgz", + "figures": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "mute-stream": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "run-async": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "rx-lite": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "rx-lite-aggregates": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "through": "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + }, + "dependencies": { + "ansi-regex": { + "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "dev": true, + "requires": { + "color-convert": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz" + } + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "integrity": "sha1-2+xJQ20q4V9TYRTnbRRlbNvA9E0=", + "dev": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz" + } + }, + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "strip-ansi": { + "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz" + } + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha1-ZaS7JjHpDgJCDbpVVMN1pHVLuDY=", + "dev": true, + "requires": { + "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" + } + } + } + }, + "interpret": { + "version": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "integrity": "sha1-y8NcYu7uc/Gat7EKgBURQBr8D5A=", + "dev": true + }, + "invariant": { + "version": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz" + } + }, + "invert-kv": { + "version": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "ipaddr.js": { + "version": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz", + "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=", + "dev": true + }, + "is-absolute-url": { + "version": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-arrayish": { + "version": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.9.0.tgz" + } + }, + "is-buffer": { + "version": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true + }, + "is-builtin-module": { + "version": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz" + } + }, + "is-directory": { + "version": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" + } + }, + "is-extendable": { + "version": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz" + } + }, + "is-number": { + "version": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + } + }, + "is-path-cwd": { + "version": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.0.tgz", + "integrity": "sha1-ZHdYK4IU1gI0YJRWcAO+ip6sBNw=", + "dev": true, + "requires": { + "is-path-inside": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz" + } + }, + "is-path-inside": { + "version": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.0.tgz", + "integrity": "sha1-/AbloWg/vaE95mev9xe7wQpI838=", + "dev": true, + "requires": { + "path-is-inside": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz" + } + }, + "is-plain-obj": { + "version": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=", + "dev": true, + "requires": { + "isobject": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" + } + }, + "is-posix-bracket": { + "version": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-promise": { + "version": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, + "is-svg": { + "version": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.1.tgz" + } + }, + "is-typedarray": { + "version": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", + "integrity": "sha1-Sj6XTsDLqQBNP8bN5yCeppNopiE=", + "dev": true + }, + "isexe": { + "version": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-api": { + "version": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.11.tgz", + "integrity": "sha1-/MC0YeKzvaceMFFVE4I4doJX2d4=", + "dev": true, + "requires": { + "async": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "fileset": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "istanbul-lib-coverage": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "istanbul-lib-hook": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", + "istanbul-lib-instrument": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz", + "istanbul-lib-report": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "istanbul-lib-source-maps": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", + "istanbul-reports": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "js-yaml": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + } + }, + "istanbul-instrumenter-loader": { + "version": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-2.0.0.tgz", + "integrity": "sha1-5UkpAKsLuoNe+oAkywC+mz7qJwA=", + "dev": true, + "requires": { + "convert-source-map": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "istanbul-lib-instrument": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz", + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + }, + "dependencies": { + "loader-utils": { + "version": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "emojis-list": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "json5": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha1-c7+5mIhSmUFck9OKPprfeEp3qdo=", + "dev": true + }, + "istanbul-lib-hook": { + "version": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", + "integrity": "sha1-3WYH8DB2V4/n1vKmMM8UO0m6zdw=", + "dev": true, + "requires": { + "append-transform": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz" + } + }, + "istanbul-lib-instrument": { + "version": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz", + "integrity": "sha1-6f2SDkdn89Ge3HZeLWs/XMvQ7qg=", + "dev": true, + "requires": { + "babel-generator": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", + "babel-template": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", + "babel-traverse": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "babel-types": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "babylon": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "istanbul-lib-coverage": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" + } + }, + "istanbul-lib-report": { + "version": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha1-8OVfVmVf+jQiIIC3oM1HYOFAX8k=", + "dev": true, + "requires": { + "istanbul-lib-coverage": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "path-parse": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz" + } + }, + "istanbul-lib-source-maps": { + "version": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", + "integrity": "sha1-pv4ay6jOCO68Y45XLilNJnAIqgw=", + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "istanbul-lib-coverage": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + } + }, + "istanbul-reports": { + "version": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha1-BCvlyJ4XW8P4ZSPKqynAFOd/7k4=", + "dev": true, + "requires": { + "handlebars": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz" + }, + "dependencies": { + "async": { + "version": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "right-align": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + }, + "dependencies": { + "wordwrap": { + "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true, + "optional": true + } + } + }, + "handlebars": { + "version": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", + "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "dev": true, + "requires": { + "async": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "optimist": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "uglify-js": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz" + } + }, + "optimist": { + "version": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + } + }, + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + } + }, + "uglify-js": { + "version": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "uglify-to-browserify": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "yargs": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz" + }, + "dependencies": { + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true, + "optional": true + } + } + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "cliui": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "window-size": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + } + } + } + }, + "jasmine": { + "version": "https://registry.npmjs.org/jasmine/-/jasmine-2.6.0.tgz", + "integrity": "sha1-ayLnCIPo5YnUVjRhU7TSBt2+IX8=", + "dev": true, + "requires": { + "exit": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "jasmine-core": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.4.tgz" + } + }, + "jasmine-core": { + "version": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.4.tgz", + "integrity": "sha1-3skmzQqfoof7bbXHVfpIfnTOysU=", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.1.1.tgz", + "integrity": "sha1-Wm1Yq11hvqcwn7wnkjlRF1axtYg=", + "dev": true, + "requires": { + "colors": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz" + } + }, + "jasminewd2": { + "version": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.1.0.tgz", + "integrity": "sha1-2llSddGuYx3nNqwKfH2Fyfc+9lI=", + "dev": true + }, + "js-base64": { + "version": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", + "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=", + "dev": true + }, + "js-tokens": { + "version": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "esprima": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz" + } + }, + "jsbn": { + "version": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jschardet": { + "version": "https://registry.npmjs.org/jschardet/-/jschardet-1.5.0.tgz", + "integrity": "sha1-ph8xAwalpxGI4bGs0IrdPPuwix4=", + "dev": true + }, + "jsesc": { + "version": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + }, + "json-loader": { + "version": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "integrity": "sha1-3KFKcCNf+C8KyaOr62DTN6NlGF0=", + "dev": true + }, + "json-schema": { + "version": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify": { + "version": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz" + } + }, + "json-stringify-safe": { + "version": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } + }, + "jsonify": { + "version": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "dev": true, + "requires": { + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "json-schema": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "verror": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "karma": { + "version": "https://registry.npmjs.org/karma/-/karma-1.7.0.tgz", + "integrity": "sha1-b3oaQGRG+i4YfslTmGmPTO5HYmk=", + "dev": true, + "requires": { + "bluebird": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "body-parser": "https://registry.npmjs.org/body-parser/-/body-parser-1.17.2.tgz", + "chokidar": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "colors": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "combine-lists": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", + "connect": "https://registry.npmjs.org/connect/-/connect-3.6.2.tgz", + "core-js": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "di": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "dom-serialize": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "expand-braces": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "http-proxy": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.16.2.tgz", + "isbinaryfile": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.2.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "log4js": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "mime": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "optimist": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "qjobs": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", + "range-parser": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "socket.io": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "tmp": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "useragent": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz" + }, + "dependencies": { + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "optimist": { + "version": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + } + } + } + }, + "karma-chrome-launcher": { + "version": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.1.1.tgz", + "integrity": "sha1-IWh5xorATY1RQOmWGboEtZr9Rs8=", + "dev": true, + "requires": { + "fs-access": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "which": "https://registry.npmjs.org/which/-/which-1.2.14.tgz" + } + }, + "karma-cli": { + "version": "https://registry.npmjs.org/karma-cli/-/karma-cli-1.0.1.tgz", + "integrity": "sha1-rmw8WKMTodALRRZMRVubhs4X+WA=", + "dev": true, + "requires": { + "resolve": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.3.0.tgz", + "integrity": "sha1-0ULNnFVzHJ42Pvc3To7xoxvr+ts=", + "dev": true, + "requires": { + "istanbul-api": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.11.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + } + }, + "karma-jasmine": { + "version": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.0.tgz", + "integrity": "sha1-IuTAa/mhguUpTR9wXjczgRuBCs8=", + "dev": true + }, + "karma-jasmine-html-reporter": { + "version": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", + "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", + "dev": true, + "requires": { + "karma-jasmine": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.0.tgz" + } + }, + "karma-source-map-support": { + "version": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.2.0.tgz", + "integrity": "sha1-G/gee7SwiWJ6s1LsQXnhF8QGpUA=", + "dev": true, + "requires": { + "source-map-support": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz" + } + }, + "kind-of": { + "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + }, + "lazy-cache": { + "version": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + }, + "lcid": { + "version": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz" + } + }, + "less": { + "version": "https://registry.npmjs.org/less/-/less-2.7.2.tgz", + "integrity": "sha1-No1sxz4fsDmBGDKAkYdDxdz5s98=", + "dev": true, + "requires": { + "errno": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "image-size": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "mime": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "promise": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "request": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + } + }, + "less-loader": { + "version": "https://registry.npmjs.org/less-loader/-/less-loader-4.0.5.tgz", + "integrity": "sha1-rhVadAbKxqzSk9eFWH/P8PR4xN0=", + "dev": true, + "requires": { + "clone": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + }, + "dependencies": { + "clone": { + "version": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", + "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", + "dev": true + } + } + }, + "license-webpack-plugin": { + "version": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-0.4.3.tgz", + "integrity": "sha1-+diNTrwEQHoAYejMrCZXH4jlGhY=", + "dev": true, + "requires": { + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + } + }, + "load-json-file": { + "version": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "parse-json": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" + } + }, + "loader-runner": { + "version": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "integrity": "sha1-9IKuqC1UPgeSFwDVpG7yb9rGuKI=", + "dev": true + }, + "loader-utils": { + "version": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "emojis-list": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "json5": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz" + } + }, + "lodash": { + "version": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + }, + "lodash.assign": { + "version": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true, + "optional": true + }, + "lodash.camelcase": { + "version": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.clonedeep": { + "version": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.memoize": { + "version": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.mergewith": { + "version": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "integrity": "sha1-FQzwoWeR9ZA7iJHqsVRgknS96lU=", + "dev": true, + "optional": true + }, + "lodash.tail": { + "version": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "lodash.uniq": { + "version": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log4js": { + "version": "https://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", + "dev": true, + "requires": { + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz" + }, + "dependencies": { + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + } + }, + "semver": { + "version": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "longest": { + "version": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz" + } + }, + "loud-rejection": { + "version": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "optional": true, + "requires": { + "currently-unhandled": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "signal-exit": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" + } + }, + "lower-case": { + "version": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", + "integrity": "sha1-Yi4y6CSItJJ5EUpPns9F581rulU=", + "dev": true, + "optional": true, + "requires": { + "pseudomap": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "yallist": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" + } + }, + "macaddress": { + "version": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz", + "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", + "dev": true + }, + "magic-string": { + "version": "https://registry.npmjs.org/magic-string/-/magic-string-0.19.1.tgz", + "integrity": "sha1-FNdoATyvLsj96hakmvgvw3fnUgE=", + "dev": true, + "requires": { + "vlq": "https://registry.npmjs.org/vlq/-/vlq-0.2.2.tgz" + } + }, + "make-error": { + "version": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz", + "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=", + "dev": true + }, + "map-obj": { + "version": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "matcher-collection": { + "version": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-1.0.4.tgz", + "integrity": "sha1-L2auCGmZbynkPQtiyD3R1D5YF1U=", + "dev": true, + "requires": { + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + } + }, + "math-expression-evaluator": { + "version": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, + "media-typer": { + "version": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "memory-fs": { + "version": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" + } + }, + "meow": { + "version": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "optional": true, + "requires": { + "camelcase-keys": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "loud-rejection": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "map-obj": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "read-pkg-up": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "redent": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "trim-newlines": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" + }, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": true + } + } + }, + "merge-descriptors": { + "version": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "array-unique": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "braces": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "expand-brackets": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "extglob": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "filename-regex": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "normalize-path": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "object.omit": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "parse-glob": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "regex-cache": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz" + } + }, + "miller-rabin": { + "version": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.0.tgz", + "integrity": "sha1-SmL7HUKTPAVYOYL0xxb2+55sbT0=", + "dev": true, + "requires": { + "bn.js": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "brorand": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + } + }, + "mime": { + "version": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "integrity": "sha1-WR2E02U6awtKO5343lqoEI5y5eA=", + "dev": true + }, + "mime-db": { + "version": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", + "dev": true + }, + "mime-types": { + "version": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", + "dev": true, + "requires": { + "mime-db": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz" + } + }, + "mimic-fn": { + "version": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz", + "integrity": "sha1-5md4PZLonb00KBi1IwudYqZyrRg=", + "dev": true + }, + "minimalistic-assert": { + "version": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", + "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "dev": true, + "requires": { + "brace-expansion": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz" + } + }, + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mixin-object": { + "version": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "is-extendable": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + }, + "dependencies": { + "for-in": { + "version": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz" + } + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "mute-stream": { + "version": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "nan": { + "version": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "integrity": "sha1-5P805slf37WuzAjeZZb0NgWn20U=", + "dev": true, + "optional": true + }, + "ncname": { + "version": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", + "integrity": "sha1-W1etGLHKCShk72Kwse2BlPODtxw=", + "dev": true, + "requires": { + "xml-char-classes": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz" + } + }, + "negotiator": { + "version": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "ng2-prism": { + "version": "https://registry.npmjs.org/ng2-prism/-/ng2-prism-2.3.2.tgz", + "integrity": "sha1-8FiyOWzG4J8M0nfgW/K/wpHQJGc=", + "requires": { + "ng2-src-directive": "https://registry.npmjs.org/ng2-src-directive/-/ng2-src-directive-0.0.10.tgz", + "prismjs": "git://github.com/PrismJS/prism.git#5400af9eacef8dc7262cc354c8b2a863c6c0a9f1" + } + }, + "ng2-progressbar": { + "version": "https://registry.npmjs.org/ng2-progressbar/-/ng2-progressbar-1.3.0.tgz", + "integrity": "sha1-0Op0dc2i/b4yFHk+GcVu9/m9LDE=" + }, + "ng2-src-directive": { + "version": "https://registry.npmjs.org/ng2-src-directive/-/ng2-src-directive-0.0.10.tgz", + "integrity": "sha1-HB9yLKeLRKMWm8wbv55R6lkx3Ts=" + }, + "ngx-perfect-scrollbar": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-4.5.3.tgz", + "integrity": "sha512-XM5oyHFQCutV8IzAAIxbIWSTmVTgiijzm5IV2IUZcouOOdyXRlGKqdeLMUCM2OVuNjs88oWtxDz0I1qVyvzL8A==", + "requires": { + "perfect-scrollbar": "0.7.1" + } + }, + "no-case": { + "version": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz", + "integrity": "sha1-euuhxzpSGEJlVUt9wDuvcg34AIE=", + "dev": true, + "requires": { + "lower-case": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz" + } + }, + "node-gyp": { + "version": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "integrity": "sha1-m/vlRWIoYoSDjnUOrAUpWFP6HGA=", + "dev": true, + "optional": true, + "requires": { + "fstream": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "nopt": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "npmlog": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "osenv": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "request": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "tar": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "which": "https://registry.npmjs.org/which/-/which-1.2.14.tgz" + }, + "dependencies": { + "nopt": { + "version": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "optional": true, + "requires": { + "abbrev": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz" + } + } + } + }, + "node-libs-browser": { + "version": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", + "integrity": "sha1-o6WeyXAkmFtG6Vg3lkb5bEthZkY=", + "dev": true, + "requires": { + "assert": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "browserify-zlib": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "buffer": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "console-browserify": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "constants-browserify": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "crypto-browserify": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.11.1.tgz", + "domain-browser": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.1.7.tgz", + "events": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "https-browserify": "https://registry.npmjs.org/https-browserify/-/https-browserify-0.0.1.tgz", + "os-browserify": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "path-browserify": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "process": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "punycode": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "querystring-es3": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "stream-browserify": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "stream-http": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "timers-browserify": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", + "tty-browserify": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "url": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "util": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "vm-browserify": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz" + }, + "dependencies": { + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "node-modules-path": { + "version": "https://registry.npmjs.org/node-modules-path/-/node-modules-path-1.0.1.tgz", + "integrity": "sha1-QAlrCM560OoUaAhjr0ScfHWl0cg=", + "dev": true + }, + "node-sass": { + "version": "https://registry.npmjs.org/node-sass/-/node-sass-4.5.3.tgz", + "integrity": "sha1-0JydEXlkEjnRuX/8YjH9zsU+FWg=", + "dev": true, + "optional": true, + "requires": { + "async-foreach": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "cross-spawn": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "gaze": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "get-stdin": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "in-publish": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "lodash.assign": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "lodash.clonedeep": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "lodash.mergewith": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", + "meow": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "nan": "https://registry.npmjs.org/nan/-/nan-2.6.2.tgz", + "node-gyp": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", + "npmlog": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "request": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "sass-graph": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "stdout-stream": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz" + } + }, + "nopt": { + "version": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "requires": { + "abbrev": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", + "osenv": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz" + } + }, + "normalize-package-data": { + "version": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", + "dev": true, + "requires": { + "hosted-git-info": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "is-builtin-module": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "validate-npm-package-license": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz" + } + }, + "normalize-path": { + "version": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz" + } + }, + "normalize-range": { + "version": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "prepend-http": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "query-string": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "sort-keys": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz" + } + }, + "npmlog": { + "version": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=", + "dev": true, + "requires": { + "are-we-there-yet": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", + "console-control-strings": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "gauge": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "set-blocking": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + } + }, + "nth-check": { + "version": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + } + }, + "null-check": { + "version": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "num2fraction": { + "version": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object.omit": { + "version": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "is-extendable": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" + }, + "dependencies": { + "for-own": { + "version": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + } + } + } + }, + "obuf": { + "version": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "integrity": "sha1-EEEktsYCxnlogaBCVB0220OlJk4=", + "dev": true + }, + "on-finished": { + "version": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" + } + }, + "on-headers": { + "version": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + } + }, + "onetime": { + "version": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.1.0.tgz" + } + }, + "opn": { + "version": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", + "dev": true, + "requires": { + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "optimist": { + "version": "https://registry.npmjs.org/optimist/-/optimist-0.3.7.tgz", + "integrity": "sha1-yQlBrVnkJzMokjB00s8ufLxuwNk=", + "dev": true, + "requires": { + "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + } + }, + "options": { + "version": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "original": { + "version": "https://registry.npmjs.org/original/-/original-1.0.0.tgz", + "integrity": "sha1-kUf5P6FpbQS+YeAb1QuurKZWvTs=", + "dev": true, + "requires": { + "url-parse": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz" + }, + "dependencies": { + "url-parse": { + "version": "https://registry.npmjs.org/url-parse/-/url-parse-1.0.5.tgz", + "integrity": "sha1-CFSGBCKv3P7+tsllxmLUgAFpkns=", + "dev": true, + "requires": { + "querystringify": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "requires-port": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + } + } + } + }, + "os-browserify": { + "version": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.2.1.tgz", + "integrity": "sha1-Y/xMzuXS13Y9Jrv4YBB45sLgBE8=", + "dev": true + }, + "os-homedir": { + "version": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz" + } + }, + "os-tmpdir": { + "version": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", + "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", + "dev": true, + "requires": { + "os-homedir": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "os-tmpdir": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + } + }, + "pako": { + "version": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=", + "dev": true + }, + "param-case": { + "version": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "https://registry.npmjs.org/no-case/-/no-case-2.3.1.tgz" + } + }, + "parse-asn1": { + "version": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "dev": true, + "requires": { + "asn1.js": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.9.1.tgz", + "browserify-aes": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.0.6.tgz", + "create-hash": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "evp_bytestokey": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", + "pbkdf2": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz" + } + }, + "parse-glob": { + "version": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "is-dotfile": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "is-extglob": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "is-glob": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz" + } + }, + "parse-json": { + "version": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz" + } + }, + "parsejson": { + "version": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", + "dev": true, + "requires": { + "better-assert": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" + } + }, + "parseqs": { + "version": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" + } + }, + "parseuri": { + "version": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz" + } + }, + "parseurl": { + "version": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=", + "dev": true + }, + "path-browserify": { + "version": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-exists": { + "version": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "path-is-absolute": { + "version": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-to-regexp": { + "version": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "pinkie-promise": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + } + }, + "pbkdf2": { + "version": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.12.tgz", + "integrity": "sha1-vjZ4XFBn6kjYBv+SMojF91C2uKI=", + "dev": true, + "requires": { + "create-hash": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "create-hmac": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", + "ripemd160": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "sha.js": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz" + } + }, + "perfect-scrollbar": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-0.7.1.tgz", + "integrity": "sha1-DCVvucXO5AHWCimWh6P5phSH4NU=" + }, + "performance-now": { + "version": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "pify": { + "version": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + } + }, + "portfinder": { + "version": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "integrity": "sha1-uzLs2HwnEErm7kS1o8y/Drsa7ek=", + "dev": true, + "requires": { + "async": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz" + }, + "dependencies": { + "async": { + "version": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + } + } + }, + "postcss": { + "version": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "js-base64": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz" + } + }, + "postcss-calc": { + "version": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-message-helpers": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "reduce-css-calc": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz" + } + }, + "postcss-colormin": { + "version": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "requires": { + "colormin": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" + } + }, + "postcss-convert-values": { + "version": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" + } + }, + "postcss-discard-comments": { + "version": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz" + } + }, + "postcss-discard-duplicates": { + "version": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz" + } + }, + "postcss-discard-empty": { + "version": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz" + } + }, + "postcss-discard-overridden": { + "version": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz" + } + }, + "postcss-discard-unused": { + "version": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "uniqs": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" + } + }, + "postcss-filter-plugins": { + "version": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.2.tgz", + "integrity": "sha1-bYWGJTTXNaxCDkqFgG4fXUKG2Ew=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "uniqid": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz" + } + }, + "postcss-load-config": { + "version": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "dev": true, + "requires": { + "cosmiconfig": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.1.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "postcss-load-options": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "postcss-load-plugins": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz" + } + }, + "postcss-load-options": { + "version": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "dev": true, + "requires": { + "cosmiconfig": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.1.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + } + }, + "postcss-load-plugins": { + "version": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "dev": true, + "requires": { + "cosmiconfig": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.1.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + } + }, + "postcss-loader": { + "version": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-1.3.3.tgz", + "integrity": "sha1-piHqH6KQYqg5cqRvVEhncTAZFus=", + "dev": true, + "requires": { + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-load-config": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz" + } + }, + "postcss-merge-idents": { + "version": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" + } + }, + "postcss-merge-longhand": { + "version": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz" + } + }, + "postcss-merge-rules": { + "version": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "caniuse-api": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-selector-parser": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "vendors": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz" + } + }, + "postcss-message-helpers": { + "version": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" + } + }, + "postcss-minify-gradients": { + "version": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" + } + }, + "postcss-minify-params": { + "version": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "uniqs": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" + } + }, + "postcss-minify-selectors": { + "version": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "has": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-selector-parser": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz" + } + }, + "postcss-modules-extract-imports": { + "version": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz" + }, + "dependencies": { + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "dev": true, + "requires": { + "color-convert": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz" + } + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "integrity": "sha1-2+xJQ20q4V9TYRTnbRRlbNvA9E0=", + "dev": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz" + } + }, + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz", + "integrity": "sha1-iQZ6nOixH4qEy8URfvwwQZoIV7M=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz" + } + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha1-ZaS7JjHpDgJCDbpVVMN1pHVLuDY=", + "dev": true, + "requires": { + "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz" + }, + "dependencies": { + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "dev": true, + "requires": { + "color-convert": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz" + } + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "integrity": "sha1-2+xJQ20q4V9TYRTnbRRlbNvA9E0=", + "dev": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz" + } + }, + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz", + "integrity": "sha1-iQZ6nOixH4qEy8URfvwwQZoIV7M=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz" + } + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha1-ZaS7JjHpDgJCDbpVVMN1pHVLuDY=", + "dev": true, + "requires": { + "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" + } + } + } + }, + "postcss-modules-scope": { + "version": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz" + }, + "dependencies": { + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "dev": true, + "requires": { + "color-convert": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz" + } + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "integrity": "sha1-2+xJQ20q4V9TYRTnbRRlbNvA9E0=", + "dev": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz" + } + }, + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz", + "integrity": "sha1-iQZ6nOixH4qEy8URfvwwQZoIV7M=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz" + } + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha1-ZaS7JjHpDgJCDbpVVMN1pHVLuDY=", + "dev": true, + "requires": { + "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" + } + } + } + }, + "postcss-modules-values": { + "version": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz" + }, + "dependencies": { + "ansi-styles": { + "version": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "dev": true, + "requires": { + "color-convert": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz" + } + }, + "chalk": { + "version": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "integrity": "sha1-2+xJQ20q4V9TYRTnbRRlbNvA9E0=", + "dev": true, + "requires": { + "ansi-styles": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "escape-string-regexp": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz" + } + }, + "has-flag": { + "version": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "postcss": { + "version": "https://registry.npmjs.org/postcss/-/postcss-6.0.8.tgz", + "integrity": "sha1-iQZ6nOixH4qEy8URfvwwQZoIV7M=", + "dev": true, + "requires": { + "chalk": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz" + } + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha1-ZaS7JjHpDgJCDbpVVMN1pHVLuDY=", + "dev": true, + "requires": { + "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz" + } + } + } + }, + "postcss-normalize-charset": { + "version": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz" + } + }, + "postcss-normalize-url": { + "version": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "normalize-url": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" + } + }, + "postcss-ordered-values": { + "version": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" + } + }, + "postcss-reduce-idents": { + "version": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" + } + }, + "postcss-reduce-initial": { + "version": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz" + } + }, + "postcss-reduce-transforms": { + "version": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "requires": { + "has": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz" + } + }, + "postcss-selector-parser": { + "version": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", + "indexes-of": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "uniq": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz" + } + }, + "postcss-svgo": { + "version": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "requires": { + "is-svg": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "postcss-value-parser": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "svgo": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz" + } + }, + "postcss-unique-selectors": { + "version": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "uniqs": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" + } + }, + "postcss-url": { + "version": "https://registry.npmjs.org/postcss-url/-/postcss-url-5.1.2.tgz", + "integrity": "sha1-mLMWW+jVkkccsMqt3iwNH4MvEz4=", + "dev": true, + "requires": { + "directory-encoder": "https://registry.npmjs.org/directory-encoder/-/directory-encoder-0.7.2.tgz", + "js-base64": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", + "mime": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz" + } + }, + "postcss-value-parser": { + "version": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "postcss-zindex": { + "version": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "postcss": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz", + "uniqs": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz" + } + }, + "prepend-http": { + "version": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "preserve": { + "version": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-error": { + "version": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "utila": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz" + } + }, + "prismjs": { + "version": "git://github.com/PrismJS/prism.git#5400af9eacef8dc7262cc354c8b2a863c6c0a9f1", + "integrity": "sha1-ylzTmM7zZNbvmtcKkgaisL3V8Zw=", + "requires": { + "clipboard": "https://registry.npmjs.org/clipboard/-/clipboard-1.7.1.tgz" + } + }, + "process": { + "version": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "promise": { + "version": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", + "dev": true, + "optional": true, + "requires": { + "asap": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + } + }, + "protractor": { + "version": "https://registry.npmjs.org/protractor/-/protractor-5.1.2.tgz", + "integrity": "sha1-myIXQXCaTGLVzVPGqt1UpxE36V8=", + "dev": true, + "requires": { + "@types/node": "https://registry.npmjs.org/@types/node/-/node-6.0.85.tgz", + "@types/q": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "@types/selenium-webdriver": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.42.tgz", + "blocking-proxy": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-0.0.5.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "jasmine": "https://registry.npmjs.org/jasmine/-/jasmine-2.6.0.tgz", + "jasminewd2": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.1.0.tgz", + "optimist": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "q": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "saucelabs": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.3.0.tgz", + "selenium-webdriver": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz", + "source-map-support": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "webdriver-js-extender": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz", + "webdriver-manager": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.0.6.tgz" + }, + "dependencies": { + "optimist": { + "version": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + } + }, + "q": { + "version": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "webdriver-manager": { + "version": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.0.6.tgz", + "integrity": "sha1-PfGkgZdwELTL+MnYXHpXeCjA5ws=", + "dev": true, + "requires": { + "adm-zip": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "del": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "ini": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "q": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "request": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "xml2js": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz" + }, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + } + } + }, + "proxy-addr": { + "version": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.1.4.tgz", + "integrity": "sha1-J+VF9pYKRKYn2bREZ+NcG2tM4vM=", + "dev": true, + "requires": { + "forwarded": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", + "ipaddr.js": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.3.0.tgz" + } + }, + "prr": { + "version": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "pseudomap": { + "version": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true, + "optional": true + }, + "public-encrypt": { + "version": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", + "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "dev": true, + "requires": { + "bn.js": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", + "browserify-rsa": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "create-hash": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", + "parse-asn1": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", + "randombytes": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz" + } + }, + "punycode": { + "version": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "q": { + "version": "https://registry.npmjs.org/q/-/q-1.5.0.tgz", + "integrity": "sha1-3QG6ydBtMObyGa7LglPunr3DCPE=", + "dev": true + }, + "qjobs": { + "version": "https://registry.npmjs.org/qjobs/-/qjobs-1.1.5.tgz", + "integrity": "sha1-ZZ3p8s+NzCehSBJ28gU3cnI4LnM=", + "dev": true + }, + "qs": { + "version": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "query-string": { + "version": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "strict-uri-encode": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" + } + }, + "querystring": { + "version": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "https://registry.npmjs.org/querystringify/-/querystringify-0.0.4.tgz", + "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=", + "dev": true + }, + "randomatic": { + "version": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=", + "dev": true, + "requires": { + "is-number": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" + }, + "dependencies": { + "is-number": { + "version": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" + }, + "dependencies": { + "kind-of": { + "version": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, + "kind-of": { + "version": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, + "randombytes": { + "version": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.5.tgz", + "integrity": "sha1-3ACaJGuNCaF3tLegrne8Vw9LG3k=", + "dev": true, + "requires": { + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" + } + }, + "range-parser": { + "version": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "https://registry.npmjs.org/raw-body/-/raw-body-2.2.0.tgz", + "integrity": "sha1-mUl2z2pQlqQRYoQEkvC9xdbn+5Y=", + "dev": true, + "requires": { + "bytes": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "iconv-lite": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "unpipe": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" + }, + "dependencies": { + "bytes": { + "version": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", + "dev": true + }, + "iconv-lite": { + "version": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz", + "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es=", + "dev": true + } + } + }, + "raw-loader": { + "version": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "read-pkg": { + "version": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "normalize-package-data": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "path-type": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" + } + }, + "read-pkg-up": { + "version": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "read-pkg": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" + } + }, + "readable-stream": { + "version": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", + "dev": true, + "requires": { + "core-util-is": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "isarray": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "process-nextick-args": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "string_decoder": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "util-deprecate": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + } + }, + "readdirp": { + "version": "https://registry.npmjs.org/readdirp/-/readdirp-2.1.0.tgz", + "integrity": "sha1-TtCtBg3zBzMAxIRANz9y0cxkLXg=", + "dev": true, + "requires": { + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "set-immediate-shim": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz" + } + }, + "redent": { + "version": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "optional": true, + "requires": { + "indent-string": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "strip-indent": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" + } + }, + "reduce-css-calc": { + "version": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "math-expression-evaluator": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "reduce-function-call": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz" + } + }, + "reduce-function-call": { + "version": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz", + "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=", + "dev": true, + "requires": { + "balanced-match": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz" + } + }, + "reflect-metadata": { + "version": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.10.tgz", + "integrity": "sha1-tPg3BEFqytiZiMmxVjXUfgO5NEo=", + "dev": true + }, + "regenerate": { + "version": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "integrity": "sha1-0ZQcZ7rUN+G+dkM63Vs4X5WxkmA=", + "dev": true + }, + "regenerator-runtime": { + "version": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + }, + "regex-cache": { + "version": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "dev": true, + "requires": { + "is-equal-shallow": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "is-primitive": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz" + } + }, + "regexpu-core": { + "version": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "https://registry.npmjs.org/regenerate/-/regenerate-1.3.2.tgz", + "regjsgen": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "regjsparser": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz" + } + }, + "regjsgen": { + "version": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz" + } + }, + "relateurl": { + "version": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", + "dev": true + }, + "renderkid": { + "version": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "dom-converter": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "htmlparser2": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "utila": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz" + }, + "dependencies": { + "utila": { + "version": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "repeat-element": { + "version": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "dev": true + }, + "repeat-string": { + "version": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz" + } + }, + "request": { + "version": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "requires": { + "aws-sign2": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "aws4": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "caseless": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "combined-stream": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "extend": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "forever-agent": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "form-data": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "har-validator": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "hawk": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "http-signature": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "is-typedarray": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "isstream": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "json-stringify-safe": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "oauth-sign": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "performance-now": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "qs": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "stringstream": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "tough-cookie": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "tunnel-agent": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "uuid": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz" + } + }, + "require-directory": { + "version": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true + }, + "require-main-filename": { + "version": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "integrity": "sha1-ZVkHw0aahoDcLeOidaj91paR8OU=", + "dev": true, + "requires": { + "path-parse": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz" + } + }, + "restore-cursor": { + "version": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "signal-exit": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz" + } + }, + "right-align": { + "version": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "requires": { + "align-text": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz" + } + }, + "rimraf": { + "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true, + "requires": { + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz" + } + }, + "ripemd160": { + "version": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", + "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "dev": true, + "requires": { + "hash-base": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + } + }, + "rsvp": { + "version": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha1-LpZJFZmpbN4bUV1WdKj3qRRSkmo=", + "dev": true + }, + "run-async": { + "version": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz" + } + }, + "rx": { + "version": "https://registry.npmjs.org/rx/-/rx-2.3.24.tgz", + "integrity": "sha1-FPlQpCF9fjXapxu8vljv9o6ksrc=", + "dev": true + }, + "rx-lite": { + "version": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz" + } + }, + "rxjs": { + "version": "https://registry.npmjs.org/rxjs/-/rxjs-5.4.2.tgz", + "integrity": "sha1-KjI2/L8D31e64G/Wly/ZnlwI/Pc=", + "requires": { + "symbol-observable": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz" + } + }, + "safe-buffer": { + "version": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", + "dev": true + }, + "sass-graph": { + "version": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "optional": true, + "requires": { + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "scss-tokenizer": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "yargs": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz" + } + }, + "sass-loader": { + "version": "https://registry.npmjs.org/sass-loader/-/sass-loader-6.0.6.tgz", + "integrity": "sha1-6dXmwfFV+qMqSybXqbcQfCJeQPk=", + "dev": true, + "requires": { + "async": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "clone-deep": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.3.0.tgz", + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "lodash.tail": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "pify": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + }, + "dependencies": { + "pify": { + "version": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "saucelabs": { + "version": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.3.0.tgz", + "integrity": "sha1-0kDoAJ33+ocwbsRXimm6O1xCT+4=", + "dev": true, + "requires": { + "https-proxy-agent": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz" + } + }, + "sax": { + "version": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", + "dev": true + }, + "schema-utils": { + "version": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "https://registry.npmjs.org/ajv/-/ajv-5.2.2.tgz" + } + }, + "script-loader": { + "version": "https://registry.npmjs.org/script-loader/-/script-loader-0.7.0.tgz", + "integrity": "sha1-aF3H5waeDe56kmdPDrxbD1W6pew=", + "dev": true, + "requires": { + "raw-loader": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz" + } + }, + "scss-tokenizer": { + "version": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "optional": true, + "requires": { + "js-base64": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz" + }, + "dependencies": { + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "optional": true, + "requires": { + "amdefine": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + } + } + } + }, + "select": { + "version": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=", + "optional": true + }, + "select-hose": { + "version": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.0.1.tgz", + "integrity": "sha1-ot6l2kqX9mcuiefKcnbO+jZRR6c=", + "dev": true, + "requires": { + "adm-zip": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.7.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "tmp": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "xml2js": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz" + }, + "dependencies": { + "tmp": { + "version": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + } + } + } + }, + "semver": { + "version": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + }, + "semver-dsl": { + "version": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" + } + }, + "send": { + "version": "https://registry.npmjs.org/send/-/send-0.15.3.tgz", + "integrity": "sha1-UBP5+ZAj31DRvZiSwZ4979HVMwk=", + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "depd": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "destroy": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "encodeurl": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "escape-html": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "etag": "https://registry.npmjs.org/etag/-/etag-1.8.0.tgz", + "fresh": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", + "http-errors": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "mime": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "on-finished": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "range-parser": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "statuses": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz" + }, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.6.7.tgz", + "integrity": "sha1-krrR9tBbu2u6Isyoi80OyJTChh4=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + } + }, + "mime": { + "version": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz", + "integrity": "sha1-EV+eO2s9rylZmDyzjxSaLUDrXVM=", + "dev": true + } + } + }, + "serve-index": { + "version": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.0.tgz", + "integrity": "sha1-0rKA/FYNYW7oG0i/D6gqvtJIXOc=", + "dev": true, + "requires": { + "accepts": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "batch": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "escape-html": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "http-errors": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", + "parseurl": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz" + } + }, + "serve-static": { + "version": "https://registry.npmjs.org/serve-static/-/serve-static-1.12.3.tgz", + "integrity": "sha1-n0uhni8wMMVH+K+ZEHg47DjVseI=", + "dev": true, + "requires": { + "encodeurl": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", + "escape-html": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "parseurl": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "send": "https://registry.npmjs.org/send/-/send-0.15.3.tgz" + } + }, + "set-blocking": { + "version": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-immediate-shim": { + "version": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "setimmediate": { + "version": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + }, + "sha.js": { + "version": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.8.tgz", + "integrity": "sha1-NwaMLEdra69ALRSknGf1l5IfY08=", + "dev": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + } + }, + "shallow-clone": { + "version": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "requires": { + "is-extendable": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "kind-of": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "lazy-cache": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "mixin-object": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz" + }, + "dependencies": { + "kind-of": { + "version": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true, + "requires": { + "is-buffer": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz" + } + } + } + }, + "signal-exit": { + "version": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "silent-error": { + "version": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.0.tgz", + "integrity": "sha1-IglwbxyFCp8dENDYQJGLRvJuG8k=", + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz" + } + }, + "sntp": { + "version": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" + } + }, + "socket.io": { + "version": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", + "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "engine.io": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", + "has-binary": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "socket.io-adapter": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "socket.io-client": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", + "socket.io-parser": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz" + }, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz" + } + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "object-assign": { + "version": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "socket.io-parser": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz" + }, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz" + } + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-client": { + "version": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", + "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", + "dev": true, + "requires": { + "backo2": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "component-bind": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "component-emitter": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "engine.io-client": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", + "has-binary": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "indexof": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "object-component": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "parseuri": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "socket.io-parser": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "to-array": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz" + }, + "dependencies": { + "component-emitter": { + "version": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz" + } + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "dev": true, + "requires": { + "component-emitter": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "isarray": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "json3": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz" + }, + "dependencies": { + "debug": { + "version": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + }, + "isarray": { + "version": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "ms": { + "version": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "sockjs": { + "version": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", + "integrity": "sha1-2bKJMWyn33dZXvKZ4HXw+TfrQgc=", + "dev": true, + "requires": { + "faye-websocket": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "uuid": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz" + }, + "dependencies": { + "uuid": { + "version": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=", + "dev": true + } + } + }, + "sockjs-client": { + "version": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.2.tgz", + "integrity": "sha1-8CEqhVDkyUaMjM6u79LjSTwDOtU=", + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "eventsource": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "faye-websocket": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "json3": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "url-parse": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz" + }, + "dependencies": { + "faye-websocket": { + "version": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz" + } + } + } + }, + "sort-keys": { + "version": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" + } + }, + "source-list-map": { + "version": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "source-map-loader": { + "version": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.1.tgz", + "integrity": "sha1-SBJr6SML1H+tBeRqjDwuPS2r5Qc=", + "dev": true, + "requires": { + "async": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz" + }, + "dependencies": { + "async": { + "version": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, + "loader-utils": { + "version": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "emojis-list": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "json5": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + } + }, + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + } + } + } + }, + "source-map-support": { + "version": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "dev": true, + "requires": { + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + } + }, + "spawn-command": { + "version": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=", + "dev": true + }, + "spdx-correct": { + "version": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz" + } + }, + "spdx-expression-parse": { + "version": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "spdy": { + "version": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "handle-thing": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "http-deceiver": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "select-hose": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "spdy-transport": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz" + } + }, + "spdy-transport": { + "version": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.0.20.tgz", + "integrity": "sha1-c15yBUxIayNU/onnAiVgBKOazk0=", + "dev": true, + "requires": { + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "detect-node": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.3.tgz", + "hpack.js": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "obuf": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "wbuf": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz" + } + }, + "sprintf-js": { + "version": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "assert-plus": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "bcrypt-pbkdf": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "dashdash": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "ecc-jsbn": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "getpass": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "jsbn": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "tweetnacl": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + }, + "dependencies": { + "assert-plus": { + "version": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "statuses": { + "version": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + }, + "stdout-stream": { + "version": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.0.tgz", + "integrity": "sha1-osfIWH5U2UJ+qe2zrD8s1SLfN4s=", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" + } + }, + "stream-browserify": { + "version": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz" + } + }, + "stream-http": { + "version": "https://registry.npmjs.org/stream-http/-/stream-http-2.7.2.tgz", + "integrity": "sha1-QKBQ7I3DtTsz2ZCUFcAsC/Gr+60=", + "dev": true, + "requires": { + "builtin-status-codes": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "readable-stream": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "to-arraybuffer": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "xtend": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz" + } + }, + "strict-uri-encode": { + "version": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string_decoder": { + "version": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "dev": true, + "requires": { + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" + } + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", + "dev": true, + "requires": { + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz" + }, + "dependencies": { + "ansi-regex": { + "version": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz" + } + } + } + }, + "stringstream": { + "version": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "strip-ansi": { + "version": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + } + }, + "strip-bom": { + "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + } + }, + "strip-indent": { + "version": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "optional": true, + "requires": { + "get-stdin": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + } + }, + "strip-json-comments": { + "version": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "style-loader": { + "version": "https://registry.npmjs.org/style-loader/-/style-loader-0.13.2.tgz", + "integrity": "sha1-dFMzhM9pjHEEx5URULSXF63C87s=", + "dev": true, + "requires": { + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz" + } + }, + "stylus": { + "version": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "debug": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "sax": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz" + }, + "dependencies": { + "glob": { + "version": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "inflight": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "minimatch": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "once": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + } + }, + "sax": { + "version": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "source-map": { + "version": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz" + } + } + } + }, + "stylus-loader": { + "version": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.1.tgz", + "integrity": "sha1-d/SzT9Aw0lsmF7z1UT21sHMMQIk=", + "dev": true, + "requires": { + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "lodash.clonedeep": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "when": "https://registry.npmjs.org/when/-/when-3.6.4.tgz" + } + }, + "supports-color": { + "version": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz" + } + }, + "svgo": { + "version": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "colors": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "csso": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "js-yaml": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "sax": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "whet.extend": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz" + } + }, + "symbol-observable": { + "version": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.4.tgz", + "integrity": "sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=" + }, + "tapable": { + "version": "https://registry.npmjs.org/tapable/-/tapable-0.2.7.tgz", + "integrity": "sha1-5GwNqsuyuKmLmwzqD0BSEFgX7Vw=", + "dev": true + }, + "tar": { + "version": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "optional": true, + "requires": { + "block-stream": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "fstream": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + } + }, + "temp": { + "version": "https://registry.npmjs.org/temp/-/temp-0.8.3.tgz", + "integrity": "sha1-4Ma8TSa5AxJEEOT+2BEDAU38H1k=", + "dev": true, + "requires": { + "os-tmpdir": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz" + }, + "dependencies": { + "rimraf": { + "version": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz", + "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=", + "dev": true + } + } + }, + "through": { + "version": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "timers-browserify": { + "version": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", + "integrity": "sha1-q0iDz1l9zVCvIRNJoA+8pWrIa4Y=", + "dev": true, + "requires": { + "setimmediate": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + } + }, + "tiny-emitter": { + "version": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.1.tgz", + "integrity": "sha1-5lkZ2R5Ijip49+voJ6VsaxiNUa8=", + "optional": true + }, + "tmp": { + "version": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "dev": true, + "requires": { + "os-tmpdir": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + } + }, + "to-array": { + "version": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "toposort": { + "version": "https://registry.npmjs.org/toposort/-/toposort-1.0.3.tgz", + "integrity": "sha1-8CzYp0vYvi/A6YYRw7rLlaFxhpw=", + "dev": true + }, + "tough-cookie": { + "version": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "dev": true, + "requires": { + "punycode": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + } + }, + "tree-kill": { + "version": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.1.0.tgz", + "integrity": "sha1-yWPc8DciiS7FnLpWnpQLcZVNFyk=", + "dev": true + }, + "trim-newlines": { + "version": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true, + "optional": true + }, + "trim-right": { + "version": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "ts-node": { + "version": "https://registry.npmjs.org/ts-node/-/ts-node-3.0.6.tgz", + "integrity": "sha1-VRJ/95DH7r9rpowebd6UsJqqIeA=", + "dev": true, + "requires": { + "arrify": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "chalk": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "diff": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", + "make-error": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz", + "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "source-map-support": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "tsconfig": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz", + "v8flags": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "yn": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz" + }, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "tsconfig": { + "version": "https://registry.npmjs.org/tsconfig/-/tsconfig-6.0.0.tgz", + "integrity": "sha1-aw6DdgA9evGGT434+J3QBZ/80DI=", + "dev": true, + "requires": { + "strip-bom": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "strip-json-comments": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + }, + "dependencies": { + "strip-bom": { + "version": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "tsickle": { + "version": "https://registry.npmjs.org/tsickle/-/tsickle-0.21.6.tgz", + "integrity": "sha1-U7Abl5xcE/2xOvs/uVgXflmRWI0=", + "dev": true, + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "source-map-support": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz" + }, + "dependencies": { + "minimist": { + "version": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "tslib": { + "version": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", + "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=" + }, + "tslint": { + "version": "https://registry.npmjs.org/tslint/-/tslint-5.3.2.tgz", + "integrity": "sha1-5WRZ+wlacwfxA7hAUhdPXju+9u0=", + "dev": true, + "requires": { + "babel-code-frame": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "colors": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "diff": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", + "glob": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "optimist": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "resolve": "https://registry.npmjs.org/resolve/-/resolve-1.3.3.tgz", + "semver": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", + "tsutils": "https://registry.npmjs.org/tsutils/-/tsutils-2.7.1.tgz" + }, + "dependencies": { + "optimist": { + "version": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" + } + } + } + }, + "tsutils": { + "version": "https://registry.npmjs.org/tsutils/-/tsutils-2.7.1.tgz", + "integrity": "sha1-QRoOlGZSWisoaSYKVWINcpIVXiQ=", + "dev": true, + "requires": { + "tslib": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz" + } + }, + "tty-browserify": { + "version": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz" + } + }, + "tweetnacl": { + "version": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-is": { + "version": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", + "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "dev": true, + "requires": { + "media-typer": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "mime-types": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz" + } + }, + "typescript": { + "version": "https://registry.npmjs.org/typescript/-/typescript-2.3.4.tgz", + "integrity": "sha1-PTgyGCgjHkNPKHUUlZw3qCtin0I=", + "dev": true + }, + "uglify-js": { + "version": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.0.26.tgz", + "integrity": "sha1-uiecpZexP+bGLC2H3VGI5Xp6MjM=", + "dev": true, + "requires": { + "commander": "https://registry.npmjs.org/commander/-/commander-2.11.0.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + } + }, + "uglify-to-browserify": { + "version": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "ultron": { + "version": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "uniq": { + "version": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqid": { + "version": "https://registry.npmjs.org/uniqid/-/uniqid-4.1.1.tgz", + "integrity": "sha1-iSIN32t1GuUrX3JISGNShZa7hME=", + "dev": true, + "requires": { + "macaddress": "https://registry.npmjs.org/macaddress/-/macaddress-0.2.8.tgz" + } + }, + "uniqs": { + "version": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "universalify": { + "version": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", + "dev": true + }, + "unpipe": { + "version": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "upper-case": { + "version": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "url": { + "version": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "querystring": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + }, + "dependencies": { + "punycode": { + "version": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "https://registry.npmjs.org/url-loader/-/url-loader-0.5.9.tgz", + "integrity": "sha1-zI/qgse5Bud3cBklCGnlaemVwpU=", + "dev": true, + "requires": { + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "mime": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz" + } + }, + "url-parse": { + "version": "https://registry.npmjs.org/url-parse/-/url-parse-1.1.9.tgz", + "integrity": "sha1-xn8dd11R8KGJEd17P/rSe7nlvRk=", + "dev": true, + "requires": { + "querystringify": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "requires-port": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + }, + "dependencies": { + "querystringify": { + "version": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=", + "dev": true + } + } + }, + "user-home": { + "version": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", + "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=", + "dev": true + }, + "useragent": { + "version": "https://registry.npmjs.org/useragent/-/useragent-2.2.1.tgz", + "integrity": "sha1-z1k+9PLRdYdei7ZY6pLhik/QbY4=", + "dev": true, + "requires": { + "lru-cache": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", + "tmp": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz" + }, + "dependencies": { + "lru-cache": { + "version": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.2.4.tgz", + "integrity": "sha1-bGWGGb7PFAMdDQtZSxYELOTcBj0=", + "dev": true + } + } + }, + "util": { + "version": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "dependencies": { + "inherits": { + "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utila": { + "version": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz", + "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", + "dev": true + }, + "uuid": { + "version": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha1-PdPT55Crwk17DToDT/q6vijrvAQ=", + "dev": true + }, + "v8flags": { + "version": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz", + "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=", + "dev": true, + "requires": { + "user-home": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz" + } + }, + "validate-npm-package-license": { + "version": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "spdx-expression-parse": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz" + } + }, + "vary": { + "version": "https://registry.npmjs.org/vary/-/vary-1.1.1.tgz", + "integrity": "sha1-Z1Neu2lMHVIldFeYRmUyP1h+jTc=", + "dev": true + }, + "vendors": { + "version": "https://registry.npmjs.org/vendors/-/vendors-1.0.1.tgz", + "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", + "dev": true + }, + "verror": { + "version": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "dev": true, + "requires": { + "extsprintf": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz" + } + }, + "vlq": { + "version": "https://registry.npmjs.org/vlq/-/vlq-0.2.2.tgz", + "integrity": "sha1-4xbVJXtAuGu0PLjV/qXX9U1rDKE=", + "dev": true + }, + "vm-browserify": { + "version": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" + } + }, + "void-elements": { + "version": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "walk-sync": { + "version": "https://registry.npmjs.org/walk-sync/-/walk-sync-0.3.2.tgz", + "integrity": "sha1-SCcoCvxC0OA1NnxKTjHurA0Tb3U=", + "dev": true, + "requires": { + "ensure-posix-path": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.0.2.tgz", + "matcher-collection": "https://registry.npmjs.org/matcher-collection/-/matcher-collection-1.0.4.tgz" + } + }, + "watchpack": { + "version": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "integrity": "sha1-ShRyvLuVK9Cpu0A2gB+VTfs5+qw=", + "dev": true, + "requires": { + "async": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "chokidar": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "graceful-fs": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz" + } + }, + "wbuf": { + "version": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.2.tgz", + "integrity": "sha1-1pe5nx9ZUS3ydRvkJ2nBWAtYAf4=", + "dev": true, + "requires": { + "minimalistic-assert": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz" + } + }, + "webdriver-js-extender": { + "version": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz", + "integrity": "sha1-gcUzqeM9W/tZe05j4s2yW1R3dRU=", + "dev": true, + "requires": { + "@types/selenium-webdriver": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.42.tgz", + "selenium-webdriver": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz" + }, + "dependencies": { + "adm-zip": { + "version": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", + "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=", + "dev": true + }, + "sax": { + "version": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz", + "integrity": "sha1-VjsZx8HeiS4Jv8Ty/DDjwn8JUrk=", + "dev": true + }, + "selenium-webdriver": { + "version": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz", + "integrity": "sha1-0p/1qVff8aG0ncRXdW5OS/vc4IU=", + "dev": true, + "requires": { + "adm-zip": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", + "rimraf": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "tmp": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz", + "ws": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "xml2js": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz" + } + }, + "tmp": { + "version": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz", + "integrity": "sha1-1qXhmNFKmDXMby18PZ4wJCjIzxI=", + "dev": true + }, + "xml2js": { + "version": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz", + "integrity": "sha1-MREBAAMAiuGSQOuhdJe1fHKcVV0=", + "dev": true, + "requires": { + "sax": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz", + "xmlbuilder": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz" + } + } + } + }, + "webpack": { + "version": "https://registry.npmjs.org/webpack/-/webpack-2.4.1.tgz", + "integrity": "sha1-FakdvjSWbYpLmcfWVu/ZKi5ab2o=", + "dev": true, + "requires": { + "acorn": "https://registry.npmjs.org/acorn/-/acorn-5.1.1.tgz", + "acorn-dynamic-import": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", + "ajv": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "ajv-keywords": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "async": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "enhanced-resolve": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz", + "interpret": "https://registry.npmjs.org/interpret/-/interpret-1.0.3.tgz", + "json-loader": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", + "json5": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "loader-runner": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.0.tgz", + "loader-utils": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "memory-fs": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "mkdirp": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "node-libs-browser": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.0.0.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "tapable": "https://registry.npmjs.org/tapable/-/tapable-0.2.7.tgz", + "uglify-js": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "watchpack": "https://registry.npmjs.org/watchpack/-/watchpack-1.4.0.tgz", + "webpack-sources": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", + "yargs": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz" + }, + "dependencies": { + "ajv": { + "version": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "json-stable-stringify": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz" + } + }, + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "requires": { + "center-align": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "right-align": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "wordwrap": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" + } + }, + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "loader-utils": { + "version": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "https://registry.npmjs.org/big.js/-/big.js-3.1.3.tgz", + "emojis-list": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "json5": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "object-assign": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + } + }, + "source-list-map": { + "version": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz", + "integrity": "sha1-mIkBnRAkzOVc3AaUmDN+9hhqEaE=", + "dev": true + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + }, + "uglify-js": { + "version": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "requires": { + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "uglify-to-browserify": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "yargs": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz" + }, + "dependencies": { + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "cliui": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "window-size": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz" + } + } + } + }, + "webpack-sources": { + "version": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.2.3.tgz", + "integrity": "sha1-F8Yr+vE8cH+dAsR54Nzd6DgGl/s=", + "dev": true, + "requires": { + "source-list-map": "https://registry.npmjs.org/source-list-map/-/source-list-map-1.1.2.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + } + }, + "wordwrap": { + "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "cliui": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "get-caller-file": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "os-locale": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "read-pkg-up": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "require-directory": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "require-main-filename": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "set-blocking": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "which-module": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "y18n": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "yargs-parser": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz" + }, + "dependencies": { + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "wrap-ansi": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz" + } + } + } + }, + "yargs-parser": { + "version": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" + }, + "dependencies": { + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + } + } + }, + "webpack-dev-middleware": { + "version": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz", + "integrity": "sha1-CWkdCXOjCtH4Ksc6EuIIfwpHVPk=", + "dev": true, + "requires": { + "memory-fs": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "mime": "https://registry.npmjs.org/mime/-/mime-1.3.6.tgz", + "path-is-absolute": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "range-parser": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz" + } + }, + "webpack-dev-server": { + "version": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.4.5.tgz", + "integrity": "sha1-MThM6BE2vhCAtLTN4OubkOVO5s8=", + "dev": true, + "requires": { + "ansi-html": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "chokidar": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "compression": "https://registry.npmjs.org/compression/-/compression-1.7.0.tgz", + "connect-history-api-fallback": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.3.0.tgz", + "express": "https://registry.npmjs.org/express/-/express-4.15.3.tgz", + "html-entities": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "http-proxy-middleware": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.17.4.tgz", + "opn": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "portfinder": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz", + "serve-index": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.0.tgz", + "sockjs": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.18.tgz", + "sockjs-client": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.2.tgz", + "spdy": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "supports-color": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "webpack-dev-middleware": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.11.0.tgz", + "yargs": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz" + }, + "dependencies": { + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "cliui": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "get-caller-file": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "os-locale": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "read-pkg-up": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "require-directory": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "require-main-filename": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "set-blocking": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "which-module": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "y18n": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "yargs-parser": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz" + } + }, + "yargs-parser": { + "version": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" + } + } + } + }, + "webpack-merge": { + "version": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-2.6.1.tgz", + "integrity": "sha1-8dgB0sXTn4P/7J8RkkCz476ZShw=", + "dev": true, + "requires": { + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + } + }, + "webpack-sources": { + "version": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.0.1.tgz", + "integrity": "sha1-xzVkNqTRMSO+LiQmoF0drZy+Zc8=", + "dev": true, + "requires": { + "source-list-map": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "source-map": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz" + }, + "dependencies": { + "source-list-map": { + "version": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha1-qqR0A/eyRakvvJfqCPJQ1gh+0IU=", + "dev": true + } + } + }, + "websocket-driver": { + "version": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dev": true, + "requires": { + "websocket-extensions": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz" + } + }, + "websocket-extensions": { + "version": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz", + "integrity": "sha1-domUmcGEtu91Q3fC27DNbLVdKec=", + "dev": true + }, + "when": { + "version": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "whet.extend": { + "version": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, + "which": { + "version": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true, + "requires": { + "isexe": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + } + }, + "which-module": { + "version": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wide-align": { + "version": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz", + "integrity": "sha1-Vx4PGwYEY268DfwhsDObvjE0FxA=", + "dev": true, + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + } + } + }, + "window-size": { + "version": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true + }, + "wordwrap": { + "version": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "wrap-ansi": { + "version": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + } + } + }, + "wrappy": { + "version": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "dev": true, + "requires": { + "options": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "ultron": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz" + } + }, + "wtf-8": { + "version": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", + "dev": true + }, + "xml-char-classes": { + "version": "https://registry.npmjs.org/xml-char-classes/-/xml-char-classes-1.0.0.tgz", + "integrity": "sha1-ZGV4SKIP/F31g6Qq2KJ3tFErvE0=", + "dev": true + }, + "xml2js": { + "version": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", + "integrity": "sha1-F76T6q4/O3eTWceVtBlwWogX6Gg=", + "dev": true, + "requires": { + "sax": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "xmlbuilder": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz" + } + }, + "xmlbuilder": { + "version": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", + "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", + "dev": true, + "requires": { + "lodash": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz" + } + }, + "xmldom": { + "version": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", + "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", + "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", + "dev": true + }, + "xtend": { + "version": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "y18n": { + "version": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yallist": { + "version": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true, + "optional": true + }, + "yargs": { + "version": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "cliui": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "decamelize": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "get-caller-file": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "os-locale": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "read-pkg-up": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "require-directory": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "require-main-filename": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "set-blocking": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "string-width": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "which-module": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "y18n": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "yargs-parser": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz" + }, + "dependencies": { + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + } + }, + "string-width": { + "version": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "optional": true, + "requires": { + "code-point-at": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "is-fullwidth-code-point": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "strip-ansi": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + } + } + } + }, + "yargs-parser": { + "version": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz" + }, + "dependencies": { + "camelcase": { + "version": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + } + } + }, + "yeast": { + "version": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + }, + "zone.js": { + "version": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.14.tgz", + "integrity": "sha1-DE2ySxeCMidMy0P3jJnbfzZCts8=" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000000..0879cda95b --- /dev/null +++ b/package.json @@ -0,0 +1,66 @@ +{ + "name": "scalio-base2-front", + "version": "0.0.0", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve --sourcemap=false", + "build": "ng build", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^4.3.1", + "@angular/cdk": "^2.0.0-beta.8", + "@angular/common": "^4.3.1", + "@angular/compiler": "^4.3.1", + "@angular/core": "^4.3.1", + "@angular/flex-layout": "^2.0.0-beta.8", + "@angular/forms": "^4.3.1", + "@angular/http": "^4.3.1", + "@angular/material": "^2.0.0-beta.8", + "@angular/platform-browser": "^4.3.1", + "@angular/platform-browser-dynamic": "^4.3.1", + "@angular/router": "^4.3.1", + "@ngrx/core": "^1.2.0", + "@ngrx/effects": "^4.0.1", + "@ngrx/router-store": "^4.0.0", + "@ngrx/store": "^4.0.0", + "@ngrx/store-devtools": "^4.0.0", + "@ultimate/ngxerrors": "^1.3.0", + "angular2-highlight-js": "^5.0.2", + "core-js": "^2.4.1", + "hammerjs": "^2.0.8", + "lodash": "^4.17.4", + "ng2-prism": "^2.3.2", + "ng2-progressbar": "^1.3.0", + "ngx-perfect-scrollbar": "^4.5.3", + "rxjs": "^5.4.1", + "zone.js": "^0.8.14" + }, + "devDependencies": { + "@angular/cli": "1.2.3", + "@angular/compiler-cli": "^4.0.0", + "@angular/language-service": "^4.0.0", + "@types/jasmine": "~2.5.53", + "@types/jasminewd2": "~2.0.2", + "@types/lodash": "^4.14.71", + "@types/node": "~6.0.60", + "codelyzer": "~3.0.1", + "concurrently": "^3.5.0", + "jasmine-core": "~2.6.2", + "jasmine-spec-reporter": "~4.1.0", + "karma": "~1.7.0", + "karma-chrome-launcher": "~2.1.1", + "karma-cli": "~1.0.1", + "karma-coverage-istanbul-reporter": "^1.2.1", + "karma-jasmine": "~1.1.0", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.1.2", + "ts-node": "~3.0.4", + "tslint": "~5.3.2", + "typescript": "~2.3.3" + } +} diff --git a/protractor.conf.js b/protractor.conf.js new file mode 100644 index 0000000000..7ee3b5ee86 --- /dev/null +++ b/protractor.conf.js @@ -0,0 +1,28 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './e2e/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: 'e2e/tsconfig.e2e.json' + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts new file mode 100644 index 0000000000..c8ad934263 --- /dev/null +++ b/src/app/app-routing.module.ts @@ -0,0 +1,77 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; + +import { environment } from '../environments/environment'; +import { HomepageComponent } from './homepage/homepage.component'; +import { IntroductionComponent } from './homepage/pages/introduction/introduction.component'; +import { FirstStepsComponent } from './homepage/pages/first-steps/first-steps.component'; +import { ControllersComponent } from './homepage/pages/controllers/controllers.component'; +import { ComponentsComponent } from './homepage/pages/components/components.component'; +import { ModulesComponent } from './homepage/pages/modules/modules.component'; +import { MiddlewaresComponent } from './homepage/pages/middlewares/middlewares.component'; +import { PipesComponent } from './homepage/pages/pipes/pipes.component'; +import { GuardsComponent } from './homepage/pages/guards/guards.component'; +import { ExceptionFiltersComponent } from './homepage/pages/exception-filters/exception-filters.component'; + +const routes: Routes = [ + { + path: '', + component: HomepageComponent, + children: [ + { + path: '', + component: IntroductionComponent, + }, + { + path: 'first-steps', + component: FirstStepsComponent, + }, + { + path: 'controllers', + component: ControllersComponent, + }, + { + path: 'components', + component: ComponentsComponent, + }, + { + path: 'modules', + component: ModulesComponent, + }, + { + path: 'middlewares', + component: MiddlewaresComponent, + }, + { + path: 'pipes', + component: PipesComponent, + }, + { + path: 'guards', + component: GuardsComponent, + }, + { + path: 'exception-filters', + component: ExceptionFiltersComponent, + } + ] + }, + { + path: '**', + redirectTo: '', + pathMatch: 'full', + } +]; + +@NgModule({ + imports: [ + RouterModule.forRoot( + routes, + { + enableTracing: !environment.production, + }, + ), + ], + exports: [RouterModule] +}) +export class AppRoutingModule {} diff --git a/src/app/app.component.css b/src/app/app.component.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/app.component.html b/src/app/app.component.html new file mode 100644 index 0000000000..90c6b64632 --- /dev/null +++ b/src/app/app.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts new file mode 100644 index 0000000000..9510495a2d --- /dev/null +++ b/src/app/app.component.spec.ts @@ -0,0 +1,32 @@ +import { TestBed, async } from '@angular/core/testing'; + +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + + it('should create the app', async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); + + it(`should have as title 'app'`, async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app.title).toEqual('app'); + })); + + it('should render title in a h1 tag', async(() => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!'); + })); +}); diff --git a/src/app/app.component.ts b/src/app/app.component.ts new file mode 100644 index 0000000000..8b57a8f2a5 --- /dev/null +++ b/src/app/app.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; +import { Router, NavigationEnd } from '@angular/router'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class AppComponent implements OnInit { + constructor(private readonly router: Router) { } + + ngOnInit() { + this.router.events + .filter((ev) => ev instanceof NavigationEnd) + .subscribe(() => window.scroll(0, 0)); + } +} \ No newline at end of file diff --git a/src/app/app.module.ts b/src/app/app.module.ts new file mode 100644 index 0000000000..cb7ac4d377 --- /dev/null +++ b/src/app/app.module.ts @@ -0,0 +1,59 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; +import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; + +import { AppComponent } from './app.component'; +import { AppRoutingModule } from './app-routing.module'; +import { CoreModule } from './core/core.module'; +import { HomepageComponent } from './homepage/homepage.component'; +import { HeaderComponent } from './homepage/header/header.component'; +import { FooterComponent } from './homepage/footer/footer.component'; +import { MenuComponent } from './homepage/menu/menu.component'; +import { MenuItemComponent } from './homepage/menu/menu-item/menu-item.component'; +import { IntroductionComponent } from './homepage/pages/introduction/introduction.component'; +import { FirstStepsComponent } from './homepage/pages/first-steps/first-steps.component'; +import { ControllersComponent } from './homepage/pages/controllers/controllers.component'; +import { BasePageComponent } from './homepage/pages/page/page.component'; +import { MatchHeightDirective } from './common/directives/match-height.directive'; +import { ComponentsComponent } from './homepage/pages/components/components.component'; +import { ModulesComponent } from './homepage/pages/modules/modules.component'; +import { MiddlewaresComponent } from './homepage/pages/middlewares/middlewares.component'; +import { PipesComponent } from './homepage/pages/pipes/pipes.component'; +import { ExceptionFiltersComponent } from './homepage/pages/exception-filters/exception-filters.component'; +import { GuardsComponent } from './homepage/pages/guards/guards.component'; +import { DependencyInjectionComponent } from './homepage/pages/advanced/dependency-injection/dependency-injection.component'; +import { AsyncComponentsComponent } from './homepage/pages/advanced/async-components/async-components.component'; + +@NgModule({ + imports: [ + BrowserModule, + AppRoutingModule, + CoreModule, + PerfectScrollbarModule.forRoot({ + suppressScrollX: true, + }), + ], + declarations: [ + AppComponent, + HomepageComponent, + HeaderComponent, + FooterComponent, + MenuComponent, + MenuItemComponent, + IntroductionComponent, + FirstStepsComponent, + ControllersComponent, + BasePageComponent, + MatchHeightDirective, + ComponentsComponent, + ModulesComponent, + MiddlewaresComponent, + PipesComponent, + ExceptionFiltersComponent, + GuardsComponent, + DependencyInjectionComponent, + AsyncComponentsComponent, + ], + bootstrap: [AppComponent] +}) +export class AppModule {} diff --git a/src/app/common/animations/index.ts b/src/app/common/animations/index.ts new file mode 100644 index 0000000000..a562fdea3c --- /dev/null +++ b/src/app/common/animations/index.ts @@ -0,0 +1 @@ +export * from './router.animations'; \ No newline at end of file diff --git a/src/app/common/animations/router.animations.ts b/src/app/common/animations/router.animations.ts new file mode 100644 index 0000000000..5134ae20fd --- /dev/null +++ b/src/app/common/animations/router.animations.ts @@ -0,0 +1,18 @@ +import { trigger, animate, style, group, query, transition } from '@angular/animations'; + +export const routerTransition = trigger('routerTransition', [ + transition('* <=> *', [ + query(':enter, :leave', style({ position: 'fixed', width: '100%' }) + , { optional: true }), + group([ + query(':enter', [ + style({ opacity: '0.0' }), + animate('0.4s 0.6s ease-in-out', style({ opacity: '1.0' })) + ], { optional: true }), + query(':leave', [ + style({ opacity: '1.0' }), + animate('0.4s ease-in-out', style({ opacity: '0.0' })) + ], { optional: true }), + ]), + ]), +]); \ No newline at end of file diff --git a/src/app/common/directives/match-height.directive.ts b/src/app/common/directives/match-height.directive.ts new file mode 100644 index 0000000000..8792a4dad3 --- /dev/null +++ b/src/app/common/directives/match-height.directive.ts @@ -0,0 +1,39 @@ +import { + Directive, ElementRef, AfterViewChecked, + Input, HostListener, Renderer2, NgZone +} from '@angular/core'; + +@Directive({ + selector: '[matchHeight]' +}) +export class MatchHeightDirective implements AfterViewChecked { + constructor( + private readonly zone: NgZone, + private readonly rednerer: Renderer2, + private readonly el: ElementRef) {} + + ngAfterViewChecked() { + setTimeout(() => this.zone.run(() => this.matchHeight(this.el.nativeElement)), 800); + } + + @HostListener('window:resize') + onResize() { + setTimeout(() => this.matchHeight(this.el.nativeElement), 500); + } + + matchHeight(parent: HTMLElement) { + if (!parent) { + return; + } + const children = Array.from(parent.children); + children.forEach((x: HTMLElement) => { + this.rednerer.setStyle(x, 'height', 'initial'); + }); + const itemHeights = children.map(x => x.getBoundingClientRect().height); + const maxHeight = itemHeights.reduce((prev, curr) => { + return curr > prev ? curr : prev; + }, 0); + + children.forEach((x: HTMLElement) => this.rednerer.setStyle(x, 'height', `${maxHeight}px`)); + } +} \ No newline at end of file diff --git a/src/app/common/index.ts b/src/app/common/index.ts new file mode 100644 index 0000000000..24337ec86e --- /dev/null +++ b/src/app/common/index.ts @@ -0,0 +1 @@ +export * from './animations'; \ No newline at end of file diff --git a/src/app/constants.ts b/src/app/constants.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/core/config/config.service.ts b/src/app/core/config/config.service.ts new file mode 100644 index 0000000000..d576b9dc4b --- /dev/null +++ b/src/app/core/config/config.service.ts @@ -0,0 +1,6 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export abstract class ConfigService { + abstract readonly API_URL: string; +} \ No newline at end of file diff --git a/src/app/core/config/dev-config.service.ts b/src/app/core/config/dev-config.service.ts new file mode 100644 index 0000000000..65b79e6515 --- /dev/null +++ b/src/app/core/config/dev-config.service.ts @@ -0,0 +1,5 @@ +import { ConfigService } from './config.service'; + +export class DevelopmentConfigService extends ConfigService { + readonly API_URL = 'http://localhost:3001'; +} \ No newline at end of file diff --git a/src/app/core/config/prod-config.service.ts b/src/app/core/config/prod-config.service.ts new file mode 100644 index 0000000000..c624a37d28 --- /dev/null +++ b/src/app/core/config/prod-config.service.ts @@ -0,0 +1,5 @@ +import { ConfigService } from './config.service'; + +export class ProductionConfigService extends ConfigService { + readonly API_URL = 'http://prod-api.scali.io'; +} \ No newline at end of file diff --git a/src/app/core/core.module.ts b/src/app/core/core.module.ts new file mode 100644 index 0000000000..8b53653898 --- /dev/null +++ b/src/app/core/core.module.ts @@ -0,0 +1,21 @@ +import { NgModule } from '@angular/core'; + +import { ConfigService } from './config/config.service'; +import { environment } from '../../environments/environment'; +import { DevelopmentConfigService } from './config/dev-config.service'; +import { ProductionConfigService } from './config/prod-config.service'; + +@NgModule({ + imports: [], + providers: [ + { + provide: ConfigService, + useFactory() { + return !environment.production ? + new DevelopmentConfigService() : new ProductionConfigService(); + }, + } + ], + exports: [], +}) +export class CoreModule { } diff --git a/src/app/homepage/footer/footer.component.html b/src/app/homepage/footer/footer.component.html new file mode 100644 index 0000000000..c9adc110ed --- /dev/null +++ b/src/app/homepage/footer/footer.component.html @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/src/app/homepage/footer/footer.component.scss b/src/app/homepage/footer/footer.component.scss new file mode 100644 index 0000000000..a029438335 --- /dev/null +++ b/src/app/homepage/footer/footer.component.scss @@ -0,0 +1,67 @@ +@import "../../../scss/variables.scss"; +@import "../../../scss/utils.scss"; + +:host { + @extend .transition; + @extend .box-sizing; + background: $black-color; + display: block; + height: 85px; + padding: 16px 2px 16px 52px; + position: absolute; + bottom: 0; + left: 0; + right: 0; + margin: 0; + width: auto; + + @include media(medium) { + padding: 15px; + margin: 30px -30px 0; + width: calc(100% + 60px); + position: static; + height: auto; + text-align: center; + } +} + +footer { + display: block; + position: relative; + + a { + @extend .transition; + color: $grey-color; + &:hover { + color: $white-color; + } + } +} + +.social-wrapper { + @extend .center-top; + position: absolute; + right: 40px; + + @include media(medium) { + @include transform(translateX(0) translateY(0)); + position: static; + text-align: center; + } + a { + @extend .transition; + display: inline-block; + vertical-align: middle; + color: $darksilver-color; + font-size: 22px; + margin-left: 10px; + cursor: pointer; + + &:first-of-type { + font-size: 20px; + } + &:hover { + color: $white-color; + } + } +} \ No newline at end of file diff --git a/src/app/homepage/footer/footer.component.spec.ts b/src/app/homepage/footer/footer.component.spec.ts new file mode 100644 index 0000000000..01d35cc68f --- /dev/null +++ b/src/app/homepage/footer/footer.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FooterComponent } from './footer.component'; + +describe('FooterComponent', () => { + let component: FooterComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FooterComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FooterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/footer/footer.component.ts b/src/app/homepage/footer/footer.component.ts new file mode 100644 index 0000000000..75ee65beea --- /dev/null +++ b/src/app/homepage/footer/footer.component.ts @@ -0,0 +1,9 @@ +import { Component, ChangeDetectionStrategy } from '@angular/core'; + +@Component({ + selector: 'app-footer', + templateUrl: './footer.component.html', + styleUrls: ['./footer.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class FooterComponent {} diff --git a/src/app/homepage/header/header.component.html b/src/app/homepage/header/header.component.html new file mode 100644 index 0000000000..92c57977e9 --- /dev/null +++ b/src/app/homepage/header/header.component.html @@ -0,0 +1,13 @@ +
+
+ +
+ + +
\ No newline at end of file diff --git a/src/app/homepage/header/header.component.scss b/src/app/homepage/header/header.component.scss new file mode 100644 index 0000000000..9b918887d9 --- /dev/null +++ b/src/app/homepage/header/header.component.scss @@ -0,0 +1,80 @@ +@import "../../../scss/variables.scss"; +@import "../../../scss/utils.scss"; + +:host { + background: $black-color; + border-bottom: 6px solid $red-color; + display: block; + width: 100%; + height: 85px; +} + +header { + height: 100%; + width: 100%; + display: block; + position: relative; +} + +.icon-wrapper { + @extend .transition; + height: 100%; + width: 80px; + top: 0; + bottom: 0; + background: $darkgrey-color; + + &:hover { + cursor: pointer; + background: #212121; + } + &.opened { + width: 345px; + @include media(large) { width: 300px; } + @include media(normal) { width: 80px; } + } + .nav-icon { + @extend .center-element; + } + @include media(medium) { background: transparent; } +} + +:host /deep/ .logo-wrapper { + display: block; + width: 100%; + height: 100%; + text-align: center; + + a { + display: inline-block;; + padding-top: 10px; + } +} + +.social-wrapper, +.icon-wrapper { + position: absolute; +} + +.social-wrapper { + @extend .center-top; + right: 40px; + + a { + @extend .transition; + display: inline-block; + vertical-align: middle; + color: $darksilver-color; + font-size: 22px; + margin-left: 10px; + cursor: pointer; + + &:first-of-type { + font-size: 20px; + } + &:hover { + color: $white-color; + } + } + @include media(medium) { display: none; } +} \ No newline at end of file diff --git a/src/app/homepage/header/header.component.spec.ts b/src/app/homepage/header/header.component.spec.ts new file mode 100644 index 0000000000..a52be79128 --- /dev/null +++ b/src/app/homepage/header/header.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HeaderComponent } from './header.component'; + +describe('HeaderComponent', () => { + let component: HeaderComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HeaderComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HeaderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/header/header.component.ts b/src/app/homepage/header/header.component.ts new file mode 100644 index 0000000000..4c910b0229 --- /dev/null +++ b/src/app/homepage/header/header.component.ts @@ -0,0 +1,12 @@ +import { Component, Output, EventEmitter, Input, ChangeDetectionStrategy } from '@angular/core'; + +@Component({ + selector: 'app-header', + templateUrl: './header.component.html', + styleUrls: ['./header.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class HeaderComponent { + @Output() toggle = new EventEmitter(); + @Input() isSidebarOpened = true; +} diff --git a/src/app/homepage/homepage.component.html b/src/app/homepage/homepage.component.html new file mode 100644 index 0000000000..c31fb4a63b --- /dev/null +++ b/src/app/homepage/homepage.component.html @@ -0,0 +1,26 @@ + +
+ + Nest - A node.js framework built on top of TypeScript + +
+
+
+ +
+
+ +
+ +

+ Made by + + Kamil Myśliwiec + +

+
+
+
\ No newline at end of file diff --git a/src/app/homepage/homepage.component.scss b/src/app/homepage/homepage.component.scss new file mode 100644 index 0000000000..b23a6a43c8 --- /dev/null +++ b/src/app/homepage/homepage.component.scss @@ -0,0 +1,62 @@ +@import "../../scss/utils.scss"; +@import "../../scss/variables.scss"; + +.container-fluid { + position: relative; + display: block; + table-layout: fixed; + width: 100%; + min-height: 100vh; +} + +.container { + @extend .transition; + @extend .box-sizing; + @include transform(translateX(345px)); + width: calc(100% - 345px); + padding: 45px 50px 100px; + display: inline-block; + vertical-align: top; + position: relative; + + &.wide { + @include transform(translateX(0)); + width: 100%; + display: block; + } + + @include media(large) { + @include transform(translateX(300px)); + width: calc(100% - 300px); + &.wide { width: 100%; } + } + @include media(medium) { + @include transform(translateX(0)); + width: 100%; + padding: 20px 30px 0; + } +} + +.page-wrapper { + color: $grey-color; + line-height: 26px; + + a { + font-weight: 500; + color: $red-color; + &:hover { + color: #0894e2; + } + } + + h1, h2, h3, h4, h5, h6 { + color: $black-color; + } + h3 { font-size: 24px; } + + @include media(normal) { + p { + text-align: justify; + } + } +} \ No newline at end of file diff --git a/src/app/homepage/homepage.component.spec.ts b/src/app/homepage/homepage.component.spec.ts new file mode 100644 index 0000000000..d3cedc5564 --- /dev/null +++ b/src/app/homepage/homepage.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomepageComponent } from './homepage.component'; + +describe('HomepageComponent', () => { + let component: HomepageComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ HomepageComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(HomepageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/homepage.component.ts b/src/app/homepage/homepage.component.ts new file mode 100644 index 0000000000..a5586a16b8 --- /dev/null +++ b/src/app/homepage/homepage.component.ts @@ -0,0 +1,31 @@ +import { Component, ViewEncapsulation, HostListener, AfterViewInit, ChangeDetectionStrategy } from '@angular/core'; + +@Component({ + selector: 'app-homepage', + templateUrl: './homepage.component.html', + styleUrls: ['./homepage.component.scss'], + encapsulation: ViewEncapsulation.None, + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class HomepageComponent implements AfterViewInit { + isSidebarOpened = true; + toggleSidebar() { + this.isSidebarOpened = !this.isSidebarOpened; + } + + ngAfterViewInit() { + this.checkWindowWidth(window.innerWidth); + } + + @HostListener('window:resize', ['$event']) + onResize(event) { + this.checkWindowWidth(event.target.innerWidth); + } + + checkWindowWidth(innerWidth?: number) { + innerWidth = innerWidth ? innerWidth : window.innerWidth; + if (innerWidth <= 768) { + this.isSidebarOpened = false; + } + } +} diff --git a/src/app/homepage/menu/menu-item/menu-item.component.html b/src/app/homepage/menu/menu-item/menu-item.component.html new file mode 100644 index 0000000000..677a7860a8 --- /dev/null +++ b/src/app/homepage/menu/menu-item/menu-item.component.html @@ -0,0 +1,22 @@ + + + + \ No newline at end of file diff --git a/src/app/homepage/menu/menu-item/menu-item.component.scss b/src/app/homepage/menu/menu-item/menu-item.component.scss new file mode 100644 index 0000000000..fca3d7aac2 --- /dev/null +++ b/src/app/homepage/menu/menu-item/menu-item.component.scss @@ -0,0 +1,72 @@ +@import "../../../../scss/variables.scss"; +@import "../../../../scss/utils.scss"; + +:host { + position: relative; + display: block; +} + +h3 { + @extend .transition; + text-transform: uppercase; + font-weight: bold; + color: $black-color; + font-size: 15px; + letter-spacing: 0.2px; + &:hover { + color: $red-color; + } +} + + .active h3 { + color: $red-color; + } + +.arrow-icon { + @extend .transition; + position: absolute; + top: 1px; + right: 0; + font-size: 22px; + cursor: pointer; +} + + li { + display: block; + padding: 10px 0; + + a { + color: $black-color; + font-size: 15px; + text-decoration: none; + cursor: pointer; + &:hover { + color: $red-color; + } + &.active { font-weight: 500; } + } + } + +.nav-item { + ul { + display: none; + } + &.opened { + ul { + display: block; + } + .arrow-icon { + @include transform(rotate(90deg)); + color: $red-color; + } + } +} + +.heading { + cursor: pointer; + &:hover { + .arrow-icon { + color: $red-color; + } + } +} \ No newline at end of file diff --git a/src/app/homepage/menu/menu-item/menu-item.component.spec.ts b/src/app/homepage/menu/menu-item/menu-item.component.spec.ts new file mode 100644 index 0000000000..2fce493096 --- /dev/null +++ b/src/app/homepage/menu/menu-item/menu-item.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MenuItemComponent } from './menu-item.component'; + +describe('MenuItemComponent', () => { + let component: MenuItemComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MenuItemComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MenuItemComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/menu/menu-item/menu-item.component.ts b/src/app/homepage/menu/menu-item/menu-item.component.ts new file mode 100644 index 0000000000..3a34a93093 --- /dev/null +++ b/src/app/homepage/menu/menu-item/menu-item.component.ts @@ -0,0 +1,18 @@ +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; + +@Component({ + selector: 'app-menu-item', + templateUrl: './menu-item.component.html', + styleUrls: ['./menu-item.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class MenuItemComponent { + @Input() isOpen = false; + @Input() children = []; + @Input() path: string; + @Input() title: string; + + toggle() { + this.isOpen = !this.isOpen; + } +} diff --git a/src/app/homepage/menu/menu.component.html b/src/app/homepage/menu/menu.component.html new file mode 100644 index 0000000000..d09a6e00c3 --- /dev/null +++ b/src/app/homepage/menu/menu.component.html @@ -0,0 +1,9 @@ + \ No newline at end of file diff --git a/src/app/homepage/menu/menu.component.scss b/src/app/homepage/menu/menu.component.scss new file mode 100644 index 0000000000..b66590b047 --- /dev/null +++ b/src/app/homepage/menu/menu.component.scss @@ -0,0 +1,23 @@ +@import "../../../scss/variables.scss"; +@import "../../../scss/utils.scss"; + +:host { + @extend .transition; + @extend .box-sizing; + @include transform(translateX(-100%)); + padding: 55px 30px 40px 45px; + width: 345px; + background: $white-color; + box-shadow: 0 0 25px rgba(0, 0, 0, 0.1); + position: absolute !important; + bottom: 0; + top: 0; + z-index: 1000; + overflow: hidden; + + &.opened { + @include transform(translateX(0)); + } + @include media(large) { width: 300px; } + @include media(medium) { padding: 20px 25px 20px 25px; } +} diff --git a/src/app/homepage/menu/menu.component.spec.ts b/src/app/homepage/menu/menu.component.spec.ts new file mode 100644 index 0000000000..15c888f14b --- /dev/null +++ b/src/app/homepage/menu/menu.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MenuComponent } from './menu.component'; + +describe('MenuComponent', () => { + let component: MenuComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MenuComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MenuComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/menu/menu.component.ts b/src/app/homepage/menu/menu.component.ts new file mode 100644 index 0000000000..b0d771950b --- /dev/null +++ b/src/app/homepage/menu/menu.component.ts @@ -0,0 +1,94 @@ +import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; + +@Component({ + selector: 'app-menu', + templateUrl: './menu.component.html', + styleUrls: ['./menu.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class MenuComponent { + @Input() isSidebarOpened = true; + readonly items = [ + { + title: 'Introduction', + isOpened: false, + path: '/' + }, + { + title: 'Overview', + isOpened: true, + children: [ + { title: 'First Steps', path: '/first-steps' }, + { title: 'Controllers', path: '/controllers' }, + { title: 'Components', path: '/components' }, + { title: 'Modules', path: '/modules' }, + { title: 'Middlewares', path: '/middlewares' }, + { title: 'Exception Filters', path: '/exception-filters' }, + { title: 'Pipes', path: '/pipes' }, + { title: 'Guards', path: '/guards' }, + ] + }, + { + title: 'Advanced', + isOpened: false, + children: [ + { title: 'Dependency Injection', path: '/advanced/dependency-injection' }, + { title: 'Async Components', path: '/advanced/async-components' }, + { title: 'Hierarchical Injection', path: '/advanced/hierarchical-injection' }, + { title: 'Unit Testing', path: '/advanced/unit-testing' }, + { title: 'E2E Testing', path: '/advanced/e2e-testing' }, + ] + }, + { + title: 'WebSockets', + isOpened: false, + children: [ + { title: 'Gateways', path: '/websockets/gateways' }, + { title: 'Adapter', path: '/websockets/adapter' }, + { title: 'Pipes', path: '/websockets/pipes' }, + { title: 'Exception Filters', path: '/websockets/exception-filters' }, + { title: 'Guards', path: '/websockets/guards' }, + ] + }, + { + title: 'Microservices', + isOpened: false, + children: [ + { title: 'Basics', path: '/microservices/basics' }, + { title: 'Redis', path: '/websockets/redis' }, + { title: 'Custom Transport', path: '/websockets/custom-transport' }, + { title: 'Pipes', path: '/websockets/pipes' }, + { title: 'Exception Filters', path: '/websockets/exception-filters' }, + { title: 'Guards', path: '/websockets/guards' }, + ] + }, + { + title: 'Recipes', + isOpened: false, + children: [ + { title: 'SQL (TypeORM) [TBC]', path: '/recipes/sql-typeorm' }, + { title: 'NoSQL (MongoDB) [TBC]', path: '/recipes/nosql-mongodb' }, + { title: 'CQRS + Event Sourcing [TBC]', path: '/recipes/nosql-mongodb' }, + { title: 'Passport JWT integration [TBC]', path: '/recipes/nosql-mongodb' }, + { title: 'Swagger [TBC]', path: '/recipes/nosql-mongodb' }, + { title: 'Open Graph [TBC]', path: '/recipes/open-graph' }, + { title: 'Redis Socket.io [TBC]', path: '/recipes/redis-socketio' }, + ], + }, + { + title: 'FAQ', + isOpened: false, + children: [ + { title: 'Best Practices', path: '/faq/best-practices' }, + { title: 'Express Instance', path: '/faq/express-instance' }, + { title: 'Module Reference', path: '/faq/module-reference' }, + { title: 'Global Route Prefix', path: '/faq/global-prefix' }, + { title: 'Lifecycle Events', path: '/faq/lifecycle-events' }, + { title: 'Hybrid Application', path: '/faq/hybrid-application' }, + { title: 'Lazy Microservice Client', path: '/faq/lazy-microservice' }, + { title: 'Multiple Simultaneous Servers', path: '/faq/multiple-servers' }, + { title: 'Examples', path: '/faq/examples' }, + ] + } + ]; +} diff --git a/src/app/homepage/pages/advanced/async-components/async-components.component.html b/src/app/homepage/pages/advanced/async-components/async-components.component.html new file mode 100644 index 0000000000..c306d25c87 --- /dev/null +++ b/src/app/homepage/pages/advanced/async-components/async-components.component.html @@ -0,0 +1,3 @@ +

+ async-components works! +

diff --git a/src/app/homepage/pages/advanced/async-components/async-components.component.scss b/src/app/homepage/pages/advanced/async-components/async-components.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/homepage/pages/advanced/async-components/async-components.component.spec.ts b/src/app/homepage/pages/advanced/async-components/async-components.component.spec.ts new file mode 100644 index 0000000000..8fea2a78bc --- /dev/null +++ b/src/app/homepage/pages/advanced/async-components/async-components.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AsyncComponentsComponent } from './async-components.component'; + +describe('AsyncComponentsComponent', () => { + let component: AsyncComponentsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AsyncComponentsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AsyncComponentsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/pages/advanced/async-components/async-components.component.ts b/src/app/homepage/pages/advanced/async-components/async-components.component.ts new file mode 100644 index 0000000000..7fbe6c3d24 --- /dev/null +++ b/src/app/homepage/pages/advanced/async-components/async-components.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-async-components', + templateUrl: './async-components.component.html', + styleUrls: ['./async-components.component.scss'] +}) +export class AsyncComponentsComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.html b/src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.html new file mode 100644 index 0000000000..da521406ef --- /dev/null +++ b/src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.html @@ -0,0 +1,3 @@ +

+ dependency-injection works! +

diff --git a/src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.scss b/src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.spec.ts b/src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.spec.ts new file mode 100644 index 0000000000..9f604bbbb7 --- /dev/null +++ b/src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DependencyInjectionComponent } from './dependency-injection.component'; + +describe('DependencyInjectionComponent', () => { + let component: DependencyInjectionComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DependencyInjectionComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DependencyInjectionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.ts b/src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.ts new file mode 100644 index 0000000000..b4dda0e20f --- /dev/null +++ b/src/app/homepage/pages/advanced/dependency-injection/dependency-injection.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-dependency-injection', + templateUrl: './dependency-injection.component.html', + styleUrls: ['./dependency-injection.component.scss'] +}) +export class DependencyInjectionComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/homepage/pages/components/components.component.html b/src/app/homepage/pages/components/components.component.html new file mode 100644 index 0000000000..cd8086ae9f --- /dev/null +++ b/src/app/homepage/pages/components/components.component.html @@ -0,0 +1,67 @@ +
+

Components

+

+ Almost everything is a component – Service, Repository, Factory [...] and they can be injected into controllers or to another components through constructor. +

+
+

+ In the previous article, we've built a simple CatsController. +

+

+ The controllers should only handle HTTP requests and delegate more complex tasks to the components. + The components are a plain TypeScript classes with @Component() decorator. +

+
+ Hint Since Nest enables the possibility to design, organize the dependencies in more OO-way, we strongly recommend + to follow the SOLID principles. +
+

+ Let's create a CatsService component: +

+ cats.service.ts +
{{ catsService }}
+

+ There's nothing specifically about components. Here's a CatsService, basic class with one property and two methods. + The only difference is that it has the @Component() decorator. The @Component() attaches the metadata, so Nest knows that this class is a Nest component. +

+
+ Notice There's a Cat interface here. I didn't mention about it, because the schema is exact same as in CreateCatDto class. +
+

+ Since we've the service class already done, let's use it inside the CatsController: +

+ cats.controller.ts +
{{ catsController }}
+

+ The CatsService is injected through the class constructor. + Don't be afraid about the private readonly shortened syntax. + It means that we've created and initialized the catsService member in the same location. +

+

Dependency Injection

+

+ Nest is built around the strong design pattern, which is commonly known as a Dependency Injection. + There's a great article about this concept in the offical Angular documentation. +

+
+ Hint Learn more about the Dependency Injection in Nest here. +
+

+ It's extremely easy to manage dependencies with TypeScript, because Nest will recognize your dependencies just by type. + This single line: +

+
{{ constructorSyntax }}
+

+ Is everything what you have to do. There is one important thing to know — you must have emitDecoratorMetadata option set to true in your tsconfig.json file. + That's it. +

+

Last step

+

+ The last thing is to tell the module that something called CatsService truly exists. + The only way to do it is to open the app.module.ts file, and add the service into the components array of the @Module() decorator. +

+ app.module.ts +
{{ appModule }}
+

+ Now Nest will smoothly resolve the dependencies of the CatsController class. +

+
diff --git a/src/app/homepage/pages/components/components.component.scss b/src/app/homepage/pages/components/components.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/homepage/pages/components/components.component.spec.ts b/src/app/homepage/pages/components/components.component.spec.ts new file mode 100644 index 0000000000..fe8434181f --- /dev/null +++ b/src/app/homepage/pages/components/components.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ComponentsComponent } from './components.component'; + +describe('ComponentsComponent', () => { + let component: ComponentsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ComponentsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ComponentsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/pages/components/components.component.ts b/src/app/homepage/pages/components/components.component.ts new file mode 100644 index 0000000000..4fbf27cb83 --- /dev/null +++ b/src/app/homepage/pages/components/components.component.ts @@ -0,0 +1,73 @@ +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; + +import { BasePageComponent } from '../page/page.component'; + +@Component({ + selector: 'app-components', + templateUrl: './components.component.html', + styleUrls: ['./components.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ComponentsComponent extends BasePageComponent { + get catsService() { + return ` +import { Component } from '@nestjs/common'; +import { Cat } from './interfaces/cat.interface'; + +@Component() +export class CatsService { + private readonly cats: Cat[] = []; + + create(cat: Cat) { + this.cats.push(cat); + } + + findAll(): Cat[] { + return this.cats; + } +} +`; + } + + get catsController() { + return ` +import { Controller, Get, Post, Body } from '@nestjs/common'; +import { CreateCatDto } from './dto/create-cat.dto'; +import { CatsService } from './cats.service'; +import { Cat } from './interfaces/cat.interface'; + +@Controller('cats') +export class CatsController { + constructor(private readonly catsService: CatsService) {} + + @Post() + async create(@Body() createCatDto: CreateCatDto) { + this.catsService.create(createCatDto); + } + + @Get() + async findAll(): Promise { + return this.catsService.findAll(); + } +}`; + } + + get constructorSyntax() { + return ` +constructor(private readonly catsService: CatsService) {}`; + } + + get appModule() { + return ` +import { Module } from '@nestjs/common'; +import { CatsController } from './cats/cats.controller'; +import { CatsService } from './cats/cats.service'; + +@Module({ + controllers: [CatsController], + components: [CatsService], +}) +export class ApplicationModule {} +`; + } +} diff --git a/src/app/homepage/pages/controllers/controllers.component.html b/src/app/homepage/pages/controllers/controllers.component.html new file mode 100644 index 0000000000..691f94b1b3 --- /dev/null +++ b/src/app/homepage/pages/controllers/controllers.component.html @@ -0,0 +1,198 @@ +
+

Controllers

+

The controllers layer is responsible for handling incoming requests (mostly HTTP).

+
+

+ To tell Nest that CatsController is a controller, you have to attach metadata to the class. + Metadata can be attached using decorators. +

+ cats.controller.ts +
{{ catsController }}
+

Metadata

+

+ We're using @Controller('cats') here. This decorator is obligatory. + The cats is a prefix for each route in the class. The prefix is optional, but it reduces redundant boilerplate code, + so you don't have to repeat yourself every time, when you'd decide to create new endpoint. +

+

+ There's a single public method, the findAll(), which returns an empty array. + The @Get() decorator tells Nest that it's necessary to create an endpoint for this route path, + and map every appropriate request to this handler. Since we declared the prefix for every route (cats), + Nest will map every /cats GET request here. +

+

+ When client would call this endpoint, Nest will return with 200 status code, and the parsed JSON, so in this case - just an empty array. + How is that possible? +

+

+ There're two possible approaches of manipulating the response: +

+ + + + + + + + + +
Standard (recommended) + We're treating the handlers in the same way as a plain functions. When we return the JavaScript object or array, it'd be automatically + transformed to JSON. When we return the string, Nest will send just a string. +
+
+ Furthermore, the response status code is always 200 by default, except POST requests, when it's 201. + We can easily change this behaviour by adding the @HttpCode(...) decorator at a handler-level. +
Express + We can use the express response object, + which we can inject using @Res() decorator in the function signature, for example findAll(@Res() response) +
+
+ Notice! It's forbidden to use both two approaches at the same time. Nest detects whether handler is using @Res(), and if it's thruth - the standard way is disabled for this single route. +
+

Request object

+

+ A lot of endpoints need an access to the client request details. + In fact, Nest is using express request object. + We can force Nest to inject the request object into handler using @Req() decorator. +

+
+ Hint There's a @types/express package and we strongly recommend to use it. +
+ cats.controller.ts +
{{ requestObject }}
+

+ The request object contains headers, params, and e.g. body of the request, but in most cases, it's not necessary to grab them manually. + We can use dedicated decorators instead, such as @Body() or @Query(), which are available out of the box. + Below is a comparision of the decorators with the plain express objects. +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
@Request()req
@Response()res
@Next()next
@Session()req.session
@Param(param?: string)req.params / req.params[param]
@Body(param?: string)req.body / req.body[param]
@Query(param?: string)req.query / req.query[param]
@Headers(param?: string)req.headers / req.headers[param]
+

More endpoints

+

+ We've already created an endpoint to fetch the data. It'd be great to provide a way of creating the new records too. + So.. What we're waiting for?! Let's create the POST handler: +

+ cats.controller.ts +
{{ postEndpoint }}
+

+ It's really easy. Nest provides the rest of those endpoints decorators in the same fashion - + @Put(), @Delete() etc.. +

+

Async / await

+

+ We love modern JavaScript, and we know that the data extraction is mostly asynchronous. + That's why Nest supports async functions, and works pretty well with them. +

+
+ Hint Learn more about async / await here! +
+

+ Every async function has to return the Promise. It means that you can return deffered value and + Nest will resolve it by itself. Let's have a look on the below example: +

+ cats.controller.ts +
{{ asyncExample }}
+

+ It's fully valid. +

+

+ Furthermore, Nest route handlers are even more powerful. They can return the RxJS + observable streams. + It makes the migration between simple web application and the Nest microservice much easier. +

+ cats.controller.ts +
{{ observableExample }}
+

POST handler

+

+ That's weird that the POST route handler doesn't accept any client params. We should definitely + expect the @Body() argument here. +

+

+ Firstly, we need to establish the DTO (Data Transfer Object) schema. We could do it using TypeScript + interfaces, or by simple classes. What may be surprising, we recommend to use classes. Why? + The classes are the part of the JavaScript ES6 standard, so they're just plain functions. On the other hand, TypeScript interfaces are removed + during the transpilation, Nest can't refer to them. It's important, because features such as Pipes enables additional possibilities when they've access to the metatype + of the variable. +

+

+ Let's create the CreateCatDto: +

+ dto/create-cat.dto.ts +
{{ createCatSchema }}
+

+ It has only three basic properties. All of them are marked as a readonly, because we should + always try to make our functions as pure as possible. +

+

+ Now we can use the schema inside the CatsController: +

+ cats.controller.ts +
{{ exampleWithBody }}
+

+ Expressjs doesn't parse the body by default. + We need the middleware, which name is body-parser. + The usage is really simple, because Nest instance provides the use() method. It's a wrapper to the native express use() function: +

+ server.ts +
{{ bodyParser }}
+

Last step

+

+ The controller is prepared, and ready to use, but Nest doesn't know that CatsController exists, + so it won't create an instance of this class. We need to tell about it. +

+

+ The controller always belongs to the module, which mentioned about its in controllers array within @Module() decorator. + Since we don't have any other modules except the root AppModule, let's use it for now: +

+ app.module.ts +
{{ appModule }}
+

+ Tada! We attached the metadata to the module class, so now Nest can easily reflect which controllers have to be initialized. +

+

Express approach

+

+ The second way of manipulating the response is to use express response object. + It was the only available option until Nest 4. To inject the response object, we need to use @Res() decorator. + To show the differences, i'm going to rewrite the CatsController: +

+
{{ expressWay }}
+

+ This manner is much less clear from my point of view. I definitely prefer the first approach, but to make the Nest backward compatible + with the previous versions, this method is still available. Also, the response object gives more flexibility - you've full control of the response. +

+
diff --git a/src/app/homepage/pages/controllers/controllers.component.scss b/src/app/homepage/pages/controllers/controllers.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/homepage/pages/controllers/controllers.component.spec.ts b/src/app/homepage/pages/controllers/controllers.component.spec.ts new file mode 100644 index 0000000000..dc6634989c --- /dev/null +++ b/src/app/homepage/pages/controllers/controllers.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ControllersComponent } from './controllers.component'; + +describe('ControllersComponent', () => { + let component: ControllersComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ControllersComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ControllersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/pages/controllers/controllers.component.ts b/src/app/homepage/pages/controllers/controllers.component.ts new file mode 100644 index 0000000000..05ebcc4ef2 --- /dev/null +++ b/src/app/homepage/pages/controllers/controllers.component.ts @@ -0,0 +1,132 @@ +import { Component, ChangeDetectionStrategy } from '@angular/core'; +import { BasePageComponent } from '../page/page.component'; + +@Component({ + selector: 'app-controllers', + templateUrl: './controllers.component.html', + styleUrls: ['./controllers.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ControllersComponent extends BasePageComponent { + get catsController(): string { + return ` +import { Controller, Get } from '@nestjs/common'; + +@Controller('cats') +export class CatsController { + @Get() + findAll() { + return []; + } +}`; + } + + get requestObject(): string { + return ` +import { Controller, Get, Req } from '@nestjs/common'; + +@Controller('cats') +export class CatsController { + @Get() + findAll(@Req() request) { + return []; + } +}`; + } + + get postEndpoint() { + return ` +import { Controller, Get, Post } from '@nestjs/common'; + +@Controller('cats') +export class CatsController { + @Post() + create() { + // TODO: Add some logic here + } + + @Get() + findAll() { + return []; + } +}`; + } + + get asyncExample() { + return ` +@Get() +async findAll(): Promise { + return []; +}`; + } + + get observableExample() { + return ` +@Get() +findAll(): Observable { + return Observable.of([]); +}`; + } + + get createCatSchema() { + return ` +export class CreateCatDto { + readonly name: string; + readonly age: number; + readonly breed: string; +}`; + } + + get exampleWithBody() { + return ` +@Post() +async create(@Body() createCatDto: CreateCatDto) { + // TODO: Add some logic here +}`; + } + + get appModule() { + return ` +import { Module } from '@nestjs/common'; +import { CatsController } from './cats/cats.controller'; + +@Module({ + controllers: [CatsController], +}) +export class ApplicationModule {}`; + } + + get bodyParser() { + return ` +import * as bodyParser from 'body-parser'; +import { NestFactory } from '@nestjs/core'; +import { ApplicationModule } from './modules/app.module'; + +async function bootstrap() { + const app = await NestFactory.create(ApplicationModule); + app.use(bodyParser.json()); + await app.listen(3000); +} +bootstrap();`; + } + + get expressWay() { + return ` +import { Controller, Get, Post, Res, Body, HttpStatus } from '@nestjs/common'; +import { CreateCatDto } from './dto/create-cat.dto'; + +@Controller('cats') +export class CatsController { + @Post() + create(@Res() res, @Body() createCatDto: CreateCatDto) { + // TODO: Add some logic here + res.status(HttpStatus.CREATED).send(); + } + + @Get() + findAll(@Res() res) { + res.status(HttpStatus.OK).json([]); + } +}`; + } +} diff --git a/src/app/homepage/pages/exception-filters/exception-filters.component.html b/src/app/homepage/pages/exception-filters/exception-filters.component.html new file mode 100644 index 0000000000..13474ac03f --- /dev/null +++ b/src/app/homepage/pages/exception-filters/exception-filters.component.html @@ -0,0 +1,11 @@ +
+

Exception Filters

+

+ In Nest there's an exceptions layer, which responsibility is to catch the unhandled exceptions and + return the appropriate response to the end-user. +

+
+

+ Every unrecognized exception is handled, and when it was HTTP request, user receives the below response: +

+
diff --git a/src/app/homepage/pages/exception-filters/exception-filters.component.scss b/src/app/homepage/pages/exception-filters/exception-filters.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/homepage/pages/exception-filters/exception-filters.component.spec.ts b/src/app/homepage/pages/exception-filters/exception-filters.component.spec.ts new file mode 100644 index 0000000000..7f9fc4e375 --- /dev/null +++ b/src/app/homepage/pages/exception-filters/exception-filters.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ExceptionFiltersComponent } from './exception-filters.component'; + +describe('ExceptionFiltersComponent', () => { + let component: ExceptionFiltersComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ExceptionFiltersComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ExceptionFiltersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/pages/exception-filters/exception-filters.component.ts b/src/app/homepage/pages/exception-filters/exception-filters.component.ts new file mode 100644 index 0000000000..0be4952241 --- /dev/null +++ b/src/app/homepage/pages/exception-filters/exception-filters.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-exception-filters', + templateUrl: './exception-filters.component.html', + styleUrls: ['./exception-filters.component.scss'] +}) +export class ExceptionFiltersComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/homepage/pages/first-steps/first-steps.component.html b/src/app/homepage/pages/first-steps/first-steps.component.html new file mode 100644 index 0000000000..ce1b497659 --- /dev/null +++ b/src/app/homepage/pages/first-steps/first-steps.component.html @@ -0,0 +1,39 @@ +
+

First Steps

+

+ In this set of articles you'll learn the core fundamentals of Nest. + The main idea is to get familiar with essential Nest application building blocks. + You'll build a basic CRUD application which features covers a lot of ground at an introductory level. +

+

Setup

+

+ Setting up a new project is quite simple with Starter repository. + Just make sure that you have npm installed then use following commands in your OS terminal: +

+

+$ git clone https://github.com/kamilmysliwiec/nest-typescript-starter.git project
+$ cd project
+$ npm install
+$ npm run start
+

The project directory will contain several core files inside src directory. + Following the convention, newly created modules should be placed inside modules directory. + + + + + + + + + +
server.tsThe entry file of the application. It uses NestFactory to create the Nest application instance.
modules/app.module.tsDefines AppModule, the root module of the application. Right now it doesn't declare any metadata, because we didn't create any component and controller yet.
+

+ The server.ts contains single async function, which responsibility is to bootstrap our application: +

+ server.ts +
{{ bootstrap }}
+

+ We should always create the Nest application instance using the NestFactory. + The create() method returns object, which fulfils INestApplication interface, and provides a set of usable methods, which are well described in the next articles. +

+
diff --git a/src/app/homepage/pages/first-steps/first-steps.component.scss b/src/app/homepage/pages/first-steps/first-steps.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/homepage/pages/first-steps/first-steps.component.spec.ts b/src/app/homepage/pages/first-steps/first-steps.component.spec.ts new file mode 100644 index 0000000000..bdf35575df --- /dev/null +++ b/src/app/homepage/pages/first-steps/first-steps.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FirstStepsComponent } from './first-steps.component'; + +describe('FirstStepsComponent', () => { + let component: FirstStepsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ FirstStepsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(FirstStepsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/pages/first-steps/first-steps.component.ts b/src/app/homepage/pages/first-steps/first-steps.component.ts new file mode 100644 index 0000000000..339845df91 --- /dev/null +++ b/src/app/homepage/pages/first-steps/first-steps.component.ts @@ -0,0 +1,23 @@ +import { Component, ChangeDetectionStrategy } from '@angular/core'; +import { BasePageComponent } from '../page/page.component'; + +@Component({ + selector: 'app-first-steps', + templateUrl: './first-steps.component.html', + styleUrls: ['./first-steps.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class FirstStepsComponent extends BasePageComponent { + get bootstrap(): string { + return ` +import { NestFactory } from '@nestjs/core'; +import { ApplicationModule } from './modules/app.module'; + +async function bootstrap() { + const app = await NestFactory.create(ApplicationModule); + await app.listen(3000); +} +bootstrap(); +`; + } +} diff --git a/src/app/homepage/pages/guards/guards.component.html b/src/app/homepage/pages/guards/guards.component.html new file mode 100644 index 0000000000..26e9499ddf --- /dev/null +++ b/src/app/homepage/pages/guards/guards.component.html @@ -0,0 +1,3 @@ +

+ guards works! +

diff --git a/src/app/homepage/pages/guards/guards.component.scss b/src/app/homepage/pages/guards/guards.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/homepage/pages/guards/guards.component.spec.ts b/src/app/homepage/pages/guards/guards.component.spec.ts new file mode 100644 index 0000000000..f91f277e80 --- /dev/null +++ b/src/app/homepage/pages/guards/guards.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { GuardsComponent } from './guards.component'; + +describe('GuardsComponent', () => { + let component: GuardsComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ GuardsComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GuardsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/pages/guards/guards.component.ts b/src/app/homepage/pages/guards/guards.component.ts new file mode 100644 index 0000000000..90ff59d968 --- /dev/null +++ b/src/app/homepage/pages/guards/guards.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-guards', + templateUrl: './guards.component.html', + styleUrls: ['./guards.component.scss'] +}) +export class GuardsComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/homepage/pages/introduction/introduction.component.html b/src/app/homepage/pages/introduction/introduction.component.html new file mode 100644 index 0000000000..ae8540cfc7 --- /dev/null +++ b/src/app/homepage/pages/introduction/introduction.component.html @@ -0,0 +1,38 @@ +
+

Introduction

+

Nest is a powerful web framework for Node.js, which helps you effortlessly build efficient, scalable applications. It uses modern JavaScript, is built with TypeScript and combines best concepts of both OOP (Object Oriented Progamming) and FP (Functional Programming).

+

Nest is using well-known—Express library under the hood. This means that you can quickly start using Nest without worrying about third party plugins.

+

Installation

+

Install the TypeScript Starter Project with Git:

+

+$ git clone https://github.com/kamilmysliwiec/nest-typescript-starter.git project
+$ cd project
+$ npm install
+$ npm run start
+

Start a New Project from Scratch with NPM:

+

+$ npm i --save @nestjs/core @nestjs/common @nestjs/microservices @nestjs/websockets @nestjs/testing reflect-metadata rxjs
+

Philosophy

+

JavaScript is awesome. Now, the front end world is rich in variety of tools. We have a lot of amazing projects / libraries such as Angular, React or Vue, which improves our development process and makes our applications fast and extensible.

+

Node.js gave us a possibility to use this language also on the server side. There are a lot of superb libraries, helpers and tools for node, but non of them do not solve the main problem - the architecture.

+

We want to create scalable, loosely coupled and easy to maintain applications. That's why the Nest has been introduced. Let's show the entire world node.js potential together!

+

Features

+
    +
  • Built on top of TypeScript
  • +
  • Easy to learn - syntax is similar to Angular
  • +
  • Based on well-known libraries (Express / socket.io) so it’s a familiar experience
  • +
  • Supremely useful Dependency Injection support, built-in asynchronous Inversion of Control container
  • +
  • Hierarchical injector - increase abstraction in your application by creating reusable, loosely coupled modules with type injection
  • +
  • WebSockets module (based on socket.io, although you can use any other library using WsAdapter)
  • +
  • Own modularity system (split your system into reusable modules)
  • +
  • Reactive microservices support with message patterns (built-in transport via TCP / Redis, but you can use any other type of communication using CustomTransportStrategy)
  • +
  • Exceptions handler layer, exception filters, synchronous & asynchronous pipes layer (e.g. validation purposes)
  • +
  • Guards & Reflector - attach additional logic in more declaritive way (e.g. role-based access control)
  • +
  • Testing utilities (both e2e & unit tests)
  • +
+

People

+ +
diff --git a/src/app/homepage/pages/introduction/introduction.component.scss b/src/app/homepage/pages/introduction/introduction.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/homepage/pages/introduction/introduction.component.spec.ts b/src/app/homepage/pages/introduction/introduction.component.spec.ts new file mode 100644 index 0000000000..a5f68f55c5 --- /dev/null +++ b/src/app/homepage/pages/introduction/introduction.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { IntroductionComponent } from './introduction.component'; + +describe('IntroductionComponent', () => { + let component: IntroductionComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ IntroductionComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(IntroductionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/pages/introduction/introduction.component.ts b/src/app/homepage/pages/introduction/introduction.component.ts new file mode 100644 index 0000000000..74508cb949 --- /dev/null +++ b/src/app/homepage/pages/introduction/introduction.component.ts @@ -0,0 +1,10 @@ +import { Component, ChangeDetectionStrategy } from '@angular/core'; +import { BasePageComponent } from '../page/page.component'; + +@Component({ + selector: 'app-introduction', + templateUrl: './introduction.component.html', + styleUrls: ['./introduction.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class IntroductionComponent extends BasePageComponent {} \ No newline at end of file diff --git a/src/app/homepage/pages/middlewares/middlewares.component.html b/src/app/homepage/pages/middlewares/middlewares.component.html new file mode 100644 index 0000000000..5114270ac3 --- /dev/null +++ b/src/app/homepage/pages/middlewares/middlewares.component.html @@ -0,0 +1,89 @@ +
+

Middlewares

+

+ The middleware is a function, which is called before route handler. + Middleware functions have an access to the request + and response objects, so they can modify them. They can also be something like a barrier - if middleware function won't call next(), + the request will never be handled by the route handler. +

+
+

+ Middleware is a class with @Middleware() decorator. This class should implement the NestMiddleware interface. + Let's create an example, the LoggerMiddleware class. +

+ logger.middleware.ts +
{{ loggerMiddleware }}
+

+ The resolve() method has to return the regular expressjs middleware (req, res, next) => void. +

+

Dependency Injection

+

+ There's no exception when it comes to the middlewares. Same as components and controllers, they can inject dependencies which belong to the same module. +

+

Where to put the middlewares?

+

+ The middlewares shouldn't be listed in the @Module() decorator. + We've to setup them using configure() method of the module class. + Modules which include middlewares have to implement the NestModule interface. + Let's setup the LoggerMiddleware at the ApplicationModule level. +

+ app.module.ts +
{{ applicationModule }}
+
+ Hint We could pass here (inside forRoutes()) the single object and just use RequestMethod.ALL. +
+

+ In above example we setuped LoggerMiddleware for /cats route handlers, which we've registered inside CatsController. + The MiddlewareConsumer is a helper class. It provides several methods to work with the middlewares. All of them can be simply chained. + Let's go through those methods. +

+

+ The forRoutes() can take single object, multiple objects, controller class and even multiple controller classes. + In most cases you'll probably just pass the controllers and separate them by comma. Below is an example with the single controller: +

+ app.module.ts +
{{ applicationModuleByControllers }}
+
+ Hint The apply() method can take single middleware or an array of middlewares. +
+

Pass arguments to the middleware

+

+ Sometimes the behaviour of the middleware depends on the custom values e.g. array of user roles, options object etc. + We can pass additional arguments to the resolve() using with() method. See below example: +

+ app.module.ts +
{{ applicationModuleWithMethod }}
+

+ We passed custom string - ApplicationModule to the with() method. + Now we've to adjust the resolve() method of the LoggerMiddleware. +

+ logger.middleware.ts +
{{ loggerMiddlewareWithArgs }}
+

+ The value of the name property would be ApplicationModule. +

+

Async Middlewares

+

+ There's no contraindications to return the async function from the resolve() method. + Also, it's possible to make the resolve() method async too. This pattern is called deffered middleware. +

+ logger.middleware.ts +
{{ defferedMiddleware }}
+

Functional Middlewares

+

+ The LoggerMiddleware is quite short. It has no members, no additional methods, no dependencies. + Why we can't just use simple function? It's a good question, cause in fact - we can do it. + This type of the middleware is called functional middleware. + Let's transform the logger into the function. +

+ logger.middleware.ts +
{{ functionalMiddleware }}
+

+ Now use it within the ApplicationModule. +

+ app.module.ts +
{{ applyFunctionalMiddleware }}
+
+ Notice Let's consider to use functional middlewares everytime when your middleware doesn't have any dependencies. +
+
\ No newline at end of file diff --git a/src/app/homepage/pages/middlewares/middlewares.component.scss b/src/app/homepage/pages/middlewares/middlewares.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/homepage/pages/middlewares/middlewares.component.spec.ts b/src/app/homepage/pages/middlewares/middlewares.component.spec.ts new file mode 100644 index 0000000000..ba5934c0a7 --- /dev/null +++ b/src/app/homepage/pages/middlewares/middlewares.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MiddlewaresComponent } from './middlewares.component'; + +describe('MiddlewaresComponent', () => { + let component: MiddlewaresComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MiddlewaresComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MiddlewaresComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/pages/middlewares/middlewares.component.ts b/src/app/homepage/pages/middlewares/middlewares.component.ts new file mode 100644 index 0000000000..0605275fc8 --- /dev/null +++ b/src/app/homepage/pages/middlewares/middlewares.component.ts @@ -0,0 +1,135 @@ +import { Component, OnInit } from '@angular/core'; +import { BasePageComponent } from '../page/page.component'; + +@Component({ + selector: 'app-middlewares', + templateUrl: './middlewares.component.html', + styleUrls: ['./middlewares.component.scss'] +}) +export class MiddlewaresComponent extends BasePageComponent { + get loggerMiddleware() { + return ` +import { Middleware, NestMiddleware, ExpressMiddleware } from '@nestjs/common'; + +@Middleware() +export class LoggerMiddleware implements NestMiddleware { + resolve(...args: any[]): ExpressMiddleware { + return (req, res, next) => { + console.log('Request...'); + next(); + }; + } +}`; + } + + get applicationModule() { + return ` +import { Module, NestModule, MiddlewaresConsumer, RequestMethod } from '@nestjs/common'; +import { LoggerMiddleware } from './common/middlewares/logger.middleware'; +import { CatsModule } from './cats/cats.module'; + +@Module({ + modules: [CatsModule], +}) +export class ApplicationModule implements NestModule { + configure(consumer: MiddlewaresConsumer): void { + consumer.apply(LoggerMiddleware).forRoutes( + { path: '/cats', method: RequestMethod.GET }, + { path: '/cats', method: RequestMethod.POST }, + ); + } +}`; + } + + get applicationModuleByControllers() { + return ` +import { Module, NestModule, MiddlewaresConsumer, RequestMethod } from '@nestjs/common'; +import { LoggerMiddleware } from './common/middlewares/logger.middleware'; +import { CatsModule } from './cats/cats.module'; + +@Module({ + modules: [CatsModule], +}) +export class ApplicationModule implements NestModule { + configure(consumer: MiddlewaresConsumer): void { + consumer.apply(LoggerMiddleware).forRoutes(CatsController); + } +}`; + } + + get applicationModuleWithMethod() { + return ` +import { Module, NestModule, MiddlewaresConsumer } from '@nestjs/common'; +import { LoggerMiddleware } from './common/middlewares/logger.middleware'; +import { CatsModule } from './cats/cats.module'; +import { CatsController } from './cats/cats.controller'; + +@Module({ + modules: [CatsModule], +}) +export class ApplicationModule implements NestModule { + configure(consumer: MiddlewaresConsumer): void { + consumer.apply(LoggerMiddleware) + .with('ApplicationModule') + .forRoutes(CatsController); + } +}`; + } + + get loggerMiddlewareWithArgs() { + return ` +import { Middleware, NestMiddleware, ExpressMiddleware } from '@nestjs/common'; + +@Middleware() +export class LoggerMiddleware implements NestMiddleware { + resolve(name: string): ExpressMiddleware { + return (req, res, next) => { + console.log(\`[\${name}\] Request...\`); // [ApplicationModule] Request... + next(); + }; + } +}`; + } + + get defferedMiddleware() { + return ` +import { Middleware, NestMiddleware, ExpressMiddleware } from '@nestjs/common'; + +@Middleware() +export class LoggerMiddleware implements NestMiddleware { + async resolve(name: string): Promise { + await someAsyncFn(); + + return async (req, res, next) => { + await someAsyncFn(); + console.log(\`[\${name}\] Request...\`); // [ApplicationModule] Request... + next(); + }; + } +}`; + } + get functionalMiddleware() { + return ` +export const loggerMiddleware = (req, res, next) => { + console.log(\`Request...\`); + next(); +};`; + } + + get applyFunctionalMiddleware() { + return ` +import { Module, NestModule, MiddlewaresConsumer } from '@nestjs/common'; +import { loggerMiddleware } from './common/middlewares/logger.middleware'; +import { CatsModule } from './cats/cats.module'; +import { CatsController } from './cats/cats.controller'; + +@Module({ + modules: [CatsModule], +}) +export class ApplicationModule implements NestModule { + configure(consumer: MiddlewaresConsumer): void { + consumer.apply(loggerMiddleware).forRoutes(CatsController); + } +}`; + } +} \ No newline at end of file diff --git a/src/app/homepage/pages/modules/modules.component.html b/src/app/homepage/pages/modules/modules.component.html new file mode 100644 index 0000000000..bc201f20bc --- /dev/null +++ b/src/app/homepage/pages/modules/modules.component.html @@ -0,0 +1,89 @@ +
+

Modules

+

+ Module is a class with @Module() decorator. The @Module() decorator provides metadata, which Nest is using to organize the application structure. +

+
+

+ Every Nest application has at least one module, the root module. + The root module is the place, where Nest is starting to arrange the application tree. + In fact, the root module could be the only module in your application, especially when the app is small, but it doesn't make sense. + In most cases you'll have several modules, each with closely related set of capabilities. +

+

+ The @Module() decorator takes the single object whose properties describe the module. + Read about them in the below table: +

+ + + + + + + + + + + + + + + + + +
componentsthe components that will be instantiated by the Nest injector and may be shared at least across this module.
controllersthe set of controllers which have to be created
modulesthe list of imported modules that export the components which are necessary in this module
exportsthe subset of components that should be available in the other modules
+

+ The module encapsulates components by default. It means that it isn't possible to inject the components which aren't directly the part of the current module, or they're not exported from the imported modules. +

+

CatsModule

+

+ The CatsController and CatsService belong to the same application domain. + They should be moved to the feature module, the CatsModule. +

+ cats/cats.module.ts +
{{ catsModule }}
+

+ I've created the cats.module.ts file and moved everything related to this module into the + cats directory. The last thing we need to do is to import this module into the root module which name is ApplicationModule. +

+ app.module.ts +
{{ appModule }}
+

+ It's everything. Now Nest knows that besides ApplicationModule, it's essential to register the CatsModule too. +

+

Shared Module

+

+ In Nest, modules are singletons by default, so you can share the same instance of the component between 2..* modules without any effort. +

+
+ Notice In the previous versions of the Nest (< 4), modules weren't singletons, we had to use @Shared() decorator which now is deprecated. +
+
+

+ Every module is a Shared Module in fact. Once created is reused by the each module. + Let's imagine that we're gonna share the CatsService instance between few modules. +

+ cats.module.ts +
{{ catsModuleShared }}
+

+ Now each module which would import the CatsModule has an access to the CatsService, and will share the same instance with all of the modules which import this module too. +

+
+ Notice Never export the controller! +
+

Single Scope

+

+ They're modules which shouldn't be shared at all. To prevent module from being singleton, you can use @SingleScope() + decorator, which makes that Nest will always create the new instance of the module, when it's imported by another one. +

+
{{ singleScope }}
+

Dependency Injection

+

+ It's natural that module can inject components, which belongs to it (e.g. for the configuration purposes): +

+ cats.module.ts +
{{ catsModuleDi }}
+

+ However, modules can't be injected by the components, because it creates a circular dependency. +

+
diff --git a/src/app/homepage/pages/modules/modules.component.scss b/src/app/homepage/pages/modules/modules.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/homepage/pages/modules/modules.component.spec.ts b/src/app/homepage/pages/modules/modules.component.spec.ts new file mode 100644 index 0000000000..725067dbb6 --- /dev/null +++ b/src/app/homepage/pages/modules/modules.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ModulesComponent } from './modules.component'; + +describe('ModulesComponent', () => { + let component: ModulesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ ModulesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ModulesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/pages/modules/modules.component.ts b/src/app/homepage/pages/modules/modules.component.ts new file mode 100644 index 0000000000..f63afef41e --- /dev/null +++ b/src/app/homepage/pages/modules/modules.component.ts @@ -0,0 +1,81 @@ +import { Component, OnInit, ChangeDetectionStrategy } from '@angular/core'; +import { BasePageComponent } from '../page/page.component'; + +@Component({ + selector: 'app-modules', + templateUrl: './modules.component.html', + styleUrls: ['./modules.component.scss'], + changeDetection: ChangeDetectionStrategy.OnPush +}) +export class ModulesComponent extends BasePageComponent { + get catsModule() { + return ` +import { Module } from '@nestjs/common'; +import { CatsController } from './cats.controller'; +import { CatsService } from './cats.service'; + +@Module({ + controllers: [CatsController], + components: [CatsService], +}) +export class CatsModule {} +`; + } + + get appModule() { + return ` +import { Module } from '@nestjs/common'; +import { CatsModule } from './cats/cats.module'; + +@Module({ + modules: [CatsModule], +}) +export class ApplicationModule {} +`; + } + + get catsModuleShared() { + return ` +import { Module } from '@nestjs/common'; +import { CatsController } from './cats.controller'; +import { CatsService } from './cats.service'; + +@Module({ + controllers: [CatsController], + components: [CatsService], + exports: [CatsService] +}) +export class CatsModule {} +`; + } + + get singleScope() { + return ` +import { Module, SingleScope } from '@nestjs/common'; +import { CatsController } from './cats.controller'; +import { CatsService } from './cats.service'; + +@SingleScope() +@Module({ + controllers: [CatsController], + components: [CatsService], + exports: [CatsService] +}) +export class CatsModule {}`; + } + + get catsModuleDi() { + return ` +import { Module } from '@nestjs/common'; +import { CatsController } from './cats.controller'; +import { CatsService } from './cats.service'; + +@Module({ + controllers: [CatsController], + components: [CatsService], +}) +export class CatsModule { + constructor(private readonly catsService: CatsService) {} +}`; + } +} diff --git a/src/app/homepage/pages/page/page.component.ts b/src/app/homepage/pages/page/page.component.ts new file mode 100644 index 0000000000..a30775435e --- /dev/null +++ b/src/app/homepage/pages/page/page.component.ts @@ -0,0 +1,33 @@ +declare var Prism; +import { ChangeDetectorRef, ElementRef, AfterViewChecked, Component } from '@angular/core'; + +@Component({ + selector: 'app-base-page', + template: ``, +}) +export class BasePageComponent implements AfterViewChecked { + private isHljsInitialized = false; + + constructor( + private readonly cd: ChangeDetectorRef, + private readonly el: ElementRef) {} + + ngAfterViewChecked() { + this.initHljs(); + } + + private initHljs() { + if (this.isHljsInitialized) { + return; + } + const tags = this.el.nativeElement.querySelectorAll('code'); + [].forEach.call(tags, (code: HTMLElement) => { + if (code.className) { + Prism.highlightElement(code); + this.isHljsInitialized = true; + this.cd.markForCheck(); + } + } + ); + } +} diff --git a/src/app/homepage/pages/pipes/pipes.component.html b/src/app/homepage/pages/pipes/pipes.component.html new file mode 100644 index 0000000000..4093963646 --- /dev/null +++ b/src/app/homepage/pages/pipes/pipes.component.html @@ -0,0 +1,3 @@ +

+ pipes works! +

diff --git a/src/app/homepage/pages/pipes/pipes.component.scss b/src/app/homepage/pages/pipes/pipes.component.scss new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/app/homepage/pages/pipes/pipes.component.spec.ts b/src/app/homepage/pages/pipes/pipes.component.spec.ts new file mode 100644 index 0000000000..2fa7b0ceaf --- /dev/null +++ b/src/app/homepage/pages/pipes/pipes.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PipesComponent } from './pipes.component'; + +describe('PipesComponent', () => { + let component: PipesComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PipesComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PipesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/homepage/pages/pipes/pipes.component.ts b/src/app/homepage/pages/pipes/pipes.component.ts new file mode 100644 index 0000000000..bdd48dd067 --- /dev/null +++ b/src/app/homepage/pages/pipes/pipes.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-pipes', + templateUrl: './pipes.component.html', + styleUrls: ['./pipes.component.scss'] +}) +export class PipesComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/src/app/store/app-store.module.ts b/src/app/store/app-store.module.ts new file mode 100644 index 0000000000..07fee1f383 --- /dev/null +++ b/src/app/store/app-store.module.ts @@ -0,0 +1,27 @@ +import { NgModule } from '@angular/core'; +import { StoreModule } from '@ngrx/store'; +import { EffectsModule } from '@ngrx/effects'; + +import { rootReducers } from './root-reducers'; +import { rootInitialState } from './initial-state'; +import { AppState } from './common'; +import { rootEffects } from './root-effects'; + +const options = { + initialState: rootInitialState, +}; + +@NgModule({ + imports: [ + StoreModule.forRoot( + rootReducers, + options, + ), + EffectsModule.forRoot(rootEffects), + ], + exports: [ + StoreModule, + EffectsModule, + ] +}) +export class AppStoreModule { } diff --git a/src/app/store/common/index.ts b/src/app/store/common/index.ts new file mode 100644 index 0000000000..e9489de768 --- /dev/null +++ b/src/app/store/common/index.ts @@ -0,0 +1 @@ +export * from './interfaces'; \ No newline at end of file diff --git a/src/app/store/common/interfaces/action.interface.ts b/src/app/store/common/interfaces/action.interface.ts new file mode 100644 index 0000000000..0d27708511 --- /dev/null +++ b/src/app/store/common/interfaces/action.interface.ts @@ -0,0 +1,4 @@ +export interface Action { + type: string; + payload?: T; +} \ No newline at end of file diff --git a/src/app/store/common/interfaces/app-state.interface.ts b/src/app/store/common/interfaces/app-state.interface.ts new file mode 100644 index 0000000000..f36b47d642 --- /dev/null +++ b/src/app/store/common/interfaces/app-state.interface.ts @@ -0,0 +1,8 @@ +import { RouterReducerState } from '@ngrx/router-store'; + +import { UserState } from '../../user/interfaces/user-state.interface'; + +export interface AppState { + router: RouterReducerState; + user: UserState; +} diff --git a/src/app/store/common/interfaces/index.ts b/src/app/store/common/interfaces/index.ts new file mode 100644 index 0000000000..1423274415 --- /dev/null +++ b/src/app/store/common/interfaces/index.ts @@ -0,0 +1,2 @@ +export * from './action.interface'; +export * from './app-state.interface'; \ No newline at end of file diff --git a/src/app/store/initial-state.ts b/src/app/store/initial-state.ts new file mode 100644 index 0000000000..0b97daf245 --- /dev/null +++ b/src/app/store/initial-state.ts @@ -0,0 +1,7 @@ +import { AppState } from './common'; + +type Partial = { + [P in keyof T]?: T[P]; +}; + +export const rootInitialState: Partial = {}; \ No newline at end of file diff --git a/src/app/store/root-effects.ts b/src/app/store/root-effects.ts new file mode 100644 index 0000000000..5911da44aa --- /dev/null +++ b/src/app/store/root-effects.ts @@ -0,0 +1,3 @@ +export const rootEffects = [ + +]; \ No newline at end of file diff --git a/src/app/store/root-reducers.ts b/src/app/store/root-reducers.ts new file mode 100644 index 0000000000..3e85d511f5 --- /dev/null +++ b/src/app/store/root-reducers.ts @@ -0,0 +1,8 @@ +import { routerReducer } from '@ngrx/router-store'; + +import { userReducer } from './user/reducer'; + +export const rootReducers: any = { + router: routerReducer, + user: userReducer, +}; \ No newline at end of file diff --git a/src/app/store/user/interfaces/user-state.interface.ts b/src/app/store/user/interfaces/user-state.interface.ts new file mode 100644 index 0000000000..1c11d05947 --- /dev/null +++ b/src/app/store/user/interfaces/user-state.interface.ts @@ -0,0 +1,3 @@ +export interface UserState { + accessToken: string; +} \ No newline at end of file diff --git a/src/app/store/user/reducer.ts b/src/app/store/user/reducer.ts new file mode 100644 index 0000000000..4c4277a4f6 --- /dev/null +++ b/src/app/store/user/reducer.ts @@ -0,0 +1,7 @@ +import { AppState, Action } from '../common'; + +export function userReducer(state: AppState, action: Action) { + switch (action.type) { + } + return state; +} \ No newline at end of file diff --git a/src/app/store/user/selectors.ts b/src/app/store/user/selectors.ts new file mode 100644 index 0000000000..5a315777a4 --- /dev/null +++ b/src/app/store/user/selectors.ts @@ -0,0 +1,3 @@ +import { AppState } from '../common'; + +export const getUser = (state: AppState) => state.user; \ No newline at end of file diff --git a/src/assets/.gitkeep b/src/assets/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/assets/Components_1.png b/src/assets/Components_1.png new file mode 100644 index 0000000000000000000000000000000000000000..41dc6628d3161c143f64d6daab350c36f47222e2 GIT binary patch literal 41177 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

#gb2TvisZB5 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 jg&@}EaZqX@F-T?26aH_CR2=laxMS%jm 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 literal 0 HcmV?d00001 diff --git a/src/assets/Gateways_1.png b/src/assets/Gateways_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bd9464b50e863ffe3f7cd75ff908c1cc799fe351 GIT binary patch literal 57343 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