From e830cbc1541e0e0b6d6a89e9eb3c2919f15efedd Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Fri, 20 Nov 2020 14:37:00 -0300 Subject: [PATCH 01/45] feat(project): create project --- frontend/celso-lisboa/.browserslistrc | 18 + frontend/celso-lisboa/.editorconfig | 16 + frontend/celso-lisboa/.gitignore | 46 + frontend/celso-lisboa/README.md | 27 + frontend/celso-lisboa/angular.json | 132 + frontend/celso-lisboa/e2e/protractor.conf.js | 36 + frontend/celso-lisboa/e2e/src/app.e2e-spec.ts | 23 + frontend/celso-lisboa/e2e/src/app.po.ts | 11 + frontend/celso-lisboa/e2e/tsconfig.json | 14 + frontend/celso-lisboa/karma.conf.js | 32 + frontend/celso-lisboa/package-lock.json | 13759 ++++++++++++++++ frontend/celso-lisboa/package.json | 46 + .../src/app/app-routing.module.ts | 10 + .../celso-lisboa/src/app/app.component.html | 534 + .../celso-lisboa/src/app/app.component.scss | 0 .../src/app/app.component.spec.ts | 35 + .../celso-lisboa/src/app/app.component.ts | 10 + frontend/celso-lisboa/src/app/app.module.ts | 18 + frontend/celso-lisboa/src/assets/.gitkeep | 0 .../src/environments/environment.prod.ts | 3 + .../src/environments/environment.ts | 16 + frontend/celso-lisboa/src/favicon.ico | Bin 0 -> 948 bytes frontend/celso-lisboa/src/index.html | 13 + frontend/celso-lisboa/src/main.ts | 12 + frontend/celso-lisboa/src/polyfills.ts | 63 + frontend/celso-lisboa/src/styles.scss | 1 + frontend/celso-lisboa/src/test.ts | 25 + frontend/celso-lisboa/tsconfig.app.json | 15 + frontend/celso-lisboa/tsconfig.json | 20 + frontend/celso-lisboa/tsconfig.spec.json | 18 + frontend/celso-lisboa/tslint.json | 152 + package-lock.json | 102 +- 32 files changed, 15156 insertions(+), 51 deletions(-) create mode 100644 frontend/celso-lisboa/.browserslistrc create mode 100644 frontend/celso-lisboa/.editorconfig create mode 100644 frontend/celso-lisboa/.gitignore create mode 100644 frontend/celso-lisboa/README.md create mode 100644 frontend/celso-lisboa/angular.json create mode 100644 frontend/celso-lisboa/e2e/protractor.conf.js create mode 100644 frontend/celso-lisboa/e2e/src/app.e2e-spec.ts create mode 100644 frontend/celso-lisboa/e2e/src/app.po.ts create mode 100644 frontend/celso-lisboa/e2e/tsconfig.json create mode 100644 frontend/celso-lisboa/karma.conf.js create mode 100644 frontend/celso-lisboa/package-lock.json create mode 100644 frontend/celso-lisboa/package.json create mode 100644 frontend/celso-lisboa/src/app/app-routing.module.ts create mode 100644 frontend/celso-lisboa/src/app/app.component.html create mode 100644 frontend/celso-lisboa/src/app/app.component.scss create mode 100644 frontend/celso-lisboa/src/app/app.component.spec.ts create mode 100644 frontend/celso-lisboa/src/app/app.component.ts create mode 100644 frontend/celso-lisboa/src/app/app.module.ts create mode 100644 frontend/celso-lisboa/src/assets/.gitkeep create mode 100644 frontend/celso-lisboa/src/environments/environment.prod.ts create mode 100644 frontend/celso-lisboa/src/environments/environment.ts create mode 100644 frontend/celso-lisboa/src/favicon.ico create mode 100644 frontend/celso-lisboa/src/index.html create mode 100644 frontend/celso-lisboa/src/main.ts create mode 100644 frontend/celso-lisboa/src/polyfills.ts create mode 100644 frontend/celso-lisboa/src/styles.scss create mode 100644 frontend/celso-lisboa/src/test.ts create mode 100644 frontend/celso-lisboa/tsconfig.app.json create mode 100644 frontend/celso-lisboa/tsconfig.json create mode 100644 frontend/celso-lisboa/tsconfig.spec.json create mode 100644 frontend/celso-lisboa/tslint.json diff --git a/frontend/celso-lisboa/.browserslistrc b/frontend/celso-lisboa/.browserslistrc new file mode 100644 index 0000000..0ccadaf --- /dev/null +++ b/frontend/celso-lisboa/.browserslistrc @@ -0,0 +1,18 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# For the full list of supported browsers by the Angular framework, please see: +# https://angular.io/guide/browser-support + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +last 1 Chrome version +last 1 Firefox version +last 2 Edge major versions +last 2 Safari major versions +last 2 iOS major versions +Firefox ESR +not IE 9-10 # Angular support for IE 9-10 has been deprecated and will be removed as of Angular v11. To opt-in, remove the 'not' prefix on this line. +not IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. diff --git a/frontend/celso-lisboa/.editorconfig b/frontend/celso-lisboa/.editorconfig new file mode 100644 index 0000000..59d9a3a --- /dev/null +++ b/frontend/celso-lisboa/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/frontend/celso-lisboa/.gitignore b/frontend/celso-lisboa/.gitignore new file mode 100644 index 0000000..86d943a --- /dev/null +++ b/frontend/celso-lisboa/.gitignore @@ -0,0 +1,46 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc +# Only exists if Bazel was run +/bazel-out + +# dependencies +/node_modules + +# profiling files +chrome-profiler-events*.json +speed-measure-plugin*.json + +# 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 +.history/* + +# 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/celso-lisboa/README.md b/frontend/celso-lisboa/README.md new file mode 100644 index 0000000..8dc1dda --- /dev/null +++ b/frontend/celso-lisboa/README.md @@ -0,0 +1,27 @@ +# CelsoLisboa + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.2. + +## 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/celso-lisboa/angular.json b/frontend/celso-lisboa/angular.json new file mode 100644 index 0000000..e5a26fe --- /dev/null +++ b/frontend/celso-lisboa/angular.json @@ -0,0 +1,132 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "celso-lisboa": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist/celso-lisboa", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "aot": true, + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [] + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "extractCss": true, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb", + "maximumError": "10kb" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "celso-lisboa:build" + }, + "configurations": { + "production": { + "browserTarget": "celso-lisboa:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "celso-lisboa:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [] + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "tsconfig.app.json", + "tsconfig.spec.json", + "e2e/tsconfig.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "celso-lisboa:serve" + }, + "configurations": { + "production": { + "devServerTarget": "celso-lisboa:serve:production" + } + } + } + } + } + }, + "defaultProject": "celso-lisboa", + "cli": { + "analytics": "69c825c8-3b85-4944-af2c-c9103d1b0294" + } +} \ No newline at end of file diff --git a/frontend/celso-lisboa/e2e/protractor.conf.js b/frontend/celso-lisboa/e2e/protractor.conf.js new file mode 100644 index 0000000..f238c0b --- /dev/null +++ b/frontend/celso-lisboa/e2e/protractor.conf.js @@ -0,0 +1,36 @@ +// @ts-check +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter, StacktraceOption } = require('jasmine-spec-reporter'); + +/** + * @type { import("protractor").Config } + */ +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.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ + spec: { + displayStacktrace: StacktraceOption.PRETTY + } + })); + } +}; \ No newline at end of file diff --git a/frontend/celso-lisboa/e2e/src/app.e2e-spec.ts b/frontend/celso-lisboa/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..4050dcd --- /dev/null +++ b/frontend/celso-lisboa/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual('celso-lisboa app is running!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/frontend/celso-lisboa/e2e/src/app.po.ts b/frontend/celso-lisboa/e2e/src/app.po.ts new file mode 100644 index 0000000..b68475e --- /dev/null +++ b/frontend/celso-lisboa/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo(): Promise { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText(): Promise { + return element(by.css('app-root .content span')).getText() as Promise; + } +} diff --git a/frontend/celso-lisboa/e2e/tsconfig.json b/frontend/celso-lisboa/e2e/tsconfig.json new file mode 100644 index 0000000..426058e --- /dev/null +++ b/frontend/celso-lisboa/e2e/tsconfig.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es2018", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/frontend/celso-lisboa/karma.conf.js b/frontend/celso-lisboa/karma.conf.js new file mode 100644 index 0000000..23e60b0 --- /dev/null +++ b/frontend/celso-lisboa/karma.conf.js @@ -0,0 +1,32 @@ +// 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/celso-lisboa'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/frontend/celso-lisboa/package-lock.json b/frontend/celso-lisboa/package-lock.json new file mode 100644 index 0000000..77ae0ae --- /dev/null +++ b/frontend/celso-lisboa/package-lock.json @@ -0,0 +1,13759 @@ +{ + "name": "celso-lisboa", + "version": "0.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@angular-devkit/architect": { + "version": "0.1001.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1001.7.tgz", + "integrity": "sha512-uFYIvMdewU44GbIyRfsUHNMLkx+C0kokpnj7eH5NbJfbyFpCfd3ijBHh+voPdPsDRWs9lLgjbxfHpswSPj4D8w==", + "dev": true, + "requires": { + "@angular-devkit/core": "10.1.7", + "rxjs": "6.6.2" + }, + "dependencies": { + "rxjs": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/build-angular": { + "version": "0.1001.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1001.7.tgz", + "integrity": "sha512-0y1m7Y2HiB4BhRaVJbqqf/IXAEAisEeATwCd9NrhixZeBFT1tJa5sZAxKl8HTIEXbWZp4QKLVa+PMhvsGC68zQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1001.7", + "@angular-devkit/build-optimizer": "0.1001.7", + "@angular-devkit/build-webpack": "0.1001.7", + "@angular-devkit/core": "10.1.7", + "@babel/core": "7.11.1", + "@babel/generator": "7.11.0", + "@babel/plugin-transform-runtime": "7.11.0", + "@babel/preset-env": "7.11.0", + "@babel/runtime": "7.11.2", + "@babel/template": "7.10.4", + "@jsdevtools/coverage-istanbul-loader": "3.0.5", + "@ngtools/webpack": "10.1.7", + "autoprefixer": "9.8.6", + "babel-loader": "8.1.0", + "browserslist": "^4.9.1", + "cacache": "15.0.5", + "caniuse-lite": "^1.0.30001032", + "circular-dependency-plugin": "5.2.0", + "copy-webpack-plugin": "6.0.3", + "core-js": "3.6.4", + "css-loader": "4.2.2", + "cssnano": "4.1.10", + "file-loader": "6.0.0", + "find-cache-dir": "3.3.1", + "glob": "7.1.6", + "jest-worker": "26.3.0", + "karma-source-map-support": "1.4.0", + "less-loader": "6.2.0", + "license-webpack-plugin": "2.3.0", + "loader-utils": "2.0.0", + "mini-css-extract-plugin": "0.10.0", + "minimatch": "3.0.4", + "open": "7.2.0", + "parse5": "6.0.1", + "parse5-htmlparser2-tree-adapter": "6.0.1", + "pnp-webpack-plugin": "1.6.4", + "postcss": "7.0.32", + "postcss-import": "12.0.1", + "postcss-loader": "3.0.0", + "raw-loader": "4.0.1", + "regenerator-runtime": "0.13.7", + "resolve-url-loader": "3.1.1", + "rimraf": "3.0.2", + "rollup": "2.26.5", + "rxjs": "6.6.2", + "sass": "1.26.10", + "sass-loader": "10.0.1", + "semver": "7.3.2", + "source-map": "0.7.3", + "source-map-loader": "1.0.2", + "source-map-support": "0.5.19", + "speed-measure-webpack-plugin": "1.3.3", + "style-loader": "1.2.1", + "stylus": "0.54.8", + "stylus-loader": "3.0.2", + "terser": "5.3.0", + "terser-webpack-plugin": "4.1.0", + "tree-kill": "1.2.2", + "webpack": "4.44.1", + "webpack-dev-middleware": "3.7.2", + "webpack-dev-server": "3.11.0", + "webpack-merge": "4.2.2", + "webpack-sources": "1.4.3", + "webpack-subresource-integrity": "1.4.1", + "worker-plugin": "5.0.0" + }, + "dependencies": { + "rxjs": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/build-optimizer": { + "version": "0.1001.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1001.7.tgz", + "integrity": "sha512-QkjWbX44mR9fnKbgq93ikTKWCMk9HFVDMVTgoponLqVmjOz614K0ya6ZR3pNvA0RAwGxmKA79zgqUkqEHaQDbw==", + "dev": true, + "requires": { + "loader-utils": "2.0.0", + "source-map": "0.7.3", + "tslib": "2.0.1", + "typescript": "4.0.2", + "webpack-sources": "1.4.3" + }, + "dependencies": { + "tslib": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==", + "dev": true + }, + "typescript": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", + "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.1001.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1001.7.tgz", + "integrity": "sha512-2EUOkijukSVXJlMk5PTWlbAcTdMZ9dddRj4XoTLX1N/ZL5qBSE8BN+Jf5We/NPkAdq2apU8Crl9BuGcVeK4wOA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1001.7", + "@angular-devkit/core": "10.1.7", + "rxjs": "6.6.2" + }, + "dependencies": { + "rxjs": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/core": { + "version": "10.1.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-10.1.7.tgz", + "integrity": "sha512-RRyDkN2FByA+nlnRx/MzUMK1FXwj7+SsrzJcvZfWx4yA5rfKmJiJryXQEzL44GL1aoaXSuvOYu3H72wxZADN8Q==", + "dev": true, + "requires": { + "ajv": "6.12.4", + "fast-json-stable-stringify": "2.1.0", + "magic-string": "0.25.7", + "rxjs": "6.6.2", + "source-map": "0.7.3" + }, + "dependencies": { + "rxjs": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/schematics": { + "version": "10.1.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-10.1.7.tgz", + "integrity": "sha512-nk9RXA09b+7uq59HS/gyztNzUGHH/eQAUQhWHdDYSCG6v1lhJVCKx1HgDPELVxmeq9f+HArkAW7Y7c+ccdNQ7A==", + "dev": true, + "requires": { + "@angular-devkit/core": "10.1.7", + "ora": "5.0.0", + "rxjs": "6.6.2" + }, + "dependencies": { + "rxjs": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular/animations": { + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-10.1.6.tgz", + "integrity": "sha512-XMTribgDJOb7hxK3e39yjm/Ez7qdP7SHQuei6dT2cDQKHMNflstDM2MWF8sXonzrniVgNKwiRaCx7UTx21azGQ==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/cli": { + "version": "10.1.7", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-10.1.7.tgz", + "integrity": "sha512-0tbeHnPIzSV/z+KlZT7N2J1yMnwQi4xIxvbsANrLjoAxNssse84i9BDdMZYsPoV8wbzcDhFOtt5KmfTO0GIeYQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1001.7", + "@angular-devkit/core": "10.1.7", + "@angular-devkit/schematics": "10.1.7", + "@schematics/angular": "10.1.7", + "@schematics/update": "0.1001.7", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.1", + "debug": "4.1.1", + "ini": "1.3.5", + "inquirer": "7.3.3", + "npm-package-arg": "8.0.1", + "npm-pick-manifest": "6.1.0", + "open": "7.2.0", + "pacote": "9.5.12", + "read-package-tree": "5.3.1", + "rimraf": "3.0.2", + "semver": "7.3.2", + "symbol-observable": "1.2.0", + "universal-analytics": "0.4.23", + "uuid": "8.3.0" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", + "dev": true + } + } + }, + "@angular/common": { + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-10.1.6.tgz", + "integrity": "sha512-4ywlUHHF5ofZRTHJ/jQTHoO8Tu05Wvn+3N7swaJ9yAfiywbSE4Bop6FYsocxaxROrGS0k6Unvgj8+J7x6AeqlA==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/compiler": { + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-10.1.6.tgz", + "integrity": "sha512-LynYIrzSV+7pVcY5a3N3mCtyZ2eMKzIk1iKLI76w4PHfJBTpBuv8L8aSy/kmnaPwCT/YM/657DMMy2A4HwU5nw==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/compiler-cli": { + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-10.1.6.tgz", + "integrity": "sha512-FPb/9E4HEhFWlCPf85xtmgXDmnD+iTtfjPATEMERRY0/si1Or9JeFya2VLdWldOmBQYqnvxc9o/rpdNkpT8TYA==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.7.2", + "fs-extra": "4.0.2", + "magic-string": "^0.25.0", + "minimist": "^1.2.0", + "reflect-metadata": "^0.1.2", + "semver": "^6.3.0", + "source-map": "^0.6.1", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.0.0", + "yargs": "15.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "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 + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.0.tgz", + "integrity": "sha512-g/QCnmjgOl1YJjGsnUg2SatC7NUYEiLXJqxNOQU9qSpjzGtGXda9b+OKccr1kLTy8BN9yqEyqfq5lxlwdc13TA==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.0" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@angular/core": { + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-10.1.6.tgz", + "integrity": "sha512-sUleQouCedT87VOCb49T7cm6La2VeJg1omtO5+QfjWmifNcQ/nqV56Zxov3RT7CmsVwVbkA0X5Q62oSEPAUXrw==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/forms": { + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-10.1.6.tgz", + "integrity": "sha512-sTPnwL0r7lniv2/XU4nK3eU9osGpGD4YdJ0qLsXfR/ku4mhgbKk/taVBTmAdQwWBUOOafzU1yG9asvsm8H1Kbw==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/platform-browser": { + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-10.1.6.tgz", + "integrity": "sha512-kN2ik35eBqFWNmKPRkZbp5qHkhNINf3PudFUy9ii8kP01OL+Nyrn0MBisIHl3sf+KOV8sf9dMQGPOyQDz22wig==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-10.1.6.tgz", + "integrity": "sha512-MOdaLnbAXVruYpV0Q5CXLb/fP6xHxWzjRhAh7sLaIIu/TnhTSZpxgxZxBx05hvzP4rH/7S2XvAiuQQomevCIXQ==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@angular/router": { + "version": "10.1.6", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-10.1.6.tgz", + "integrity": "sha512-MV8kSDhboFRH23MnrQvNGHncMb4nkdJDwS108p7oNZjjDkUUR3A5TMWmmN/3BRnue6JoPRWBCPyb53cA21schQ==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/compat-data": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==", + "dev": true + }, + "@babel/core": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.11.1.tgz", + "integrity": "sha512-XqF7F6FWQdKGGWAzGELL+aCO1p+lRY5Tj5/tbT3St1G8NaH70jhhDIKknIZaDans0OQBG5wRAldROLHSt44BgQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.0", + "@babel/helper-module-transforms": "^7.11.0", + "@babel/helpers": "^7.10.4", + "@babel/parser": "^7.11.1", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.11.0", + "@babel/types": "^7.11.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.19", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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 + } + } + }, + "@babel/generator": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.0.tgz", + "integrity": "sha512-fEm3Uzw7Mc9Xi//qU20cBKatTfs2aOtKqmvy/Vm7RkJEGFQ4xc9myCfbXxqK//ZS8MR/ciOHw6meGASJuKmDfQ==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz", + "integrity": "sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.4.tgz", + "integrity": "sha512-L0zGlFrGWZK4PbT8AszSfLTM5sDU1+Az/En9VrdT8/LmEiJt4zXt+Jve9DCAnQcbqDhCI+29y/L93mrDzddCcg==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-regex": "^7.10.4", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-map": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz", + "integrity": "sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/types": "^7.10.5", + "lodash": "^4.17.19" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.4.tgz", + "integrity": "sha512-wljroF5PgCk2juF69kanHVs6vrLwIPNp6DLD+Lrl3hoQ3PpPPikaDRNFA+0t81NOoMt2DL6WW/mdU8k4k6ZzuA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-module-imports": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-module-transforms": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", + "lodash": "^4.17.19" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz", + "integrity": "sha512-n3UGKY4VXwXThEiKrgRAoVPBMqeoPgHVqiHZOanAJCG9nQUL2pLRQirUzl0ioKclHGpGqRgIOkgcIJaIWLpygg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz", + "integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.5.tgz", + "integrity": "sha512-68kdUAzDrljqBrio7DYAEgCoJHxppJOERHOgOrDN7WjOzP0ZQ1LsSDRXcemzVZaLvjaJsJEESb6qt+znNuENDg==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-wrap-function": "^7.10.4", + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.12.1", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "@babel/helper-simple-access": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helpers": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", + "dev": true, + "requires": { + "@babel/template": "^7.10.4", + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.12.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.4", + "@babel/helper-define-map": "^7.10.4", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-optimise-call-expression": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-split-export-declaration": "^7.10.4", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.11.0.tgz", + "integrity": "sha512-LFEsP+t3wkYBlis8w6/kmnd6Kb1dxTd+wGJ8MlxTGzQo//ehtqlVL4S9DNUa53+dtPSQobN2CXx4d81FqC58cw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "resolve": "^1.8.1", + "semver": "^5.5.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-regex": "^7.10.4" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.12.1", + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/preset-env": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz", + "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.11.0", + "@babel/helper-compilation-targets": "^7.10.4", + "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-plugin-utils": "^7.10.4", + "@babel/plugin-proposal-async-generator-functions": "^7.10.4", + "@babel/plugin-proposal-class-properties": "^7.10.4", + "@babel/plugin-proposal-dynamic-import": "^7.10.4", + "@babel/plugin-proposal-export-namespace-from": "^7.10.4", + "@babel/plugin-proposal-json-strings": "^7.10.4", + "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", + "@babel/plugin-proposal-numeric-separator": "^7.10.4", + "@babel/plugin-proposal-object-rest-spread": "^7.11.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", + "@babel/plugin-proposal-optional-chaining": "^7.11.0", + "@babel/plugin-proposal-private-methods": "^7.10.4", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.4", + "@babel/plugin-transform-arrow-functions": "^7.10.4", + "@babel/plugin-transform-async-to-generator": "^7.10.4", + "@babel/plugin-transform-block-scoped-functions": "^7.10.4", + "@babel/plugin-transform-block-scoping": "^7.10.4", + "@babel/plugin-transform-classes": "^7.10.4", + "@babel/plugin-transform-computed-properties": "^7.10.4", + "@babel/plugin-transform-destructuring": "^7.10.4", + "@babel/plugin-transform-dotall-regex": "^7.10.4", + "@babel/plugin-transform-duplicate-keys": "^7.10.4", + "@babel/plugin-transform-exponentiation-operator": "^7.10.4", + "@babel/plugin-transform-for-of": "^7.10.4", + "@babel/plugin-transform-function-name": "^7.10.4", + "@babel/plugin-transform-literals": "^7.10.4", + "@babel/plugin-transform-member-expression-literals": "^7.10.4", + "@babel/plugin-transform-modules-amd": "^7.10.4", + "@babel/plugin-transform-modules-commonjs": "^7.10.4", + "@babel/plugin-transform-modules-systemjs": "^7.10.4", + "@babel/plugin-transform-modules-umd": "^7.10.4", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", + "@babel/plugin-transform-new-target": "^7.10.4", + "@babel/plugin-transform-object-super": "^7.10.4", + "@babel/plugin-transform-parameters": "^7.10.4", + "@babel/plugin-transform-property-literals": "^7.10.4", + "@babel/plugin-transform-regenerator": "^7.10.4", + "@babel/plugin-transform-reserved-words": "^7.10.4", + "@babel/plugin-transform-shorthand-properties": "^7.10.4", + "@babel/plugin-transform-spread": "^7.11.0", + "@babel/plugin-transform-sticky-regex": "^7.10.4", + "@babel/plugin-transform-template-literals": "^7.10.4", + "@babel/plugin-transform-typeof-symbol": "^7.10.4", + "@babel/plugin-transform-unicode-escapes": "^7.10.4", + "@babel/plugin-transform-unicode-regex": "^7.10.4", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.11.0", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", + "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.12.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/generator": { + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", + "dev": true, + "requires": { + "@babel/types": "^7.12.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.2.tgz", + "integrity": "sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw==", + "dev": true + }, + "@jsdevtools/coverage-istanbul-loader": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz", + "integrity": "sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==", + "dev": true, + "requires": { + "convert-source-map": "^1.7.0", + "istanbul-lib-instrument": "^4.0.3", + "loader-utils": "^2.0.0", + "merge-source-map": "^1.1.0", + "schema-utils": "^2.7.0" + } + }, + "@ngtools/webpack": { + "version": "10.1.7", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-10.1.7.tgz", + "integrity": "sha512-J/ePcuUfrh0tgnZ+Em4Rv0UYb8wBHARk//K0eVr/Qk5ziWEcYyOW3w3Hz6FbxwIElXvkj+/C9GOb1SapkzlEXg==", + "dev": true, + "requires": { + "@angular-devkit/core": "10.1.7", + "enhanced-resolve": "4.3.0", + "webpack-sources": "1.4.3" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@npmcli/move-file": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.0.1.tgz", + "integrity": "sha512-Uv6h1sT+0DrblvIrolFtbvM1FgWm+/sy4B3pvLp67Zys+thcukzS5ekn7HsZFGpWP4Q3fYJCljbWQE/XivMRLw==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "@schematics/angular": { + "version": "10.1.7", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-10.1.7.tgz", + "integrity": "sha512-jcyLWDSbpgHvB/BNVSsV4uLJpC2qRx9Z5+rcQpBB1BerqIPS/1cTQg7TViHZtcqnZqWvzHR3jfqzDUSOCZpuJQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "10.1.7", + "@angular-devkit/schematics": "10.1.7", + "jsonc-parser": "2.3.0" + } + }, + "@schematics/update": { + "version": "0.1001.7", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1001.7.tgz", + "integrity": "sha512-q7g/9YaAiqyWxYmUXiSWxB9xwc30xL5iUWY3Rp2LXSH6ihaRsLabmNr743R2YQmMj2Ss+9OhILHmj7nMmqODgw==", + "dev": true, + "requires": { + "@angular-devkit/core": "10.1.7", + "@angular-devkit/schematics": "10.1.7", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "npm-package-arg": "^8.0.0", + "pacote": "9.5.12", + "semver": "7.3.2", + "semver-intersect": "1.4.0" + } + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/jasmine": { + "version": "3.5.14", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.14.tgz", + "integrity": "sha512-Fkgk536sHPqcOtd+Ow+WiUNuk0TSo/BntKkF8wSvcd6M2FvPjeXcUE6Oz/bwDZiUZEaXLslAgw00Q94Pnx6T4w==", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.8.tgz", + "integrity": "sha512-d9p31r7Nxk0ZH0U39PTH0hiDlJ+qNVGjlt1ucOoTUptxb2v+Y5VMnsxfwN+i3hK4yQnqBi3FMmoMFcd1JHDxdg==", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/json-schema": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "12.19.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.6.tgz", + "integrity": "sha512-U2VopDdmBoYBmtm8Rz340mvvSz34VgX/K9+XCuckvcLGMkt3rbMX8soqFOikIPlPBc5lmw8By9NUK7bEFSBFlQ==", + "dev": true + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", + "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==", + "dev": true + }, + "@types/source-list-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", + "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", + "dev": true + }, + "@types/webpack-sources": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz", + "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/source-list-map": "*", + "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 + } + } + }, + "@webassemblyjs/ast": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abab": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + }, + "adjust-sourcemap-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", + "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", + "dev": true, + "requires": { + "assert": "1.4.1", + "camelcase": "5.0.0", + "loader-utils": "1.2.3", + "object-path": "0.11.4", + "regex-parser": "2.2.10" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + } + } + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "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.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.4", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", + "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + } + }, + "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": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-root-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", + "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "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" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=", + "dev": true + }, + "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-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "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.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "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 + }, + "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": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "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" + } + }, + "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 + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": 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": "9.8.6", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", + "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "colorette": "^1.2.1", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, + "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.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "axobject-query": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", + "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "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.4", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", + "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI=", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "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, + "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": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "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" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.3.tgz", + "integrity": "sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "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" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "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": "https://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.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "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": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" + } + }, + "browserstack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.0.tgz", + "integrity": "sha512-HJDJ0TSlmkwnt9RZ+v5gFpa1XZTBYTj0ywvLwJ3241J7vMw2jAsGNVhKHtmCOyg+VxeLZyaibO9UL71AsUeDIw==", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "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": "15.0.5", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", + "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", + "dev": true, + "requires": { + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.0", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "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" + } + }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", + "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001159", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001159.tgz", + "integrity": "sha512-w9Ph56jOsS8RL20K9cLND3u/+5WASWdhC/PPrf+V3/HsM3uHOavWOR1Xzakbv4Puo/srmPHudkmCRWM7Aq+/UA==", + "dev": true + }, + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", + "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.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.5.0" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "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.2.0", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", + "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", + "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-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", + "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "codelyzer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.1.tgz", + "integrity": "sha512-cOyGQgMdhnRYtW2xrJUNrNYDjEgwQ+BrE2y93Bwz3h4DJ6vJRLfupemU5N3pbYsUlBHJf0u1j1UGk+NLW4d97g==", + "dev": true, + "requires": { + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" + }, + "dependencies": { + "@angular/compiler": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", + "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", + "dev": true + }, + "@angular/core": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", + "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", + "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 + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "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": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.4" + } + }, + "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=", + "dev": true + }, + "color-string": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colorette": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.1.tgz", + "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "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.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "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 + }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "dev": true, + "requires": { + "arity-n": "^1.0.4" + } + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "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.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "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.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "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.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "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" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "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": "6.0.3", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.0.3.tgz", + "integrity": "sha512-q5m6Vz4elsuyVEIUXr7wJdIdePWTubsqVbEMvf1WQnHGv0Q+9yPRu7MtYFPt+GBOXRav9lvIINifTQ1vSCs+eA==", + "dev": true, + "requires": { + "cacache": "^15.0.4", + "fast-glob": "^3.2.4", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "p-limit": "^3.0.1", + "schema-utils": "^2.7.0", + "serialize-javascript": "^4.0.0", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "p-limit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + } + } + }, + "core-js": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.4.tgz", + "integrity": "sha512-4paDGScNgZP2IXXilaffL9X7968RuvwlkK3xWtZRVqgd8SYNiVKRJvkFd1aqqEuPfN7E68ZHEp9hDj6lHj4Hyw==", + "dev": true + }, + "core-js-compat": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", + "dev": true, + "requires": { + "browserslist": "^4.14.6", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "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": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://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": "https://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": "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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.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 + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-loader": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-4.2.2.tgz", + "integrity": "sha512-omVGsTkZPVwVRpckeUnLshPp12KsmMSLqYxs12+RzM9jRR5Y+Idn/tBffjXRvOE+qW7if24cuceFJqYR5FmGBg==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^2.0.0", + "postcss": "^7.0.32", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.3", + "postcss-modules-scope": "^2.2.0", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^2.7.0", + "semver": "^7.3.2" + } + }, + "css-parse": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", + "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", + "dev": true, + "requires": { + "css": "^2.0.0" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "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 + } + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "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": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.1.1.tgz", + "integrity": "sha512-Rvq+e1e0TFB8E8X+8MQjHSY6vtol45s5gxtLI/018UsAn2IBMmwNEZRM/h+HVnAJRHjasLIKKUO3uvoMM28LvA==", + "dev": true, + "requires": { + "css-tree": "^1.0.0" + }, + "dependencies": { + "css-tree": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.1.tgz", + "integrity": "sha512-NVN42M2fjszcUNpDbdkvutgQSlFYsr1z7kqeuCagHnNLBfYor6uP1WL1KrkmdYZ5Y1vTBCIOI/C/+8T98fJ71w==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "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 + } + } + }, + "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": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", + "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" + } + }, + "data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "requires": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + } + }, + "date-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "dev": true + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, + "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.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "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": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "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" + } + }, + "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 + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "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 + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "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-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://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" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.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-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.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", + "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==", + "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.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "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, + "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 + }, + "electron-to-chromium": { + "version": "1.3.603", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.603.tgz", + "integrity": "sha512-J8OHxOeJkoSLgBXfV9BHgKccgfLMHh+CoeRo6wJsi6m0k3otaxS/5vrHpMNSEYY4MISwewqanPOuhAtuE8riQQ==", + "dev": true + }, + "elliptic": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", + "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", + "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "0.3.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "ws": "^7.1.2" + }, + "dependencies": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ws": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.0.tgz", + "integrity": "sha512-kyFwXuV/5ymf+IXhS6f0+eAFvydbaBW3zjpT6hUdAh/hbVjTIB5EHBGi0bPoCLSK2wcuz3BrEkB9LrYv1Nm4NQ==", + "dev": true + } + } + }, + "engine.io-client": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.4.tgz", + "integrity": "sha512-iU4CRr38Fecj8HoZEnFtm2EiKGbYZcPn3cHxqNGl/tmdWRf60KhK+9vE0JeSjgnlS/0oynEfLgKbT9ALpim0sQ==", + "dev": true, + "requires": { + "component-emitter": "~1.3.0", + "component-inherit": "0.0.3", + "debug": "~3.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.6", + "parseuri": "0.0.6", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "parseqs": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", + "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==", + "dev": true + }, + "parseuri": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", + "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==", + "dev": true + }, + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", + "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.4", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz", + "integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.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": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "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.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "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" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "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 + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "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 + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "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": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "events": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.2.0.tgz", + "integrity": "sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "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": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.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" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "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": { + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "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.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "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 + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", + "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "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" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "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": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "fastq": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.9.0.tgz", + "integrity": "sha512-i7FVWL8HhVY+CTkwFxkN2mk3h+787ixS5S63eb78diVRc1MCssarHq3W5cj0av7YDSwmaV928RNag+U1etRQ7w==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "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" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-loader": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", + "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "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" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz", + "integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA==", + "dev": true + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "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.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "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-extra": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", + "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.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": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "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.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "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-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "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.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.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-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "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.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "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": { + "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" + } + } + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "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": "3.0.7", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.7.tgz", + "integrity": "sha512-fWqc0IcuXs+BmE9orLDyVykAG9GJtGLGuZAAqgcckPgv5xad4AcXGIv8galtQvlwutxSlaMcdw7BUtq2EIvqCQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "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" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "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.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + }, + "dependencies": { + "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" + } + } + } + }, + "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" + } + } + } + }, + "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" + } + } + } + }, + "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" + } + }, + "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" + } + } + } + }, + "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.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "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-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.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" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "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.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "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 + }, + "inquirer": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", + "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.19", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.6.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "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" + } + }, + "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.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "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-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "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": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.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-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "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-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "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.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "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-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "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-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "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-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": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", + "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 + }, + "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-lib-coverage": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", + "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "requires": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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": "3.0.2", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", + "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "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": "3.6.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", + "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz", + "integrity": "sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g==", + "dev": true, + "requires": { + "colors": "1.4.0" + } + }, + "jasminewd2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", + "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", + "dev": true + }, + "jest-worker": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.3.0.tgz", + "integrity": "sha512-Vmpn2F6IASefL+DVBhPzI2J9/GJUsqzomdeN+P+dK8/jKxbh8R3BtFnx3FIta7wYlPU62cpJMJQo4kuOowcMnw==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "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 + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "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-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "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.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "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.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonc-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.0.tgz", + "integrity": "sha512-b0EBt8SWFNnixVdvoR2ZtEGa9ZqLhbJnOjezn+WP+8kspFm+PFYDN8Z4Bc7pRlDjvuVcADSUkroIuTWWn/YiIA==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "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.5.0", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.5.0.tgz", + "integrity": "sha512-WRtu7TPCmYePR1nazfrtuF216cIVon/3GWOvHS9QR5bIwSbnxtdpma6un3jyGGNhHsKCSzn5Ypk+EkDRvTGiFA==", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "karma": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.9.tgz", + "integrity": "sha512-dUA5z7Lo7G4FRSe1ZAXqOINEEWxmCjDBbfRBmU/wYlSMwxUQJP/tEEP90yJt3Uqo03s9rCgVnxtlfq+uDhxSPg==", + "dev": true, + "requires": { + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.0.0", + "colors": "^1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "flatted": "^2.0.2", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.6", + "lodash": "^4.17.15", + "log4js": "^6.2.1", + "mime": "^2.4.5", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^2.3.0", + "source-map": "^0.6.1", + "tmp": "0.2.1", + "ua-parser-js": "0.7.21", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "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 + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", + "minimatch": "^3.0.4" + } + }, + "karma-jasmine": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", + "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", + "dev": true, + "requires": { + "jasmine-core": "^3.6.0" + } + }, + "karma-jasmine-html-reporter": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", + "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", + "dev": true + }, + "karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "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.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", + "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", + "dev": true + }, + "less": { + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/less/-/less-3.12.2.tgz", + "integrity": "sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q==", + "dev": true, + "requires": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "native-request": "^1.0.5", + "source-map": "~0.6.0", + "tslib": "^1.10.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 + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "less-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-6.2.0.tgz", + "integrity": "sha512-Cl5h95/Pz/PWub/tCBgT1oNMFeH1WTD33piG80jn5jr12T4XbxZcjThwNXDQ7AG649WEynuIzO4b0+2Tn9Qolg==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "less": "^3.11.3", + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.0" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "license-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-JK/DXrtN6UeYQSgkg5q1+pgJ8aiKPL9tnz9Wzw+Ikkf+8mJxG56x6t8O+OH/tAeF/5NREnelTEMyFtbJNkjH4w==", + "dev": true, + "requires": { + "@types/webpack-sources": "^0.1.5", + "webpack-sources": "^1.2.0" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "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" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": 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.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "requires": { + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log4js": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "dev": true, + "requires": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" + } + }, + "loglevel": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", + "integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==", + "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" + } + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "make-fetch-happen": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", + "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + }, + "dependencies": { + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "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-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" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "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 + }, + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "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 + }, + "merge-source-map": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", + "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", + "dev": true, + "requires": { + "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 + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "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": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "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" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "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.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.10.0.tgz", + "integrity": "sha512-QgKgJBjaJhxVPwrLNqqwNS0AGkuQQ31Hp4xGXEK/P7wehEg6qmNtReHKai3zRXqY60wGVWLYcOMJK2b98aGc3A==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "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": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "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": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "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" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "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" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "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 + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": 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" + } + }, + "native-request": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz", + "integrity": "sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==", + "dev": true, + "optional": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "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 + }, + "node-fetch-npm": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-forge": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "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": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "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.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + } + } + } + }, + "node-releases": { + "version": "1.1.67", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz", + "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "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 + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", + "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", + "dev": true, + "requires": { + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz", + "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==", + "dev": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.0.0", + "semver": "^7.0.0" + } + }, + "npm-registry-fetch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.7.tgz", + "integrity": "sha512-cny9v0+Mq6Tjz+e0erFAB+RYJ/AVGzkjnISiobqP8OWj9c9FLoZZu8/SPSKJWE17F1tk4018wfjV+ZbIbqC7fQ==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dev": true, + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "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" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "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-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-is": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-path": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=", + "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.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.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" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "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" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.2.0.tgz", + "integrity": "sha512-4HeyhxCvBTI5uBePsAdi55C5fmqnWZ2e2MlmvWi5KW5tdH5rxoiv/aMtbeVxKZc3eWkT1GymMnLG8XC4Rq4TDQ==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + }, + "dependencies": { + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + } + } + }, + "ora": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.0.0.tgz", + "integrity": "sha512-s26qdWqke2kjN/wC4dy+IQPBIMWBJlSU/0JZhk30ZDBLelW25rv66yutUWARMigpGPzcXHb+Nac5pNhN/WsARw==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.4.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "mute-stream": "0.0.8", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "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-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-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "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-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "pacote": { + "version": "9.5.12", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz", + "integrity": "sha512-BUIj/4kKbwWg4RtnBncXPJd15piFSVNpTzY0rysSr3VnMowTYgkGKcaHrbReepAkjTr8lH2CVWRi58Spg2CicQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "cacache": "^12.0.2", + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.4.0", + "npm-normalize-package-bin": "^1.0.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.1.12", + "npm-pick-manifest": "^3.0.0", + "npm-registry-fetch": "^4.0.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.2", + "safe-buffer": "^5.1.2", + "semver": "^5.6.0", + "ssri": "^6.0.1", + "tar": "^4.4.10", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dev": true, + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "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" + } + }, + "parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", + "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", + "dev": true, + "requires": { + "parse5": "^6.0.1" + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "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.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", + "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", + "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 + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "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": "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" + } + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "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": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.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 + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-import": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", + "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "postcss-value-parser": "^3.2.3", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-load-config": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "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" + } + } + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", + "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.32", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-selector-parser": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "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": { + "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.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + } + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "protractor": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", + "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" + }, + "dependencies": { + "@types/q": { + "version": "0.0.32", + "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", + "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "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 + }, + "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" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://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" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "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" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "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" + } + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "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" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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-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" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.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 + }, + "webdriver-manager": { + "version": "12.1.7", + "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.7.tgz", + "integrity": "sha512-XINj6b8CYuUYC93SG3xPkxlyUc3IJbD6Vvo75CVGuG9uzsefDzWQrhz0Lq8vbPxtb4d63CZdYophF8k8Or/YiA==", + "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" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "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", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "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.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "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.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "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.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "raw-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.1.tgz", + "integrity": "sha512-baolhQBSi3iNh1cglJjA0mYzga+wePk7vdEX//1dTFd+v4TsQlQE0jitJSNF1OIP82rdYulH7otaVmdlDaJ64A==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" + } + }, + "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-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "dev": true, + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "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" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "readdirp": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.7", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", + "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "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" + } + }, + "regex-parser": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", + "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpu-core": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "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 + } + } + }, + "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 + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "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.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.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "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 + } + } + }, + "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-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "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.19.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", + "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", + "dev": true, + "requires": { + "is-core-module": "^2.1.0", + "path-parse": "^1.0.6" + } + }, + "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 + }, + "resolve-url-loader": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", + "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "2.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.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 + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "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.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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" + } + }, + "rollup": { + "version": "2.26.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.26.5.tgz", + "integrity": "sha512-rCyFG3ZtQdnn9YwfuAVH0l/Om34BdO5lwCA0W6Hq+bNB21dVEBbCRxhaHOmu1G7OBFDWytbzAC104u7rxHwGjA==", + "dev": true, + "requires": { + "fsevents": "~2.1.2" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.10.tgz", + "integrity": "sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw==", + "dev": true + }, + "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.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "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": { + "version": "1.26.10", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.26.10.tgz", + "integrity": "sha512-bzN0uvmzfsTvjz0qwccN1sPm2HxxpNI/Xa+7PlUEMS+nQvbyuEK7Y0qFqxlPHhiNHb1Ze8WQJtU31olMObkAMw==", + "dev": true, + "requires": { + "chokidar": ">=2.0.0 <4.0.0" + } + }, + "sass-loader": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.0.1.tgz", + "integrity": "sha512-b2PSldKVTS3JcFPHSrEXh3BeAfR7XknGiGCAO5aHruR3Pf3kqLP3Gb2ypXLglRrAzgZkloNxLZ7GXEGDX0hBUQ==", + "dev": true, + "requires": { + "klona": "^2.0.3", + "loader-utils": "^2.0.0", + "neo-async": "^2.6.2", + "schema-utils": "^2.7.0", + "semver": "^7.3.2" + } + }, + "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": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "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": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", + "dev": true, + "requires": { + "node-forge": "^0.10.0" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "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.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.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" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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 + } + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "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" + }, + "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" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://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" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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 + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "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-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "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.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://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" + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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 + } + } + }, + "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": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", + "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", + "dev": true, + "requires": { + "debug": "~4.1.0", + "engine.io": "~3.4.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.3.0", + "socket.io-parser": "~3.4.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "socket.io-adapter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", + "dev": true + }, + "socket.io-client": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", + "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "engine.io-client": "~3.4.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "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 + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "socket.io-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.1.tgz", + "integrity": "sha512-1QLvVAe8dTz+mKmZ07Swxt+LAo4Y1ff50rlyoEx00TQmDFVQYPfcqGvIDJLGaBdhdNCecXtyKpD+EgKGcmmbuQ==", + "dev": true, + "requires": { + "component-emitter": "~1.3.0", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + } + } + }, + "socket.io-parser": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", + "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "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 + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", + "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.4.0", + "websocket-driver": "0.6.5" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "dev": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "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" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "source-map-loader": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.0.2.tgz", + "integrity": "sha512-oX8d6ndRjN+tVyjj6PlXSyFPhDdVAPsZA30nD3/II8g4uOv8fCz0DMn5sy8KtVbDfKQxOpGwGJnK3xIW3tauDw==", + "dev": true, + "requires": { + "data-urls": "^2.0.0", + "iconv-lite": "^0.6.2", + "loader-utils": "^2.0.0", + "schema-utils": "^2.7.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 + } + } + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "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.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "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 + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", + "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "speed-measure-webpack-plugin": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz", + "integrity": "sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "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.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "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": "8.0.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz", + "integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "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.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "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.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "dev": true, + "requires": { + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "string.prototype.trimstart": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "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-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "style-loader": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.2.1.tgz", + "integrity": "sha512-ByHSTQvHLkWE9Ir5+lGbVOXhxX10fbprhLvdg96wedFZb4NDekDPxVKv5Fwmio+QcMlkkNfuK+5W1peQ5CUhZg==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.6" + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "stylus": { + "version": "0.54.8", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", + "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", + "dev": true, + "requires": { + "css-parse": "~2.0.0", + "debug": "~3.1.0", + "glob": "^7.1.6", + "mkdirp": "~1.0.4", + "safer-buffer": "^2.1.2", + "sax": "~1.2.4", + "semver": "^6.3.0", + "source-map": "^0.7.3" + }, + "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" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "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" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.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.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "tar": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.0.5.tgz", + "integrity": "sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "terser": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.0.tgz", + "integrity": "sha512-XTT3D3AwxC54KywJijmY2mxZ8nJiEjBHVYzq8l9OaYuRFWeQNBwvipuzzYEP4e+/AVcd1hqG/CqgsdIRyT45Fg==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "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 + } + } + }, + "terser-webpack-plugin": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.1.0.tgz", + "integrity": "sha512-0ZWDPIP8BtEDZdChbufcXUigOYk6dOX/P/X0hWxqDDcVAQLb8Yy/0FAaemSfax3PAA67+DJR778oz8qVbmy4hA==", + "dev": true, + "requires": { + "cacache": "^15.0.5", + "find-cache-dir": "^3.3.1", + "jest-worker": "^26.3.0", + "p-limit": "^3.0.2", + "schema-utils": "^2.6.6", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^5.0.0", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "p-limit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "dev": true, + "requires": { + "p-try": "^2.0.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 + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "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": "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 + }, + "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": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", + "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, + "ts-node": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", + "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", + "dev": true, + "requires": { + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.6", + "yn": "^3.0.0" + } + }, + "ts-pnp": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", + "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", + "dev": true + }, + "tslib": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" + }, + "tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "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" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "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 + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", + "integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "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.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-analytics": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz", + "integrity": "sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "request": "^2.88.2", + "uuid": "^3.0.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "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.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "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-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "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 + }, + "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" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "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 + }, + "util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "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.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "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 + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "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": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "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.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "requires": { + "chokidar": "^3.4.1", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.1" + } + }, + "watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "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, + "optional": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": 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, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "optional": 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, + "optional": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": 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, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "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, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "optional": 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, + "optional": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": 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" + } + }, + "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, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "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, + "optional": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "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" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", + "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true + }, + "webpack": { + "version": "4.44.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz", + "integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "acorn": "^6.4.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.3.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.3", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.7.4", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "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" + } + } + } + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "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" + } + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "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-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "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" + } + }, + "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" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "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" + } + }, + "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 + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + } + }, + "terser-webpack-plugin": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", + "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^4.0.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.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" + } + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + }, + "dependencies": { + "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" + } + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + } + } + }, + "webpack-dev-server": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", + "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.3.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.8", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.26", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.20", + "sockjs-client": "1.4.0", + "spdy": "^4.0.2", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "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" + }, + "dependencies": { + "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" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "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" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "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" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "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" + } + } + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "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-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" + } + } + } + }, + "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" + } + }, + "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" + } + }, + "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" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.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" + } + } + } + }, + "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.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "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.4.1", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.4.1.tgz", + "integrity": "sha512-XMLFInbGbB1HV7K4vHWANzc1CN0t/c4bBvnlvGxGwV45yE/S/feAXIm8dJsCkzqWtSKnmaEgTp/meyeThxG4Iw==", + "dev": true, + "requires": { + "webpack-sources": "^1.3.0" + } + }, + "websocket-driver": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", + "dev": true, + "requires": { + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.4.0.tgz", + "integrity": "sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^2.0.2", + "webidl-conversions": "^6.1.0" + } + }, + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-plugin": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-5.0.0.tgz", + "integrity": "sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true + }, + "zone.js": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", + "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" + } + } +} diff --git a/frontend/celso-lisboa/package.json b/frontend/celso-lisboa/package.json new file mode 100644 index 0000000..3047ffd --- /dev/null +++ b/frontend/celso-lisboa/package.json @@ -0,0 +1,46 @@ +{ + "name": "celso-lisboa", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "~10.1.2", + "@angular/common": "~10.1.2", + "@angular/compiler": "~10.1.2", + "@angular/core": "~10.1.2", + "@angular/forms": "~10.1.2", + "@angular/platform-browser": "~10.1.2", + "@angular/platform-browser-dynamic": "~10.1.2", + "@angular/router": "~10.1.2", + "rxjs": "~6.6.0", + "tslib": "^2.0.0", + "zone.js": "~0.10.2" + }, + "devDependencies": { + "@angular-devkit/build-angular": "~0.1001.2", + "@angular/cli": "~10.1.2", + "@angular/compiler-cli": "~10.1.2", + "@types/node": "^12.11.1", + "@types/jasmine": "~3.5.0", + "@types/jasminewd2": "~2.0.3", + "codelyzer": "^6.0.0", + "jasmine-core": "~3.6.0", + "jasmine-spec-reporter": "~5.0.0", + "karma": "~5.0.0", + "karma-chrome-launcher": "~3.1.0", + "karma-coverage-istanbul-reporter": "~3.0.2", + "karma-jasmine": "~4.0.0", + "karma-jasmine-html-reporter": "^1.5.0", + "protractor": "~7.0.0", + "ts-node": "~8.3.0", + "tslint": "~6.1.0", + "typescript": "~4.0.2" + } +} diff --git a/frontend/celso-lisboa/src/app/app-routing.module.ts b/frontend/celso-lisboa/src/app/app-routing.module.ts new file mode 100644 index 0000000..d425c6f --- /dev/null +++ b/frontend/celso-lisboa/src/app/app-routing.module.ts @@ -0,0 +1,10 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +const routes: Routes = []; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/frontend/celso-lisboa/src/app/app.component.html b/frontend/celso-lisboa/src/app/app.component.html new file mode 100644 index 0000000..e48d8c1 --- /dev/null +++ b/frontend/celso-lisboa/src/app/app.component.html @@ -0,0 +1,534 @@ + + + + + + + + + + + + + + +
+ + +
+ + + + + + + + + + + + {{ title }} app is running! + + + + + +
+ + +

