From f54d837ce80005a8b1e48d9a06a247188a9e42aa Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 1 Oct 2018 00:02:35 -0300 Subject: [PATCH 01/26] =?UTF-8?q?Inicio=20do=20projeto.=20Componentes,=20p?= =?UTF-8?q?aginas=20e=20servi=C3=A7os=20primario=20criados?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FrontEnd/DashBoardCelso/.editorconfig | 13 + FrontEnd/DashBoardCelso/.gitignore | 39 + FrontEnd/DashBoardCelso/README.md | 27 + FrontEnd/DashBoardCelso/angular.json | 144 + .../DashBoardCelso/e2e/protractor.conf.js | 28 + .../DashBoardCelso/e2e/src/app.e2e-spec.ts | 14 + FrontEnd/DashBoardCelso/e2e/src/app.po.ts | 11 + FrontEnd/DashBoardCelso/e2e/tsconfig.e2e.json | 13 + FrontEnd/DashBoardCelso/package-lock.json | 10838 ++++++++++++++++ FrontEnd/DashBoardCelso/package.json | 58 + .../Components/Header/header.component.html | 44 + .../Components/Header/header.component.scss | 0 .../Header/header.component.spec.ts | 25 + .../src/Components/Header/header.component.ts | 15 + .../DashBoardCelso/src/Models/cursoModel.ts | 2 + .../DashBoardCelso/src/Models/userModel.ts | 2 + .../Pages/DashBoard/dash-board.component.html | 3 + .../Pages/DashBoard/dash-board.component.scss | 0 .../DashBoard/dash-board.component.spec.ts | 25 + .../Pages/DashBoard/dash-board.component.ts | 15 + .../src/Pages/login/login.component.html | 14 + .../src/Pages/login/login.component.scss | 0 .../src/Pages/login/login.component.spec.ts | 25 + .../src/Pages/login/login.component.ts | 15 + .../LoginSrv/loginSrv.service.spec.ts | 15 + .../src/Services/LoginSrv/loginSrv.service.ts | 9 + .../src/Services/New Text Document.txt | 0 .../getDataSrv/getDataSrv.service.spec.ts | 15 + .../Services/getDataSrv/getDataSrv.service.ts | 9 + .../DashBoardCelso/src/app/app.component.html | 5 + .../DashBoardCelso/src/app/app.component.scss | 0 .../src/app/app.component.spec.ts | 27 + .../DashBoardCelso/src/app/app.component.ts | 10 + FrontEnd/DashBoardCelso/src/app/app.module.ts | 24 + .../DashBoardCelso/src/app/app.routing.ts | 26 + FrontEnd/DashBoardCelso/src/assets/.gitkeep | 0 FrontEnd/DashBoardCelso/src/browserslist | 9 + .../src/environments/environment.prod.ts | 3 + .../src/environments/environment.ts | 15 + FrontEnd/DashBoardCelso/src/favicon.ico | Bin 0 -> 5430 bytes FrontEnd/DashBoardCelso/src/index.html | 14 + FrontEnd/DashBoardCelso/src/karma.conf.js | 31 + FrontEnd/DashBoardCelso/src/main.ts | 12 + FrontEnd/DashBoardCelso/src/polyfills.ts | 80 + FrontEnd/DashBoardCelso/src/primeFlex.scss | 704 + FrontEnd/DashBoardCelso/src/styles.scss | 1 + FrontEnd/DashBoardCelso/src/test.ts | 20 + FrontEnd/DashBoardCelso/src/tsconfig.app.json | 12 + .../DashBoardCelso/src/tsconfig.spec.json | 19 + FrontEnd/DashBoardCelso/src/tslint.json | 17 + FrontEnd/DashBoardCelso/tsconfig.json | 20 + FrontEnd/DashBoardCelso/tslint.json | 130 + 52 files changed, 12597 insertions(+) create mode 100644 FrontEnd/DashBoardCelso/.editorconfig create mode 100644 FrontEnd/DashBoardCelso/.gitignore create mode 100644 FrontEnd/DashBoardCelso/README.md create mode 100644 FrontEnd/DashBoardCelso/angular.json create mode 100644 FrontEnd/DashBoardCelso/e2e/protractor.conf.js create mode 100644 FrontEnd/DashBoardCelso/e2e/src/app.e2e-spec.ts create mode 100644 FrontEnd/DashBoardCelso/e2e/src/app.po.ts create mode 100644 FrontEnd/DashBoardCelso/e2e/tsconfig.e2e.json create mode 100644 FrontEnd/DashBoardCelso/package-lock.json create mode 100644 FrontEnd/DashBoardCelso/package.json create mode 100644 FrontEnd/DashBoardCelso/src/Components/Header/header.component.html create mode 100644 FrontEnd/DashBoardCelso/src/Components/Header/header.component.scss create mode 100644 FrontEnd/DashBoardCelso/src/Components/Header/header.component.spec.ts create mode 100644 FrontEnd/DashBoardCelso/src/Components/Header/header.component.ts create mode 100644 FrontEnd/DashBoardCelso/src/Models/cursoModel.ts create mode 100644 FrontEnd/DashBoardCelso/src/Models/userModel.ts create mode 100644 FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html create mode 100644 FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss create mode 100644 FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.spec.ts create mode 100644 FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts create mode 100644 FrontEnd/DashBoardCelso/src/Pages/login/login.component.html create mode 100644 FrontEnd/DashBoardCelso/src/Pages/login/login.component.scss create mode 100644 FrontEnd/DashBoardCelso/src/Pages/login/login.component.spec.ts create mode 100644 FrontEnd/DashBoardCelso/src/Pages/login/login.component.ts create mode 100644 FrontEnd/DashBoardCelso/src/Services/LoginSrv/loginSrv.service.spec.ts create mode 100644 FrontEnd/DashBoardCelso/src/Services/LoginSrv/loginSrv.service.ts create mode 100644 FrontEnd/DashBoardCelso/src/Services/New Text Document.txt create mode 100644 FrontEnd/DashBoardCelso/src/Services/getDataSrv/getDataSrv.service.spec.ts create mode 100644 FrontEnd/DashBoardCelso/src/Services/getDataSrv/getDataSrv.service.ts create mode 100644 FrontEnd/DashBoardCelso/src/app/app.component.html create mode 100644 FrontEnd/DashBoardCelso/src/app/app.component.scss create mode 100644 FrontEnd/DashBoardCelso/src/app/app.component.spec.ts create mode 100644 FrontEnd/DashBoardCelso/src/app/app.component.ts create mode 100644 FrontEnd/DashBoardCelso/src/app/app.module.ts create mode 100644 FrontEnd/DashBoardCelso/src/app/app.routing.ts create mode 100644 FrontEnd/DashBoardCelso/src/assets/.gitkeep create mode 100644 FrontEnd/DashBoardCelso/src/browserslist create mode 100644 FrontEnd/DashBoardCelso/src/environments/environment.prod.ts create mode 100644 FrontEnd/DashBoardCelso/src/environments/environment.ts create mode 100644 FrontEnd/DashBoardCelso/src/favicon.ico create mode 100644 FrontEnd/DashBoardCelso/src/index.html create mode 100644 FrontEnd/DashBoardCelso/src/karma.conf.js create mode 100644 FrontEnd/DashBoardCelso/src/main.ts create mode 100644 FrontEnd/DashBoardCelso/src/polyfills.ts create mode 100644 FrontEnd/DashBoardCelso/src/primeFlex.scss create mode 100644 FrontEnd/DashBoardCelso/src/styles.scss create mode 100644 FrontEnd/DashBoardCelso/src/test.ts create mode 100644 FrontEnd/DashBoardCelso/src/tsconfig.app.json create mode 100644 FrontEnd/DashBoardCelso/src/tsconfig.spec.json create mode 100644 FrontEnd/DashBoardCelso/src/tslint.json create mode 100644 FrontEnd/DashBoardCelso/tsconfig.json create mode 100644 FrontEnd/DashBoardCelso/tslint.json diff --git a/FrontEnd/DashBoardCelso/.editorconfig b/FrontEnd/DashBoardCelso/.editorconfig new file mode 100644 index 000000000..6e87a003d --- /dev/null +++ b/FrontEnd/DashBoardCelso/.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/FrontEnd/DashBoardCelso/.gitignore b/FrontEnd/DashBoardCelso/.gitignore new file mode 100644 index 000000000..ee5c9d833 --- /dev/null +++ b/FrontEnd/DashBoardCelso/.gitignore @@ -0,0 +1,39 @@ +# 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/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +yarn-error.log +testem.log +/typings + +# System Files +.DS_Store +Thumbs.db diff --git a/FrontEnd/DashBoardCelso/README.md b/FrontEnd/DashBoardCelso/README.md new file mode 100644 index 000000000..81bda879e --- /dev/null +++ b/FrontEnd/DashBoardCelso/README.md @@ -0,0 +1,27 @@ +# DashBoardCelso + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.8. + +## 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|guard|interface|enum|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/). + +## 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/FrontEnd/DashBoardCelso/angular.json b/FrontEnd/DashBoardCelso/angular.json new file mode 100644 index 000000000..5ca66879c --- /dev/null +++ b/FrontEnd/DashBoardCelso/angular.json @@ -0,0 +1,144 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "DashBoardCelso": { + "root": "", + "sourceRoot": "src", + "projectType": "application", + "prefix": "app", + "schematics": { + "@schematics/angular:component": { + "styleext": "scss" + } + }, + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/DashBoardCelso", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.app.json", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss", + "src/primeFlex.scss", + "node_modules/font-awesome/scss/font-awesome.scss", + "node_modules/angular-bootstrap-md/scss/bootstrap/bootstrap.scss", + "node_modules/angular-bootstrap-md/scss/mdb-free.scss", + "node_modules/primeicons/primeicons.css", + "node_modules/primeng/resources/themes/nova-light/theme.css", + "node_modules/primeng/resources/primeng.min.css", + "node_modules/quill/dist/quill.core.css", + "node_modules/quill/dist/quill.snow.css" + ], + "scripts": [ + "node_modules/chart.js/dist/Chart.js", + "node_modules/quill/dist/quill.js", + "node_modules/hammerjs/hammer.min.js" + ] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "DashBoardCelso:build" + }, + "configurations": { + "production": { + "browserTarget": "DashBoardCelso:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "DashBoardCelso:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "src/tsconfig.spec.json", + "karmaConfig": "src/karma.conf.js", + "styles": [ + "src/styles.scss" + ], + "scripts": [], + "assets": [ + "src/favicon.ico", + "src/assets" + ] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "src/tsconfig.app.json", + "src/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } + }, + "DashBoardCelso-e2e": { + "root": "e2e/", + "projectType": "application", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "DashBoardCelso:serve" + }, + "configurations": { + "production": { + "devServerTarget": "DashBoardCelso:serve:production" + } + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": "e2e/tsconfig.e2e.json", + "exclude": [ + "**/node_modules/**" + ] + } + } + } + } + }, + "defaultProject": "DashBoardCelso" +} \ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/e2e/protractor.conf.js b/FrontEnd/DashBoardCelso/e2e/protractor.conf.js new file mode 100644 index 000000000..86776a391 --- /dev/null +++ b/FrontEnd/DashBoardCelso/e2e/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: [ + './src/**/*.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: require('path').join(__dirname, './tsconfig.e2e.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/e2e/src/app.e2e-spec.ts b/FrontEnd/DashBoardCelso/e2e/src/app.e2e-spec.ts new file mode 100644 index 000000000..8823e4172 --- /dev/null +++ b/FrontEnd/DashBoardCelso/e2e/src/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { AppPage } from './app.po'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getParagraphText()).toEqual('Welcome to DashBoardCelso!'); + }); +}); diff --git a/FrontEnd/DashBoardCelso/e2e/src/app.po.ts b/FrontEnd/DashBoardCelso/e2e/src/app.po.ts new file mode 100644 index 000000000..82ea75ba5 --- /dev/null +++ b/FrontEnd/DashBoardCelso/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root h1')).getText(); + } +} diff --git a/FrontEnd/DashBoardCelso/e2e/tsconfig.e2e.json b/FrontEnd/DashBoardCelso/e2e/tsconfig.e2e.json new file mode 100644 index 000000000..a6dd62202 --- /dev/null +++ b/FrontEnd/DashBoardCelso/e2e/tsconfig.e2e.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} \ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/package-lock.json b/FrontEnd/DashBoardCelso/package-lock.json new file mode 100644 index 000000000..c0a3d57ca --- /dev/null +++ b/FrontEnd/DashBoardCelso/package-lock.json @@ -0,0 +1,10838 @@ +{ + "name": "dash-board-celso", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.6.8.tgz", + "integrity": "sha512-ZKTm/zC61iY9IBHOEAKoMSzZpvhkmv+1O/HHzpHEuR551jCzu6vSyCmMY9Z7GBcccscCV+hjeSMwgFrFRcqlkw==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.8", + "rxjs": "^6.0.0" + } + }, + "@angular-devkit/build-angular": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.6.8.tgz", + "integrity": "sha512-VGqYAk8jpISraz2UHfsDre270NOUmV0CTSZw2p9sm5g/XIr5m+IHetFZz3gpoAr9+If2aFTs8Rt3sGdCRzwBqA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.6.8", + "@angular-devkit/build-optimizer": "0.6.8", + "@angular-devkit/core": "0.6.8", + "@ngtools/webpack": "6.0.8", + "ajv": "~6.4.0", + "autoprefixer": "^8.4.1", + "cache-loader": "^1.2.2", + "chalk": "~2.2.2", + "circular-dependency-plugin": "^5.0.2", + "clean-css": "^4.1.11", + "copy-webpack-plugin": "^4.5.1", + "file-loader": "^1.1.11", + "glob": "^7.0.3", + "html-webpack-plugin": "^3.0.6", + "istanbul": "^0.4.5", + "istanbul-instrumenter-loader": "^3.0.1", + "karma-source-map-support": "^1.2.0", + "less": "^3.0.4", + "less-loader": "^4.1.0", + "license-webpack-plugin": "^1.3.1", + "lodash": "^4.17.4", + "memory-fs": "^0.4.1", + "mini-css-extract-plugin": "~0.4.0", + "minimatch": "^3.0.4", + "node-sass": "^4.9.0", + "opn": "^5.1.0", + "parse5": "^4.0.0", + "portfinder": "^1.0.13", + "postcss": "^6.0.22", + "postcss-import": "^11.1.0", + "postcss-loader": "^2.1.5", + "postcss-url": "^7.3.2", + "raw-loader": "^0.5.1", + "resolve": "^1.5.0", + "rxjs": "^6.0.0", + "sass-loader": "^7.0.1", + "silent-error": "^1.1.0", + "source-map-support": "^0.5.0", + "stats-webpack-plugin": "^0.6.2", + "style-loader": "^0.21.0", + "stylus": "^0.54.5", + "stylus-loader": "^3.0.2", + "tree-kill": "^1.2.0", + "uglifyjs-webpack-plugin": "^1.2.5", + "url-loader": "^1.0.1", + "webpack": "~4.8.1", + "webpack-dev-middleware": "^3.1.3", + "webpack-dev-server": "^3.1.4", + "webpack-merge": "^4.1.2", + "webpack-sources": "^1.1.0", + "webpack-subresource-integrity": "^1.1.0-rc.4" + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.6.8.tgz", + "integrity": "sha512-of5syQbv3uNPp4AQkfRecfnp8AE8kvffbfYi+FFPZ6OGr7e59T1fGwk6+Zgb2qQFQg8HO2tzWI/uygtLIqmbmw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "source-map": "^0.5.6", + "typescript": "~2.9.1", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "typescript": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", + "dev": true + } + } + }, + "@angular-devkit/core": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.6.8.tgz", + "integrity": "sha512-rkIa1OSVWTt4g9leLSK/PsqOj3HZbDKHbZjqlslyfVa3AyCeiumFoOgViOVXlYgPX3HHDbE5uH24nyUWSD8uww==", + "dev": true, + "requires": { + "ajv": "~6.4.0", + "chokidar": "^2.0.3", + "rxjs": "^6.0.0", + "source-map": "^0.5.6" + } + }, + "@angular-devkit/schematics": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.6.8.tgz", + "integrity": "sha512-R4YqAUdo62wtrhX/5HSRGSKXNTWqfQb66ZE6m8jj6GEJNFKdNXMdxOchxr07LCiKTxfh1w6G3nGzxIsu/+D4KA==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.8", + "rxjs": "^6.0.0" + } + }, + "@angular/animations": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-6.1.9.tgz", + "integrity": "sha512-bPl5fNn4ja1S2Bn4xRT93wYqx0KjvZrX1FjpQltkf9dMmAdVpYj7spy+eYgClAMfZMWv7pa70F+FtSDkWbgRsA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/cli": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-6.0.8.tgz", + "integrity": "sha512-DhH1Zq5Yonthw6zh6W07fhf+9XrAZbD1fcQ0MrmbxlieCfLlTAdBqyK2LavFCKwSZkUMLF6UHM3+jiNRVZSSIg==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.6.8", + "@angular-devkit/core": "0.6.8", + "@angular-devkit/schematics": "0.6.8", + "@schematics/angular": "0.6.8", + "@schematics/update": "0.6.8", + "opn": "~5.3.0", + "resolve": "^1.1.7", + "rxjs": "^6.0.0", + "semver": "^5.1.0", + "silent-error": "^1.0.0", + "symbol-observable": "^1.2.0", + "yargs-parser": "^10.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "opn": { + "version": "5.3.0", + "resolved": "http://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "@angular/common": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-6.1.9.tgz", + "integrity": "sha512-i35FiFxHC/vBfyYEdprgbedxWuimCbqGSdSQpBUE4jNka80EifG2IAHIk/vAG98z7LSUyo6n7nf6iFDY3GrYZA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.1.9.tgz", + "integrity": "sha512-TY6axB1c7VvYXf+ebFDq3Ej+edgii3CDxew8HnyTFAWeDF2Gh8io1vTYwtdyDka6U53ASaheM1HpiUjzvYH0jQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler-cli": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.1.9.tgz", + "integrity": "sha512-/+Gh/I40KhwcLKiLpzYzZwPm78O2p6zxJxBmJA3gySCtl6iaxXq7wHvc63wa/6ESSvGWW0/WkZAr3m3GECx5Tg==", + "dev": true, + "requires": { + "chokidar": "^1.4.2", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "tsickle": "^0.32.1" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "@angular/core": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-6.1.9.tgz", + "integrity": "sha512-V4XuBvQtS98guRV0Fq661hG9Ij0+4oWyHvIrnqZckuQ9D1G8NSJyZ/Lfh0kBB1cl+mnGe/J9XN1avW7liswDNQ==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/forms": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.1.9.tgz", + "integrity": "sha512-gNwTCA0nzUR4LlXWPdfYBA+chq4X9mvOBo46+M44TevNwEsip6iSZKp7no9O5dquALOZ2HpFRuRkPoH4lXuVYA==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/http": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-6.1.9.tgz", + "integrity": "sha512-Tm6SA7QIKGT4Bb+xlyPG+ZXrwniNwF+/ejsKcBar8xaligW4+R9oo5Ql6t4HpjafkWIPLBEXyxaiVq1nWPyz7g==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/language-service": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-6.1.9.tgz", + "integrity": "sha512-xm3lbJYelyq02iLdS4gpymuHc8WadoPRCYMHW5Ond7kD+05JGt8smYEGOAcjSt0NJrpmkPWnTzlFlXxWYLQNdw==", + "dev": true + }, + "@angular/platform-browser": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.1.9.tgz", + "integrity": "sha512-/OpLZxpAQW912DnY4/RX0VLYJJ+TaCWMVP/tg7CBYaPpeJve7GHXfZLSJ1p95RhnSyohTYtdtbHG0NDuG8dgqw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.1.9.tgz", + "integrity": "sha512-PGng7UCrWc5gCNxKo94VSWq0SRdN4jUeTCnX7tEI//Qu+dQPolJkUHPgD9A5UH1pSOEYl/2z+S2bayu+z+9o2w==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/router": { + "version": "6.1.9", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-6.1.9.tgz", + "integrity": "sha512-FQksj8DiiWiY9o/1Ppq335Lr3d5wW3Odzg3yWC3JgFN37GMdCQxX71TX5ls8JeVspTiOeP9Lty99vDgfIcl+9A==", + "requires": { + "tslib": "^1.9.0" + } + }, + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/generator": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.1.2.tgz", + "integrity": "sha512-70A9HWLS/1RHk3Ck8tNHKxOoKQuSKocYgwDN85Pyl/RBduss6AKxUR7RIZ/lzduQMSYfWEM4DDBu6A+XGbkFig==", + "dev": true, + "requires": { + "@babel/types": "^7.1.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.10", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.1.tgz", + "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0.tgz", + "integrity": "sha512-MXkOJqva62dfC0w85mEf/LucPPS/1+04nmmRMPEBUB++hiiThQ2zPtX/mEWQ3mtzCEjIJvPY8nuwxXtQeQwUag==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + } + } + }, + "@babel/parser": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.1.2.tgz", + "integrity": "sha512-x5HFsW+E/nQalGMw7hu+fvPqnBeBaIr0lWJ2SG0PPL2j+Pm9lYvCrsZJGIgauPIENx0v10INIyFjmSNUD/gSqQ==", + "dev": true + }, + "@babel/template": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.1.2.tgz", + "integrity": "sha512-SY1MmplssORfFiLDcOETrW7fCLl+PavlwMh92rrGcikQaRq4iWPVH0MpwPpY3etVMx6RnDjXtr6VZYr/IbP/Ag==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.1.2", + "@babel/types": "^7.1.2" + } + }, + "@babel/traverse": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.1.0.tgz", + "integrity": "sha512-bwgln0FsMoxm3pLOgrrnGaXk18sSM9JNf1/nHC/FksmNGFbYnPWY4GYCfLxyP1KRmfsxqkRpfoa6xr6VuuSxdw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.0.0", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.0.0", + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "debug": "^3.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.10" + }, + "dependencies": { + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "globals": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.7.0.tgz", + "integrity": "sha512-K8BNSPySfeShBQXsahYB/AbbWruVOTyVpgoIDnl8odPpeSfP2J5QO2oLFFdl2j7GfDCtZj2bMKar2T49itTPCg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.1.2.tgz", + "integrity": "sha512-pb1I05sZEKiSlMUV9UReaqsCPUpgbHHHu2n1piRm7JkuBkm6QxcaIzKu6FMnMtCbih/cEYTR+RGYYC96Yk9HAg==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.10", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + } + } + }, + "@ngtools/webpack": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-6.0.8.tgz", + "integrity": "sha512-jorGpTd82ILbyUwg4JQekovHFaYwSMlZan4f7x+sd3+2WgyL3Z1+ZbVSGKvXZWKS/mAVx7eLkRikzJkuC4FgHw==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.8", + "tree-kill": "^1.0.0", + "webpack-sources": "^1.1.0" + } + }, + "@schematics/angular": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.6.8.tgz", + "integrity": "sha512-9kRphqTYG5Df/I8fvnT1zMsw0YNDPO9tl18tQZXj4am4raT7l9UCr+WkwJdlBoA5pwG6baWE9sL0iGWV/bzF/g==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.8", + "@angular-devkit/schematics": "0.6.8", + "typescript": ">=2.6.2 <2.8" + } + }, + "@schematics/update": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.6.8.tgz", + "integrity": "sha512-1Uq7LYnwL2wBwGVCgNz76QAR13ghAk+2vDDHOi+VX5+usHManxydrpoMGeX66OBPd+y5D3D2MFb+8mYHE7mygg==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.8", + "@angular-devkit/schematics": "0.6.8", + "npm-registry-client": "^8.5.1", + "rxjs": "^6.0.0", + "semver": "^5.3.0", + "semver-intersect": "^1.1.2" + } + }, + "@types/chart.js": { + "version": "2.7.36", + "resolved": "https://registry.npmjs.org/@types/chart.js/-/chart.js-2.7.36.tgz", + "integrity": "sha512-J92LO6oqKMIQ5WRPSdRHiZffpfZVXVpHgFSR8TpPlwi+C0MfaA9aNVMKPcUTZgoM26JrvqkRKQWEm+XPoPXmBA==" + }, + "@types/jasmine": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.8.tgz", + "integrity": "sha512-OJSUxLaxXsjjhob2DBzqzgrkLmukM3+JMpRp0r0E4HTdT1nwDCWhaswjYxazPij6uOdzHCJfNbDjmQ1/rnNbCg==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.4.tgz", + "integrity": "sha512-G83fHoholqR7pmsY7ojHJqMAl4zD6ylKNaKCx7zH+GisCBQpnI5a7aUTFWVzv2wppIuWd+mJxyRqTASPfqcQ2w==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/node": { + "version": "8.9.5", + "resolved": "http://registry.npmjs.org/@types/node/-/node-8.9.5.tgz", + "integrity": "sha512-jRHfWsvyMtXdbhnz5CVHxaBgnV6duZnPlQuRSo/dm/GnmikNcmZhxIES4E9OZjUmQ8C+HCl4KJux+cXN/ErGDQ==", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "resolved": "http://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "2.53.43", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.43.tgz", + "integrity": "sha512-UBYHWph6P3tutkbXpW6XYg9ZPbTKjw/YC2hGG1/GEvWwTbvezBUv3h+mmUFw79T3RFPnmedpiXdOBbXX+4l0jg==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.4.3.tgz", + "integrity": "sha512-S6npYhPcTHDYe9nlsKa9CyWByFi8Vj8HovcAgtmMAQZUOczOZbQ8CnwMYKYC5HEZzxEE+oY0jfQk4cVlI3J59Q==", + "dev": true, + "requires": { + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/wast-parser": "1.4.3", + "debug": "^3.1.0", + "webassemblyjs": "1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.4.3.tgz", + "integrity": "sha512-3zTkSFswwZOPNHnzkP9ONq4bjJSeKVMcuahGXubrlLmZP8fmTIJ58dW7h/zOVWiFSuG2em3/HH3BlCN7wyu9Rw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.4.3.tgz", + "integrity": "sha512-e8+KZHh+RV8MUvoSRtuT1sFXskFnWG9vbDy47Oa166xX+l0dD5sERJ21g5/tcH8Yo95e9IN3u7Jc3NbhnUcSkw==", + "dev": true, + "requires": { + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.4.3.tgz", + "integrity": "sha512-9FgHEtNsZQYaKrGCtsjswBil48Qp1agrzRcPzCbQloCoaTbOXLJ9IRmqT+uEZbenpULLRNFugz3I4uw18hJM8w==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.4.3" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.4.3.tgz", + "integrity": "sha512-JINY76U+702IRf7ePukOt037RwmtH59JHvcdWbTTyHi18ixmQ+uOuNhcdCcQHTquDAH35/QgFlp3Y9KqtyJsCQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.4.3.tgz", + "integrity": "sha512-I7bS+HaO0K07Io89qhJv+z1QipTpuramGwUSDkwEaficbSvCcL92CUZEtgykfNtk5wb0CoLQwWlmXTwGbNZUeQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.4.3.tgz", + "integrity": "sha512-p0yeeO/h2r30PyjnJX9xXSR6EDcvJd/jC6xa/Pxg4lpfcNi7JUswOpqDToZQ55HMMVhXDih/yqkaywHWGLxqyQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-buffer": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/wasm-gen": "1.4.3", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@webassemblyjs/leb128": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.4.3.tgz", + "integrity": "sha512-4u0LJLSPzuRDWHwdqsrThYn+WqMFVqbI2ltNrHvZZkzFPO8XOZ0HFQ5eVc4jY/TNHgXcnwrHjONhPGYuuf//KQ==", + "dev": true, + "requires": { + "leb": "^0.3.0" + } + }, + "@webassemblyjs/validation": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/validation/-/validation-1.4.3.tgz", + "integrity": "sha512-R+rRMKfhd9mq0rj2mhU9A9NKI2l/Rw65vIYzz4lui7eTKPcCu1l7iZNi4b9Gen8D42Sqh/KGiaQNk/x5Tn/iBQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3" + } + }, + "@webassemblyjs/wasm-edit": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.4.3.tgz", + "integrity": "sha512-qzuwUn771PV6/LilqkXcS0ozJYAeY/OKbXIWU3a8gexuqb6De2p4ya/baBeH5JQ2WJdfhWhSvSbu86Vienttpw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-buffer": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/helper-wasm-section": "1.4.3", + "@webassemblyjs/wasm-gen": "1.4.3", + "@webassemblyjs/wasm-opt": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "@webassemblyjs/wast-printer": "1.4.3", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.4.3.tgz", + "integrity": "sha512-eR394T8dHZfpLJ7U/Z5pFSvxl1L63JdREebpv9gYc55zLhzzdJPAuxjBYT4XqevUdW67qU2s0nNA3kBuNJHbaQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/leb128": "1.4.3" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.4.3.tgz", + "integrity": "sha512-7Gp+nschuKiDuAL1xmp4Xz0rgEbxioFXw4nCFYEmy+ytynhBnTeGc9W9cB1XRu1w8pqRU2lbj2VBBA4cL5Z2Kw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-buffer": "1.4.3", + "@webassemblyjs/wasm-gen": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.4.3.tgz", + "integrity": "sha512-KXBjtlwA3BVukR/yWHC9GF+SCzBcgj0a7lm92kTOaa4cbjaTaa47bCjXw6cX4SGQpkncB9PU2hHGYVyyI7wFRg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/helper-wasm-bytecode": "1.4.3", + "@webassemblyjs/leb128": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "webassemblyjs": "1.4.3" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.4.3.tgz", + "integrity": "sha512-QhCsQzqV0CpsEkRYyTzQDilCNUZ+5j92f+g35bHHNqS22FppNTywNFfHPq8ZWZfYCgbectc+PoghD+xfzVFh1Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/floating-point-hex-parser": "1.4.3", + "@webassemblyjs/helper-code-frame": "1.4.3", + "@webassemblyjs/helper-fsm": "1.4.3", + "long": "^3.2.0", + "webassemblyjs": "1.4.3" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.4.3.tgz", + "integrity": "sha512-EgXk4anf8jKmuZJsqD8qy5bz2frEQhBvZruv+bqwNoLWUItjNSFygk8ywL3JTEz9KtxTlAmqTXNrdD1d9gNDtg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/wast-parser": "1.4.3", + "long": "^3.2.0" + } + }, + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "accepts": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", + "dev": true, + "requires": { + "mime-types": "~2.1.18", + "negotiator": "0.6.1" + } + }, + "acorn": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "adm-zip": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", + "integrity": "sha1-ph7VrmkFw66lizplfSUDMJEFJzY=", + "dev": true + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "ajv": { + "version": "6.4.0", + "resolved": "http://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", + "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "dev": true, + "requires": { + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0", + "uri-js": "^3.0.2" + } + }, + "ajv-errors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.0.tgz", + "integrity": "sha1-7PAh+hCP0X37Xms4Py3SM+Mf/Fk=", + "dev": true + }, + "ajv-keywords": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.2.0.tgz", + "integrity": "sha1-6GuBnGAs+IIa1jdBNpjx3sAhhHo=", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "angular-bootstrap-md": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/angular-bootstrap-md/-/angular-bootstrap-md-6.2.4.tgz", + "integrity": "sha512-UrVNWPVWo/h8/jaSPDqNHn6yLYCJKK48CtqgJVLJRfh1Q6y4VeSYoqx7gdaJe+5767zGYHqfwh2oaQcqt0rSbg==" + }, + "angular5-csv": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/angular5-csv/-/angular5-csv-0.2.10.tgz", + "integrity": "sha512-hLEXyYjocQWev8e9P1LMWny3PxCtzeXvHUjiRGwMXUP8myByrFXf+B5taJFvlgTKsIONFu2wmRsTjjpyB2O1Yw==" + }, + "ansi-colors": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.1.0.tgz", + "integrity": "sha512-hTv1qPdi+sVEk3jYsdjox5nQI0C9HTbjKShbCdYLKb1LOfNbb7wsF4d7OEKIZoxIHx02tSp3m94jcPW2EfMjmA==", + "dev": true + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "app-root-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-2.1.0.tgz", + "integrity": "sha1-mL9lmTJ+zqGZMJhm6BQDaP0uZGo=", + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", + "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "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": "2.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.1.tgz", + "integrity": "sha1-Qmu52oQJDBg42BLIFQryCoMx4pY=", + "dev": true + }, + "array-slice": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", + "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arraybuffer.slice": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.6.tgz", + "integrity": "sha1-8zshWfBTKj8xB6JywMz70a0peco=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "async-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.1.tgz", + "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "8.6.5", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.6.5.tgz", + "integrity": "sha512-PLWJN3Xo/rycNkx+mp8iBDMTm3FeWe4VmYaZDSqL5QQB9sLsQkG5k8n+LNDFnhh9kdq2K+egL/icpctOmDHwig==", + "dev": true, + "requires": { + "browserslist": "^3.2.8", + "caniuse-lite": "^1.0.30000864", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^6.0.23", + "postcss-value-parser": "^3.2.3" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", + "dev": true + }, + "base64id": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-1.0.0.tgz", + "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "binary-extensions": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", + "integrity": "sha512-DYWGk01lDcxeS/K9IHPGWfT8PsJmbXRtRd2Sx72Tnb8pcYZQFF1oSDb8hJtS1vhp212q1Rzi5dUf9+nq0o9UIg==", + "dev": true + }, + "blob": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.4.tgz", + "integrity": "sha1-vPEwUspURj8w+fx+lbmkdjCpSSE=", + "dev": true + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "optional": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "blocking-proxy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", + "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "bluebird": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", + "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==", + "dev": true + }, + "bn.js": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", + "dev": true + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "dependencies": { + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "http://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "dev": true, + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "buffer": { + "version": "4.9.1", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "dev": true, + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-10.0.4.tgz", + "integrity": "sha512-Dph0MzuH+rTQzGPNT9fAnrPmMmjKfST6trxJeK7NQuHRaVw24VzPRWTmg9MpcwOVQZO0E1FBICUlFeNaKPIfHA==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "chownr": "^1.0.1", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "lru-cache": "^4.1.1", + "mississippi": "^2.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.2", + "ssri": "^5.2.4", + "unique-filename": "^1.1.0", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cache-loader": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cache-loader/-/cache-loader-1.2.2.tgz", + "integrity": "sha512-rsGh4SIYyB9glU+d0OcHwiXHXBoUgDhHZaQ1KAbiXqfz1CDPxtTboh1gPbJ0q2qdO8a9lfcjgC5CJ2Ms32y5bw==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mkdirp": "^0.5.1", + "neo-async": "^2.5.0", + "schema-utils": "^0.4.2" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true, + "optional": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caniuse-lite": { + "version": "1.0.30000888", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000888.tgz", + "integrity": "sha512-vftg+5p/lPsQGpnhSo/yBuYL36ai/cyjLvU3dOPJY1kkKrekLWIy8SLm+wzjX0hpCUdFTasC4/ZT7uqw4rKOnQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.2.tgz", + "integrity": "sha512-LvixLAQ4MYhbf7hgL4o5PeK32gJKvVzDRiSNIApDofQvyhl8adgG2lJVXn4+ekQoK7HL9RF8lqxwerpe0x2pCw==", + "dev": true, + "requires": { + "ansi-styles": "^3.1.0", + "escape-string-regexp": "^1.0.5", + "supports-color": "^4.0.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", + "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "dev": true, + "requires": { + "has-flag": "^2.0.0" + } + } + } + }, + "chart.js": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.5.0.tgz", + "integrity": "sha1-/m51Gok3afVucr7lrZEgfhxZKVc=", + "requires": { + "chartjs-color": "^2.0.0", + "moment": "^2.10.6" + } + }, + "chartjs-color": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz", + "integrity": "sha1-hKL7dVeH7YXDndbdjHsdiEKbrq4=", + "requires": { + "chartjs-color-string": "^0.5.0", + "color-convert": "^0.5.3" + }, + "dependencies": { + "color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" + } + } + }, + "chartjs-color-string": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz", + "integrity": "sha512-amWNvCOXlOUYxZVDSa0YOab5K/lmEhbFNKI55PWc4mlv28BDzA7zaoQTGxSBgJMHIW+hGX8YUrvw/FH4LyhwSQ==", + "requires": { + "color-name": "^1.0.0" + } + }, + "chokidar": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", + "integrity": "sha512-z9n7yt9rOvIJrMhvDtDictKrkFHeihkNl6uWMmZlmL6tJtX9Cs+87oK+teBx+JIgzvbX3yZHT3eF8vpbDxHJXQ==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.2.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "lodash.debounce": "^4.0.8", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.5" + } + }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, + "chrome-trace-event": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-0.1.3.tgz", + "integrity": "sha512-sjndyZHrrWiu4RY7AkHgjn80GfAM2ZSzUkZLV/Js59Ldmh6JDThf0SUmOHU53rFu2rVxxfCzJ30Ukcfch3Gb/A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "circular-dependency-plugin": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.0.2.tgz", + "integrity": "sha512-oC7/DVAyfcY3UWKm0sN/oVoDedQDQiw/vIiAnuTWTpE5s0zWf7l3WY417Xw/Fbi/QbAjctAkxgMiS9P0s3zkmA==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + }, + "clone-deep": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", + "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", + "dev": true, + "requires": { + "for-own": "^1.0.0", + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.0", + "shallow-clone": "^1.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "codelyzer": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.2.1.tgz", + "integrity": "sha512-CKwfgpfkqi9dyzy4s6ELaxJ54QgJ6A8iTSsM4bzHbLuTpbKncvNc3DUlCvpnkHBhK47gEf4qFsWoYqLrJPhy6g==", + "dev": true, + "requires": { + "app-root-path": "^2.0.1", + "css-selector-tokenizer": "^0.7.0", + "cssauron": "^1.4.0", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.6", + "sprintf-js": "^1.0.3" + } + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "combine-lists": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/combine-lists/-/combine-lists-1.0.1.tgz", + "integrity": "sha1-RYwH4J4NkA/Ci3Cj/sLazR0st/Y=", + "dev": true, + "requires": { + "lodash": "^4.5.0" + } + }, + "combined-stream": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", + "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "compare-versions": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", + "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compressible": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.15.tgz", + "integrity": "sha512-4aE67DL33dSW9gw4CI2H/yTxqHLNcxp0yS6jB+4h+wr3e43+1z7vm0HU9qXOH8j+qjKuL8+UtkOxYQSMq60Ylw==", + "dev": true, + "requires": { + "mime-db": ">= 1.36.0 < 2" + } + }, + "compression": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.3.tgz", + "integrity": "sha512-HSjyBG5N1Nnz7tF2+O7A9XUhyjru71/fwgNb7oIsEVHR0WShfs2tIS/EySLgiTe98aOK18YDlMXpzjCXY/n9mg==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.14", + "debug": "2.6.9", + "on-headers": "~1.0.1", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha1-Ce/2xVr3I24TcTWnJXSFi2eG9SQ=", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.5.0.tgz", + "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=", + "dev": true + }, + "console-browserify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", + "dev": true, + "requires": { + "date-now": "^0.1.4" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "content-disposition": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", + "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", + "dev": true + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.5.2.tgz", + "integrity": "sha512-zmC33E8FFSq3AbflTvqvPvBo621H36Afsxlui91d+QyZxPIuXghfnTsa1CuqiAaCPgJoSUWfTFbKJnadZpKEbQ==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + } + }, + "core-js": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-4.0.0.tgz", + "integrity": "sha512-6e5vDdrXZD+t5v0L8CrurPeybg4Fmf+FCSYxXKYVAqLUtyCSbuyqE059d0kDthTNRzKVjL7QMgNpEUlsoYH3iQ==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.9.0", + "parse-json": "^4.0.0", + "require-from-string": "^2.0.1" + }, + "dependencies": { + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + } + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "http://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "optional": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-parse": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", + "integrity": "sha1-Mh9s9zeCpv91ERE5D8BeLGV9jJs=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-selector-tokenizer": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.0.tgz", + "integrity": "sha1-5piEdK6MlTR3v15+/s/OzNnPTIY=", + "dev": true, + "requires": { + "cssesc": "^0.1.0", + "fastparse": "^1.1.1", + "regexpu-core": "^1.0.0" + } + }, + "css-what": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.0.tgz", + "integrity": "sha1-lGfQMsOM+u+58teVASUwYvh/ob0=", + "dev": true + }, + "cssauron": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", + "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "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": "^1.0.1" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "date-now": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-gateway": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-2.7.2.tgz", + "integrity": "sha512-lAc4i9QJR0YHSDFdzeBQKfZ1SRDG3hsJNEkrpcZa8QhBfidLAilT60BDEIVUUGqosFp425KOgB3uYqcnQrWafQ==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "ip-regex": "^2.1.0" + } + }, + "default-require-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", + "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "del": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-3.0.0.tgz", + "integrity": "sha1-U+z2mf/LyzljdpGrE7rxYIGXZuU=", + "dev": true, + "requires": { + "globby": "^6.1.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "p-map": "^1.1.1", + "pify": "^3.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "http://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "dom-converter": { + "version": "0.1.4", + "resolved": "http://registry.npmjs.org/dom-converter/-/dom-converter-0.1.4.tgz", + "integrity": "sha1-pF71cnuJDJv/5tfIduexnLDhfzs=", + "dev": true, + "requires": { + "utila": "~0.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "~1.1.1", + "entities": "~1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.1.0.tgz", + "integrity": "sha1-0mRvXlf2w7qxHPbLBdPArPdBJZQ=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "duplexify": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.0.tgz", + "integrity": "sha512-fO3Di4tBKJpYTFHAxTU00BcfWMY9w24r/x21a6rZRbsD/ToUgGxsMbiGRmB7uVAXeGKXD9MwiLZa5E97EVgIRQ==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.1.tgz", + "integrity": "sha512-0xy4A/twfrRCnkhfk8ErDi5DqdAsAqeGxht4xkCUrsvhhbQNs7E+4jV0CN7+NKIY0aHE72+XvqtBIXzD31ZbXQ==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.72", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.72.tgz", + "integrity": "sha512-OFbXEC01Lq7A66e3UywkvWYNN00HO1I9MAPereGe0NIXrt2MeaovL1bbY+951HKG0euUdPBe0L7yfKxgqxBMMw==", + "dev": true + }, + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", + "integrity": "sha1-jef5eJXSDTm4X4ju7nd7K9QrE9Q=", + "dev": true, + "requires": { + "accepts": "1.3.3", + "base64id": "1.0.0", + "cookie": "0.3.1", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "ws": "1.1.2" + }, + "dependencies": { + "accepts": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", + "integrity": "sha1-w8p0NJOGSMPg2cHjKN1otiLChMo=", + "dev": true, + "requires": { + "mime-types": "~2.1.11", + "negotiator": "0.6.1" + } + }, + "debug": { + "version": "2.3.3", + "resolved": "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-client": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-1.8.3.tgz", + "integrity": "sha1-F5jtk0USRkU9TG9jXXogH+lA1as=", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "component-inherit": "0.0.3", + "debug": "2.3.3", + "engine.io-parser": "1.3.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parsejson": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "1.1.2", + "xmlhttprequest-ssl": "1.5.3", + "yeast": "0.1.2" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-1.3.2.tgz", + "integrity": "sha1-k3sHnwAH0Ik+xW1GyyILjLQ1Igo=", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "0.0.6", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.4", + "has-binary": "0.1.7", + "wtf-8": "1.0.0" + } + }, + "enhanced-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", + "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.4.0", + "tapable": "^1.0.0" + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.12.0.tgz", + "integrity": "sha512-C8Fx/0jFmV5IPoMOFPA9P9G5NtqW+4cOPit3MIuvR2t7Ag2K15EJTpxnHAYTzL+aYQJIESYeXZmDBfOBE1HcpA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.1.1", + "function-bind": "^1.1.1", + "has": "^1.0.1", + "is-callable": "^1.1.3", + "is-regex": "^1.0.4" + } + }, + "es-to-primitive": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", + "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" + }, + "dependencies": { + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + }, + "dependencies": { + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", + "dev": true + } + } + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", + "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==", + "dev": true + }, + "events": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=", + "dev": true + }, + "eventsource": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-0.1.6.tgz", + "integrity": "sha1-Cs7ehJ7X3RzMMsgRuxG5RNTykjI=", + "dev": true, + "requires": { + "original": ">=0.0.5" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.10.0.tgz", + "integrity": "sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-braces": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", + "integrity": "sha1-SIsdHSRRyz06axks/AMPRMWFX+o=", + "dev": true, + "requires": { + "array-slice": "^0.2.3", + "array-unique": "^0.2.1", + "braces": "^0.1.2" + }, + "dependencies": { + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-0.1.5.tgz", + "integrity": "sha1-wIVxEIUpHYt1/ddOqw+FlygHEeY=", + "dev": true, + "requires": { + "expand-range": "^0.1.0" + } + }, + "expand-range": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-0.1.1.tgz", + "integrity": "sha1-TLjtoJk8pW+k9B/ELzy7TMrf8EQ=", + "dev": true, + "requires": { + "is-number": "^0.1.1", + "repeat-string": "^0.2.2" + } + }, + "is-number": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-0.1.1.tgz", + "integrity": "sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY=", + "dev": true + }, + "repeat-string": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-0.2.2.tgz", + "integrity": "sha1-x6jTI2BoNiBZp+RlH8aITosftK4=", + "dev": true + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "express": { + "version": "4.16.3", + "resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.3", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastparse": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.1.tgz", + "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "file-loader": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-1.1.11.tgz", + "integrity": "sha512-TGR4HU7HUsGg6GCOPJnFk06RhWgEWFLAGWiT6rcD+GRC2keU3s9RGJ+b3Z6/U73jwwNb2gKLJ7YCrp+jvU4ALg==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, + "find-cache-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-1.0.0.tgz", + "integrity": "sha1-kojj6ePMN0hxfTnq3hfPcfww7m8=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^2.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, + "follow-redirects": { + "version": "1.5.8", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.8.tgz", + "integrity": "sha512-sy1mXPmv7kLAMKW/8XofG7o9T+6gAjzdZK4AJF6ryqQYUa/hnzgiypoeUecZ53x7XiqKNEpNqLtS97MshW2nxg==", + "dev": true, + "requires": { + "debug": "=3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "font-awesome": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/font-awesome/-/font-awesome-4.7.0.tgz", + "integrity": "sha1-j6jPBBGhoxr9B7BtKQK7n8gVoTM=" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", + "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "1.0.6", + "mime-types": "^2.1.12" + }, + "dependencies": { + "combined-stream": { + "version": "1.0.6", + "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", + "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + } + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-access": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", + "integrity": "sha1-1qh/JiJxzv6+wwxVNAf7mV2od3o=", + "dev": true, + "requires": { + "null-check": "^1.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.4.tgz", + "integrity": "sha512-z8H8/diyk76B7q5wg+Ud0+CqzcAF3mBBI/bA5ne5zrRUUIvNkJY//D3BqyH571KuAC4Nr7Rw7CjWX4r0y9DvNg==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.9.2", + "node-pre-gyp": "^0.10.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "2.6.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.21", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "^2.1.0" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.2.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.1", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.2.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^2.1.2", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.10.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.0", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.1.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.1.10", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.5.1", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.5.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.0.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.2.4", + "minizlib": "^1.1.0", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.1", + "yallist": "^3.0.2" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "fstream": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", + "integrity": "sha1-XB+x8RdHcRTwYyoOtLcbPLD9MXE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "optional": true, + "requires": { + "globule": "^1.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "globby": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "globule": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", + "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "dev": true, + "optional": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "dev": true + }, + "hammerjs": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" + }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=", + "dev": true + }, + "handlebars": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.12.tgz", + "integrity": "sha512-RhmTekP+FZL+XNhwS1Wf+bTTZpdLougwt5pcgA1tuz6Jcx0fpH/7z0qd71RKnZHBCxIRBHfBOnio4gViPemNzA==", + "dev": true, + "requires": { + "async": "^2.5.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", + "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-binary": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/has-binary/-/has-binary-0.1.7.tgz", + "integrity": "sha1-aOYesWIQyVRaClzOBqhzkS/h5ow=", + "dev": true, + "requires": { + "isarray": "0.0.1" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", + "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.5.tgz", + "integrity": "sha512-eWI5HG9Np+eHV1KQhisXWwM+4EPPYe5dFX1UZZH7k/E3JzDEazVH+VGlZi6R94ZqImq+A3D1mCEtrFIfg/E7sA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", + "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "html-entities": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.2.1.tgz", + "integrity": "sha1-DfKTUfByEWNRXfueVUPl9u7VFi8=", + "dev": true + }, + "html-minifier": { + "version": "3.5.20", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.20.tgz", + "integrity": "sha512-ZmgNLaTp54+HFKkONyLFEfs5dd/ZOtlquKaTnqIWFmx3Av5zG6ZPcV2d0o9XM2fXOTxxIf6eDcwzFFotke/5zA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.1.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + } + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "http://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.3.0.tgz", + "integrity": "sha1-zHDQWln2VC5D8OaFyYLhTJJKnv4=", + "dev": true, + "requires": { + "domelementtype": "1", + "domhandler": "2.1", + "domutils": "1.1", + "readable-stream": "1.0" + }, + "dependencies": { + "domutils": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.1.6.tgz", + "integrity": "sha1-vdw94Jm5ou+sxRxiPyj0FuzFdIU=", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "http-parser-js": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", + "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=", + "dev": true + }, + "http-proxy": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", + "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", + "dev": true, + "requires": { + "eventemitter3": "^3.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "http://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "dev": true, + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "dev": true, + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + } + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "in-publish": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", + "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=", + "dev": true, + "optional": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "optional": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "internal-ip": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-3.0.1.tgz", + "integrity": "sha512-NXXgESC2nNVtU+pqmC9e6R8B1GpKxzsAQhffvh5AL79qKnodd+L7tnEQmTiUAVngqLalPbSqRA7XGIEL5nCd0Q==", + "dev": true, + "requires": { + "default-gateway": "^2.6.0", + "ipaddr.js": "^1.5.2" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true, + "optional": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "^1.0.0" + } + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "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": "^1.0.0" + } + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", + "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", + "dev": true, + "requires": { + "buffer-alloc": "^1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", + "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", + "dev": true, + "requires": { + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "dev": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-api": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.0.6.tgz", + "integrity": "sha512-8W5oeAGWXhtTJjAyVfvavOLVyZCTNCKsyF6GON/INKlBdO7uJ/bv3qnPj5M6ERKzmMCJS1kntnjjGuJ86fn3rQ==", + "dev": true, + "requires": { + "async": "^2.6.1", + "compare-versions": "^3.2.1", + "fileset": "^2.0.3", + "istanbul-lib-coverage": "^2.0.1", + "istanbul-lib-hook": "^2.0.1", + "istanbul-lib-instrument": "^3.0.0", + "istanbul-lib-report": "^2.0.2", + "istanbul-lib-source-maps": "^2.0.1", + "istanbul-reports": "^2.0.1", + "js-yaml": "^3.12.0", + "make-dir": "^1.3.0", + "once": "^1.4.0" + }, + "dependencies": { + "async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.1.tgz", + "integrity": "sha512-fNEiL2+AZt6AlAw/29Cr0UDe4sRAHCpEHh54WMz+Bb7QfNcFw4h3loofyJpLeQs4Yx7yuqu/2dLgM5hKOs6HlQ==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.0.0.tgz", + "integrity": "sha512-eQY9vN9elYjdgN9Iv6NS/00bptm02EBBk70lRMaVjeA6QYocQgenVrSgC28TJurdnZa80AGO3ASdFN+w/njGiQ==", + "dev": true, + "requires": { + "@babel/generator": "^7.0.0", + "@babel/parser": "^7.0.0", + "@babel/template": "^7.0.0", + "@babel/traverse": "^7.0.0", + "@babel/types": "^7.0.0", + "istanbul-lib-coverage": "^2.0.1", + "semver": "^5.5.0" + } + } + } + }, + "istanbul-instrumenter-loader": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", + "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", + "dev": true, + "requires": { + "convert-source-map": "^1.5.0", + "istanbul-lib-instrument": "^1.7.3", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "schema-utils": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", + "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", + "dev": true, + "requires": { + "ajv": "^5.0.0" + } + } + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.1.tgz", + "integrity": "sha512-ufiZoiJ8CxY577JJWEeFuxXZoMqiKpq/RqZtOAYuQLvlkbJWscq9n3gc4xrCGH9n4pW0qnTxOz1oyMmVtk8E1w==", + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.2.tgz", + "integrity": "sha512-rJ8uR3peeIrwAxoDEbK4dJ7cqqtxBisZKCuwkMtMv0xYzaAnsAi3AHrHPAAtNXzG/bcCgZZ3OJVqm1DTi9ap2Q==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.1", + "make-dir": "^1.3.0", + "supports-color": "^5.4.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "dev": true + } + } + }, + "istanbul-lib-source-maps": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-2.0.1.tgz", + "integrity": "sha512-30l40ySg+gvBLcxTrLzR4Z2XTRj3HgRCA/p2rnbs/3OiTaoj054gAbuP5DcLOtwqmy4XW8qXBHzrmP2/bQ9i3A==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^2.0.1", + "make-dir": "^1.3.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" + }, + "dependencies": { + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "istanbul-lib-coverage": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz", + "integrity": "sha512-nPvSZsVlbG9aLhZYaC3Oi1gT/tpyo3Yt5fNyf6NmcKIayz4VV/txxJFFKAK/gU4dcNn8ehsanBbVHVl0+amOLA==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.0.1.tgz", + "integrity": "sha512-CT0QgMBJqs6NJLF678ZHcquUAZIoBIUNzdJrRJfpkI9OnzG6MkUfHxbJC3ln981dMswC7/B1mfX3LNkhgJxsuw==", + "dev": true, + "requires": { + "handlebars": "^4.0.11" + } + }, + "jasmine": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", + "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", + "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", + "dev": true + } + } + }, + "jasmine-core": { + "version": "2.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.99.1.tgz", + "integrity": "sha1-5kAN8ea1bhMLYcS80JPap/boyhU=", + "dev": true + }, + "jasmine-diff": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/jasmine-diff/-/jasmine-diff-0.1.3.tgz", + "integrity": "sha1-k8zC3MQQKMXd1GBlWAdIOfLe6qg=", + "dev": true, + "requires": { + "diff": "^3.2.0" + } + }, + "jasmine-spec-reporter": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", + "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", + "dev": true, + "requires": { + "colors": "1.1.2" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "js-base64": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz", + "integrity": "sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ==", + "dev": true, + "optional": true + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.12.0.tgz", + "integrity": "sha512-PIt2cnwmPfL4hKNwqeiuz4bKfnzHTBv6HyVgjahA6mPLwPDzjDWrplJBMjHUFxku/N3FlmrbyPclad+I+4mJ3A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", + "integrity": "sha1-PAQ0dD35Pi9cQq7nsZvLSDV19OE=", + "dev": true + }, + "json5": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz", + "integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==", + "dev": true, + "requires": { + "core-js": "~2.3.0", + "es6-promise": "~3.0.2", + "lie": "~3.1.0", + "pako": "~1.0.2", + "readable-stream": "~2.0.6" + }, + "dependencies": { + "core-js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.3.0.tgz", + "integrity": "sha1-+rg/uwstjchfpjbEudNMdUIMbWU=", + "dev": true + }, + "es6-promise": { + "version": "3.0.2", + "resolved": "http://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", + "integrity": "sha1-AQ1YWEI6XxGJeWZfRkhqlcbuK7Y=", + "dev": true + }, + "process-nextick-args": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", + "dev": true + }, + "readable-stream": { + "version": "2.0.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", + "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "~1.0.0", + "process-nextick-args": "~1.0.6", + "string_decoder": "~0.10.x", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "karma": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", + "integrity": "sha512-k5pBjHDhmkdaUccnC7gE3mBzZjcxyxYsYVaqiL2G5AqlfLyBO5nw2VdNK+O16cveEPd/gIOWULH7gkiYYwVNHg==", + "dev": true, + "requires": { + "bluebird": "^3.3.0", + "body-parser": "^1.16.1", + "chokidar": "^1.4.1", + "colors": "^1.1.0", + "combine-lists": "^1.0.0", + "connect": "^3.6.0", + "core-js": "^2.2.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.0", + "expand-braces": "^0.1.1", + "glob": "^7.1.1", + "graceful-fs": "^4.1.2", + "http-proxy": "^1.13.0", + "isbinaryfile": "^3.0.0", + "lodash": "^3.8.0", + "log4js": "^0.6.31", + "mime": "^1.3.4", + "minimatch": "^3.0.2", + "optimist": "^0.6.1", + "qjobs": "^1.1.4", + "range-parser": "^1.2.0", + "rimraf": "^2.6.0", + "safe-buffer": "^5.0.1", + "socket.io": "1.7.3", + "source-map": "^0.5.3", + "tmp": "0.0.31", + "useragent": "^2.1.12" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha1-eY5ol3gVHIB2tLNg5e3SjNortGg=", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "lodash": { + "version": "3.10.1", + "resolved": "http://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + } + } + } + }, + "karma-chrome-launcher": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "dev": true, + "requires": { + "fs-access": "^1.0.0", + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.0.4.tgz", + "integrity": "sha512-xJS7QSQIVU6VK9HuJ/ieE5yynxKhjCCkd96NLY/BX/HXsx0CskU9JJiMQbd4cHALiddMwI4OWh1IIzeWrsavJw==", + "dev": true, + "requires": { + "istanbul-api": "^2.0.5", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-1.1.2.tgz", + "integrity": "sha1-OU8rJf+0pkS5rabyLUQ+L9CIhsM=", + "dev": true + }, + "karma-jasmine-html-reporter": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-0.2.2.tgz", + "integrity": "sha1-SKjl7xiAdhfuK14zwRlMNbQ5Ukw=", + "dev": true, + "requires": { + "karma-jasmine": "^1.0.2" + } + }, + "karma-source-map-support": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.3.0.tgz", + "integrity": "sha512-HcPqdAusNez/ywa+biN4EphGz62MmQyPggUsDfsHqa7tSe4jdsxgvTKuDfIazjL+IOxpVWyT7Pr4dhAV+sxX5Q==", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "optional": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "leb": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/leb/-/leb-0.3.0.tgz", + "integrity": "sha1-Mr7p+tFoMo1q6oUi2DP0GA7tHaM=", + "dev": true + }, + "less": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/less/-/less-3.8.1.tgz", + "integrity": "sha512-8HFGuWmL3FhQR0aH89escFNBQH/nEiYPP2ltDFdQw2chE28Yx2E3lhAIq9Y2saYwLSwa699s4dBVEfCY8Drf7Q==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz", + "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^3.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "license-webpack-plugin": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-1.5.0.tgz", + "integrity": "sha512-Of/H79rZqm2aeg4RnP9SMSh19qkKemoLT5VaJV58uH5AxeYWEcBgGFs753JEJ/Hm6BPvQVfIlrrjoBwYj8p7Tw==", + "dev": true, + "requires": { + "ejs": "^2.5.7" + } + }, + "lie": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz", + "integrity": "sha1-mkNrLMd0bKWd56QfpGmz77dr2H4=", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.3.1.tgz", + "integrity": "sha512-By6ZFY7ETWOc9RFaAIb23IjJVcM4dvJC/N57nmdz9RSkMXvAXGI7SyVlAw3v8vjtDRlqThgVDVmTnr9fqMlxkw==", + "dev": true + }, + "loader-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.1.0.tgz", + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true, + "optional": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", + "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", + "dev": true, + "optional": true + }, + "lodash.tail": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", + "integrity": "sha1-0jM6NtnncXyK0vfKyv7HwytERmQ=", + "dev": true + }, + "log4js": { + "version": "0.6.38", + "resolved": "http://registry.npmjs.org/log4js/-/log4js-0.6.38.tgz", + "integrity": "sha1-LElBFmldb7JUgJQ9P8hy5mKlIv0=", + "dev": true, + "requires": { + "readable-stream": "~1.0.2", + "semver": "~4.3.3" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "semver": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.6.tgz", + "integrity": "sha1-MAvG4OhjdPe6YQaLWx7NV/xlMto=", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "loglevel": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.1.tgz", + "integrity": "sha1-4PyVEztu8nbNyIh82vJKpvFW+Po=", + "dev": true + }, + "long": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", + "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "optional": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-error": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz", + "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.2.tgz", + "integrity": "sha512-UN1dNocxQq44IhJyMI4TU8phc2m9BddacHRPRjKGLYaF0jqd3xLz0jS0skpAU9WgYyoR4gHtUpzytNBS385FWQ==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-random": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.1.tgz", + "integrity": "sha1-izqsWIuKZuSXXjzepn97sylgH6w=", + "dev": true + }, + "md5.js": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz", + "integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.0.0.tgz", + "integrity": "sha512-WQxG/5xYc3tMbYLXoXPm81ET2WDULiU5FxbuIoNbJqLOOI8zehXFdZuiUEgfdrU2mVB1pxBZUGlYORSrpuJreA==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^1.1.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "optional": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true, + "optional": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", + "dev": true + }, + "mime-types": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "dev": true, + "requires": { + "mime-db": "~1.36.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.4.3.tgz", + "integrity": "sha512-Mxs0nxzF1kxPv4TRi2NimewgXlJqh0rGE30vviCU2WHrpbta6wklnUV9dr9FUtoAHmB3p3LeXEC+ZjgHvB0Dzg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mississippi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-2.0.0.tgz", + "integrity": "sha512-zHo8v+otD1J10j/tC+VNoGK9keCuByhKovAvdn74dmxJl9+mWHnx6EMsDN4lgRoMI/eYo2nchAxniIbUPb5onw==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "moment": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", + "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=" + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "nan": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", + "dev": true + }, + "neo-async": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.5.2.tgz", + "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-forge": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.5.tgz", + "integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "optional": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true, + "optional": true + } + } + }, + "node-libs-browser": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", + "integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^1.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.0", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.10.3", + "vm-browserify": "0.0.4" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-sass": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.3.tgz", + "integrity": "sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww==", + "dev": true, + "optional": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash.assign": "^4.2.0", + "lodash.clonedeep": "^4.3.2", + "lodash.mergewith": "^4.6.0", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.10.0", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "2.87.0", + "sass-graph": "^2.2.4", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "optional": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "optional": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "har-validator": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", + "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", + "dev": true, + "optional": true, + "requires": { + "ajv": "^5.1.0", + "har-schema": "^2.0.0" + } + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true, + "optional": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true, + "optional": true + }, + "request": { + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.6.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.5", + "extend": "~3.0.1", + "forever-agent": "~0.6.1", + "form-data": "~2.3.1", + "har-validator": "~5.0.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.17", + "oauth-sign": "~0.8.2", + "performance-now": "^2.1.0", + "qs": "~6.5.1", + "safe-buffer": "^5.1.1", + "tough-cookie": "~2.3.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.1.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", + "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", + "dev": true, + "optional": true, + "requires": { + "punycode": "^1.4.1" + } + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", + "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.6.0", + "osenv": "^0.1.5", + "semver": "^5.5.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-registry-client": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.6.0.tgz", + "integrity": "sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg==", + "dev": true, + "requires": { + "concat-stream": "^1.5.2", + "graceful-fs": "^4.1.6", + "normalize-package-data": "~1.0.1 || ^2.0.0", + "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", + "npmlog": "2 || ^3.1.0 || ^4.0.0", + "once": "^1.3.3", + "request": "^2.74.0", + "retry": "^0.10.0", + "safe-buffer": "^5.1.1", + "semver": "2 >=2.2.1 || 3.x || 4 || 5", + "slide": "^1.1.3", + "ssri": "^5.2.4" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "nth-check": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.1.tgz", + "integrity": "sha1-mSms32KPwsQQmN6rgqxYDPFJquQ=", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "null-check": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/null-check/-/null-check-1.0.0.tgz", + "integrity": "sha1-l33/1xdgErnsMNKjnbXPcqBDnt0=", + "dev": true + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-keys": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", + "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + } + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", + "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "opn": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", + "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha1-7CLTEoBrtT5zF3Pnza788cZDEo8=", + "dev": true + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "optional": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "1.1.0", + "resolved": "http://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz", + "integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", + "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", + "dev": true + }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" + }, + "parse-asn1": { + "version": "5.1.1", + "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parsejson": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/parsejson/-/parsejson-0.0.3.tgz", + "integrity": "sha1-q343WfIJ7OmUN5c/fQ8fZK4OZKs=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", + "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pbkdf2": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "portfinder": { + "version": "1.0.17", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.17.tgz", + "integrity": "sha512-syFcRIRzVI1BoEFOCaAiizwDolh1S1YXSodsVhncbhjzjZQulhczNRbqnUl9N31Q4dKGOXsNDqxC2BWBgSMqeQ==", + "dev": true, + "requires": { + "async": "^1.5.2", + "debug": "^2.2.0", + "mkdirp": "0.5.x" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-import": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-11.1.0.tgz", + "integrity": "sha512-5l327iI75POonjxkXgdRCUS+AlzAdBx4pOvMEhTKTCjb1p8IEeVR9yx3cPbmN7LIWJLbfnIXxAhoB4jpD0c/Cw==", + "dev": true, + "requires": { + "postcss": "^6.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-load-config": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.0.0.tgz", + "integrity": "sha512-V5JBLzw406BB8UIfsAWSK2KSwIJ5yoEIVFb4gVkXci0QdKgA24jLmHZ/ghe/GgX0lJ0/D1uUK1ejhzEY94MChQ==", + "dev": true, + "requires": { + "cosmiconfig": "^4.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", + "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^6.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^0.4.0" + } + }, + "postcss-url": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-7.3.2.tgz", + "integrity": "sha512-QMV5mA+pCYZQcUEPQkmor9vcPQ2MT+Ipuu8qdi1gVxbNiIiErEGft+eny1ak19qALoBkccS5AHaCaCDzh7b9MA==", + "dev": true, + "requires": { + "mime": "^1.4.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.0", + "postcss": "^6.0.1", + "xxhashjs": "^0.2.1" + } + }, + "postcss-value-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.0.tgz", + "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "primeicons": { + "version": "1.0.0-beta.10", + "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-1.0.0-beta.10.tgz", + "integrity": "sha512-kSXJdNWNYC4PmJInzYQDCPHjw8j7obmoxWaUVxV+RRmEKcOCmZabnDwihj7SQz38IRe1VNlLJlY/5As13C9TuA==" + }, + "primeng": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-6.1.4.tgz", + "integrity": "sha512-z9jkgvaOveWtylpQXp1wOZtLNcnJuivdot6EpquPGV8oBjKMxFX+2k0NbTwDINldR384rurxUd8830Wk9/Z9Nw==" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "protractor": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.3.2.tgz", + "integrity": "sha512-pw4uwwiy5lHZjIguxNpkEwJJa7hVz+bJsvaTI+IbXlfn2qXwzbF8eghW/RmrZwE2sGx82I8etb8lVjQ+JrjejA==", + "dev": true, + "requires": { + "@types/node": "^6.0.46", + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "~2.53.39", + "blocking-proxy": "^1.0.0", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "optimist": "~0.6.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "^1.0.0", + "webdriver-manager": "^12.0.6" + }, + "dependencies": { + "@types/node": { + "version": "6.0.117", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.117.tgz", + "integrity": "sha512-sihk0SnN8PpiS5ihu5xJQ5ddnURNq4P+XPmW+nORlKkHy21CoZO/IVHK/Wq/l3G8fFW06Fkltgnqx229uPlnRg==", + "dev": true + }, + "adm-zip": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.11.tgz", + "integrity": "sha512-L8vcjDTCOIJk7wFvmlEUN7AsSb8T+2JrdP7KINBjzr24TJ5Mwj590sLu3BC7zNZowvJWa/JtPmD8eJCzdtDWjA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "del": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", + "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "globby": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", + "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "webdriver-manager": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.0.tgz", + "integrity": "sha512-oEc5fmkpz6Yh6udhwir5m0eN5mgRPq9P/NU5YWuT3Up5slt6Zz+znhLU7q4+8rwCZz/Qq3Fgpr/4oao7NPCm2A==", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + } + } + } + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.1.29", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", + "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.2", + "resolved": "http://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.0.0.tgz", + "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", + "dev": true + }, + "quill": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.6.tgz", + "integrity": "sha512-K0mvhimWZN6s+9OQ249CH2IEPZ9JmkFuCQeHAOQax3EZ2nDJ3wfGh59mnlQaZV2i7u8eFarx6wAtvQKgShojug==", + "requires": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.1", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + }, + "dependencies": { + "eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=" + } + } + }, + "quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "requires": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + } + }, + "randomatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", + "integrity": "sha512-KnGPVE0lo2WoXxIZ7cPR8YBpiol4gsSuOwDSg410oHh80ZMp5EiypNqL2K4Z77vJn6lB5rap7IkAmcUlalcnBQ==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.6.tgz", + "integrity": "sha512-CIQ5OFxf4Jou6uOKe9t1AOgqpeU5fd70A8NPdHSGeYXqXsPe6peOwI0cUl88RWZ6sP1vPMV3avd/R6cZ5/sP1A==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", + "dev": true + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true + } + } + }, + "raw-loader": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-0.5.1.tgz", + "integrity": "sha1-DD0L6u2KAclm2Xh793goElKpeao=", + "dev": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "dependencies": { + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "optional": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "reflect-metadata": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.12.tgz", + "integrity": "sha512-n+IyV+nGz3+0q3/Yf1ra12KpCyi001bi4XFxSjbiWWjfqb52iTTtpGXmCCAOWWIAn9KEuFZKGqBERHmrtScZ3A==", + "dev": true + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpu-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", + "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.1.tgz", + "integrity": "sha1-iYyr/Ivt5Le5ETWj/9Mj5YwNsxk=", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "~0.1", + "htmlparser2": "~3.3.0", + "strip-ansi": "^3.0.0", + "utila": "~0.3" + }, + "dependencies": { + "utila": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.3.3.tgz", + "integrity": "sha1-1+jn1+MJEHCSsF+NloiCTWM6QiY=", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", + "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "dev": true, + "requires": { + "path-parse": "^1.0.5" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", + "integrity": "sha512-JTWmoY9tWCs7zvIk/CvRjhjGaOd+OVBM987mxFo+OW66cGpdKjZcpmc74ES1sB//7Kl/PAe8+wEakuhG4pcgOw==", + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sass-graph": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", + "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^7.0.0" + } + }, + "sass-loader": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", + "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", + "dev": true, + "requires": { + "clone-deep": "^2.0.1", + "loader-utils": "^1.0.1", + "lodash.tail": "^4.1.1", + "neo-async": "^2.5.0", + "pify": "^3.0.0", + "semver": "^5.5.0" + } + }, + "saucelabs": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", + "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "sax": { + "version": "0.5.8", + "resolved": "http://registry.npmjs.org/sax/-/sax-0.5.8.tgz", + "integrity": "sha1-1HLbIo6zMcJQaw6MFVJK25OdEsE=", + "dev": true + }, + "schema-utils": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.7.tgz", + "integrity": "sha512-v/iwU6wvwGK8HbU9yi3/nhGzP0yGSuhQMzL6ySiec1FSrZZDkhm4noOSWzrNFo/jEc+SJY6jRTwuwbSXJPDUnQ==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "optional": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", + "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "tmp": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", + "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.3.tgz", + "integrity": "sha512-vmZenZ+8Al3NLHkWnhBQ0x6BkML1eCP2xEi3JE+f3D9wW9fipD9NNJHYtE9XJM4TsPaHGZJIamrSI6MTg1dU2Q==", + "dev": true, + "requires": { + "node-forge": "0.7.5" + } + }, + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", + "dev": true + }, + "semver-dsl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", + "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", + "dev": true, + "requires": { + "semver": "^5.3.0" + } + }, + "semver-intersect": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", + "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", + "dev": true, + "requires": { + "semver": "^5.0.0" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.5.0.tgz", + "integrity": "sha512-Ga8c8NjAAp46Br4+0oZ2WxJCwIzwP60Gq1YPgU+39PiTVxyed/iKE/zyZI6+UlVYH5Q4PaQdHhcegIFPZTUfoQ==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "http://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", + "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^5.0.0", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "silent-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/silent-error/-/silent-error-1.1.0.tgz", + "integrity": "sha1-IglwbxyFCp8dENDYQJGLRvJuG8k=", + "dev": true, + "requires": { + "debug": "^2.2.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socket.io": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-1.7.3.tgz", + "integrity": "sha1-uK+cq6AJSeVo42nxMn6pvp6iRhs=", + "dev": true, + "requires": { + "debug": "2.3.3", + "engine.io": "1.8.3", + "has-binary": "0.1.7", + "object-assign": "4.1.0", + "socket.io-adapter": "0.5.0", + "socket.io-client": "1.7.3", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + }, + "object-assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", + "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", + "dev": true + } + } + }, + "socket.io-adapter": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-0.5.0.tgz", + "integrity": "sha1-y21LuL7IHhB4uZZ3+c7QBGBmu4s=", + "dev": true, + "requires": { + "debug": "2.3.3", + "socket.io-parser": "2.3.1" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-client": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-1.7.3.tgz", + "integrity": "sha1-sw6GqhDV7zVGYBwJzeR2Xjgdo3c=", + "dev": true, + "requires": { + "backo2": "1.0.2", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "2.3.3", + "engine.io-client": "1.8.3", + "has-binary": "0.1.7", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseuri": "0.0.5", + "socket.io-parser": "2.3.1", + "to-array": "0.1.4" + }, + "dependencies": { + "debug": { + "version": "2.3.3", + "resolved": "http://registry.npmjs.org/debug/-/debug-2.3.3.tgz", + "integrity": "sha1-QMRT5n5uE8kB3ewxeviYbNqe/4w=", + "dev": true, + "requires": { + "ms": "0.7.2" + } + }, + "ms": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.2.tgz", + "integrity": "sha1-riXPJRKziFodldfwN4aNhDESR2U=", + "dev": true + } + } + }, + "socket.io-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-2.3.1.tgz", + "integrity": "sha1-3VMgJRA85Clpcya+/WQAX8/ltKA=", + "dev": true, + "requires": { + "component-emitter": "1.1.2", + "debug": "2.2.0", + "isarray": "0.0.1", + "json3": "3.3.2" + }, + "dependencies": { + "component-emitter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.1.2.tgz", + "integrity": "sha1-KWWU8nU9qmOZbSrwjRWpURbJrsM=", + "dev": true + }, + "debug": { + "version": "2.2.0", + "resolved": "http://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "dev": true, + "requires": { + "ms": "0.7.1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", + "dev": true + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.1.5.tgz", + "integrity": "sha1-G7fA9yIsQPQq3xT0RCy9Eml3GoM=", + "dev": true, + "requires": { + "debug": "^2.6.6", + "eventsource": "0.1.6", + "faye-websocket": "~0.11.0", + "inherits": "^2.0.1", + "json3": "^3.3.2", + "url-parse": "^1.1.8" + }, + "dependencies": { + "faye-websocket": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", + "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "source-list-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz", + "integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", + "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.1.tgz", + "integrity": "sha512-hxSPZbRZvSDuOvADntOElzJpenIR7wXJkuoUcUtS0erbgt2fgeaoPIYretfKpslMhfFDY4k0MZ2F5CUzhBsSvQ==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.1.0.tgz", + "integrity": "sha512-4K1NsmrlCU1JJgUrtgEeTVyfx8VaYea9J9LvARxhbHtVtohPs/gFGG5yy49beySjlIMhhXZ4QqujIZEfS4l6Cg==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", + "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==", + "dev": true + }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "dev": true, + "requires": { + "debug": "^2.6.8", + "handle-thing": "^1.2.5", + "http-deceiver": "^1.2.7", + "safe-buffer": "^5.0.1", + "select-hose": "^2.0.0", + "spdy-transport": "^2.0.18" + } + }, + "spdy-transport": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", + "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "dev": true, + "requires": { + "debug": "^2.6.8", + "detect-node": "^2.0.3", + "hpack.js": "^2.1.6", + "obuf": "^1.1.1", + "readable-stream": "^2.2.9", + "safe-buffer": "^5.0.1", + "wbuf": "^1.7.2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stats-webpack-plugin": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/stats-webpack-plugin/-/stats-webpack-plugin-0.6.2.tgz", + "integrity": "sha1-LFlJtTHgf4eojm6k3PrFOqjHWis=", + "dev": true, + "requires": { + "lodash": "^4.17.4" + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "optional": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stream-browserify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.1.tgz", + "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "optional": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "style-loader": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.21.0.tgz", + "integrity": "sha512-T+UNsAcl3Yg+BsPKs1vd22Fr8sVT+CJMtzqc6LEw9bbJZb43lm9GoeIfUcDEefBSWC0BhYbcdupV1GtI4DGzxg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^0.4.5" + } + }, + "stylus": { + "version": "0.54.5", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", + "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", + "dev": true, + "requires": { + "css-parse": "1.7.x", + "debug": "*", + "glob": "7.0.x", + "mkdirp": "0.5.x", + "sax": "0.5.x", + "source-map": "0.1.x" + }, + "dependencies": { + "glob": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", + "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "stylus-loader": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-3.0.2.tgz", + "integrity": "sha512-+VomPdZ6a0razP+zinir61yZgpw2NfljeSsdUF5kJuEzlo3khXhY19Fn6l8QQz1GRJGtMCo8nG5C04ePyV7SUA==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "lodash.clonedeep": "^4.5.0", + "when": "~3.6.x" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, + "tapable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.0.tgz", + "integrity": "sha512-IlqtmLVaZA2qab8epUXbVWRn3aB1imbDMJtjB3nu4X0NqPkcY/JH9ZtCBWKHWPxs8Svi9tyo8w2dBoi07qZbBA==", + "dev": true + }, + "tar": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.1.tgz", + "integrity": "sha1-jk0qJWwOIYXGsYrWlK7JaLg8sdE=", + "dev": true, + "optional": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.2", + "inherits": "2" + } + }, + "through": { + "version": "2.3.8", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", + "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "dev": true, + "requires": { + "readable-stream": "^2.1.5", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.0.2.tgz", + "integrity": "sha1-qGLgGOP7HqLsP85dVWBc9X8kc3E=", + "dev": true + }, + "timers-browserify": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "tmp": { + "version": "0.0.31", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.31.tgz", + "integrity": "sha1-jzirlDjhcxXl29izZX6L+yd65Kc=", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "dev": true, + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "tree-kill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", + "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==", + "dev": true + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true, + "optional": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.2" + } + }, + "ts-node": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-5.0.1.tgz", + "integrity": "sha512-XK7QmDcNHVmZkVtkiwNDWiERRHPyU8nBqZB1+iv2UhOG0q3RQ9HsZ2CMqISlFbxjrYFGfG2mX7bW4dAyxBVzUw==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "chalk": "^2.3.0", + "diff": "^3.1.0", + "make-error": "^1.1.1", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map-support": "^0.5.3", + "yn": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "tsickle": { + "version": "0.32.1", + "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.32.1.tgz", + "integrity": "sha512-JW9j+W0SaMSZGejIFZBk0AiPfnhljK3oLx5SaqxrJhjlvzFyPml5zqG1/PuScUj6yTe1muEqwk5CnDK0cOZmKw==", + "dev": true, + "requires": { + "jasmine-diff": "^0.1.3", + "minimist": "^1.2.0", + "mkdirp": "^0.5.1", + "source-map": "^0.6.0", + "source-map-support": "^0.5.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, + "tslint": { + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.9.1.tgz", + "integrity": "sha1-ElX4ej/1frCw4fDmEKi0dIBGya4=", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^3.2.0", + "glob": "^7.1.1", + "js-yaml": "^3.7.0", + "minimatch": "^3.0.4", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.8.0", + "tsutils": "^2.12.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "2.7.2", + "resolved": "http://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", + "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", + "dev": true + }, + "uglify-js": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.9.tgz", + "integrity": "sha512-8CJsbKOtEbnJsTyv6LE6m6ZKniqMiFWmm9sRbopbkGs3gMPPfd3Fh8iIA4Ykv5MgaTbqHr4BaoGLJLZNhsrW1Q==", + "dev": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "uglifyjs-webpack-plugin": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "schema-utils": "^0.4.5", + "serialize-javascript": "^1.4.0", + "source-map": "^0.6.1", + "uglify-es": "^3.3.4", + "webpack-sources": "^1.1.0", + "worker-farm": "^1.5.2" + }, + "dependencies": { + "commander": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-es": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "dev": true, + "requires": { + "commander": "~2.13.0", + "source-map": "~0.6.1" + } + } + } + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", + "dev": true + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", + "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.1.tgz", + "integrity": "sha512-vugEeXjyYFBCUOpX+ZuaunbK3QXMKaQ3zUnRfIpRBlGkY7QizCnzyyn2ASfcxsvyU3ef+CJppVywnl3Kgf13Gg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "url-parse": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.3.tgz", + "integrity": "sha512-rh+KuAW36YKo0vClhQzLLveoj8FwPJNu65xLb7Mrt+eZht0IPT0IXgSv8gcMegZ6NvjJUALf6Mf25POlMwD1Fw==", + "dev": true, + "requires": { + "querystringify": "^2.0.0", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "useragent": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", + "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", + "dev": true, + "requires": { + "lru-cache": "4.1.x", + "tmp": "0.0.x" + } + }, + "util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", + "integrity": "sha1-XX6kW7755Kb/ZflUOOCofDV9WnM=", + "dev": true, + "requires": { + "indexof": "0.0.1" + } + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webassemblyjs": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webassemblyjs/-/webassemblyjs-1.4.3.tgz", + "integrity": "sha512-4lOV1Lv6olz0PJkDGQEp82HempAn147e6BXijWDzz9g7/2nSebVP9GVg62Fz5ZAs55mxq13GA0XLyvY8XkyDjg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/validation": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "@webassemblyjs/wast-parser": "1.4.3", + "long": "^3.2.0" + } + }, + "webdriver-js-extender": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-1.0.0.tgz", + "integrity": "sha1-gcUzqeM9W/tZe05j4s2yW1R3dRU=", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^2.53.35", + "selenium-webdriver": "^2.53.2" + }, + "dependencies": { + "sax": { + "version": "0.6.1", + "resolved": "http://registry.npmjs.org/sax/-/sax-0.6.1.tgz", + "integrity": "sha1-VjsZx8HeiS4Jv8Ty/DDjwn8JUrk=", + "dev": true + }, + "selenium-webdriver": { + "version": "2.53.3", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.53.3.tgz", + "integrity": "sha1-0p/1qVff8aG0ncRXdW5OS/vc4IU=", + "dev": true, + "requires": { + "adm-zip": "0.4.4", + "rimraf": "^2.2.8", + "tmp": "0.0.24", + "ws": "^1.0.1", + "xml2js": "0.4.4" + } + }, + "tmp": { + "version": "0.0.24", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz", + "integrity": "sha1-1qXhmNFKmDXMby18PZ4wJCjIzxI=", + "dev": true + }, + "xml2js": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz", + "integrity": "sha1-MREBAAMAiuGSQOuhdJe1fHKcVV0=", + "dev": true, + "requires": { + "sax": "0.6.x", + "xmlbuilder": ">=1.0.0" + } + } + } + }, + "webpack": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.8.3.tgz", + "integrity": "sha512-/hfAjBISycdK597lxONjKEFX7dSIU1PsYwC3XlXUXoykWBlv9QV5HnO+ql3HvrrgfBJ7WXdnjO9iGPR2aAc5sw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.4.3", + "@webassemblyjs/wasm-edit": "1.4.3", + "@webassemblyjs/wasm-parser": "1.4.3", + "acorn": "^5.0.0", + "acorn-dynamic-import": "^3.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "chrome-trace-event": "^0.1.1", + "enhanced-resolve": "^4.0.0", + "eslint-scope": "^3.7.1", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "micromatch": "^3.1.8", + "mkdirp": "~0.5.0", + "neo-async": "^2.5.0", + "node-libs-browser": "^2.0.0", + "schema-utils": "^0.4.4", + "tapable": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.2.4", + "watchpack": "^1.5.0", + "webpack-sources": "^1.0.1" + } + }, + "webpack-core": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", + "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", + "dev": true, + "requires": { + "source-list-map": "~0.1.7", + "source-map": "~0.4.1" + }, + "dependencies": { + "source-list-map": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", + "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.4.0.tgz", + "integrity": "sha512-Q9Iyc0X9dP9bAsYskAVJ/hmIZZQwf/3Sy4xCAZgL5cUkjZmUZLt4l5HpbST/Pdgjn3u6pE7u5OdGd1apgzRujA==", + "dev": true, + "requires": { + "memory-fs": "~0.4.1", + "mime": "^2.3.1", + "range-parser": "^1.0.3", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "mime": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.3.1.tgz", + "integrity": "sha512-OEUllcVoydBHGN1z84yfQDimn58pZNNNXgZlHXSboxMlFvgI6MXSWpWKpFRra7H1HxpVhHTkrghfRW49k6yjeg==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.1.9.tgz", + "integrity": "sha512-fqPkuNalLuc/hRC2QMkVYJkgNmRvxZQo7ykA2e1XRg/tMJm3qY7ZaD6d89/Fqjxtj9bOrn5wZzLD2n84lJdvWg==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.0.0", + "compression": "^1.5.2", + "connect-history-api-fallback": "^1.3.0", + "debug": "^3.1.0", + "del": "^3.0.0", + "express": "^4.16.2", + "html-entities": "^1.2.0", + "http-proxy-middleware": "~0.18.0", + "import-local": "^2.0.0", + "internal-ip": "^3.0.1", + "ip": "^1.1.5", + "killable": "^1.0.0", + "loglevel": "^1.4.1", + "opn": "^5.1.0", + "portfinder": "^1.0.9", + "schema-utils": "^1.0.0", + "selfsigned": "^1.9.1", + "serve-index": "^1.7.2", + "sockjs": "0.3.19", + "sockjs-client": "1.1.5", + "spdy": "^3.4.1", + "strip-ansi": "^3.0.0", + "supports-color": "^5.1.0", + "webpack-dev-middleware": "3.4.0", + "webpack-log": "^2.0.0", + "yargs": "12.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "debug": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", + "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-2.0.0.tgz", + "integrity": "sha512-Ikpp5scV3MSYxY39ymh45ZLEecsTdv/Xj2CaQfI8RLMuwi7XvjX9H/fhraiSuU+C5w5NTDu4ZU72xNiZnurBPg==", + "dev": true, + "requires": { + "xregexp": "4.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "os-locale": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.0.1.tgz", + "integrity": "sha512-7g5e7dmXPtzcP4bgsZ8ixDVqA7oWYuEz4lOSujeWyliPai4gfVDiFIcwBg3aGCPnmSGfzOKTK3ccPn0CKv3DBw==", + "dev": true, + "requires": { + "execa": "^0.10.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-limit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.0.0.tgz", + "integrity": "sha512-fl5s52lI5ahKCernzzIyAP0QAZbGIovtVHGwpcu1Jr/EpzLVDI2myISHwGqK7m8uQFugVWSrbxH7XnhGtvEc+A==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.0.0.tgz", + "integrity": "sha512-hMp0onDKIajHfIkdRk3P4CdCmErkYAxxDtP3Wx/4nZ3aGlau2VKh3mZpcuFkH27WQkL/3WBCPOktzA9ZOAnMQQ==", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.2.tgz", + "integrity": "sha512-e7SkEx6N6SIZ5c5H22RTZae61qtn3PYUE8JYbBFlK9sYmh3DMQ6E5ygtaG/2BW0JZi4WGgTR2IV5ChqlqrDGVQ==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^2.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^10.1.0" + } + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-merge": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.4.tgz", + "integrity": "sha512-TmSe1HZKeOPey3oy1Ov2iS3guIZjWvMT2BBJDzzT5jScHTjVC3mpjJofgueEzaEd6ibhxRDD6MIblDr8tzh8iQ==", + "dev": true, + "requires": { + "lodash": "^4.17.5" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "webpack-subresource-integrity": { + "version": "1.1.0-rc.6", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz", + "integrity": "sha512-Az7y8xTniNhaA0620AV1KPwWOqawurVVDzQSpPAeR5RwNbL91GoBSJAAo9cfd+GiFHwsS5bbHepBw1e6Hzxy4w==", + "dev": true, + "requires": { + "webpack-core": "^0.6.8" + } + }, + "websocket-driver": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", + "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", + "dev": true, + "requires": { + "http-parser-js": ">=0.4.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", + "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", + "dev": true + }, + "when": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", + "integrity": "sha1-RztRfsFZ4rhQBUl6E5g/CVQS404=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "worker-farm": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.6.0.tgz", + "integrity": "sha512-6w+3tHbM87WnSWnENBUvA2pxJPLhQUg5LKwUQHq3r+XPhIM+Gh2R5ycbwPCyuGbNg+lPgdcnQUhuC02kJCvffQ==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.2.tgz", + "integrity": "sha1-iiRPoFJAHgjJiGz0SoUYnh/UBn8=", + "dev": true, + "requires": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + }, + "wtf-8": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wtf-8/-/wtf-8-1.0.0.tgz", + "integrity": "sha1-OS2LotDxw00e4tYw8V0O+2jhBIo=", + "dev": true + }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + }, + "dependencies": { + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + } + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.3.tgz", + "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=", + "dev": true + }, + "xregexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.0.0.tgz", + "integrity": "sha512-PHyM+sQouu7xspQQwELlGwwd05mXUFqwFYfqPO0cC7x4fxyHnnuetmQr6CjJiafIDoH4MogHb9dOoJzR/Y4rFg==", + "dev": true + }, + "xtend": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", + "dev": true + }, + "xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "requires": { + "cuint": "^0.2.2" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^3.0.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.2", + "which-module": "^1.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true, + "optional": true + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "^3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "optional": true + } + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yn/-/yn-2.0.0.tgz", + "integrity": "sha1-5a2ryKz0CPY4X8dklWhMiOavaJo=", + "dev": true + }, + "zone.js": { + "version": "0.8.26", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.26.tgz", + "integrity": "sha512-W9Nj+UmBJG251wkCacIkETgra4QgBo/vgoEkb4a2uoLzpQG7qF9nzwoLXWU5xj3Fg2mxGvEDh47mg24vXccYjA==" + } + } +} diff --git a/FrontEnd/DashBoardCelso/package.json b/FrontEnd/DashBoardCelso/package.json new file mode 100644 index 000000000..b355cdcd5 --- /dev/null +++ b/FrontEnd/DashBoardCelso/package.json @@ -0,0 +1,58 @@ +{ + "name": "dash-board-celso", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e", + "criar": "ng g i " + }, + "private": true, + "dependencies": { + "@angular/animations": "^6.1.9", + "@angular/common": "^6.0.3", + "@angular/compiler": "^6.0.3", + "@angular/core": "^6.0.3", + "@angular/forms": "^6.0.3", + "@angular/http": "^6.0.3", + "@angular/platform-browser": "^6.0.3", + "@angular/platform-browser-dynamic": "^6.0.3", + "@angular/router": "^6.0.3", + "@types/chart.js": "^2.7.36", + "angular-bootstrap-md": "^6.2.4", + "angular5-csv": "^0.2.10", + "chart.js": "^2.5.0", + "core-js": "^2.5.4", + "font-awesome": "^4.7.0", + "hammerjs": "^2.0.8", + "primeicons": "^1.0.0-beta.10", + "primeng": "^6.1.4", + "quill": "^1.3.6", + "rxjs": "^6.0.0", + "zone.js": "^0.8.26" + }, + "devDependencies": { + "@angular/compiler-cli": "^6.0.3", + "@angular-devkit/build-angular": "~0.6.8", + "typescript": "~2.7.2", + "@angular/cli": "~6.0.8", + "@angular/language-service": "^6.0.3", + "@types/jasmine": "~2.8.6", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~8.9.4", + "codelyzer": "~4.2.1", + "jasmine-core": "~2.99.1", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~1.7.1", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~2.0.0", + "karma-jasmine": "~1.1.1", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.3.0", + "ts-node": "~5.0.1", + "tslint": "~5.9.1" + } +} \ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.html b/FrontEnd/DashBoardCelso/src/Components/Header/header.component.html new file mode 100644 index 000000000..d4bb40e99 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Components/Header/header.component.html @@ -0,0 +1,44 @@ + +Navbar + + + + + + + + + +
+
+ +
+
+
+ + + \ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.scss b/FrontEnd/DashBoardCelso/src/Components/Header/header.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.spec.ts b/FrontEnd/DashBoardCelso/src/Components/Header/header.component.spec.ts new file mode 100644 index 000000000..2d0479d7d --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Components/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 create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.ts b/FrontEnd/DashBoardCelso/src/Components/Header/header.component.ts new file mode 100644 index 000000000..591e148a7 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Components/Header/header.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-header', + templateUrl: './header.component.html', + styleUrls: ['./header.component.scss'] +}) +export class HeaderComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/FrontEnd/DashBoardCelso/src/Models/cursoModel.ts b/FrontEnd/DashBoardCelso/src/Models/cursoModel.ts new file mode 100644 index 000000000..f0128e70a --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Models/cursoModel.ts @@ -0,0 +1,2 @@ +export interface CursoModel { +} diff --git a/FrontEnd/DashBoardCelso/src/Models/userModel.ts b/FrontEnd/DashBoardCelso/src/Models/userModel.ts new file mode 100644 index 000000000..fe8bb0c2d --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Models/userModel.ts @@ -0,0 +1,2 @@ +export interface UserModel { +} diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html new file mode 100644 index 000000000..de1648223 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html @@ -0,0 +1,3 @@ +

+ dash-board works! +

diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.spec.ts b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.spec.ts new file mode 100644 index 000000000..ba1a8b2f0 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DashBoardComponent } from './dash-board.component'; + +describe('DashBoardComponent', () => { + let component: DashBoardComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ DashBoardComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(DashBoardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts new file mode 100644 index 000000000..fda438b10 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-dash-board', + templateUrl: './dash-board.component.html', + styleUrls: ['./dash-board.component.scss'] +}) +export class DashBoardComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/FrontEnd/DashBoardCelso/src/Pages/login/login.component.html b/FrontEnd/DashBoardCelso/src/Pages/login/login.component.html new file mode 100644 index 000000000..c28693e33 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Pages/login/login.component.html @@ -0,0 +1,14 @@ +

+ login works!asasasasasa + sas + a + sa + sasasasaa + s + a + s + asa + a + s + +

\ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/src/Pages/login/login.component.scss b/FrontEnd/DashBoardCelso/src/Pages/login/login.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/FrontEnd/DashBoardCelso/src/Pages/login/login.component.spec.ts b/FrontEnd/DashBoardCelso/src/Pages/login/login.component.spec.ts new file mode 100644 index 000000000..d6d85a846 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Pages/login/login.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LoginComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/FrontEnd/DashBoardCelso/src/Pages/login/login.component.ts b/FrontEnd/DashBoardCelso/src/Pages/login/login.component.ts new file mode 100644 index 000000000..12de138ad --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Pages/login/login.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.scss'] +}) +export class LoginComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/FrontEnd/DashBoardCelso/src/Services/LoginSrv/loginSrv.service.spec.ts b/FrontEnd/DashBoardCelso/src/Services/LoginSrv/loginSrv.service.spec.ts new file mode 100644 index 000000000..c531f7aaf --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Services/LoginSrv/loginSrv.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { LoginSrvService } from './login-srv.service'; + +describe('LoginSrvService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [LoginSrvService] + }); + }); + + it('should be created', inject([LoginSrvService], (service: LoginSrvService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/FrontEnd/DashBoardCelso/src/Services/LoginSrv/loginSrv.service.ts b/FrontEnd/DashBoardCelso/src/Services/LoginSrv/loginSrv.service.ts new file mode 100644 index 000000000..0585c52f0 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Services/LoginSrv/loginSrv.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class LoginSrvService { + + constructor() { } +} diff --git a/FrontEnd/DashBoardCelso/src/Services/New Text Document.txt b/FrontEnd/DashBoardCelso/src/Services/New Text Document.txt new file mode 100644 index 000000000..e69de29bb diff --git a/FrontEnd/DashBoardCelso/src/Services/getDataSrv/getDataSrv.service.spec.ts b/FrontEnd/DashBoardCelso/src/Services/getDataSrv/getDataSrv.service.spec.ts new file mode 100644 index 000000000..542da08da --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Services/getDataSrv/getDataSrv.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { GetDataService } from './get-data.service'; + +describe('GetDataService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [GetDataService] + }); + }); + + it('should be created', inject([GetDataService], (service: GetDataService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/FrontEnd/DashBoardCelso/src/Services/getDataSrv/getDataSrv.service.ts b/FrontEnd/DashBoardCelso/src/Services/getDataSrv/getDataSrv.service.ts new file mode 100644 index 000000000..552f21733 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Services/getDataSrv/getDataSrv.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class GetDataService { + + constructor() { } +} diff --git a/FrontEnd/DashBoardCelso/src/app/app.component.html b/FrontEnd/DashBoardCelso/src/app/app.component.html new file mode 100644 index 000000000..8bdf264f9 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/app/app.component.html @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/src/app/app.component.scss b/FrontEnd/DashBoardCelso/src/app/app.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/FrontEnd/DashBoardCelso/src/app/app.component.spec.ts b/FrontEnd/DashBoardCelso/src/app/app.component.spec.ts new file mode 100644 index 000000000..45b7edb31 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/app/app.component.spec.ts @@ -0,0 +1,27 @@ +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 DashBoardCelso!'); + })); +}); diff --git a/FrontEnd/DashBoardCelso/src/app/app.component.ts b/FrontEnd/DashBoardCelso/src/app/app.component.ts new file mode 100644 index 000000000..7d943bc90 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/app/app.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +export class AppComponent { + title = 'app'; +} diff --git a/FrontEnd/DashBoardCelso/src/app/app.module.ts b/FrontEnd/DashBoardCelso/src/app/app.module.ts new file mode 100644 index 000000000..41cb73f51 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/app/app.module.ts @@ -0,0 +1,24 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; + +import { AppComponent } from './app.component'; +import { LoginComponent } from '../Pages/login/login.component'; +import { DashBoardComponent } from '../Pages/DashBoard/dash-board.component'; +import { RoutingModule } from './app.routing'; +import { HeaderComponent } from '../Components/header/header.component'; + +@NgModule({ + declarations: [ + AppComponent, + DashBoardComponent, + LoginComponent, + HeaderComponent + ], + imports: [ + BrowserModule, + RoutingModule + ], + providers: [], + bootstrap: [AppComponent] +}) +export class AppModule { } diff --git a/FrontEnd/DashBoardCelso/src/app/app.routing.ts b/FrontEnd/DashBoardCelso/src/app/app.routing.ts new file mode 100644 index 000000000..a4ffc17bd --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/app/app.routing.ts @@ -0,0 +1,26 @@ + +import { NgModule } from '@angular/core'; +import { RouterModule, Router, Routes, CanActivate } from '@angular/router'; +import { LoginComponent } from '../Pages/login/login.component'; +import { DashBoardComponent } from '../Pages/DashBoard/dash-board.component'; + + +const AppRoutes: Routes = [ + { path: 'Login', component: LoginComponent }, + { path: 'Home', component: DashBoardComponent }, + { path: '', redirectTo: 'Home', pathMatch: 'full' }, +]; + +@NgModule({ + imports: [ + RouterModule.forRoot( + AppRoutes, { enableTracing: false } + ) + ], + exports: [ + RouterModule + ] +}) + + +export class RoutingModule { } diff --git a/FrontEnd/DashBoardCelso/src/assets/.gitkeep b/FrontEnd/DashBoardCelso/src/assets/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/FrontEnd/DashBoardCelso/src/browserslist b/FrontEnd/DashBoardCelso/src/browserslist new file mode 100644 index 000000000..8e09ab492 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/browserslist @@ -0,0 +1,9 @@ +# This file is currently used by autoprefixer to adjust CSS to support the below specified browsers +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries +# For IE 9-11 support, please uncomment the last line of the file and adjust as needed +> 0.5% +last 2 versions +Firefox ESR +not dead +# IE 9-11 \ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/src/environments/environment.prod.ts b/FrontEnd/DashBoardCelso/src/environments/environment.prod.ts new file mode 100644 index 000000000..3612073bc --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/FrontEnd/DashBoardCelso/src/environments/environment.ts b/FrontEnd/DashBoardCelso/src/environments/environment.ts new file mode 100644 index 000000000..012182efa --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/environments/environment.ts @@ -0,0 +1,15 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: false +}; + +/* + * In development mode, to ignore zone related error stack frames such as + * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can + * import the following file, but please comment it out in production mode + * because it will have performance impact when throw error + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/FrontEnd/DashBoardCelso/src/favicon.ico b/FrontEnd/DashBoardCelso/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8081c7ceaf2be08bf59010158c586170d9d2d517 GIT binary patch literal 5430 zcmc(je{54#6vvCoAI3i*G5%$U7!sA3wtMZ$fH6V9C`=eXGJb@R1%(I_{vnZtpD{6n z5Pl{DmxzBDbrB>}`90e12m8T*36WoeDLA&SD_hw{H^wM!cl_RWcVA!I+x87ee975; z@4kD^=bYPn&pmG@(+JZ`rqQEKxW<}RzhW}I!|ulN=fmjVi@x{p$cC`)5$a!)X&U+blKNvN5tg=uLvuLnuqRM;Yc*swiexsoh#XPNu{9F#c`G zQLe{yWA(Y6(;>y|-efAy11k<09(@Oo1B2@0`PtZSkqK&${ zgEY}`W@t{%?9u5rF?}Y7OL{338l*JY#P!%MVQY@oqnItpZ}?s z!r?*kwuR{A@jg2Chlf0^{q*>8n5Ir~YWf*wmsh7B5&EpHfd5@xVaj&gqsdui^spyL zB|kUoblGoO7G(MuKTfa9?pGH0@QP^b#!lM1yHWLh*2iq#`C1TdrnO-d#?Oh@XV2HK zKA{`eo{--^K&MW66Lgsktfvn#cCAc*(}qsfhrvOjMGLE?`dHVipu1J3Kgr%g?cNa8 z)pkmC8DGH~fG+dlrp(5^-QBeEvkOvv#q7MBVLtm2oD^$lJZx--_=K&Ttd=-krx(Bb zcEoKJda@S!%%@`P-##$>*u%T*mh+QjV@)Qa=Mk1?#zLk+M4tIt%}wagT{5J%!tXAE;r{@=bb%nNVxvI+C+$t?!VJ@0d@HIyMJTI{vEw0Ul ze(ha!e&qANbTL1ZneNl45t=#Ot??C0MHjjgY8%*mGisN|S6%g3;Hlx#fMNcL<87MW zZ>6moo1YD?P!fJ#Jb(4)_cc50X5n0KoDYfdPoL^iV`k&o{LPyaoqMqk92wVM#_O0l z09$(A-D+gVIlq4TA&{1T@BsUH`Bm=r#l$Z51J-U&F32+hfUP-iLo=jg7Xmy+WLq6_tWv&`wDlz#`&)Jp~iQf zZP)tu>}pIIJKuw+$&t}GQuqMd%Z>0?t%&BM&Wo^4P^Y z)c6h^f2R>X8*}q|bblAF?@;%?2>$y+cMQbN{X$)^R>vtNq_5AB|0N5U*d^T?X9{xQnJYeU{ zoZL#obI;~Pp95f1`%X3D$Mh*4^?O?IT~7HqlWguezmg?Ybq|7>qQ(@pPHbE9V?f|( z+0xo!#m@Np9PljsyxBY-UA*{U*la#8Wz2sO|48_-5t8%_!n?S$zlGe+NA%?vmxjS- zHE5O3ZarU=X}$7>;Okp(UWXJxI%G_J-@IH;%5#Rt$(WUX?6*Ux!IRd$dLP6+SmPn= z8zjm4jGjN772R{FGkXwcNv8GBcZI#@Y2m{RNF_w8(Z%^A*!bS*!}s6sh*NnURytky humW;*g7R+&|Ledvc- + + + + DashBoardCelso + + + + + + + + + diff --git a/FrontEnd/DashBoardCelso/src/karma.conf.js b/FrontEnd/DashBoardCelso/src/karma.conf.js new file mode 100644 index 000000000..b6e00421c --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/karma.conf.js @@ -0,0 +1,31 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, '../coverage'), + reports: ['html', 'lcovonly'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; \ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/src/main.ts b/FrontEnd/DashBoardCelso/src/main.ts new file mode 100644 index 000000000..91ec6da5f --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.log(err)); diff --git a/FrontEnd/DashBoardCelso/src/polyfills.ts b/FrontEnd/DashBoardCelso/src/polyfills.ts new file mode 100644 index 000000000..d310405a6 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/polyfills.ts @@ -0,0 +1,80 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/weak-map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following for the Reflect API. */ +// import 'core-js/es6/reflect'; + + +/** Evergreen browsers require these. **/ +// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. +import 'core-js/es7/reflect'; + + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + */ + + // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + + /* + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + */ +// (window as any).__Zone_enable_cross_context_check = true; + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/FrontEnd/DashBoardCelso/src/primeFlex.scss b/FrontEnd/DashBoardCelso/src/primeFlex.scss new file mode 100644 index 000000000..42cd4aa9b --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/primeFlex.scss @@ -0,0 +1,704 @@ +$sm:576px; +$md:768px; +$lg:992px; +$xl:1200px; +$gutter:.5em; +.p-grid { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-right: -1 * $gutter; + margin-left: -1 * $gutter; + margin-top: -1 * $gutter; +} + +.p-nogutter { + margin-right: 0; + margin-left: 0; + margin-top: 0; +} + +.p-nogutter>.p-col, +.p-nogutter>[class*="p-col-"] { + padding: 0; +} + +.p-dir-rev { + -webkit-box-orient: horizontal; + -webkit-box-direction: reverse; + -ms-flex-direction: row-reverse; + flex-direction: row-reverse; +} + +.p-dir-col { + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} + +.p-dir-col-rev { + -webkit-box-orient: vertical; + -webkit-box-direction: reverse; + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; +} + +.p-justify-start { + -webkit-box-pack: start; + -ms-flex-pack: start; + justify-content: flex-start; +} + +.p-justify-end { + -webkit-box-pack: end; + -ms-flex-pack: end; + justify-content: flex-end; +} + +.p-justify-center { + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; +} + +.p-justify-between { + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; +} + +.p-justify-around { + -ms-flex-pack: distribute; + justify-content: space-around; +} + +.p-justify-even { + -webkit-box-pack: space-evenly; + -ms-flex-pack: space-evenly; + justify-content: space-evenly; +} + +.p-align-start { + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; +} + +.p-align-end { + -webkit-box-align: end; + -ms-flex-align: end; + align-items: flex-end; +} + +.p-align-center { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; +} + +.p-align-baseline { + -webkit-box-align: baseline; + -ms-flex-align: baseline; + align-items: baseline; +} + +.p-align-stretch { + -webkit-box-align: stretch; + -ms-flex-align: stretch; + align-items: stretch; +} + +.p-col { + -webkit-box-flex: 1; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-preferred-size: 0; + flex-basis: 0; + padding: $gutter; +} + +.p-col-fixed { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: $gutter; +} + +.p-col-align-start { + -ms-flex-item-align: start; + align-self: flex-start; +} + +.p-col-align-end { + -ms-flex-item-align: end; + align-self: flex-end; +} + +.p-col-align-center { + -ms-flex-item-align: center; + -ms-grid-row-align: center; + align-self: center; +} + +.p-col-align-baseline { + -ms-flex-item-align: baseline; + align-self: baseline; +} + +.p-col-align-stretch { + -ms-flex-item-align: stretch; + -ms-grid-row-align: stretch; + align-self: stretch; +} + +.p-col-1, +.p-col-2, +.p-col-3, +.p-col-4, +.p-col-5, +.p-col-6, +.p-col-7, +.p-col-8, +.p-col-9, +.p-col-10, +.p-col-11, +.p-col-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + padding: $gutter; +} + +.p-col-1 { + width: 8.3333%; +} + +.p-col-2 { + width: 16.6667%; +} + +.p-col-3 { + width: 25%; +} + +.p-col-4 { + width: 33.3333%; +} + +.p-col-5 { + width: 41.6667%; +} + +.p-col-6 { + width: 50%; +} + +.p-col-7 { + width: 58.3333%; +} + +.p-col-8 { + width: 66.6667%; +} + +.p-col-9 { + width: 75%; +} + +.p-col-10 { + width: 83.3333%; +} + +.p-col-11 { + width: 91.6667%; +} + +.p-col-12 { + width: 100%; +} + +.p-offset-12 { + margin-left: 100%; +} + +.p-offset-11 { + margin-left: 91.66666667%; +} + +.p-offset-10 { + margin-left: 83.33333333%; +} + +.p-offset-9 { + margin-left: 75%; +} + +.p-offset-8 { + margin-left: 66.66666667%; +} + +.p-offset-7 { + margin-left: 58.33333333%; +} + +.p-offset-6 { + margin-left: 50%; +} + +.p-offset-5 { + margin-left: 41.66666667%; +} + +.p-offset-4 { + margin-left: 33.33333333%; +} + +.p-offset-3 { + margin-left: 25%; +} + +.p-offset-2 { + margin-left: 16.66666667%; +} + +.p-offset-1 { + margin-left: 8.33333333%; +} + +.p-offset-0 { + margin-left: 0%; +} + +.p-sm-1, +.p-sm-2, +.p-sm-3, +.p-sm-4, +.p-sm-5, +.p-sm-6, +.p-sm-7, +.p-sm-8, +.p-sm-9, +.p-sm-10, +.p-sm-11, +.p-sm-12, +.p-md-1, +.p-md-2, +.p-md-3, +.p-md-4, +.p-md-5, +.p-md-6, +.p-md-7, +.p-md-8, +.p-md-9, +.p-md-10, +.p-md-11, +.p-md-12, +.p-lg-1, +.p-lg-2, +.p-lg-3, +.p-lg-4, +.p-lg-5, +.p-lg-6, +.p-lg-7, +.p-lg-8, +.p-lg-9, +.p-lg-10, +.p-lg-11, +.p-lg-12, +.p-xl-1, +.p-xl-2, +.p-xl-3, +.p-xl-4, +.p-xl-5, +.p-xl-6, +.p-xl-7, +.p-xl-8, +.p-xl-9, +.p-xl-10, +.p-xl-11, +.p-xl-12 { + padding: $gutter; +} + +.p-col-nogutter { + padding: 0; +} + +@media screen and (min-width: $sm) { + .p-sm-1, + .p-sm-2, + .p-sm-3, + .p-sm-4, + .p-sm-5, + .p-sm-6, + .p-sm-7, + .p-sm-8, + .p-sm-9, + .p-sm-10, + .p-sm-11, + .p-sm-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + } + .p-sm-1 { + width: 8.3333%; + } + .p-sm-2 { + width: 16.6667%; + } + .p-sm-3 { + width: 25%; + } + .p-sm-4 { + width: 33.3333%; + } + .p-sm-5 { + width: 41.6667%; + } + .p-sm-6 { + width: 50%; + } + .p-sm-7 { + width: 58.3333%; + } + .p-sm-8 { + width: 66.6667%; + } + .p-sm-9 { + width: 75%; + } + .p-sm-10 { + width: 83.3333%; + } + .p-sm-11 { + width: 91.6667%; + } + .p-sm-12 { + width: 100%; + } + .p-sm-offset-12 { + margin-left: 100%; + } + .p-sm-offset-11 { + margin-left: 91.66666667%; + } + .p-sm-offset-10 { + margin-left: 83.33333333%; + } + .p-sm-offset-9 { + margin-left: 75%; + } + .p-sm-offset-8 { + margin-left: 66.66666667%; + } + .p-sm-offset-7 { + margin-left: 58.33333333%; + } + .p-sm-offset-6 { + margin-left: 50%; + } + .p-sm-offset-5 { + margin-left: 41.66666667%; + } + .p-sm-offset-4 { + margin-left: 33.33333333%; + } + .p-sm-offset-3 { + margin-left: 25%; + } + .p-sm-offset-2 { + margin-left: 16.66666667%; + } + .p-sm-offset-1 { + margin-left: 8.33333333%; + } + .p-sm-offset-0 { + margin-left: 0%; + } +} + +@media screen and (min-width: $md) { + .p-md-1, + .p-md-2, + .p-md-3, + .p-md-4, + .p-md-5, + .p-md-6, + .p-md-7, + .p-md-8, + .p-md-9, + .p-md-10, + .p-md-11, + .p-md-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + } + .p-md-1 { + width: 8.3333%; + } + .p-md-2 { + width: 16.6667%; + } + .p-md-3 { + width: 25%; + } + .p-md-4 { + width: 33.3333%; + } + .p-md-5 { + width: 41.6667%; + } + .p-md-6 { + width: 50%; + } + .p-md-7 { + width: 58.3333%; + } + .p-md-8 { + width: 66.6667%; + } + .p-md-9 { + width: 75%; + } + .p-md-10 { + width: 83.3333%; + } + .p-md-11 { + width: 91.6667%; + } + .p-md-12 { + width: 100%; + } + .p-md-offset-12 { + margin-left: 100%; + } + .p-md-offset-11 { + margin-left: 91.66666667%; + } + .p-md-offset-10 { + margin-left: 83.33333333%; + } + .p-md-offset-9 { + margin-left: 75%; + } + .p-md-offset-8 { + margin-left: 66.66666667%; + } + .p-md-offset-7 { + margin-left: 58.33333333%; + } + .p-md-offset-6 { + margin-left: 50%; + } + .p-md-offset-5 { + margin-left: 41.66666667%; + } + .p-md-offset-4 { + margin-left: 33.33333333%; + } + .p-md-offset-3 { + margin-left: 25%; + } + .p-md-offset-2 { + margin-left: 16.66666667%; + } + .p-md-offset-1 { + margin-left: 8.33333333%; + } + .p-md-offset-0 { + margin-left: 0%; + } +} + +@media screen and (min-width: $lg) { + .p-lg-1, + .p-lg-2, + .p-lg-3, + .p-lg-4, + .p-lg-5, + .p-lg-6, + .p-lg-7, + .p-lg-8, + .p-lg-9, + .p-lg-10, + .p-lg-11, + .p-lg-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + } + .p-lg-1 { + width: 8.3333%; + } + .p-lg-2 { + width: 16.6667%; + } + .p-lg-3 { + width: 25%; + } + .p-lg-4 { + width: 33.3333%; + } + .p-lg-5 { + width: 41.6667%; + } + .p-lg-6 { + width: 50%; + } + .p-lg-7 { + width: 58.3333%; + } + .p-lg-8 { + width: 66.6667%; + } + .p-lg-9 { + width: 75%; + } + .p-lg-10 { + width: 83.3333%; + } + .p-lg-11 { + width: 91.6667%; + } + .p-lg-12 { + width: 100%; + } + .p-lg-offset-12 { + margin-left: 100%; + } + .p-lg-offset-11 { + margin-left: 91.66666667%; + } + .p-lg-offset-10 { + margin-left: 83.33333333%; + } + .p-lg-offset-9 { + margin-left: 75%; + } + .p-lg-offset-8 { + margin-left: 66.66666667%; + } + .p-lg-offset-7 { + margin-left: 58.33333333%; + } + .p-lg-offset-6 { + margin-left: 50%; + } + .p-lg-offset-5 { + margin-left: 41.66666667%; + } + .p-lg-offset-4 { + margin-left: 33.33333333%; + } + .p-lg-offset-3 { + margin-left: 25%; + } + .p-lg-offset-2 { + margin-left: 16.66666667%; + } + .p-lg-offset-1 { + margin-left: 8.33333333%; + } + .p-lg-offset-0 { + margin-left: 0%; + } +} + +@media screen and (min-width: $xl) { + .p-xl-1, + .p-xl-2, + .p-xl-3, + .p-xl-4, + .p-xl-5, + .p-xl-6, + .p-xl-7, + .p-xl-8, + .p-xl-9, + .p-xl-10, + .p-xl-11, + .p-xl-12 { + -webkit-box-flex: 0; + -ms-flex: 0 0 auto; + flex: 0 0 auto; + } + .p-xl-1 { + width: 8.3333%; + } + .p-xl-2 { + width: 16.6667%; + } + .p-xl-3 { + width: 25%; + } + .p-xl-4 { + width: 33.3333%; + } + .p-xl-5 { + width: 41.6667%; + } + .p-xl-6 { + width: 50%; + } + .p-xl-7 { + width: 58.3333%; + } + .p-xl-8 { + width: 66.6667%; + } + .p-xl-9 { + width: 75%; + } + .p-xl-10 { + width: 83.3333%; + } + .p-xl-11 { + width: 91.6667%; + } + .p-xl-12 { + width: 100%; + } + .p-xl-offset-12 { + margin-left: 100%; + } + .p-xl-offset-11 { + margin-left: 91.66666667%; + } + .p-xl-offset-10 { + margin-left: 83.33333333%; + } + .p-xl-offset-9 { + margin-left: 75%; + } + .p-xl-offset-8 { + margin-left: 66.66666667%; + } + .p-xl-offset-7 { + margin-left: 58.33333333%; + } + .p-xl-offset-6 { + margin-left: 50%; + } + .p-xl-offset-5 { + margin-left: 41.66666667%; + } + .p-xl-offset-4 { + margin-left: 33.33333333%; + } + .p-xl-offset-3 { + margin-left: 25%; + } + .p-xl-offset-2 { + margin-left: 16.66666667%; + } + .p-xl-offset-1 { + margin-left: 8.33333333%; + } + .p-xl-offset-0 { + margin-left: 0%; + } +} \ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/src/styles.scss b/FrontEnd/DashBoardCelso/src/styles.scss new file mode 100644 index 000000000..90d4ee007 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/styles.scss @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/FrontEnd/DashBoardCelso/src/test.ts b/FrontEnd/DashBoardCelso/src/test.ts new file mode 100644 index 000000000..16317897b --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/test.ts @@ -0,0 +1,20 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: any; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/FrontEnd/DashBoardCelso/src/tsconfig.app.json b/FrontEnd/DashBoardCelso/src/tsconfig.app.json new file mode 100644 index 000000000..722c370d5 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/tsconfig.app.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "module": "es2015", + "types": [] + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/FrontEnd/DashBoardCelso/src/tsconfig.spec.json b/FrontEnd/DashBoardCelso/src/tsconfig.spec.json new file mode 100644 index 000000000..8f7cedeca --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/tsconfig.spec.json @@ -0,0 +1,19 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "module": "commonjs", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts", + "polyfills.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/FrontEnd/DashBoardCelso/src/tslint.json b/FrontEnd/DashBoardCelso/src/tslint.json new file mode 100644 index 000000000..52e2c1a5a --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ] + } +} diff --git a/FrontEnd/DashBoardCelso/tsconfig.json b/FrontEnd/DashBoardCelso/tsconfig.json new file mode 100644 index 000000000..ef44e2862 --- /dev/null +++ b/FrontEnd/DashBoardCelso/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es5", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2017", + "dom" + ] + } +} diff --git a/FrontEnd/DashBoardCelso/tslint.json b/FrontEnd/DashBoardCelso/tslint.json new file mode 100644 index 000000000..3ea984c77 --- /dev/null +++ b/FrontEnd/DashBoardCelso/tslint.json @@ -0,0 +1,130 @@ +{ + "rulesDirectory": [ + "node_modules/codelyzer" + ], + "rules": { + "arrow-return-shorthand": true, + "callable-types": true, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "deprecation": { + "severity": "warn" + }, + "eofline": true, + "forin": true, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "import-spacing": true, + "indent": [ + true, + "spaces" + ], + "interface-over-type-literal": true, + "label-position": true, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-debugger": true, + "no-duplicate-super": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-misused-new": true, + "no-non-null-assertion": true, + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unnecessary-initializer": true, + "no-unused-expression": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "prefer-const": true, + "quotemark": [ + true, + "single" + ], + "radix": true, + "semicolon": [ + true, + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "unified-signatures": true, + "variable-name": false, + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ], + "no-output-on-prefix": true, + "use-input-property-decorator": true, + "use-output-property-decorator": true, + "use-host-property-decorator": true, + "no-input-rename": true, + "no-output-rename": true, + "use-life-cycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true + } +} From 5c976808722baf1c234b6efe86f5f32b28f65a79 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 2 Oct 2018 02:25:03 -0300 Subject: [PATCH 02/26] DashBoard em 27% --- .../Components/Header/header.component.html | 98 +++++++++++-------- .../Components/Header/header.component.scss | 16 +++ .../src/Components/Header/header.component.ts | 2 +- .../src/Modules/primeNg.module.ts | 76 ++++++++++++++ .../Pages/DashBoard/dash-board.component.html | 78 ++++++++++++++- .../Pages/DashBoard/dash-board.component.scss | 18 ++++ .../Pages/DashBoard/dash-board.component.ts | 4 +- .../DashBoardCelso/src/app/app.component.html | 1 + FrontEnd/DashBoardCelso/src/app/app.module.ts | 12 ++- .../DashBoardCelso/src/assets/mockUpData.json | 52 ++++++++++ 10 files changed, 308 insertions(+), 49 deletions(-) create mode 100644 FrontEnd/DashBoardCelso/src/Modules/primeNg.module.ts create mode 100644 FrontEnd/DashBoardCelso/src/assets/mockUpData.json diff --git a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.html b/FrontEnd/DashBoardCelso/src/Components/Header/header.component.html index d4bb40e99..11c81827f 100644 --- a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.html +++ b/FrontEnd/DashBoardCelso/src/Components/Header/header.component.html @@ -1,44 +1,58 @@ - -Navbar - - - - - - - - - -
-
-
-
-
- - - \ No newline at end of file + + \ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.scss b/FrontEnd/DashBoardCelso/src/Components/Header/header.component.scss index e69de29bb..5be802656 100644 --- a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.scss +++ b/FrontEnd/DashBoardCelso/src/Components/Header/header.component.scss @@ -0,0 +1,16 @@ +::ng-deep .container { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.headerFlex { + display: flex; + align-items: center; + h3 { + padding-left: 2vw; + } + mdb-icon { + padding-left: 1vw; + color: white; + } +} \ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.ts b/FrontEnd/DashBoardCelso/src/Components/Header/header.component.ts index 591e148a7..942a3b6de 100644 --- a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.ts +++ b/FrontEnd/DashBoardCelso/src/Components/Header/header.component.ts @@ -6,7 +6,7 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./header.component.scss'] }) export class HeaderComponent implements OnInit { - + visibleSidebar1: boolean; constructor() { } ngOnInit() { diff --git a/FrontEnd/DashBoardCelso/src/Modules/primeNg.module.ts b/FrontEnd/DashBoardCelso/src/Modules/primeNg.module.ts new file mode 100644 index 000000000..aa8561c78 --- /dev/null +++ b/FrontEnd/DashBoardCelso/src/Modules/primeNg.module.ts @@ -0,0 +1,76 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { AccordionModule } from 'primeng/accordion'; +import { PanelModule } from 'primeng/panel'; +import { ButtonModule } from 'primeng/button'; +import { SplitButtonModule } from 'primeng/splitbutton'; +import { CardModule } from 'primeng/card'; +import { ToolbarModule } from 'primeng/toolbar'; +import { ChartModule } from 'primeng/chart'; +import { DataGridModule } from 'primeng/datagrid'; +import { SlideMenuModule } from 'primeng/slidemenu'; +import { PanelMenuModule } from 'primeng/panelmenu'; +import { MenuModule } from 'primeng/menu'; +import { TreeModule } from 'primeng/tree'; +import { FieldsetModule } from 'primeng/fieldset'; +import { SidebarModule } from 'primeng/sidebar'; +import { ScrollPanelModule } from 'primeng/scrollpanel'; +import { DialogModule } from 'primeng/dialog'; +import { ListboxModule } from 'primeng/listbox'; +import { StepsModule } from 'primeng/steps'; +import { InputTextModule } from 'primeng/inputtext'; +import {InputTextareaModule} from 'primeng/inputtextarea'; +@NgModule({ + imports: [ + AccordionModule, + PanelModule, + ButtonModule, + CardModule, + ToolbarModule, + ChartModule, + DataGridModule, + SplitButtonModule, + SlideMenuModule, + PanelMenuModule, + MenuModule, + TreeModule, + FieldsetModule, + SidebarModule, + ScrollPanelModule, + DialogModule, + ListboxModule, + StepsModule, + InputTextModule, + InputTextareaModule, + ], + declarations: [ + + ], + providers: [ + + ], + exports: [ + AccordionModule, + PanelModule, + ButtonModule, + CardModule, + ToolbarModule, + ChartModule, + DataGridModule, + SplitButtonModule, + SlideMenuModule, + PanelMenuModule, + MenuModule, + TreeModule, + FieldsetModule, + SidebarModule, + ScrollPanelModule, + DialogModule, + ListboxModule, + StepsModule, + InputTextModule, + InputTextareaModule, + + ] +}) +export class PrimeNgModule { } diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html index de1648223..c198f58ec 100644 --- a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html +++ b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html @@ -1,3 +1,75 @@ -

- dash-board works! -

+ + +
+
+
+
+ + +

Card Title

+ + +
+ + +
+
+
+ + +

Card Title

+
+ + +
+
+ +
+
+
+
+ + +

Card Title

+
+ + +
+
+
+ + +

Card Title

+
+ + +
+
+ +
+
+
\ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss index e69de29bb..af4ec2ce9 100644 --- a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss +++ b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss @@ -0,0 +1,18 @@ +.dashboardWrap { + margin-top: 2%; + height: calc(100vh - 50px); + /* margin: auto; */ + /* display: flex; */ + align-items: center; + justify-content: center; + .p-grid { + width: 100%; + } +} + +.titleCard { + display: flex; + justify-content: space-between; + padding-left: 2vh; + padding-right: 2vh; +} \ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts index fda438b10..d376e9188 100644 --- a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts +++ b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit } from '@angular/core'; - +import { HttpClient } from '@angular/common/http'; @Component({ selector: 'app-dash-board', templateUrl: './dash-board.component.html', @@ -7,7 +7,7 @@ import { Component, OnInit } from '@angular/core'; }) export class DashBoardComponent implements OnInit { - constructor() { } + constructor(public http: HttpClient) { } ngOnInit() { } diff --git a/FrontEnd/DashBoardCelso/src/app/app.component.html b/FrontEnd/DashBoardCelso/src/app/app.component.html index 8bdf264f9..683a5a7c2 100644 --- a/FrontEnd/DashBoardCelso/src/app/app.component.html +++ b/FrontEnd/DashBoardCelso/src/app/app.component.html @@ -1,3 +1,4 @@ + -
-
- +
+ -

Card Title

+

{{item.materia}}

+
Professor(a) {{item.professor}}
+
+

Sala {{item.sala}}

+

de {{item.horaInicial}} as {{item.horaFinal}}

+
-
- - -

Card Title

-
- - -
-
-
-
-
-
- - -

Card Title

-
- - -
+
+
+ + diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss index af4ec2ce9..8de88f9b9 100644 --- a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss +++ b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss @@ -14,5 +14,12 @@ display: flex; justify-content: space-between; padding-left: 2vh; - padding-right: 2vh; -} \ No newline at end of file + padding-right: 2vw; +} + +.p-grid{ + + margin-right: 0; + margin-left: 0; + +} diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts index d376e9188..73330dfa1 100644 --- a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts +++ b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts @@ -1,15 +1,27 @@ +import { CursoModel } from './../../Models/cursoModel'; import { Component, OnInit } from '@angular/core'; import { HttpClient } from '@angular/common/http'; + @Component({ selector: 'app-dash-board', templateUrl: './dash-board.component.html', styleUrls: ['./dash-board.component.scss'] }) export class DashBoardComponent implements OnInit { - - constructor(public http: HttpClient) { } + Dados: CursoModel; + constructor(public http: HttpClient) { + this.getData(); + } ngOnInit() { } + /* /Users/ons/Documents/teste117/DFStack/FrontEnd/DashBoardCelso/src/assets/mockUpData.json */ + + getData() { + this.http.get('./assets/mockUpData.json').subscribe((res: CursoModel) => { + console.log('hey!', res); + this.Dados = res; + }); + } } diff --git a/FrontEnd/DashBoardCelso/src/app/app.module.ts b/FrontEnd/DashBoardCelso/src/app/app.module.ts index d4af4d629..7b2b50500 100644 --- a/FrontEnd/DashBoardCelso/src/app/app.module.ts +++ b/FrontEnd/DashBoardCelso/src/app/app.module.ts @@ -1,5 +1,7 @@ import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; + import { HttpClientModule } from '@angular/common/http'; import { AppComponent } from './app.component'; @@ -24,6 +26,7 @@ import { PrimeNgModule } from '../Modules/primeNg.module'; imports: [ BrowserModule, RoutingModule, + BrowserAnimationsModule, HttpClientModule, PrimeNgModule, MDBBootstrapModule.forRoot() diff --git a/FrontEnd/DashBoardCelso/src/assets/mockUpData.json b/FrontEnd/DashBoardCelso/src/assets/mockUpData.json index 340e46ad5..422bfb514 100644 --- a/FrontEnd/DashBoardCelso/src/assets/mockUpData.json +++ b/FrontEnd/DashBoardCelso/src/assets/mockUpData.json @@ -1,52 +1,72 @@ [ { "sala": 371, - "nome": "Morlee Elt", - "materia": "Portugues" - }, + "professor": "Morlee Elt", + "materia": "Portugues", + "horaInicial": "09:00h", + "horaFinal": "12:00h" + }, { "sala": 107, - "nome": "Benedetto Backler", - "materia": "Portugues" - }, + "professor": "Benedetto Backler", + "materia": "Portugues", + "horaInicial": "09:00h", + "horaFinal": "14:00h" + }, { "sala": 386, - "nome": "Miltie Jiru", - "materia": "Matematica" - }, + "professor": "Miltie Jiru", + "materia": "Matematica", + "horaInicial": "10:00h", + "horaFinal": "12:00h" + }, { "sala": 200, - "nome": "Lara Dod", - "materia": "Geografia" - }, + "professor": "Lara Dod", + "materia": "Geografia", + "horaInicial": "13:00h", + "horaFinal": "16:00h" + }, { "sala": 279, - "nome": "Jordain Sivier", - "materia": "Historia" - }, + "professor": "Jordain Sivier", + "materia": "Historia", + "horaInicial": "09:00h", + "horaFinal": "17:00h" + }, { "sala": 228, - "nome": "Borden Yorke", - "materia": "Artes" - }, + "professor": "Borden Yorke", + "materia": "Artes", + "horaInicial": "09:00h", + "horaFinal": "16:00h" + }, { "sala": 126, - "nome": "Lincoln Spyer", - "materia": "Sociologia" - }, + "professor": "Lincoln Spyer", + "materia": "Sociologia", + "horaInicial": "13:00h", + "horaFinal": "16:00h" + }, { "sala": 198, - "nome": "Madeleine Beckinsale", - "materia": "Filosofia" - }, + "professor": "Madeleine Beckinsale", + "materia": "Filosofia", + "horaInicial": "16:00h", + "horaFinal": "20:10h" + }, { "sala": 343, - "nome": "Sauveur Shortland", - "materia": "Matematica" - }, + "professor": "Sauveur Shortland", + "materia": "Matematica", + "horaInicial": "06:00h", + "horaFinal": "10:00h" + }, { "sala": 271, - "nome": "Winnie Bould", - "materia": "Portugues" - } -] \ No newline at end of file + "professor": "Winnie Bould", + "materia": "Portugues", + "horaInicial": "19:00h", + "horaFinal": "22:00h" + } +] From d593b7d4f0a95cc9ec66396d8fe2b8dcf1b95dbf Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 3 Oct 2018 10:01:01 -0300 Subject: [PATCH 04/26] criando campo input nos modals --- .../Pages/DashBoard/dash-board.component.html | 40 +++++++++++++++---- .../Pages/DashBoard/dash-board.component.scss | 4 +- .../Pages/DashBoard/dash-board.component.ts | 14 +++++-- 3 files changed, 46 insertions(+), 12 deletions(-) diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html index 16acebe96..ce5f72724 100644 --- a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html +++ b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html @@ -2,7 +2,7 @@
- +

{{item.materia}}

@@ -20,29 +20,55 @@
Professor(a) {{item.professor}}
+ - +
\ No newline at end of file diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss index 8de88f9b9..037b386ab 100644 --- a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss +++ b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss @@ -13,8 +13,8 @@ .titleCard { display: flex; justify-content: space-between; - padding-left: 2vh; - padding-right: 2vw; + padding-left: 1vw; + padding-right: 1vw; } .p-grid{ diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts index 73330dfa1..c7398287e 100644 --- a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts +++ b/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts @@ -1,7 +1,7 @@ -import { CursoModel } from './../../Models/cursoModel'; -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, ViewChild } from '@angular/core'; import { HttpClient } from '@angular/common/http'; - +import { ModalDirective } from 'angular-bootstrap-md'; +import { CursoModel } from './../../Models/cursoModel'; @Component({ selector: 'app-dash-board', templateUrl: './dash-board.component.html', @@ -9,6 +9,8 @@ import { HttpClient } from '@angular/common/http'; }) export class DashBoardComponent implements OnInit { Dados: CursoModel; + selectedData: CursoModel; + @ViewChild('detalhe') public modal: ModalDirective; constructor(public http: HttpClient) { this.getData(); } @@ -24,4 +26,10 @@ export class DashBoardComponent implements OnInit { this.Dados = res; }); } + + ShowDetails(details) { + console.log(details); + this.selectedData = details; + this.modal.show(); + } } From 679ff3e08f9a6fd5f2072fd32426b3d417517a5c Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 3 Oct 2018 14:53:16 -0300 Subject: [PATCH 05/26] backEnd iniciado --- .gitignore | 2 + BackEnd/.DS_Store | Bin 0 -> 6148 bytes BackEnd/api/controllers/getData.controller.js | 0 BackEnd/api/models/getData.model.js | 14 + BackEnd/api/routes/getData.route.js | 0 BackEnd/package-lock.json | 3004 +++++++++++++++++ BackEnd/package.json | 18 + BackEnd/server.js | 7 + 8 files changed, 3045 insertions(+) create mode 100644 .gitignore create mode 100644 BackEnd/.DS_Store create mode 100644 BackEnd/api/controllers/getData.controller.js create mode 100644 BackEnd/api/models/getData.model.js create mode 100644 BackEnd/api/routes/getData.route.js create mode 100644 BackEnd/package-lock.json create mode 100644 BackEnd/package.json create mode 100644 BackEnd/server.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..d433eefec --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +BackEnd/node_modules/ diff --git a/BackEnd/.DS_Store b/BackEnd/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0= 1.4.0 < 2" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", + "dev": true + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "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": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "http://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=", + "dev": true + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "dev": true, + "requires": { + "package-json": "^4.0.0" + } + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "lru-cache": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", + "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "mime-db": { + "version": "1.36.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", + "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==" + }, + "mime-types": { + "version": "2.1.20", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", + "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", + "requires": { + "mime-db": "~1.36.0" + } + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "mixin-deep": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", + "integrity": "sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "nan": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", + "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", + "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" + }, + "nodemon": { + "version": "1.18.4", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-1.18.4.tgz", + "integrity": "sha512-hyK6vl65IPnky/ee+D3IWvVGgJa/m3No2/Xc/3wanS6Ce1MWjCzH6NnhPJ/vZM+6JFym16jtHx51lmCMB9HDtg==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "debug": "^3.1.0", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.0", + "semver": "^5.5.0", + "supports-color": "^5.2.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.2", + "update-notifier": "^2.3.0" + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "dev": true, + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + } + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "pause-stream": { + "version": "0.0.11", + "resolved": "http://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "dev": true, + "requires": { + "through": "~2.3" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "ps-tree": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", + "integrity": "sha1-tCGyQUDWID8e08dplrRCewjowBQ=", + "dev": true, + "requires": { + "event-stream": "~3.3.0" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "pstree.remy": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.0.tgz", + "integrity": "sha512-q5I5vLRMVtdWa8n/3UEzZX7Lfghzrg9eG2IKk2ENLSofKRCXVqMvMUHxCKgXNaqH/8ebhBxrqftHWnyTFweJ5Q==", + "dev": true, + "requires": { + "ps-tree": "^1.1.0" + } + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "range-parser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", + "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "registry-auth-token": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", + "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", + "dev": true, + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "dev": true, + "requires": { + "rc": "^1.0.1" + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", + "dev": true + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "^5.0.3" + } + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", + "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "dev": true, + "requires": { + "atob": "^2.1.1", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + }, + "stream-combiner": { + "version": "0.2.2", + "resolved": "http://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "dev": true, + "requires": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "^0.7.0" + } + }, + "through": { + "version": "2.3.8", + "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, + "requires": { + "nopt": "~1.0.10" + } + }, + "type-is": { + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.18" + } + }, + "undefsafe": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", + "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", + "dev": true, + "requires": { + "debug": "^2.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" + } + } + } + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=", + "dev": true + }, + "upath": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.0.tgz", + "integrity": "sha512-bzpH/oBhoS/QI/YtbkqCg6VEiPYjSZtrHQM6/QnJS6OL9pKUFLqb3aFh4Scvwm45+7iAgiMkLhSbaZxUqmrprw==", + "dev": true + }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "dev": true, + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "dev": true, + "requires": { + "prepend-http": "^1.0.1" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "widest-line": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.0.tgz", + "integrity": "sha1-AUKk6KJD+IgsAjOqDgKBqnYVInM=", + "dev": true, + "requires": { + "string-width": "^2.1.1" + } + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } +} diff --git a/BackEnd/package.json b/BackEnd/package.json new file mode 100644 index 000000000..87405e006 --- /dev/null +++ b/BackEnd/package.json @@ -0,0 +1,18 @@ +{ + "name": "celsolisboabackend", + "version": "0.0.1", + "description": "", + "main": "server.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "nodemon server.js" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "nodemon": "^1.18.4" + }, + "dependencies": { + "express": "^4.16.3" + } +} diff --git a/BackEnd/server.js b/BackEnd/server.js new file mode 100644 index 000000000..315c3bff8 --- /dev/null +++ b/BackEnd/server.js @@ -0,0 +1,7 @@ +var express = require('express'), + app = express(), + port = process.env.PORT || 3000; + +app.listen(port); + +console.log('todo list RESTful API server started on: ' + port); From 937c2aedb17aaacfeee4f64bfb34bfb67f882b9e Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 3 Oct 2018 19:47:32 -0300 Subject: [PATCH 06/26] controllers adicionados --- BackEnd/api/controllers/cursos.controller.js | 18 + BackEnd/api/controllers/getData.controller.js | 0 BackEnd/api/models/getData.model.js | 2 +- BackEnd/package-lock.json | 539 +++++++++++++++++- BackEnd/package.json | 3 +- BackEnd/server.js | 32 +- 6 files changed, 556 insertions(+), 38 deletions(-) create mode 100644 BackEnd/api/controllers/cursos.controller.js delete mode 100644 BackEnd/api/controllers/getData.controller.js diff --git a/BackEnd/api/controllers/cursos.controller.js b/BackEnd/api/controllers/cursos.controller.js new file mode 100644 index 000000000..97cd1b301 --- /dev/null +++ b/BackEnd/api/controllers/cursos.controller.js @@ -0,0 +1,18 @@ +function Cursos(){ + + +this.loging = function (req, res, next) { + console.log('funciona?'); + res.send({msg: req.params.destino}) + } + +} + +this.list = function (req, res , next ) { + +} + + + + +module.exports = new Cursos \ No newline at end of file diff --git a/BackEnd/api/controllers/getData.controller.js b/BackEnd/api/controllers/getData.controller.js deleted file mode 100644 index e69de29bb..000000000 diff --git a/BackEnd/api/models/getData.model.js b/BackEnd/api/models/getData.model.js index 54dd7d71b..df704665e 100644 --- a/BackEnd/api/models/getData.model.js +++ b/BackEnd/api/models/getData.model.js @@ -1,5 +1,5 @@ module.exports = function(app) { - const getData = require('../controllers/getData.controller'); + const getData = require('../controllers/cursos.controller'); // getData Routes app.route('/tasks') .get(getData.list_all_tasks) diff --git a/BackEnd/package-lock.json b/BackEnd/package-lock.json index 5ed91948f..59f68c915 100644 --- a/BackEnd/package-lock.json +++ b/BackEnd/package-lock.json @@ -82,6 +82,19 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -103,8 +116,7 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base": { "version": "0.11.2", @@ -161,6 +173,15 @@ } } }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "optional": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, "binary-extensions": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.12.0.tgz", @@ -213,7 +234,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -248,6 +268,17 @@ } } }, + "bunyan": { + "version": "1.8.12", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", + "integrity": "sha1-8VDw9nSKvdcq6uhPBEA74u8RN5c=", + "requires": { + "dtrace-provider": "~0.8", + "moment": "^2.10.6", + "mv": "~2", + "safe-json-stringify": "~1" + } + }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", @@ -383,8 +414,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "configstore": { "version": "3.1.2", @@ -429,8 +459,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "create-error-class": { "version": "3.0.2", @@ -458,6 +487,43 @@ "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", "dev": true }, + "csv": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/csv/-/csv-1.2.1.tgz", + "integrity": "sha1-UjHt/BxxUlEuxFeBB2p6l/9SXAw=", + "requires": { + "csv-generate": "^1.1.2", + "csv-parse": "^1.3.3", + "csv-stringify": "^1.1.2", + "stream-transform": "^0.2.2" + } + }, + "csv-generate": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-1.1.2.tgz", + "integrity": "sha1-7GsA7a7W5ZrZwgWC9MNk4osUYkA=" + }, + "csv-parse": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-1.3.3.tgz", + "integrity": "sha1-0c/YdDwvhJoKuy/VRNtWaV0ZpJA=" + }, + "csv-stringify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-1.1.2.tgz", + "integrity": "sha1-d6QVJlgbzjOA8SsA18W7rHDIK1g=", + "requires": { + "lodash.get": "~4.4.2" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "debug": { "version": "3.2.5", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", @@ -538,6 +604,11 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==" + }, "dot-prop": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", @@ -547,6 +618,15 @@ "is-obj": "^1.0.0" } }, + "dtrace-provider": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.7.tgz", + "integrity": "sha1-3JObTT4GIM/gwc2APQ0tftBP/QQ=", + "optional": true, + "requires": { + "nan": "^2.10.0" + } + }, "duplexer": { "version": "0.1.1", "resolved": "http://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", @@ -559,6 +639,16 @@ "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -574,6 +664,11 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, + "escape-regexp-component": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/escape-regexp-component/-/escape-regexp-component-1.0.2.tgz", + "integrity": "sha1-nGO20LJf8qiMOtvRjFthrMO5+qI=" + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -601,6 +696,14 @@ "through": "^2.3.8" } }, + "ewma": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ewma/-/ewma-2.0.1.tgz", + "integrity": "sha512-MYYK17A76cuuyvkR7MnqLW4iFYPEi5Isl2qb8rXiWpLiwFS9dxW/rncuNnjjgSENuVqZQkIuR4+DChVL4g1lnw==", + "requires": { + "assert-plus": "^1.0.0" + } + }, "execa": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", @@ -798,6 +901,16 @@ } } }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-decode-uri-component": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.0.tgz", + "integrity": "sha512-WQSYVKn6tDW/3htASeUkrx5LcnuTENQIZQPCVlwdnvIJ7bYtSpoJYq38MgUJnx1CQIR1gjZ8HJxAEcN4gqugBg==" + }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", @@ -845,6 +958,16 @@ } } }, + "find-my-way": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-1.15.3.tgz", + "integrity": "sha512-W+9ZZcZZlk3jc69mNvLAYy01msIpUp45aAtD/AIRWc5T0voI4WmHzm6oy+F3/jeGjb7AEE7AU8Inq58/gd/E5g==", + "requires": { + "fast-decode-uri-component": "^1.0.0", + "safe-regex": "^1.1.0", + "semver-store": "^0.3.0" + } + }, "flatmap-stream": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/flatmap-stream/-/flatmap-stream-0.1.0.tgz", @@ -857,6 +980,11 @@ "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, + "formidable": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.1.tgz", + "integrity": "sha512-Fs9VRguL0gqGHkXS5GQiMCr1VhZBxz0JnJs4JmMp/2jL18Fmbzvv7vOFRU+U8TBkHEE/CX1qDXzJplVULgsLeg==" + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -1423,6 +1551,27 @@ "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "optional": true, + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", @@ -1478,6 +1627,11 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, + "handle-thing": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-1.2.5.tgz", + "integrity": "sha1-/Xqtcmvxpf0W38KbL3pmAdJxOcQ=" + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -1516,6 +1670,22 @@ } } }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" + }, "http-errors": { "version": "1.6.3", "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", @@ -1527,6 +1697,16 @@ "statuses": ">= 1.4.0 < 2" } }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", @@ -1550,6 +1730,16 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", @@ -1763,8 +1953,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -1778,6 +1967,28 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -1793,12 +2004,22 @@ "package-json": "^4.0.0" } }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, "lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", @@ -1809,7 +2030,6 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, "requires": { "pseudomap": "^1.0.2", "yallist": "^2.1.2" @@ -1899,11 +2119,15 @@ "mime-db": "~1.36.0" } }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1935,16 +2159,49 @@ } } }, + "mkdirp": { + "version": "0.5.1", + "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "optional": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "optional": true + } + } + }, + "moment": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz", + "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=", + "optional": true + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha1-rmzg1vbV4KT32JN5jQPB6pVZtqI=", + "optional": true, + "requires": { + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" + } + }, "nan": { "version": "2.11.1", "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==", - "dev": true, "optional": true }, "nanomatch": { @@ -1966,6 +2223,12 @@ "to-regex": "^3.0.1" } }, + "ncp": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=", + "optional": true + }, "negotiator": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", @@ -2065,6 +2328,11 @@ "isobject": "^3.0.1" } }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==" + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -2073,6 +2341,14 @@ "ee-first": "1.1.1" } }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", @@ -2111,8 +2387,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -2140,6 +2415,11 @@ "through": "~2.3" } }, + "pidusage": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-1.2.0.tgz", + "integrity": "sha512-OGo+iSOk44HRJ8q15AyG570UYxcm5u+R99DI8Khu8P3tKGkVu5EZX4ywHglWSTMNNXQ274oeGpYrvFEhDIFGPg==" + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -2161,8 +2441,7 @@ "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", - "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", - "dev": true + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "proxy-addr": { "version": "2.0.4", @@ -2185,8 +2464,7 @@ "pseudomap": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "pstree.remy": { "version": "1.1.0", @@ -2257,7 +2535,6 @@ "version": "2.3.6", "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -2332,32 +2609,105 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "restify": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/restify/-/restify-7.2.1.tgz", + "integrity": "sha512-xygVfQn/FiyzSPNIiOlzos6+RVcmTTK/bN0/m4z6vQwUY1yXntAsXM8ckq6hMxYfkhZfbPMM5hvBf75B8zLE1g==", + "requires": { + "assert-plus": "^1.0.0", + "bunyan": "^1.8.12", + "csv": "^1.1.1", + "dtrace-provider": "^0.8.1", + "escape-regexp-component": "^1.0.2", + "ewma": "^2.0.1", + "find-my-way": "^1.13.0", + "formidable": "^1.2.1", + "http-signature": "^1.2.0", + "lodash": "^4.17.10", + "lru-cache": "^4.1.3", + "mime": "^1.5.0", + "negotiator": "^0.6.1", + "once": "^1.4.0", + "pidusage": "^1.2.0", + "qs": "^6.5.2", + "restify-errors": "^5.0.0", + "semver": "^5.4.1", + "spdy": "^3.4.7", + "uuid": "^3.1.0", + "vasync": "^1.6.4", + "verror": "^1.10.0" + }, + "dependencies": { + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + } + } + }, + "restify-errors": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/restify-errors/-/restify-errors-5.0.0.tgz", + "integrity": "sha512-+vby9Kxf7qlzvbZSTIEGkIixkeHG+pVCl34dk6eKnL+ua4pCezpdLT/1/eabzPZb65ADrgoc04jeWrrF1E1pvQ==", + "requires": { + "assert-plus": "^1.0.0", + "lodash": "^4.2.1", + "safe-json-stringify": "^1.0.3", + "verror": "^1.8.1" + } + }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" + }, + "rimraf": { + "version": "2.4.5", + "resolved": "http://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha1-7nEM5dk6j9uFb7Xqj/Di11k0sto=", + "optional": true, + "requires": { + "glob": "^6.0.1" + } }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "optional": true }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, "requires": { "ret": "~0.1.10" } }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" + }, "semver": { "version": "5.5.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", - "dev": true + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" }, "semver-diff": { "version": "2.1.0", @@ -2368,6 +2718,11 @@ "semver": "^5.0.3" } }, + "semver-store": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/semver-store/-/semver-store-0.3.0.tgz", + "integrity": "sha512-TcZvGMMy9vodEFSse30lWinkj+JgOBvPn8wRItpQRSayhc+4ssDs335uklkfvQQJgL/WvmHLVj4Ycv2s7QCQMg==" + }, "send": { "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", @@ -2599,6 +2954,53 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "spdy": { + "version": "3.4.7", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", + "integrity": "sha1-Qv9B7OXMD5mjpsKKq7c/XDsDrLw=", + "requires": { + "debug": "^2.6.8", + "handle-thing": "^1.2.5", + "http-deceiver": "^1.2.7", + "safe-buffer": "^5.0.1", + "select-hose": "^2.0.0", + "spdy-transport": "^2.0.18" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, + "spdy-transport": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-2.1.0.tgz", + "integrity": "sha512-bpUeGpZcmZ692rrTiqf9/2EUakI6/kXX1Rpe0ib/DyOzbiexVfXkw6GnvI9hVGvIwVaUhkaBojjCZwLNRGQg1g==", + "requires": { + "debug": "^2.6.8", + "detect-node": "^2.0.3", + "hpack.js": "^2.1.6", + "obuf": "^1.1.1", + "readable-stream": "^2.2.9", + "safe-buffer": "^5.0.1", + "wbuf": "^1.7.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + } + } + }, "split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", @@ -2617,6 +3019,22 @@ "extend-shallow": "^3.0.0" } }, + "sshpk": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", + "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -2653,6 +3071,11 @@ "through": "~2.3.4" } }, + "stream-transform": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-0.2.2.tgz", + "integrity": "sha1-dYZ0h/SVKPi/HYJJllh1PQLfeDg=" + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", @@ -2667,7 +3090,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } @@ -2774,6 +3196,12 @@ "nopt": "~1.0.10" } }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "optional": true + }, "type-is": { "version": "1.6.16", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", @@ -2946,19 +3374,64 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, + "vasync": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz", + "integrity": "sha1-3+k2Fq0OeugBszKp2Iv8XNyOHR8=", + "requires": { + "verror": "1.6.0" + }, + "dependencies": { + "extsprintf": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", + "integrity": "sha1-WtlGwi9bMrp/jNdCZxHG6KP8JSk=" + }, + "verror": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", + "integrity": "sha1-fROyex+swuLakEBetepuW90lLqU=", + "requires": { + "extsprintf": "1.2.0" + } + } + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -2977,6 +3450,11 @@ "string-width": "^2.1.1" } }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, "write-file-atomic": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", @@ -2997,8 +3475,7 @@ "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } } diff --git a/BackEnd/package.json b/BackEnd/package.json index 87405e006..8a6a4d27a 100644 --- a/BackEnd/package.json +++ b/BackEnd/package.json @@ -13,6 +13,7 @@ "nodemon": "^1.18.4" }, "dependencies": { - "express": "^4.16.3" + "express": "^4.16.3", + "restify": "^7.2.1" } } diff --git a/BackEnd/server.js b/BackEnd/server.js index 315c3bff8..c22d36b51 100644 --- a/BackEnd/server.js +++ b/BackEnd/server.js @@ -1,7 +1,29 @@ -var express = require('express'), - app = express(), - port = process.env.PORT || 3000; +const restify = require('restify'); + server = restify.createServer(); + cursos = require('./api/controllers/cursos.controller') -app.listen(port); -console.log('todo list RESTful API server started on: ' + port); +server.name = 'Teste123' +function temNome(req, res, next) { + if (req.params.nome === 'Iago') { + next(); + } + else res.send('Inválido') +} +function resposta(req, res, next) { + res.send( + { mensagem: `Hello World XXX, ${req.params.nome}`}, + ); + next(); +} + + +server.get('/mensagem/:nome', temNome, resposta); + +server.get('/teste/:destino', cursos.loging) + + +server.listen(3000, () => { + console.log("Servidor em pé", server.name + '----' + server.url); + +}); \ No newline at end of file From 31ff54dac4ecf4435ad1a38587b07789288ecb91 Mon Sep 17 00:00:00 2001 From: Unknown Date: Wed, 3 Oct 2018 20:32:00 -0300 Subject: [PATCH 07/26] Auto stash before merge of "master" and "origin/master" --- .gitignore | 1 + BackEnd/package-lock.json | 28 +++++++++++++----- FrontEnd/{DashBoardCelso => }/.editorconfig | 0 FrontEnd/{DashBoardCelso => }/.gitignore | 0 FrontEnd/{DashBoardCelso => }/README.md | 0 FrontEnd/{DashBoardCelso => }/angular.json | 0 .../e2e/protractor.conf.js | 0 .../e2e/src/app.e2e-spec.ts | 0 .../{DashBoardCelso => }/e2e/src/app.po.ts | 0 .../e2e/tsconfig.e2e.json | 0 .../{DashBoardCelso => }/package-lock.json | 0 FrontEnd/{DashBoardCelso => }/package.json | 0 .../Components/Header/header.component.html | 0 .../Components/Header/header.component.scss | 0 .../Header/header.component.spec.ts | 0 .../src/Components/Header/header.component.ts | 0 .../src/Models/cursoModel.ts | 0 .../src/Models/userModel.ts | 0 .../src/Modules/primeNg.module.ts | 0 .../Pages/DashBoard/dash-board.component.html | 0 .../Pages/DashBoard/dash-board.component.scss | 0 .../DashBoard/dash-board.component.spec.ts | 0 .../Pages/DashBoard/dash-board.component.ts | 0 .../src/Pages/login/login.component.html | 0 .../src/Pages/login/login.component.scss | 0 .../src/Pages/login/login.component.spec.ts | 0 .../src/Pages/login/login.component.ts | 0 .../LoginSrv/loginSrv.service.spec.ts | 0 .../src/Services/LoginSrv/loginSrv.service.ts | 0 .../src/Services/New Text Document.txt | 0 .../getDataSrv/getDataSrv.service.spec.ts | 0 .../Services/getDataSrv/getDataSrv.service.ts | 0 .../src/app/app.component.html | 0 .../src/app/app.component.scss | 0 .../src/app/app.component.spec.ts | 0 .../src/app/app.component.ts | 0 .../src/app/app.module.ts | 0 .../src/app/app.routing.ts | 0 .../{DashBoardCelso => }/src/assets/.gitkeep | 0 .../src/assets/mockUpData.json | 0 .../{DashBoardCelso => }/src/browserslist | 0 .../src/environments/environment.prod.ts | 0 .../src/environments/environment.ts | 0 FrontEnd/{DashBoardCelso => }/src/favicon.ico | Bin FrontEnd/{DashBoardCelso => }/src/index.html | 0 .../{DashBoardCelso => }/src/karma.conf.js | 0 FrontEnd/{DashBoardCelso => }/src/main.ts | 0 .../{DashBoardCelso => }/src/polyfills.ts | 0 .../{DashBoardCelso => }/src/primeFlex.scss | 0 FrontEnd/{DashBoardCelso => }/src/styles.scss | 0 FrontEnd/{DashBoardCelso => }/src/test.ts | 0 .../src/tsconfig.app.json | 0 .../src/tsconfig.spec.json | 0 FrontEnd/{DashBoardCelso => }/src/tslint.json | 0 FrontEnd/{DashBoardCelso => }/tsconfig.json | 0 FrontEnd/{DashBoardCelso => }/tslint.json | 0 56 files changed, 22 insertions(+), 7 deletions(-) rename FrontEnd/{DashBoardCelso => }/.editorconfig (100%) rename FrontEnd/{DashBoardCelso => }/.gitignore (100%) rename FrontEnd/{DashBoardCelso => }/README.md (100%) rename FrontEnd/{DashBoardCelso => }/angular.json (100%) rename FrontEnd/{DashBoardCelso => }/e2e/protractor.conf.js (100%) rename FrontEnd/{DashBoardCelso => }/e2e/src/app.e2e-spec.ts (100%) rename FrontEnd/{DashBoardCelso => }/e2e/src/app.po.ts (100%) rename FrontEnd/{DashBoardCelso => }/e2e/tsconfig.e2e.json (100%) rename FrontEnd/{DashBoardCelso => }/package-lock.json (100%) rename FrontEnd/{DashBoardCelso => }/package.json (100%) rename FrontEnd/{DashBoardCelso => }/src/Components/Header/header.component.html (100%) rename FrontEnd/{DashBoardCelso => }/src/Components/Header/header.component.scss (100%) rename FrontEnd/{DashBoardCelso => }/src/Components/Header/header.component.spec.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/Components/Header/header.component.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/Models/cursoModel.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/Models/userModel.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/Modules/primeNg.module.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/Pages/DashBoard/dash-board.component.html (100%) rename FrontEnd/{DashBoardCelso => }/src/Pages/DashBoard/dash-board.component.scss (100%) rename FrontEnd/{DashBoardCelso => }/src/Pages/DashBoard/dash-board.component.spec.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/Pages/DashBoard/dash-board.component.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/Pages/login/login.component.html (100%) rename FrontEnd/{DashBoardCelso => }/src/Pages/login/login.component.scss (100%) rename FrontEnd/{DashBoardCelso => }/src/Pages/login/login.component.spec.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/Pages/login/login.component.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/Services/LoginSrv/loginSrv.service.spec.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/Services/LoginSrv/loginSrv.service.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/Services/New Text Document.txt (100%) rename FrontEnd/{DashBoardCelso => }/src/Services/getDataSrv/getDataSrv.service.spec.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/Services/getDataSrv/getDataSrv.service.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/app/app.component.html (100%) rename FrontEnd/{DashBoardCelso => }/src/app/app.component.scss (100%) rename FrontEnd/{DashBoardCelso => }/src/app/app.component.spec.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/app/app.component.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/app/app.module.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/app/app.routing.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/assets/.gitkeep (100%) rename FrontEnd/{DashBoardCelso => }/src/assets/mockUpData.json (100%) rename FrontEnd/{DashBoardCelso => }/src/browserslist (100%) rename FrontEnd/{DashBoardCelso => }/src/environments/environment.prod.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/environments/environment.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/favicon.ico (100%) rename FrontEnd/{DashBoardCelso => }/src/index.html (100%) rename FrontEnd/{DashBoardCelso => }/src/karma.conf.js (100%) rename FrontEnd/{DashBoardCelso => }/src/main.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/polyfills.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/primeFlex.scss (100%) rename FrontEnd/{DashBoardCelso => }/src/styles.scss (100%) rename FrontEnd/{DashBoardCelso => }/src/test.ts (100%) rename FrontEnd/{DashBoardCelso => }/src/tsconfig.app.json (100%) rename FrontEnd/{DashBoardCelso => }/src/tsconfig.spec.json (100%) rename FrontEnd/{DashBoardCelso => }/src/tslint.json (100%) rename FrontEnd/{DashBoardCelso => }/tsconfig.json (100%) rename FrontEnd/{DashBoardCelso => }/tslint.json (100%) diff --git a/.gitignore b/.gitignore index d433eefec..021565fd1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ BackEnd/node_modules/ +FrontEnd/node_modules/ diff --git a/BackEnd/package-lock.json b/BackEnd/package-lock.json index 59f68c915..f60c7bdaf 100644 --- a/BackEnd/package-lock.json +++ b/BackEnd/package-lock.json @@ -1051,12 +1051,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1071,17 +1073,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -1198,7 +1203,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -1210,6 +1216,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1224,6 +1231,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1231,12 +1239,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -1255,6 +1265,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -1335,7 +1346,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -1347,6 +1359,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -1468,6 +1481,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", diff --git a/FrontEnd/DashBoardCelso/.editorconfig b/FrontEnd/.editorconfig similarity index 100% rename from FrontEnd/DashBoardCelso/.editorconfig rename to FrontEnd/.editorconfig diff --git a/FrontEnd/DashBoardCelso/.gitignore b/FrontEnd/.gitignore similarity index 100% rename from FrontEnd/DashBoardCelso/.gitignore rename to FrontEnd/.gitignore diff --git a/FrontEnd/DashBoardCelso/README.md b/FrontEnd/README.md similarity index 100% rename from FrontEnd/DashBoardCelso/README.md rename to FrontEnd/README.md diff --git a/FrontEnd/DashBoardCelso/angular.json b/FrontEnd/angular.json similarity index 100% rename from FrontEnd/DashBoardCelso/angular.json rename to FrontEnd/angular.json diff --git a/FrontEnd/DashBoardCelso/e2e/protractor.conf.js b/FrontEnd/e2e/protractor.conf.js similarity index 100% rename from FrontEnd/DashBoardCelso/e2e/protractor.conf.js rename to FrontEnd/e2e/protractor.conf.js diff --git a/FrontEnd/DashBoardCelso/e2e/src/app.e2e-spec.ts b/FrontEnd/e2e/src/app.e2e-spec.ts similarity index 100% rename from FrontEnd/DashBoardCelso/e2e/src/app.e2e-spec.ts rename to FrontEnd/e2e/src/app.e2e-spec.ts diff --git a/FrontEnd/DashBoardCelso/e2e/src/app.po.ts b/FrontEnd/e2e/src/app.po.ts similarity index 100% rename from FrontEnd/DashBoardCelso/e2e/src/app.po.ts rename to FrontEnd/e2e/src/app.po.ts diff --git a/FrontEnd/DashBoardCelso/e2e/tsconfig.e2e.json b/FrontEnd/e2e/tsconfig.e2e.json similarity index 100% rename from FrontEnd/DashBoardCelso/e2e/tsconfig.e2e.json rename to FrontEnd/e2e/tsconfig.e2e.json diff --git a/FrontEnd/DashBoardCelso/package-lock.json b/FrontEnd/package-lock.json similarity index 100% rename from FrontEnd/DashBoardCelso/package-lock.json rename to FrontEnd/package-lock.json diff --git a/FrontEnd/DashBoardCelso/package.json b/FrontEnd/package.json similarity index 100% rename from FrontEnd/DashBoardCelso/package.json rename to FrontEnd/package.json diff --git a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.html b/FrontEnd/src/Components/Header/header.component.html similarity index 100% rename from FrontEnd/DashBoardCelso/src/Components/Header/header.component.html rename to FrontEnd/src/Components/Header/header.component.html diff --git a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.scss b/FrontEnd/src/Components/Header/header.component.scss similarity index 100% rename from FrontEnd/DashBoardCelso/src/Components/Header/header.component.scss rename to FrontEnd/src/Components/Header/header.component.scss diff --git a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.spec.ts b/FrontEnd/src/Components/Header/header.component.spec.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Components/Header/header.component.spec.ts rename to FrontEnd/src/Components/Header/header.component.spec.ts diff --git a/FrontEnd/DashBoardCelso/src/Components/Header/header.component.ts b/FrontEnd/src/Components/Header/header.component.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Components/Header/header.component.ts rename to FrontEnd/src/Components/Header/header.component.ts diff --git a/FrontEnd/DashBoardCelso/src/Models/cursoModel.ts b/FrontEnd/src/Models/cursoModel.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Models/cursoModel.ts rename to FrontEnd/src/Models/cursoModel.ts diff --git a/FrontEnd/DashBoardCelso/src/Models/userModel.ts b/FrontEnd/src/Models/userModel.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Models/userModel.ts rename to FrontEnd/src/Models/userModel.ts diff --git a/FrontEnd/DashBoardCelso/src/Modules/primeNg.module.ts b/FrontEnd/src/Modules/primeNg.module.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Modules/primeNg.module.ts rename to FrontEnd/src/Modules/primeNg.module.ts diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html b/FrontEnd/src/Pages/DashBoard/dash-board.component.html similarity index 100% rename from FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.html rename to FrontEnd/src/Pages/DashBoard/dash-board.component.html diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss b/FrontEnd/src/Pages/DashBoard/dash-board.component.scss similarity index 100% rename from FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.scss rename to FrontEnd/src/Pages/DashBoard/dash-board.component.scss diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.spec.ts b/FrontEnd/src/Pages/DashBoard/dash-board.component.spec.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.spec.ts rename to FrontEnd/src/Pages/DashBoard/dash-board.component.spec.ts diff --git a/FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts b/FrontEnd/src/Pages/DashBoard/dash-board.component.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Pages/DashBoard/dash-board.component.ts rename to FrontEnd/src/Pages/DashBoard/dash-board.component.ts diff --git a/FrontEnd/DashBoardCelso/src/Pages/login/login.component.html b/FrontEnd/src/Pages/login/login.component.html similarity index 100% rename from FrontEnd/DashBoardCelso/src/Pages/login/login.component.html rename to FrontEnd/src/Pages/login/login.component.html diff --git a/FrontEnd/DashBoardCelso/src/Pages/login/login.component.scss b/FrontEnd/src/Pages/login/login.component.scss similarity index 100% rename from FrontEnd/DashBoardCelso/src/Pages/login/login.component.scss rename to FrontEnd/src/Pages/login/login.component.scss diff --git a/FrontEnd/DashBoardCelso/src/Pages/login/login.component.spec.ts b/FrontEnd/src/Pages/login/login.component.spec.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Pages/login/login.component.spec.ts rename to FrontEnd/src/Pages/login/login.component.spec.ts diff --git a/FrontEnd/DashBoardCelso/src/Pages/login/login.component.ts b/FrontEnd/src/Pages/login/login.component.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Pages/login/login.component.ts rename to FrontEnd/src/Pages/login/login.component.ts diff --git a/FrontEnd/DashBoardCelso/src/Services/LoginSrv/loginSrv.service.spec.ts b/FrontEnd/src/Services/LoginSrv/loginSrv.service.spec.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Services/LoginSrv/loginSrv.service.spec.ts rename to FrontEnd/src/Services/LoginSrv/loginSrv.service.spec.ts diff --git a/FrontEnd/DashBoardCelso/src/Services/LoginSrv/loginSrv.service.ts b/FrontEnd/src/Services/LoginSrv/loginSrv.service.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Services/LoginSrv/loginSrv.service.ts rename to FrontEnd/src/Services/LoginSrv/loginSrv.service.ts diff --git a/FrontEnd/DashBoardCelso/src/Services/New Text Document.txt b/FrontEnd/src/Services/New Text Document.txt similarity index 100% rename from FrontEnd/DashBoardCelso/src/Services/New Text Document.txt rename to FrontEnd/src/Services/New Text Document.txt diff --git a/FrontEnd/DashBoardCelso/src/Services/getDataSrv/getDataSrv.service.spec.ts b/FrontEnd/src/Services/getDataSrv/getDataSrv.service.spec.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Services/getDataSrv/getDataSrv.service.spec.ts rename to FrontEnd/src/Services/getDataSrv/getDataSrv.service.spec.ts diff --git a/FrontEnd/DashBoardCelso/src/Services/getDataSrv/getDataSrv.service.ts b/FrontEnd/src/Services/getDataSrv/getDataSrv.service.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/Services/getDataSrv/getDataSrv.service.ts rename to FrontEnd/src/Services/getDataSrv/getDataSrv.service.ts diff --git a/FrontEnd/DashBoardCelso/src/app/app.component.html b/FrontEnd/src/app/app.component.html similarity index 100% rename from FrontEnd/DashBoardCelso/src/app/app.component.html rename to FrontEnd/src/app/app.component.html diff --git a/FrontEnd/DashBoardCelso/src/app/app.component.scss b/FrontEnd/src/app/app.component.scss similarity index 100% rename from FrontEnd/DashBoardCelso/src/app/app.component.scss rename to FrontEnd/src/app/app.component.scss diff --git a/FrontEnd/DashBoardCelso/src/app/app.component.spec.ts b/FrontEnd/src/app/app.component.spec.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/app/app.component.spec.ts rename to FrontEnd/src/app/app.component.spec.ts diff --git a/FrontEnd/DashBoardCelso/src/app/app.component.ts b/FrontEnd/src/app/app.component.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/app/app.component.ts rename to FrontEnd/src/app/app.component.ts diff --git a/FrontEnd/DashBoardCelso/src/app/app.module.ts b/FrontEnd/src/app/app.module.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/app/app.module.ts rename to FrontEnd/src/app/app.module.ts diff --git a/FrontEnd/DashBoardCelso/src/app/app.routing.ts b/FrontEnd/src/app/app.routing.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/app/app.routing.ts rename to FrontEnd/src/app/app.routing.ts diff --git a/FrontEnd/DashBoardCelso/src/assets/.gitkeep b/FrontEnd/src/assets/.gitkeep similarity index 100% rename from FrontEnd/DashBoardCelso/src/assets/.gitkeep rename to FrontEnd/src/assets/.gitkeep diff --git a/FrontEnd/DashBoardCelso/src/assets/mockUpData.json b/FrontEnd/src/assets/mockUpData.json similarity index 100% rename from FrontEnd/DashBoardCelso/src/assets/mockUpData.json rename to FrontEnd/src/assets/mockUpData.json diff --git a/FrontEnd/DashBoardCelso/src/browserslist b/FrontEnd/src/browserslist similarity index 100% rename from FrontEnd/DashBoardCelso/src/browserslist rename to FrontEnd/src/browserslist diff --git a/FrontEnd/DashBoardCelso/src/environments/environment.prod.ts b/FrontEnd/src/environments/environment.prod.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/environments/environment.prod.ts rename to FrontEnd/src/environments/environment.prod.ts diff --git a/FrontEnd/DashBoardCelso/src/environments/environment.ts b/FrontEnd/src/environments/environment.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/environments/environment.ts rename to FrontEnd/src/environments/environment.ts diff --git a/FrontEnd/DashBoardCelso/src/favicon.ico b/FrontEnd/src/favicon.ico similarity index 100% rename from FrontEnd/DashBoardCelso/src/favicon.ico rename to FrontEnd/src/favicon.ico diff --git a/FrontEnd/DashBoardCelso/src/index.html b/FrontEnd/src/index.html similarity index 100% rename from FrontEnd/DashBoardCelso/src/index.html rename to FrontEnd/src/index.html diff --git a/FrontEnd/DashBoardCelso/src/karma.conf.js b/FrontEnd/src/karma.conf.js similarity index 100% rename from FrontEnd/DashBoardCelso/src/karma.conf.js rename to FrontEnd/src/karma.conf.js diff --git a/FrontEnd/DashBoardCelso/src/main.ts b/FrontEnd/src/main.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/main.ts rename to FrontEnd/src/main.ts diff --git a/FrontEnd/DashBoardCelso/src/polyfills.ts b/FrontEnd/src/polyfills.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/polyfills.ts rename to FrontEnd/src/polyfills.ts diff --git a/FrontEnd/DashBoardCelso/src/primeFlex.scss b/FrontEnd/src/primeFlex.scss similarity index 100% rename from FrontEnd/DashBoardCelso/src/primeFlex.scss rename to FrontEnd/src/primeFlex.scss diff --git a/FrontEnd/DashBoardCelso/src/styles.scss b/FrontEnd/src/styles.scss similarity index 100% rename from FrontEnd/DashBoardCelso/src/styles.scss rename to FrontEnd/src/styles.scss diff --git a/FrontEnd/DashBoardCelso/src/test.ts b/FrontEnd/src/test.ts similarity index 100% rename from FrontEnd/DashBoardCelso/src/test.ts rename to FrontEnd/src/test.ts diff --git a/FrontEnd/DashBoardCelso/src/tsconfig.app.json b/FrontEnd/src/tsconfig.app.json similarity index 100% rename from FrontEnd/DashBoardCelso/src/tsconfig.app.json rename to FrontEnd/src/tsconfig.app.json diff --git a/FrontEnd/DashBoardCelso/src/tsconfig.spec.json b/FrontEnd/src/tsconfig.spec.json similarity index 100% rename from FrontEnd/DashBoardCelso/src/tsconfig.spec.json rename to FrontEnd/src/tsconfig.spec.json diff --git a/FrontEnd/DashBoardCelso/src/tslint.json b/FrontEnd/src/tslint.json similarity index 100% rename from FrontEnd/DashBoardCelso/src/tslint.json rename to FrontEnd/src/tslint.json diff --git a/FrontEnd/DashBoardCelso/tsconfig.json b/FrontEnd/tsconfig.json similarity index 100% rename from FrontEnd/DashBoardCelso/tsconfig.json rename to FrontEnd/tsconfig.json diff --git a/FrontEnd/DashBoardCelso/tslint.json b/FrontEnd/tslint.json similarity index 100% rename from FrontEnd/DashBoardCelso/tslint.json rename to FrontEnd/tslint.json From 8056fec557a409386035c1b9f839cadf466c1f28 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 4 Oct 2018 00:03:33 -0300 Subject: [PATCH 08/26] Utilizando o JWT --- BackEnd/api/controllers/cursos.controller.js | 24 ++-- BackEnd/api/controllers/login.controller.js | 35 ++++++ BackEnd/api/controllers/mockUpData.json | 72 +++++++++++ BackEnd/package-lock.json | 118 +++++++++++++++---- BackEnd/package.json | 1 + BackEnd/server.js | 29 ++--- 6 files changed, 223 insertions(+), 56 deletions(-) create mode 100644 BackEnd/api/controllers/login.controller.js create mode 100644 BackEnd/api/controllers/mockUpData.json diff --git a/BackEnd/api/controllers/cursos.controller.js b/BackEnd/api/controllers/cursos.controller.js index 97cd1b301..82157c732 100644 --- a/BackEnd/api/controllers/cursos.controller.js +++ b/BackEnd/api/controllers/cursos.controller.js @@ -1,18 +1,14 @@ -function Cursos(){ +var fs = require('fs') +path = require('path') -this.loging = function (req, res, next) { - console.log('funciona?'); - res.send({msg: req.params.destino}) - } - -} - -this.list = function (req, res , next ) { +function Cursos() { + this.list = function (req, res, next) { + let rawdata = fs.readFileSync(path.join(__dirname, 'mockUpData.json')); + let student = JSON.parse(rawdata); + console.log(student); + res.send(student) + } } - - - - -module.exports = new Cursos \ No newline at end of file +module.exports = new Cursos() \ No newline at end of file diff --git a/BackEnd/api/controllers/login.controller.js b/BackEnd/api/controllers/login.controller.js new file mode 100644 index 000000000..fa1d4dd8a --- /dev/null +++ b/BackEnd/api/controllers/login.controller.js @@ -0,0 +1,35 @@ +const jwt = require('jsonwebtoken') + +function Login() { + + + this.doLogin = function (req, res, next) { + console.log('funciona?'); + const secret = Math.random().toString(36).substr(2, 9) + const user = { + id: Math.random().toString(36).substr(2, 9), + name: req.params.usuario, + password: req.params.senha + } + jwt.sign({ user: user }, secret, (err, token) => { + const result = { + id: secret, + Token: token + } + res.send(result) + }) + + } + + this.verifyLogin = ((req, res, next) => { + const header = req.header['authorization '] + + if (typeof header !== 'undefined') { + const splitHeader = header.split(' ') + return true + } else { + return false + } + }) +} +module.exports = new Login(); \ No newline at end of file diff --git a/BackEnd/api/controllers/mockUpData.json b/BackEnd/api/controllers/mockUpData.json new file mode 100644 index 000000000..422bfb514 --- /dev/null +++ b/BackEnd/api/controllers/mockUpData.json @@ -0,0 +1,72 @@ +[ + { + "sala": 371, + "professor": "Morlee Elt", + "materia": "Portugues", + "horaInicial": "09:00h", + "horaFinal": "12:00h" + }, + { + "sala": 107, + "professor": "Benedetto Backler", + "materia": "Portugues", + "horaInicial": "09:00h", + "horaFinal": "14:00h" + }, + { + "sala": 386, + "professor": "Miltie Jiru", + "materia": "Matematica", + "horaInicial": "10:00h", + "horaFinal": "12:00h" + }, + { + "sala": 200, + "professor": "Lara Dod", + "materia": "Geografia", + "horaInicial": "13:00h", + "horaFinal": "16:00h" + }, + { + "sala": 279, + "professor": "Jordain Sivier", + "materia": "Historia", + "horaInicial": "09:00h", + "horaFinal": "17:00h" + }, + { + "sala": 228, + "professor": "Borden Yorke", + "materia": "Artes", + "horaInicial": "09:00h", + "horaFinal": "16:00h" + }, + { + "sala": 126, + "professor": "Lincoln Spyer", + "materia": "Sociologia", + "horaInicial": "13:00h", + "horaFinal": "16:00h" + }, + { + "sala": 198, + "professor": "Madeleine Beckinsale", + "materia": "Filosofia", + "horaInicial": "16:00h", + "horaFinal": "20:10h" + }, + { + "sala": 343, + "professor": "Sauveur Shortland", + "materia": "Matematica", + "horaInicial": "06:00h", + "horaFinal": "10:00h" + }, + { + "sala": 271, + "professor": "Winnie Bould", + "materia": "Portugues", + "horaInicial": "19:00h", + "horaFinal": "22:00h" + } +] diff --git a/BackEnd/package-lock.json b/BackEnd/package-lock.json index f60c7bdaf..fc4ab29a2 100644 --- a/BackEnd/package-lock.json +++ b/BackEnd/package-lock.json @@ -268,6 +268,11 @@ } } }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, "bunyan": { "version": "1.8.12", "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.12.tgz", @@ -649,6 +654,14 @@ "safer-buffer": "^2.1.0" } }, + "ecdsa-sig-formatter": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", + "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -1051,14 +1064,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1073,20 +1084,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -1203,8 +1211,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -1216,7 +1223,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1231,7 +1237,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1239,14 +1244,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -1265,7 +1268,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -1346,8 +1348,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -1359,7 +1360,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -1481,7 +1481,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", @@ -1992,6 +1991,29 @@ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" }, + "jsonwebtoken": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.3.0.tgz", + "integrity": "sha512-oge/hvlmeJCH+iIz1DwcO7vKPkNGJHhgkspk8OH3VKlw+mbi42WtD4ig1+VXRln765vxptAv+xT26Fd3cteqag==", + "requires": { + "jws": "^3.1.5", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -2003,6 +2025,25 @@ "verror": "1.10.0" } }, + "jwa": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", + "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.10", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", + "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", + "requires": { + "jwa": "^1.1.5", + "safe-buffer": "^5.0.1" + } + }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", @@ -2034,6 +2075,41 @@ "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, "lowercase-keys": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", diff --git a/BackEnd/package.json b/BackEnd/package.json index 8a6a4d27a..01be86da5 100644 --- a/BackEnd/package.json +++ b/BackEnd/package.json @@ -14,6 +14,7 @@ }, "dependencies": { "express": "^4.16.3", + "jsonwebtoken": "^8.3.0", "restify": "^7.2.1" } } diff --git a/BackEnd/server.js b/BackEnd/server.js index c22d36b51..921708d28 100644 --- a/BackEnd/server.js +++ b/BackEnd/server.js @@ -1,29 +1,16 @@ const restify = require('restify'); - server = restify.createServer(); - cursos = require('./api/controllers/cursos.controller') - +const server = restify.createServer(); +const cursos = require('./api/controllers/cursos.controller'); +var login = require('./api/controllers/login.controller'); server.name = 'Teste123' -function temNome(req, res, next) { - if (req.params.nome === 'Iago') { - next(); - } - else res.send('Inválido') -} -function resposta(req, res, next) { - res.send( - { mensagem: `Hello World XXX, ${req.params.nome}`}, - ); - next(); -} - -server.get('/mensagem/:nome', temNome, resposta); +/* server.get('/mensagem/:nome', temNome, resposta); */ -server.get('/teste/:destino', cursos.loging) - +server.get('/login/usuario/:usuario/senha/:senha', login.doLogin) +server.get('/cursos/listar', cursos.list) server.listen(3000, () => { - console.log("Servidor em pé", server.name + '----' + server.url); - + console.log("Servidor em pé", server.name + '----' + server.url); + }); \ No newline at end of file From 23ee3fc3163b8b5c023991af4f378940e466d45e Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 4 Oct 2018 15:22:52 -0300 Subject: [PATCH 09/26] preparando pra decodificar e estipular o tempo limite do token --- .gitignore | 2 +- BackEnd/api/controllers/cursos.controller.js | 18 ++++++++++-- BackEnd/api/controllers/login.controller.js | 30 ++++++++++++++++---- BackEnd/server.js | 5 ++-- 4 files changed, 44 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 021565fd1..1bb8424a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ BackEnd/node_modules/ -FrontEnd/node_modules/ +FrontEnd/node_modules/ \ No newline at end of file diff --git a/BackEnd/api/controllers/cursos.controller.js b/BackEnd/api/controllers/cursos.controller.js index 82157c732..044139a57 100644 --- a/BackEnd/api/controllers/cursos.controller.js +++ b/BackEnd/api/controllers/cursos.controller.js @@ -3,12 +3,26 @@ var fs = require('fs') path = require('path') function Cursos() { + + this.criarCurso = ((req, res, next) => { - this.list = function (req, res, next) { + }) + + this.listarCurso = ((req, res, next) => { let rawdata = fs.readFileSync(path.join(__dirname, 'mockUpData.json')); let student = JSON.parse(rawdata); console.log(student); res.send(student) - } + }) + + this.atualizarCurso = ((req, res, next) => { + + }) + + this.deletarCurso = ((req, res, next) => { + + }) + + } module.exports = new Cursos() \ No newline at end of file diff --git a/BackEnd/api/controllers/login.controller.js b/BackEnd/api/controllers/login.controller.js index fa1d4dd8a..fe95015b9 100644 --- a/BackEnd/api/controllers/login.controller.js +++ b/BackEnd/api/controllers/login.controller.js @@ -11,24 +11,42 @@ function Login() { name: req.params.usuario, password: req.params.senha } - jwt.sign({ user: user }, secret, (err, token) => { + console.log('indo para sign do jwt'); + + jwt.sign({ + user: user + }, secret, { + expiresIn: '1000s' + }, (err, token) => { const result = { id: secret, Token: token } - res.send(result) + console.log('dentro do sign'); + console.log('header',isValid); + const isValid = verifyLogin(req, res, next).isValid + if (isValid) { + res.send(result) + } else { + res.send('Nope') + } }) - } this.verifyLogin = ((req, res, next) => { + console.log('Dentro de verify'); + const header = req.header['authorization '] if (typeof header !== 'undefined') { - const splitHeader = header.split(' ') - return true + const splitHeader = { + result: header.split(' '), + isValid: true + } + return splitHeader + next() } else { - return false + return false } }) } diff --git a/BackEnd/server.js b/BackEnd/server.js index 921708d28..e85932db9 100644 --- a/BackEnd/server.js +++ b/BackEnd/server.js @@ -7,8 +7,9 @@ server.name = 'Teste123' /* server.get('/mensagem/:nome', temNome, resposta); */ -server.get('/login/usuario/:usuario/senha/:senha', login.doLogin) -server.get('/cursos/listar', cursos.list) +server.post('/login/usuario/:usuario/senha/:senha', login.doLogin) +server.post('/login/verificarToken', login.verifyLogin) +server.get('/cursos/listar', cursos.listarCurso) server.listen(3000, () => { console.log("Servidor em pé", server.name + '----' + server.url); From 1c98b10b424788b67b45cf512e73cbd0c83c2f21 Mon Sep 17 00:00:00 2001 From: Unknown Date: Thu, 4 Oct 2018 19:03:24 -0300 Subject: [PATCH 10/26] jwt em 50% --- BackEnd/api/controllers/login.controller.js | 39 +++++++++++---------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/BackEnd/api/controllers/login.controller.js b/BackEnd/api/controllers/login.controller.js index fe95015b9..8c67b50f3 100644 --- a/BackEnd/api/controllers/login.controller.js +++ b/BackEnd/api/controllers/login.controller.js @@ -22,32 +22,33 @@ function Login() { id: secret, Token: token } + + res.send(result) console.log('dentro do sign'); - console.log('header',isValid); - const isValid = verifyLogin(req, res, next).isValid - if (isValid) { - res.send(result) - } else { - res.send('Nope') - } + console.log('header', isValid); + /* const isValid = verifyLogin(req, res, next).isValid + if (isValid) { + + } else { + res.send('Nope') + } */ }) } this.verifyLogin = ((req, res, next) => { console.log('Dentro de verify'); - - const header = req.header['authorization '] - - if (typeof header !== 'undefined') { - const splitHeader = { - result: header.split(' '), - isValid: true - } - return splitHeader - next() + + const bearerheader = res.setHeader('Authorization', 'kjksajkjsa') + console.log(bearerheader); + res.send('oi') + /* if (typeof bearerheader !== 'undefined') { + const splitHeader = bearerheader.split(' ') + const headerToken = splitHeader[1] + req.token = headerToken } else { - return false - } + + res.send(false) + } */ }) } module.exports = new Login(); \ No newline at end of file From 44a06205e5e8e56ac3b7c59401a19e8682533a44 Mon Sep 17 00:00:00 2001 From: Unknown Date: Fri, 5 Oct 2018 01:32:00 -0300 Subject: [PATCH 11/26] =?UTF-8?q?modifica=C3=A7=C3=B5es=20no=20frontENd.?= =?UTF-8?q?=20tela=20de=20Login=20a=20ser=20criada?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FrontEnd/angular.json | 7 +- FrontEnd/package-lock.json | 85 +++++++------------ FrontEnd/package.json | 6 +- .../Components/Header/header.component.html | 67 +++------------ .../Components/Header/header.component.scss | 33 +++++++ .../src/Components/Header/header.component.ts | 13 ++- .../Components/cursos/cursos.component.html | 68 +++++++++++++++ .../Components/cursos/cursos.component.scss | 0 .../cursos/cursos.component.spec.ts | 25 ++++++ .../src/Components/cursos/cursos.component.ts | 36 ++++++++ FrontEnd/src/Modules/Nebular.module.ts | 67 +++++++++++++++ FrontEnd/src/Modules/primeNg.module.ts | 76 ----------------- .../Pages/DashBoard/dash-board.component.html | 81 ++---------------- .../Pages/DashBoard/dash-board.component.scss | 21 ++++- FrontEnd/src/Services/New Text Document.txt | 1 + FrontEnd/src/app/app.component.html | 2 +- FrontEnd/src/app/app.module.ts | 28 +++++- .../src/app/graficos/graficos.component.html | 3 + .../src/app/graficos/graficos.component.scss | 0 .../app/graficos/graficos.component.spec.ts | 25 ++++++ .../src/app/graficos/graficos.component.ts | 15 ++++ 21 files changed, 384 insertions(+), 275 deletions(-) create mode 100644 FrontEnd/src/Components/cursos/cursos.component.html create mode 100644 FrontEnd/src/Components/cursos/cursos.component.scss create mode 100644 FrontEnd/src/Components/cursos/cursos.component.spec.ts create mode 100644 FrontEnd/src/Components/cursos/cursos.component.ts create mode 100644 FrontEnd/src/Modules/Nebular.module.ts delete mode 100644 FrontEnd/src/Modules/primeNg.module.ts create mode 100644 FrontEnd/src/app/graficos/graficos.component.html create mode 100644 FrontEnd/src/app/graficos/graficos.component.scss create mode 100644 FrontEnd/src/app/graficos/graficos.component.spec.ts create mode 100644 FrontEnd/src/app/graficos/graficos.component.ts diff --git a/FrontEnd/angular.json b/FrontEnd/angular.json index 5ca66879c..74bc7a230 100644 --- a/FrontEnd/angular.json +++ b/FrontEnd/angular.json @@ -32,15 +32,10 @@ "node_modules/font-awesome/scss/font-awesome.scss", "node_modules/angular-bootstrap-md/scss/bootstrap/bootstrap.scss", "node_modules/angular-bootstrap-md/scss/mdb-free.scss", - "node_modules/primeicons/primeicons.css", - "node_modules/primeng/resources/themes/nova-light/theme.css", - "node_modules/primeng/resources/primeng.min.css", - "node_modules/quill/dist/quill.core.css", - "node_modules/quill/dist/quill.snow.css" + "node_modules/@nebular/theme/styles/prebuilt/cosmic.css" ], "scripts": [ "node_modules/chart.js/dist/Chart.js", - "node_modules/quill/dist/quill.js", "node_modules/hammerjs/hammer.min.js" ] }, diff --git a/FrontEnd/package-lock.json b/FrontEnd/package-lock.json index bb2d98965..d99e155c9 100644 --- a/FrontEnd/package-lock.json +++ b/FrontEnd/package-lock.json @@ -123,6 +123,14 @@ "tslib": "^1.9.0" } }, + "@angular/cdk": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-6.4.7.tgz", + "integrity": "sha512-18x0U66fLD5kGQWZ9n3nb75xQouXlWs7kUDaTd8HTrHpT1s2QIAqlLd1KxfrYiVhsEC2jPQaoiae7VnBlcvkBg==", + "requires": { + "tslib": "^1.7.1" + } + }, "@angular/cli": { "version": "6.0.8", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-6.0.8.tgz", @@ -538,6 +546,14 @@ } } }, + "@nebular/theme": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nebular/theme/-/theme-2.0.1.tgz", + "integrity": "sha512-dNbd4dL/wfP/1qsRLaerCqEgQMNsu7zWnxfUj8HyDqxMWQw/2zwDAR0wlZMe5YW7IfVPT3j5HucRmb1oW3VnJQ==", + "requires": { + "intersection-observer": "0.5.0" + } + }, "@ngtools/webpack": { "version": "6.0.8", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-6.0.8.tgz", @@ -2012,7 +2028,8 @@ "clone": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true }, "clone-deep": { "version": "2.0.2", @@ -2528,7 +2545,8 @@ "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true }, "deep-is": { "version": "0.1.3", @@ -3444,7 +3462,8 @@ "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true }, "extend-shallow": { "version": "3.0.2", @@ -3544,11 +3563,6 @@ "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", "dev": true }, - "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" - }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -5095,6 +5109,11 @@ "ipaddr.js": "^1.5.2" } }, + "intersection-observer": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.5.0.tgz", + "integrity": "sha512-8Zgt4ijlyvIrQVTA7MPb2W9+KhoetrAbxlh0RmTGxpx0+ZsAXvy7IsbNnZIrqZ6TddAdWeQj49x7Ph7Ir6KRkA==" + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -5111,6 +5130,11 @@ "dev": true, "optional": true }, + "ionicons": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-4.4.4.tgz", + "integrity": "sha512-HOcxF+pFHQQA4x7zy1eyuzTsaJzyyKKGYGsqvMMnB26rvp9sTKjA8JDZ4L4GRSNWliHC/oXbBoidglJa/0kiPA==" + }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -7381,11 +7405,6 @@ "no-case": "^2.2.0" } }, - "parchment": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", - "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" - }, "parse-asn1": { "version": "5.1.1", "resolved": "http://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", @@ -7710,16 +7729,6 @@ "utila": "~0.4" } }, - "primeicons": { - "version": "1.0.0-beta.10", - "resolved": "https://registry.npmjs.org/primeicons/-/primeicons-1.0.0-beta.10.tgz", - "integrity": "sha512-kSXJdNWNYC4PmJInzYQDCPHjw8j7obmoxWaUVxV+RRmEKcOCmZabnDwihj7SQz38IRe1VNlLJlY/5As13C9TuA==" - }, - "primeng": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-6.1.4.tgz", - "integrity": "sha512-z9jkgvaOveWtylpQXp1wOZtLNcnJuivdot6EpquPGV8oBjKMxFX+2k0NbTwDINldR384rurxUd8830Wk9/Z9Nw==" - }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -7983,36 +7992,6 @@ "integrity": "sha512-eTPo5t/4bgaMNZxyjWx6N2a6AuE0mq51KWvpc7nU/MAqixcI6v6KrGUKES0HaomdnolQBBXU/++X6/QQ9KL4tw==", "dev": true }, - "quill": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.6.tgz", - "integrity": "sha512-K0mvhimWZN6s+9OQ249CH2IEPZ9JmkFuCQeHAOQax3EZ2nDJ3wfGh59mnlQaZV2i7u8eFarx6wAtvQKgShojug==", - "requires": { - "clone": "^2.1.1", - "deep-equal": "^1.0.1", - "eventemitter3": "^2.0.3", - "extend": "^3.0.1", - "parchment": "^1.1.4", - "quill-delta": "^3.6.2" - }, - "dependencies": { - "eventemitter3": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", - "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=" - } - } - }, - "quill-delta": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", - "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", - "requires": { - "deep-equal": "^1.0.1", - "extend": "^3.0.2", - "fast-diff": "1.1.2" - } - }, "randomatic": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", diff --git a/FrontEnd/package.json b/FrontEnd/package.json index b19520ff7..728867337 100644 --- a/FrontEnd/package.json +++ b/FrontEnd/package.json @@ -13,6 +13,7 @@ "private": true, "dependencies": { "@angular/animations": "^6.1.9", + "@angular/cdk": "^6.4.7", "@angular/common": "^6.0.3", "@angular/compiler": "^6.0.3", "@angular/core": "^6.0.3", @@ -21,6 +22,7 @@ "@angular/platform-browser": "^6.0.3", "@angular/platform-browser-dynamic": "^6.0.3", "@angular/router": "^6.0.3", + "@nebular/theme": "^2.0.1", "@types/chart.js": "^2.7.36", "angular-bootstrap-md": "^6.2.4", "angular5-csv": "^0.2.10", @@ -28,9 +30,7 @@ "core-js": "^2.5.4", "font-awesome": "^4.7.0", "hammerjs": "^2.0.8", - "primeicons": "^1.0.0-beta.10", - "primeng": "^6.1.4", - "quill": "^1.3.6", + "ionicons": "^4.4.4", "rxjs": "^6.0.0", "zone.js": "^0.8.26" }, diff --git a/FrontEnd/src/Components/Header/header.component.html b/FrontEnd/src/Components/Header/header.component.html index 8dd1c8c73..42c7002e0 100644 --- a/FrontEnd/src/Components/Header/header.component.html +++ b/FrontEnd/src/Components/Header/header.component.html @@ -1,61 +1,20 @@ - - \ No newline at end of file diff --git a/FrontEnd/src/Components/Header/header.component.ts b/FrontEnd/src/Components/Header/header.component.ts index b6325ba57..f51d3b84d 100644 --- a/FrontEnd/src/Components/Header/header.component.ts +++ b/FrontEnd/src/Components/Header/header.component.ts @@ -1,5 +1,4 @@ import { Component, OnInit, ViewChild } from '@angular/core'; -import { ModalDirective } from 'angular-bootstrap-md'; import { NbMenuItem, NbSidebarService } from '@nebular/theme'; @Component({ selector: 'app-header', diff --git a/FrontEnd/src/Components/cursos/cursos.component.html b/FrontEnd/src/Components/cursos/cursos.component.html index 84157e238..279436a2f 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.html +++ b/FrontEnd/src/Components/cursos/cursos.component.html @@ -2,85 +2,17 @@
-

{{item.materia}}

- - +

{{item.materia}}

+ +
- -
Professor(a) {{item.professor}}
+ +

Professor(a) {{item.professor}}

Sala {{item.sala}}

de {{item.horaInicial}} as {{item.horaFinal}}

-
+
-
- - - - - - - - - - - - - - - - - - - - +
\ No newline at end of file diff --git a/FrontEnd/src/Components/cursos/cursos.component.ts b/FrontEnd/src/Components/cursos/cursos.component.ts index 5f8d3d561..b5ed7e760 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.ts +++ b/FrontEnd/src/Components/cursos/cursos.component.ts @@ -1,5 +1,4 @@ import { Component, OnInit, ViewChild } from '@angular/core'; -import { ModalDirective } from 'angular-bootstrap-md'; import { CursoModel } from './../../Models/cursoModel'; import { HttpClient } from '@angular/common/http'; @Component({ @@ -10,7 +9,6 @@ import { HttpClient } from '@angular/common/http'; export class CursosComponent implements OnInit { Dados: CursoModel; selectedData: CursoModel; - @ViewChild('detalhe') public modal: ModalDirective; constructor(public http: HttpClient) { this.getData(); } @@ -22,7 +20,7 @@ export class CursosComponent implements OnInit { getData() { - this.http.get('./assets/mockUpData.json').subscribe((res: CursoModel) => { + this.http.get('http://localhost:3000/cursos/listar').subscribe((res: CursoModel) => { console.log('hey!', res); this.Dados = res; }); @@ -31,6 +29,6 @@ export class CursosComponent implements OnInit { ShowDetails(details) { console.log(details); this.selectedData = details; - this.modal.show(); + } } diff --git a/FrontEnd/src/Components/graficos/graficos.component.html b/FrontEnd/src/Components/graficos/graficos.component.html index e7e4d315c..8fd81229d 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.html +++ b/FrontEnd/src/Components/graficos/graficos.component.html @@ -1,16 +1,12 @@ - - - - + + + + + + + + \ No newline at end of file diff --git a/FrontEnd/src/Components/graficos/graficos.component.scss b/FrontEnd/src/Components/graficos/graficos.component.scss index e69de29bb..0fcd2ca91 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.scss +++ b/FrontEnd/src/Components/graficos/graficos.component.scss @@ -0,0 +1,11 @@ +/* canvas { + max-height: 500px !important; + max-width: 500px !important; +} */ +/* .p-grid { + margin-right: 0; + height: 50vh; +} + +overflow-y: scroll; +margin-left: 0; */ \ No newline at end of file diff --git a/FrontEnd/src/Components/graficos/graficos.component.ts b/FrontEnd/src/Components/graficos/graficos.component.ts index 5f8644736..015053d64 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.ts +++ b/FrontEnd/src/Components/graficos/graficos.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { HttpClient } from '@angular/common/http'; - +import Chart from 'chart.js'; @Component({ selector: 'app-graficos', templateUrl: './graficos.component.html', @@ -8,31 +8,55 @@ import { HttpClient } from '@angular/common/http'; }) export class GraficosComponent implements OnInit { - chartObj = { - type: 'doughnut', - labels: null as Array, - data: null as Array, - color: null as Array, - option: {} + graficoObj: any; + showChart = false; + public chartOptions: any = { + responsive: false }; + constructor(public http: HttpClient) { } ngOnInit() { - + this.carga(); } - carga() { this.http.get('http://localhost:3000/cursos/getgrafico').subscribe((res) => { - console.log('RISE', res); + console.log('RIhhjhjhSE', Object.keys(res[0])); + /* this.chartObj.dataR = Object.values(res[0]); */ + /* this.chartObj.labels = Object.keys(res[0]); */ + this.montarGrafico(res[0]); + + }); + } -this.chartObj.data = Object.values(res); -this.chartObj.labels = Object.keys(res); -this.chartObj.option = { - responsive: true -} - }); + montarGrafico(event) { + this.graficoObj = { + labels: Object.keys(event), + datasets: [ + { + data: Object.values(event), + backgroundColor: [ + '#FF6384', + '#36A2EB', + '#FFCE56', + '#36A2EB', + '#FFCE56' + ], + hoverBackgroundColor: [ + '#FF6384', + '#36A2EB', + '#FFCE56', + '#36A2EB', + '#FFCE56' + ] + } + + + + } } + } diff --git a/FrontEnd/src/Modules/primeNg.module.ts b/FrontEnd/src/Modules/primeNg.module.ts new file mode 100644 index 000000000..e7577e9a6 --- /dev/null +++ b/FrontEnd/src/Modules/primeNg.module.ts @@ -0,0 +1,57 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { PanelModule } from 'primeng/panel'; +import { ButtonModule } from 'primeng/button'; +import { SplitButtonModule } from 'primeng/splitbutton'; +import { CardModule } from 'primeng/card'; +import { ToolbarModule } from 'primeng/toolbar'; +import { ChartModule } from 'primeng/chart'; +import { SlideMenuModule } from 'primeng/slidemenu'; +import { PanelMenuModule } from 'primeng/panelmenu'; +import { MenuModule } from 'primeng/menu'; +import { SidebarModule } from 'primeng/sidebar'; +import { DialogModule } from 'primeng/dialog'; +import { ListboxModule } from 'primeng/listbox'; +import { InputTextModule } from 'primeng/inputtext'; +import { InputTextareaModule } from 'primeng/inputtextarea'; +@NgModule({ + imports: [ + PanelModule, + ButtonModule, + CardModule, + ToolbarModule, + ChartModule, + SplitButtonModule, + SlideMenuModule, + PanelMenuModule, + MenuModule, + SidebarModule, + DialogModule, + ListboxModule, + InputTextModule, + InputTextareaModule, + ], + declarations: [ + + ], + providers: [ + + ], + exports: [ + PanelModule, + ButtonModule, + CardModule, + ToolbarModule, + ChartModule, + SplitButtonModule, + SlideMenuModule, + PanelMenuModule, + MenuModule, + SidebarModule, + DialogModule, + ListboxModule, + InputTextModule, + InputTextareaModule + ] +}) +export class PrimeNgModule { } diff --git a/FrontEnd/src/Pages/DashBoard/dash-board.component.html b/FrontEnd/src/Pages/DashBoard/dash-board.component.html index b090f99f2..3002b3b5d 100644 --- a/FrontEnd/src/Pages/DashBoard/dash-board.component.html +++ b/FrontEnd/src/Pages/DashBoard/dash-board.component.html @@ -6,13 +6,13 @@
-
-
- -
-
+
+
+ +
+
-
-
+
+
- + \ No newline at end of file diff --git a/FrontEnd/src/Pages/DashBoard/dash-board.component.ts b/FrontEnd/src/Pages/DashBoard/dash-board.component.ts index c7398287e..8a2279f28 100644 --- a/FrontEnd/src/Pages/DashBoard/dash-board.component.ts +++ b/FrontEnd/src/Pages/DashBoard/dash-board.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit, ViewChild } from '@angular/core'; import { HttpClient } from '@angular/common/http'; -import { ModalDirective } from 'angular-bootstrap-md'; import { CursoModel } from './../../Models/cursoModel'; +import Chart from 'chart.js'; @Component({ selector: 'app-dash-board', templateUrl: './dash-board.component.html', @@ -10,26 +10,13 @@ import { CursoModel } from './../../Models/cursoModel'; export class DashBoardComponent implements OnInit { Dados: CursoModel; selectedData: CursoModel; - @ViewChild('detalhe') public modal: ModalDirective; + teste: any; constructor(public http: HttpClient) { - this.getData(); - } - ngOnInit() { } - /* /Users/ons/Documents/teste117/DFStack/FrontEnd/DashBoardCelso/src/assets/mockUpData.json */ - - getData() { - this.http.get('./assets/mockUpData.json').subscribe((res: CursoModel) => { - console.log('hey!', res); - this.Dados = res; - }); - } + ngOnInit() { - ShowDetails(details) { - console.log(details); - this.selectedData = details; - this.modal.show(); } + /* /Users/ons/Documents/teste117/DFStack/FrontEnd/DashBoardCelso/src/assets/mockUpData.json */ } diff --git a/FrontEnd/src/app/app.component.html b/FrontEnd/src/app/app.component.html index 0dee05991..b80d08c70 100644 --- a/FrontEnd/src/app/app.component.html +++ b/FrontEnd/src/app/app.component.html @@ -1,6 +1,20 @@ + + \ No newline at end of file + + + + + + + + + + + --> + + \ No newline at end of file diff --git a/FrontEnd/src/app/app.component.spec.ts b/FrontEnd/src/app/app.component.spec.ts deleted file mode 100644 index 45b7edb31..000000000 --- a/FrontEnd/src/app/app.component.spec.ts +++ /dev/null @@ -1,27 +0,0 @@ -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 DashBoardCelso!'); - })); -}); diff --git a/FrontEnd/src/app/app.component.ts b/FrontEnd/src/app/app.component.ts index 7d943bc90..512a44723 100644 --- a/FrontEnd/src/app/app.component.ts +++ b/FrontEnd/src/app/app.component.ts @@ -1,5 +1,5 @@ import { Component } from '@angular/core'; - +import { HttpClient } from '@angular/common/http'; @Component({ selector: 'app-root', templateUrl: './app.component.html', @@ -7,4 +7,47 @@ import { Component } from '@angular/core'; }) export class AppComponent { title = 'app'; -} + data: any; + + constructor(public http: HttpClient) { + this.carga(); + } + + carga() { + this.http.get('http://localhost:3000/cursos/getgrafico').subscribe((res) => { + console.log('RIhhjhjhSE', Object.keys(res[0])); + /* this.chartObj.dataR = Object.values(res[0]); */ + /* this.chartObj.labels = Object.keys(res[0]); */ + this.montarGrafico(res[0]); + + }); + } + + + + montarGrafico(event) { + this.data = { + labels: Object.keys(event), + datasets: [ + { + data: Object.values(event), + backgroundColor: [ + '#FF6384', + '#36A2EB', + '#FFCE56', + '#36A2EB', + '#FFCE56' + ], + hoverBackgroundColor: [ + '#FF6384', + '#36A2EB', + '#FFCE56', + '#36A2EB', + '#FFCE56' + ] + } + + + + } + } diff --git a/FrontEnd/src/app/app.module.ts b/FrontEnd/src/app/app.module.ts index e301adfe4..db6834d68 100644 --- a/FrontEnd/src/app/app.module.ts +++ b/FrontEnd/src/app/app.module.ts @@ -1,11 +1,13 @@ - import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; - -import { HttpClientModule } from '@angular/common/http'; import { AppComponent } from './app.component'; +import { ChartModule } from 'primeng/chart'; +import { HttpClientModule } from '@angular/common/http'; +import { NbThemeModule, NbSidebarModule, NbSidebarService, NbMenuModule, NbLayoutModule } from '@nebular/theme'; +import { NebularModule } from '../Modules/Nebular.module'; +import { PrimeNgModule } from '../Modules/primeNg.module'; + import { LoginComponent } from '../Pages/login/login.component'; import { DashBoardComponent } from '../Pages/DashBoard/dash-board.component'; import { RoutingModule } from './app.routing'; @@ -15,25 +17,13 @@ import { CursosComponent } from './../Components/cursos/cursos.component'; import { GraficosComponent } from '../Components/graficos/graficos.component'; -import { MDBBootstrapModule } from 'angular-bootstrap-md'; - -] -import { NbThemeModule, NbSidebarModule, NbSidebarService, NbMenuModule, NbLayoutModule } from '@nebular/theme'; -import { NebularModule } from '../Modules/Nebular.module'; - - - - - - - - - @NgModule({ declarations: [ AppComponent, + // Paginas DashBoardComponent, LoginComponent, + // componentes HeaderComponent, CursosComponent, GraficosComponent @@ -41,12 +31,12 @@ import { NebularModule } from '../Modules/Nebular.module'; imports: [ BrowserModule, RoutingModule, - BrowserAnimationsModule, HttpClientModule, NebularModule, + PrimeNgModule, + ChartModule, NbSidebarModule.forRoot(), NbThemeModule.forRoot({ name: 'cosmic' }), - MDBBootstrapModule.forRoot() ], providers: [ NbSidebarService, diff --git a/FrontEnd/src/app/app.routing.ts b/FrontEnd/src/app/app.routing.ts index a4ffc17bd..77a08b7e1 100644 --- a/FrontEnd/src/app/app.routing.ts +++ b/FrontEnd/src/app/app.routing.ts @@ -1,26 +1,20 @@ - import { NgModule } from '@angular/core'; -import { RouterModule, Router, Routes, CanActivate } from '@angular/router'; +import { Routes, RouterModule } from '@angular/router'; + import { LoginComponent } from '../Pages/login/login.component'; import { DashBoardComponent } from '../Pages/DashBoard/dash-board.component'; -const AppRoutes: Routes = [ - { path: 'Login', component: LoginComponent }, - { path: 'Home', component: DashBoardComponent }, - { path: '', redirectTo: 'Home', pathMatch: 'full' }, +const routes: Routes = [ + { path: 'Login', component: LoginComponent }, + { path: 'Home', component: DashBoardComponent }, + { path: '', redirectTo: 'Home', pathMatch: 'full' }, ]; @NgModule({ - imports: [ - RouterModule.forRoot( - AppRoutes, { enableTracing: false } - ) - ], - exports: [ - RouterModule - ] + imports: [RouterModule.forRoot( + routes, { enableTracing: false } + )], + exports: [RouterModule] }) - - export class RoutingModule { } diff --git a/FrontEnd/src/index.html b/FrontEnd/src/index.html index 5a85e65d8..4c50d202b 100644 --- a/FrontEnd/src/index.html +++ b/FrontEnd/src/index.html @@ -2,7 +2,7 @@ - DashBoardCelso + CelsoLisboa From 79bb55bc24f9854069c294b66f58eef786bf55b0 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 6 Oct 2018 13:54:50 -0300 Subject: [PATCH 14/26] jwt em 50% --- BackEnd/api/controllers/cursos.controller.js | 4 + BackEnd/api/controllers/mockUpData.json | 2 +- FrontEnd/angular.json | 2 +- FrontEnd/package-lock.json | 101 ++++++++++++++++-- FrontEnd/package.json | 1 + .../Components/Header/header.component.html | 9 +- .../src/Components/Header/header.component.ts | 7 +- .../Components/cursos/cursos.component.html | 4 +- .../graficos/graficos.component.html | 40 +++---- .../Components/graficos/graficos.component.ts | 9 +- FrontEnd/src/Models/loginModel.ts | 5 + FrontEnd/src/Models/userModel.ts | 6 ++ FrontEnd/src/Pages/login/login.component.html | 44 +++++--- FrontEnd/src/Pages/login/login.component.scss | 46 ++++++++ FrontEnd/src/Pages/login/login.component.ts | 28 ++++- .../src/Services/LoginSrv/loginSrv.service.ts | 9 +- FrontEnd/src/app/app.component.html | 21 +--- FrontEnd/src/app/app.component.ts | 42 +------- FrontEnd/src/app/app.module.ts | 15 +-- FrontEnd/src/app/app.routing.ts | 5 +- 20 files changed, 262 insertions(+), 138 deletions(-) create mode 100644 FrontEnd/src/Models/loginModel.ts diff --git a/BackEnd/api/controllers/cursos.controller.js b/BackEnd/api/controllers/cursos.controller.js index 69b26c3ce..74476d979 100644 --- a/BackEnd/api/controllers/cursos.controller.js +++ b/BackEnd/api/controllers/cursos.controller.js @@ -28,6 +28,10 @@ function Cursos() { let rawdata = fs.readFileSync(path.join(__dirname, 'grafico.json')); const grafico = JSON.parse(rawdata);; res.send(grafico) + + + + }) } diff --git a/BackEnd/api/controllers/mockUpData.json b/BackEnd/api/controllers/mockUpData.json index 422bfb514..d7d6116dd 100644 --- a/BackEnd/api/controllers/mockUpData.json +++ b/BackEnd/api/controllers/mockUpData.json @@ -65,7 +65,7 @@ { "sala": 271, "professor": "Winnie Bould", - "materia": "Portugues", + "materia": "Artes", "horaInicial": "19:00h", "horaFinal": "22:00h" } diff --git a/FrontEnd/angular.json b/FrontEnd/angular.json index 8a1c7e875..54fe9b59d 100644 --- a/FrontEnd/angular.json +++ b/FrontEnd/angular.json @@ -155,4 +155,4 @@ } }, "defaultProject": "celsoLisboa" -} \ No newline at end of file +} diff --git a/FrontEnd/package-lock.json b/FrontEnd/package-lock.json index f7bfb7489..f72c6da19 100644 --- a/FrontEnd/package-lock.json +++ b/FrontEnd/package-lock.json @@ -1162,7 +1162,7 @@ }, "async": { "version": "1.5.2", - "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, @@ -1713,6 +1713,11 @@ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", "dev": true }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" + }, "buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", @@ -2051,7 +2056,7 @@ }, "codelyzer": { "version": "4.2.1", - "resolved": "http://registry.npmjs.org/codelyzer/-/codelyzer-4.2.1.tgz", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.2.1.tgz", "integrity": "sha512-CKwfgpfkqi9dyzy4s6ELaxJ54QgJ6A8iTSsM4bzHbLuTpbKncvNc3DUlCvpnkHBhK47gEf4qFsWoYqLrJPhy6g==", "dev": true, "requires": { @@ -2862,6 +2867,14 @@ "safer-buffer": "^2.1.0" } }, + "ecdsa-sig-formatter": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", + "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -4383,7 +4396,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, @@ -5820,6 +5833,29 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, + "jsonwebtoken": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.3.0.tgz", + "integrity": "sha512-oge/hvlmeJCH+iIz1DwcO7vKPkNGJHhgkspk8OH3VKlw+mbi42WtD4ig1+VXRln765vxptAv+xT26Fd3cteqag==", + "requires": { + "jws": "^3.1.5", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -5885,6 +5921,25 @@ } } }, + "jwa": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", + "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.10", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", + "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", + "requires": { + "jwa": "^1.1.5", + "safe-buffer": "^5.0.1" + } + }, "karma": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", @@ -6263,6 +6318,36 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" + }, "lodash.mergewith": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", @@ -6270,6 +6355,11 @@ "dev": true, "optional": true }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" + }, "lodash.tail": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", @@ -8443,8 +8533,7 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "safe-regex": { "version": "1.1.0", @@ -9314,7 +9403,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { diff --git a/FrontEnd/package.json b/FrontEnd/package.json index 1432d08b9..33a457ee0 100644 --- a/FrontEnd/package.json +++ b/FrontEnd/package.json @@ -27,6 +27,7 @@ "font-awesome": "^4.7.0", "hammerjs": "^2.0.8", "ionicons": "^4.4.4", + "jsonwebtoken": "^8.3.0", "nebular-icons": "^1.1.0", "primeicons": "^1.0.0-beta.10", "primeng": "^6.1.4", diff --git a/FrontEnd/src/Components/Header/header.component.html b/FrontEnd/src/Components/Header/header.component.html index bbde4e7a4..f2557dbb1 100644 --- a/FrontEnd/src/Components/Header/header.component.html +++ b/FrontEnd/src/Components/Header/header.component.html @@ -1,14 +1,7 @@ -

Celso Lisboa

-
\ No newline at end of file +
diff --git a/FrontEnd/src/Components/Header/header.component.ts b/FrontEnd/src/Components/Header/header.component.ts index f51d3b84d..1649eb360 100644 --- a/FrontEnd/src/Components/Header/header.component.ts +++ b/FrontEnd/src/Components/Header/header.component.ts @@ -1,5 +1,6 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; -import { NbMenuItem, NbSidebarService } from '@nebular/theme'; +import { Component, OnInit } from '@angular/core'; +import { NbSidebarService } from '@nebular/theme'; + @Component({ selector: 'app-header', templateUrl: './header.component.html', @@ -7,13 +8,11 @@ import { NbMenuItem, NbSidebarService } from '@nebular/theme'; }) export class HeaderComponent implements OnInit { visibleSidebar1: boolean; - @ViewChild('detalhe') public modal: ModalDirective; constructor(public sidebarSrv: NbSidebarService) { } ngOnInit() { } - toggleSidebar(): boolean { this.sidebarSrv.toggle(true, 'menu-sidebar'); return false; diff --git a/FrontEnd/src/Components/cursos/cursos.component.html b/FrontEnd/src/Components/cursos/cursos.component.html index 279436a2f..2ef617d78 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.html +++ b/FrontEnd/src/Components/cursos/cursos.component.html @@ -3,8 +3,6 @@

{{item.materia}}

-
@@ -15,4 +13,4 @@

Professor(a) {{item.professor}}

- \ No newline at end of file + diff --git a/FrontEnd/src/Components/graficos/graficos.component.html b/FrontEnd/src/Components/graficos/graficos.component.html index 8fd81229d..298f7df72 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.html +++ b/FrontEnd/src/Components/graficos/graficos.component.html @@ -1,29 +1,19 @@ - - - + - \ No newline at end of file + + + + + + + Detalhe do Grafico + + + + + + + diff --git a/FrontEnd/src/Components/graficos/graficos.component.ts b/FrontEnd/src/Components/graficos/graficos.component.ts index 015053d64..14c4bb3f1 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.ts +++ b/FrontEnd/src/Components/graficos/graficos.component.ts @@ -9,7 +9,9 @@ import Chart from 'chart.js'; export class GraficosComponent implements OnInit { graficoObj: any; + graficoData:any showChart = false; + display: boolean; public chartOptions: any = { responsive: false }; @@ -53,10 +55,13 @@ export class GraficosComponent implements OnInit { '#FFCE56' ] } + ] + } + } - } + showDetails() { + this.display = true; } - } diff --git a/FrontEnd/src/Models/loginModel.ts b/FrontEnd/src/Models/loginModel.ts new file mode 100644 index 000000000..426dc5cb1 --- /dev/null +++ b/FrontEnd/src/Models/loginModel.ts @@ -0,0 +1,5 @@ +export interface LoginModel { + + username: string; + password:string; +} diff --git a/FrontEnd/src/Models/userModel.ts b/FrontEnd/src/Models/userModel.ts index fe8bb0c2d..8b88ed0ce 100644 --- a/FrontEnd/src/Models/userModel.ts +++ b/FrontEnd/src/Models/userModel.ts @@ -1,2 +1,8 @@ + + export interface UserModel { + id: string; + token: string; + accessAreas: Object; + } diff --git a/FrontEnd/src/Pages/login/login.component.html b/FrontEnd/src/Pages/login/login.component.html index c28693e33..d7cec4f47 100644 --- a/FrontEnd/src/Pages/login/login.component.html +++ b/FrontEnd/src/Pages/login/login.component.html @@ -1,14 +1,32 @@ -

- login works!asasasasasa - sas - a - sa - sasasasaa - s - a - s - asa - a - s + + +

+

Bem vindo à faculdade Celso Lisboa

+
+ + -

\ No newline at end of file +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ diff --git a/FrontEnd/src/Pages/login/login.component.scss b/FrontEnd/src/Pages/login/login.component.scss index e69de29bb..28eb2e8a4 100644 --- a/FrontEnd/src/Pages/login/login.component.scss +++ b/FrontEnd/src/Pages/login/login.component.scss @@ -0,0 +1,46 @@ +.centerDiv { + display: flex; + justify-content: center; + align-items: center; + height: 100%; + nb-card { + width: 100%; + } +} + +.boldPlaceholder { + color: white; + font-weight: bold; +} + +.headerLogin { + display: flex; + justify-content: center; + button { + position: relative; + bottom: 7vh; + } +} + +.footerLogin{ + display: flex; + justify-content: center; +} + +.ColorLoginSign { + position: relative; + bottom: 7vh; + background-image: linear-gradient(to right, #00b3ff, #08f); + box-shadow: 0 3px 0 0 #0087db, 0 2px 8px 0 #009dff, 0 4px 10px 0 rgba(33, 7, 77, 0.5); + text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + border: none; + line-height: calc((1rem * 1.25) + 4px); + color: #fff; + font-weight: 500; + font-family: "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + cursor: default; + padding: .75rem 1.5rem; + font-size: 1rem; + line-height: 1.25; + border-radius: .5rem; +} diff --git a/FrontEnd/src/Pages/login/login.component.ts b/FrontEnd/src/Pages/login/login.component.ts index 12de138ad..173470f39 100644 --- a/FrontEnd/src/Pages/login/login.component.ts +++ b/FrontEnd/src/Pages/login/login.component.ts @@ -1,4 +1,7 @@ +import { HttpClient } from '@angular/common/http'; +import { LoginModel } from './../../Models/loginModel'; import { Component, OnInit } from '@angular/core'; +import jwt from 'jsonwebtoken'; @Component({ selector: 'app-login', @@ -6,10 +9,31 @@ import { Component, OnInit } from '@angular/core'; styleUrls: ['./login.component.scss'] }) export class LoginComponent implements OnInit { - - constructor() { } + LoginForm: LoginModel = { + username: null, + password: null + }; + constructor(public http: HttpClient) { } ngOnInit() { } + + doLogin() { + const secretKey = Math.random().toString(36).substr(2, 9); + let result = null; + jwt.sign({ + user: this.LoginForm + }, secretKey, + { + expiresIn: '1000s' + }, (err, token) => { + result = { + id: secretKey, + Token: token + }; + console.log('funcionaaa', result); + + }); + } } diff --git a/FrontEnd/src/Services/LoginSrv/loginSrv.service.ts b/FrontEnd/src/Services/LoginSrv/loginSrv.service.ts index 0585c52f0..f92fb34ca 100644 --- a/FrontEnd/src/Services/LoginSrv/loginSrv.service.ts +++ b/FrontEnd/src/Services/LoginSrv/loginSrv.service.ts @@ -1,9 +1,14 @@ import { Injectable } from '@angular/core'; - +import { HttpClient } from '@angular/common/http'; +import { Router } from '@angular/router'; @Injectable({ providedIn: 'root' }) export class LoginSrvService { - constructor() { } + constructor(public http: HttpClient, public route: Router ) { } + + login(token) { +/* this.http.post('') */ + } } diff --git a/FrontEnd/src/app/app.component.html b/FrontEnd/src/app/app.component.html index b80d08c70..0680b43f9 100644 --- a/FrontEnd/src/app/app.component.html +++ b/FrontEnd/src/app/app.component.html @@ -1,20 +1 @@ - - - - \ No newline at end of file + diff --git a/FrontEnd/src/app/app.component.ts b/FrontEnd/src/app/app.component.ts index 512a44723..c91cb2066 100644 --- a/FrontEnd/src/app/app.component.ts +++ b/FrontEnd/src/app/app.component.ts @@ -9,45 +9,5 @@ export class AppComponent { title = 'app'; data: any; - constructor(public http: HttpClient) { - this.carga(); - } - - carga() { - this.http.get('http://localhost:3000/cursos/getgrafico').subscribe((res) => { - console.log('RIhhjhjhSE', Object.keys(res[0])); - /* this.chartObj.dataR = Object.values(res[0]); */ - /* this.chartObj.labels = Object.keys(res[0]); */ - this.montarGrafico(res[0]); - - }); - } - - - - montarGrafico(event) { - this.data = { - labels: Object.keys(event), - datasets: [ - { - data: Object.values(event), - backgroundColor: [ - '#FF6384', - '#36A2EB', - '#FFCE56', - '#36A2EB', - '#FFCE56' - ], - hoverBackgroundColor: [ - '#FF6384', - '#36A2EB', - '#FFCE56', - '#36A2EB', - '#FFCE56' - ] - } - - - - } + constructor(public http: HttpClient) {} } diff --git a/FrontEnd/src/app/app.module.ts b/FrontEnd/src/app/app.module.ts index db6834d68..d83a2a83d 100644 --- a/FrontEnd/src/app/app.module.ts +++ b/FrontEnd/src/app/app.module.ts @@ -1,21 +1,22 @@ import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; - +import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; +import { FormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; -import { ChartModule } from 'primeng/chart'; + import { HttpClientModule } from '@angular/common/http'; -import { NbThemeModule, NbSidebarModule, NbSidebarService, NbMenuModule, NbLayoutModule } from '@nebular/theme'; +import { NbThemeModule, NbSidebarModule, NbSidebarService, NbMenuModule, NbToastrModule, NbLayoutModule } from '@nebular/theme'; import { NebularModule } from '../Modules/Nebular.module'; import { PrimeNgModule } from '../Modules/primeNg.module'; + import { LoginComponent } from '../Pages/login/login.component'; import { DashBoardComponent } from '../Pages/DashBoard/dash-board.component'; import { RoutingModule } from './app.routing'; -import { HeaderComponent } from '../Components/header/header.component'; import { CursosComponent } from './../Components/cursos/cursos.component'; import { GraficosComponent } from '../Components/graficos/graficos.component'; - +import { HeaderComponent } from '../Components/header/header.component'; @NgModule({ declarations: [ @@ -32,9 +33,11 @@ import { GraficosComponent } from '../Components/graficos/graficos.component'; BrowserModule, RoutingModule, HttpClientModule, + BrowserAnimationsModule, + FormsModule, NebularModule, PrimeNgModule, - ChartModule, + NbToastrModule.forRoot(), NbSidebarModule.forRoot(), NbThemeModule.forRoot({ name: 'cosmic' }), ], diff --git a/FrontEnd/src/app/app.routing.ts b/FrontEnd/src/app/app.routing.ts index 77a08b7e1..fb7ebf360 100644 --- a/FrontEnd/src/app/app.routing.ts +++ b/FrontEnd/src/app/app.routing.ts @@ -3,14 +3,11 @@ import { Routes, RouterModule } from '@angular/router'; import { LoginComponent } from '../Pages/login/login.component'; import { DashBoardComponent } from '../Pages/DashBoard/dash-board.component'; - - const routes: Routes = [ { path: 'Login', component: LoginComponent }, { path: 'Home', component: DashBoardComponent }, - { path: '', redirectTo: 'Home', pathMatch: 'full' }, + { path: '', redirectTo: 'Login', pathMatch: 'full' }, ]; - @NgModule({ imports: [RouterModule.forRoot( routes, { enableTracing: false } From 13cf5739867cf2f02613b3b42f96ab7efcf05ff1 Mon Sep 17 00:00:00 2001 From: Unknown Date: Sat, 6 Oct 2018 20:00:50 -0300 Subject: [PATCH 15/26] front End em 30% --- BackEnd/api/controllers/login.controller.js | 76 +++++++++------ BackEnd/server.js | 4 +- FrontEnd/package-lock.json | 93 +------------------ FrontEnd/package.json | 1 - FrontEnd/src/Pages/login/login.component.ts | 20 +--- .../src/Services/LoginSrv/loginSrv.service.ts | 2 +- 6 files changed, 56 insertions(+), 140 deletions(-) diff --git a/BackEnd/api/controllers/login.controller.js b/BackEnd/api/controllers/login.controller.js index 8c67b50f3..ba966b09e 100644 --- a/BackEnd/api/controllers/login.controller.js +++ b/BackEnd/api/controllers/login.controller.js @@ -2,53 +2,71 @@ const jwt = require('jsonwebtoken') function Login() { + this.teste = ((req, res, next) => { + console.log('Olaaaaaa') + var decoded = jwt.decode(req.params.token); + res.send(decoded) + }) this.doLogin = function (req, res, next) { console.log('funciona?'); + let permissions = '' + timeToExpire = '2 days' const secret = Math.random().toString(36).substr(2, 9) const user = { id: Math.random().toString(36).substr(2, 9), name: req.params.usuario, - password: req.params.senha + password: req.params.senha, + LoggedIn: new Date() } console.log('indo para sign do jwt'); - + if (req.params.usuario === 'CelsoLisboa') { + permissions = 'Adm' + } else { + permissions = 'Funcionario' + } jwt.sign({ - user: user + user: user, + permissions: permissions }, secret, { - expiresIn: '1000s' - }, (err, token) => { - const result = { - id: secret, - Token: token - } - - res.send(result) - console.log('dentro do sign'); - console.log('header', isValid); - /* const isValid = verifyLogin(req, res, next).isValid - if (isValid) { - - } else { - res.send('Nope') - } */ - }) + expiresIn: timeToExpire + }, (err, token) => { + const result = { + id: secret, + Token: token, + expiresIn: timeToExpire, + } + + res.send(result) + console.log('dentro do sign'); + console.log('header', isValid); + /* const isValid = verifyLogin(req, res, next).isValid + if (isValid) { + + } else { + res.send('Nope') + } */ + }) } + + this.verifyLogin = ((req, res, next) => { console.log('Dentro de verify'); - + const bearerheader = res.setHeader('Authorization', 'kjksajkjsa') console.log(bearerheader); res.send('oi') - /* if (typeof bearerheader !== 'undefined') { - const splitHeader = bearerheader.split(' ') - const headerToken = splitHeader[1] - req.token = headerToken - } else { - - res.send(false) - } */ + /* if (typeof bearerheader !== 'undefined') { + const splitHeader = bearerheader.split(' ') + const headerToken = splitHeader[1] + req.token = headerToken + } else { + + res.send(false) + } */ }) + + } module.exports = new Login(); \ No newline at end of file diff --git a/BackEnd/server.js b/BackEnd/server.js index fba98eea8..c44ae173c 100644 --- a/BackEnd/server.js +++ b/BackEnd/server.js @@ -9,10 +9,12 @@ server.name = 'Celso Lisboa' server.post('/login/usuario/:usuario/senha/:senha', login.doLogin) server.post('/login/verificarToken', login.verifyLogin) +server.post('/login/getToken/:token', login.teste) +/* server.post('/login/getTokenDecoded/:token/', login.teste) */ server.get('/cursos/listar', cursos.listarCurso) server.get('/cursos/getgrafico', cursos.grafico) server.listen(3000, () => { console.log("Servidor em pé", server.name + '----' + server.url); -}); \ No newline at end of file +}); diff --git a/FrontEnd/package-lock.json b/FrontEnd/package-lock.json index f72c6da19..cef1de6f0 100644 --- a/FrontEnd/package-lock.json +++ b/FrontEnd/package-lock.json @@ -1713,11 +1713,6 @@ "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", "dev": true }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, "buffer-fill": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", @@ -2867,14 +2862,6 @@ "safer-buffer": "^2.1.0" } }, - "ecdsa-sig-formatter": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.10.tgz", - "integrity": "sha1-HFlQAPBKiJffuFAAiSoPTDOvhsM=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -5833,29 +5820,6 @@ "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", "dev": true }, - "jsonwebtoken": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.3.0.tgz", - "integrity": "sha512-oge/hvlmeJCH+iIz1DwcO7vKPkNGJHhgkspk8OH3VKlw+mbi42WtD4ig1+VXRln765vxptAv+xT26Fd3cteqag==", - "requires": { - "jws": "^3.1.5", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -5921,25 +5885,6 @@ } } }, - "jwa": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.6.tgz", - "integrity": "sha512-tBO/cf++BUsJkYql/kBbJroKOgHWEigTKBAjjBEmrMGYd1QMBC74Hr4Wo2zCZw6ZrVhlJPvoMrkcOnlWR/DJfw==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.10", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.5.tgz", - "integrity": "sha512-GsCSexFADNQUr8T5HPJvayTjvPIfoyJPtLQBwn5a4WZQchcrPMPMAWcC1AzJVRDKyD6ZPROPAxgv6rfHViO4uQ==", - "requires": { - "jwa": "^1.1.5", - "safe-buffer": "^5.0.1" - } - }, "karma": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", @@ -6318,36 +6263,6 @@ "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", "dev": true }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, "lodash.mergewith": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", @@ -6355,11 +6270,6 @@ "dev": true, "optional": true }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, "lodash.tail": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lodash.tail/-/lodash.tail-4.1.1.tgz", @@ -8533,7 +8443,8 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "safe-regex": { "version": "1.1.0", diff --git a/FrontEnd/package.json b/FrontEnd/package.json index 33a457ee0..1432d08b9 100644 --- a/FrontEnd/package.json +++ b/FrontEnd/package.json @@ -27,7 +27,6 @@ "font-awesome": "^4.7.0", "hammerjs": "^2.0.8", "ionicons": "^4.4.4", - "jsonwebtoken": "^8.3.0", "nebular-icons": "^1.1.0", "primeicons": "^1.0.0-beta.10", "primeng": "^6.1.4", diff --git a/FrontEnd/src/Pages/login/login.component.ts b/FrontEnd/src/Pages/login/login.component.ts index 173470f39..3722df3db 100644 --- a/FrontEnd/src/Pages/login/login.component.ts +++ b/FrontEnd/src/Pages/login/login.component.ts @@ -1,8 +1,8 @@ import { HttpClient } from '@angular/common/http'; import { LoginModel } from './../../Models/loginModel'; import { Component, OnInit } from '@angular/core'; -import jwt from 'jsonwebtoken'; - +/* import jwt from 'jsonwebtoken'; + */ @Component({ selector: 'app-login', templateUrl: './login.component.html', @@ -20,20 +20,6 @@ export class LoginComponent implements OnInit { doLogin() { - const secretKey = Math.random().toString(36).substr(2, 9); - let result = null; - jwt.sign({ - user: this.LoginForm - }, secretKey, - { - expiresIn: '1000s' - }, (err, token) => { - result = { - id: secretKey, - Token: token - }; - console.log('funcionaaa', result); - }); - } + } } diff --git a/FrontEnd/src/Services/LoginSrv/loginSrv.service.ts b/FrontEnd/src/Services/LoginSrv/loginSrv.service.ts index f92fb34ca..496bad9bd 100644 --- a/FrontEnd/src/Services/LoginSrv/loginSrv.service.ts +++ b/FrontEnd/src/Services/LoginSrv/loginSrv.service.ts @@ -9,6 +9,6 @@ export class LoginSrvService { constructor(public http: HttpClient, public route: Router ) { } login(token) { -/* this.http.post('') */ + this.http.post('') } } From 9a07b04951341be46d5a3bad704d14774f4afaf9 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 8 Oct 2018 02:07:47 -0300 Subject: [PATCH 16/26] Modals completo. Dropdowns em 20% --- .../Components/cursos/cursos.component.html | 59 ++++++++++++++++++- .../Components/cursos/cursos.component.scss | 30 +++++++++- .../src/Components/cursos/cursos.component.ts | 39 +++++++++--- .../graficos/graficos.component.html | 17 +++++- FrontEnd/src/Modules/Nebular.module.ts | 9 ++- FrontEnd/src/Modules/primeNg.module.ts | 16 ++--- FrontEnd/src/Services/getDataSrv.service.ts | 36 +++++++++++ .../Services/getDataSrv/getDataSrv.service.ts | 9 --- .../{LoginSrv => }/loginSrv.service.ts | 7 +-- FrontEnd/src/app/app.module.ts | 14 ++++- FrontEnd/src/app/app.routing.ts | 2 +- 11 files changed, 198 insertions(+), 40 deletions(-) create mode 100644 FrontEnd/src/Services/getDataSrv.service.ts delete mode 100644 FrontEnd/src/Services/getDataSrv/getDataSrv.service.ts rename FrontEnd/src/Services/{LoginSrv => }/loginSrv.service.ts (60%) diff --git a/FrontEnd/src/Components/cursos/cursos.component.html b/FrontEnd/src/Components/cursos/cursos.component.html index 2ef617d78..1fa6f2e1c 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.html +++ b/FrontEnd/src/Components/cursos/cursos.component.html @@ -1,9 +1,10 @@ -
+
- + +

{{item.materia}}

- +

Professor(a) {{item.professor}}

@@ -14,3 +15,55 @@

Professor(a) {{item.professor}}

+ + + + Detalhes do Curso + +
+
+ + + + + +
+
+ + Option 1 + Option 2 + Option 3 + Option 4 + +
+
+ + Option 1 + Option 2 + Option 3 + Option 4 + + +
+
+
+ + +
+ + +
+ +
+ + +
+ + + +
+
\ No newline at end of file diff --git a/FrontEnd/src/Components/cursos/cursos.component.scss b/FrontEnd/src/Components/cursos/cursos.component.scss index 68774bb0b..d067ac701 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.scss +++ b/FrontEnd/src/Components/cursos/cursos.component.scss @@ -17,9 +17,37 @@ padding-right: 1vw; } -.p-grid { +.GridCursos { margin-right: 0; height: 50vh; overflow-y: scroll; margin-left: 0; } + +.centerDialog { + display: flex; + justify-content: center; + margin-top: 2vh; + flex-wrap: wrap; +} + +::ng-deep .primeCosmicCalendar { + background-color: #37317a; + border: 2px solid #342e73; + color: #fff; + font-size: 1rem; + padding: 0.75rem 1.125rem; + margin: auto; + border-radius: .5rem; + span { + input { + background-color: #37317a; + border: 2px solid #342e7300; + color: #fff; + text-align: center; + font-size: 1rem; + /* padding: 0.75rem 1.125rem; */ + /* border-radius: .5rem; */ + } + } +} \ No newline at end of file diff --git a/FrontEnd/src/Components/cursos/cursos.component.ts b/FrontEnd/src/Components/cursos/cursos.component.ts index b5ed7e760..777af7acd 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.ts +++ b/FrontEnd/src/Components/cursos/cursos.component.ts @@ -1,6 +1,11 @@ -import { Component, OnInit, ViewChild } from '@angular/core'; +import { GetDataService } from './../../Services/getDataSrv.service'; +import { Component, OnInit, ViewChild, TemplateRef } from '@angular/core'; import { CursoModel } from './../../Models/cursoModel'; import { HttpClient } from '@angular/common/http'; +import { SelectItem } from 'primeng/api'; +import { NbDialogRef, NbDialogService } from '@nebular/theme'; +import { GraficosComponent } from '../graficos/graficos.component'; + @Component({ selector: 'app-cursos', templateUrl: './cursos.component.html', @@ -9,26 +14,44 @@ import { HttpClient } from '@angular/common/http'; export class CursosComponent implements OnInit { Dados: CursoModel; selectedData: CursoModel; - constructor(public http: HttpClient) { - this.getData(); + display = false; + professor: any; + Arr_professor: SelectItem[]; + constructor(public http: HttpClient, public getDataSrv: GetDataService private dialogService: NbDialogService) { + this.loadData(); + this.cargaDrop(); } ngOnInit() { } + cargaDrop() { + this.Arr_professor = [ + { label: 'Select City', value: null }, + { label: 'New York', value: { id: 1, name: 'New York', code: 'NY' } }, + { label: 'Rome', value: { id: 2, name: 'Rome', code: 'RM' } }, + { label: 'London', value: { id: 3, name: 'London', code: 'LDN' } }, + { label: 'Istanbul', value: { id: 4, name: 'Istanbul', code: 'IST' } }, + { label: 'Paris', value: { id: 5, name: 'Paris', code: 'PRS' } } + ]; + } - - getData() { - this.http.get('http://localhost:3000/cursos/listar').subscribe((res: CursoModel) => { - console.log('hey!', res); + loadData() { + this.getDataSrv.getData().then((res: any) => { this.Dados = res; + this.getDataSrv.getProfessor(); }); } ShowDetails(details) { - console.log(details); this.selectedData = details; + console.log('Heyyyy', this.selectedData); + this.display = true; + } + open(dialog: TemplateRef, item: CursoModel) { + this.Dados.materia = item.materia; + this.dialogService.open(dialog); } } diff --git a/FrontEnd/src/Components/graficos/graficos.component.html b/FrontEnd/src/Components/graficos/graficos.component.html index 298f7df72..837bdfc21 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.html +++ b/FrontEnd/src/Components/graficos/graficos.component.html @@ -9,7 +9,7 @@ - Detalhe do Grafico + Detalhe do Grafico @@ -17,3 +17,18 @@ + + + + + + Detalhe do Grafico + + + + + + + + \ No newline at end of file diff --git a/FrontEnd/src/Modules/Nebular.module.ts b/FrontEnd/src/Modules/Nebular.module.ts index 20f2a852f..47a7116df 100644 --- a/FrontEnd/src/Modules/Nebular.module.ts +++ b/FrontEnd/src/Modules/Nebular.module.ts @@ -18,7 +18,8 @@ import { NbAlertModule, NbCheckboxModule, NbStepperModule, - NbInputModule + NbInputModule, + NbSelectModule } from '@nebular/theme'; @@ -41,7 +42,8 @@ import { NbCheckboxModule, NbAccordionModule, NbStepperModule, - NbInputModule + NbInputModule, + NbSelectModule ], declarations: [], exports: [ @@ -61,7 +63,8 @@ import { NbCheckboxModule, NbAccordionModule, NbStepperModule, - NbInputModule + NbInputModule, + NbSelectModule ] }) export class NebularModule { } diff --git a/FrontEnd/src/Modules/primeNg.module.ts b/FrontEnd/src/Modules/primeNg.module.ts index e7577e9a6..fe156a04d 100644 --- a/FrontEnd/src/Modules/primeNg.module.ts +++ b/FrontEnd/src/Modules/primeNg.module.ts @@ -2,11 +2,9 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { PanelModule } from 'primeng/panel'; import { ButtonModule } from 'primeng/button'; -import { SplitButtonModule } from 'primeng/splitbutton'; import { CardModule } from 'primeng/card'; import { ToolbarModule } from 'primeng/toolbar'; import { ChartModule } from 'primeng/chart'; -import { SlideMenuModule } from 'primeng/slidemenu'; import { PanelMenuModule } from 'primeng/panelmenu'; import { MenuModule } from 'primeng/menu'; import { SidebarModule } from 'primeng/sidebar'; @@ -14,15 +12,16 @@ import { DialogModule } from 'primeng/dialog'; import { ListboxModule } from 'primeng/listbox'; import { InputTextModule } from 'primeng/inputtext'; import { InputTextareaModule } from 'primeng/inputtextarea'; +import { DropdownModule } from 'primeng/dropdown'; +import { CalendarModule } from 'primeng/calendar'; @NgModule({ imports: [ + CommonModule, PanelModule, ButtonModule, CardModule, ToolbarModule, ChartModule, - SplitButtonModule, - SlideMenuModule, PanelMenuModule, MenuModule, SidebarModule, @@ -30,6 +29,8 @@ import { InputTextareaModule } from 'primeng/inputtextarea'; ListboxModule, InputTextModule, InputTextareaModule, + DropdownModule, + CalendarModule, ], declarations: [ @@ -38,20 +39,21 @@ import { InputTextareaModule } from 'primeng/inputtextarea'; ], exports: [ + CommonModule, PanelModule, ButtonModule, CardModule, ToolbarModule, ChartModule, - SplitButtonModule, - SlideMenuModule, PanelMenuModule, MenuModule, SidebarModule, DialogModule, ListboxModule, InputTextModule, - InputTextareaModule + InputTextareaModule, + DropdownModule, + CalendarModule, ] }) export class PrimeNgModule { } diff --git a/FrontEnd/src/Services/getDataSrv.service.ts b/FrontEnd/src/Services/getDataSrv.service.ts new file mode 100644 index 000000000..5b8794015 --- /dev/null +++ b/FrontEnd/src/Services/getDataSrv.service.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { CursoModel } from './../Models/cursoModel'; + +@Injectable() +export class GetDataService { + Dados: CursoModel[] + Arr_professor = [] + constructor(public http: HttpClient) { } + + + getData() { + return this.http.get('http://localhost:3000/cursos/listar').toPromise().then((res: CursoModel[]) => { + console.log('12345555', res); + this.Dados = res; + const resultado = res; + return resultado; + }); + } + + + getProfessor() { + for (let i = 0; i < this.Dados.length; i++) { + const element = this.Dados[i]; + console.log('Dentro de professor', element); + if (this.Arr_professor.indexOf(element.professor) <= -1) { + this.Arr_professor.push(element.professor); + } else { + console.log('N adiciona'); + + } + console.log('resultado do array de professores', this.Arr_professor); + + } + } +} diff --git a/FrontEnd/src/Services/getDataSrv/getDataSrv.service.ts b/FrontEnd/src/Services/getDataSrv/getDataSrv.service.ts deleted file mode 100644 index 552f21733..000000000 --- a/FrontEnd/src/Services/getDataSrv/getDataSrv.service.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Injectable } from '@angular/core'; - -@Injectable({ - providedIn: 'root' -}) -export class GetDataService { - - constructor() { } -} diff --git a/FrontEnd/src/Services/LoginSrv/loginSrv.service.ts b/FrontEnd/src/Services/loginSrv.service.ts similarity index 60% rename from FrontEnd/src/Services/LoginSrv/loginSrv.service.ts rename to FrontEnd/src/Services/loginSrv.service.ts index 496bad9bd..3bd6cda46 100644 --- a/FrontEnd/src/Services/LoginSrv/loginSrv.service.ts +++ b/FrontEnd/src/Services/loginSrv.service.ts @@ -1,14 +1,11 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Router } from '@angular/router'; -@Injectable({ - providedIn: 'root' -}) +@Injectable() export class LoginSrvService { - constructor(public http: HttpClient, public route: Router ) { } + constructor(public http: HttpClient, public route: Router) { } login(token) { - this.http.post('') } } diff --git a/FrontEnd/src/app/app.module.ts b/FrontEnd/src/app/app.module.ts index d83a2a83d..0929419f6 100644 --- a/FrontEnd/src/app/app.module.ts +++ b/FrontEnd/src/app/app.module.ts @@ -1,11 +1,11 @@ import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; -import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { FormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; import { HttpClientModule } from '@angular/common/http'; -import { NbThemeModule, NbSidebarModule, NbSidebarService, NbMenuModule, NbToastrModule, NbLayoutModule } from '@nebular/theme'; +import { NbThemeModule, NbSidebarModule, NbSidebarService, NbMenuModule, NbToastrModule, NbDialogModule } from '@nebular/theme'; import { NebularModule } from '../Modules/Nebular.module'; import { PrimeNgModule } from '../Modules/primeNg.module'; @@ -17,6 +17,13 @@ import { RoutingModule } from './app.routing'; import { CursosComponent } from './../Components/cursos/cursos.component'; import { GraficosComponent } from '../Components/graficos/graficos.component'; import { HeaderComponent } from '../Components/header/header.component'; +import { GetDataService } from '../Services/getDataSrv.service'; +import { LoginSrvService } from '../Services/loginSrv.service'; + + + + +const config = {}; @NgModule({ declarations: [ @@ -39,10 +46,13 @@ import { HeaderComponent } from '../Components/header/header.component'; PrimeNgModule, NbToastrModule.forRoot(), NbSidebarModule.forRoot(), + NbDialogModule.forRoot(config), NbThemeModule.forRoot({ name: 'cosmic' }), ], providers: [ NbSidebarService, + GetDataService, + LoginSrvService, NbSidebarModule.forRoot().providers, NbMenuModule.forRoot().providers ], diff --git a/FrontEnd/src/app/app.routing.ts b/FrontEnd/src/app/app.routing.ts index fb7ebf360..aa75df3c6 100644 --- a/FrontEnd/src/app/app.routing.ts +++ b/FrontEnd/src/app/app.routing.ts @@ -6,7 +6,7 @@ import { DashBoardComponent } from '../Pages/DashBoard/dash-board.component'; const routes: Routes = [ { path: 'Login', component: LoginComponent }, { path: 'Home', component: DashBoardComponent }, - { path: '', redirectTo: 'Login', pathMatch: 'full' }, + { path: '', redirectTo: 'Home', pathMatch: 'full' }, ]; @NgModule({ imports: [RouterModule.forRoot( From 60a26f6151d03eeb1f92d12f3c1f9d7cd4f74978 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 8 Oct 2018 11:43:43 -0300 Subject: [PATCH 17/26] grafico com mais detalhes quase completo --- BackEnd/package-lock.json | 28 ++++----------- .../Components/Header/header.component.html | 2 +- .../Components/cursos/cursos.component.html | 2 +- .../src/Components/cursos/cursos.component.ts | 2 +- .../graficos/graficos.component.html | 35 +++++++++---------- .../Components/graficos/graficos.component.ts | 22 +++++++----- FrontEnd/src/app/app.module.ts | 4 ++- 7 files changed, 43 insertions(+), 52 deletions(-) diff --git a/BackEnd/package-lock.json b/BackEnd/package-lock.json index a3c687407..fc4ab29a2 100644 --- a/BackEnd/package-lock.json +++ b/BackEnd/package-lock.json @@ -1064,14 +1064,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1086,20 +1084,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -1216,8 +1211,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -1229,7 +1223,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -1244,7 +1237,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -1252,14 +1244,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -1278,7 +1268,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -1359,8 +1348,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -1372,7 +1360,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -1494,7 +1481,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", diff --git a/FrontEnd/src/Components/Header/header.component.html b/FrontEnd/src/Components/Header/header.component.html index f2557dbb1..1ac48defe 100644 --- a/FrontEnd/src/Components/Header/header.component.html +++ b/FrontEnd/src/Components/Header/header.component.html @@ -1,7 +1,7 @@

- Celso Lisboa +

diff --git a/FrontEnd/src/Components/cursos/cursos.component.html b/FrontEnd/src/Components/cursos/cursos.component.html index 1fa6f2e1c..d980d157a 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.html +++ b/FrontEnd/src/Components/cursos/cursos.component.html @@ -66,4 +66,4 @@

Professor(a) {{item.professor}}

- \ No newline at end of file + diff --git a/FrontEnd/src/Components/cursos/cursos.component.ts b/FrontEnd/src/Components/cursos/cursos.component.ts index 777af7acd..209fda679 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.ts +++ b/FrontEnd/src/Components/cursos/cursos.component.ts @@ -17,7 +17,7 @@ export class CursosComponent implements OnInit { display = false; professor: any; Arr_professor: SelectItem[]; - constructor(public http: HttpClient, public getDataSrv: GetDataService private dialogService: NbDialogService) { + constructor(public http: HttpClient, public getDataSrv: GetDataService, public dialogService: NbDialogService) { this.loadData(); this.cargaDrop(); } diff --git a/FrontEnd/src/Components/graficos/graficos.component.html b/FrontEnd/src/Components/graficos/graficos.component.html index 837bdfc21..a074ef56b 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.html +++ b/FrontEnd/src/Components/graficos/graficos.component.html @@ -1,13 +1,24 @@ - + - - - + + + + + Detalhes do Grafico + + + + + + + diff --git a/FrontEnd/src/Components/graficos/graficos.component.ts b/FrontEnd/src/Components/graficos/graficos.component.ts index 14c4bb3f1..e459700b3 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.ts +++ b/FrontEnd/src/Components/graficos/graficos.component.ts @@ -1,5 +1,7 @@ -import { Component, OnInit } from '@angular/core'; +import { Component, OnInit, TemplateRef, ViewChild } from '@angular/core'; import { HttpClient } from '@angular/common/http'; +import { NbWindowService } from '@nebular/theme'; +import { NbDialogRef, NbDialogService } from '@nebular/theme'; import Chart from 'chart.js'; @Component({ selector: 'app-graficos', @@ -9,17 +11,23 @@ import Chart from 'chart.js'; export class GraficosComponent implements OnInit { graficoObj: any; - graficoData:any + graficoData: any; + options: any; showChart = false; display: boolean; public chartOptions: any = { responsive: false }; - constructor(public http: HttpClient) { } + constructor(public http: HttpClient, public winSrv: NbWindowService, public dialogService: NbDialogService) { } ngOnInit() { this.carga(); + this.options = { + legend: { + position: 'bottom' + } + }; } carga() { @@ -32,8 +40,6 @@ export class GraficosComponent implements OnInit { }); } - - montarGrafico(event) { this.graficoObj = { labels: Object.keys(event), @@ -58,10 +64,10 @@ export class GraficosComponent implements OnInit { ] } } + showDetails(dialog: TemplateRef) { + this.display = true; + this.dialogService.open(dialog); - - showDetails() { - this.display = true; } } diff --git a/FrontEnd/src/app/app.module.ts b/FrontEnd/src/app/app.module.ts index 0929419f6..5ab3ef53b 100644 --- a/FrontEnd/src/app/app.module.ts +++ b/FrontEnd/src/app/app.module.ts @@ -5,7 +5,7 @@ import { FormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; import { HttpClientModule } from '@angular/common/http'; -import { NbThemeModule, NbSidebarModule, NbSidebarService, NbMenuModule, NbToastrModule, NbDialogModule } from '@nebular/theme'; +import { NbThemeModule, NbSidebarModule, NbSidebarService, NbMenuModule, NbToastrModule, NbWindowModule, NbDialogModule } from '@nebular/theme'; import { NebularModule } from '../Modules/Nebular.module'; import { PrimeNgModule } from '../Modules/primeNg.module'; @@ -44,6 +44,7 @@ const config = {}; FormsModule, NebularModule, PrimeNgModule, + NbWindowModule.forRoot(), NbToastrModule.forRoot(), NbSidebarModule.forRoot(), NbDialogModule.forRoot(config), @@ -53,6 +54,7 @@ const config = {}; NbSidebarService, GetDataService, LoginSrvService, + NbWindowModule.forRoot().providers, NbSidebarModule.forRoot().providers, NbMenuModule.forRoot().providers ], From a050267295b45456a7369408cef7685c05cddc25 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 8 Oct 2018 14:38:14 -0300 Subject: [PATCH 18/26] acerto de erro quanto ao camelCasing --- .../Components/Header/header.component.html | 7 +-- .../Components/Header/header.component.scss | 52 ++----------------- .../Header/header.component.spec.ts | 25 --------- .../src/Components/Header/header.component.ts | 9 +--- .../Components/cursos/cursos.component.html | 4 +- .../graficos/graficos.component.html | 1 - .../Components/graficos/graficos.component.ts | 2 - .../Pages/DashBoard/dash-board.component.html | 4 +- .../Pages/DashBoard/dash-board.component.scss | 6 ++- .../LoginSrv/loginSrv.service.spec.ts | 15 ------ .../src/Services/callFunctionSrv.service.ts | 18 +++++++ FrontEnd/src/Services/getDataSrv.service.ts | 4 +- .../getDataSrv/getDataSrv.service.spec.ts | 15 ------ FrontEnd/src/app/app.module.ts | 7 +-- 14 files changed, 41 insertions(+), 128 deletions(-) delete mode 100644 FrontEnd/src/Components/Header/header.component.spec.ts delete mode 100644 FrontEnd/src/Services/LoginSrv/loginSrv.service.spec.ts create mode 100644 FrontEnd/src/Services/callFunctionSrv.service.ts delete mode 100644 FrontEnd/src/Services/getDataSrv/getDataSrv.service.spec.ts diff --git a/FrontEnd/src/Components/Header/header.component.html b/FrontEnd/src/Components/Header/header.component.html index 1ac48defe..637c276ac 100644 --- a/FrontEnd/src/Components/Header/header.component.html +++ b/FrontEnd/src/Components/Header/header.component.html @@ -1,7 +1,8 @@
-

- + testeSAS

- +
diff --git a/FrontEnd/src/Components/Header/header.component.scss b/FrontEnd/src/Components/Header/header.component.scss index 9d9b0fca9..e4e0e11b3 100644 --- a/FrontEnd/src/Components/Header/header.component.scss +++ b/FrontEnd/src/Components/Header/header.component.scss @@ -1,49 +1,5 @@ -::ng-deep .container { - margin-right: 0 !important; - margin-left: 0 !important; +.header-container{ +display: flex; +justify-content: space-between; +width: 100% } - -.headerFlex { - display: flex; - align-items: center; - h3 { - padding-left: 2vw; - } - mdb-icon { - padding-left: 1vw; - color: white; - } -} - -.header-container { - display: flex; - align-items: center; - width: 100%; - .navigation { - padding-right: nb-theme(padding); - font-size: 2.5rem; - text-decoration: none; - i { - display: block; - } - } - .logo { - padding: 0 nb-theme(padding); - font-size: 1.75rem; - font-weight: nb-theme(font-weight-bolder); - border-left: 1px solid nb-theme(separator); - white-space: nowrap; - span { - font-weight: nb-theme(font-weight-normal); - } - } - .logo:hover { - text-shadow: 1px 1px 2px black, 0 0 25px blue, 0 0 5px darkblue; - } -} - -.navigation { - border-right-style: solid; - border-color: #ffffffa3; - border-width: 1px; -} \ No newline at end of file diff --git a/FrontEnd/src/Components/Header/header.component.spec.ts b/FrontEnd/src/Components/Header/header.component.spec.ts deleted file mode 100644 index 2d0479d7d..000000000 --- a/FrontEnd/src/Components/Header/header.component.spec.ts +++ /dev/null @@ -1,25 +0,0 @@ -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 create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/FrontEnd/src/Components/Header/header.component.ts b/FrontEnd/src/Components/Header/header.component.ts index 1649eb360..591e148a7 100644 --- a/FrontEnd/src/Components/Header/header.component.ts +++ b/FrontEnd/src/Components/Header/header.component.ts @@ -1,5 +1,4 @@ import { Component, OnInit } from '@angular/core'; -import { NbSidebarService } from '@nebular/theme'; @Component({ selector: 'app-header', @@ -7,14 +6,10 @@ import { NbSidebarService } from '@nebular/theme'; styleUrls: ['./header.component.scss'] }) export class HeaderComponent implements OnInit { - visibleSidebar1: boolean; - constructor(public sidebarSrv: NbSidebarService) { } + + constructor() { } ngOnInit() { } - toggleSidebar(): boolean { - this.sidebarSrv.toggle(true, 'menu-sidebar'); - return false; - } } diff --git a/FrontEnd/src/Components/cursos/cursos.component.html b/FrontEnd/src/Components/cursos/cursos.component.html index d980d157a..73aed93d5 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.html +++ b/FrontEnd/src/Components/cursos/cursos.component.html @@ -1,10 +1,10 @@
- +

{{item.materia}}

- +

Professor(a) {{item.professor}}

diff --git a/FrontEnd/src/Components/graficos/graficos.component.html b/FrontEnd/src/Components/graficos/graficos.component.html index a074ef56b..4ccaabee1 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.html +++ b/FrontEnd/src/Components/graficos/graficos.component.html @@ -4,7 +4,6 @@
- diff --git a/FrontEnd/src/Components/graficos/graficos.component.ts b/FrontEnd/src/Components/graficos/graficos.component.ts index e459700b3..7e1071459 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.ts +++ b/FrontEnd/src/Components/graficos/graficos.component.ts @@ -18,7 +18,6 @@ export class GraficosComponent implements OnInit { public chartOptions: any = { responsive: false }; - constructor(public http: HttpClient, public winSrv: NbWindowService, public dialogService: NbDialogService) { } ngOnInit() { @@ -29,7 +28,6 @@ export class GraficosComponent implements OnInit { } }; } - carga() { this.http.get('http://localhost:3000/cursos/getgrafico').subscribe((res) => { console.log('RIhhjhjhSE', Object.keys(res[0])); diff --git a/FrontEnd/src/Pages/DashBoard/dash-board.component.html b/FrontEnd/src/Pages/DashBoard/dash-board.component.html index 3002b3b5d..337051165 100644 --- a/FrontEnd/src/Pages/DashBoard/dash-board.component.html +++ b/FrontEnd/src/Pages/DashBoard/dash-board.component.html @@ -1,6 +1,6 @@ - +
@@ -15,4 +15,4 @@
- \ No newline at end of file + diff --git a/FrontEnd/src/Pages/DashBoard/dash-board.component.scss b/FrontEnd/src/Pages/DashBoard/dash-board.component.scss index aa1ce9464..1d47b6df7 100644 --- a/FrontEnd/src/Pages/DashBoard/dash-board.component.scss +++ b/FrontEnd/src/Pages/DashBoard/dash-board.component.scss @@ -37,4 +37,8 @@ nb-sidebar.menu-sidebar { margin-top: 30px; z-index: 999; position: fixed; -} \ No newline at end of file +} + +.headerWidth{ + width: 100%; +} diff --git a/FrontEnd/src/Services/LoginSrv/loginSrv.service.spec.ts b/FrontEnd/src/Services/LoginSrv/loginSrv.service.spec.ts deleted file mode 100644 index c531f7aaf..000000000 --- a/FrontEnd/src/Services/LoginSrv/loginSrv.service.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { TestBed, inject } from '@angular/core/testing'; - -import { LoginSrvService } from './login-srv.service'; - -describe('LoginSrvService', () => { - beforeEach(() => { - TestBed.configureTestingModule({ - providers: [LoginSrvService] - }); - }); - - it('should be created', inject([LoginSrvService], (service: LoginSrvService) => { - expect(service).toBeTruthy(); - })); -}); diff --git a/FrontEnd/src/Services/callFunctionSrv.service.ts b/FrontEnd/src/Services/callFunctionSrv.service.ts new file mode 100644 index 000000000..21b06b942 --- /dev/null +++ b/FrontEnd/src/Services/callFunctionSrv.service.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import { Router } from '@angular/router'; +import { Subject } from 'rxjs'; + +@Injectable() +export class CallFunctionSrvService { + + + FuncaoOrigem = new Subject(); + FuncaoChamada = this.FuncaoOrigem.asObservable(); + constructor(public http: HttpClient, public route: Router) { } + + ChamarFuncao(valor: any, id: string) { + const comando = { valor: valor, id: id }; + this.FuncaoOrigem.next(comando); + } +} diff --git a/FrontEnd/src/Services/getDataSrv.service.ts b/FrontEnd/src/Services/getDataSrv.service.ts index 5b8794015..ee3d41fa2 100644 --- a/FrontEnd/src/Services/getDataSrv.service.ts +++ b/FrontEnd/src/Services/getDataSrv.service.ts @@ -1,6 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { CursoModel } from './../Models/cursoModel'; +import { Observable } from 'rxjs'; @Injectable() export class GetDataService { @@ -20,14 +21,13 @@ export class GetDataService { getProfessor() { - for (let i = 0; i < this.Dados.length; i++) { +for (let i = 0; i < this.Dados.length; i++) { const element = this.Dados[i]; console.log('Dentro de professor', element); if (this.Arr_professor.indexOf(element.professor) <= -1) { this.Arr_professor.push(element.professor); } else { console.log('N adiciona'); - } console.log('resultado do array de professores', this.Arr_professor); diff --git a/FrontEnd/src/Services/getDataSrv/getDataSrv.service.spec.ts b/FrontEnd/src/Services/getDataSrv/getDataSrv.service.spec.ts deleted file mode 100644 index 542da08da..000000000 --- a/FrontEnd/src/Services/getDataSrv/getDataSrv.service.spec.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { TestBed, inject } from '@angular/core/testing'; - -import { GetDataService } from './get-data.service'; - -describe('GetDataService', () => { - beforeEach(() => { - TestBed.configureTestingModule({ - providers: [GetDataService] - }); - }); - - it('should be created', inject([GetDataService], (service: GetDataService) => { - expect(service).toBeTruthy(); - })); -}); diff --git a/FrontEnd/src/app/app.module.ts b/FrontEnd/src/app/app.module.ts index 5ab3ef53b..8e1c6e30a 100644 --- a/FrontEnd/src/app/app.module.ts +++ b/FrontEnd/src/app/app.module.ts @@ -16,14 +16,11 @@ import { RoutingModule } from './app.routing'; import { CursosComponent } from './../Components/cursos/cursos.component'; import { GraficosComponent } from '../Components/graficos/graficos.component'; -import { HeaderComponent } from '../Components/header/header.component'; +import { HeaderComponent } from '../Components/Header/header.component'; import { GetDataService } from '../Services/getDataSrv.service'; import { LoginSrvService } from '../Services/loginSrv.service'; - - - -const config = {}; +const config = {} @NgModule({ declarations: [ From 8f2fb916dc518ee1b4ecd008dbc6e44434f1df27 Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 8 Oct 2018 19:05:12 -0300 Subject: [PATCH 19/26] =?UTF-8?q?Pendente:=20exclus=C3=A3o=20e=20tela=20de?= =?UTF-8?q?=20inclus=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BackEnd/api/controllers/cursos.controller.js | 4 -- BackEnd/api/controllers/login.controller.js | 48 +++++++------------ .../src/Components/cursos/cursos.component.ts | 18 ++----- .../Components/graficos/graficos.component.ts | 2 +- FrontEnd/src/Services/New Text Document.txt | 1 - FrontEnd/src/Services/getDataSrv.service.ts | 11 ++--- 6 files changed, 26 insertions(+), 58 deletions(-) delete mode 100644 FrontEnd/src/Services/New Text Document.txt diff --git a/BackEnd/api/controllers/cursos.controller.js b/BackEnd/api/controllers/cursos.controller.js index 74476d979..df1628906 100644 --- a/BackEnd/api/controllers/cursos.controller.js +++ b/BackEnd/api/controllers/cursos.controller.js @@ -12,7 +12,6 @@ function Cursos() { console.log('Oi'); let rawdata = fs.readFileSync(path.join(__dirname, 'mockUpData.json')); let student = JSON.parse(rawdata); - console.log(student); res.send(student) }) @@ -28,9 +27,6 @@ function Cursos() { let rawdata = fs.readFileSync(path.join(__dirname, 'grafico.json')); const grafico = JSON.parse(rawdata);; res.send(grafico) - - - }) diff --git a/BackEnd/api/controllers/login.controller.js b/BackEnd/api/controllers/login.controller.js index ba966b09e..30e8c01ff 100644 --- a/BackEnd/api/controllers/login.controller.js +++ b/BackEnd/api/controllers/login.controller.js @@ -29,42 +29,28 @@ function Login() { user: user, permissions: permissions }, secret, { - expiresIn: timeToExpire - }, (err, token) => { - const result = { - id: secret, - Token: token, - expiresIn: timeToExpire, - } - - res.send(result) - console.log('dentro do sign'); - console.log('header', isValid); - /* const isValid = verifyLogin(req, res, next).isValid - if (isValid) { - - } else { - res.send('Nope') - } */ - }) + expiresIn: timeToExpire + }, (err, token) => { + const result = { + id: secret, + Token: token, + expiresIn: timeToExpire, + } + + res.send(result) + console.log('dentro do sign'); + console.log('header', isValid); + }) } - this.verifyLogin = ((req, res, next) => { - console.log('Dentro de verify'); + console.log('Dentro de verify', req.header('Authorization')); + + const token = req.header('Authorization') + const TokenDecoded = jwt.decode(token) + res.send(TokenDecoded) - const bearerheader = res.setHeader('Authorization', 'kjksajkjsa') - console.log(bearerheader); - res.send('oi') - /* if (typeof bearerheader !== 'undefined') { - const splitHeader = bearerheader.split(' ') - const headerToken = splitHeader[1] - req.token = headerToken - } else { - - res.send(false) - } */ }) diff --git a/FrontEnd/src/Components/cursos/cursos.component.ts b/FrontEnd/src/Components/cursos/cursos.component.ts index 209fda679..78dddd673 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.ts +++ b/FrontEnd/src/Components/cursos/cursos.component.ts @@ -19,34 +19,22 @@ export class CursosComponent implements OnInit { Arr_professor: SelectItem[]; constructor(public http: HttpClient, public getDataSrv: GetDataService, public dialogService: NbDialogService) { this.loadData(); - this.cargaDrop(); - } - ngOnInit() { } - - cargaDrop() { - this.Arr_professor = [ - { label: 'Select City', value: null }, - { label: 'New York', value: { id: 1, name: 'New York', code: 'NY' } }, - { label: 'Rome', value: { id: 2, name: 'Rome', code: 'RM' } }, - { label: 'London', value: { id: 3, name: 'London', code: 'LDN' } }, - { label: 'Istanbul', value: { id: 4, name: 'Istanbul', code: 'IST' } }, - { label: 'Paris', value: { id: 5, name: 'Paris', code: 'PRS' } } - ]; + ngOnInit() { } loadData() { this.getDataSrv.getData().then((res: any) => { this.Dados = res; - this.getDataSrv.getProfessor(); + this.Arr_professor = this.getDataSrv.getProfessor(); }); } ShowDetails(details) { this.selectedData = details; - console.log('Heyyyy', this.selectedData); + console.log('Heyy', this.selectedData); this.display = true; } diff --git a/FrontEnd/src/Components/graficos/graficos.component.ts b/FrontEnd/src/Components/graficos/graficos.component.ts index 7e1071459..b2c376af3 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.ts +++ b/FrontEnd/src/Components/graficos/graficos.component.ts @@ -60,7 +60,7 @@ export class GraficosComponent implements OnInit { ] } ] - } + }; } showDetails(dialog: TemplateRef) { this.display = true; diff --git a/FrontEnd/src/Services/New Text Document.txt b/FrontEnd/src/Services/New Text Document.txt deleted file mode 100644 index e2ddfc1ce..000000000 --- a/FrontEnd/src/Services/New Text Document.txt +++ /dev/null @@ -1 +0,0 @@ -npm uninstall primeng quill primeicons --save \ No newline at end of file diff --git a/FrontEnd/src/Services/getDataSrv.service.ts b/FrontEnd/src/Services/getDataSrv.service.ts index ee3d41fa2..925a14d95 100644 --- a/FrontEnd/src/Services/getDataSrv.service.ts +++ b/FrontEnd/src/Services/getDataSrv.service.ts @@ -5,14 +5,13 @@ import { Observable } from 'rxjs'; @Injectable() export class GetDataService { - Dados: CursoModel[] - Arr_professor = [] + Dados: CursoModel[]; + Arr_professor = []; constructor(public http: HttpClient) { } getData() { return this.http.get('http://localhost:3000/cursos/listar').toPromise().then((res: CursoModel[]) => { - console.log('12345555', res); this.Dados = res; const resultado = res; return resultado; @@ -21,16 +20,16 @@ export class GetDataService { getProfessor() { -for (let i = 0; i < this.Dados.length; i++) { + for (let i = 0; i < this.Dados.length; i++) { const element = this.Dados[i]; - console.log('Dentro de professor', element); if (this.Arr_professor.indexOf(element.professor) <= -1) { this.Arr_professor.push(element.professor); } else { console.log('N adiciona'); } - console.log('resultado do array de professores', this.Arr_professor); + /* console.log('resultado do array de professores', this.Arr_professor); */ } + return this.Arr_professor; } } From 81315be1dee7739d783d34b42b7bf77c1a34e65c Mon Sep 17 00:00:00 2001 From: Unknown Date: Mon, 8 Oct 2018 19:11:25 -0300 Subject: [PATCH 20/26] backEnd em 60% --- BackEnd/api/controllers/cursos.controller.js | 20 +++++++++++++++++-- .../Components/cursos/cursos.component.html | 5 +---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/BackEnd/api/controllers/cursos.controller.js b/BackEnd/api/controllers/cursos.controller.js index df1628906..e0e587815 100644 --- a/BackEnd/api/controllers/cursos.controller.js +++ b/BackEnd/api/controllers/cursos.controller.js @@ -1,7 +1,8 @@ var fs = require('fs') path = require('path') - +let student +const Arr_professor = [] function Cursos() { this.criarCurso = ((req, res, next) => { @@ -11,7 +12,8 @@ function Cursos() { this.listarCurso = ((req, res, next) => { console.log('Oi'); let rawdata = fs.readFileSync(path.join(__dirname, 'mockUpData.json')); - let student = JSON.parse(rawdata); + student = JSON.parse(rawdata); + Arr_professor.push(student); res.send(student) }) @@ -30,5 +32,19 @@ function Cursos() { }) + this.getProfessor = ((req, res, next) => { + + for (let i = 0; i < student.length; i++) { + const element = student[i]; + if (Arr_professor.indexOf(element.professor) <= -1) { + Arr_professor.push(element.professor); + } else { + console.log('N adiciona'); + } + /* console.log('resultado do array de professores', this.Arr_professor); */ + + } + }) + } module.exports = new Cursos() \ No newline at end of file diff --git a/FrontEnd/src/Components/cursos/cursos.component.html b/FrontEnd/src/Components/cursos/cursos.component.html index 73aed93d5..93dc91712 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.html +++ b/FrontEnd/src/Components/cursos/cursos.component.html @@ -30,10 +30,7 @@

Professor(a) {{item.professor}}

- Option 1 - Option 2 - Option 3 - Option 4 + {{item}}
From 305dc4fa939dba070b0f05ef5265bcfbc732c6cb Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 9 Oct 2018 03:43:26 -0300 Subject: [PATCH 21/26] =?UTF-8?q?pendente=20fun=C3=A7=C3=A3o=20de=20login?= =?UTF-8?q?=20no=20BackEnd=20e=20exclus=C3=A3o=20de=20Curso.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FrontEnd falta ajustes no layout --- BackEnd/api/controllers/cursos.controller.js | 87 ++++++++++++++----- BackEnd/api/controllers/cursos.json | 0 BackEnd/api/controllers/fileName.json | 1 + BackEnd/api/controllers/grafico.json | 2 +- BackEnd/api/controllers/mockUpData.json | 72 --------------- BackEnd/server.js | 6 +- FrontEnd/package-lock.json | 28 ++++-- FrontEnd/package.json | 2 + .../Components/Header/header.component.html | 6 +- .../Components/cursos/cursos.component.html | 28 +++--- .../Components/cursos/cursos.component.scss | 2 + .../src/Components/cursos/cursos.component.ts | 37 +++++--- .../graficos/graficos.component.html | 5 +- .../Components/graficos/graficos.component.ts | 6 +- FrontEnd/src/Models/cursoModel.ts | 1 + FrontEnd/src/Models/loginModel.ts | 3 +- FrontEnd/src/Models/userModel.ts | 2 - FrontEnd/src/Services/getDataSrv.service.ts | 29 ++++++- 18 files changed, 171 insertions(+), 146 deletions(-) create mode 100644 BackEnd/api/controllers/cursos.json create mode 100644 BackEnd/api/controllers/fileName.json delete mode 100644 BackEnd/api/controllers/mockUpData.json diff --git a/BackEnd/api/controllers/cursos.controller.js b/BackEnd/api/controllers/cursos.controller.js index e0e587815..036491789 100644 --- a/BackEnd/api/controllers/cursos.controller.js +++ b/BackEnd/api/controllers/cursos.controller.js @@ -1,24 +1,71 @@ -var fs = require('fs') -path = require('path') -let student -const Arr_professor = [] +var fs = require('fs'); +path = require('path'); +cursoJsonPath = path.join(__dirname, 'cursos.json'); +/* cursoJsonPath = './cursoJsonPath.json' */ +file = require(cursoJsonPath); +let Arr_curso = [] +const Arr_professor = []; + function Cursos() { - this.criarCurso = ((req, res, next) => { - + const add = { + "id": Number(req.params.id), + "sala": req.params.sala, + "professor": req.params.professor, + "materia": req.materia, + "horaInicial": req.params.horaInicial, + "horaFinal": req.params.horaFinal + } + /* let rawdata = fs.readFileSync(cursoJsonPath); + const arr_cursoteste = JSON.parse(rawdata); */ + Arr_curso.push(add) + fs.writeFile(cursoJsonPath, JSON.stringify(Arr_curso, null, 2), ((err) => { + if (err) { + res.send(err); + } else { + console.log('writing aasasto ' + cursoJsonPath); + res.send('item adicionado?') + } + })) }) + this.listarCurso = ((req, res, next) => { console.log('Oi'); - let rawdata = fs.readFileSync(path.join(__dirname, 'mockUpData.json')); - student = JSON.parse(rawdata); - Arr_professor.push(student); - res.send(student) + let rawdata = fs.readFileSync(path.join(__dirname, 'cursos.json')); + Arr_curso = JSON.parse(rawdata); + res.send(Arr_curso) }) this.atualizarCurso = ((req, res, next) => { - + let rawdata = fs.readFileSync(cursoJsonPath); + const arr_cursoteste = JSON.parse(rawdata); + console.log('Entrei em atualizar curso'); + for (let i = 0; i < arr_cursoteste.length; i++) { + const element = arr_cursoteste[i]; + if (element.id === Number(req.params.id)) { + element.id = Number(req.params.id); + element.sala = Number(req.params.sala); + element.professor = req.params.professor; + element.materia = req.params.materia; + element.horaInicial = req.params.horaInicial; + element.horaFinal = req.params.horaFinal; + fs.writeFile(cursoJsonPath, JSON.stringify(arr_cursoteste, null, 2), ((err) => { + if (err) { + res.send(err); + } else { + console.log('writing aasasto ' + cursoJsonPath); + /* res.send('item adicionado?') */ + const resultado = { + result: 'Item editado com Sucesso', + item: element + } + res.send(resultado) + } + })); + } + } }) this.deletarCurso = ((req, res, next) => { @@ -29,22 +76,18 @@ function Cursos() { let rawdata = fs.readFileSync(path.join(__dirname, 'grafico.json')); const grafico = JSON.parse(rawdata);; res.send(grafico) - - }) + }) this.getProfessor = ((req, res, next) => { - - for (let i = 0; i < student.length; i++) { - const element = student[i]; + for (let i = 0; i < Arr_curso.length; i++) { + const element = Arr_curso[i]; if (Arr_professor.indexOf(element.professor) <= -1) { - Arr_professor.push(element.professor); + Arr_professor.push(element.professor); } else { - console.log('N adiciona'); + console.log('N adiciona'); } - /* console.log('resultado do array de professores', this.Arr_professor); */ - - } + } + res.send(Arr_professor) }) - } module.exports = new Cursos() \ No newline at end of file diff --git a/BackEnd/api/controllers/cursos.json b/BackEnd/api/controllers/cursos.json new file mode 100644 index 000000000..e69de29bb diff --git a/BackEnd/api/controllers/fileName.json b/BackEnd/api/controllers/fileName.json new file mode 100644 index 000000000..d361013ea --- /dev/null +++ b/BackEnd/api/controllers/fileName.json @@ -0,0 +1 @@ +{"sala":999,"professor":"TESTE119 Elt","materia":"Kyo","horaInicial":"09:05h","horaFinal":"18:00h"} \ No newline at end of file diff --git a/BackEnd/api/controllers/grafico.json b/BackEnd/api/controllers/grafico.json index ab7a61192..495925dae 100644 --- a/BackEnd/api/controllers/grafico.json +++ b/BackEnd/api/controllers/grafico.json @@ -3,5 +3,5 @@ "portugues": 923, "geografia": 942, "historia": 884, - "Artes": 45 + "Artes": 450 }] \ No newline at end of file diff --git a/BackEnd/api/controllers/mockUpData.json b/BackEnd/api/controllers/mockUpData.json deleted file mode 100644 index d7d6116dd..000000000 --- a/BackEnd/api/controllers/mockUpData.json +++ /dev/null @@ -1,72 +0,0 @@ -[ - { - "sala": 371, - "professor": "Morlee Elt", - "materia": "Portugues", - "horaInicial": "09:00h", - "horaFinal": "12:00h" - }, - { - "sala": 107, - "professor": "Benedetto Backler", - "materia": "Portugues", - "horaInicial": "09:00h", - "horaFinal": "14:00h" - }, - { - "sala": 386, - "professor": "Miltie Jiru", - "materia": "Matematica", - "horaInicial": "10:00h", - "horaFinal": "12:00h" - }, - { - "sala": 200, - "professor": "Lara Dod", - "materia": "Geografia", - "horaInicial": "13:00h", - "horaFinal": "16:00h" - }, - { - "sala": 279, - "professor": "Jordain Sivier", - "materia": "Historia", - "horaInicial": "09:00h", - "horaFinal": "17:00h" - }, - { - "sala": 228, - "professor": "Borden Yorke", - "materia": "Artes", - "horaInicial": "09:00h", - "horaFinal": "16:00h" - }, - { - "sala": 126, - "professor": "Lincoln Spyer", - "materia": "Sociologia", - "horaInicial": "13:00h", - "horaFinal": "16:00h" - }, - { - "sala": 198, - "professor": "Madeleine Beckinsale", - "materia": "Filosofia", - "horaInicial": "16:00h", - "horaFinal": "20:10h" - }, - { - "sala": 343, - "professor": "Sauveur Shortland", - "materia": "Matematica", - "horaInicial": "06:00h", - "horaFinal": "10:00h" - }, - { - "sala": 271, - "professor": "Winnie Bould", - "materia": "Artes", - "horaInicial": "19:00h", - "horaFinal": "22:00h" - } -] diff --git a/BackEnd/server.js b/BackEnd/server.js index c44ae173c..f6bd3f2f7 100644 --- a/BackEnd/server.js +++ b/BackEnd/server.js @@ -5,15 +5,17 @@ var login = require('./api/controllers/login.controller'); server.name = 'Celso Lisboa' -/* server.get('/mensagem/:nome', temNome, resposta); */ - server.post('/login/usuario/:usuario/senha/:senha', login.doLogin) server.post('/login/verificarToken', login.verifyLogin) server.post('/login/getToken/:token', login.teste) /* server.post('/login/getTokenDecoded/:token/', login.teste) */ server.get('/cursos/listar', cursos.listarCurso) +server.post('/cursos/criar/id/:id/sala/:sala/professor/:professor/materia/:materia/horaInicial/:horaInicial/horaFinal/:horaFinal', cursos.criarCurso) +server.post('/cursos/editar/id/:id/sala/:sala/professor/:professor/materia/:materia/horaInicial/:horaInicial/horaFinal/:horaFinal', cursos.atualizarCurso) server.get('/cursos/getgrafico', cursos.grafico) + + server.listen(3000, () => { console.log("Servidor em pé", server.name + '----' + server.url); diff --git a/FrontEnd/package-lock.json b/FrontEnd/package-lock.json index cef1de6f0..022984f6e 100644 --- a/FrontEnd/package-lock.json +++ b/FrontEnd/package-lock.json @@ -392,6 +392,14 @@ "tslib": "^1.9.0" } }, + "@auth0/angular-jwt": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@auth0/angular-jwt/-/angular-jwt-2.0.0.tgz", + "integrity": "sha512-RVlXFpcqQ+9uCpzboU7Tm1ubaRVO2FrR5+RYuwHtTT4BXquVMEwOSbAuuaArFud/kMc00XYoGgiP1JkCfOAfpA==", + "requires": { + "url": "^0.11.0" + } + }, "@babel/code-frame": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", @@ -1162,7 +1170,7 @@ }, "async": { "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "resolved": "http://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", "dev": true }, @@ -2051,7 +2059,7 @@ }, "codelyzer": { "version": "4.2.1", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-4.2.1.tgz", + "resolved": "http://registry.npmjs.org/codelyzer/-/codelyzer-4.2.1.tgz", "integrity": "sha512-CKwfgpfkqi9dyzy4s6ELaxJ54QgJ6A8iTSsM4bzHbLuTpbKncvNc3DUlCvpnkHBhK47gEf4qFsWoYqLrJPhy6g==", "dev": true, "requires": { @@ -4383,7 +4391,7 @@ }, "get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", "dev": true }, @@ -5885,6 +5893,11 @@ } } }, + "jwt-decode": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz", + "integrity": "sha1-fYa9VmefWM5qhHBKZX3TkruoGnk=" + }, "karma": { "version": "1.7.1", "resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz", @@ -7975,8 +7988,7 @@ "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, "querystring-es3": { "version": "0.2.1", @@ -9314,7 +9326,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { @@ -9948,7 +9960,6 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, "requires": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -9957,8 +9968,7 @@ "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" } } }, diff --git a/FrontEnd/package.json b/FrontEnd/package.json index 1432d08b9..22a29a8f5 100644 --- a/FrontEnd/package.json +++ b/FrontEnd/package.json @@ -21,12 +21,14 @@ "@angular/platform-browser": "^6.0.3", "@angular/platform-browser-dynamic": "^6.0.3", "@angular/router": "^6.0.3", + "@auth0/angular-jwt": "^2.0.0", "@nebular/theme": "^2.0.1", "chart.js": "^2.7.2", "core-js": "^2.5.4", "font-awesome": "^4.7.0", "hammerjs": "^2.0.8", "ionicons": "^4.4.4", + "jwt-decode": "^2.2.0", "nebular-icons": "^1.1.0", "primeicons": "^1.0.0-beta.10", "primeng": "^6.1.4", diff --git a/FrontEnd/src/Components/Header/header.component.html b/FrontEnd/src/Components/Header/header.component.html index 637c276ac..c3b96bee8 100644 --- a/FrontEnd/src/Components/Header/header.component.html +++ b/FrontEnd/src/Components/Header/header.component.html @@ -1,8 +1,8 @@

- testeSAS + Celso Lisboa

-
+
\ No newline at end of file diff --git a/FrontEnd/src/Components/cursos/cursos.component.html b/FrontEnd/src/Components/cursos/cursos.component.html index 93dc91712..842ecad9c 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.html +++ b/FrontEnd/src/Components/cursos/cursos.component.html @@ -4,7 +4,7 @@

{{item.materia}}

- +

Professor(a) {{item.professor}}

@@ -23,24 +23,20 @@

Professor(a) {{item.professor}}

- +
- - {{item}} + + {{item}}
- - Option 1 - Option 2 - Option 3 - Option 4 + + {{item}} -
- - + +
-
-
-
+
- + \ No newline at end of file diff --git a/FrontEnd/src/Components/cursos/cursos.component.scss b/FrontEnd/src/Components/cursos/cursos.component.scss index d067ac701..78320425a 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.scss +++ b/FrontEnd/src/Components/cursos/cursos.component.scss @@ -39,12 +39,14 @@ padding: 0.75rem 1.125rem; margin: auto; border-radius: .5rem; + width: 40%; span { input { background-color: #37317a; border: 2px solid #342e7300; color: #fff; text-align: center; + width: 100%; font-size: 1rem; /* padding: 0.75rem 1.125rem; */ /* border-radius: .5rem; */ diff --git a/FrontEnd/src/Components/cursos/cursos.component.ts b/FrontEnd/src/Components/cursos/cursos.component.ts index 78dddd673..35e1baa5f 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.ts +++ b/FrontEnd/src/Components/cursos/cursos.component.ts @@ -13,10 +13,20 @@ import { GraficosComponent } from '../graficos/graficos.component'; }) export class CursosComponent implements OnInit { Dados: CursoModel; - selectedData: CursoModel; display = false; professor: any; - Arr_professor: SelectItem[]; + selectedData: CursoModel = { + id: null as number, + sala: null as string, + professor: null as string, + materia: null as string, + horaInicial: null as string, + horaFinal: null as string + }; + dropdowns = { + Arr_professor: null as Array, + Arr_sala: null as Array + }; constructor(public http: HttpClient, public getDataSrv: GetDataService, public dialogService: NbDialogService) { this.loadData(); @@ -28,18 +38,25 @@ export class CursosComponent implements OnInit { loadData() { this.getDataSrv.getData().then((res: any) => { this.Dados = res; - this.Arr_professor = this.getDataSrv.getProfessor(); + this.dropdowns.Arr_professor = this.getDataSrv.getProfessor(); + this.dropdowns.Arr_sala = this.getDataSrv.getSalas(); + console.log(this.dropdowns); }); } - ShowDetails(details) { - this.selectedData = details; - console.log('Heyy', this.selectedData); - this.display = true; - } - open(dialog: TemplateRef, item: CursoModel) { - this.Dados.materia = item.materia; + console.log(item); + this.selectedData.id = item.id; + this.selectedData.materia = item.materia; + this.selectedData.professor = item.professor; + this.selectedData.sala = item.sala; + this.selectedData.horaInicial = item.horaInicial; + this.selectedData.horaFinal = item.horaFinal; this.dialogService.open(dialog); } + + logs() { + console.log(this.selectedData); + + } } diff --git a/FrontEnd/src/Components/graficos/graficos.component.html b/FrontEnd/src/Components/graficos/graficos.component.html index 4ccaabee1..2ba37b1dd 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.html +++ b/FrontEnd/src/Components/graficos/graficos.component.html @@ -9,10 +9,11 @@ --> + Detalhes do Grafico - + @@ -27,4 +28,4 @@
- --> + --> \ No newline at end of file diff --git a/FrontEnd/src/Components/graficos/graficos.component.ts b/FrontEnd/src/Components/graficos/graficos.component.ts index b2c376af3..310e3200e 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.ts +++ b/FrontEnd/src/Components/graficos/graficos.component.ts @@ -23,10 +23,10 @@ export class GraficosComponent implements OnInit { ngOnInit() { this.carga(); this.options = { - legend: { - position: 'bottom' + legend: { + position: 'bottom' } - }; + }; } carga() { this.http.get('http://localhost:3000/cursos/getgrafico').subscribe((res) => { diff --git a/FrontEnd/src/Models/cursoModel.ts b/FrontEnd/src/Models/cursoModel.ts index 6a3f46f33..8830c309d 100644 --- a/FrontEnd/src/Models/cursoModel.ts +++ b/FrontEnd/src/Models/cursoModel.ts @@ -1,4 +1,5 @@ export interface CursoModel { + id: number; sala: string; professor: string; materia: string; diff --git a/FrontEnd/src/Models/loginModel.ts b/FrontEnd/src/Models/loginModel.ts index 426dc5cb1..3ac5aec1c 100644 --- a/FrontEnd/src/Models/loginModel.ts +++ b/FrontEnd/src/Models/loginModel.ts @@ -1,5 +1,4 @@ export interface LoginModel { - username: string; - password:string; + password: string; } diff --git a/FrontEnd/src/Models/userModel.ts b/FrontEnd/src/Models/userModel.ts index 8b88ed0ce..d9a3cbcf2 100644 --- a/FrontEnd/src/Models/userModel.ts +++ b/FrontEnd/src/Models/userModel.ts @@ -1,5 +1,3 @@ - - export interface UserModel { id: string; token: string; diff --git a/FrontEnd/src/Services/getDataSrv.service.ts b/FrontEnd/src/Services/getDataSrv.service.ts index 925a14d95..83f2c5480 100644 --- a/FrontEnd/src/Services/getDataSrv.service.ts +++ b/FrontEnd/src/Services/getDataSrv.service.ts @@ -13,14 +13,25 @@ export class GetDataService { getData() { return this.http.get('http://localhost:3000/cursos/listar').toPromise().then((res: CursoModel[]) => { this.Dados = res; + /* console.log(res)this.selectedData */ + this.teste() const resultado = res; return resultado; }); } - + teste() { + this.http.post('http://localhost:3000/cursos/criar/id/1250/sala/1080/professor/Horacio/materia/Artes/horaInicial/09:50/horaFinal/07:00').subscribe((res) => { + console.log(res); + return res; + /* this.Dados = res; + console.log(res) + const resultado = res; + return resultado; */ + }); + } getProfessor() { - for (let i = 0; i < this.Dados.length; i++) { + for (let i = 0; i < this.Dados.length; i++) { const element = this.Dados[i]; if (this.Arr_professor.indexOf(element.professor) <= -1) { this.Arr_professor.push(element.professor); @@ -32,4 +43,18 @@ export class GetDataService { } return this.Arr_professor; } + getSalas() { + const Arr_Salas = []; + for (let i = 0; i < this.Dados.length; i++) { + const element = this.Dados[i]; + if (Arr_Salas.indexOf(element.sala) <= -1) { + Arr_Salas.push(element.sala); + } else { + console.log('N adiciona'); + } + } + return Arr_Salas; + } + + } From 0a023b136f9c5af2ce6173da1c838bf59b2228c5 Mon Sep 17 00:00:00 2001 From: Unknown Date: Tue, 9 Oct 2018 16:18:13 -0300 Subject: [PATCH 22/26] Entrega --- BackEnd/api/controllers/cursos.controller.js | 45 ++++--- BackEnd/api/controllers/cursos.json | 90 +++++++++++++ BackEnd/api/controllers/fileName.json | 1 - BackEnd/api/controllers/login.controller.js | 23 ++-- BackEnd/server.js | 8 +- FrontEnd/package-lock.json | 5 + FrontEnd/package.json | 1 + .../Components/Header/header.component.html | 7 +- .../src/Components/Header/header.component.ts | 9 +- .../Components/cursos/cursos.component.html | 49 ++++---- .../Components/cursos/cursos.component.scss | 24 +++- .../src/Components/cursos/cursos.component.ts | 76 ++++++++--- .../graficos/graficos.component.html | 22 +--- FrontEnd/src/Models/cursoModel.ts | 6 +- FrontEnd/src/Models/userModel.ts | 2 +- .../Pages/DashBoard/dash-board.component.html | 7 +- .../Pages/DashBoard/dash-board.component.ts | 12 +- FrontEnd/src/Pages/login/login.component.html | 37 +++--- FrontEnd/src/Pages/login/login.component.scss | 16 +-- FrontEnd/src/Pages/login/login.component.ts | 22 +++- FrontEnd/src/Services/getDataSrv.service.ts | 118 +++++++++++------- FrontEnd/src/Services/loginSrv.service.ts | 13 +- FrontEnd/src/app/app.module.ts | 21 +++- FrontEnd/src/app/app.routing.ts | 2 +- FrontEnd/src/environments/config.ts | 7 ++ FrontEnd/src/styles.scss | 2 + 26 files changed, 436 insertions(+), 189 deletions(-) delete mode 100644 BackEnd/api/controllers/fileName.json create mode 100644 FrontEnd/src/environments/config.ts diff --git a/BackEnd/api/controllers/cursos.controller.js b/BackEnd/api/controllers/cursos.controller.js index 036491789..567c15ee3 100644 --- a/BackEnd/api/controllers/cursos.controller.js +++ b/BackEnd/api/controllers/cursos.controller.js @@ -2,10 +2,11 @@ var fs = require('fs'); path = require('path'); cursoJsonPath = path.join(__dirname, 'cursos.json'); +graficoJsonPath = path.join(__dirname, 'grafico.json'); /* cursoJsonPath = './cursoJsonPath.json' */ -file = require(cursoJsonPath); -let Arr_curso = [] + const Arr_professor = []; +const Arr_sala = [] function Cursos() { this.criarCurso = ((req, res, next) => { @@ -13,37 +14,38 @@ function Cursos() { "id": Number(req.params.id), "sala": req.params.sala, "professor": req.params.professor, - "materia": req.materia, + "materia": req.params.materia, "horaInicial": req.params.horaInicial, "horaFinal": req.params.horaFinal } - /* let rawdata = fs.readFileSync(cursoJsonPath); - const arr_cursoteste = JSON.parse(rawdata); */ + let rawdata = fs.readFileSync(cursoJsonPath); + const Arr_curso = JSON.parse(rawdata); Arr_curso.push(add) fs.writeFile(cursoJsonPath, JSON.stringify(Arr_curso, null, 2), ((err) => { if (err) { res.send(err); } else { - console.log('writing aasasto ' + cursoJsonPath); - res.send('item adicionado?') + const resultado = { + result: 'Item adicionado com Sucesso', + item: element + } + res.send(resultado) } })) }) - this.listarCurso = ((req, res, next) => { - console.log('Oi'); - let rawdata = fs.readFileSync(path.join(__dirname, 'cursos.json')); - Arr_curso = JSON.parse(rawdata); + let rawdata = fs.readFileSync(cursoJsonPath); + const Arr_curso = JSON.parse(rawdata); res.send(Arr_curso) }) this.atualizarCurso = ((req, res, next) => { let rawdata = fs.readFileSync(cursoJsonPath); - const arr_cursoteste = JSON.parse(rawdata); + const Arr_curso = JSON.parse(rawdata); console.log('Entrei em atualizar curso'); - for (let i = 0; i < arr_cursoteste.length; i++) { - const element = arr_cursoteste[i]; + for (let i = 0; i < Arr_curso.length; i++) { + const element = Arr_curso[i]; if (element.id === Number(req.params.id)) { element.id = Number(req.params.id); element.sala = Number(req.params.sala); @@ -51,7 +53,7 @@ function Cursos() { element.materia = req.params.materia; element.horaInicial = req.params.horaInicial; element.horaFinal = req.params.horaFinal; - fs.writeFile(cursoJsonPath, JSON.stringify(arr_cursoteste, null, 2), ((err) => { + fs.writeFile(cursoJsonPath, JSON.stringify(Arr_curso, null, 2), ((err) => { if (err) { res.send(err); } else { @@ -76,8 +78,8 @@ function Cursos() { let rawdata = fs.readFileSync(path.join(__dirname, 'grafico.json')); const grafico = JSON.parse(rawdata);; res.send(grafico) - }) + this.getProfessor = ((req, res, next) => { for (let i = 0; i < Arr_curso.length; i++) { const element = Arr_curso[i]; @@ -89,5 +91,16 @@ function Cursos() { } res.send(Arr_professor) }) + this.getSala = ((req, res, next) => { + for (let i = 0; i < Arr_curso.length; i++) { + const element = Arr_curso[i]; + if (Arr_sala.indexOf(element.sala) <= -1) { + Arr_sala.push(element.sala); + } else { + console.log('N adiciona'); + } + } + res.send(Arr_sala) + }) } module.exports = new Cursos() \ No newline at end of file diff --git a/BackEnd/api/controllers/cursos.json b/BackEnd/api/controllers/cursos.json index e69de29bb..826624a72 100644 --- a/BackEnd/api/controllers/cursos.json +++ b/BackEnd/api/controllers/cursos.json @@ -0,0 +1,90 @@ +[ + { + "id": 1, + "sala": 126, + "professor": "Morlee Elt", + "materia": "Portugues", + "horaInicial": "Tue Oct 09 2018 11:06:18 GMT-0300 (Horário Padrão de Brasília)", + "horaFinal": "Tue Oct 09 2018 12:06:18 GMT-0300 (Horário Padrão de Brasília)" + }, + { + "id": 2, + "sala": 107, + "professor": "Benedetto Backler", + "materia": "Portugues", + "horaInicial": "Tue Oct 09 2018 10:21:16 GMT-0300 (Horário Padrão de Brasília)", + "horaFinal": "Tue Oct 09 2018 17:21:20 GMT-0300 (Horário Padrão de Brasília)" + }, + { + "id": 3, + "sala": 279, + "professor": "Miltie Jiru", + "materia": "Matematica", + "horaInicial": "Tue Oct 09 2018 14:01:34 GMT-0300 (Horário Padrão de Brasília)", + "horaFinal": "Tue Oct 09 2018 20:01:35 GMT-0300 (Horário Padrão de Brasília)" + }, + { + "id": 4, + "sala": 228, + "professor": "Lara Dod", + "materia": "Geografia", + "horaInicial": "Tue Oct 09 2018 11:01:47 GMT-0300 (Horário Padrão de Brasília)", + "horaFinal": "Tue Oct 09 2018 15:04:50 GMT-0300 (Horário Padrão de Brasília)" + }, + { + "id": 5, + "sala": 279, + "professor": "Jordain Sivier", + "materia": "Historia", + "horaInicial": "Tue Oct 09 2018 13:03:04 GMT-0300 (Horário Padrão de Brasília)", + "horaFinal": "Tue Oct 09 2018 17:03:04 GMT-0300 (Horário Padrão de Brasília)" + }, + { + "id": 6, + "sala": 228, + "professor": "Borden Yorke", + "materia": "Artes", + "horaInicial": "Tue Oct 09 2018 09:03:04 GMT-0300 (Horário Padrão de Brasília)", + "horaFinal": "Tue Oct 09 2018 16:03:04 GMT-0300 (Horário Padrão de Brasília)" + }, + { + "id": 7, + "sala": 126, + "professor": "Lincoln Spyer", + "materia": "Sociologia", + "horaInicial": "Tue Oct 09 2018 13:02:01 GMT-0300 (Horário Padrão de Brasília)", + "horaFinal": "Tue Oct 09 2018 21:03:04 GMT-0300 (Horário Padrão de Brasília)" + }, + { + "id": 8, + "sala": 198, + "professor": "Madeleine Beckinsale", + "materia": "Filosofia", + "horaInicial": "Tue Oct 09 2018 16:03:04 GMT-0300 (Horário Padrão de Brasília)", + "horaFinal": "Tue Oct 09 2018 20:13:04 GMT-0300 (Horário Padrão de Brasília)" + }, + { + "id": 9, + "sala": 271, + "professor": "Sauveur Shortland", + "materia": "Matematica", + "horaInicial": "Tue Oct 09 2018 15:02:16 GMT-0300 (Horário Padrão de Brasília)", + "horaFinal": "Tue Oct 09 2018 20:02:19 GMT-0300 (Horário Padrão de Brasília)" + }, + { + "id": 10, + "sala": 271, + "professor": "Winnie Bould", + "materia": "Artes", + "horaInicial": "Tue Oct 09 2018 19:00:04 GMT-0300 (Horário Padrão de Brasília)", + "horaFinal": "Tue Oct 09 2018 22:03:04 GMT-0300 (Horário Padrão de Brasília)" + }, + { + "id": 11, + "sala": "228", + "professor": "Lincoln Spyer", + "materia": "Matematica", + "horaInicial": "Tue Oct 09 2018 13:26:20 GMT-0300 (Horário Padrão de Brasília)", + "horaFinal": "Tue Oct 09 2018 16:26:22 GMT-0300 (Horário Padrão de Brasília)" + } +] \ No newline at end of file diff --git a/BackEnd/api/controllers/fileName.json b/BackEnd/api/controllers/fileName.json deleted file mode 100644 index d361013ea..000000000 --- a/BackEnd/api/controllers/fileName.json +++ /dev/null @@ -1 +0,0 @@ -{"sala":999,"professor":"TESTE119 Elt","materia":"Kyo","horaInicial":"09:05h","horaFinal":"18:00h"} \ No newline at end of file diff --git a/BackEnd/api/controllers/login.controller.js b/BackEnd/api/controllers/login.controller.js index 30e8c01ff..a33865e53 100644 --- a/BackEnd/api/controllers/login.controller.js +++ b/BackEnd/api/controllers/login.controller.js @@ -29,18 +29,17 @@ function Login() { user: user, permissions: permissions }, secret, { - expiresIn: timeToExpire - }, (err, token) => { - const result = { - id: secret, - Token: token, - expiresIn: timeToExpire, - } - - res.send(result) - console.log('dentro do sign'); - console.log('header', isValid); - }) + expiresIn: timeToExpire + }, (err, token) => { + const result = { + id: secret, + Token: token, + expiresIn: timeToExpire, + } + res.send(result) + console.log('dentro do sign'); + console.log('header', isValid); + }) } diff --git a/BackEnd/server.js b/BackEnd/server.js index f6bd3f2f7..be417ed67 100644 --- a/BackEnd/server.js +++ b/BackEnd/server.js @@ -5,17 +5,15 @@ var login = require('./api/controllers/login.controller'); server.name = 'Celso Lisboa' -server.post('/login/usuario/:usuario/senha/:senha', login.doLogin) +server.get('/login/usuario/:usuario/senha/:senha', login.doLogin) server.post('/login/verificarToken', login.verifyLogin) server.post('/login/getToken/:token', login.teste) /* server.post('/login/getTokenDecoded/:token/', login.teste) */ server.get('/cursos/listar', cursos.listarCurso) -server.post('/cursos/criar/id/:id/sala/:sala/professor/:professor/materia/:materia/horaInicial/:horaInicial/horaFinal/:horaFinal', cursos.criarCurso) -server.post('/cursos/editar/id/:id/sala/:sala/professor/:professor/materia/:materia/horaInicial/:horaInicial/horaFinal/:horaFinal', cursos.atualizarCurso) +server.get('/cursos/criar/id/:id/sala/:sala/professor/:professor/materia/:materia/horaInicial/:horaInicial/horaFinal/:horaFinal', cursos.criarCurso) +server.get('/cursos/editar/id/:id/sala/:sala/professor/:professor/materia/:materia/horaInicial/:horaInicial/horaFinal/:horaFinal', cursos.atualizarCurso) server.get('/cursos/getgrafico', cursos.grafico) - - server.listen(3000, () => { console.log("Servidor em pé", server.name + '----' + server.url); diff --git a/FrontEnd/package-lock.json b/FrontEnd/package-lock.json index 022984f6e..e9c99c430 100644 --- a/FrontEnd/package-lock.json +++ b/FrontEnd/package-lock.json @@ -6767,6 +6767,11 @@ "integrity": "sha512-vdqTKI9GBIYcAEbFAcpKPErKINfPF5zIuz3/niBfq8WUZjpT2tytLlFVrBgWdOtqI4uaA/Rb6No0hux39XXDuw==", "dev": true }, + "ng-pick-datetime": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/ng-pick-datetime/-/ng-pick-datetime-6.0.16.tgz", + "integrity": "sha512-96rHNg+tGXmzJHvGoH2O8dF+MF7N4rKIehsi8Px3IZUOZM4qA6PE1w8SQzDvHQTIp/1NpiICvmt6BZK5IaDsFg==" + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", diff --git a/FrontEnd/package.json b/FrontEnd/package.json index 22a29a8f5..0054efae6 100644 --- a/FrontEnd/package.json +++ b/FrontEnd/package.json @@ -30,6 +30,7 @@ "ionicons": "^4.4.4", "jwt-decode": "^2.2.0", "nebular-icons": "^1.1.0", + "ng-pick-datetime": "^6.0.16", "primeicons": "^1.0.0-beta.10", "primeng": "^6.1.4", "rxjs": "^6.0.0", diff --git a/FrontEnd/src/Components/Header/header.component.html b/FrontEnd/src/Components/Header/header.component.html index c3b96bee8..9dd7d57bd 100644 --- a/FrontEnd/src/Components/Header/header.component.html +++ b/FrontEnd/src/Components/Header/header.component.html @@ -2,7 +2,10 @@

Celso Lisboa

-
\ No newline at end of file diff --git a/FrontEnd/src/Components/Header/header.component.ts b/FrontEnd/src/Components/Header/header.component.ts index 591e148a7..d751b0e62 100644 --- a/FrontEnd/src/Components/Header/header.component.ts +++ b/FrontEnd/src/Components/Header/header.component.ts @@ -1,4 +1,6 @@ import { Component, OnInit } from '@angular/core'; +import { config } from '../../environments/config'; +import { CallFunctionSrvService } from '../../Services/callFunctionSrv.service'; @Component({ selector: 'app-header', @@ -7,9 +9,14 @@ import { Component, OnInit } from '@angular/core'; }) export class HeaderComponent implements OnInit { - constructor() { } + constructor(public callSrv: CallFunctionSrvService) { } ngOnInit() { } + novo() { + const valor = ''; + const id = config.abrirInclusão; + this.callSrv.ChamarFuncao(valor, id); + } } diff --git a/FrontEnd/src/Components/cursos/cursos.component.html b/FrontEnd/src/Components/cursos/cursos.component.html index 842ecad9c..e2583a356 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.html +++ b/FrontEnd/src/Components/cursos/cursos.component.html @@ -1,7 +1,7 @@
- +

{{item.materia}}

@@ -10,53 +10,60 @@

{{item.materia}}

Professor(a) {{item.professor}}

Sala {{item.sala}}

-

de {{item.horaInicial}} as {{item.horaFinal}}

+

de {{item.horaInicial | date: 'HH:mm'}} as {{item.horaFinal | date: 'HH:mm'}}

- Detalhes do Curso
-
+
- +
-
+
{{item}}
-
+
{{item}}
-
-
- - +
+
+
+ + + + + +
+
+ + + + + +
-
- - - + + + + \ No newline at end of file diff --git a/FrontEnd/src/Components/cursos/cursos.component.scss b/FrontEnd/src/Components/cursos/cursos.component.scss index 78320425a..7df5f387d 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.scss +++ b/FrontEnd/src/Components/cursos/cursos.component.scss @@ -31,7 +31,25 @@ flex-wrap: wrap; } -::ng-deep .primeCosmicCalendar { +.cardCenter { + display: flex; + justify-content: center; + flex-wrap: wrap; +} + +.separador { + margin-top: 10px; +} + +::ng-deep .ui-float-label>input:focus~label, +.ui-float-label>input.ui-state-filled~label, +.ui-float-label>.ui-inputwrapper-focus~label, +.ui-float-label>.ui-inputwrapper-filled~label { + color: white !important; + font-size: 2vh !important; +} + +/* ::ng-deep .primeCosmicCalendar { background-color: #37317a; border: 2px solid #342e73; color: #fff; @@ -48,8 +66,6 @@ text-align: center; width: 100%; font-size: 1rem; - /* padding: 0.75rem 1.125rem; */ - /* border-radius: .5rem; */ } } -} \ No newline at end of file +} */ \ No newline at end of file diff --git a/FrontEnd/src/Components/cursos/cursos.component.ts b/FrontEnd/src/Components/cursos/cursos.component.ts index 35e1baa5f..58e44fb5e 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.ts +++ b/FrontEnd/src/Components/cursos/cursos.component.ts @@ -1,10 +1,11 @@ -import { GetDataService } from './../../Services/getDataSrv.service'; import { Component, OnInit, ViewChild, TemplateRef } from '@angular/core'; import { CursoModel } from './../../Models/cursoModel'; import { HttpClient } from '@angular/common/http'; -import { SelectItem } from 'primeng/api'; -import { NbDialogRef, NbDialogService } from '@nebular/theme'; -import { GraficosComponent } from '../graficos/graficos.component'; +import { NbDialogService } from '@nebular/theme'; +import { DateTimeAdapter } from 'ng-pick-datetime'; +import { CallFunctionSrvService } from './../../Services/callFunctionSrv.service'; +import { GetDataService } from './../../Services/getDataSrv.service'; +import { config } from '../../environments/config'; @Component({ selector: 'app-cursos', @@ -12,24 +13,36 @@ import { GraficosComponent } from '../graficos/graficos.component'; styleUrls: ['./cursos.component.scss'] }) export class CursosComponent implements OnInit { - Dados: CursoModel; + Dados: CursoModel[] display = false; - professor: any; + Destino: string; selectedData: CursoModel = { id: null as number, - sala: null as string, + sala: null as number, professor: null as string, materia: null as string, - horaInicial: null as string, - horaFinal: null as string + horaInicial: null as any, + horaFinal: null as any }; + @ViewChild('dialog') dialog: TemplateRef; dropdowns = { Arr_professor: null as Array, Arr_sala: null as Array }; - constructor(public http: HttpClient, public getDataSrv: GetDataService, public dialogService: NbDialogService) { + constructor(public http: HttpClient, + public getDataSrv: GetDataService, + public dialogService: NbDialogService, + public callSrv: CallFunctionSrvService, + dateTime: DateTimeAdapter) { this.loadData(); + dateTime.setLocale('pt-BR'); + this.callSrv.FuncaoChamada.subscribe((comando) => { + if (comando.id === config.abrirInclusão) { + this.Destino = config.abrirInclusão; + this.openSalvar(); + } + }); } ngOnInit() { @@ -38,23 +51,56 @@ export class CursosComponent implements OnInit { loadData() { this.getDataSrv.getData().then((res: any) => { this.Dados = res; + /* this.Dados.horaInicial = */ this.dropdowns.Arr_professor = this.getDataSrv.getProfessor(); this.dropdowns.Arr_sala = this.getDataSrv.getSalas(); console.log(this.dropdowns); }); } + openSalvar() { - open(dialog: TemplateRef, item: CursoModel) { + this.selectedData.id = null as number; + this.selectedData.materia = null; + this.selectedData.professor = null; + this.selectedData.sala = null; + this.selectedData.horaInicial = null; + this.selectedData.horaFinal = null; + this.dialogService.open(this.dialog); + } + + openEdit(dialog: TemplateRef, item: CursoModel) { console.log(item); this.selectedData.id = item.id; this.selectedData.materia = item.materia; this.selectedData.professor = item.professor; - this.selectedData.sala = item.sala; - this.selectedData.horaInicial = item.horaInicial; - this.selectedData.horaFinal = item.horaFinal; - this.dialogService.open(dialog); + this.selectedData.sala = Number(item.sala); + this.selectedData.horaInicial = new Date(item.horaInicial); + this.selectedData.horaFinal = new Date(item.horaFinal); + this.Destino = config.abrirInclusão; + this.dialogService.open(this.dialog); } + save(btn) { + console.log('Indo para o serviço', this.selectedData); + if (this.Destino === config.abrirInclusão) { + this.selectedData.id = Number(this.selectedData.id) + this.Dados.length + 1; + this.selectedData.sala = Number(this.selectedData.sala); + this.selectedData.horaInicial = new Date(this.selectedData.horaInicial).getTime(); + this.selectedData.horaFinal = new Date(this.selectedData.horaFinal).getTime(); + this.getDataSrv.saveData(this.selectedData).then((s) => { + console.log(s); + this.loadData(); + btn.close(); + }); + } + if (this.Destino === config.abrirEdição) { + this.getDataSrv.editData(this.selectedData).then((s) => { + console.log(s); + this.loadData(); + btn.close(); + }); + } + } logs() { console.log(this.selectedData); diff --git a/FrontEnd/src/Components/graficos/graficos.component.html b/FrontEnd/src/Components/graficos/graficos.component.html index 2ba37b1dd..3d77fb889 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.html +++ b/FrontEnd/src/Components/graficos/graficos.component.html @@ -1,12 +1,14 @@ - + + + + + + - @@ -17,15 +19,3 @@ - - \ No newline at end of file diff --git a/FrontEnd/src/Models/cursoModel.ts b/FrontEnd/src/Models/cursoModel.ts index 8830c309d..9efe2bfb1 100644 --- a/FrontEnd/src/Models/cursoModel.ts +++ b/FrontEnd/src/Models/cursoModel.ts @@ -1,8 +1,8 @@ export interface CursoModel { id: number; - sala: string; + sala: number; professor: string; materia: string; - horaInicial: string; - horaFinal: string; + horaInicial: any; + horaFinal: any; } diff --git a/FrontEnd/src/Models/userModel.ts b/FrontEnd/src/Models/userModel.ts index d9a3cbcf2..1d2cd6c8a 100644 --- a/FrontEnd/src/Models/userModel.ts +++ b/FrontEnd/src/Models/userModel.ts @@ -1,6 +1,6 @@ export interface UserModel { id: string; - token: string; + Token: string; accessAreas: Object; } diff --git a/FrontEnd/src/Pages/DashBoard/dash-board.component.html b/FrontEnd/src/Pages/DashBoard/dash-board.component.html index 337051165..37230b1ec 100644 --- a/FrontEnd/src/Pages/DashBoard/dash-board.component.html +++ b/FrontEnd/src/Pages/DashBoard/dash-board.component.html @@ -7,12 +7,9 @@
-
+
-
- -
- + \ No newline at end of file diff --git a/FrontEnd/src/Pages/DashBoard/dash-board.component.ts b/FrontEnd/src/Pages/DashBoard/dash-board.component.ts index 8a2279f28..639295f0c 100644 --- a/FrontEnd/src/Pages/DashBoard/dash-board.component.ts +++ b/FrontEnd/src/Pages/DashBoard/dash-board.component.ts @@ -1,7 +1,9 @@ import { Component, OnInit, ViewChild } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { CursoModel } from './../../Models/cursoModel'; -import Chart from 'chart.js'; +import { config } from '../../environments/config'; +import { CallFunctionSrvService } from '../../Services/callFunctionSrv.service'; +import * as jwt from 'jwt-decode'; @Component({ selector: 'app-dash-board', templateUrl: './dash-board.component.html', @@ -11,12 +13,12 @@ export class DashBoardComponent implements OnInit { Dados: CursoModel; selectedData: CursoModel; teste: any; - constructor(public http: HttpClient) { - + constructor(public http: HttpClient, public callSrv: CallFunctionSrvService) { + console.log('wheohupoirwyiuwtgoriytyyyyyyyyyyyyyyyyyyy'); } ngOnInit() { - + console.log('XXXTOKEN', jwt(config.token)); } - /* /Users/ons/Documents/teste117/DFStack/FrontEnd/DashBoardCelso/src/assets/mockUpData.json */ + } diff --git a/FrontEnd/src/Pages/login/login.component.html b/FrontEnd/src/Pages/login/login.component.html index d7cec4f47..e05c236f6 100644 --- a/FrontEnd/src/Pages/login/login.component.html +++ b/FrontEnd/src/Pages/login/login.component.html @@ -6,27 +6,28 @@

Bem vindo à faculdade Celso Lisboa

-
- - - - +
+ + + + - - + + - - - + +
+ + - -
- - - -
-
+ + + + + +
+
- + \ No newline at end of file diff --git a/FrontEnd/src/Pages/login/login.component.scss b/FrontEnd/src/Pages/login/login.component.scss index 28eb2e8a4..616edef59 100644 --- a/FrontEnd/src/Pages/login/login.component.scss +++ b/FrontEnd/src/Pages/login/login.component.scss @@ -3,9 +3,9 @@ justify-content: center; align-items: center; height: 100%; - nb-card { - width: 100%; - } + /* nb-card { + width: 100%; + } */ } .boldPlaceholder { @@ -18,13 +18,13 @@ justify-content: center; button { position: relative; - bottom: 7vh; + bottom: 5vh; } } -.footerLogin{ - display: flex; - justify-content: center; +.footerLogin { + display: flex; + justify-content: center; } .ColorLoginSign { @@ -43,4 +43,4 @@ font-size: 1rem; line-height: 1.25; border-radius: .5rem; -} +} \ No newline at end of file diff --git a/FrontEnd/src/Pages/login/login.component.ts b/FrontEnd/src/Pages/login/login.component.ts index 3722df3db..0a65bb9ac 100644 --- a/FrontEnd/src/Pages/login/login.component.ts +++ b/FrontEnd/src/Pages/login/login.component.ts @@ -1,8 +1,12 @@ +import { UserModel } from './../../Models/userModel'; +import { CallFunctionSrvService } from './../../Services/callFunctionSrv.service'; import { HttpClient } from '@angular/common/http'; import { LoginModel } from './../../Models/loginModel'; import { Component, OnInit } from '@angular/core'; -/* import jwt from 'jsonwebtoken'; - */ +import { LoginSrvService } from '../../Services/loginSrv.service'; +import { Router } from '@angular/router'; +import { config } from '../../environments/config'; + @Component({ selector: 'app-login', templateUrl: './login.component.html', @@ -13,13 +17,21 @@ export class LoginComponent implements OnInit { username: null, password: null }; - constructor(public http: HttpClient) { } + constructor(public http: HttpClient, public loginSrv: LoginSrvService, public route: Router, public callSrv: CallFunctionSrvService) { } ngOnInit() { } - - doLogin() { + console.log('HEEEYYYYY!!!'); + if (this.LoginForm.username !== null || this.LoginForm.username !== '') { + console.log('Passei no primeiro'); + if (this.LoginForm.password !== null || this.LoginForm.password !== '') { + this.loginSrv.login(this.LoginForm).then((token: UserModel) => { + config.token = token.Token; + this.route.navigateByUrl('/Home'); + }); + } + } } } diff --git a/FrontEnd/src/Services/getDataSrv.service.ts b/FrontEnd/src/Services/getDataSrv.service.ts index 83f2c5480..1d0a25f6b 100644 --- a/FrontEnd/src/Services/getDataSrv.service.ts +++ b/FrontEnd/src/Services/getDataSrv.service.ts @@ -5,56 +5,80 @@ import { Observable } from 'rxjs'; @Injectable() export class GetDataService { - Dados: CursoModel[]; - Arr_professor = []; - constructor(public http: HttpClient) { } - - - getData() { - return this.http.get('http://localhost:3000/cursos/listar').toPromise().then((res: CursoModel[]) => { - this.Dados = res; - /* console.log(res)this.selectedData */ - this.teste() - const resultado = res; - return resultado; - }); - } - - teste() { - this.http.post('http://localhost:3000/cursos/criar/id/1250/sala/1080/professor/Horacio/materia/Artes/horaInicial/09:50/horaFinal/07:00').subscribe((res) => { - console.log(res); - return res; - /* this.Dados = res; - console.log(res) - const resultado = res; - return resultado; */ - }); - } - getProfessor() { - for (let i = 0; i < this.Dados.length; i++) { - const element = this.Dados[i]; - if (this.Arr_professor.indexOf(element.professor) <= -1) { - this.Arr_professor.push(element.professor); - } else { - console.log('N adiciona'); - } - /* console.log('resultado do array de professores', this.Arr_professor); */ + Dados: CursoModel[]; + Arr_professor = []; + Api = { + getData: 'http://localhost:3000/cursos/listar', + saveData: 'http://localhost:3000/cursos/criar', + editData: 'http://localhost:3000/cursos/editar' + } + constructor(public http: HttpClient) { } + + + getData() { + return this.http.get(this.Api.getData).toPromise().then((res: CursoModel[]) => { + this.Dados = res; + /* console.log(res)this.selectedData */ + const resultado = res; + return resultado; + }); + } + + saveData(item: CursoModel) { + console.log(item); + return this.http.get(this.Api.saveData + + '/id/ ' + item.id + + '/sala/' + item.sala + + '/professor/' + item.professor + + '/materia/' + item.materia + + '/horaInicial/' + item.horaInicial + + '/horaFinal/' + item.horaFinal) + .toPromise().then((res) => { + console.log(res); + return res; + }); + } + editData(item) { + return this.http.get(this.Api.editData + + '/id/ ' + item.id + + '/sala/' + item.sala + + '/professor/' + item.professor + + '/materia/' + item.materia + + '/horaInicial/' + item.horaInicial + + '/horaFinal/' + item.horaFinal) + .toPromise().then((res) => { + console.log(res); + return res; + }); + } + DeleteData() { + + } + getProfessor() { + for (let i = 0; i < this.Dados.length; i++) { + const element = this.Dados[i]; + if (this.Arr_professor.indexOf(element.professor) <= -1) { + this.Arr_professor.push(element.professor); + } else { + console.log('N adiciona'); + } + /* console.log('resultado do array de professores', this.Arr_professor); */ + } + return this.Arr_professor; } - return this.Arr_professor; - } - getSalas() { - const Arr_Salas = []; - for (let i = 0; i < this.Dados.length; i++) { - const element = this.Dados[i]; - if (Arr_Salas.indexOf(element.sala) <= -1) { - Arr_Salas.push(element.sala); - } else { - console.log('N adiciona'); - } + getSalas() { + const Arr_Salas = []; + for (let i = 0; i < this.Dados.length; i++) { + const element = this.Dados[i]; + if (Arr_Salas.indexOf(element.sala) <= -1) { + Arr_Salas.push(element.sala); + } else { + console.log('N adiciona'); + } + } + return Arr_Salas; } - return Arr_Salas; - } } diff --git a/FrontEnd/src/Services/loginSrv.service.ts b/FrontEnd/src/Services/loginSrv.service.ts index 3bd6cda46..71b05c81d 100644 --- a/FrontEnd/src/Services/loginSrv.service.ts +++ b/FrontEnd/src/Services/loginSrv.service.ts @@ -1,11 +1,22 @@ +import { LoginModel } from './../Models/loginModel'; import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { Router } from '@angular/router'; +import { map } from 'rxjs/operators'; @Injectable() export class LoginSrvService { constructor(public http: HttpClient, public route: Router) { } - login(token) { + login(LoginData: LoginModel) { + + console.log(LoginData); + + 'http://localhost:3000/login/usuario/:usuario/senha/:senha'; + return this.http.get('http://localhost:3000/login/usuario/' + LoginData.username + '/senha/' + LoginData.password) + .toPromise().then((data) => { + console.log(data); + return data; + }); } } diff --git a/FrontEnd/src/app/app.module.ts b/FrontEnd/src/app/app.module.ts index 8e1c6e30a..c77283d0b 100644 --- a/FrontEnd/src/app/app.module.ts +++ b/FrontEnd/src/app/app.module.ts @@ -5,7 +5,15 @@ import { FormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; import { HttpClientModule } from '@angular/common/http'; -import { NbThemeModule, NbSidebarModule, NbSidebarService, NbMenuModule, NbToastrModule, NbWindowModule, NbDialogModule } from '@nebular/theme'; +import { + NbThemeModule, + NbSidebarModule, + NbSidebarService, + NbMenuModule, + NbToastrModule, + NbWindowModule, + NbDialogModule +} from '@nebular/theme'; import { NebularModule } from '../Modules/Nebular.module'; import { PrimeNgModule } from '../Modules/primeNg.module'; @@ -19,8 +27,12 @@ import { GraficosComponent } from '../Components/graficos/graficos.component'; import { HeaderComponent } from '../Components/Header/header.component'; import { GetDataService } from '../Services/getDataSrv.service'; import { LoginSrvService } from '../Services/loginSrv.service'; +import { CallFunctionSrvService } from '../Services/callFunctionSrv.service'; -const config = {} +import { OwlDateTimeModule, OwlNativeDateTimeModule } from 'ng-pick-datetime'; + + +const config = {}; @NgModule({ declarations: [ @@ -39,6 +51,10 @@ const config = {} HttpClientModule, BrowserAnimationsModule, FormsModule, + + OwlDateTimeModule, + OwlNativeDateTimeModule, + NebularModule, PrimeNgModule, NbWindowModule.forRoot(), @@ -51,6 +67,7 @@ const config = {} NbSidebarService, GetDataService, LoginSrvService, + CallFunctionSrvService, NbWindowModule.forRoot().providers, NbSidebarModule.forRoot().providers, NbMenuModule.forRoot().providers diff --git a/FrontEnd/src/app/app.routing.ts b/FrontEnd/src/app/app.routing.ts index aa75df3c6..fb7ebf360 100644 --- a/FrontEnd/src/app/app.routing.ts +++ b/FrontEnd/src/app/app.routing.ts @@ -6,7 +6,7 @@ import { DashBoardComponent } from '../Pages/DashBoard/dash-board.component'; const routes: Routes = [ { path: 'Login', component: LoginComponent }, { path: 'Home', component: DashBoardComponent }, - { path: '', redirectTo: 'Home', pathMatch: 'full' }, + { path: '', redirectTo: 'Login', pathMatch: 'full' }, ]; @NgModule({ imports: [RouterModule.forRoot( diff --git a/FrontEnd/src/environments/config.ts b/FrontEnd/src/environments/config.ts new file mode 100644 index 000000000..cecd55a19 --- /dev/null +++ b/FrontEnd/src/environments/config.ts @@ -0,0 +1,7 @@ +export const config = { + + abrirInclusão: 'abrirInclusão', + pegarToken: 'pegarToken', + abrirEdição: 'abrirEdição', + token: null +}; diff --git a/FrontEnd/src/styles.scss b/FrontEnd/src/styles.scss index 90d4ee007..39d52b116 100644 --- a/FrontEnd/src/styles.scss +++ b/FrontEnd/src/styles.scss @@ -1 +1,3 @@ /* You can add global styles to this file, and also import other style files */ + +@import "~ng-pick-datetime/assets/style/picker.min.css"; \ No newline at end of file From 6be4da6c55efda765ec6c8af51aa649cfb52aa20 Mon Sep 17 00:00:00 2001 From: Iago Date: Fri, 26 Oct 2018 01:36:32 -0300 Subject: [PATCH 23/26] =?UTF-8?q?movendo=20para=20aws.=20Fotos=20do=20banc?= =?UTF-8?q?o=20de=20dados=20ir=C3=A3o=20no=20proximo=20upload?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BackEnd/api/controllers/cursos.controller.js | 22 ++- BackEnd/aws/deletecursos.lambda.js | 17 ++ BackEnd/aws/getcursos.lambda.js | 16 ++ BackEnd/aws/writecursos.lambda.js | 24 +++ BackEnd/config.js | 9 + BackEnd/package-lock.json | 174 +++++++++++++++++-- BackEnd/package.json | 2 + BackEnd/route.js | 93 ++++++++++ BackEnd/server.js | 55 +++++- FrontEnd/src/Services/getDataSrv.service.ts | 53 +++--- 10 files changed, 412 insertions(+), 53 deletions(-) create mode 100644 BackEnd/aws/deletecursos.lambda.js create mode 100644 BackEnd/aws/getcursos.lambda.js create mode 100644 BackEnd/aws/writecursos.lambda.js create mode 100644 BackEnd/config.js create mode 100644 BackEnd/route.js diff --git a/BackEnd/api/controllers/cursos.controller.js b/BackEnd/api/controllers/cursos.controller.js index 567c15ee3..781275e99 100644 --- a/BackEnd/api/controllers/cursos.controller.js +++ b/BackEnd/api/controllers/cursos.controller.js @@ -1,14 +1,18 @@ +'use strict' +module.exports = function (ctx) { + const fs = require('fs'), + path = require('path'), + cursoJsonPath = path.join(__dirname, 'cursos.json'), + graficoJsonPath = path.join(__dirname, 'grafico.json'); -var fs = require('fs'); -path = require('path'); -cursoJsonPath = path.join(__dirname, 'cursos.json'); -graficoJsonPath = path.join(__dirname, 'grafico.json'); -/* cursoJsonPath = './cursoJsonPath.json' */ + const Arr_professor = []; + const Arr_sala = []; + const db = ctx.db, + server = ctx.server + + const collection = db.collection('todos') -const Arr_professor = []; -const Arr_sala = [] -function Cursos() { this.criarCurso = ((req, res, next) => { const add = { "id": Number(req.params.id), @@ -103,4 +107,4 @@ function Cursos() { res.send(Arr_sala) }) } -module.exports = new Cursos() \ No newline at end of file +/* module.exports = new Cursos(ctx) */ \ No newline at end of file diff --git a/BackEnd/aws/deletecursos.lambda.js b/BackEnd/aws/deletecursos.lambda.js new file mode 100644 index 000000000..392e7bf7b --- /dev/null +++ b/BackEnd/aws/deletecursos.lambda.js @@ -0,0 +1,17 @@ +var AWS = require('aws-sdk'), + documentClient = new AWS.DynamoDB.DocumentClient(); + +exports.handler = function index(event, context, callback) { + console.log(event) + + var params = { + TableName: process.env.TABLE_NAME, + Key: { + id: event.id + } + }; + documentClient.delete(params, function (err, data) { + console.log('o q temos aqui?', data); + callback(err, 'Item Deletado'); + }); +}; \ No newline at end of file diff --git a/BackEnd/aws/getcursos.lambda.js b/BackEnd/aws/getcursos.lambda.js new file mode 100644 index 000000000..18a29cfc5 --- /dev/null +++ b/BackEnd/aws/getcursos.lambda.js @@ -0,0 +1,16 @@ +var AWS = require('aws-sdk'), + documentClient = new AWS.DynamoDB.DocumentClient(); + +exports.handler = function index(event, context, callback) { + console.log(event); + var params = { + TableName: process.env.TABLE_NAME + }; + documentClient.scan(params, function (err, data) { + if (err) { + callback(err, null); + } else { + callback(null, data); + } + }); +}; \ No newline at end of file diff --git a/BackEnd/aws/writecursos.lambda.js b/BackEnd/aws/writecursos.lambda.js new file mode 100644 index 000000000..c3085f938 --- /dev/null +++ b/BackEnd/aws/writecursos.lambda.js @@ -0,0 +1,24 @@ + +var AWS = require('aws-sdk'), + documentClient = new AWS.DynamoDB.DocumentClient(); + +exports.handler = function index(event, context, callback) { + console.log(event) + + var params = { + Item: { + "id": event.id, + "sala": event.sala, + "professor": event.professor, + "materia": event.materia, + "horaInicial": event.horaInicial, + "horaFinal": event.horaFinal + }, + TableName: process.env.TABLE_NAME + }; + + documentClient.put(params, function (err, data) { + console.log('o q temos aqui?', data) + callback(err, 'Item foi adicionado com sucesso'); + }); +}; \ No newline at end of file diff --git a/BackEnd/config.js b/BackEnd/config.js new file mode 100644 index 000000000..1301a7c2c --- /dev/null +++ b/BackEnd/config.js @@ -0,0 +1,9 @@ +module.exports = { + name: 'Celso Lisboa', + version: '0.0.1', + env: process.env.NODE_ENV || 'development', + port: process.env.PORT || 3000, + db: { + uri: 'mongodb+srv://Iago:258741@celsolisboa-mkzqr.mongodb.net/test?retryWrites=true', + } +} \ No newline at end of file diff --git a/BackEnd/package-lock.json b/BackEnd/package-lock.json index fc4ab29a2..9ed630b31 100644 --- a/BackEnd/package-lock.json +++ b/BackEnd/package-lock.json @@ -113,6 +113,29 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, + "aws-sdk": { + "version": "2.343.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.343.0.tgz", + "integrity": "sha512-WB7uwmlyQ2NHEmXufYgJa6Qr1uwAFqBJ5GBgO8YALYAck9C6TLGD9/oKJGK93PXBpmgPdJqVIfxZE80YQ5/xXQ==", + "requires": { + "buffer": "4.9.1", + "events": "1.1.1", + "ieee754": "1.1.8", + "jmespath": "0.15.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "uuid": "3.1.0", + "xml2js": "0.4.19" + }, + "dependencies": { + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==" + } + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -173,11 +196,15 @@ } } }, + "base64-js": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "optional": true, "requires": { "tweetnacl": "^0.14.3" } @@ -268,6 +295,21 @@ } } }, + "bson": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.1.0.tgz", + "integrity": "sha512-9Aeai9TacfNtWXOYarkFJRW2CWo+dRon+fuLZYJmvLV3+MiUp0bEI6IAZfXEIg7/Pl/7IWlLaDnhzTsD81etQA==" + }, + "buffer": { + "version": "4.9.1", + "resolved": "http://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, "buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", @@ -648,7 +690,6 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "optional": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -709,6 +750,11 @@ "through": "^2.3.8" } }, + "events": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" + }, "ewma": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/ewma/-/ewma-2.0.1.tgz", @@ -972,9 +1018,9 @@ } }, "find-my-way": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-1.15.3.tgz", - "integrity": "sha512-W+9ZZcZZlk3jc69mNvLAYy01msIpUp45aAtD/AIRWc5T0voI4WmHzm6oy+F3/jeGjb7AEE7AU8Inq58/gd/E5g==", + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-1.15.4.tgz", + "integrity": "sha512-3XPCOhoGMPK6ELgUHd5BuNxsL+fTNM0EIrTlcLwjT2uZq22UHL4IQt5N54PIQblk164ioZATRov9mcuA4RB3eA==", "requires": { "fast-decode-uri-component": "^1.0.0", "safe-regex": "^1.1.0", @@ -1725,6 +1771,11 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" }, + "ieee754": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=" + }, "ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", @@ -1980,11 +2031,15 @@ "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, + "jmespath": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "integrity": "sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=" + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "optional": true + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "json-schema": { "version": "0.2.3", @@ -2160,6 +2215,12 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, + "memory-pager": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.1.0.tgz", + "integrity": "sha512-Mf9OHV/Y7h6YWDxTzX/b4ZZ4oh9NSXblQL8dtPCOomOtZciEHxePR78+uHFLLlsk01A6jVHhHsQZZ/WcIPpnzg==", + "optional": true + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -2272,6 +2333,26 @@ "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y=", "optional": true }, + "mongodb": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.1.8.tgz", + "integrity": "sha512-yNKwYxQ6m00NV6+pMoWoheFTHSQVv1KkSrfOhRDYMILGWDYtUtQRqHrFqU75rmPIY8hMozVft8zdC4KYMWaM3Q==", + "requires": { + "mongodb-core": "3.1.7", + "safe-buffer": "^5.1.2" + } + }, + "mongodb-core": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.1.7.tgz", + "integrity": "sha512-YffpSrLmgFNmrvkGx+yX00KyBNk64C0BalfEn6vHHkXtcMUGXw8nxrMmhq5eXPLLlYeBpD/CsgNxE2Chf0o4zQ==", + "requires": { + "bson": "^1.1.0", + "require_optional": "^1.0.1", + "safe-buffer": "^5.1.2", + "saslprep": "^1.0.0" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -2565,11 +2646,21 @@ "ps-tree": "^1.1.0" } }, + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" + }, "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" + }, "range-parser": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", @@ -2693,6 +2784,20 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "^2.0.0", + "semver": "^5.1.0" + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", @@ -2789,6 +2894,20 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "saslprep": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.2.tgz", + "integrity": "sha512-4cDsYuAjXssUSjxHKRe4DTZC0agDwsCqcMqtJAQPzC74nJ7LfAJflAtC1Zed5hMzEQKj82d3tuzqdGNRsLJ4Gw==", + "optional": true, + "requires": { + "sparse-bitfield": "^3.0.3" + } + }, + "sax": { + "version": "1.2.1", + "resolved": "http://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o=" + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -3044,6 +3163,15 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha1-/0rm5oZWBWuks+eSqzM004JzyhE=", + "optional": true, + "requires": { + "memory-pager": "^1.0.2" + } + }, "spdy": { "version": "3.4.7", "resolved": "https://registry.npmjs.org/spdy/-/spdy-3.4.7.tgz", @@ -3110,9 +3238,9 @@ } }, "sshpk": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.14.2.tgz", - "integrity": "sha1-xvxhZIo9nE52T9P8306hBeSSupg=", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz", + "integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==", "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", @@ -3289,8 +3417,7 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "optional": true + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "type-is": { "version": "1.6.16", @@ -3446,6 +3573,15 @@ "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, + "url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=", + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, "url-parse-lax": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", @@ -3562,6 +3698,20 @@ "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", "dev": true }, + "xml2js": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", + "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "http://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, "yallist": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", diff --git a/BackEnd/package.json b/BackEnd/package.json index 01be86da5..90e6918e2 100644 --- a/BackEnd/package.json +++ b/BackEnd/package.json @@ -13,8 +13,10 @@ "nodemon": "^1.18.4" }, "dependencies": { + "aws-sdk": "^2.343.0", "express": "^4.16.3", "jsonwebtoken": "^8.3.0", + "mongodb": "^3.1.8", "restify": "^7.2.1" } } diff --git a/BackEnd/route.js b/BackEnd/route.js new file mode 100644 index 000000000..d2250b312 --- /dev/null +++ b/BackEnd/route.js @@ -0,0 +1,93 @@ +'use strict'; +module.exports = function (ctx) { + + // extract context from passed in object + const db = ctx.db, + server = ctx.server, + collection = db.collection('cursos'); + // assign collection to variable for further use + // const collection = db.collection('todos'); + + /** + * Create + */ + server.post('/todos', (req, res, next) => { + // extract data from body and add timestamps + const data = Object.assign({}, req.body, { + created: new Date(), + updated: new Date() + }) + + // insert one object into todos collection + collection.insertOne(data) + .then(doc => res.send(200, doc.ops[0])) + .catch(err => res.send(500, err)) + + next() + + }) + + /** + * Read + */ + server.get('/todos', (req, res, next) => { + + let limit = parseInt(req.query.limit, 10) || 10, // default limit to 10 docs + skip = parseInt(req.query.skip, 10) || 0, // default skip to 0 docs + query = req.query || {} + + // remove skip and limit from query to avoid false querying + delete query.skip + delete query.limit + + // find todos and convert to array (with optional query, skip and limit) + collection.find(query).skip(skip).limit(limit).toArray() + .then(docs => res.send(200, docs)) + .catch(err => res.send(500, err)) + + next() + + }) + + /** + * Update + */ + server.put('/todos/:id', (req, res, next) => { + + // extract data from body and add timestamps + const data = Object.assign({}, req.body, { + updated: new Date() + }) + + // build out findOneAndUpdate variables to keep things organized + let query = { _id: req.params.id }, + body = { $set: data }, + opts = { + returnOriginal: false, + upsert: true + } + + // find and update document based on passed in id (via route) + collection.findOneAndUpdate(query, body, opts) + .then(doc => res.send(204)) + .catch(err => res.send(500, err)) + + next() + + }) + + /** + * Delete + */ + server.del('/todos/:id', (req, res, next) => { + + // remove one document based on passed in id (via route) + collection.findOneAndDelete({ _id: req.params.id }) + .then(doc => res.send(204)) + .catch(err => res.send(500, err)) + + next() + + }) + +} \ No newline at end of file diff --git a/BackEnd/server.js b/BackEnd/server.js index be417ed67..1f83b259c 100644 --- a/BackEnd/server.js +++ b/BackEnd/server.js @@ -1,20 +1,57 @@ +'use strict' + const restify = require('restify'); -const server = restify.createServer(); -const cursos = require('./api/controllers/cursos.controller'); -var login = require('./api/controllers/login.controller'); -server.name = 'Celso Lisboa' +const config = require('./config'); + +const mongodb = require('mongodb').MongoClient + +/* const cursos = require('./api/controllers/cursos.controller') +const login = require('./api/controllers/login.controller') + */ + +const server = restify.createServer({ + + name: config.name, + version: config.version +}); -server.get('/login/usuario/:usuario/senha/:senha', login.doLogin) + +server.use(restify.plugins.jsonBodyParser({ mapParams: true })) +server.use(restify.plugins.acceptParser(server.acceptable)) +server.use(restify.plugins.queryParser({ mapParams: true })) +server.use(restify.plugins.fullResponse()) + + +/* server.name = 'Celso Lisboa' */ + +/* server.get('/login/usuario/:usuario/senha/:senha', login.doLogin) server.post('/login/verificarToken', login.verifyLogin) server.post('/login/getToken/:token', login.teste) -/* server.post('/login/getTokenDecoded/:token/', login.teste) */ +server.post('/login/getTokenDecoded/:token/', login.teste) server.get('/cursos/listar', cursos.listarCurso) server.get('/cursos/criar/id/:id/sala/:sala/professor/:professor/materia/:materia/horaInicial/:horaInicial/horaFinal/:horaFinal', cursos.criarCurso) server.get('/cursos/editar/id/:id/sala/:sala/professor/:professor/materia/:materia/horaInicial/:horaInicial/horaFinal/:horaFinal', cursos.atualizarCurso) -server.get('/cursos/getgrafico', cursos.grafico) +server.get('/cursos/getgrafico', cursos.grafico) */ -server.listen(3000, () => { +server.listen(config.port, () => { console.log("Servidor em pé", server.name + '----' + server.url); + mongodb.connect(config.db.uri, (err, db) => { -}); + if (err) { + console.log('An error occurred while attempting to connect to MongoDB', err) + process.exit(1) + } + console.log( + '%s v%s ready to accept connections on port %s in %s environment.', + server.name, + config.version, + config.port, + config.env + ) + db.db('') + require('./route')({ db, server }) + /* require('./api/controllers/cursos.controller')({ db, server }) + require('./api/controllers/login.controller')({ db, server }) */ + }) +}) \ No newline at end of file diff --git a/FrontEnd/src/Services/getDataSrv.service.ts b/FrontEnd/src/Services/getDataSrv.service.ts index 1d0a25f6b..c0e6f736e 100644 --- a/FrontEnd/src/Services/getDataSrv.service.ts +++ b/FrontEnd/src/Services/getDataSrv.service.ts @@ -1,3 +1,4 @@ +import { map } from 'rxjs/operators'; import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { CursoModel } from './../Models/cursoModel'; @@ -8,13 +9,12 @@ export class GetDataService { Dados: CursoModel[]; Arr_professor = []; Api = { - getData: 'http://localhost:3000/cursos/listar', - saveData: 'http://localhost:3000/cursos/criar', - editData: 'http://localhost:3000/cursos/editar' - } + getData: 'https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/getcurso', + saveData: 'https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/writecurso', + editData: 'https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/updatecurso', + deleteData: 'https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/deletecurso' + }; constructor(public http: HttpClient) { } - - getData() { return this.http.get(this.Api.getData).toPromise().then((res: CursoModel[]) => { this.Dados = res; @@ -23,36 +23,43 @@ export class GetDataService { return resultado; }); } - saveData(item: CursoModel) { console.log(item); - return this.http.get(this.Api.saveData + - '/id/ ' + item.id + - '/sala/' + item.sala + - '/professor/' + item.professor + - '/materia/' + item.materia + - '/horaInicial/' + item.horaInicial + - '/horaFinal/' + item.horaFinal) + const body = { + id: item.id, + sala: item.sala, + professor: item.professor, + materia: item.materia, + horaInicial: item.horaInicial, + horaFinal: item.horaFinal, + editar: false + }; + return this.http.post(this.Api.saveData, body) .toPromise().then((res) => { console.log(res); return res; }); } editData(item) { - return this.http.get(this.Api.editData + - '/id/ ' + item.id + - '/sala/' + item.sala + - '/professor/' + item.professor + - '/materia/' + item.materia + - '/horaInicial/' + item.horaInicial + - '/horaFinal/' + item.horaFinal) + const body = { + id: item.id, + sala: item.sala, + professor: item.professor, + materia: item.materia, + horaInicial: item.horaInicial, + horaFinal: item.horaFinal, + editar: true + }; + + return this.http.post(this.Api.editData, body) .toPromise().then((res) => { console.log(res); return res; }); } - DeleteData() { - + DeleteData(id) { + const body = id; +this.http.delete(this.Api.deleteData, body).pipe((map)) } getProfessor() { for (let i = 0; i < this.Dados.length; i++) { From d9a3438e52bebbd613067b502edb2f9fd8f6df0e Mon Sep 17 00:00:00 2001 From: Iago Date: Fri, 26 Oct 2018 11:28:35 -0300 Subject: [PATCH 24/26] Quase pronto para a entrega --- BackEnd/api/controllers/login.controller.js | 81 ++++++++---------- BackEnd/aws/getgrafico.lambda.js | 16 ++++ BackEnd/aws/getprofessor.lambda.js | 29 +++++++ BackEnd/aws/loginJWT.lambda.js | 44 ++++++++++ Banco de Dados/DynamoDb.JPG | Bin 0 -> 181047 bytes .../src/Components/cursos/cursos.component.ts | 4 +- .../Components/graficos/graficos.component.ts | 6 +- FrontEnd/src/Services/getDataSrv.service.ts | 39 +++++---- FrontEnd/src/Services/loginSrv.service.ts | 12 +-- 9 files changed, 156 insertions(+), 75 deletions(-) create mode 100644 BackEnd/aws/getgrafico.lambda.js create mode 100644 BackEnd/aws/getprofessor.lambda.js create mode 100644 BackEnd/aws/loginJWT.lambda.js create mode 100644 Banco de Dados/DynamoDb.JPG diff --git a/BackEnd/api/controllers/login.controller.js b/BackEnd/api/controllers/login.controller.js index a33865e53..407f999f1 100644 --- a/BackEnd/api/controllers/login.controller.js +++ b/BackEnd/api/controllers/login.controller.js @@ -1,57 +1,44 @@ const jwt = require('jsonwebtoken') -function Login() { - - this.teste = ((req, res, next) => { - console.log('Olaaaaaa') - var decoded = jwt.decode(req.params.token); - res.send(decoded) - }) - - this.doLogin = function (req, res, next) { - console.log('funciona?'); - let permissions = '' - timeToExpire = '2 days' - const secret = Math.random().toString(36).substr(2, 9) - const user = { - id: Math.random().toString(36).substr(2, 9), - name: req.params.usuario, - password: req.params.senha, - LoggedIn: new Date() - } - console.log('indo para sign do jwt'); - if (req.params.usuario === 'CelsoLisboa') { - permissions = 'Adm' - } else { - permissions = 'Funcionario' - } - jwt.sign({ - user: user, - permissions: permissions - }, secret, { - expiresIn: timeToExpire - }, (err, token) => { - const result = { - id: secret, - Token: token, - expiresIn: timeToExpire, - } - res.send(result) - console.log('dentro do sign'); - console.log('header', isValid); - }) +exports.handler = function index(event, context, callback) { + + let permissions = '' + timeToExpire = '2 days' + const secret = Math.random().toString(36).substr(2, 9) + const user = { + id: Math.random().toString(36).substr(2, 9), + name: event.usuario, + password: event.senha, + LoggedIn: new Date() } + console.log('indo para sign do jwt'); + if (event.usuario === 'CelsoLisboa') { + permissions = 'Adm'; + } else { + permissions = 'Funcionario'; + } + jwt.sign({ + user: user, + permissions: permissions + }, secret, { + expiresIn: timeToExpire + }, (err, token) => { + let result = { + id: secret, + Token: token, + expiresIn: timeToExpire, + } + callback(err, result) + console.log('dentro do sign'); + console.log('header', isValid); + }) +} - +/* this.verifyLogin = ((req, res, next) => { console.log('Dentro de verify', req.header('Authorization')); - const token = req.header('Authorization') const TokenDecoded = jwt.decode(token) res.send(TokenDecoded) - }) - - -} -module.exports = new Login(); \ No newline at end of file + }) */ diff --git a/BackEnd/aws/getgrafico.lambda.js b/BackEnd/aws/getgrafico.lambda.js new file mode 100644 index 000000000..1dfdeaf72 --- /dev/null +++ b/BackEnd/aws/getgrafico.lambda.js @@ -0,0 +1,16 @@ +var AWS = require('aws-sdk'), + documentClient = new AWS.DynamoDB.DocumentClient(); + +exports.handler = function index(event, context, callback) { + + + const rawdata = [{ + "matematica": 845, + "portugues": 923, + "geografia": 942, + "historia": 884, + "Artes": 450 + }] + + callback(null, rawdata[0]) +} \ No newline at end of file diff --git a/BackEnd/aws/getprofessor.lambda.js b/BackEnd/aws/getprofessor.lambda.js new file mode 100644 index 000000000..42b26ad98 --- /dev/null +++ b/BackEnd/aws/getprofessor.lambda.js @@ -0,0 +1,29 @@ +var AWS = require('aws-sdk'), + documentClient = new AWS.DynamoDB.DocumentClient(); + +exports.handler = function index(event, context, callback) { + console.log(event); + var params = { + TableName: process.env.TABLE_NAME + }; + documentClient.scan(params, function (err, data) { + if (err) { + callback(err, null); + } + else { + const arr_Data = data.Items; + const Arr_professor = []; + + for (let i = 0; i < arr_Data.length; i++) { + const element = arr_Data[i]; + if (Arr_professor.indexOf(element.professor) <= -1) { + Arr_professor.push(element.professor); + } + else { + console.log('N adiciona'); + } + } + callback(null, Arr_professor); + } + }); +}; diff --git a/BackEnd/aws/loginJWT.lambda.js b/BackEnd/aws/loginJWT.lambda.js new file mode 100644 index 000000000..5663ce7db --- /dev/null +++ b/BackEnd/aws/loginJWT.lambda.js @@ -0,0 +1,44 @@ +const jwt = require('jsonwebtoken') + +exports.handler = function index(event, context, callback) { + + let permissions = '' + timeToExpire = '2 days' + const secret = Math.random().toString(36).substr(2, 9) + const user = { + id: Math.random().toString(36).substr(2, 9), + name: event.usuario, + password: event.senha, + LoggedIn: new Date() + } + console.log('indo para sign do jwt'); + if (req.params.usuario === 'CelsoLisboa') { + permissions = 'Adm'; + } else { + permissions = 'Funcionario'; + } + jwt.sign({ + user: user, + permissions: permissions + }, secret, { + expiresIn: timeToExpire + }, (err, token) => { + let result = { + id: secret, + Token: token, + expiresIn: timeToExpire, + } + callback(err, result) + console.log('dentro do sign'); + console.log('header', isValid); + }) +} + +/* + this.verifyLogin = ((req, res, next) => { + console.log('Dentro de verify', req.header('Authorization')); + const token = req.header('Authorization') + const TokenDecoded = jwt.decode(token) + res.send(TokenDecoded) + + }) */ diff --git a/Banco de Dados/DynamoDb.JPG b/Banco de Dados/DynamoDb.JPG new file mode 100644 index 0000000000000000000000000000000000000000..8a636ee5e652b2a7db2701f6eb7c002e4b5ca702 GIT binary patch literal 181047 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⊂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 { this.Dados = res; /* this.Dados.horaInicial = */ - this.dropdowns.Arr_professor = this.getDataSrv.getProfessor(); + this.getDataSrv.getProfessor().then((professor: string[]) => { + this.dropdowns.Arr_professor = professor; + }); this.dropdowns.Arr_sala = this.getDataSrv.getSalas(); console.log(this.dropdowns); }); diff --git a/FrontEnd/src/Components/graficos/graficos.component.ts b/FrontEnd/src/Components/graficos/graficos.component.ts index 310e3200e..452d5419d 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.ts +++ b/FrontEnd/src/Components/graficos/graficos.component.ts @@ -29,11 +29,11 @@ export class GraficosComponent implements OnInit { }; } carga() { - this.http.get('http://localhost:3000/cursos/getgrafico').subscribe((res) => { - console.log('RIhhjhjhSE', Object.keys(res[0])); + this.http.get('https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/getgrafico').subscribe((res) => { + console.log('RIhhjhjhSE', res); /* this.chartObj.dataR = Object.values(res[0]); */ /* this.chartObj.labels = Object.keys(res[0]); */ - this.montarGrafico(res[0]); + this.montarGrafico(res); }); } diff --git a/FrontEnd/src/Services/getDataSrv.service.ts b/FrontEnd/src/Services/getDataSrv.service.ts index c0e6f736e..008450422 100644 --- a/FrontEnd/src/Services/getDataSrv.service.ts +++ b/FrontEnd/src/Services/getDataSrv.service.ts @@ -12,13 +12,15 @@ export class GetDataService { getData: 'https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/getcurso', saveData: 'https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/writecurso', editData: 'https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/updatecurso', - deleteData: 'https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/deletecurso' + deleteData: 'https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/deletecurso', + getProfessor: 'https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/getprofessor' }; constructor(public http: HttpClient) { } getData() { return this.http.get(this.Api.getData).toPromise().then((res: CursoModel[]) => { this.Dados = res; - /* console.log(res)this.selectedData */ + console.log('LInha 21', res); + const resultado = res; return resultado; }); @@ -34,7 +36,8 @@ export class GetDataService { horaFinal: item.horaFinal, editar: false }; - return this.http.post(this.Api.saveData, body) + const jsonBody = JSON.stringify(body); + return this.http.post(this.Api.saveData, jsonBody) .toPromise().then((res) => { console.log(res); return res; @@ -50,29 +53,27 @@ export class GetDataService { horaFinal: item.horaFinal, editar: true }; - - return this.http.post(this.Api.editData, body) + const jsonBody = JSON.stringify(body); + return this.http.post(this.Api.editData, jsonBody) .toPromise().then((res) => { console.log(res); return res; }); } - DeleteData(id) { - const body = id; -this.http.delete(this.Api.deleteData, body).pipe((map)) + DeleteData(key) { + const body = { + id: key + }; + const jsonBody = JSON.stringify(body); + return this.http.post(this.Api.deleteData, jsonBody).toPromise().then((res) => { + console.log(res); + return res; + }); } getProfessor() { - for (let i = 0; i < this.Dados.length; i++) { - const element = this.Dados[i]; - if (this.Arr_professor.indexOf(element.professor) <= -1) { - this.Arr_professor.push(element.professor); - } else { - console.log('N adiciona'); - } - /* console.log('resultado do array de professores', this.Arr_professor); */ - - } - return this.Arr_professor; + return this.http.get(this.Api.getProfessor).toPromise().then((res) => { + return res; + }); } getSalas() { const Arr_Salas = []; diff --git a/FrontEnd/src/Services/loginSrv.service.ts b/FrontEnd/src/Services/loginSrv.service.ts index 71b05c81d..34e1ef113 100644 --- a/FrontEnd/src/Services/loginSrv.service.ts +++ b/FrontEnd/src/Services/loginSrv.service.ts @@ -5,15 +5,17 @@ import { Router } from '@angular/router'; import { map } from 'rxjs/operators'; @Injectable() export class LoginSrvService { - + Api = 'https://ahhhoqhy2d.execute-api.us-east-1.amazonaws.com/DEV/login'; constructor(public http: HttpClient, public route: Router) { } login(LoginData: LoginModel) { - console.log(LoginData); - - 'http://localhost:3000/login/usuario/:usuario/senha/:senha'; - return this.http.get('http://localhost:3000/login/usuario/' + LoginData.username + '/senha/' + LoginData.password) + const body = { + usuario: LoginData.username, + senha: LoginData.password + }; + const jsonBody = JSON.stringify(body); + return this.http.post(this.Api, jsonBody) .toPromise().then((data) => { console.log(data); return data; From f3d1e016e5a7058860463d4d6aecf29867a0cc5b Mon Sep 17 00:00:00 2001 From: Iago Date: Fri, 26 Oct 2018 12:01:32 -0300 Subject: [PATCH 25/26] Entrega --- Banco de Dados/ApiGateway.JPG | Bin 0 -> 96231 bytes .../Components/cursos/cursos.component.html | 19 +++++++++++++++--- .../src/Components/cursos/cursos.component.ts | 17 ++++++++++++++-- .../Components/graficos/graficos.component.ts | 4 ---- FrontEnd/src/Services/getDataSrv.service.ts | 2 ++ 5 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 Banco de Dados/ApiGateway.JPG diff --git a/Banco de Dados/ApiGateway.JPG b/Banco de Dados/ApiGateway.JPG new file mode 100644 index 0000000000000000000000000000000000000000..91b6b57ce5d19fdb9eff9e86e2ca75423eaa8e0d GIT binary patch literal 96231 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 z

Y*DzHp;wfo@W#FpNtB3?pN0b??#z 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 RWd1uxSpJ944daj5{{?o+1bzSj literal 0 HcmV?d00001 diff --git a/FrontEnd/src/Components/cursos/cursos.component.html b/FrontEnd/src/Components/cursos/cursos.component.html index e2583a356..b36e0d107 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.html +++ b/FrontEnd/src/Components/cursos/cursos.component.html @@ -1,12 +1,12 @@

- +

{{item.materia}}

- +
- +

Professor(a) {{item.professor}}

Sala {{item.sala}}

@@ -66,4 +66,17 @@

Professor(a) {{item.professor}}

+ + + + + +

Deseja deletar esse item?

+
+ + + + + +
\ No newline at end of file diff --git a/FrontEnd/src/Components/cursos/cursos.component.ts b/FrontEnd/src/Components/cursos/cursos.component.ts index b1c2417d8..dc2ab0464 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.ts +++ b/FrontEnd/src/Components/cursos/cursos.component.ts @@ -25,6 +25,7 @@ export class CursosComponent implements OnInit { horaFinal: null as any }; @ViewChild('dialog') dialog: TemplateRef; + @ViewChild('confirmDelete') confirmDelete: TemplateRef; dropdowns = { Arr_professor: null as Array, Arr_sala: null as Array @@ -51,7 +52,6 @@ export class CursosComponent implements OnInit { loadData() { this.getDataSrv.getData().then((res: any) => { this.Dados = res; - /* this.Dados.horaInicial = */ this.getDataSrv.getProfessor().then((professor: string[]) => { this.dropdowns.Arr_professor = professor; }); @@ -60,7 +60,6 @@ export class CursosComponent implements OnInit { }); } openSalvar() { - this.selectedData.id = null as number; this.selectedData.materia = null; this.selectedData.professor = null; @@ -98,6 +97,7 @@ export class CursosComponent implements OnInit { if (this.Destino === config.abrirEdição) { this.getDataSrv.editData(this.selectedData).then((s) => { console.log(s); + this.Dados = []; this.loadData(); btn.close(); }); @@ -107,4 +107,17 @@ export class CursosComponent implements OnInit { console.log(this.selectedData); } + openDelete(dialog: TemplateRef, PrimaryKey) { + console.log('linha 111 de cursos', PrimaryKey); + + this.selectedData.id = PrimaryKey; + this.dialogService.open(this.confirmDelete); + } + delete(btn) { + this.getDataSrv.DeleteData(this.selectedData.id).then((s) => { + this.Dados = []; + this.loadData(); + btn.close(); + }); + } } diff --git a/FrontEnd/src/Components/graficos/graficos.component.ts b/FrontEnd/src/Components/graficos/graficos.component.ts index 452d5419d..486ec2f77 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.ts +++ b/FrontEnd/src/Components/graficos/graficos.component.ts @@ -30,11 +30,7 @@ export class GraficosComponent implements OnInit { } carga() { this.http.get('https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/getgrafico').subscribe((res) => { - console.log('RIhhjhjhSE', res); - /* this.chartObj.dataR = Object.values(res[0]); */ - /* this.chartObj.labels = Object.keys(res[0]); */ this.montarGrafico(res); - }); } diff --git a/FrontEnd/src/Services/getDataSrv.service.ts b/FrontEnd/src/Services/getDataSrv.service.ts index 008450422..70e695292 100644 --- a/FrontEnd/src/Services/getDataSrv.service.ts +++ b/FrontEnd/src/Services/getDataSrv.service.ts @@ -65,6 +65,8 @@ export class GetDataService { id: key }; const jsonBody = JSON.stringify(body); + console.log(jsonBody); + return this.http.post(this.Api.deleteData, jsonBody).toPromise().then((res) => { console.log(res); return res; From ae901752d723ad836a82195791fcd73d17d1c61b Mon Sep 17 00:00:00 2001 From: Iago Date: Fri, 26 Oct 2018 12:01:32 -0300 Subject: [PATCH 26/26] =?UTF-8?q?Entrega.=20Agr=20usando=20o=20DynamoDB,?= =?UTF-8?q?=20ApiGateway=20e=20fun=C3=A7=C3=B5es=20lambda=20da=20AWS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Banco de Dados/ApiGateway.JPG | Bin 0 -> 96231 bytes .../Components/cursos/cursos.component.html | 19 +++++++++++++++--- .../src/Components/cursos/cursos.component.ts | 17 ++++++++++++++-- .../Components/graficos/graficos.component.ts | 4 ---- FrontEnd/src/Services/getDataSrv.service.ts | 2 ++ 5 files changed, 33 insertions(+), 9 deletions(-) create mode 100644 Banco de Dados/ApiGateway.JPG diff --git a/Banco de Dados/ApiGateway.JPG b/Banco de Dados/ApiGateway.JPG new file mode 100644 index 0000000000000000000000000000000000000000..91b6b57ce5d19fdb9eff9e86e2ca75423eaa8e0d GIT binary patch literal 96231 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 z

Y*DzHp;wfo@W#FpNtB3?pN0b??#z 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 RWd1uxSpJ944daj5{{?o+1bzSj literal 0 HcmV?d00001 diff --git a/FrontEnd/src/Components/cursos/cursos.component.html b/FrontEnd/src/Components/cursos/cursos.component.html index e2583a356..b36e0d107 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.html +++ b/FrontEnd/src/Components/cursos/cursos.component.html @@ -1,12 +1,12 @@

- +

{{item.materia}}

- +
- +

Professor(a) {{item.professor}}

Sala {{item.sala}}

@@ -66,4 +66,17 @@

Professor(a) {{item.professor}}

+ + + + + +

Deseja deletar esse item?

+
+ + + + + +
\ No newline at end of file diff --git a/FrontEnd/src/Components/cursos/cursos.component.ts b/FrontEnd/src/Components/cursos/cursos.component.ts index b1c2417d8..dc2ab0464 100644 --- a/FrontEnd/src/Components/cursos/cursos.component.ts +++ b/FrontEnd/src/Components/cursos/cursos.component.ts @@ -25,6 +25,7 @@ export class CursosComponent implements OnInit { horaFinal: null as any }; @ViewChild('dialog') dialog: TemplateRef; + @ViewChild('confirmDelete') confirmDelete: TemplateRef; dropdowns = { Arr_professor: null as Array, Arr_sala: null as Array @@ -51,7 +52,6 @@ export class CursosComponent implements OnInit { loadData() { this.getDataSrv.getData().then((res: any) => { this.Dados = res; - /* this.Dados.horaInicial = */ this.getDataSrv.getProfessor().then((professor: string[]) => { this.dropdowns.Arr_professor = professor; }); @@ -60,7 +60,6 @@ export class CursosComponent implements OnInit { }); } openSalvar() { - this.selectedData.id = null as number; this.selectedData.materia = null; this.selectedData.professor = null; @@ -98,6 +97,7 @@ export class CursosComponent implements OnInit { if (this.Destino === config.abrirEdição) { this.getDataSrv.editData(this.selectedData).then((s) => { console.log(s); + this.Dados = []; this.loadData(); btn.close(); }); @@ -107,4 +107,17 @@ export class CursosComponent implements OnInit { console.log(this.selectedData); } + openDelete(dialog: TemplateRef, PrimaryKey) { + console.log('linha 111 de cursos', PrimaryKey); + + this.selectedData.id = PrimaryKey; + this.dialogService.open(this.confirmDelete); + } + delete(btn) { + this.getDataSrv.DeleteData(this.selectedData.id).then((s) => { + this.Dados = []; + this.loadData(); + btn.close(); + }); + } } diff --git a/FrontEnd/src/Components/graficos/graficos.component.ts b/FrontEnd/src/Components/graficos/graficos.component.ts index 452d5419d..486ec2f77 100644 --- a/FrontEnd/src/Components/graficos/graficos.component.ts +++ b/FrontEnd/src/Components/graficos/graficos.component.ts @@ -30,11 +30,7 @@ export class GraficosComponent implements OnInit { } carga() { this.http.get('https://ew12lbci58.execute-api.us-east-1.amazonaws.com/DEV/getgrafico').subscribe((res) => { - console.log('RIhhjhjhSE', res); - /* this.chartObj.dataR = Object.values(res[0]); */ - /* this.chartObj.labels = Object.keys(res[0]); */ this.montarGrafico(res); - }); } diff --git a/FrontEnd/src/Services/getDataSrv.service.ts b/FrontEnd/src/Services/getDataSrv.service.ts index 008450422..70e695292 100644 --- a/FrontEnd/src/Services/getDataSrv.service.ts +++ b/FrontEnd/src/Services/getDataSrv.service.ts @@ -65,6 +65,8 @@ export class GetDataService { id: key }; const jsonBody = JSON.stringify(body); + console.log(jsonBody); + return this.http.post(this.Api.deleteData, jsonBody).toPromise().then((res) => { console.log(res); return res;