Resources

+

Here are some links to help you get started:

+ + + + +

Next Steps

+

What do you want to do next with your app?

+ + + +
+
+ + + New Component +
+ +
+ + + Angular Material +
+ +
+ + + Add PWA Support +
+ +
+ + + Add Dependency +
+ +
+ + + Run and Watch Tests +
+ +
+ + + Build for Production +
+
+ + +
+
ng generate component xyz
+
ng add @angular/material
+
ng add @angular/pwa
+
ng add _____
+
ng test
+
ng build --prod
+
+ + + + + + + + + + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/frontend/celso-lisboa/src/app/app.component.scss b/frontend/celso-lisboa/src/app/app.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/frontend/celso-lisboa/src/app/app.component.spec.ts b/frontend/celso-lisboa/src/app/app.component.spec.ts new file mode 100644 index 0000000..39fe612 --- /dev/null +++ b/frontend/celso-lisboa/src/app/app.component.spec.ts @@ -0,0 +1,35 @@ +import { TestBed } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + }); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'celso-lisboa'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('celso-lisboa'); + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain('celso-lisboa app is running!'); + }); +}); diff --git a/frontend/celso-lisboa/src/app/app.component.ts b/frontend/celso-lisboa/src/app/app.component.ts new file mode 100644 index 0000000..5592483 --- /dev/null +++ b/frontend/celso-lisboa/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 = 'celso-lisboa'; +} diff --git a/frontend/celso-lisboa/src/app/app.module.ts b/frontend/celso-lisboa/src/app/app.module.ts new file mode 100644 index 0000000..2c3ba29 --- /dev/null +++ b/frontend/celso-lisboa/src/app/app.module.ts @@ -0,0 +1,18 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule } from '@angular/core'; + +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; + +@NgModule({ + declarations: [ + AppComponent + ], + imports: [ + BrowserModule, + AppRoutingModule + ], + providers: [], + bootstrap: [AppComponent] +}) +export class AppModule { } diff --git a/frontend/celso-lisboa/src/assets/.gitkeep b/frontend/celso-lisboa/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/frontend/celso-lisboa/src/environments/environment.prod.ts b/frontend/celso-lisboa/src/environments/environment.prod.ts new file mode 100644 index 0000000..3612073 --- /dev/null +++ b/frontend/celso-lisboa/src/environments/environment.prod.ts @@ -0,0 +1,3 @@ +export const environment = { + production: true +}; diff --git a/frontend/celso-lisboa/src/environments/environment.ts b/frontend/celso-lisboa/src/environments/environment.ts new file mode 100644 index 0000000..7b4f817 --- /dev/null +++ b/frontend/celso-lisboa/src/environments/environment.ts @@ -0,0 +1,16 @@ +// 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 +}; + +/* + * For easier debugging in development mode, you can import the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This import should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/frontend/celso-lisboa/src/favicon.ico b/frontend/celso-lisboa/src/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..997406ad22c29aae95893fb3d666c30258a09537 GIT binary patch literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 + + + + CelsoLisboa + + + + + + + + diff --git a/frontend/celso-lisboa/src/main.ts b/frontend/celso-lisboa/src/main.ts new file mode 100644 index 0000000..c7b673c --- /dev/null +++ b/frontend/celso-lisboa/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.error(err)); diff --git a/frontend/celso-lisboa/src/polyfills.ts b/frontend/celso-lisboa/src/polyfills.ts new file mode 100644 index 0000000..03711e5 --- /dev/null +++ b/frontend/celso-lisboa/src/polyfills.ts @@ -0,0 +1,63 @@ +/** + * 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/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * 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 + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (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__UNPATCHED_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/celso-lisboa/src/styles.scss b/frontend/celso-lisboa/src/styles.scss new file mode 100644 index 0000000..90d4ee0 --- /dev/null +++ b/frontend/celso-lisboa/src/styles.scss @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/frontend/celso-lisboa/src/test.ts b/frontend/celso-lisboa/src/test.ts new file mode 100644 index 0000000..50193eb --- /dev/null +++ b/frontend/celso-lisboa/src/test.ts @@ -0,0 +1,25 @@ +// 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: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// 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/celso-lisboa/tsconfig.app.json b/frontend/celso-lisboa/tsconfig.app.json new file mode 100644 index 0000000..82d91dc --- /dev/null +++ b/frontend/celso-lisboa/tsconfig.app.json @@ -0,0 +1,15 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/frontend/celso-lisboa/tsconfig.json b/frontend/celso-lisboa/tsconfig.json new file mode 100644 index 0000000..f69f654 --- /dev/null +++ b/frontend/celso-lisboa/tsconfig.json @@ -0,0 +1,20 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "es2015", + "module": "es2020", + "lib": [ + "es2018", + "dom" + ] + } +} diff --git a/frontend/celso-lisboa/tsconfig.spec.json b/frontend/celso-lisboa/tsconfig.spec.json new file mode 100644 index 0000000..092345b --- /dev/null +++ b/frontend/celso-lisboa/tsconfig.spec.json @@ -0,0 +1,18 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/frontend/celso-lisboa/tslint.json b/frontend/celso-lisboa/tslint.json new file mode 100644 index 0000000..277c8eb --- /dev/null +++ b/frontend/celso-lisboa/tslint.json @@ -0,0 +1,152 @@ +{ + "extends": "tslint:recommended", + "rulesDirectory": [ + "codelyzer" + ], + "rules": { + "align": { + "options": [ + "parameters", + "statements" + ] + }, + "array-type": false, + "arrow-return-shorthand": true, + "curly": true, + "deprecation": { + "severity": "warning" + }, + "eofline": true, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "import-spacing": true, + "indent": { + "options": [ + "spaces" + ] + }, + "max-classes-per-file": false, + "max-line-length": [ + true, + 140 + ], + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "quotemark": [ + true, + "single" + ], + "semicolon": { + "options": [ + "always" + ] + }, + "space-before-function-paren": { + "options": { + "anonymous": "never", + "asyncArrow": "always", + "constructor": "never", + "method": "never", + "named": "never" + } + }, + "typedef": [ + true, + "call-signature" + ], + "typedef-whitespace": { + "options": [ + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + }, + { + "call-signature": "onespace", + "index-signature": "onespace", + "parameter": "onespace", + "property-declaration": "onespace", + "variable-declaration": "onespace" + } + ] + }, + "variable-name": { + "options": [ + "ban-keywords", + "check-format", + "allow-pascal-case" + ] + }, + "whitespace": { + "options": [ + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type", + "check-typecast" + ] + }, + "component-class-suffix": true, + "contextual-lifecycle": true, + "directive-class-suffix": true, + "no-conflicting-lifecycle": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-inputs-metadata-property": true, + "no-output-native": true, + "no-output-on-prefix": true, + "no-output-rename": true, + "no-outputs-metadata-property": true, + "template-banana-in-box": true, + "template-no-negated-async": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true, + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ] + } +} diff --git a/package-lock.json b/package-lock.json index 3eb2ce2..a931555 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "desafio-frontend", - "version": "1.0", + "version": "1.0.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -9,7 +9,7 @@ "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "2.1.20", + "mime-types": "~2.1.18", "negotiator": "0.6.1" } }, @@ -24,15 +24,15 @@ "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", "requires": { "bytes": "3.0.0", - "content-type": "1.0.4", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.3", + "depd": "~1.1.2", + "http-errors": "~1.6.3", "iconv-lite": "0.4.23", - "on-finished": "2.3.0", + "on-finished": "~2.3.0", "qs": "6.5.2", "raw-body": "2.3.3", - "type-is": "1.6.16" + "type-is": "~1.6.16" }, "dependencies": { "iconv-lite": { @@ -40,7 +40,7 @@ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", "requires": { - "safer-buffer": "2.1.2" + "safer-buffer": ">= 2.1.2 < 3" } }, "qs": { @@ -129,36 +129,36 @@ "resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz", "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "requires": { - "accepts": "1.3.5", + "accepts": "~1.3.5", "array-flatten": "1.1.1", "body-parser": "1.18.2", "content-disposition": "0.5.2", - "content-type": "1.0.4", + "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", + "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", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.4", + "proxy-addr": "~2.0.3", "qs": "6.5.1", - "range-parser": "1.2.0", + "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", + "statuses": "~1.4.0", + "type-is": "~1.6.16", "utils-merge": "1.0.1", - "vary": "1.1.2" + "vary": "~1.1.2" }, "dependencies": { "body-parser": { @@ -167,15 +167,15 @@ "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", "requires": { "bytes": "3.0.0", - "content-type": "1.0.4", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.2", - "http-errors": "1.6.3", + "depd": "~1.1.1", + "http-errors": "~1.6.2", "iconv-lite": "0.4.19", - "on-finished": "2.3.0", + "on-finished": "~2.3.0", "qs": "6.5.1", "raw-body": "2.3.2", - "type-is": "1.6.16" + "type-is": "~1.6.15" } } } @@ -186,12 +186,12 @@ "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "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" + "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" } }, "forwarded": { @@ -209,10 +209,10 @@ "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "1.1.2", + "depd": "~1.1.2", "inherits": "2.0.3", "setprototypeof": "1.1.0", - "statuses": "1.4.0" + "statuses": ">= 1.4.0 < 2" } }, "iconv-lite": { @@ -260,7 +260,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", "requires": { - "mime-db": "1.36.0" + "mime-db": "~1.36.0" } }, "ms": { @@ -296,7 +296,7 @@ "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", "requires": { - "forwarded": "0.1.2", + "forwarded": "~0.1.2", "ipaddr.js": "1.8.0" } }, @@ -334,7 +334,7 @@ "depd": "1.1.1", "inherits": "2.0.3", "setprototypeof": "1.0.3", - "statuses": "1.4.0" + "statuses": ">= 1.3.1 < 2" } }, "setprototypeof": { @@ -360,18 +360,18 @@ "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", + "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.3", + "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" + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" } }, "serve-static": { @@ -379,9 +379,9 @@ "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", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", "send": "0.16.2" } }, @@ -401,7 +401,7 @@ "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.20" + "mime-types": "~2.1.18" } }, "unpipe": { From 1be7b7dc3b3842dc226394f53ae1ae375e9d0e02 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Fri, 20 Nov 2020 15:04:26 -0300 Subject: [PATCH 02/45] feat(lib-ui): create ui library --- frontend/celso-lisboa/angular.json | 40 +++ frontend/celso-lisboa/package-lock.json | 332 ++++++++++++++++++ frontend/celso-lisboa/package.json | 1 + frontend/celso-lisboa/projects/ui/README.md | 24 ++ .../celso-lisboa/projects/ui/karma.conf.js | 32 ++ .../celso-lisboa/projects/ui/ng-package.json | 7 + .../celso-lisboa/projects/ui/package.json | 11 + .../projects/ui/src/lib/ui.component.spec.ts | 25 ++ .../projects/ui/src/lib/ui.component.ts | 20 ++ .../projects/ui/src/lib/ui.module.ts | 12 + .../projects/ui/src/lib/ui.service.spec.ts | 16 + .../projects/ui/src/lib/ui.service.ts | 9 + .../projects/ui/src/public-api.ts | 7 + frontend/celso-lisboa/projects/ui/src/test.ts | 26 ++ .../projects/ui/tsconfig.lib.json | 25 ++ .../projects/ui/tsconfig.lib.prod.json | 10 + .../projects/ui/tsconfig.spec.json | 17 + frontend/celso-lisboa/projects/ui/tslint.json | 17 + frontend/celso-lisboa/tsconfig.json | 11 +- 19 files changed, 639 insertions(+), 3 deletions(-) create mode 100644 frontend/celso-lisboa/projects/ui/README.md create mode 100644 frontend/celso-lisboa/projects/ui/karma.conf.js create mode 100644 frontend/celso-lisboa/projects/ui/ng-package.json create mode 100644 frontend/celso-lisboa/projects/ui/package.json create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/ui.component.spec.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/ui.component.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/ui.module.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/ui.service.spec.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/ui.service.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/public-api.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/test.ts create mode 100644 frontend/celso-lisboa/projects/ui/tsconfig.lib.json create mode 100644 frontend/celso-lisboa/projects/ui/tsconfig.lib.prod.json create mode 100644 frontend/celso-lisboa/projects/ui/tsconfig.spec.json create mode 100644 frontend/celso-lisboa/projects/ui/tslint.json diff --git a/frontend/celso-lisboa/angular.json b/frontend/celso-lisboa/angular.json index e5a26fe..42c76df 100644 --- a/frontend/celso-lisboa/angular.json +++ b/frontend/celso-lisboa/angular.json @@ -123,6 +123,46 @@ } } } + }, + "ui": { + "projectType": "library", + "root": "projects/ui", + "sourceRoot": "projects/ui/src", + "prefix": "lib", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:ng-packagr", + "options": { + "tsConfig": "projects/ui/tsconfig.lib.json", + "project": "projects/ui/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "projects/ui/tsconfig.lib.prod.json" + } + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "projects/ui/src/test.ts", + "tsConfig": "projects/ui/tsconfig.spec.json", + "karmaConfig": "projects/ui/karma.conf.js" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "projects/ui/tsconfig.lib.json", + "projects/ui/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] + } + } + } } }, "defaultProject": "celso-lisboa", diff --git a/frontend/celso-lisboa/package-lock.json b/frontend/celso-lisboa/package-lock.json index 77ae0ae..8d62603 100644 --- a/frontend/celso-lisboa/package-lock.json +++ b/frontend/celso-lisboa/package-lock.json @@ -1694,6 +1694,71 @@ } } }, + "@rollup/plugin-commonjs": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-15.1.0.tgz", + "integrity": "sha512-xCQqz4z/o0h2syQ7d9LskIMvBSH4PX5PjYdpSSvgS+pQik3WahkQVNWg3D8XJeYjZoVWnIUQYDghuEMRGrmQYQ==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "commondir": "^1.0.1", + "estree-walker": "^2.0.1", + "glob": "^7.1.6", + "is-reference": "^1.2.1", + "magic-string": "^0.25.7", + "resolve": "^1.17.0" + } + }, + "@rollup/plugin-json": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz", + "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.8" + } + }, + "@rollup/plugin-node-resolve": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-9.0.0.tgz", + "integrity": "sha512-gPz+utFHLRrd41WMP13Jq5mqqzHL3OXrfj3/MkSyB6UBIcuNt9j60GCbarzMzdf1VHFpOxfQh/ez7wyadLMqkg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.17.0" + }, + "dependencies": { + "builtin-modules": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.1.0.tgz", + "integrity": "sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw==", + "dev": true + } + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "dependencies": { + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + } + } + }, "@schematics/angular": { "version": "10.1.7", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-10.1.7.tgz", @@ -1721,6 +1786,12 @@ "semver-intersect": "1.4.0" } }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, "@types/glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", @@ -1764,12 +1835,27 @@ "integrity": "sha512-U2VopDdmBoYBmtm8Rz340mvvSz34VgX/K9+XCuckvcLGMkt3rbMX8soqFOikIPlPBc5lmw8By9NUK7bEFSBFlQ==", "dev": true }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, "@types/q": { "version": "1.5.4", "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", "dev": true }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/selenium-webdriver": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", @@ -2375,6 +2461,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", @@ -3906,6 +3998,12 @@ } } }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha1-QICG1AlVDCYxFVYZ6fp7ytw7mRs=", + "dev": true + }, "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -4001,6 +4099,12 @@ "regexp.prototype.flags": "^1.2.0" } }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, "default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -4697,6 +4801,12 @@ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true }, + "estree-walker": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.1.tgz", + "integrity": "sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg==", + "dev": true + }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -5196,6 +5306,12 @@ } } }, + "find-parent-dir": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/find-parent-dir/-/find-parent-dir-0.3.0.tgz", + "integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=", + "dev": true + }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", @@ -6052,6 +6168,15 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, + "injection-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/injection-js/-/injection-js-2.4.0.tgz", + "integrity": "sha512-6jiJt0tCAo9zjHbcwLiPL+IuNe9SQ6a9g0PEzafThW3fOQi0mrmiJGBJvDD6tmhPh8cQHIQtCOrJuBfQME4kPA==", + "dev": true, + "requires": { + "tslib": "^2.0.0" + } + }, "inquirer": { "version": "7.3.3", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", @@ -6371,6 +6496,12 @@ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, "is-negative-zero": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", @@ -6428,6 +6559,15 @@ "isobject": "^3.0.1" } }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, "is-regex": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", @@ -7168,6 +7308,12 @@ "immediate": "~3.0.5" } }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, "loader-runner": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", @@ -7857,6 +8003,89 @@ "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", "dev": true }, + "ng-packagr": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-10.1.2.tgz", + "integrity": "sha512-pm61gu6jPkohL8tFWk+2DwUtb3rs5GpND1ZjKUYv5WUJPUQmBfG5WvEO/CDVQpSDWhNWWLTt17NIQ+RS3hNUHg==", + "dev": true, + "requires": { + "@rollup/plugin-commonjs": "^15.0.0", + "@rollup/plugin-json": "^4.0.0", + "@rollup/plugin-node-resolve": "^9.0.0", + "ajv": "^6.12.3", + "ansi-colors": "^4.1.1", + "autoprefixer": "^9.6.5", + "browserslist": "^4.7.0", + "chokidar": "^3.2.1", + "commander": "^6.0.0", + "cssnano-preset-default": "^4.0.7", + "fs-extra": "^9.0.0", + "glob": "^7.1.2", + "injection-js": "^2.2.1", + "less": "^3.10.3", + "node-sass-tilde-importer": "^1.0.0", + "postcss": "^7.0.29", + "postcss-url": "^8.0.0", + "read-pkg-up": "^5.0.0", + "rimraf": "^3.0.0", + "rollup": "^2.8.0", + "rollup-plugin-sourcemaps": "^0.6.0", + "rxjs": "^6.5.0", + "sass": "^1.23.0", + "stylus": "^0.54.7", + "terser": "^5.0.0" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "commander": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", + "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "dev": true + }, + "fs-extra": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.1.tgz", + "integrity": "sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^1.0.0" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + } + } + }, + "universalify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz", + "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==", + "dev": true + } + } + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -7940,6 +8169,15 @@ "integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==", "dev": true }, + "node-sass-tilde-importer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/node-sass-tilde-importer/-/node-sass-tilde-importer-1.0.2.tgz", + "integrity": "sha512-Swcmr38Y7uB78itQeBm3mThjxBy9/Ah/ykPIaURY/L6Nec9AyRoL/jJ7ECfMR+oZeCTVQNxVMu/aHU+TLRVbdg==", + "dev": true, + "requires": { + "find-parent-dir": "^0.3.0" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -9541,6 +9779,27 @@ "uniqs": "^2.0.0" } }, + "postcss-url": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-8.0.0.tgz", + "integrity": "sha512-E2cbOQ5aii2zNHh8F6fk1cxls7QVFZjLPSrqvmiza8OuXLzIpErij8BDS5Y3STPfJgpIMNCPEr8JlKQWEoozUw==", + "dev": true, + "requires": { + "mime": "^2.3.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.0", + "postcss": "^7.0.2", + "xxhashjs": "^0.2.1" + }, + "dependencies": { + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + } + } + }, "postcss-value-parser": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", @@ -10187,6 +10446,48 @@ "util-promisify": "^2.1.0" } }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-5.0.0.tgz", + "integrity": "sha512-XBQjqOBtTzyol2CpsQOw8LHV0XbDZVG7xMMjmXAJomlVY03WOBRmYgDJETlvcg0H63AJvPRwT7GFi5rvOzUOKg==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^5.0.0" + } + }, "readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -10601,6 +10902,28 @@ "fsevents": "~2.1.2" } }, + "rollup-plugin-sourcemaps": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-sourcemaps/-/rollup-plugin-sourcemaps-0.6.3.tgz", + "integrity": "sha512-paFu+nT1xvuO1tPFYXGe+XnQvg4Hjqv/eIhG8i5EspfYYPBKL57X7iVbfv55aNVASg3dzWvES9dmWsL2KhfByw==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.0.9", + "source-map-resolve": "^0.6.0" + }, + "dependencies": { + "source-map-resolve": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", + "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0" + } + } + } + }, "run-async": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", @@ -13690,6 +14013,15 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "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", diff --git a/frontend/celso-lisboa/package.json b/frontend/celso-lisboa/package.json index 3047ffd..103afc7 100644 --- a/frontend/celso-lisboa/package.json +++ b/frontend/celso-lisboa/package.json @@ -38,6 +38,7 @@ "karma-coverage-istanbul-reporter": "~3.0.2", "karma-jasmine": "~4.0.0", "karma-jasmine-html-reporter": "^1.5.0", + "ng-packagr": "^10.1.0", "protractor": "~7.0.0", "ts-node": "~8.3.0", "tslint": "~6.1.0", diff --git a/frontend/celso-lisboa/projects/ui/README.md b/frontend/celso-lisboa/projects/ui/README.md new file mode 100644 index 0000000..9e93858 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/README.md @@ -0,0 +1,24 @@ +# Ui + +This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.1.6. + +## Code scaffolding + +Run `ng generate component component-name --project ui` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ui`. +> Note: Don't forget to add `--project ui` or else it will be added to the default project in your `angular.json` file. + +## Build + +Run `ng build ui` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Publishing + +After building your library with `ng build ui`, go to the dist folder `cd dist/ui` and run `npm publish`. + +## Running unit tests + +Run `ng test ui` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## 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/celso-lisboa/projects/ui/karma.conf.js b/frontend/celso-lisboa/projects/ui/karma.conf.js new file mode 100644 index 0000000..4c2affe --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/karma.conf.js @@ -0,0 +1,32 @@ +// 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/ui'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/frontend/celso-lisboa/projects/ui/ng-package.json b/frontend/celso-lisboa/projects/ui/ng-package.json new file mode 100644 index 0000000..e5e5da9 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/ui", + "lib": { + "entryFile": "src/public-api.ts" + } +} \ No newline at end of file diff --git a/frontend/celso-lisboa/projects/ui/package.json b/frontend/celso-lisboa/projects/ui/package.json new file mode 100644 index 0000000..5ea3fa6 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/package.json @@ -0,0 +1,11 @@ +{ + "name": "ui", + "version": "0.0.1", + "peerDependencies": { + "@angular/common": "^10.1.6", + "@angular/core": "^10.1.6" + }, + "dependencies": { + "tslib": "^2.0.0" + } +} \ No newline at end of file diff --git a/frontend/celso-lisboa/projects/ui/src/lib/ui.component.spec.ts b/frontend/celso-lisboa/projects/ui/src/lib/ui.component.spec.ts new file mode 100644 index 0000000..42c72c7 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/ui.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UiComponent } from './ui.component'; + +describe('UiComponent', () => { + let component: UiComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UiComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UiComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/projects/ui/src/lib/ui.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/ui.component.ts new file mode 100644 index 0000000..f9925d0 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/ui.component.ts @@ -0,0 +1,20 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'lib-ui', + template: ` +

+ ui works! +

+ `, + styles: [ + ] +}) +export class UiComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/ui.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/ui.module.ts new file mode 100644 index 0000000..eb923de --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/ui.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from '@angular/core'; +import { UiComponent } from './ui.component'; + + + +@NgModule({ + declarations: [UiComponent], + imports: [ + ], + exports: [UiComponent] +}) +export class UiModule { } diff --git a/frontend/celso-lisboa/projects/ui/src/lib/ui.service.spec.ts b/frontend/celso-lisboa/projects/ui/src/lib/ui.service.spec.ts new file mode 100644 index 0000000..fa9f878 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/ui.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { UiService } from './ui.service'; + +describe('UiService', () => { + let service: UiService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(UiService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/projects/ui/src/lib/ui.service.ts b/frontend/celso-lisboa/projects/ui/src/lib/ui.service.ts new file mode 100644 index 0000000..a44844c --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/ui.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class UiService { + + constructor() { } +} diff --git a/frontend/celso-lisboa/projects/ui/src/public-api.ts b/frontend/celso-lisboa/projects/ui/src/public-api.ts new file mode 100644 index 0000000..be6e29b --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/public-api.ts @@ -0,0 +1,7 @@ +/* + * Public API Surface of ui + */ + +export * from './lib/ui.service'; +export * from './lib/ui.component'; +export * from './lib/ui.module'; diff --git a/frontend/celso-lisboa/projects/ui/src/test.ts b/frontend/celso-lisboa/projects/ui/src/test.ts new file mode 100644 index 0000000..303b32a --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/test.ts @@ -0,0 +1,26 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone'; +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// 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/celso-lisboa/projects/ui/tsconfig.lib.json b/frontend/celso-lisboa/projects/ui/tsconfig.lib.json new file mode 100644 index 0000000..6e06ad5 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/tsconfig.lib.json @@ -0,0 +1,25 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/lib", + "target": "es2015", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [], + "lib": [ + "dom", + "es2018" + ] + }, + "angularCompilerOptions": { + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "enableResourceInlining": true + }, + "exclude": [ + "src/test.ts", + "**/*.spec.ts" + ] +} diff --git a/frontend/celso-lisboa/projects/ui/tsconfig.lib.prod.json b/frontend/celso-lisboa/projects/ui/tsconfig.lib.prod.json new file mode 100644 index 0000000..5615c27 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/tsconfig.lib.prod.json @@ -0,0 +1,10 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.lib.json", + "compilerOptions": { + "declarationMap": false + }, + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/frontend/celso-lisboa/projects/ui/tsconfig.spec.json b/frontend/celso-lisboa/projects/ui/tsconfig.spec.json new file mode 100644 index 0000000..715dd0a --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/tsconfig.spec.json @@ -0,0 +1,17 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "files": [ + "src/test.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/frontend/celso-lisboa/projects/ui/tslint.json b/frontend/celso-lisboa/projects/ui/tslint.json new file mode 100644 index 0000000..124133f --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/tslint.json @@ -0,0 +1,17 @@ +{ + "extends": "../../tslint.json", + "rules": { + "directive-selector": [ + true, + "attribute", + "lib", + "camelCase" + ], + "component-selector": [ + true, + "element", + "lib", + "kebab-case" + ] + } +} diff --git a/frontend/celso-lisboa/tsconfig.json b/frontend/celso-lisboa/tsconfig.json index f69f654..c47e924 100644 --- a/frontend/celso-lisboa/tsconfig.json +++ b/frontend/celso-lisboa/tsconfig.json @@ -1,4 +1,3 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ { "compileOnSave": false, "compilerOptions": { @@ -15,6 +14,12 @@ "lib": [ "es2018", "dom" - ] + ], + "paths": { + "ui": [ + "dist/ui/ui", + "dist/ui" + ] + } } -} +} \ No newline at end of file From e621b738015d4cb2dc5da6966a4afecaf08e0398 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Fri, 20 Nov 2020 15:22:06 -0300 Subject: [PATCH 03/45] feat(cl-input): create input component --- .../cl-input/cl-input.component.css | 0 .../cl-input/cl-input.component.html | 1 + .../cl-input/cl-input.component.spec.ts} | 12 +++++------ .../cl-input/cl-input.component.ts | 15 ++++++++++++++ .../form-controls/cl-input/cl-input.module.ts | 13 ++++++++++++ .../projects/ui/src/lib/ui.component.ts | 20 ------------------- .../projects/ui/src/lib/ui.module.ts | 12 ----------- .../projects/ui/src/lib/ui.service.spec.ts | 16 --------------- .../projects/ui/src/lib/ui.service.ts | 9 --------- .../projects/ui/src/public-api.ts | 6 +++--- frontend/celso-lisboa/projects/ui/tslint.json | 4 ++-- 11 files changed, 40 insertions(+), 68 deletions(-) create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html rename frontend/celso-lisboa/projects/ui/src/lib/{ui.component.spec.ts => form-controls/cl-input/cl-input.component.spec.ts} (56%) create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.module.ts delete mode 100644 frontend/celso-lisboa/projects/ui/src/lib/ui.component.ts delete mode 100644 frontend/celso-lisboa/projects/ui/src/lib/ui.module.ts delete mode 100644 frontend/celso-lisboa/projects/ui/src/lib/ui.service.spec.ts delete mode 100644 frontend/celso-lisboa/projects/ui/src/lib/ui.service.ts diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css new file mode 100644 index 0000000..e69de29 diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html new file mode 100644 index 0000000..8e6a78b --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html @@ -0,0 +1 @@ +

cl-input works!

diff --git a/frontend/celso-lisboa/projects/ui/src/lib/ui.component.spec.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.spec.ts similarity index 56% rename from frontend/celso-lisboa/projects/ui/src/lib/ui.component.spec.ts rename to frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.spec.ts index 42c72c7..3bd22d9 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/ui.component.spec.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.spec.ts @@ -1,20 +1,20 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { UiComponent } from './ui.component'; +import { ClInputComponent } from './cl-input.component'; -describe('UiComponent', () => { - let component: UiComponent; - let fixture: ComponentFixture; +describe('ClInputComponent', () => { + let component: ClInputComponent; + let fixture: ComponentFixture; beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [ UiComponent ] + declarations: [ ClInputComponent ] }) .compileComponents(); }); beforeEach(() => { - fixture = TestBed.createComponent(UiComponent); + fixture = TestBed.createComponent(ClInputComponent); component = fixture.componentInstance; fixture.detectChanges(); }); diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts new file mode 100644 index 0000000..72d6aef --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'ui-cl-input', + templateUrl: './cl-input.component.html', + styleUrls: ['./cl-input.component.css'] +}) +export class ClInputComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.module.ts new file mode 100644 index 0000000..f853f3b --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ClInputComponent } from './cl-input.component'; + + + +@NgModule({ + declarations: [ClInputComponent], + imports: [ + CommonModule + ] +}) +export class ClInputModule { } diff --git a/frontend/celso-lisboa/projects/ui/src/lib/ui.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/ui.component.ts deleted file mode 100644 index f9925d0..0000000 --- a/frontend/celso-lisboa/projects/ui/src/lib/ui.component.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'lib-ui', - template: ` -

- ui works! -

- `, - styles: [ - ] -}) -export class UiComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/ui.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/ui.module.ts deleted file mode 100644 index eb923de..0000000 --- a/frontend/celso-lisboa/projects/ui/src/lib/ui.module.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { NgModule } from '@angular/core'; -import { UiComponent } from './ui.component'; - - - -@NgModule({ - declarations: [UiComponent], - imports: [ - ], - exports: [UiComponent] -}) -export class UiModule { } diff --git a/frontend/celso-lisboa/projects/ui/src/lib/ui.service.spec.ts b/frontend/celso-lisboa/projects/ui/src/lib/ui.service.spec.ts deleted file mode 100644 index fa9f878..0000000 --- a/frontend/celso-lisboa/projects/ui/src/lib/ui.service.spec.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { TestBed } from '@angular/core/testing'; - -import { UiService } from './ui.service'; - -describe('UiService', () => { - let service: UiService; - - beforeEach(() => { - TestBed.configureTestingModule({}); - service = TestBed.inject(UiService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); -}); diff --git a/frontend/celso-lisboa/projects/ui/src/lib/ui.service.ts b/frontend/celso-lisboa/projects/ui/src/lib/ui.service.ts deleted file mode 100644 index a44844c..0000000 --- a/frontend/celso-lisboa/projects/ui/src/lib/ui.service.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Injectable } from '@angular/core'; - -@Injectable({ - providedIn: 'root' -}) -export class UiService { - - constructor() { } -} diff --git a/frontend/celso-lisboa/projects/ui/src/public-api.ts b/frontend/celso-lisboa/projects/ui/src/public-api.ts index be6e29b..16133fc 100644 --- a/frontend/celso-lisboa/projects/ui/src/public-api.ts +++ b/frontend/celso-lisboa/projects/ui/src/public-api.ts @@ -2,6 +2,6 @@ * Public API Surface of ui */ -export * from './lib/ui.service'; -export * from './lib/ui.component'; -export * from './lib/ui.module'; +// export * from './lib/ui.service'; +// export * from './lib/ui.component'; +// export * from './lib/ui.module'; diff --git a/frontend/celso-lisboa/projects/ui/tslint.json b/frontend/celso-lisboa/projects/ui/tslint.json index 124133f..f202e24 100644 --- a/frontend/celso-lisboa/projects/ui/tslint.json +++ b/frontend/celso-lisboa/projects/ui/tslint.json @@ -4,13 +4,13 @@ "directive-selector": [ true, "attribute", - "lib", + "ui-cl", "camelCase" ], "component-selector": [ true, "element", - "lib", + "ui-cl", "kebab-case" ] } From e4a2690955c0c932998b62c75ee1a0c9a0f23eb3 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Fri, 20 Nov 2020 15:24:49 -0300 Subject: [PATCH 04/45] feat(cl-input): add input in api --- frontend/celso-lisboa/projects/ui/src/public-api.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/public-api.ts b/frontend/celso-lisboa/projects/ui/src/public-api.ts index 16133fc..fd7b705 100644 --- a/frontend/celso-lisboa/projects/ui/src/public-api.ts +++ b/frontend/celso-lisboa/projects/ui/src/public-api.ts @@ -2,6 +2,5 @@ * Public API Surface of ui */ -// export * from './lib/ui.service'; -// export * from './lib/ui.component'; -// export * from './lib/ui.module'; +export * from './lib/form-controls/cl-input/cl-input.component'; +export * from './lib/form-controls/cl-input/cl-input.module'; From f51efbe4dd1555bf8f8cf2d09059560f70e8d814 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Fri, 20 Nov 2020 16:11:45 -0300 Subject: [PATCH 05/45] feat(cl-input): create login page --- .../src/app/app-routing.module.ts | 5 +- .../celso-lisboa/src/app/app.component.html | 535 +----------------- .../src/app/app.component.spec.ts | 19 - .../celso-lisboa/src/app/app.component.ts | 1 - frontend/celso-lisboa/src/app/app.module.ts | 4 +- .../app/pages/login/login-routing.module.ts | 14 + .../src/app/pages/login/login.component.html | 1 + .../src/app/pages/login/login.component.scss | 0 .../app/pages/login/login.component.spec.ts | 25 + .../src/app/pages/login/login.component.ts | 15 + .../src/app/pages/login/login.module.ts | 15 + 11 files changed, 78 insertions(+), 556 deletions(-) create mode 100644 frontend/celso-lisboa/src/app/pages/login/login-routing.module.ts create mode 100644 frontend/celso-lisboa/src/app/pages/login/login.component.html create mode 100644 frontend/celso-lisboa/src/app/pages/login/login.component.scss create mode 100644 frontend/celso-lisboa/src/app/pages/login/login.component.spec.ts create mode 100644 frontend/celso-lisboa/src/app/pages/login/login.component.ts create mode 100644 frontend/celso-lisboa/src/app/pages/login/login.module.ts diff --git a/frontend/celso-lisboa/src/app/app-routing.module.ts b/frontend/celso-lisboa/src/app/app-routing.module.ts index d425c6f..7e12c03 100644 --- a/frontend/celso-lisboa/src/app/app-routing.module.ts +++ b/frontend/celso-lisboa/src/app/app-routing.module.ts @@ -1,7 +1,10 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; -const routes: Routes = []; +const routes: Routes = [ + {path: '', redirectTo: 'login', pathMatch: 'full'}, + {path: 'login', loadChildren: () => import('./pages/login/login.module').then(m => m.LoginModule)}, +]; @NgModule({ imports: [RouterModule.forRoot(routes)], diff --git a/frontend/celso-lisboa/src/app/app.component.html b/frontend/celso-lisboa/src/app/app.component.html index e48d8c1..0680b43 100644 --- a/frontend/celso-lisboa/src/app/app.component.html +++ b/frontend/celso-lisboa/src/app/app.component.html @@ -1,534 +1 @@ - - - - - - - - - - - - - - -
- - -
- - - - - - - - - - - - {{ title }} app is running! - - - - - -
- - -

Resources

-

Here are some links to help you get started:

- - - - -

Next Steps

-

What do you want to do next with your app?

- - - -
-
- - - New Component -
- -
- - - Angular Material -
- -
- - - Add PWA Support -
- -
- - - Add Dependency -
- -
- - - Run and Watch Tests -
- -
- - - Build for Production -
-
- - -
-
ng generate component xyz
-
ng add @angular/material
-
ng add @angular/pwa
-
ng add _____
-
ng test
-
ng build --prod
-
- - - - - - - - - - - -
- - - - - - - - - - - - \ No newline at end of file + diff --git a/frontend/celso-lisboa/src/app/app.component.spec.ts b/frontend/celso-lisboa/src/app/app.component.spec.ts index 39fe612..3d9b450 100644 --- a/frontend/celso-lisboa/src/app/app.component.spec.ts +++ b/frontend/celso-lisboa/src/app/app.component.spec.ts @@ -13,23 +13,4 @@ describe('AppComponent', () => { ], }).compileComponents(); }); - - it('should create the app', () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.componentInstance; - expect(app).toBeTruthy(); - }); - - it(`should have as title 'celso-lisboa'`, () => { - const fixture = TestBed.createComponent(AppComponent); - const app = fixture.componentInstance; - expect(app.title).toEqual('celso-lisboa'); - }); - - it('should render title', () => { - const fixture = TestBed.createComponent(AppComponent); - fixture.detectChanges(); - const compiled = fixture.nativeElement; - expect(compiled.querySelector('.content span').textContent).toContain('celso-lisboa app is running!'); - }); }); diff --git a/frontend/celso-lisboa/src/app/app.component.ts b/frontend/celso-lisboa/src/app/app.component.ts index 5592483..9a8db0f 100644 --- a/frontend/celso-lisboa/src/app/app.component.ts +++ b/frontend/celso-lisboa/src/app/app.component.ts @@ -6,5 +6,4 @@ import { Component } from '@angular/core'; styleUrls: ['./app.component.scss'] }) export class AppComponent { - title = 'celso-lisboa'; } diff --git a/frontend/celso-lisboa/src/app/app.module.ts b/frontend/celso-lisboa/src/app/app.module.ts index 2c3ba29..4c57524 100644 --- a/frontend/celso-lisboa/src/app/app.module.ts +++ b/frontend/celso-lisboa/src/app/app.module.ts @@ -3,6 +3,7 @@ import { NgModule } from '@angular/core'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; +import { LoginModule } from './pages/login/login.module'; @NgModule({ declarations: [ @@ -10,7 +11,8 @@ import { AppComponent } from './app.component'; ], imports: [ BrowserModule, - AppRoutingModule + AppRoutingModule, + LoginModule ], providers: [], bootstrap: [AppComponent] diff --git a/frontend/celso-lisboa/src/app/pages/login/login-routing.module.ts b/frontend/celso-lisboa/src/app/pages/login/login-routing.module.ts new file mode 100644 index 0000000..486ccf1 --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/login/login-routing.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import {LoginComponent} from './login.component'; + + +export const authRoutes: Routes = [ + {path: '', component: LoginComponent}, +]; + +@NgModule({ + imports: [RouterModule.forChild(authRoutes)], + exports: [RouterModule], +}) +export class LoginRoutingModule {} diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.html b/frontend/celso-lisboa/src/app/pages/login/login.component.html new file mode 100644 index 0000000..147cfc4 --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.html @@ -0,0 +1 @@ +

login works!

diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.scss b/frontend/celso-lisboa/src/app/pages/login/login.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.spec.ts b/frontend/celso-lisboa/src/app/pages/login/login.component.spec.ts new file mode 100644 index 0000000..d2c0e6c --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LoginComponent } from './login.component'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await 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/celso-lisboa/src/app/pages/login/login.component.ts b/frontend/celso-lisboa/src/app/pages/login/login.component.ts new file mode 100644 index 0000000..c74528f --- /dev/null +++ b/frontend/celso-lisboa/src/app/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(): void { + } + +} diff --git a/frontend/celso-lisboa/src/app/pages/login/login.module.ts b/frontend/celso-lisboa/src/app/pages/login/login.module.ts new file mode 100644 index 0000000..bf65e72 --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/login/login.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { LoginComponent } from './login.component'; +import {LoginRoutingModule} from './login-routing.module'; + + + +@NgModule({ + declarations: [LoginComponent], + imports: [ + CommonModule, + LoginRoutingModule + ] +}) +export class LoginModule { } From 686ec057e0fb30b4baa6a7aa8c91562a2d96ba17 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Fri, 20 Nov 2020 17:01:05 -0300 Subject: [PATCH 06/45] feat(cl-input): create ui --- .../celso-lisboa/projects/ui/ng-package.json | 2 +- .../cl-input/cl-input.component.css | 53 +++++++++++++++++++ .../cl-input/cl-input.component.html | 5 +- .../cl-input/cl-input.component.ts | 20 ++++++- .../form-controls/cl-input/cl-input.module.ts | 7 ++- .../src/app/pages/login/login.component.html | 2 +- .../src/app/pages/login/login.module.ts | 5 +- 7 files changed, 85 insertions(+), 9 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/ng-package.json b/frontend/celso-lisboa/projects/ui/ng-package.json index e5e5da9..e2ee1a2 100644 --- a/frontend/celso-lisboa/projects/ui/ng-package.json +++ b/frontend/celso-lisboa/projects/ui/ng-package.json @@ -4,4 +4,4 @@ "lib": { "entryFile": "src/public-api.ts" } -} \ No newline at end of file +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css index e69de29..a22277a 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css @@ -0,0 +1,53 @@ +@import url('https://fonts.googleapis.com/css?family=Roboto'); + +.input-group { + position: relative; + width: 100%; +} + +label { + position: absolute; + display: inline-block; + background: transparent; + left: 8px; + top: 50%; + padding: 0 4px; + font-size: 16px; + transform: translatey(-50%); + transition: all .3s ease; + color: gray; + text-transform: uppercase; +} + +.form-input { + display: block; + padding: 12px; + font-size: 16px; + outline: none; + border: 2px solid gray; + border-radius: 4px; + transition: all .3s ease; + color: gray; + width: 100%; + box-sizing: border-box; +} + +.form-input:focus, +.form-input:active { + border: 2px solid #4885ed ; +} + +.form-input:focus ~ label, +.form-input:active ~ label { + color: #4885ed; + background: white; + top: 1px; + font-size: 14px; +} + +.has-value { + color: gray; + background: white; + top: 1px; + font-size: 14px; +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html index 8e6a78b..1236acd 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html @@ -1 +1,4 @@ -

cl-input works!

+
+ + +
diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts index 72d6aef..12baaad 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts @@ -1,15 +1,31 @@ -import { Component, OnInit } from '@angular/core'; +import {Component, OnDestroy, OnInit} from '@angular/core'; +import {fromEvent, Subscription} from 'rxjs'; @Component({ selector: 'ui-cl-input', templateUrl: './cl-input.component.html', styleUrls: ['./cl-input.component.css'] }) -export class ClInputComponent implements OnInit { +export class ClInputComponent implements OnInit, OnDestroy { + + value: string; + class = ''; + subscription: Subscription; constructor() { } ngOnInit(): void { + this.subscription = fromEvent(document, 'focusout').subscribe( data => { + if (this.value) { + this.class = 'has-value'; + } else { + this.class = ''; + } + }); + } + + ngOnDestroy(): void { + this.subscription.unsubscribe(); } } diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.module.ts index f853f3b..bcf9e52 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.module.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.module.ts @@ -1,13 +1,16 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { ClInputComponent } from './cl-input.component'; +import {FormsModule} from '@angular/forms'; @NgModule({ declarations: [ClInputComponent], imports: [ - CommonModule - ] + CommonModule, + FormsModule + ], + exports: [ClInputComponent] }) export class ClInputModule { } diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.html b/frontend/celso-lisboa/src/app/pages/login/login.component.html index 147cfc4..ef0da9d 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.html @@ -1 +1 @@ -

login works!

+ diff --git a/frontend/celso-lisboa/src/app/pages/login/login.module.ts b/frontend/celso-lisboa/src/app/pages/login/login.module.ts index bf65e72..eb3f6c1 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.module.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.module.ts @@ -2,14 +2,15 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { LoginComponent } from './login.component'; import {LoginRoutingModule} from './login-routing.module'; - +import {ClInputModule} from '../../../../projects/ui/src/lib/form-controls/cl-input/cl-input.module'; @NgModule({ declarations: [LoginComponent], imports: [ CommonModule, - LoginRoutingModule + LoginRoutingModule, + ClInputModule ] }) export class LoginModule { } From c5c00e0ab6b313266f7b3b383d2df531f3308ee5 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Fri, 20 Nov 2020 17:29:14 -0300 Subject: [PATCH 07/45] feat(cl-input): transforme input in controlValueAccesor --- .../cl-input/cl-input.component.html | 2 +- .../cl-input/cl-input.component.ts | 38 +++++++++++++++++-- .../src/app/pages/login/login.component.html | 6 ++- .../src/app/pages/login/login.component.ts | 12 +++++- .../src/app/pages/login/login.module.ts | 4 +- 5 files changed, 54 insertions(+), 8 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html index 1236acd..5b91549 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html @@ -1,4 +1,4 @@
- +
diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts index 12baaad..72853b7 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts @@ -1,17 +1,29 @@ -import {Component, OnDestroy, OnInit} from '@angular/core'; +import {Component, forwardRef, OnDestroy, OnInit} from '@angular/core'; import {fromEvent, Subscription} from 'rxjs'; +import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; @Component({ selector: 'ui-cl-input', templateUrl: './cl-input.component.html', - styleUrls: ['./cl-input.component.css'] + styleUrls: ['./cl-input.component.css'], + providers: [ + { + provide: NG_VALUE_ACCESSOR, + useExisting: forwardRef(() => ClInputComponent), + multi: true + } + ] }) -export class ClInputComponent implements OnInit, OnDestroy { +export class ClInputComponent implements OnInit, OnDestroy, ControlValueAccessor { - value: string; class = ''; subscription: Subscription; + value: string; + onChange: (value: any) => void; + onTouched: () => void; + disabled: boolean; + constructor() { } ngOnInit(): void { @@ -28,4 +40,22 @@ export class ClInputComponent implements OnInit, OnDestroy { this.subscription.unsubscribe(); } + writeValue(value: any): void { + if (value) { + this.value = value; + } + } + + registerOnChange(fn: any): void { + this.onChange = fn; + } + + registerOnTouched(fn: any): void { + this.onTouched = fn; + } + + setDisabledState?(isDisabled: boolean): void { + this.disabled = isDisabled; + } + } diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.html b/frontend/celso-lisboa/src/app/pages/login/login.component.html index ef0da9d..a3e4ee6 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.html @@ -1 +1,5 @@ - +
+ +
diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.ts b/frontend/celso-lisboa/src/app/pages/login/login.component.ts index c74528f..7b56852 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.ts @@ -1,4 +1,5 @@ import { Component, OnInit } from '@angular/core'; +import {FormBuilder, FormGroup, Validators} from '@angular/forms'; @Component({ selector: 'app-login', @@ -7,9 +8,18 @@ import { Component, OnInit } from '@angular/core'; }) export class LoginComponent implements OnInit { - constructor() { } + formLogin: FormGroup; + + constructor(private fb: FormBuilder) { } ngOnInit(): void { + this.buildResourceForm(); + } + + private buildResourceForm(): void { + this.formLogin = this.fb.group({ + email: [ null, [ Validators.email] ], + }); } } diff --git a/frontend/celso-lisboa/src/app/pages/login/login.module.ts b/frontend/celso-lisboa/src/app/pages/login/login.module.ts index eb3f6c1..1c28f79 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.module.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.module.ts @@ -3,6 +3,7 @@ import { CommonModule } from '@angular/common'; import { LoginComponent } from './login.component'; import {LoginRoutingModule} from './login-routing.module'; import {ClInputModule} from '../../../../projects/ui/src/lib/form-controls/cl-input/cl-input.module'; +import {ReactiveFormsModule} from '@angular/forms'; @NgModule({ @@ -10,7 +11,8 @@ import {ClInputModule} from '../../../../projects/ui/src/lib/form-controls/cl-in imports: [ CommonModule, LoginRoutingModule, - ClInputModule + ClInputModule, + ReactiveFormsModule ] }) export class LoginModule { } From 9393551a92c3be189694bd50b31dd85e9cf62f1d Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Fri, 20 Nov 2020 18:26:53 -0300 Subject: [PATCH 08/45] feat(cl-input): transforme input in controlValueAccesor --- .../lib/form-controls/cl-input/cl-input.component.css | 1 - .../lib/form-controls/cl-input/cl-input.component.html | 2 +- .../lib/form-controls/cl-input/cl-input.component.ts | 10 ++++------ .../src/app/pages/login/login.component.html | 1 + .../src/app/pages/login/login.component.ts | 2 +- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css index a22277a..ea2e047 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css @@ -16,7 +16,6 @@ label { transform: translatey(-50%); transition: all .3s ease; color: gray; - text-transform: uppercase; } .form-input { diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html index 5b91549..c1ae652 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html @@ -1,4 +1,4 @@
- +
diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts index 72853b7..a996aeb 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts @@ -1,6 +1,6 @@ -import {Component, forwardRef, OnDestroy, OnInit} from '@angular/core'; +import {Component, forwardRef, Input, OnDestroy, OnInit} from '@angular/core'; import {fromEvent, Subscription} from 'rxjs'; -import {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms'; +import {AbstractControl, ControlValueAccessor, NG_VALUE_ACCESSOR, ValidationErrors, Validator} from '@angular/forms'; @Component({ selector: 'ui-cl-input', @@ -24,6 +24,8 @@ export class ClInputComponent implements OnInit, OnDestroy, ControlValueAccessor onTouched: () => void; disabled: boolean; + @Input() label: string; + constructor() { } ngOnInit(): void { @@ -54,8 +56,4 @@ export class ClInputComponent implements OnInit, OnDestroy, ControlValueAccessor this.onTouched = fn; } - setDisabledState?(isDisabled: boolean): void { - this.disabled = isDisabled; - } - } diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.html b/frontend/celso-lisboa/src/app/pages/login/login.component.html index a3e4ee6..e2c922e 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.html @@ -1,5 +1,6 @@
diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.ts b/frontend/celso-lisboa/src/app/pages/login/login.component.ts index 7b56852..695b306 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.ts @@ -18,7 +18,7 @@ export class LoginComponent implements OnInit { private buildResourceForm(): void { this.formLogin = this.fb.group({ - email: [ null, [ Validators.email] ], + email: [ null, [ Validators.required, Validators.email] ], }); } From c0ff91a7771d2eb0be588e22258e2fa7ef481de2 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Fri, 20 Nov 2020 19:05:00 -0300 Subject: [PATCH 09/45] feat(cl-button): create button --- .../cl-input/cl-input.component.css | 2 + .../layout/cl-button/cl-button.component.css | 68 +++++++++++++++++++ .../layout/cl-button/cl-button.component.html | 3 + .../cl-button/cl-button.component.spec.ts | 25 +++++++ .../layout/cl-button/cl-button.component.ts | 18 +++++ .../lib/layout/cl-button/cl-button.module.ts | 14 ++++ .../projects/ui/src/public-api.ts | 8 ++- .../src/app/pages/login/login.component.html | 6 ++ .../src/app/pages/login/login.component.ts | 3 + .../src/app/pages/login/login.module.ts | 2 + 10 files changed, 146 insertions(+), 3 deletions(-) create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.css create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.html create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.spec.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.module.ts diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css index ea2e047..3f9c515 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css @@ -3,9 +3,11 @@ .input-group { position: relative; width: 100%; + font-family: 'roboto-regular', 'arial', sans-serif; } label { + font-family: 'roboto-regular', 'arial', sans-serif; position: absolute; display: inline-block; background: transparent; diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.css new file mode 100644 index 0000000..ffa0e48 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.css @@ -0,0 +1,68 @@ +.btn { + position: relative; + font-family: 'roboto-regular', 'arial', sans-serif; + width: 100%; + margin: 30px auto; + padding: 10px 50px 10px 50px; + border-radius: 5px; + overflow: hidden; + border-width: 0; + outline: none; + box-shadow: 0 1px 4px rgba(0, 0, 0, .6); + background-color: #FF0669; + color: #ecf0f1; + transition: background-color .3s; + cursor: pointer; + text-transform: uppercase; +} + +.btn:hover, .btn:focus { + background-color: #F40B6A; +} + +.btn > * { + position: relative; +} + +.btn span { + display: block; + padding: 12px 24px; +} + +.btn:before { + content: ""; + + position: absolute; + top: 50%; + left: 50%; + + display: block; + width: 0; + padding-top: 0; + + border-radius: 100%; + + background-color: rgba(0, 0, 0, .1); + + -webkit-transform: translate(-50%, -50%); + -moz-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + -o-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} + +.btn:active:before { + width: 120%; + padding-top: 120%; + + transition: width .2s ease-out, padding-top .2s ease-out; +} + +button:disabled,button[disabled]{ + background-color: #cccccc; + color: #666666; +} + +button[disabled].btn:hover{ + background-color: #999999; +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.html new file mode 100644 index 0000000..d98cbc2 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.html @@ -0,0 +1,3 @@ + diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.spec.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.spec.ts new file mode 100644 index 0000000..c3e5dd4 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ClButtonComponent } from './cl-button.component'; + +describe('ClButtonComponent', () => { + let component: ClButtonComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ClButtonComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ClButtonComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.ts new file mode 100644 index 0000000..c2b5db8 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.ts @@ -0,0 +1,18 @@ +import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; + +@Component({ + selector: 'ui-cl-button', + templateUrl: './cl-button.component.html', + styleUrls: ['./cl-button.component.css'] +}) +export class ClButtonComponent implements OnInit { + + @Input() label: string; + @Output() btnClick = new EventEmitter(); + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.module.ts new file mode 100644 index 0000000..abdd7ae --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ClButtonComponent } from './cl-button.component'; + + + +@NgModule({ + declarations: [ClButtonComponent], + imports: [ + CommonModule + ], + exports: [ClButtonComponent] +}) +export class ClButtonModule { } diff --git a/frontend/celso-lisboa/projects/ui/src/public-api.ts b/frontend/celso-lisboa/projects/ui/src/public-api.ts index fd7b705..3ebfca0 100644 --- a/frontend/celso-lisboa/projects/ui/src/public-api.ts +++ b/frontend/celso-lisboa/projects/ui/src/public-api.ts @@ -1,6 +1,8 @@ -/* - * Public API Surface of ui - */ +// Input export * from './lib/form-controls/cl-input/cl-input.component'; export * from './lib/form-controls/cl-input/cl-input.module'; + +// Button +export * from './lib/layout/cl-button/cl-button.component'; +export * from './lib/layout/cl-button/cl-button.module'; diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.html b/frontend/celso-lisboa/src/app/pages/login/login.component.html index e2c922e..21448cc 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.html @@ -3,4 +3,10 @@ formControlName="email" label="Email" > + + + diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.ts b/frontend/celso-lisboa/src/app/pages/login/login.component.ts index 695b306..b1164a1 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.ts @@ -22,4 +22,7 @@ export class LoginComponent implements OnInit { }); } + clickTest(): void { + console.log('test'); + } } diff --git a/frontend/celso-lisboa/src/app/pages/login/login.module.ts b/frontend/celso-lisboa/src/app/pages/login/login.module.ts index 1c28f79..5d350ad 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.module.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.module.ts @@ -4,6 +4,7 @@ import { LoginComponent } from './login.component'; import {LoginRoutingModule} from './login-routing.module'; import {ClInputModule} from '../../../../projects/ui/src/lib/form-controls/cl-input/cl-input.module'; import {ReactiveFormsModule} from '@angular/forms'; +import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/cl-button/cl-button.module'; @NgModule({ @@ -12,6 +13,7 @@ import {ReactiveFormsModule} from '@angular/forms'; CommonModule, LoginRoutingModule, ClInputModule, + ClButtonModule, ReactiveFormsModule ] }) From a5a4ff7815ffc81cbaf56615167f23cc7b69f1d3 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Fri, 20 Nov 2020 19:26:33 -0300 Subject: [PATCH 10/45] feat(cl-button): include img and dark-background in login --- .../src/app/pages/login/login.component.html | 28 +++++++++++------- .../src/app/pages/login/login.component.scss | 20 +++++++++++++ .../src/app/pages/login/login.component.ts | 1 + .../celso-lisboa/src/assets/background.jpg | Bin 0 -> 296912 bytes 4 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 frontend/celso-lisboa/src/assets/background.jpg diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.html b/frontend/celso-lisboa/src/app/pages/login/login.component.html index 21448cc..165e47b 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.html @@ -1,12 +1,20 @@ -
- +
+
+ + - - + + + +
+
diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.scss b/frontend/celso-lisboa/src/app/pages/login/login.component.scss index e69de29..ef57b0d 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.scss +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.scss @@ -0,0 +1,20 @@ +.img-home{ + background: url('../../../assets/background.jpg') no-repeat center top fixed; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; + height: 100vh; + display: flex; + align-items: center; + justify-content: center; +} + +.dark-background { + width: 100%; + height: 100vh; + display: flex; + align-items: center; + justify-content: center; + background-color: rgba(0 , 0, 0, 0.2); +} diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.ts b/frontend/celso-lisboa/src/app/pages/login/login.component.ts index b1164a1..aa0f7ec 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.ts @@ -19,6 +19,7 @@ export class LoginComponent implements OnInit { private buildResourceForm(): void { this.formLogin = this.fb.group({ email: [ null, [ Validators.required, Validators.email] ], + password: [ null, [ Validators.required ] ], }); } diff --git a/frontend/celso-lisboa/src/assets/background.jpg b/frontend/celso-lisboa/src/assets/background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7b9ebbe0874d03fb11d600d923f42febfb017efc GIT binary patch literal 296912 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 phpr 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 gYj$$%2bL{ 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 z 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

w4L%>Vl6`y`7sA8te?4r$OSr*2Ob(iy4T zCMlQY0b*}em1s)>y3`;aB)J`vT%Z8b8r(m5Qop{}(i+Xi3hACL-JM&j7jF0aM+XeR zu7E-0a6J2HaFz#>X1fdS14kYTu7wb--ggv*8Wh41&27?go;*73A4hJ&+cwM`3syhm zzsawS=G6%Leq!$4!JF(gB^G*OndF?)eOuAom>HJ`5L0G&pl*P7FRPQ-%k^RE7!?{W zt`e6yd_jJw?wG}VR37Zy{khFs_2`lg#48v8_YYk{ZOYz4=<0XH(&Q{Z8bekBxudZ- zty{gVpH#$$Y0D$DccRSUzjv%aO>3-;5^JF6tNizP=Q$Md??x&WggX|uc@)CWd$u7^cXxp1UR%yzd%!C6#i zhw8PAEutcWI8p#J9kXQlvsCyXIBS|}t#X@$pWmYPDd^jr-}}9FayN+gk;1PQ+|5*A zf2g1Ds5``J#9x#WC4&Iesb7AudvssfgG@k-jsnkQR0h|nH`^~@-uQDhet@$gK4a5X zx;v20xvi4p-!05R9iTbtjprPu{*7d8ye8~SY+k4td=$l85hPwTi zWbu?3QI%*Z$ePZQpa|!H=dtXI&ZAJ)4C`Uu*kHJbb&9iY6V@MKBw3#}>&{I73+#H} zjL_f8+nwW%99?8l&m=ve-~KpJjtXK({$WuoyYYLufjD$DennGyv;YoyZ_zs3iiL5S z!%><=-TA+2MBHaRTRHO-E@(6XQFfIxhFS>zWdP>u<-yW5okFYo4jg|eBzZzJdRW{U zr(1lS{=427X!#~M{`Kjr5x_)CMwJHwagi^WuH&ueJd_jz#T@y|T_>g?1TF(Y+odJC zCw*@YTHvEK+By!d92%rEESMqerL)%g!gdg*f3U?p*yTiO4G#=#%Yc99XU62&1 zX$MFr@uG9;#9L#wcUtAB)xa-~E|BpHz{>)V2XNF_+`DAsug2!UJLrZ2-_!p{Sjb*W zXiM@_-!D*Z28df)r~c+;e5bTIKblP!wO z4USH{vt&0Bp+lSXCu&I8^0@)Zhwz-MY3=nW9Xx}gU+DO|&};3jXm;0>j0?wi3?-Ly z31lNOwytFAk6FIMv}NZ$X|5JXkO~-+jpA)vG|Mu7)G{gaYdmn$eC465#)&Fzk^7tS7jq{RkJ+@Dnf<=A z!8${05>unDKChoBQ9YY~=lnf6s3Fg#3uYg?{yHGZZ_e9zKS?CMSy;$lE@J1k#T=#1 zqceeCvg;PVl0V@nwVai5k844!9Z3v%)t$FVei@06VaQomfu45~2-`GuTO0!*Q$@zJ zE~9gY!ERbSiyiLfU6r(~S?c{C$#C|V^hQcuM$ELr<9I1c{c)DR=%f3sS~TbVY*bS7 zDS4C>()9iO2vq8X=?SaCP+Q+P>z4*u=Jhlv2{(7@truOjwzAbS7MaABG?wiRIKM1? z&LUL7jqMLKoC>j7JypW#G(5&p?Tqc(o(|VWhAnv%$Bgc3zxgOSAWxGm7hi-TD#-bRWZ-6Xkr48HZOHxSg~dP z#y^%88e;vg-<)%Mk*D;tY+jTYmSZs?hJtd%0ALEpUrX5D>mwI2m$J6d6WTaa@RgEti06@m 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 Nw`tq^OGxT}|Jm8S)$ITP literal 0 HcmV?d00001 From 9906df0b8f49f6365ea9fb80fc7562ad674846d0 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Fri, 20 Nov 2020 19:30:08 -0300 Subject: [PATCH 11/45] feat(cl-button): --- .../ui/src/lib/form-controls/cl-input/cl-input.component.html | 2 +- .../ui/src/lib/form-controls/cl-input/cl-input.component.ts | 1 + frontend/celso-lisboa/src/app/pages/login/login.component.html | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html index c1ae652..7ad3f57 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html @@ -1,4 +1,4 @@

diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts index a996aeb..9106c0f 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts @@ -25,6 +25,7 @@ export class ClInputComponent implements OnInit, OnDestroy, ControlValueAccessor disabled: boolean; @Input() label: string; + @Input() type: string; constructor() { } diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.html b/frontend/celso-lisboa/src/app/pages/login/login.component.html index 165e47b..b1feb74 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.html @@ -4,11 +4,13 @@ Date: Fri, 20 Nov 2020 19:55:09 -0300 Subject: [PATCH 12/45] feat(cl-button): adjustment input --- .../cl-input/cl-input.component.css | 21 ++++++++++--------- .../cl-input/cl-input.component.html | 2 +- .../layout/cl-button/cl-button.component.css | 2 +- .../src/app/pages/login/login.component.html | 4 ++-- .../src/app/pages/login/login.component.scss | 5 +---- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css index 3f9c515..db6dac1 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css @@ -4,6 +4,7 @@ position: relative; width: 100%; font-family: 'roboto-regular', 'arial', sans-serif; + margin: 25px 0px 25px 0px; } label { @@ -17,7 +18,7 @@ label { font-size: 16px; transform: translatey(-50%); transition: all .3s ease; - color: gray; + color: white; } .form-input { @@ -25,30 +26,30 @@ label { padding: 12px; font-size: 16px; outline: none; - border: 2px solid gray; + border: 1.5px solid white; border-radius: 4px; transition: all .3s ease; - color: gray; + color: white; width: 100%; box-sizing: border-box; + background: transparent; } .form-input:focus, .form-input:active { - border: 2px solid #4885ed ; + border: 1.5px solid white; } .form-input:focus ~ label, .form-input:active ~ label { - color: #4885ed; - background: white; - top: 1px; + color: white; + background: transparent; + top: -7px; font-size: 14px; } .has-value { - color: gray; - background: white; - top: 1px; + color: white; + top: -7px; font-size: 14px; } diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html index 7ad3f57..6630ed3 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html @@ -1,4 +1,4 @@
- +
diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.css index ffa0e48..7b37141 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.css +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.css @@ -2,7 +2,7 @@ position: relative; font-family: 'roboto-regular', 'arial', sans-serif; width: 100%; - margin: 30px auto; + margin: 25px 0px 25px 0px; padding: 10px 50px 10px 50px; border-radius: 5px; overflow: hidden; diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.html b/frontend/celso-lisboa/src/app/pages/login/login.component.html index b1feb74..44c946f 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.html @@ -4,13 +4,13 @@ Date: Fri, 20 Nov 2020 20:47:45 -0300 Subject: [PATCH 13/45] feat(cl-button): implement isInvalid method --- .../src/app/pages/login/login.component.html | 42 +++++++++++------- .../src/app/pages/login/login.component.scss | 14 +++++- .../src/app/pages/login/login.component.ts | 8 ++++ frontend/celso-lisboa/src/assets/logo_big.png | Bin 0 -> 5685 bytes frontend/celso-lisboa/src/styles.scss | 19 +++++++- 5 files changed, 65 insertions(+), 18 deletions(-) create mode 100644 frontend/celso-lisboa/src/assets/logo_big.png diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.html b/frontend/celso-lisboa/src/app/pages/login/login.component.html index 44c946f..f712488 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.html @@ -1,22 +1,32 @@
-
- +
+ +

Login

+ + + + E-mail inválido + - + + + Preencha o campo + - - + + +
diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.scss b/frontend/celso-lisboa/src/app/pages/login/login.component.scss index f3ca36a..9dc4a25 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.scss +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.scss @@ -13,5 +13,17 @@ .dark-background { width: 100%; height: 100vh; - background-color: rgba(0 , 0, 0, 0.3); + background-color: rgba(0 , 0, 0, 0.6); +} + +.container-center { + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; +} + +.logo { + margin: 70px 0px 20px 0px; + } diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.ts b/frontend/celso-lisboa/src/app/pages/login/login.component.ts index aa0f7ec..f70bf40 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.ts @@ -26,4 +26,12 @@ export class LoginComponent implements OnInit { clickTest(): void { console.log('test'); } + + isInvalid(controlName): boolean { + const control = this.formLogin.get(controlName); + if (!control.pristine) { + return this.formLogin.get(controlName).invalid; + } + return false; + } } diff --git a/frontend/celso-lisboa/src/assets/logo_big.png b/frontend/celso-lisboa/src/assets/logo_big.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2a5953914fc0b1ef16a7069d733c7ecebd6a27 GIT binary patch literal 5685 zcmaJ_c|4Ts-yZv(-5|@@Qo_vG_jN4A$d;whj4_xPGZ=f8$d-{kLI`nEiU^62eINUt zEn9X`A-p=jbI$Mm<2~>5d7kIK@9*cjuJ8KS9cyZ0z(mhW4*&p|t{KA2&sXgECqqkp z{+*k#L z!%8E6W2F7D_;WS@pr+}MN21)&1dt=z1>>PEy#1j;7=&?B7q*s%L*RH_v@6Ci&1+ZuW66B9{_wZKnR~Pyvb zNEhdY2FXh+NTHx|5Rjs>G*kg1Cl8eb$v~irV2C^zq96ru=syuJ-q)a(|N(b{zyC+Dh>Ia(%(Qh{Qrky zvHzgG3Fhek#`}K?ds_zJ(O`45H_pckb>289THD!N{1Bmw7TiNm@7T}4w@90BL; zio=6+b$?e)33M5bL}5IB8?XGyg2Pp=d3Y0$9w_uRn7Z(}jx+}2q#`S;4}~bmDd=d+ z=t7}-N=ix!dOFJ5irRYG5SWg>?B84%4&{SIdl3HSI{lZc_^;gG1A)b#dxoLCFurIf zeJ>mq^k?EKn17E&?qBu(;yV3%Eb{-#1)m24{@vdH)$YGd=QH$s`_J&6AO0DCw8#0( zdz}w=W^k$w0Kiso4W@1BKe=HSkjmA{y6xZxG|dSke+cr5QH#xU)zYHnWmXFhp$QY6Y!t&qAbXxR1PO+n2T@(cZ~{5p@{w3 zr}~~|6Q2{m7bHGi2GWZ5?Q1?`=nV?kG?)zAxA7b(e8Z7FcsuE28c-HZw=3k){>+4` zdy%|{yzv7^HASL|5Pt%Ja;c!IsXfLT>h`0>31|xEayIR z7ZNB2EVsW(1~LozN;wtm-i5?iq}q$bkv{DFy!=p*T8D??g3!dsU2&LU!m}MA+7#&_ zyn~hkq;LT={3J04DaMopf9okLJFy}V*&fD_P5RT=d)Ry^@t+V%h}(t3Lk2qzH`>VaK07cLf+yg!D75)pLf91d!BTnlK|cKQEM;3Tmf41b8+DfO%1CLPQL+bB z7fShR*<>Q&mg(%st!BO;*3((uHpp-g8|T(COt8-`t>NOD_q02#q$63a@9x5xTq940 z;t;7u0Z=dfy!&zT!783*FEFEz>6yeWp*L|W%MT!Xf_$A{m(@9eH@?Qz!c8^60P!S2 zqouGBN}o)UI=6v@TTsS>g%jKhX^-M%tJ3lcVw>+f-A0Td6RG`);a%+F#*ar@3iM<@ zE*1(EZbe2F%Tb3iVQc4#xaQu$^65-3ZbM%FynZu{rV{8*KHA(D0A#u8$|JO53*d{ay&rK)VF_!x@Vm^bDxsfYDmMF5%ln3mqTk!pH6G}<3w+nke0YG zTlHQo`hhtZ!N1&`d#PvxhC zNAZNO(vyN+Z8uQQo%U|cX)3?=?(INway}m!aHd@h8S8}z+_GvDcjh&}2D+d8mh#sn zi(8Jb)gKsYnV#xxz$zFMeu3x7;lA%{Zqj79H0G__jgj@EP?qkvpsE&bHZ^}&iXT=92T$8DPvvhY)g52DGBi2<^>$rr$zE3u z3xC)gNvrf$-vChSo-;WeB497)=;?OplFo}wi``Iq4*}|LZFw6QZo?pv$?Ec*Id_K9 zmz)7}&?ycF*2YrriRJnT{T`9^xn5<|t3VJ;Uc zu=#QV0z+xvil_)e4m5SJB}BvQc$NCs_nuKJk2X?tGi!eG3*%80iaf{=d&}c%Sj4MH z+xya~Yx!E)6~KW-e~b*;{!MlJ!lBtTm;!mjQ*t~%tnD;2XZxT)Hz+3@qt;wGUxMUo zztAcMtMp06)AcW@6e9Rq&s2~-^@*Whnm9gL+Ac6U#rZIfUY+7m8rmz#y>VvREDzYY ze8<$X`oqvq%=$fXGd)ceD`<74$~S`}h&g}ih?(-6h%q0fC1Sd0wCx&?c$q+NcWwVCXlvUIlpMXmi<_vMWuS;BV z%o&Pwvpn)+C9DCH<)IO5qi?&DG!yzBL8ogR5R7^cstR0REGi~9jIv|AY8?XZIImB5 z72fQ0;Z2Wg0BdrDYx}CIT3UZ3tVBDGcHt?+>T7%SV=KEXxhB zqZd{(GgKzEdhT(??Dsdl3N&PYGMQUTWoXZ%p__g3bSI9wl5AVCBfFybTXr(=5Ms&u zbusJ8d&&vPy4->vBcEu4%n`)Hw*E2wH1RZk#G^R&rj1S#pfszDdizi&U_ve zLb^m$nsNLiX7`6>i0~ZW%VrPftRf^*5Bu@Pz~s`s;X`ipjREfa+r>4}{Vl3ji}1~y zY?bo+&v-2LXFjejV2k{Uee50W6iIGsIW9)>*WGdu#fTp3ybYCi)VFF%n-}4j)G1yM*E{cJNRw#D<6Z4%d z%7PF#o*atdOAQp@EdYBZPU2xN_Y1B{nz*>lMrH15KIb68x=5^B*9;qi zZSw5q%OWWS%RU-)SCUgCsRQ)a$DKUfLt`M})a4(-5{a7kYwZy}9)7$VagR#dr72#g z+}Vo$buVR#LwHMRN8|qYHHqfuADYxLEXxXa%Bv`6^7aYC%=WlB=^o2+!*VgAny|T> zp`(D0;xkKq1C#is0{d>$PWO zqX!oJU{GTCZRW~b2pO6YyU0Nrh@J(#YG9z8tw(Q^t~wOKt6N$cL~Y#2kf*mmNvH zgPzN;Y`@bvK5@aT0=N2=h}*rx#@(rE)DYdLjw*w|_aY8+S=0Bg+(;s$&#Wr7gxQQ& z;l?LeAc3@9vs4#=Qz`b8LASFDvuN zgXBct<_61GqaqzkyCK2BiG{izFAhjb^S*Une(4vLqL^4ciL$hrCo}h_Vjxj#q}i#k z89FSN4U8pUey3K7dRN1@E=4oid7UY3O855nD;ZV?s>jRkZeweXtWltGrNYnB0Z}k4 z&B(x48HNEE4MN#_hN;~c7~ykgc@9U>{JDdQmv~Hu4RixGTEA>u_mxo)&Q!kB6LaVa znWa^-rWhLPk#mThxtAkadzfTl62feIXEQtORby>g$}g^`z6Rgh3vS$91IvF5F1ZMp7my3c)C6W!XZi z$+~E=`bYAsE^Eho*c0BuudcnM7s}2D{#f}yU~jDpqi{0sU6GA9O5&@FRG8Q4Nxmv> zuyj+37B-pr!$&QZUJ)Tr-&y41iaV-r}+Baj>PDFBDSh=e?Xn!Prpo~3E z#jg?|*Xq+<`@d4(mf8ye4O-ns3`ZO3LlDTxq;=X;$L@P8Wks8|ZO<#DB~{>~n`=r( zj6rW8Q!ZD_PKaT&0iiR($>oA~w~dN?J7*RB8kknYqRLU@Hj1Eyw&gO?SVx@A&oL^&bIUSB$G$R{cw`jl1U7c!mXGu0uDy9K(S@ zTQ<-P-EjVPlkd*X%-;7f1L8%FH=NnbE$>;m%2Be4fYa+fq)S$H5BEg1?In2lvYzyG%R$GA?~PDT~bHxALQ?CGx= zP0G$IJhAuG8##*(3?fS76Z;QxI<_x~{vZPdosE+dn5q7>sL5}s;#kEGydnzCrCqOxjKij9_ZfEi?f34ptz>jE zfh;|*@6*VhU48&I#@Uvb!3OlXtKvAd(076Q`yEyZ+19()+{~_gMlB~fG)y|Y7JUS7 zcJUGZQk{80`SdH#wu3oM-pLyqla}5cj(OFi+GP(K@X^oECn2*e=oOmq))_>_J2_A5 zh?vHQJyr>U5BFAA)vyHwNX;&}s1K^J>tPLIP%yTd-E5^VqrmA4!MP5fusqXbDAajE zb@OU_mt2T>#3+}B4hcEdn33;&#Nn8gsw*}6`0?vX4ykU>)a`Z8fU+?{xlGq4D~(=E z16>H>WI2M!GaesON4-6El*`@eE+jk@1|=Pjxg# zd8t-B4Wtwi=@(`R4?Fo;eMvB0@<;n{U&Xay&ZwgvK*Ghe2sdMFQ`f%!W-wB<%T-sr zRM2|Y()lO=_Y7`ZGjh4OPqHycTA#%^LU3&D-E!^1|ZEb4NX`5+fnCvwCR-1(dk8xG35A$1^4Jr0cqWa~mxO?&`nt{z1ulW>fG~&h8 zgX2iCeEy9QR*t%fxcM4FBiru6f zZGvdXd*?vAss*BRM;OWkqA7Lx>%!UZY|jzn70{0&bQ7G7h>O*su2OVKQ|Qv&i4QyM1>YyKp~l5|5k4hh-fl>~ zh-Cix(|p Date: Fri, 20 Nov 2020 20:55:28 -0300 Subject: [PATCH 14/45] feat(cl-button): create enum of error --- .../celso-lisboa/src/app/pages/login/login.component.html | 4 ++-- frontend/celso-lisboa/src/app/pages/login/login.component.ts | 2 ++ .../celso-lisboa/src/app/shared/enum/error-message.enum.ts | 5 +++++ 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 frontend/celso-lisboa/src/app/shared/enum/error-message.enum.ts diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.html b/frontend/celso-lisboa/src/app/pages/login/login.component.html index f712488..4c3d8cd 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/login.component.html @@ -10,7 +10,7 @@

Login

type="email" > - E-mail inválido + {{errorMessage.EMAIL}} Login type="password" > - Preencha o campo + {{errorMessage.EMPTY}} Date: Fri, 20 Nov 2020 21:38:52 -0300 Subject: [PATCH 15/45] feat(login): create login service --- .../{ => component}/login.component.html | 6 ++-- .../{ => component}/login.component.scss | 2 +- .../{ => component}/login.component.spec.ts | 0 .../login/{ => component}/login.component.ts | 18 ++++++++--- .../app/pages/login/login-routing.module.ts | 2 +- .../src/app/pages/login/login.module.ts | 6 ++-- .../src/app/pages/login/models/login.model.ts | 5 ++++ .../pages/login/service/login.service.spec.ts | 16 ++++++++++ .../app/pages/login/service/login.service.ts | 30 +++++++++++++++++++ 9 files changed, 74 insertions(+), 11 deletions(-) rename frontend/celso-lisboa/src/app/pages/login/{ => component}/login.component.html (84%) rename frontend/celso-lisboa/src/app/pages/login/{ => component}/login.component.scss (84%) rename frontend/celso-lisboa/src/app/pages/login/{ => component}/login.component.spec.ts (100%) rename frontend/celso-lisboa/src/app/pages/login/{ => component}/login.component.ts (62%) create mode 100644 frontend/celso-lisboa/src/app/pages/login/models/login.model.ts create mode 100644 frontend/celso-lisboa/src/app/pages/login/service/login.service.spec.ts create mode 100644 frontend/celso-lisboa/src/app/pages/login/service/login.service.ts diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.html b/frontend/celso-lisboa/src/app/pages/login/component/login.component.html similarity index 84% rename from frontend/celso-lisboa/src/app/pages/login/login.component.html rename to frontend/celso-lisboa/src/app/pages/login/component/login.component.html index 4c3d8cd..be525da 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.html @@ -1,9 +1,9 @@
- +

Login

-
+ Login
diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.scss b/frontend/celso-lisboa/src/app/pages/login/component/login.component.scss similarity index 84% rename from frontend/celso-lisboa/src/app/pages/login/login.component.scss rename to frontend/celso-lisboa/src/app/pages/login/component/login.component.scss index 9dc4a25..3ff8d34 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.scss +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.scss @@ -1,5 +1,5 @@ .img-home{ - background: url('../../../assets/background.jpg') no-repeat center top fixed; + background: url('../../../../assets/background.jpg') no-repeat center top fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.spec.ts b/frontend/celso-lisboa/src/app/pages/login/component/login.component.spec.ts similarity index 100% rename from frontend/celso-lisboa/src/app/pages/login/login.component.spec.ts rename to frontend/celso-lisboa/src/app/pages/login/component/login.component.spec.ts diff --git a/frontend/celso-lisboa/src/app/pages/login/login.component.ts b/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts similarity index 62% rename from frontend/celso-lisboa/src/app/pages/login/login.component.ts rename to frontend/celso-lisboa/src/app/pages/login/component/login.component.ts index f9a8b32..bb48227 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.component.ts +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts @@ -1,6 +1,7 @@ import { Component, OnInit } from '@angular/core'; import {FormBuilder, FormGroup, Validators} from '@angular/forms'; -import {ErrorMessageEnum} from '../../shared/enum/error-message.enum'; +import {ErrorMessageEnum} from '../../../shared/enum/error-message.enum'; +import {LoginService} from '../service/login.service'; @Component({ selector: 'app-login', @@ -12,7 +13,10 @@ export class LoginComponent implements OnInit { formLogin: FormGroup; errorMessage = ErrorMessageEnum; - constructor(private fb: FormBuilder) { } + constructor( + private fb: FormBuilder, + private loginService: LoginService + ) { } ngOnInit(): void { this.buildResourceForm(); @@ -25,8 +29,14 @@ export class LoginComponent implements OnInit { }); } - clickTest(): void { - console.log('test'); + submitForm(): void { + if (this.formLogin.valid) { + this.loginService.login(this.formLogin.value); + } else { + for (const property of Object.keys(this.formLogin.controls)){ + this.formLogin.controls[property].pristine = false; + } + } } isInvalid(controlName): boolean { diff --git a/frontend/celso-lisboa/src/app/pages/login/login-routing.module.ts b/frontend/celso-lisboa/src/app/pages/login/login-routing.module.ts index 486ccf1..0470d02 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login-routing.module.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login-routing.module.ts @@ -1,6 +1,6 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; -import {LoginComponent} from './login.component'; +import {LoginComponent} from './component/login.component'; export const authRoutes: Routes = [ diff --git a/frontend/celso-lisboa/src/app/pages/login/login.module.ts b/frontend/celso-lisboa/src/app/pages/login/login.module.ts index 5d350ad..0c22aa9 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.module.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.module.ts @@ -1,10 +1,11 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; -import { LoginComponent } from './login.component'; +import { LoginComponent } from './component/login.component'; import {LoginRoutingModule} from './login-routing.module'; import {ClInputModule} from '../../../../projects/ui/src/lib/form-controls/cl-input/cl-input.module'; import {ReactiveFormsModule} from '@angular/forms'; import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/cl-button/cl-button.module'; +import {HttpClientModule} from '@angular/common/http'; @NgModule({ @@ -14,7 +15,8 @@ import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/cl-button/c LoginRoutingModule, ClInputModule, ClButtonModule, - ReactiveFormsModule + ReactiveFormsModule, + HttpClientModule ] }) export class LoginModule { } diff --git a/frontend/celso-lisboa/src/app/pages/login/models/login.model.ts b/frontend/celso-lisboa/src/app/pages/login/models/login.model.ts new file mode 100644 index 0000000..1aeb8d4 --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/login/models/login.model.ts @@ -0,0 +1,5 @@ + +export interface LoginModel { + email: string; + password: string; +} diff --git a/frontend/celso-lisboa/src/app/pages/login/service/login.service.spec.ts b/frontend/celso-lisboa/src/app/pages/login/service/login.service.spec.ts new file mode 100644 index 0000000..299b0d5 --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/login/service/login.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { LoginService } from './login.service'; + +describe('LoginService', () => { + let service: LoginService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(LoginService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/src/app/pages/login/service/login.service.ts b/frontend/celso-lisboa/src/app/pages/login/service/login.service.ts new file mode 100644 index 0000000..a598897 --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/login/service/login.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; +import {Observable} from 'rxjs'; +import {LoginModel} from '../models/login.model'; +import {HttpClient} from '@angular/common/http'; + +@Injectable({ + providedIn: 'root' +}) +export class LoginService { + + constructor(private http: HttpClient) { } + + login(valueForm: LoginModel): any { + this.callApi(valueForm).subscribe( + (response => { + console.log(response); + // mandar para outra url + return false; + }), + (error => { + console.log(error); + return true; + }) + ); + } + + callApi(valueForm: LoginModel): Observable { + return this.http.post('http://localhost:3000/api/user/login', valueForm); + } +} From 5e852f5057ea30629ac48a16795208a29c37d318 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 13:56:44 -0300 Subject: [PATCH 16/45] feat(login): error handling in API --- .../pages/login/component/login.component.html | 6 ++++++ .../app/pages/login/component/login.component.ts | 16 ++++++++++++---- .../src/app/pages/login/service/login.service.ts | 16 +--------------- .../src/app/shared/enum/error-message.enum.ts | 2 ++ frontend/celso-lisboa/src/styles.scss | 8 ++++++++ 5 files changed, 29 insertions(+), 19 deletions(-) diff --git a/frontend/celso-lisboa/src/app/pages/login/component/login.component.html b/frontend/celso-lisboa/src/app/pages/login/component/login.component.html index be525da..1be2a62 100644 --- a/frontend/celso-lisboa/src/app/pages/login/component/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.html @@ -22,6 +22,12 @@

Login

{{errorMessage.EMPTY}} + + {{errorMessage.LOGIN}} + + + {{errorMessage.EMPTIES}} + { + this.userInvalid = false; + }), + (error => { + this.userInvalid = true; + }) + ); } else { - for (const property of Object.keys(this.formLogin.controls)){ - this.formLogin.controls[property].pristine = false; - } + this.fieldsEmpties = true; } } diff --git a/frontend/celso-lisboa/src/app/pages/login/service/login.service.ts b/frontend/celso-lisboa/src/app/pages/login/service/login.service.ts index a598897..f458374 100644 --- a/frontend/celso-lisboa/src/app/pages/login/service/login.service.ts +++ b/frontend/celso-lisboa/src/app/pages/login/service/login.service.ts @@ -10,21 +10,7 @@ export class LoginService { constructor(private http: HttpClient) { } - login(valueForm: LoginModel): any { - this.callApi(valueForm).subscribe( - (response => { - console.log(response); - // mandar para outra url - return false; - }), - (error => { - console.log(error); - return true; - }) - ); - } - - callApi(valueForm: LoginModel): Observable { + login(valueForm: LoginModel): Observable { return this.http.post('http://localhost:3000/api/user/login', valueForm); } } diff --git a/frontend/celso-lisboa/src/app/shared/enum/error-message.enum.ts b/frontend/celso-lisboa/src/app/shared/enum/error-message.enum.ts index e5a39cd..5d89349 100644 --- a/frontend/celso-lisboa/src/app/shared/enum/error-message.enum.ts +++ b/frontend/celso-lisboa/src/app/shared/enum/error-message.enum.ts @@ -2,4 +2,6 @@ export enum ErrorMessageEnum { EMAIL = 'E-mail inválido', EMPTY = 'Preencha o campo', + EMPTIES = 'Preencha todos os campos a cima', + LOGIN = 'E-mail ou senha inválida', } diff --git a/frontend/celso-lisboa/src/styles.scss b/frontend/celso-lisboa/src/styles.scss index 327e8bf..101872b 100644 --- a/frontend/celso-lisboa/src/styles.scss +++ b/frontend/celso-lisboa/src/styles.scss @@ -13,6 +13,14 @@ h1,h2,h3,h4,h5,h6{ margin-top: -17px; } +.btn-error-message { + font-family: 'roboto-regular', 'arial', sans-serif; + color: white; + display: block; + font-size: 12px; + margin-bottom: -14px; +} + input.ng-dirty.ng-invalid { color: red } From fdbe4f72674afbf2ee92b28cd5dbdcf62e194a5e Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 14:05:10 -0300 Subject: [PATCH 17/45] feat(login): create util class --- .../app/pages/login/component/login.component.ts | 8 +++----- frontend/celso-lisboa/src/app/shared/util/util.ts | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 frontend/celso-lisboa/src/app/shared/util/util.ts diff --git a/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts b/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts index 4dbdfcf..aa3119c 100644 --- a/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts @@ -2,6 +2,7 @@ import { Component, OnInit } from '@angular/core'; import {FormBuilder, FormGroup, Validators} from '@angular/forms'; import {ErrorMessageEnum} from '../../../shared/enum/error-message.enum'; import {LoginService} from '../service/login.service'; +import {Util} from '../../../shared/util/util'; @Component({ selector: 'app-login', @@ -14,6 +15,7 @@ export class LoginComponent implements OnInit { errorMessage = ErrorMessageEnum; userInvalid = false; fieldsEmpties = false; + util = new Util(); constructor( private fb: FormBuilder, @@ -48,10 +50,6 @@ export class LoginComponent implements OnInit { } isInvalid(controlName): boolean { - const control = this.formLogin.get(controlName); - if (!control.pristine) { - return this.formLogin.get(controlName).invalid; - } - return false; + return this.util.controlPristineIsInvalid(controlName, this.formLogin); } } diff --git a/frontend/celso-lisboa/src/app/shared/util/util.ts b/frontend/celso-lisboa/src/app/shared/util/util.ts new file mode 100644 index 0000000..304e31c --- /dev/null +++ b/frontend/celso-lisboa/src/app/shared/util/util.ts @@ -0,0 +1,15 @@ +import {FormGroup} from '@angular/forms'; + +export class Util { + + constructor() {} + + controlPristineIsInvalid(controlName: string, form: FormGroup): boolean { + const control = form.get(controlName); + if (!control.pristine) { + return form.get(controlName).invalid; + } + return false; + } + +} From a8986f7f4d87bafa33ee59a9f8c9c135f04ac7c2 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 14:27:36 -0300 Subject: [PATCH 18/45] feat(login): create home page --- .../src/app/app-routing.module.ts | 1 + .../pages/home/component/home.component.html | 1 + .../pages/home/component/home.component.scss | 0 .../home/component/home.component.spec.ts | 25 +++++++++++++++++++ .../pages/home/component/home.component.ts | 15 +++++++++++ .../src/app/pages/home/home.module.ts | 15 +++++++++++ .../src/app/pages/home/home.routing.module.ts | 14 +++++++++++ .../pages/login/component/login.component.ts | 7 ++++-- .../src/app/pages/login/login.module.ts | 2 +- ...ting.module.ts => login.routing.module.ts} | 0 ...spec.ts => login.resource.service.spec.ts} | 6 ++--- ...n.service.ts => login.resource.service.ts} | 2 +- 12 files changed, 81 insertions(+), 7 deletions(-) create mode 100644 frontend/celso-lisboa/src/app/pages/home/component/home.component.html create mode 100644 frontend/celso-lisboa/src/app/pages/home/component/home.component.scss create mode 100644 frontend/celso-lisboa/src/app/pages/home/component/home.component.spec.ts create mode 100644 frontend/celso-lisboa/src/app/pages/home/component/home.component.ts create mode 100644 frontend/celso-lisboa/src/app/pages/home/home.module.ts create mode 100644 frontend/celso-lisboa/src/app/pages/home/home.routing.module.ts rename frontend/celso-lisboa/src/app/pages/login/{login-routing.module.ts => login.routing.module.ts} (100%) rename frontend/celso-lisboa/src/app/pages/login/service/{login.service.spec.ts => login.resource.service.spec.ts} (60%) rename frontend/celso-lisboa/src/app/pages/login/service/{login.service.ts => login.resource.service.ts} (91%) diff --git a/frontend/celso-lisboa/src/app/app-routing.module.ts b/frontend/celso-lisboa/src/app/app-routing.module.ts index 7e12c03..45cbb7a 100644 --- a/frontend/celso-lisboa/src/app/app-routing.module.ts +++ b/frontend/celso-lisboa/src/app/app-routing.module.ts @@ -4,6 +4,7 @@ import { Routes, RouterModule } from '@angular/router'; const routes: Routes = [ {path: '', redirectTo: 'login', pathMatch: 'full'}, {path: 'login', loadChildren: () => import('./pages/login/login.module').then(m => m.LoginModule)}, + {path: 'home', loadChildren: () => import('./pages/home/home.module').then(m => m.HomeModule)}, ]; @NgModule({ diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html new file mode 100644 index 0000000..5f2c53f --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -0,0 +1 @@ +

home works!

diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss b/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.spec.ts b/frontend/celso-lisboa/src/app/pages/home/component/home.component.spec.ts new file mode 100644 index 0000000..2c5a172 --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; + +describe('HomeComponent', () => { + let component: HomeComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ HomeComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(HomeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts new file mode 100644 index 0000000..73acf06 --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-home', + templateUrl: './home.component.html', + styleUrls: ['./home.component.scss'] +}) +export class HomeComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/frontend/celso-lisboa/src/app/pages/home/home.module.ts b/frontend/celso-lisboa/src/app/pages/home/home.module.ts new file mode 100644 index 0000000..e5d42a2 --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/home/home.module.ts @@ -0,0 +1,15 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { HomeComponent } from './component/home.component'; +import { HomeRoutingModule } from './home.routing.module'; + + + +@NgModule({ + declarations: [HomeComponent], + imports: [ + CommonModule, + HomeRoutingModule + ] +}) +export class HomeModule { } diff --git a/frontend/celso-lisboa/src/app/pages/home/home.routing.module.ts b/frontend/celso-lisboa/src/app/pages/home/home.routing.module.ts new file mode 100644 index 0000000..d5dd372 --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/home/home.routing.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import {HomeComponent} from './component/home.component'; + + +export const authRoutes: Routes = [ + {path: '', component: HomeComponent}, +]; + +@NgModule({ + imports: [RouterModule.forChild(authRoutes)], + exports: [RouterModule], +}) +export class HomeRoutingModule { } diff --git a/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts b/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts index aa3119c..2eed037 100644 --- a/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts @@ -1,8 +1,9 @@ import { Component, OnInit } from '@angular/core'; import {FormBuilder, FormGroup, Validators} from '@angular/forms'; import {ErrorMessageEnum} from '../../../shared/enum/error-message.enum'; -import {LoginService} from '../service/login.service'; +import {LoginResourceService} from '../service/login.resource.service'; import {Util} from '../../../shared/util/util'; +import {Router} from '@angular/router'; @Component({ selector: 'app-login', @@ -19,7 +20,8 @@ export class LoginComponent implements OnInit { constructor( private fb: FormBuilder, - private loginService: LoginService + private loginService: LoginResourceService, + private router: Router ) { } ngOnInit(): void { @@ -39,6 +41,7 @@ export class LoginComponent implements OnInit { this.loginService.login(this.formLogin.value).subscribe( (response => { this.userInvalid = false; + this.router.navigate(['/home']); }), (error => { this.userInvalid = true; diff --git a/frontend/celso-lisboa/src/app/pages/login/login.module.ts b/frontend/celso-lisboa/src/app/pages/login/login.module.ts index 0c22aa9..4a4705b 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.module.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.module.ts @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { LoginComponent } from './component/login.component'; -import {LoginRoutingModule} from './login-routing.module'; +import {LoginRoutingModule} from './login.routing.module'; import {ClInputModule} from '../../../../projects/ui/src/lib/form-controls/cl-input/cl-input.module'; import {ReactiveFormsModule} from '@angular/forms'; import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/cl-button/cl-button.module'; diff --git a/frontend/celso-lisboa/src/app/pages/login/login-routing.module.ts b/frontend/celso-lisboa/src/app/pages/login/login.routing.module.ts similarity index 100% rename from frontend/celso-lisboa/src/app/pages/login/login-routing.module.ts rename to frontend/celso-lisboa/src/app/pages/login/login.routing.module.ts diff --git a/frontend/celso-lisboa/src/app/pages/login/service/login.service.spec.ts b/frontend/celso-lisboa/src/app/pages/login/service/login.resource.service.spec.ts similarity index 60% rename from frontend/celso-lisboa/src/app/pages/login/service/login.service.spec.ts rename to frontend/celso-lisboa/src/app/pages/login/service/login.resource.service.spec.ts index 299b0d5..3fed672 100644 --- a/frontend/celso-lisboa/src/app/pages/login/service/login.service.spec.ts +++ b/frontend/celso-lisboa/src/app/pages/login/service/login.resource.service.spec.ts @@ -1,13 +1,13 @@ import { TestBed } from '@angular/core/testing'; -import { LoginService } from './login.service'; +import { LoginResourceService } from './login.resource.service'; describe('LoginService', () => { - let service: LoginService; + let service: LoginResourceService; beforeEach(() => { TestBed.configureTestingModule({}); - service = TestBed.inject(LoginService); + service = TestBed.inject(LoginResourceService); }); it('should be created', () => { diff --git a/frontend/celso-lisboa/src/app/pages/login/service/login.service.ts b/frontend/celso-lisboa/src/app/pages/login/service/login.resource.service.ts similarity index 91% rename from frontend/celso-lisboa/src/app/pages/login/service/login.service.ts rename to frontend/celso-lisboa/src/app/pages/login/service/login.resource.service.ts index f458374..867a341 100644 --- a/frontend/celso-lisboa/src/app/pages/login/service/login.service.ts +++ b/frontend/celso-lisboa/src/app/pages/login/service/login.resource.service.ts @@ -6,7 +6,7 @@ import {HttpClient} from '@angular/common/http'; @Injectable({ providedIn: 'root' }) -export class LoginService { +export class LoginResourceService { constructor(private http: HttpClient) { } From 36f610d6e54eb205266a00a54616e0e34a3427b7 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 14:38:23 -0300 Subject: [PATCH 19/45] feat(home): create navbar --- .../lib/layout/navbar/navbar.component.css | 0 .../lib/layout/navbar/navbar.component.html | 1 + .../layout/navbar/navbar.component.spec.ts | 25 +++++++++++++++++++ .../src/lib/layout/navbar/navbar.component.ts | 15 +++++++++++ .../ui/src/lib/layout/navbar/navbar.module.ts | 14 +++++++++++ .../pages/home/component/home.component.html | 2 +- .../src/app/pages/home/home.module.ts | 5 ++-- 7 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.css create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.spec.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.module.ts diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.css new file mode 100644 index 0000000..e69de29 diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html new file mode 100644 index 0000000..6bbf8ee --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html @@ -0,0 +1 @@ +

navbar works!

diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.spec.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.spec.ts new file mode 100644 index 0000000..f8ccd6f --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NavbarComponent } from './navbar.component'; + +describe('NavbarComponent', () => { + let component: NavbarComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ NavbarComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(NavbarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.ts new file mode 100644 index 0000000..2d02603 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'ui-cl-navbar', + templateUrl: './navbar.component.html', + styleUrls: ['./navbar.component.css'] +}) +export class NavbarComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.module.ts new file mode 100644 index 0000000..b76ce96 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { NavbarComponent } from './navbar.component'; + + + +@NgModule({ + declarations: [NavbarComponent], + imports: [ + CommonModule + ], + exports: [NavbarComponent] +}) +export class NavbarModule { } diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index 5f2c53f..13f285b 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -1 +1 @@ -

home works!

+ diff --git a/frontend/celso-lisboa/src/app/pages/home/home.module.ts b/frontend/celso-lisboa/src/app/pages/home/home.module.ts index e5d42a2..f6023f2 100644 --- a/frontend/celso-lisboa/src/app/pages/home/home.module.ts +++ b/frontend/celso-lisboa/src/app/pages/home/home.module.ts @@ -2,14 +2,15 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { HomeComponent } from './component/home.component'; import { HomeRoutingModule } from './home.routing.module'; - +import {NavbarModule} from '../../../../projects/ui/src/lib/layout/navbar/navbar.module'; @NgModule({ declarations: [HomeComponent], imports: [ CommonModule, - HomeRoutingModule + HomeRoutingModule, + NavbarModule ] }) export class HomeModule { } From 78bcec5e05e0894078fcf3cfea70afe2ed0b93ca Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 15:01:23 -0300 Subject: [PATCH 20/45] feat(home): create background and implanted --- .../background/background.component.css | 17 ++++++ .../background/background.component.html | 5 ++ .../background/background.component.spec.ts | 25 +++++++++ .../layout/background/background.component.ts | 15 ++++++ .../layout/background/background.module.ts | 13 +++++ .../projects/ui/src/public-api.ts | 8 +++ .../pages/home/component/home.component.html | 4 +- .../src/app/pages/home/home.module.ts | 4 +- .../login/component/login.component.html | 52 +++++++++---------- .../login/component/login.component.scss | 18 ------- .../src/app/pages/login/login.module.ts | 4 +- 11 files changed, 117 insertions(+), 48 deletions(-) create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.css create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.html create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.spec.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.module.ts diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.css new file mode 100644 index 0000000..e70ff14 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.css @@ -0,0 +1,17 @@ +.img-home{ + background: url('../../../../../../../../assets/background.jpg') no-repeat center top fixed; + -webkit-background-size: cover; + -moz-background-size: cover; + -o-background-size: cover; + background-size: cover; + height: 100vh; + display: flex; + align-items: center; + justify-content: center; +} + +.dark-background { + width: 100%; + height: 100vh; + background-color: rgba(0 , 0, 0, 0.6); +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.html new file mode 100644 index 0000000..12755a3 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.html @@ -0,0 +1,5 @@ +
+
+ +
+
diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.spec.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.spec.ts new file mode 100644 index 0000000..df4a775 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BackgroundComponent } from './background.component'; + +describe('BackgroundComponent', () => { + let component: BackgroundComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ BackgroundComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(BackgroundComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.ts new file mode 100644 index 0000000..310ed9d --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'ui-cl-background', + templateUrl: './background.component.html', + styleUrls: ['./background.component.css'] +}) +export class BackgroundComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.module.ts new file mode 100644 index 0000000..2f8a2cd --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.module.ts @@ -0,0 +1,13 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { BackgroundComponent } from './background.component'; + + +@NgModule({ + declarations: [BackgroundComponent], + imports: [ + CommonModule + ], + exports: [BackgroundComponent] +}) +export class BackgroundModule { } diff --git a/frontend/celso-lisboa/projects/ui/src/public-api.ts b/frontend/celso-lisboa/projects/ui/src/public-api.ts index 3ebfca0..60903ac 100644 --- a/frontend/celso-lisboa/projects/ui/src/public-api.ts +++ b/frontend/celso-lisboa/projects/ui/src/public-api.ts @@ -6,3 +6,11 @@ export * from './lib/form-controls/cl-input/cl-input.module'; // Button export * from './lib/layout/cl-button/cl-button.component'; export * from './lib/layout/cl-button/cl-button.module'; + +// Background +export * from './lib/layout/background/background.component'; +export * from './lib/layout/background/background.module'; + +// Navbar +export * from './lib/layout/navbar/navbar.component'; +export * from './lib/layout/navbar/navbar.module'; diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index 13f285b..3fbd184 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -1 +1,3 @@ - + + + diff --git a/frontend/celso-lisboa/src/app/pages/home/home.module.ts b/frontend/celso-lisboa/src/app/pages/home/home.module.ts index f6023f2..e77c2e9 100644 --- a/frontend/celso-lisboa/src/app/pages/home/home.module.ts +++ b/frontend/celso-lisboa/src/app/pages/home/home.module.ts @@ -3,6 +3,7 @@ import { CommonModule } from '@angular/common'; import { HomeComponent } from './component/home.component'; import { HomeRoutingModule } from './home.routing.module'; import {NavbarModule} from '../../../../projects/ui/src/lib/layout/navbar/navbar.module'; +import {BackgroundModule} from '../../../../projects/ui/src/lib/layout/background/background.module'; @NgModule({ @@ -10,7 +11,8 @@ import {NavbarModule} from '../../../../projects/ui/src/lib/layout/navbar/navbar imports: [ CommonModule, HomeRoutingModule, - NavbarModule + NavbarModule, + BackgroundModule ] }) export class HomeModule { } diff --git a/frontend/celso-lisboa/src/app/pages/login/component/login.component.html b/frontend/celso-lisboa/src/app/pages/login/component/login.component.html index 1be2a62..b279bea 100644 --- a/frontend/celso-lisboa/src/app/pages/login/component/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.html @@ -1,38 +1,36 @@ -
-
-
- -

Login

-
- - + +
+ +

Login

+ + + {{errorMessage.EMAIL}} - - + + {{errorMessage.EMPTY}} - + {{errorMessage.LOGIN}} - + {{errorMessage.EMPTIES}} - - -
+ +
-
+ diff --git a/frontend/celso-lisboa/src/app/pages/login/component/login.component.scss b/frontend/celso-lisboa/src/app/pages/login/component/login.component.scss index 3ff8d34..bd3f72e 100644 --- a/frontend/celso-lisboa/src/app/pages/login/component/login.component.scss +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.scss @@ -1,21 +1,3 @@ -.img-home{ - background: url('../../../../assets/background.jpg') no-repeat center top fixed; - -webkit-background-size: cover; - -moz-background-size: cover; - -o-background-size: cover; - background-size: cover; - height: 100vh; - display: flex; - align-items: center; - justify-content: center; -} - -.dark-background { - width: 100%; - height: 100vh; - background-color: rgba(0 , 0, 0, 0.6); -} - .container-center { display: flex; align-items: center; diff --git a/frontend/celso-lisboa/src/app/pages/login/login.module.ts b/frontend/celso-lisboa/src/app/pages/login/login.module.ts index 4a4705b..54ec4f7 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.module.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.module.ts @@ -6,6 +6,7 @@ import {ClInputModule} from '../../../../projects/ui/src/lib/form-controls/cl-in import {ReactiveFormsModule} from '@angular/forms'; import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/cl-button/cl-button.module'; import {HttpClientModule} from '@angular/common/http'; +import {BackgroundModule} from '../../../../projects/ui/src/lib/layout/background/background.module'; @NgModule({ @@ -15,8 +16,9 @@ import {HttpClientModule} from '@angular/common/http'; LoginRoutingModule, ClInputModule, ClButtonModule, + BackgroundModule, ReactiveFormsModule, - HttpClientModule + HttpClientModule, ] }) export class LoginModule { } From 54759ff5a88648a6431c8d12ee60c57ee410748f Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 15:48:20 -0300 Subject: [PATCH 21/45] feat(home): create layout navbar --- .../lib/layout/cl-button/cl-button.module.ts | 2 - .../lib/layout/navbar/navbar.component.css | 27 +++ .../lib/layout/navbar/navbar.component.html | 11 +- .../ui/src/lib/layout/navbar/navbar.module.ts | 4 +- .../login/component/login.component.scss | 1 - .../celso-lisboa/src/assets/close_grey.png | Bin 0 -> 981 bytes .../celso-lisboa/src/assets/close_white.png | Bin 0 -> 1004 bytes .../celso-lisboa/src/assets/logo_medium.png | Bin 0 -> 3812 bytes frontend/celso-lisboa/src/styles.scss | 183 ++++++++++++++++++ 9 files changed, 223 insertions(+), 5 deletions(-) create mode 100644 frontend/celso-lisboa/src/assets/close_grey.png create mode 100644 frontend/celso-lisboa/src/assets/close_white.png create mode 100644 frontend/celso-lisboa/src/assets/logo_medium.png diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.module.ts index abdd7ae..82c90c8 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.module.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.module.ts @@ -2,8 +2,6 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { ClButtonComponent } from './cl-button.component'; - - @NgModule({ declarations: [ClButtonComponent], imports: [ diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.css index e69de29..ba54ed2 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.css +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.css @@ -0,0 +1,27 @@ +.navbar{ + height: 65px; + width: 100%; + background-color: transparent; + margin-bottom: 30px; + display: flex; + align-items: center; + justify-content: space-around; +} + +.title-nav{ + display: none; +} + +.title-outside-nav { + display: block; + text-align: center; +} + +@media (min-width: 768px) { + .title-nav{ + display: inline; + } + .title-outside-nav { + display: none; + } +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html index 6bbf8ee..71cc027 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html @@ -1 +1,10 @@ -

navbar works!

+ +

+ Cursos +

diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.module.ts index b76ce96..e9b9252 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.module.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.module.ts @@ -1,13 +1,15 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { NavbarComponent } from './navbar.component'; +import {ClButtonModule} from '../cl-button/cl-button.module'; @NgModule({ declarations: [NavbarComponent], imports: [ - CommonModule + CommonModule, + ClButtonModule ], exports: [NavbarComponent] }) diff --git a/frontend/celso-lisboa/src/app/pages/login/component/login.component.scss b/frontend/celso-lisboa/src/app/pages/login/component/login.component.scss index bd3f72e..966cf76 100644 --- a/frontend/celso-lisboa/src/app/pages/login/component/login.component.scss +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.scss @@ -7,5 +7,4 @@ .logo { margin: 70px 0px 20px 0px; - } diff --git a/frontend/celso-lisboa/src/assets/close_grey.png b/frontend/celso-lisboa/src/assets/close_grey.png new file mode 100644 index 0000000000000000000000000000000000000000..4e9aa6cc70d5752ddfbde805eee36c98fd21adb0 GIT binary patch literal 981 zcmaJ=O=}ZD7+$CpsTL8vSUe2d9wL~X-85gjbS=q#Gyyl%G+>TycBjqK?#?nw& za#`k)P5Kda(`=M1PZ&&;cqE8vfFr;e-45QTy2vs;Eg_7jv{5o{6Kfbu-54s8%uAX$ zI?n%H!*J@I&?fqu?>~u?RzF6ti4wd|JT|!PWgaTl41!#WNekn>Nf$S}nBt_1V_+D( zYh{peTrY^Y@x}<{I9feQs2h2xZt5cAk%GY2N_pE>Ov|oTa)zQ<<#M@bRnCOHZGuBEDqIU@=VH#}8)N;MxmearEM&<* zKHf9qo|u@1_;D&;cA3f_MNIRAiTnD6gAMjDjJjEArC&N32!CHXckx5#cu+oUFM=gw zcszgA`H_GA_)2T|3A}B*N2_-Zo;`6^ejc5CURIyh8kbLA=tE&n*gO2X61;x-i$Aow L)i7UG?>+hhwSY1w literal 0 HcmV?d00001 diff --git a/frontend/celso-lisboa/src/assets/close_white.png b/frontend/celso-lisboa/src/assets/close_white.png new file mode 100644 index 0000000000000000000000000000000000000000..8945a4bfaf64864276bcdf6a8f6e37b253674e8b GIT binary patch literal 1004 zcmaJ=OK8+U7)~kHQfx1Z+9Einmnv>v`%G-C*(BR8m{PZkE}l%2+1=146O&mtEk&g0 zK~QNCyn8H&r-B8A>P;^q=*dGV=*>gHiyob9cefr~1CyEg`M>Xfee-Z`c6xYdY>1+$ z;o^)|iuZU84v>HFN)_#Ve6>Y-VZDa>0u-eUMbem;)*bAV@QrgvF;gkQEs| z!==*vMIdl|mgUkcmq~EE#N{M`2knn0(E__Fm9#=T7P-lE9b;c&*=DoJG?NSpYAi2` zBFhP^AS8%KB3$;c86~`Myu+Zu&st8jk}fu6NYIyUTi$yLK%is^g?WU7A$HqO?Vi`v88OPP~bH^pH~Ex=k;7Jm(la0 zl2vqt)AEI62dg2g;X)60u=XKV?TL*A;rb-91_S2~v79$%ldp}nd*`C` z#IhtAHXiR^yayyViAKlF&^10wFv$2QK9hjFv0Ddp(vqfg4nTQI0y`~7Pt z=^nSXo=}&*OrMr_h2*QdNBXr>tNWwI(T|TSBgt)juerImG0Ha{{Cv9o;#+q8`Fo*s q|JnM5t+f+Z@?(4VQtt-N_6<;*Z_b>Iu21#F@2{xOYA^G**8Tv%4?Il( literal 0 HcmV?d00001 diff --git a/frontend/celso-lisboa/src/assets/logo_medium.png b/frontend/celso-lisboa/src/assets/logo_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..251c797c5cc8be063529295d459e5fa241366790 GIT binary patch literal 3812 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 literal 0 HcmV?d00001 diff --git a/frontend/celso-lisboa/src/styles.scss b/frontend/celso-lisboa/src/styles.scss index 101872b..6c53507 100644 --- a/frontend/celso-lisboa/src/styles.scss +++ b/frontend/celso-lisboa/src/styles.scss @@ -24,3 +24,186 @@ h1,h2,h3,h4,h5,h6{ input.ng-dirty.ng-invalid { color: red } + +//GRID SYSTEM + +*{ + box-sizing: border-box +} + +.box{ + display: flex; + justify-content: center; + background-color: #38aeb3; + color: white; + font-family: 'Open Sans', sans-serif; + width: 100%; + transition: background-color .3s; +} + +.box:hover { + background-color: #379b96; +} + +.row{ + display: grid; + grid-row-gap: 1em; + grid-column-gap: 15px; + grid-template-columns: repeat(12, 1fr); + margin: 1em 0em 1em 0em; + grid-auto-flow: row; +} + +.col-xs-12 { + grid-column: span 12; +} +.col-xs-11 { + grid-column: span 11; +} +.col-xs-10 { + grid-column: span 10; +} +.col-xs-9 { + grid-column: span 9; +} +.col-xs-8 { + grid-column: span 8; +} +.col-xs-7 { + grid-column: span 7; +} +.col-xs-6 { + grid-column: span 6; +} +.col-xs-5 { + grid-column: span 5; +} +.col-xs-4 { + grid-column: span 4; +} +.col-xs-3 { + grid-column: span 3; +} +.col-xs-2 { + grid-column: span 2; +} +.col-xs-1 { + grid-column: span 1; +} + +@media (min-width: 768px) { + .col-sm-12 { + grid-column: span 12; + } + .col-sm-11 { + grid-column: span 11; + } + .col-sm-10 { + grid-column: span 10; + } + .col-sm-9 { + grid-column: span 9; + } + .col-sm-8 { + grid-column: span 8; + } + .col-sm-7 { + grid-column: span 7; + } + .col-sm-6 { + grid-column: span 6; + } + .col-sm-5 { + grid-column: span 5; + } + .col-sm-4 { + grid-column: span 4; + } + .col-sm-3 { + grid-column: span 3; + } + .col-sm-2 { + grid-column: span 2; + } + .col-sm-1 { + grid-column: span 1; + } +} + +@media (min-width: 992px) { + .col-md-12 { + grid-column: span 12; + } + .col-md-11 { + grid-column: span 11; + } + .col-md-10 { + grid-column: span 10; + } + .col-md-9 { + grid-column: span 9; + } + .col-md-8 { + grid-column: span 8; + } + .col-md-7 { + grid-column: span 7; + } + .col-md-6 { + grid-column: span 6; + } + .col-md-5 { + grid-column: span 5; + } + .col-md-4 { + grid-column: span 4; + } + .col-md-3 { + grid-column: span 3; + } + .col-md-2 { + grid-column: span 2; + } + .col-md-1 { + grid-column: span 1; + } +} + +@media (min-width: 1200px) { + .col-lg-12 { + grid-column: span 12; + } + .col-lg-11 { + grid-column: span 11; + } + .col-lg-10 { + grid-column: span 10; + } + .col-lg-9 { + grid-column: span 9; + } + .col-lg-8 { + grid-column: span 8; + } + .col-lg-7 { + grid-column: span 7; + } + .col-lg-6 { + grid-column: span 6; + } + .col-lg-5 { + grid-column: span 5; + } + .col-lg-4 { + grid-column: span 4; + } + .col-lg-3 { + grid-column: span 3; + } + .col-lg-2 { + grid-column: span 2; + } + .col-lg-1 { + grid-column: span 1; + } +} From 7ec71483542351c17514b32f5adafaaa2317daa6 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 15:57:17 -0300 Subject: [PATCH 22/45] feat(home): create and implement button-rounded --- .../button-rounded.component.css | 68 +++++++++++++++++++ .../button-rounded.component.html} | 0 .../button-rounded.component.spec.ts | 25 +++++++ .../button-rounded.component.ts | 18 +++++ .../button-rounded/button-rounded.module.ts | 14 ++++ .../cl-button.component.css | 0 .../layout/button/cl-button.component.html | 3 + .../cl-button.component.spec.ts | 0 .../cl-button.component.ts | 0 .../{cl-button => button}/cl-button.module.ts | 0 .../lib/layout/navbar/navbar.component.html | 4 +- .../ui/src/lib/layout/navbar/navbar.module.ts | 4 +- .../projects/ui/src/public-api.ts | 4 +- .../src/app/pages/login/login.module.ts | 2 +- 14 files changed, 135 insertions(+), 7 deletions(-) create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.css rename frontend/celso-lisboa/projects/ui/src/lib/layout/{cl-button/cl-button.component.html => button-rounded/button-rounded.component.html} (100%) create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.spec.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.module.ts rename frontend/celso-lisboa/projects/ui/src/lib/layout/{cl-button => button}/cl-button.component.css (100%) create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.html rename frontend/celso-lisboa/projects/ui/src/lib/layout/{cl-button => button}/cl-button.component.spec.ts (100%) rename frontend/celso-lisboa/projects/ui/src/lib/layout/{cl-button => button}/cl-button.component.ts (100%) rename frontend/celso-lisboa/projects/ui/src/lib/layout/{cl-button => button}/cl-button.module.ts (100%) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.css new file mode 100644 index 0000000..fc9a9fd --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.css @@ -0,0 +1,68 @@ +.btn { + position: relative; + font-family: 'roboto-regular', 'arial', sans-serif; + width: 100%; + margin: 25px 0px 25px 0px; + padding: 8px 40px 8px 40px; + border-radius: 17px; + overflow: hidden; + border-width: 0; + outline: none; + box-shadow: 0 1px 4px rgba(0, 0, 0, .6); + background-color: #FF0669; + color: #ecf0f1; + transition: background-color .3s; + cursor: pointer; + text-transform: uppercase; +} + +.btn:hover, .btn:focus { + background-color: #F40B6A; +} + +.btn > * { + position: relative; +} + +.btn span { + display: block; + padding: 12px 24px; +} + +.btn:before { + content: ""; + + position: absolute; + top: 50%; + left: 50%; + + display: block; + width: 0; + padding-top: 0; + + border-radius: 100%; + + background-color: rgba(0, 0, 0, .1); + + -webkit-transform: translate(-50%, -50%); + -moz-transform: translate(-50%, -50%); + -ms-transform: translate(-50%, -50%); + -o-transform: translate(-50%, -50%); + transform: translate(-50%, -50%); +} + +.btn:active:before { + width: 120%; + padding-top: 120%; + + transition: width .2s ease-out, padding-top .2s ease-out; +} + +button:disabled,button[disabled]{ + background-color: #cccccc; + color: #666666; +} + +button[disabled].btn:hover{ + background-color: #999999; +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.html similarity index 100% rename from frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.html rename to frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.html diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.spec.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.spec.ts new file mode 100644 index 0000000..3600c79 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ButtonRoundedComponent } from './button-rounded.component'; + +describe('ButtonRoundedComponent', () => { + let component: ButtonRoundedComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ButtonRoundedComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ButtonRoundedComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.ts new file mode 100644 index 0000000..c310344 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.ts @@ -0,0 +1,18 @@ +import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; + +@Component({ + selector: 'ui-cl-button-rounded', + templateUrl: './button-rounded.component.html', + styleUrls: ['./button-rounded.component.css'] +}) +export class ButtonRoundedComponent implements OnInit { + + @Input() label: string; + @Output() btnClick = new EventEmitter(); + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.module.ts new file mode 100644 index 0000000..95df62c --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ButtonRoundedComponent } from './button-rounded.component'; + + + +@NgModule({ + declarations: [ButtonRoundedComponent], + imports: [ + CommonModule + ], + exports: [ButtonRoundedComponent] +}) +export class ButtonRoundedModule { } diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.css similarity index 100% rename from frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.css rename to frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.css diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.html new file mode 100644 index 0000000..d98cbc2 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.html @@ -0,0 +1,3 @@ + diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.spec.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.spec.ts similarity index 100% rename from frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.spec.ts rename to frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.spec.ts diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.ts similarity index 100% rename from frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.component.ts rename to frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.ts diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.module.ts similarity index 100% rename from frontend/celso-lisboa/projects/ui/src/lib/layout/cl-button/cl-button.module.ts rename to frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.module.ts diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html index 71cc027..dd2f366 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html @@ -1,9 +1,9 @@

Cursos diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.module.ts index e9b9252..9f784af 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.module.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.module.ts @@ -1,7 +1,7 @@ import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { NavbarComponent } from './navbar.component'; -import {ClButtonModule} from '../cl-button/cl-button.module'; +import {ButtonRoundedModule} from '../button-rounded/button-rounded.module'; @@ -9,7 +9,7 @@ import {ClButtonModule} from '../cl-button/cl-button.module'; declarations: [NavbarComponent], imports: [ CommonModule, - ClButtonModule + ButtonRoundedModule ], exports: [NavbarComponent] }) diff --git a/frontend/celso-lisboa/projects/ui/src/public-api.ts b/frontend/celso-lisboa/projects/ui/src/public-api.ts index 60903ac..2dbfccb 100644 --- a/frontend/celso-lisboa/projects/ui/src/public-api.ts +++ b/frontend/celso-lisboa/projects/ui/src/public-api.ts @@ -4,8 +4,8 @@ export * from './lib/form-controls/cl-input/cl-input.component'; export * from './lib/form-controls/cl-input/cl-input.module'; // Button -export * from './lib/layout/cl-button/cl-button.component'; -export * from './lib/layout/cl-button/cl-button.module'; +export * from './lib/layout/button/cl-button.component'; +export * from './lib/layout/button/cl-button.module'; // Background export * from './lib/layout/background/background.component'; diff --git a/frontend/celso-lisboa/src/app/pages/login/login.module.ts b/frontend/celso-lisboa/src/app/pages/login/login.module.ts index 54ec4f7..aac5753 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.module.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.module.ts @@ -4,7 +4,7 @@ import { LoginComponent } from './component/login.component'; import {LoginRoutingModule} from './login.routing.module'; import {ClInputModule} from '../../../../projects/ui/src/lib/form-controls/cl-input/cl-input.module'; import {ReactiveFormsModule} from '@angular/forms'; -import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/cl-button/cl-button.module'; +import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/button/cl-button.module'; import {HttpClientModule} from '@angular/common/http'; import {BackgroundModule} from '../../../../projects/ui/src/lib/layout/background/background.module'; From 062751e7ad1e979ff9de716f99705f9e1322cfda Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 16:12:31 -0300 Subject: [PATCH 23/45] feat(home): create container-home --- .../lib/layout/navbar/navbar.component.css | 6 +++--- .../pages/home/component/home.component.html | 3 +++ .../pages/home/component/home.component.scss | 21 +++++++++++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.css index ba54ed2..e6368a9 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.css +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.css @@ -1,4 +1,4 @@ -.navbar{ +.navbar { height: 65px; width: 100%; background-color: transparent; @@ -8,7 +8,7 @@ justify-content: space-around; } -.title-nav{ +.title-nav { display: none; } @@ -18,7 +18,7 @@ } @media (min-width: 768px) { - .title-nav{ + .title-nav { display: inline; } .title-outside-nav { diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index 3fbd184..c2e4972 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -1,3 +1,6 @@ +
+ +
diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss b/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss index e69de29..2b635aa 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss @@ -0,0 +1,21 @@ +.container-home { + padding: 10px 40px 10px 40px; +} + +@media (min-width: 768px) { + .container-home { + padding: 30px 100px 30px 100px; + } +} + +@media (min-width: 992px) { + .container-home { + padding: 40px 120px 40px 120px; + } +} + +@media (min-width: 1200px) { + .container-home { + padding: 50px 160px 50px 160px; + } +} From 5fb51eb22e59072fd44179c021f5912f79b9d105 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 17:16:34 -0300 Subject: [PATCH 24/45] feat(home): layout card-course --- .../card-course/card-course.component.css | 43 +++++++++++++++++++ .../card-course/card-course.component.html | 25 +++++++++++ .../card-course/card-course.component.spec.ts | 25 +++++++++++ .../card-course/card-course.component.ts | 15 +++++++ .../layout/card-course/card-course.module.ts | 14 ++++++ .../projects/ui/src/public-api.ts | 16 +++++-- .../pages/home/component/home.component.html | 17 +++++++- .../pages/home/component/home.component.scss | 2 +- .../src/app/pages/home/home.module.ts | 2 + frontend/celso-lisboa/src/styles.scss | 11 +++-- 10 files changed, 160 insertions(+), 10 deletions(-) create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.css create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.html create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.spec.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.module.ts diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.css new file mode 100644 index 0000000..2a131ad --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.css @@ -0,0 +1,43 @@ +.card-course { + background: #fff; + border-radius: 10px; + display: inline-block; + height: auto; + width: 100%; + box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); + padding: 10px; +} + +.card-box { + padding: 10px; +} + +.card-head { + display: flex; + justify-content: space-between; + margin-bottom: 30px; +} + +.title-card-course { + font-family: 'roboto-regular', 'arial', sans-serif; + color: #565656; + font-size: larger; +} + +.card-body { + font-family: 'roboto-regular', 'arial', sans-serif; + font-size: small; + color: #c0c0c0; + margin-bottom: -10px; +} + +.btn-close { + cursor: pointer; + background-color: transparent; + border: none; +} + +.rooms-and-hours { + display: flex; + justify-content: space-between; +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.html new file mode 100644 index 0000000..be9e81e --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.html @@ -0,0 +1,25 @@ +
+
+
+ + +
+
+
+
+ +
+
+
+
+
+ + +
+
+
+
+
+
diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.spec.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.spec.ts new file mode 100644 index 0000000..3a74543 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CardCourseComponent } from './card-course.component'; + +describe('CardCourseComponent', () => { + let component: CardCourseComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ CardCourseComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(CardCourseComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.ts new file mode 100644 index 0000000..6e058b4 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'ui-cl-card-course', + templateUrl: './card-course.component.html', + styleUrls: ['./card-course.component.css'] +}) +export class CardCourseComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.module.ts new file mode 100644 index 0000000..f0bf814 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { CardCourseComponent } from './card-course.component'; + + + +@NgModule({ + declarations: [CardCourseComponent], + imports: [ + CommonModule + ], + exports: [CardCourseComponent] +}) +export class CardCourseModule { } diff --git a/frontend/celso-lisboa/projects/ui/src/public-api.ts b/frontend/celso-lisboa/projects/ui/src/public-api.ts index 2dbfccb..730e428 100644 --- a/frontend/celso-lisboa/projects/ui/src/public-api.ts +++ b/frontend/celso-lisboa/projects/ui/src/public-api.ts @@ -1,16 +1,24 @@ -// Input +// cl-input export * from './lib/form-controls/cl-input/cl-input.component'; export * from './lib/form-controls/cl-input/cl-input.module'; -// Button +// button export * from './lib/layout/button/cl-button.component'; export * from './lib/layout/button/cl-button.module'; -// Background +// background export * from './lib/layout/background/background.component'; export * from './lib/layout/background/background.module'; -// Navbar +// navbar export * from './lib/layout/navbar/navbar.component'; export * from './lib/layout/navbar/navbar.module'; + +// button-rounded +export * from './lib/layout/button-rounded/button-rounded.component'; +export * from './lib/layout/button-rounded/button-rounded.module'; + +// card-course +export * from './lib/layout/card-course/card-course.component'; +export * from './lib/layout/card-course/card-course.module'; diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index c2e4972..2fd94dd 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -1,6 +1,21 @@
- +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss b/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss index 2b635aa..83a863f 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss @@ -1,5 +1,5 @@ .container-home { - padding: 10px 40px 10px 40px; + padding: 10px 30px 10px 30px; } @media (min-width: 768px) { diff --git a/frontend/celso-lisboa/src/app/pages/home/home.module.ts b/frontend/celso-lisboa/src/app/pages/home/home.module.ts index e77c2e9..df3af43 100644 --- a/frontend/celso-lisboa/src/app/pages/home/home.module.ts +++ b/frontend/celso-lisboa/src/app/pages/home/home.module.ts @@ -4,6 +4,7 @@ import { HomeComponent } from './component/home.component'; import { HomeRoutingModule } from './home.routing.module'; import {NavbarModule} from '../../../../projects/ui/src/lib/layout/navbar/navbar.module'; import {BackgroundModule} from '../../../../projects/ui/src/lib/layout/background/background.module'; +import {CardCourseModule} from '../../../../projects/ui/src/lib/layout/card-course/card-course.module'; @NgModule({ @@ -12,6 +13,7 @@ import {BackgroundModule} from '../../../../projects/ui/src/lib/layout/backgroun CommonModule, HomeRoutingModule, NavbarModule, + CardCourseModule, BackgroundModule ] }) diff --git a/frontend/celso-lisboa/src/styles.scss b/frontend/celso-lisboa/src/styles.scss index 6c53507..c386c6d 100644 --- a/frontend/celso-lisboa/src/styles.scss +++ b/frontend/celso-lisboa/src/styles.scss @@ -1,3 +1,10 @@ +* { + box-sizing: border-box; +} + +body { + background-color: black; +} h1,h2,h3,h4,h5,h6{ font-family: 'roboto-regular', 'arial', sans-serif; @@ -27,10 +34,6 @@ input.ng-dirty.ng-invalid { //GRID SYSTEM -*{ - box-sizing: border-box -} - .box{ display: flex; justify-content: center; From 708b50f86bb362cdf7128275b6213a35dac5ab85 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 17:29:47 -0300 Subject: [PATCH 25/45] feat(home): create home.resource.service and implement --- .../pages/home/component/home.component.ts | 7 +++++- .../services/home.resource.service.spec.ts | 16 +++++++++++++ .../home/services/home.resource.service.ts | 15 ++++++++++++ .../pages/login/component/login.component.ts | 2 +- .../login.resource.service.spec.ts | 0 .../login.resource.service.ts | 0 .../src/app/shared/models/courses.model.ts | 23 +++++++++++++++++++ 7 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.spec.ts create mode 100644 frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.ts rename frontend/celso-lisboa/src/app/pages/login/{service => services}/login.resource.service.spec.ts (100%) rename frontend/celso-lisboa/src/app/pages/login/{service => services}/login.resource.service.ts (100%) create mode 100644 frontend/celso-lisboa/src/app/shared/models/courses.model.ts diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts index 73acf06..853bd36 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts @@ -1,4 +1,6 @@ import { Component, OnInit } from '@angular/core'; +import {HomeResourceService} from '../services/home.resource.service'; +import {CoursesModel} from '../../../shared/models/courses.model'; @Component({ selector: 'app-home', @@ -7,9 +9,12 @@ import { Component, OnInit } from '@angular/core'; }) export class HomeComponent implements OnInit { - constructor() { } + constructor(private homeResourceService: HomeResourceService) { } ngOnInit(): void { + this.homeResourceService.getAllCourses().subscribe((courses: CoursesModel) => { + console.log(courses); + }); } } diff --git a/frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.spec.ts b/frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.spec.ts new file mode 100644 index 0000000..07cf90f --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { Home.ResourceService } from './home.resource.service'; + +describe('Home.ResourceService', () => { + let service: Home.ResourceService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(Home.ResourceService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.ts b/frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.ts new file mode 100644 index 0000000..324ea34 --- /dev/null +++ b/frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import {Observable} from 'rxjs'; +import {HttpClient} from '@angular/common/http'; + +@Injectable({ + providedIn: 'root' +}) +export class HomeResourceService { + + constructor(private http: HttpClient) { } + + getAllCourses(): Observable { + return this.http.get('http://localhost:3000/api/curso'); + } +} diff --git a/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts b/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts index 2eed037..7512fac 100644 --- a/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts @@ -1,7 +1,7 @@ import { Component, OnInit } from '@angular/core'; import {FormBuilder, FormGroup, Validators} from '@angular/forms'; import {ErrorMessageEnum} from '../../../shared/enum/error-message.enum'; -import {LoginResourceService} from '../service/login.resource.service'; +import {LoginResourceService} from '../services/login.resource.service'; import {Util} from '../../../shared/util/util'; import {Router} from '@angular/router'; diff --git a/frontend/celso-lisboa/src/app/pages/login/service/login.resource.service.spec.ts b/frontend/celso-lisboa/src/app/pages/login/services/login.resource.service.spec.ts similarity index 100% rename from frontend/celso-lisboa/src/app/pages/login/service/login.resource.service.spec.ts rename to frontend/celso-lisboa/src/app/pages/login/services/login.resource.service.spec.ts diff --git a/frontend/celso-lisboa/src/app/pages/login/service/login.resource.service.ts b/frontend/celso-lisboa/src/app/pages/login/services/login.resource.service.ts similarity index 100% rename from frontend/celso-lisboa/src/app/pages/login/service/login.resource.service.ts rename to frontend/celso-lisboa/src/app/pages/login/services/login.resource.service.ts diff --git a/frontend/celso-lisboa/src/app/shared/models/courses.model.ts b/frontend/celso-lisboa/src/app/shared/models/courses.model.ts new file mode 100644 index 0000000..ecf89fb --- /dev/null +++ b/frontend/celso-lisboa/src/app/shared/models/courses.model.ts @@ -0,0 +1,23 @@ + +export interface CoursesModel { + cursos: CourseModel[]; +} + +export interface CourseModel { + id: string; + nome: string; + inicio: string; + fim: string; + salas: Rooms[]; + professores: Teachers[]; +} + +export interface Rooms { + id: string; + sala: string; +} + +export interface Teachers { + id: string; + nome: string; +} From 7bdd1e8b9102af0c1c8fcd4e4bd85bcdadddb253 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 18:26:16 -0300 Subject: [PATCH 26/45] feat(home): create action of delete in card-course --- .../card-course/card-course.component.css | 4 ++-- .../card-course/card-course.component.html | 10 ++++----- .../card-course/card-course.component.ts | 21 +++++++++++++++++-- .../pages/home/component/home.component.html | 17 ++++----------- .../pages/home/component/home.component.ts | 12 ++++++----- .../services/course.resource.service.spec.ts} | 8 +++---- .../services/course.resource.service.ts} | 8 +++++-- .../celso-lisboa/src/app/shared/util/util.ts | 8 +++++++ 8 files changed, 55 insertions(+), 33 deletions(-) rename frontend/celso-lisboa/src/app/{pages/home/services/home.resource.service.spec.ts => shared/services/course.resource.service.spec.ts} (50%) rename frontend/celso-lisboa/src/app/{pages/home/services/home.resource.service.ts => shared/services/course.resource.service.ts} (66%) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.css index 2a131ad..4b6caf4 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.css +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.css @@ -1,11 +1,11 @@ .card-course { background: #fff; - border-radius: 10px; + border-radius: 8px; display: inline-block; height: auto; width: 100%; box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); - padding: 10px; + padding: 15px; } .card-box { diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.html index be9e81e..d90c554 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.html @@ -1,22 +1,22 @@
- -
- +
- - + +
diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.ts index 6e058b4..e1e4b3e 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.ts @@ -1,4 +1,8 @@ -import { Component, OnInit } from '@angular/core'; +import {Component, Input, OnInit} from '@angular/core'; +import {CourseModel} from '../../../../../../src/app/shared/models/courses.model'; +import {Util} from '../../../../../../src/app/shared/util/util'; +import {Observable} from 'rxjs'; +import {CourseResourceService} from '../../../../../../src/app/shared/services/course.resource.service'; @Component({ selector: 'ui-cl-card-course', @@ -7,9 +11,22 @@ import { Component, OnInit } from '@angular/core'; }) export class CardCourseComponent implements OnInit { - constructor() { } + @Input() course: CourseModel; + rooms: string; + teachers: string; + util = new Util(); + + constructor(private courseService: CourseResourceService) { } ngOnInit(): void { + this.rooms = this.util.transformListToString(this.course.salas, 'sala'); + this.teachers = this.util.transformListToString(this.course.professores, 'nome'); } + deleteCourse(): void { + const id = this.course.id; + this.courseService.deleteCourse(id).subscribe(data => { + console.log(data); + }); + } } diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index 2fd94dd..7c04ed2 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -2,19 +2,10 @@
-
- -
-
- -
-
-
-
- -
-
- +
+
diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts index 853bd36..b8dc6a3 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts @@ -1,6 +1,6 @@ import { Component, OnInit } from '@angular/core'; -import {HomeResourceService} from '../services/home.resource.service'; -import {CoursesModel} from '../../../shared/models/courses.model'; +import {CourseModel, CoursesModel} from '../../../shared/models/courses.model'; +import {CourseResourceService} from '../../../shared/services/course.resource.service'; @Component({ selector: 'app-home', @@ -9,11 +9,13 @@ import {CoursesModel} from '../../../shared/models/courses.model'; }) export class HomeComponent implements OnInit { - constructor(private homeResourceService: HomeResourceService) { } + courses: CourseModel[]; + + constructor(public courseService: CourseResourceService) { } ngOnInit(): void { - this.homeResourceService.getAllCourses().subscribe((courses: CoursesModel) => { - console.log(courses); + this.courseService.getAllCourses().subscribe((courses: CoursesModel) => { + this.courses = courses.cursos; }); } diff --git a/frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.spec.ts b/frontend/celso-lisboa/src/app/shared/services/course.resource.service.spec.ts similarity index 50% rename from frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.spec.ts rename to frontend/celso-lisboa/src/app/shared/services/course.resource.service.spec.ts index 07cf90f..ad5f65e 100644 --- a/frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.spec.ts +++ b/frontend/celso-lisboa/src/app/shared/services/course.resource.service.spec.ts @@ -1,13 +1,13 @@ import { TestBed } from '@angular/core/testing'; -import { Home.ResourceService } from './home.resource.service'; +import { CourseResourceService } from './course.resource.service'; -describe('Home.ResourceService', () => { - let service: Home.ResourceService; +describe('CourseService', () => { + let service: CourseResourceService; beforeEach(() => { TestBed.configureTestingModule({}); - service = TestBed.inject(Home.ResourceService); + service = TestBed.inject(CourseResourceService); }); it('should be created', () => { diff --git a/frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.ts b/frontend/celso-lisboa/src/app/shared/services/course.resource.service.ts similarity index 66% rename from frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.ts rename to frontend/celso-lisboa/src/app/shared/services/course.resource.service.ts index 324ea34..a149154 100644 --- a/frontend/celso-lisboa/src/app/pages/home/services/home.resource.service.ts +++ b/frontend/celso-lisboa/src/app/shared/services/course.resource.service.ts @@ -1,15 +1,19 @@ import { Injectable } from '@angular/core'; -import {Observable} from 'rxjs'; import {HttpClient} from '@angular/common/http'; +import {Observable} from 'rxjs'; @Injectable({ providedIn: 'root' }) -export class HomeResourceService { +export class CourseResourceService { constructor(private http: HttpClient) { } getAllCourses(): Observable { return this.http.get('http://localhost:3000/api/curso'); } + + deleteCourse(id: string): Observable { + return this.http.delete(`http://localhost:3000/api/curso/${id}`); + } } diff --git a/frontend/celso-lisboa/src/app/shared/util/util.ts b/frontend/celso-lisboa/src/app/shared/util/util.ts index 304e31c..66c7c30 100644 --- a/frontend/celso-lisboa/src/app/shared/util/util.ts +++ b/frontend/celso-lisboa/src/app/shared/util/util.ts @@ -12,4 +12,12 @@ export class Util { return false; } + transformListToString(list: any[], element: string): string { + const roomList = []; + list.forEach(room => { + roomList.push(room[element]); + }); + return roomList.join(' e '); + } + } From 333cbb034b06c4ef9af4d429616577b71e3a3581 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 18:37:18 -0300 Subject: [PATCH 27/45] feat(server): correction cors --- package-lock.json | 14 ++++++++++++++ package.json | 1 + server.js | 11 +++++++++++ 3 files changed, 26 insertions(+) diff --git a/package-lock.json b/package-lock.json index a931555..01d50f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -86,6 +86,15 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -273,6 +282,11 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", diff --git a/package.json b/package.json index e18a8ae..2fcedd5 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "dependencies": { "body-parser": "^1.18.3", + "cors": "^2.8.5", "express": "^4.16.3" }, "scripts": { diff --git a/server.js b/server.js index 1f24aab..956bf21 100644 --- a/server.js +++ b/server.js @@ -220,3 +220,14 @@ app.get('/api/sala', (req, res) => { app.listen(port, function () { console.log(`Listening on http://localhost:${port}`) }); + +const cors = require('cors') +app.use(cors()) + +const corsOptions = { + origin: 'http://localhost:4200', + optionsSuccessStatus: 200 +} +app.use(cors(corsOptions)); + + From 8357c2fd650a3086f880724fbd1f738c63299bc5 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 20:43:11 -0300 Subject: [PATCH 28/45] feat(navbar): export inpust and outputs --- .../layout/button-rounded/button-rounded.component.html | 2 +- .../lib/layout/button-rounded/button-rounded.component.ts | 2 +- .../ui/src/lib/layout/button/cl-button.component.html | 2 +- .../ui/src/lib/layout/button/cl-button.component.ts | 2 +- .../ui/src/lib/layout/navbar/navbar.component.html | 7 ++++--- .../projects/ui/src/lib/layout/navbar/navbar.component.ts | 6 +++++- .../src/app/pages/home/component/home.component.html | 6 +++++- .../src/app/pages/home/component/home.component.ts | 4 ++++ .../src/app/pages/login/component/login.component.html | 2 +- 9 files changed, 23 insertions(+), 10 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.html index d98cbc2..5a3e2e7 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.html @@ -1,3 +1,3 @@ - diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.ts index c310344..0a3ccff 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/button-rounded/button-rounded.component.ts @@ -8,7 +8,7 @@ import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; export class ButtonRoundedComponent implements OnInit { @Input() label: string; - @Output() btnClick = new EventEmitter(); + @Output() buttonEvent = new EventEmitter(); constructor() { } diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.html index d98cbc2..5a3e2e7 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.html @@ -1,3 +1,3 @@ - diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.ts index c2b5db8..4a128c1 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/button/cl-button.component.ts @@ -8,7 +8,7 @@ import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; export class ClButtonComponent implements OnInit { @Input() label: string; - @Output() btnClick = new EventEmitter(); + @Output() buttonEvent = new EventEmitter(); constructor() { } diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html index dd2f366..7cc2ec2 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.html @@ -1,10 +1,11 @@

- Cursos + {{title}}

diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.ts index 2d02603..4be80a4 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/navbar/navbar.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; @Component({ selector: 'ui-cl-navbar', @@ -7,6 +7,10 @@ import { Component, OnInit } from '@angular/core'; }) export class NavbarComponent implements OnInit { + @Input() title: string; + @Input() labelButton: string; + @Output() buttonEvent = new EventEmitter(); + constructor() { } ngOnInit(): void { diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index 7c04ed2..66f3d9e 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -1,5 +1,9 @@ - +
diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts index b8dc6a3..4f671d9 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts @@ -19,4 +19,8 @@ export class HomeComponent implements OnInit { }); } + openModal(): void { + console.log('Open modal!'); + } + } diff --git a/frontend/celso-lisboa/src/app/pages/login/component/login.component.html b/frontend/celso-lisboa/src/app/pages/login/component/login.component.html index b279bea..23cc896 100644 --- a/frontend/celso-lisboa/src/app/pages/login/component/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.html @@ -29,7 +29,7 @@

Login

From 50cad13bd2986b769bb5caef173289d1e736de7b Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 21:10:59 -0300 Subject: [PATCH 29/45] feat(modal): create modal --- .../src/lib/layout/modal/modal.component.css | 0 .../src/lib/layout/modal/modal.component.html | 1 + .../lib/layout/modal/modal.component.spec.ts | 25 +++++++++++++++++++ .../src/lib/layout/modal/modal.component.ts | 15 +++++++++++ .../ui/src/lib/layout/modal/modal.module.ts | 14 +++++++++++ .../projects/ui/src/public-api.ts | 4 +++ .../login/component/login.component.html | 2 ++ .../src/app/pages/login/login.module.ts | 2 ++ 8 files changed, 63 insertions(+) create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.css create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.html create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.spec.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.ts create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.module.ts diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.css new file mode 100644 index 0000000..e69de29 diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.html new file mode 100644 index 0000000..decdfe6 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.html @@ -0,0 +1 @@ +

modal works!

diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.spec.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.spec.ts new file mode 100644 index 0000000..3aa2f08 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ModalComponent } from './modal.component'; + +describe('ModalComponent', () => { + let component: ModalComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ModalComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ModalComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.ts new file mode 100644 index 0000000..ababf2e --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'ui-cl-modal', + templateUrl: './modal.component.html', + styleUrls: ['./modal.component.css'] +}) +export class ModalComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.module.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.module.ts new file mode 100644 index 0000000..e42058a --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ModalComponent } from './modal.component'; + + + +@NgModule({ + declarations: [ModalComponent], + imports: [ + CommonModule + ], + exports: [ModalComponent] +}) +export class ModalModule { } diff --git a/frontend/celso-lisboa/projects/ui/src/public-api.ts b/frontend/celso-lisboa/projects/ui/src/public-api.ts index 730e428..29637f8 100644 --- a/frontend/celso-lisboa/projects/ui/src/public-api.ts +++ b/frontend/celso-lisboa/projects/ui/src/public-api.ts @@ -22,3 +22,7 @@ export * from './lib/layout/button-rounded/button-rounded.module'; // card-course export * from './lib/layout/card-course/card-course.component'; export * from './lib/layout/card-course/card-course.module'; + +// modal +export * from './lib/layout/modal/modal.component'; +export * from './lib/layout/modal/modal.module'; diff --git a/frontend/celso-lisboa/src/app/pages/login/component/login.component.html b/frontend/celso-lisboa/src/app/pages/login/component/login.component.html index 23cc896..382e871 100644 --- a/frontend/celso-lisboa/src/app/pages/login/component/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.html @@ -34,3 +34,5 @@

Login

+ + diff --git a/frontend/celso-lisboa/src/app/pages/login/login.module.ts b/frontend/celso-lisboa/src/app/pages/login/login.module.ts index aac5753..545b2f7 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.module.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.module.ts @@ -7,6 +7,7 @@ import {ReactiveFormsModule} from '@angular/forms'; import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/button/cl-button.module'; import {HttpClientModule} from '@angular/common/http'; import {BackgroundModule} from '../../../../projects/ui/src/lib/layout/background/background.module'; +import {ModalModule} from '../../../../projects/ui/src/lib/layout/modal/modal.module'; @NgModule({ @@ -17,6 +18,7 @@ import {BackgroundModule} from '../../../../projects/ui/src/lib/layout/backgroun ClInputModule, ClButtonModule, BackgroundModule, + ModalModule, ReactiveFormsModule, HttpClientModule, ] From 9930e1f7cf07a44f9e9433b6d4722c4d23008bf5 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 22:26:30 -0300 Subject: [PATCH 30/45] feat(modal): create body modal --- .../src/lib/layout/modal/modal.component.css | 92 +++++++++++++++++++ .../src/lib/layout/modal/modal.component.html | 13 ++- .../src/lib/layout/modal/modal.component.ts | 4 +- .../pages/home/component/home.component.html | 43 +++++++++ .../pages/home/component/home.component.ts | 12 ++- .../src/app/pages/home/home.module.ts | 6 ++ .../login/component/login.component.html | 2 - .../src/app/pages/login/login.module.ts | 2 - frontend/celso-lisboa/src/styles.scss | 4 + 9 files changed, 171 insertions(+), 7 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.css index e69de29..400b7fd 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.css +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.css @@ -0,0 +1,92 @@ +button{ + background: transparent; + border: none; + cursor: pointer; +} + +.modal-background { + position: fixed; + display: flex; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: rgba(0,0,0,0.7); + animation: fade-in 1s; +} + +.modal { + position: relative; + font-family: 'Open Sans', sans-serif; + font-size: 16px; + color: #2e2e2e; + margin: auto; + padding: 15px; + background-color: #888888; + box-shadow: 0px 0px 10px 5px rgba(0, 0, 0, 0.3); + animation: fade-in-up 1s; + width: 100%; + height: 100vh; +} + +@media (min-width: 768px) { + .modal { + position: relative; + font-family: 'Open Sans', sans-serif; + font-size: 16px; + color: #2e2e2e; + margin: auto; + padding: 15px; + background-color: #888888; + box-shadow: 0px 0px 10px 5px rgba(0, 0, 0, 0.3); + animation: fade-in-up 1s; + width: 500px; + height: auto; + } +} + +.modal-header{ + display: flex; + justify-content: flex-end; +} + +.modal-box-title{ + display: flex; + flex-direction: column; + align-items: center; +} + +.modal-body { + padding: 20px; +} + +.modal-footer{ + text-align: right; +} + +.modal-icon{ + width: 120px; +} + +.modal-title{ + margin: 10px 10px 10px 10px; +} + +.icon-closer{ + width: 15px; + transition: ease-in-out 0.2s; +} + +.icon-closer:hover{ + transform: scale(1.2); +} + +@keyframes fade-in{ + from{opacity:0} + to{opacity:1} +} + +@keyframes fade-in-up{ + from{bottom:-50px;opacity:0} + to{bottom:0;opacity:1} +} diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.html index decdfe6..a7eb438 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.html @@ -1 +1,12 @@ -

modal works!

+ diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.ts index ababf2e..ad1e549 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core'; +import {Component, EventEmitter, OnInit, Output} from '@angular/core'; @Component({ selector: 'ui-cl-modal', @@ -7,6 +7,8 @@ import { Component, OnInit } from '@angular/core'; }) export class ModalComponent implements OnInit { + @Output() closeModal = new EventEmitter(); + constructor() { } ngOnInit(): void { diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index 66f3d9e..b8bd2a2 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -14,3 +14,46 @@
+ + +

Criar Curso

+
+ + + +
+
+ +
+
+ +
+
+ +
+
diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts index 4f671d9..44258f0 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts @@ -10,6 +10,7 @@ import {CourseResourceService} from '../../../shared/services/course.resource.se export class HomeComponent implements OnInit { courses: CourseModel[]; + showModal = false; constructor(public courseService: CourseResourceService) { } @@ -20,7 +21,16 @@ export class HomeComponent implements OnInit { } openModal(): void { - console.log('Open modal!'); + this.showModal = true; + } + + closeModal(): void { + this.showModal = false; + } + + addCourse(): void { + this.closeModal(); + console.log('Salvou!'); } } diff --git a/frontend/celso-lisboa/src/app/pages/home/home.module.ts b/frontend/celso-lisboa/src/app/pages/home/home.module.ts index df3af43..d92c6b1 100644 --- a/frontend/celso-lisboa/src/app/pages/home/home.module.ts +++ b/frontend/celso-lisboa/src/app/pages/home/home.module.ts @@ -5,6 +5,9 @@ import { HomeRoutingModule } from './home.routing.module'; import {NavbarModule} from '../../../../projects/ui/src/lib/layout/navbar/navbar.module'; import {BackgroundModule} from '../../../../projects/ui/src/lib/layout/background/background.module'; import {CardCourseModule} from '../../../../projects/ui/src/lib/layout/card-course/card-course.module'; +import {ModalModule} from '../../../../projects/ui/src/lib/layout/modal/modal.module'; +import {ClInputModule} from '../../../../projects/ui/src/lib/form-controls/cl-input/cl-input.module'; +import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/button/cl-button.module'; @NgModule({ @@ -14,6 +17,9 @@ import {CardCourseModule} from '../../../../projects/ui/src/lib/layout/card-cour HomeRoutingModule, NavbarModule, CardCourseModule, + ModalModule, + ClInputModule, + ClButtonModule, BackgroundModule ] }) diff --git a/frontend/celso-lisboa/src/app/pages/login/component/login.component.html b/frontend/celso-lisboa/src/app/pages/login/component/login.component.html index 382e871..23cc896 100644 --- a/frontend/celso-lisboa/src/app/pages/login/component/login.component.html +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.html @@ -34,5 +34,3 @@

Login

- - diff --git a/frontend/celso-lisboa/src/app/pages/login/login.module.ts b/frontend/celso-lisboa/src/app/pages/login/login.module.ts index 545b2f7..aac5753 100644 --- a/frontend/celso-lisboa/src/app/pages/login/login.module.ts +++ b/frontend/celso-lisboa/src/app/pages/login/login.module.ts @@ -7,7 +7,6 @@ import {ReactiveFormsModule} from '@angular/forms'; import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/button/cl-button.module'; import {HttpClientModule} from '@angular/common/http'; import {BackgroundModule} from '../../../../projects/ui/src/lib/layout/background/background.module'; -import {ModalModule} from '../../../../projects/ui/src/lib/layout/modal/modal.module'; @NgModule({ @@ -18,7 +17,6 @@ import {ModalModule} from '../../../../projects/ui/src/lib/layout/modal/modal.mo ClInputModule, ClButtonModule, BackgroundModule, - ModalModule, ReactiveFormsModule, HttpClientModule, ] diff --git a/frontend/celso-lisboa/src/styles.scss b/frontend/celso-lisboa/src/styles.scss index c386c6d..dfccd8c 100644 --- a/frontend/celso-lisboa/src/styles.scss +++ b/frontend/celso-lisboa/src/styles.scss @@ -57,6 +57,10 @@ input.ng-dirty.ng-invalid { grid-auto-flow: row; } +.text-center { + text-align: center; +} + .col-xs-12 { grid-column: span 12; } From 10c0af0174932eb6e4741db5ec0a3189c1ba4080 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 22:34:52 -0300 Subject: [PATCH 31/45] feat(modal): adjustment margin in input --- .../cl-input/cl-input.component.css | 2 +- .../pages/home/component/home.component.html | 42 ++++++++++++------- .../login/component/login.component.html | 30 ++++++++----- 3 files changed, 47 insertions(+), 27 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css index db6dac1..32701af 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.css @@ -4,7 +4,7 @@ position: relative; width: 100%; font-family: 'roboto-regular', 'arial', sans-serif; - margin: 25px 0px 25px 0px; + margin: 5px 0px 5px 0px; } label { diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index b8bd2a2..0958be5 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -20,21 +20,33 @@ >

Criar Curso

- - - +
+
+ +
+
+
+
+ +
+
+
+
+ +
+
- + + + + + +
diff --git a/frontend/celso-lisboa/src/app/pages/home/home.module.ts b/frontend/celso-lisboa/src/app/pages/home/home.module.ts index d92c6b1..796359f 100644 --- a/frontend/celso-lisboa/src/app/pages/home/home.module.ts +++ b/frontend/celso-lisboa/src/app/pages/home/home.module.ts @@ -8,6 +8,7 @@ import {CardCourseModule} from '../../../../projects/ui/src/lib/layout/card-cour import {ModalModule} from '../../../../projects/ui/src/lib/layout/modal/modal.module'; import {ClInputModule} from '../../../../projects/ui/src/lib/form-controls/cl-input/cl-input.module'; import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/button/cl-button.module'; +import {ClSelectModule} from '../../../../projects/ui/src/lib/form-controls/cl-select/cl-select.module'; @NgModule({ @@ -18,6 +19,7 @@ import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/button/cl-b NavbarModule, CardCourseModule, ModalModule, + ClSelectModule, ClInputModule, ClButtonModule, BackgroundModule From b0e2669c9dd2fdb6aeba917e55072ee83ebdd416 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sat, 21 Nov 2020 23:35:44 -0300 Subject: [PATCH 33/45] feat(modal): select receives array --- .../abstract-classes/form-field-base.ts | 1 - .../cl-input/cl-input.component.ts | 3 ++- .../cl-select/cl-select.component.html | 7 +++---- .../cl-select/cl-select.component.ts | 4 +++- .../form-controls/models/select-list.model.ts | 4 ++++ .../pages/home/component/home.component.html | 19 +++++++++---------- .../pages/home/component/home.component.ts | 18 +++++++++++++++++- .../src/app/pages/home/home.module.ts | 2 ++ 8 files changed, 40 insertions(+), 18 deletions(-) create mode 100644 frontend/celso-lisboa/projects/ui/src/lib/form-controls/models/select-list.model.ts diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/abstract-classes/form-field-base.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/abstract-classes/form-field-base.ts index 9928a48..3ea5079 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/abstract-classes/form-field-base.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/abstract-classes/form-field-base.ts @@ -13,7 +13,6 @@ export abstract class FormFieldBaseDirective implements OnInit, OnDestroy, Contr disabled: boolean; @Input() label: string; - @Input() type: string; ngOnInit(): void { this.subscription = fromEvent(document, 'focusout').subscribe( data => { diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts index a85f29f..73d04da 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.ts @@ -1,4 +1,4 @@ -import {Component, forwardRef } from '@angular/core'; +import {Component, forwardRef, Input} from '@angular/core'; import {NG_VALUE_ACCESSOR} from '@angular/forms'; import {FormFieldBaseDirective} from '../abstract-classes/form-field-base'; @@ -15,6 +15,7 @@ import {FormFieldBaseDirective} from '../abstract-classes/form-field-base'; ] }) export class ClInputComponent extends FormFieldBaseDirective { + @Input() type: string; constructor() { super(); } diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html index 5d44ba8..224cb5a 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html @@ -1,8 +1,7 @@
- - - + - +
diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.ts index 9df4844..15ade5c 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.ts @@ -1,6 +1,7 @@ -import {Component, forwardRef, OnInit} from '@angular/core'; +import {Component, forwardRef, Input, OnInit} from '@angular/core'; import {FormFieldBaseDirective} from '../abstract-classes/form-field-base'; import {NG_VALUE_ACCESSOR} from '@angular/forms'; +import {SelectListModel} from '../models/select-list.model'; @Component({ selector: 'ui-cl-select', @@ -15,6 +16,7 @@ import {NG_VALUE_ACCESSOR} from '@angular/forms'; ] }) export class ClSelectComponent extends FormFieldBaseDirective { + @Input() options: SelectListModel[]; constructor() { super(); } diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/models/select-list.model.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/models/select-list.model.ts new file mode 100644 index 0000000..ac2f195 --- /dev/null +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/models/select-list.model.ts @@ -0,0 +1,4 @@ +export interface SelectListModel { + value: string | number | boolean; + label: string | number | boolean; +} diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index 561a6ae..238abdf 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -19,7 +19,7 @@ (closeModal)="closeModal()" >

Criar Curso

- +
Criar Curso

- + [options]="[{label: 'josé', value: '1'}]" + >
- - - - - - +
diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts index 44258f0..515e7af 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts @@ -1,6 +1,7 @@ import { Component, OnInit } from '@angular/core'; import {CourseModel, CoursesModel} from '../../../shared/models/courses.model'; import {CourseResourceService} from '../../../shared/services/course.resource.service'; +import {FormBuilder, FormGroup, Validators} from '@angular/forms'; @Component({ selector: 'app-home', @@ -10,14 +11,29 @@ import {CourseResourceService} from '../../../shared/services/course.resource.se export class HomeComponent implements OnInit { courses: CourseModel[]; + formCourse: FormGroup; showModal = false; - constructor(public courseService: CourseResourceService) { } + constructor( + public courseService: CourseResourceService, + private fb: FormBuilder, + ) { } ngOnInit(): void { this.courseService.getAllCourses().subscribe((courses: CoursesModel) => { this.courses = courses.cursos; }); + this.buildResourceForm(); + } + + private buildResourceForm(): void { + this.formCourse = this.fb.group({ + courseName: [ null, [ Validators.required ] ], + teacher: [ null, [ Validators.required ] ], + rooms: [ null, [ Validators.required ] ], + start: [ null, [ Validators.required ] ], + end: [ null, [ Validators.required ] ], + }); } openModal(): void { diff --git a/frontend/celso-lisboa/src/app/pages/home/home.module.ts b/frontend/celso-lisboa/src/app/pages/home/home.module.ts index 796359f..9c0ee8d 100644 --- a/frontend/celso-lisboa/src/app/pages/home/home.module.ts +++ b/frontend/celso-lisboa/src/app/pages/home/home.module.ts @@ -9,12 +9,14 @@ import {ModalModule} from '../../../../projects/ui/src/lib/layout/modal/modal.mo import {ClInputModule} from '../../../../projects/ui/src/lib/form-controls/cl-input/cl-input.module'; import {ClButtonModule} from '../../../../projects/ui/src/lib/layout/button/cl-button.module'; import {ClSelectModule} from '../../../../projects/ui/src/lib/form-controls/cl-select/cl-select.module'; +import {ReactiveFormsModule} from '@angular/forms'; @NgModule({ declarations: [HomeComponent], imports: [ CommonModule, + ReactiveFormsModule, HomeRoutingModule, NavbarModule, CardCourseModule, From 2e1bf5c611bcc98593812eff4938e5266fbcaeb2 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sun, 22 Nov 2020 00:19:36 -0300 Subject: [PATCH 34/45] feat(modal): create course.facade.service --- .../pages/home/component/home.component.html | 4 +- .../pages/home/component/home.component.ts | 15 ++++-- .../services/course.facade.service.spec.ts | 16 ++++++ .../shared/services/course.facade.service.ts | 51 +++++++++++++++++++ .../services/course.resource.service.ts | 8 +++ 5 files changed, 89 insertions(+), 5 deletions(-) create mode 100644 frontend/celso-lisboa/src/app/shared/services/course.facade.service.spec.ts create mode 100644 frontend/celso-lisboa/src/app/shared/services/course.facade.service.ts diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index 238abdf..301a3f7 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -34,7 +34,7 @@

Criar Curso

@@ -43,7 +43,7 @@

Criar Curso

diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts index 515e7af..c4e9254 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts @@ -1,7 +1,8 @@ import { Component, OnInit } from '@angular/core'; import {CourseModel, CoursesModel} from '../../../shared/models/courses.model'; -import {CourseResourceService} from '../../../shared/services/course.resource.service'; import {FormBuilder, FormGroup, Validators} from '@angular/forms'; +import {CourseFacadeService} from '../../../shared/services/course.facade.service'; +import {SelectListModel} from '../../../../../projects/ui/src/lib/form-controls/models/select-list.model'; @Component({ selector: 'app-home', @@ -12,15 +13,17 @@ export class HomeComponent implements OnInit { courses: CourseModel[]; formCourse: FormGroup; + rooms: SelectListModel[] = []; + teachers: SelectListModel[] = []; showModal = false; constructor( - public courseService: CourseResourceService, + public courseFacadeService: CourseFacadeService, private fb: FormBuilder, ) { } ngOnInit(): void { - this.courseService.getAllCourses().subscribe((courses: CoursesModel) => { + this.courseFacadeService.getAllCourses().subscribe((courses: CoursesModel) => { this.courses = courses.cursos; }); this.buildResourceForm(); @@ -38,6 +41,12 @@ export class HomeComponent implements OnInit { openModal(): void { this.showModal = true; + this.courseFacadeService.getRooms().subscribe(rooms => { + this.rooms = rooms; + }); + this.courseFacadeService.getTeachers().subscribe(teachers => { + this.teachers = teachers; + }); } closeModal(): void { diff --git a/frontend/celso-lisboa/src/app/shared/services/course.facade.service.spec.ts b/frontend/celso-lisboa/src/app/shared/services/course.facade.service.spec.ts new file mode 100644 index 0000000..1745cec --- /dev/null +++ b/frontend/celso-lisboa/src/app/shared/services/course.facade.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { Course.FacadeService } from './course.facade.service'; + +describe('Course.FacadeService', () => { + let service: Course.FacadeService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(Course.FacadeService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/src/app/shared/services/course.facade.service.ts b/frontend/celso-lisboa/src/app/shared/services/course.facade.service.ts new file mode 100644 index 0000000..dc08c86 --- /dev/null +++ b/frontend/celso-lisboa/src/app/shared/services/course.facade.service.ts @@ -0,0 +1,51 @@ +import { Injectable } from '@angular/core'; +import {Observable} from 'rxjs'; +import {CourseResourceService} from './course.resource.service'; +import {Rooms} from '../models/courses.model'; +import {SelectListModel} from '../../../../projects/ui/src/lib/form-controls/models/select-list.model'; +import {map} from 'rxjs/operators'; + + +@Injectable({ + providedIn: 'root' +}) +export class CourseFacadeService { + + constructor(private courseResourceService: CourseResourceService) { } + + getAllCourses(): Observable { + return this.courseResourceService.getAllCourses(); + } + + deleteCourse(id: string): Observable { + return this.courseResourceService.deleteCourse(id); + } + + getRooms(): Observable { + return this.courseResourceService.getRooms().pipe( + map(this.adjustmentSelectRooms) + ); + } + + getTeachers(): Observable { + return this.courseResourceService.getTeachers().pipe( + map(this.adjustmentSelectTeachers) + ); + } + + adjustmentSelectRooms(rooms): SelectListModel[] { + const optionsList: any[] = []; + rooms.forEach(room => { + optionsList.push({label: room.sala, value: room.id}); + }); + return optionsList; + } + + adjustmentSelectTeachers(teachers): SelectListModel[] { + const optionsList: any[] = []; + teachers.forEach(room => { + optionsList.push({label: room.nome, value: room.id}); + }); + return optionsList; + } +} diff --git a/frontend/celso-lisboa/src/app/shared/services/course.resource.service.ts b/frontend/celso-lisboa/src/app/shared/services/course.resource.service.ts index a149154..de4f836 100644 --- a/frontend/celso-lisboa/src/app/shared/services/course.resource.service.ts +++ b/frontend/celso-lisboa/src/app/shared/services/course.resource.service.ts @@ -13,6 +13,14 @@ export class CourseResourceService { return this.http.get('http://localhost:3000/api/curso'); } + getTeachers(): Observable { + return this.http.get('http://localhost:3000/api/professor'); + } + + getRooms(): Observable { + return this.http.get('http://localhost:3000/api/sala'); + } + deleteCourse(id: string): Observable { return this.http.delete(`http://localhost:3000/api/curso/${id}`); } From 52a4f5725b2cf0922b0666ccaaee0d12becca14a Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sun, 22 Nov 2020 00:23:28 -0300 Subject: [PATCH 35/45] feat(modal): adjustment padding body --- .../projects/ui/src/lib/layout/modal/modal.component.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.css index 400b7fd..76f0253 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.css +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/modal/modal.component.css @@ -57,7 +57,7 @@ button{ } .modal-body { - padding: 20px; + padding: 0px 20px 0px 20px; } .modal-footer{ From 48e669e64e7c23934d9b693a3b1aafb3155d573b Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sun, 22 Nov 2020 00:49:38 -0300 Subject: [PATCH 36/45] feat(error): adjustment error msg --- .../cl-select/cl-select.component.html | 5 ++--- .../pages/home/component/home.component.html | 15 ++++++++++++++ .../pages/home/component/home.component.ts | 20 +++++++++++++++++-- .../login/component/login.component.html | 20 +++++++++---------- frontend/celso-lisboa/src/styles.scss | 2 +- 5 files changed, 46 insertions(+), 16 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html index 224cb5a..ce9806e 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html @@ -1,7 +1,6 @@
- +
diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index 301a3f7..57a6c2b 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -27,6 +27,9 @@

Criar Curso

label="Nome do Curso" type="text" > + + {{errorMessage.EMPTY}} +
@@ -36,6 +39,9 @@

Criar Curso

label="Professores" [options]="teachers" > + + {{errorMessage.EMPTY}} +
@@ -45,6 +51,9 @@

Criar Curso

label="Salas" [options]="rooms" > + + {{errorMessage.EMPTY}} +
@@ -54,6 +63,9 @@

Criar Curso

label="Início" type="text" > + + {{errorMessage.EMPTY}} +
Criar Curso label="Fim" type="text" > + + {{errorMessage.EMPTIES}} +
Login label="Email" type="email" > + + {{errorMessage.EMAIL}} + - - {{errorMessage.EMAIL}} -
@@ -23,18 +23,18 @@

Login

label="Senha" type="password" > + + {{errorMessage.EMPTY}} +
- - {{errorMessage.EMPTY}} - - {{errorMessage.LOGIN}} - + {{errorMessage.LOGIN}} + - {{errorMessage.EMPTIES}} - + {{errorMessage.EMPTIES}} + Date: Sun, 22 Nov 2020 01:23:51 -0300 Subject: [PATCH 37/45] feat(home): create post --- .../cl-select/cl-select.component.html | 2 +- .../cl-select/cl-select.component.ts | 5 +++++ .../pages/home/component/home.component.ts | 11 ++++++---- .../shared/services/course.facade.service.ts | 21 +++++++++++++++++++ .../services/course.resource.service.ts | 4 ++++ 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html index ce9806e..63dd0c5 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html @@ -1,5 +1,5 @@
- diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.ts index 15ade5c..373386a 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.ts @@ -20,4 +20,9 @@ export class ClSelectComponent extends FormFieldBaseDirective { constructor() { super(); } + adjustmentValue(value): void { + const option = this.options.filter(element => element.value == value); + this.onChange(option); + // this.onChange(value); + } } diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts index 16dfb9d..9db5c44 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts @@ -30,6 +30,7 @@ export class HomeComponent implements OnInit { ngOnInit(): void { this.courseFacadeService.getAllCourses().subscribe((courses: CoursesModel) => { this.courses = courses.cursos; + console.log(courses); }); this.buildResourceForm(); } @@ -59,12 +60,14 @@ export class HomeComponent implements OnInit { } addCourse(): void { - console.log(this.formCourse.value); if (this.formCourse.valid) { this.fieldsEmpties = false; - console.log('salvou'); - this.formCourse.reset(); - this.closeModal(); + const dto = this.courseFacadeService.createDTO(this.formCourse.value); + this.courseFacadeService.createCourse(dto).subscribe(data => { + console.log(data); + this.formCourse.reset(); + this.closeModal(); + }); } else { this.fieldsEmpties = true; } diff --git a/frontend/celso-lisboa/src/app/shared/services/course.facade.service.ts b/frontend/celso-lisboa/src/app/shared/services/course.facade.service.ts index dc08c86..2fc8d14 100644 --- a/frontend/celso-lisboa/src/app/shared/services/course.facade.service.ts +++ b/frontend/celso-lisboa/src/app/shared/services/course.facade.service.ts @@ -17,6 +17,10 @@ export class CourseFacadeService { return this.courseResourceService.getAllCourses(); } + createCourse(courseValue): Observable { + return this.courseResourceService.createCourse(courseValue); + } + deleteCourse(id: string): Observable { return this.courseResourceService.deleteCourse(id); } @@ -33,6 +37,23 @@ export class CourseFacadeService { ); } + createDTO(formValue): any { + const dto = { + nome: formValue.courseName, + inicio: formValue.start, + fim: formValue.end, + salas: [{ + id: formValue.rooms.value, + sala: formValue.rooms.label, + }], + professores: [{ + id: formValue.teacher.value, + nome: formValue.teacher.label + }] + }; + return dto; + } + adjustmentSelectRooms(rooms): SelectListModel[] { const optionsList: any[] = []; rooms.forEach(room => { diff --git a/frontend/celso-lisboa/src/app/shared/services/course.resource.service.ts b/frontend/celso-lisboa/src/app/shared/services/course.resource.service.ts index de4f836..63e3eda 100644 --- a/frontend/celso-lisboa/src/app/shared/services/course.resource.service.ts +++ b/frontend/celso-lisboa/src/app/shared/services/course.resource.service.ts @@ -21,6 +21,10 @@ export class CourseResourceService { return this.http.get('http://localhost:3000/api/sala'); } + createCourse(courseValue): Observable { + return this.http.post('http://localhost:3000/api/curso', courseValue); + } + deleteCourse(id: string): Observable { return this.http.delete(`http://localhost:3000/api/curso/${id}`); } From 5f01be2e88c33c6158ce6c08a612276ad05937a1 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sun, 22 Nov 2020 14:44:39 -0300 Subject: [PATCH 38/45] fix(select): adjustment in return cl-select --- .../ui/src/lib/form-controls/cl-select/cl-select.component.ts | 2 +- .../celso-lisboa/src/app/pages/home/component/home.component.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.ts index 373386a..1ea407a 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.ts @@ -22,7 +22,7 @@ export class ClSelectComponent extends FormFieldBaseDirective { } adjustmentValue(value): void { const option = this.options.filter(element => element.value == value); - this.onChange(option); + this.onChange(option[0]); // this.onChange(value); } } diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts index 9db5c44..3065c70 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts @@ -64,7 +64,6 @@ export class HomeComponent implements OnInit { this.fieldsEmpties = false; const dto = this.courseFacadeService.createDTO(this.formCourse.value); this.courseFacadeService.createCourse(dto).subscribe(data => { - console.log(data); this.formCourse.reset(); this.closeModal(); }); From 388bc7b1685c221d92750ca73158ff7813e2bfb9 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sun, 22 Nov 2020 14:58:30 -0300 Subject: [PATCH 39/45] feat(card): create output closeEvent --- .../lib/layout/card-course/card-course.component.html | 2 +- .../lib/layout/card-course/card-course.component.ts | 10 ++++------ .../src/app/pages/home/component/home.component.html | 1 + .../src/app/pages/home/component/home.component.ts | 6 ++++++ 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.html index d90c554..36576bc 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.html @@ -2,7 +2,7 @@
-
diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.ts b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.ts index e1e4b3e..738d1d6 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/card-course/card-course.component.ts @@ -1,7 +1,6 @@ -import {Component, Input, OnInit} from '@angular/core'; +import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; import {CourseModel} from '../../../../../../src/app/shared/models/courses.model'; import {Util} from '../../../../../../src/app/shared/util/util'; -import {Observable} from 'rxjs'; import {CourseResourceService} from '../../../../../../src/app/shared/services/course.resource.service'; @Component({ @@ -12,6 +11,7 @@ import {CourseResourceService} from '../../../../../../src/app/shared/services/c export class CardCourseComponent implements OnInit { @Input() course: CourseModel; + @Output() closeEvent = new EventEmitter(); rooms: string; teachers: string; util = new Util(); @@ -23,10 +23,8 @@ export class CardCourseComponent implements OnInit { this.teachers = this.util.transformListToString(this.course.professores, 'nome'); } - deleteCourse(): void { + close(): void { const id = this.course.id; - this.courseService.deleteCourse(id).subscribe(data => { - console.log(data); - }); + this.closeEvent.emit(id); } } diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index 57a6c2b..cabf4cf 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -9,6 +9,7 @@
diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts index 3065c70..d35caa7 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts @@ -72,6 +72,12 @@ export class HomeComponent implements OnInit { } } + deleteCourse(id: string): void { + this.courseFacadeService.deleteCourse(id).subscribe(data => { + console.log(data); + }); + } + isInvalid(controlName): boolean { return this.util.controlPristineIsInvalid(controlName, this.formCourse); } From 0ba3b8bbe7c2d05101cb01b9942f7ecafd39e085 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sun, 22 Nov 2020 15:08:39 -0300 Subject: [PATCH 40/45] fix(form-field-base): create --- .../lib/form-controls/abstract-classes/form-field-base.ts | 6 ++++++ .../src/lib/form-controls/cl-input/cl-input.component.html | 4 ++-- .../lib/form-controls/cl-select/cl-select.component.html | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/abstract-classes/form-field-base.ts b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/abstract-classes/form-field-base.ts index 3ea5079..6454747 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/abstract-classes/form-field-base.ts +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/abstract-classes/form-field-base.ts @@ -6,6 +6,7 @@ import {fromEvent, Subscription} from 'rxjs'; export abstract class FormFieldBaseDirective implements OnInit, OnDestroy, ControlValueAccessor { class = ''; subscription: Subscription; + id: number; value: string; onChange: (value: any) => void; @@ -22,6 +23,7 @@ export abstract class FormFieldBaseDirective implements OnInit, OnDestroy, Contr this.class = ''; } }); + this.createRandomId(); } ngOnDestroy(): void { @@ -41,4 +43,8 @@ export abstract class FormFieldBaseDirective implements OnInit, OnDestroy, Contr registerOnTouched(fn: any): void { this.onTouched = fn; } + + createRandomId(): void { + this.id = Math.floor(Math.random() * 10000); + } } diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html index 4d46a3d..0581031 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-input/cl-input.component.html @@ -1,4 +1,4 @@
- - + +
diff --git a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html index 63dd0c5..cd8ba3f 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/form-controls/cl-select/cl-select.component.html @@ -1,6 +1,6 @@
- - +
From d1555126d5f4245b44246a7f53ed0bcd7f59ab68 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sun, 22 Nov 2020 15:25:35 -0300 Subject: [PATCH 41/45] feat(card): update page without ngrx --- .../app/pages/home/component/home.component.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts index d35caa7..a274512 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.ts @@ -5,6 +5,7 @@ import {CourseFacadeService} from '../../../shared/services/course.facade.servic import {SelectListModel} from '../../../../../projects/ui/src/lib/form-controls/models/select-list.model'; import {Util} from '../../../shared/util/util'; import {ErrorMessageEnum} from '../../../shared/enum/error-message.enum'; +import {switchMap} from 'rxjs/operators'; @Component({ selector: 'app-home', @@ -63,9 +64,14 @@ export class HomeComponent implements OnInit { if (this.formCourse.valid) { this.fieldsEmpties = false; const dto = this.courseFacadeService.createDTO(this.formCourse.value); - this.courseFacadeService.createCourse(dto).subscribe(data => { + this.courseFacadeService.createCourse(dto).pipe( + switchMap(createData => { + return this.courseFacadeService.getAllCourses(); + }) + ).subscribe(allCourses => { this.formCourse.reset(); this.closeModal(); + this.courses = allCourses.cursos; }); } else { this.fieldsEmpties = true; @@ -73,8 +79,12 @@ export class HomeComponent implements OnInit { } deleteCourse(id: string): void { - this.courseFacadeService.deleteCourse(id).subscribe(data => { - console.log(data); + this.courseFacadeService.deleteCourse(id).pipe( + switchMap(deleteData => { + return this.courseFacadeService.getAllCourses(); + }) + ).subscribe(allCourses => { + this.courses = allCourses.cursos; }); } From a2ffffea3d1be215dd770e170feb34d1b69facdf Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sun, 22 Nov 2020 16:15:24 -0300 Subject: [PATCH 42/45] feat(auth): create AuthService --- .../src/app/app-routing.module.ts | 3 ++- .../app/core/auth/auth.guard.service.spec.ts | 16 +++++++++++ .../src/app/core/auth/auth.guard.service.ts | 27 +++++++++++++++++++ .../src/app/core/auth/auth.module.ts | 12 +++++++++ .../pages/login/component/login.component.ts | 6 ++++- 5 files changed, 62 insertions(+), 2 deletions(-) create mode 100644 frontend/celso-lisboa/src/app/core/auth/auth.guard.service.spec.ts create mode 100644 frontend/celso-lisboa/src/app/core/auth/auth.guard.service.ts create mode 100644 frontend/celso-lisboa/src/app/core/auth/auth.module.ts diff --git a/frontend/celso-lisboa/src/app/app-routing.module.ts b/frontend/celso-lisboa/src/app/app-routing.module.ts index 45cbb7a..c5de6ea 100644 --- a/frontend/celso-lisboa/src/app/app-routing.module.ts +++ b/frontend/celso-lisboa/src/app/app-routing.module.ts @@ -1,10 +1,11 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; +import {AuthGuardService} from './core/auth/auth.guard.service'; const routes: Routes = [ {path: '', redirectTo: 'login', pathMatch: 'full'}, {path: 'login', loadChildren: () => import('./pages/login/login.module').then(m => m.LoginModule)}, - {path: 'home', loadChildren: () => import('./pages/home/home.module').then(m => m.HomeModule)}, + {path: 'home', loadChildren: () => import('./pages/home/home.module').then(m => m.HomeModule), canActivate: [ AuthGuardService ]}, ]; @NgModule({ diff --git a/frontend/celso-lisboa/src/app/core/auth/auth.guard.service.spec.ts b/frontend/celso-lisboa/src/app/core/auth/auth.guard.service.spec.ts new file mode 100644 index 0000000..791908f --- /dev/null +++ b/frontend/celso-lisboa/src/app/core/auth/auth.guard.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { Auth.GuardService } from './auth.guard.service'; + +describe('Auth.GuardService', () => { + let service: Auth.GuardService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(Auth.GuardService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/frontend/celso-lisboa/src/app/core/auth/auth.guard.service.ts b/frontend/celso-lisboa/src/app/core/auth/auth.guard.service.ts new file mode 100644 index 0000000..1257c0e --- /dev/null +++ b/frontend/celso-lisboa/src/app/core/auth/auth.guard.service.ts @@ -0,0 +1,27 @@ +import { Injectable } from '@angular/core'; +import {ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot} from '@angular/router'; +import {Observable} from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class AuthGuardService implements CanActivate { + + constructor(private router: Router) { } + + private isAuthorized = false; + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + this.isAuthorized = Boolean(sessionStorage.getItem('isAuthorized')); + if (this.isAuthorized) { + return true; + } else { + this.router.navigate(['/login']); + return false; + } + } + + saveAuth(isAuthorized): void { + sessionStorage.setItem('isAuthorized', isAuthorized); + } +} diff --git a/frontend/celso-lisboa/src/app/core/auth/auth.module.ts b/frontend/celso-lisboa/src/app/core/auth/auth.module.ts new file mode 100644 index 0000000..d2e4fae --- /dev/null +++ b/frontend/celso-lisboa/src/app/core/auth/auth.module.ts @@ -0,0 +1,12 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; + + + +@NgModule({ + declarations: [], + imports: [ + CommonModule + ] +}) +export class AuthModule { } diff --git a/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts b/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts index 7512fac..1d03a5b 100644 --- a/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts +++ b/frontend/celso-lisboa/src/app/pages/login/component/login.component.ts @@ -4,6 +4,7 @@ import {ErrorMessageEnum} from '../../../shared/enum/error-message.enum'; import {LoginResourceService} from '../services/login.resource.service'; import {Util} from '../../../shared/util/util'; import {Router} from '@angular/router'; +import {AuthGuardService} from '../../../core/auth/auth.guard.service'; @Component({ selector: 'app-login', @@ -21,7 +22,8 @@ export class LoginComponent implements OnInit { constructor( private fb: FormBuilder, private loginService: LoginResourceService, - private router: Router + private router: Router, + private authGuardService: AuthGuardService ) { } ngOnInit(): void { @@ -41,9 +43,11 @@ export class LoginComponent implements OnInit { this.loginService.login(this.formLogin.value).subscribe( (response => { this.userInvalid = false; + this.authGuardService.saveAuth(true); this.router.navigate(['/home']); }), (error => { + this.authGuardService.saveAuth(false); this.userInvalid = true; }) ); From 59b1a7c38fae2b874bce0b34e8d0e039dadf9e14 Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sun, 22 Nov 2020 16:17:43 -0300 Subject: [PATCH 43/45] fix(auth): changed test name --- .../src/app/core/auth/auth.guard.service.spec.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/frontend/celso-lisboa/src/app/core/auth/auth.guard.service.spec.ts b/frontend/celso-lisboa/src/app/core/auth/auth.guard.service.spec.ts index 791908f..93327a6 100644 --- a/frontend/celso-lisboa/src/app/core/auth/auth.guard.service.spec.ts +++ b/frontend/celso-lisboa/src/app/core/auth/auth.guard.service.spec.ts @@ -1,13 +1,13 @@ import { TestBed } from '@angular/core/testing'; -import { Auth.GuardService } from './auth.guard.service'; +import { AuthGuardService } from './auth.guard.service'; describe('Auth.GuardService', () => { - let service: Auth.GuardService; + let service: AuthGuardService; beforeEach(() => { TestBed.configureTestingModule({}); - service = TestBed.inject(Auth.GuardService); + service = TestBed.inject(AuthGuardService); }); it('should be created', () => { From d9d124d4723d5eabe5dd46c051c95f164dfc81ae Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sun, 22 Nov 2020 19:59:14 -0300 Subject: [PATCH 44/45] feat(background): adjustment in image and grid layout --- .../background/background.component.css | 20 ++++++++++------ .../background/background.component.html | 8 +++---- .../pages/home/component/home.component.scss | 24 ++++--------------- frontend/celso-lisboa/src/styles.scss | 1 + 4 files changed, 22 insertions(+), 31 deletions(-) diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.css b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.css index e70ff14..c58e922 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.css +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.css @@ -1,17 +1,23 @@ .img-home{ - background: url('../../../../../../../../assets/background.jpg') no-repeat center top fixed; + background: url('../../../../../../../../assets/background.jpg') no-repeat center center fixed; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-size: cover; - height: 100vh; - display: flex; - align-items: center; - justify-content: center; + position: fixed; + top: 0; + bottom: 0; + right: 0; + left: 0; + z-index: -2; } .dark-background { - width: 100%; - height: 100vh; + position: fixed; + top: 0; + bottom: 0; + right: 0; + left: 0; + z-index: -1; background-color: rgba(0 , 0, 0, 0.6); } diff --git a/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.html b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.html index 12755a3..75d02c0 100644 --- a/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.html +++ b/frontend/celso-lisboa/projects/ui/src/lib/layout/background/background.component.html @@ -1,5 +1,3 @@ -
-
- -
-
+
+
+ diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss b/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss index 83a863f..4259cb9 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.scss @@ -1,21 +1,7 @@ .container-home { - padding: 10px 30px 10px 30px; -} - -@media (min-width: 768px) { - .container-home { - padding: 30px 100px 30px 100px; - } -} - -@media (min-width: 992px) { - .container-home { - padding: 40px 120px 40px 120px; - } -} - -@media (min-width: 1200px) { - .container-home { - padding: 50px 160px 50px 160px; - } + display: flex; + align-items: center; + justify-content: center; + width: 80%; + margin: 0 auto; } diff --git a/frontend/celso-lisboa/src/styles.scss b/frontend/celso-lisboa/src/styles.scss index 704b6db..d11a5c7 100644 --- a/frontend/celso-lisboa/src/styles.scss +++ b/frontend/celso-lisboa/src/styles.scss @@ -55,6 +55,7 @@ input.ng-dirty.ng-invalid { grid-template-columns: repeat(12, 1fr); margin: 1em 0em 1em 0em; grid-auto-flow: row; + width: 100%; } .text-center { From 6dee83fa8dbc42758e673f0a200b8cd725f3f92f Mon Sep 17 00:00:00 2001 From: Brendon Costa <43861825+brendon-costa@users.noreply.github.com> Date: Sun, 22 Nov 2020 20:31:19 -0300 Subject: [PATCH 45/45] feat(home): adjustment in message error in button --- .../src/app/pages/home/component/home.component.html | 7 +++++-- .../src/app/pages/home/component/home.component.ts | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html index cabf4cf..79162b7 100644 --- a/frontend/celso-lisboa/src/app/pages/home/component/home.component.html +++ b/frontend/celso-lisboa/src/app/pages/home/component/home.component.html @@ -74,11 +74,14 @@

Criar Curso

label="Fim" type="text" > - - {{errorMessage.EMPTIES}} + + {{errorMessage.EMPTY}}
+ + {{errorMessage.EMPTIES}} + { this.courses = courses.cursos; - console.log(courses); }); this.buildResourceForm(); }