From 139c2184e7cce59c759cdf4bd41d2aab3dcfd484 Mon Sep 17 00:00:00 2001 From: HamoudaAmine Date: Fri, 15 Nov 2019 11:00:26 +0100 Subject: [PATCH 01/76] frontend : add ngx-datatable, backend : add route GET observations by user id --- backend/gncitizen/core/observations/routes.py | 104 + frontend/angular.json | 37 +- frontend/package-lock.json | 4520 ++--------------- frontend/package.json | 1 + frontend/src/app/app.module.ts | 2 + frontend/src/assets/css/material.css | 303 ++ frontend/src/styles.css | 2 + 7 files changed, 980 insertions(+), 3989 deletions(-) create mode 100644 frontend/src/assets/css/material.css diff --git a/backend/gncitizen/core/observations/routes.py b/backend/gncitizen/core/observations/routes.py index ef81b09e..2fb42e3e 100644 --- a/backend/gncitizen/core/observations/routes.py +++ b/backend/gncitizen/core/observations/routes.py @@ -697,3 +697,107 @@ def get_rewards(id): }, 200, ) + + +@routes.route("/observations/users/", methods=["GET"]) +@json_resp +def get_observations_by_user_id(user_id) : + try: + observations = ( + db.session.query( + ObservationModel, + UserModel.username, + MediaModel.filename.label("image"), + LAreas.area_name, + LAreas.area_code, + ) + .filter(ObservationModel.id_role == user_id, ProgramsModel.is_active) + .join(LAreas, LAreas.id_area == ObservationModel.municipality, isouter=True) + .join( + ProgramsModel, + isouter=True, + ) + .join( + ObservationMediaModel, + ObservationMediaModel.id_data_source == ObservationModel.id_observation, + isouter=True, + ) + .join( + MediaModel, + ObservationMediaModel.id_media == MediaModel.id_media, + isouter=True, + ) + .join(UserModel, ObservationModel.id_role == UserModel.id_user, full=True) + ) + + observations = observations.order_by(ObservationModel.timestamp_create.desc()) + # current_app.logger.debug(str(observations)) + observations = observations.all() + if current_app.config.get("API_TAXHUB") is not None: + taxhub_list_id = ( + ProgramsModel.query.one().taxonomy_list + ) + taxon_repository = mkTaxonRepository(taxhub_list_id) + features = [] + for observation in observations: + feature = get_geojson_feature(observation.ObservationModel.geom) + feature["properties"]["municipality"] = { + "name": observation.area_name, + "code": observation.area_code, + } + + # Observer + feature["properties"]["observer"] = {"username": observation.username} + # Observer submitted media + feature["properties"]["image"] = ( + "/".join( + [ + current_app.config["API_ENDPOINT"], + current_app.config["MEDIA_FOLDER"], + observation.image, + ] + ) + if observation.image + else None + ) + # Municipality + observation_dict = observation.ObservationModel.as_dict(True) + for k in observation_dict: + if k in obs_keys and k != "municipality": + feature["properties"][k] = observation_dict[k] + + # TaxRef + if current_app.config.get("API_TAXHUB") is None: + taxref = Taxref.query.filter( + Taxref.cd_nom == observation.ObservationModel.cd_nom + ).first() + if taxref: + feature["properties"]["taxref"] = taxref.as_dict(True) + + medias = TMedias.query.filter( + TMedias.cd_ref == observation.ObservationModel.cd_nom + ).all() + if medias: + feature["properties"]["medias"] = [ + media.as_dict(True) for media in medias + ] + else: + try: + taxon = next( + taxon + for taxon in taxon_repository + if taxon and taxon["cd_nom"] == feature["properties"]["cd_nom"] + ) + feature["properties"]["nom_francais"] = taxon["nom_francais"] + feature["properties"]["taxref"] = taxon["taxref"] + feature["properties"]["medias"] = taxon["medias"] + except StopIteration: + pass + features.append(feature) + + return FeatureCollection(features) + + except Exception as e: + raise e + current_app.logger.critical("[get_program_observations] Error: %s", str(e)) + return {"message": str(e)}, 400 \ No newline at end of file diff --git a/frontend/angular.json b/frontend/angular.json index cacd1c8c..80a49452 100644 --- a/frontend/angular.json +++ b/frontend/angular.json @@ -18,7 +18,11 @@ "main": "src/main.ts", "polyfills": "src/polyfills.ts", "tsConfig": "src/tsconfig.app.json", - "assets": ["src/favicon.ico", "src/assets", "src/robots.txt"], + "assets": [ + "src/favicon.ico", + "src/assets", + "src/robots.txt" + ], "styles": [ "node_modules/ngx-toastr/toastr.css", "node_modules/font-awesome/css/font-awesome.min.css", @@ -138,16 +142,26 @@ "polyfills": "src/polyfills.ts", "tsConfig": "src/tsconfig.spec.json", "karmaConfig": "src/karma.conf.js", - "styles": ["src/styles.css"], + "styles": [ + "src/styles.css" + ], "scripts": [], - "assets": ["src/favicon.ico", "src/assets"] + "assets": [ + "src/favicon.ico", + "src/assets" + ] } }, "lint": { "builder": "@angular-devkit/build-angular:tslint", "options": { - "tsConfig": ["src/tsconfig.app.json", "src/tsconfig.spec.json"], - "exclude": ["**/node_modules/**"] + "tsConfig": [ + "src/tsconfig.app.json", + "src/tsconfig.spec.json" + ], + "exclude": [ + "**/node_modules/**" + ] } }, "server": { @@ -190,11 +204,18 @@ "builder": "@angular-devkit/build-angular:tslint", "options": { "tsConfig": "e2e/tsconfig.e2e.json", - "exclude": ["**/node_modules/**"] + "exclude": [ + "**/node_modules/**" + ] } } } } }, - "defaultProject": "frontend" -} + "defaultProject": "frontend", + "schematics": { + "@schematics/angular:component": { + "styleext": "scss" + } + } +} \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 22f5bdac..b74f2e09 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -2,26 +2,18 @@ "name": "frontend", "version": "0.0.0", "lockfileVersion": 1, - "requires": true, "dependencies": { "@angular-devkit/architect": { "version": "0.802.2", "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.802.2.tgz", "integrity": "sha512-bMMo8BejHi3+n4xqewgcfat5+OYDmQQCLxWQ2W+qr7/u08vmTQTix3Q/wClp0nxgN0Zc9/1gSPaeudHLAlEizg==", "dev": true, - "requires": { - "@angular-devkit/core": "8.2.2", - "rxjs": "6.4.0" - }, "dependencies": { "rxjs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "dev": true } } }, @@ -30,56 +22,6 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.802.2.tgz", "integrity": "sha512-48WCSX5IpSbVe/cG9+KrcL6f93JwHicKfYLyrrGhywSENlBYVNLNfbJHz/AuaxjmsiCmiI9gLnRb/W5JoVxuMA==", "dev": true, - "requires": { - "@angular-devkit/architect": "0.802.2", - "@angular-devkit/build-optimizer": "0.802.2", - "@angular-devkit/build-webpack": "0.802.2", - "@angular-devkit/core": "8.2.2", - "@ngtools/webpack": "8.2.2", - "ajv": "6.10.2", - "autoprefixer": "9.6.1", - "browserslist": "4.6.6", - "caniuse-lite": "1.0.30000986", - "circular-dependency-plugin": "5.0.2", - "clean-css": "4.2.1", - "copy-webpack-plugin": "5.0.4", - "core-js": "3.1.4", - "file-loader": "4.1.0", - "glob": "7.1.4", - "istanbul-instrumenter-loader": "3.0.1", - "karma-source-map-support": "1.4.0", - "less": "3.9.0", - "less-loader": "5.0.0", - "license-webpack-plugin": "2.1.1", - "loader-utils": "1.2.3", - "mini-css-extract-plugin": "0.8.0", - "minimatch": "3.0.4", - "open": "6.4.0", - "parse5": "4.0.0", - "postcss": "7.0.17", - "postcss-import": "12.0.1", - "postcss-loader": "3.0.0", - "raw-loader": "1.0.0", - "rxjs": "6.4.0", - "sass": "1.22.7", - "sass-loader": "7.1.0", - "semver": "6.3.0", - "source-map-loader": "0.2.4", - "source-map-support": "0.5.12", - "speed-measure-webpack-plugin": "1.3.1", - "style-loader": "0.23.1", - "stylus": "0.54.5", - "stylus-loader": "3.0.2", - "terser-webpack-plugin": "1.3.0", - "tree-kill": "1.2.1", - "webpack": "4.38.0", - "webpack-dev-middleware": "3.7.0", - "webpack-dev-server": "3.7.2", - "webpack-merge": "4.2.1", - "webpack-sources": "1.3.0", - "webpack-subresource-integrity": "1.1.0-rc.6", - "worker-plugin": "3.1.0" - }, "dependencies": { "core-js": { "version": "3.1.4", @@ -97,10 +39,7 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "dev": true } } }, @@ -109,13 +48,6 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.802.2.tgz", "integrity": "sha512-0QkTxMgCr2YiysdRVY64smtogDnWz0eyqhmUJbd9kEq1xxDDfuvs+6OT1Lk6xU7tcucVf33DKB9jK/3n3LZIpw==", "dev": true, - "requires": { - "loader-utils": "1.2.3", - "source-map": "0.5.6", - "tslib": "1.10.0", - "typescript": "3.5.3", - "webpack-sources": "1.3.0" - }, "dependencies": { "source-map": { "version": "0.5.6", @@ -130,21 +62,12 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.802.2.tgz", "integrity": "sha512-odsY7hkqUBsRgqTCcGXFuIBd6NJYSCduFHheoDpqwK0SIAlAZ6Q9pB6jv9J0FTwKUJBsVsHk+cXUuaeZhUQcIg==", "dev": true, - "requires": { - "@angular-devkit/architect": "0.802.2", - "@angular-devkit/core": "8.2.2", - "rxjs": "6.4.0", - "webpack-merge": "4.2.1" - }, "dependencies": { "rxjs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "dev": true } } }, @@ -153,22 +76,12 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-8.2.2.tgz", "integrity": "sha512-qA1lK/OQhNptCxoEGbTryn6yeFS1F/e/EiUTwgU/j4DkBwPyYGE8iqWBd/cgI9AVqQaRSLLhVWXtDPxoNL0TKg==", "dev": true, - "requires": { - "ajv": "6.10.2", - "fast-json-stable-stringify": "2.0.0", - "magic-string": "0.25.3", - "rxjs": "6.4.0", - "source-map": "0.7.3" - }, "dependencies": { "rxjs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "dev": true }, "source-map": { "version": "0.7.3", @@ -183,55 +96,25 @@ "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-8.2.2.tgz", "integrity": "sha512-wAbP+IriWgTSLR4prezuFlLbxMZMGXiN0FNH2i/v8MfxNXCBiEvD4YtD/8s8YRsZs+IW7sp3bErSD/EIlS4DyQ==", "dev": true, - "requires": { - "@angular-devkit/core": "8.2.2", - "rxjs": "6.4.0" - }, "dependencies": { "rxjs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "dev": true } } }, "@angular/animations": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-8.2.2.tgz", - "integrity": "sha512-vOfZGMDnP5/n4MIxZqT49nVc305EYpRK+bz68hJmZd2QkTxQA+8j84xr4jfIC6zUWdyQqZhwWEF5Lqqy7G155g==", - "requires": { - "tslib": "^1.9.0" - } + "integrity": "sha512-vOfZGMDnP5/n4MIxZqT49nVc305EYpRK+bz68hJmZd2QkTxQA+8j84xr4jfIC6zUWdyQqZhwWEF5Lqqy7G155g==" }, "@angular/cli": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-8.2.2.tgz", "integrity": "sha512-iQvNVbegNXvnuAo8Pal6hjwK8joGcaCTcIa3jh1GLZ9JT4fZk2p9D/8Kay8C0jLm2KytV3f4eSlPAuX5V6p/XQ==", "dev": true, - "requires": { - "@angular-devkit/architect": "0.802.2", - "@angular-devkit/core": "8.2.2", - "@angular-devkit/schematics": "8.2.2", - "@schematics/angular": "8.2.2", - "@schematics/update": "0.802.2", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "^4.1.1", - "ini": "1.3.5", - "inquirer": "6.5.0", - "npm-package-arg": "6.1.0", - "open": "6.4.0", - "pacote": "9.5.4", - "read-package-tree": "5.3.1", - "semver": "6.3.0", - "symbol-observable": "1.2.0", - "universal-analytics": "^0.4.20", - "uuid": "^3.3.2" - }, "dependencies": { "ansi-colors": { "version": "4.1.1", @@ -243,10 +126,7 @@ "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" - } + "dev": true }, "ms": { "version": "2.1.2", @@ -259,36 +139,18 @@ "@angular/common": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@angular/common/-/common-8.2.2.tgz", - "integrity": "sha512-PLV2+gj4pSe4MC5fwpEpI0JyWSKkNVvA65CCZvG2XXJTp4eS+ppkCZpEvbXqf7IewpKMAeFkuLi16r92pLG5Vw==", - "requires": { - "tslib": "^1.9.0" - } + "integrity": "sha512-PLV2+gj4pSe4MC5fwpEpI0JyWSKkNVvA65CCZvG2XXJTp4eS+ppkCZpEvbXqf7IewpKMAeFkuLi16r92pLG5Vw==" }, "@angular/compiler": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-8.2.2.tgz", - "integrity": "sha512-UMhOQehvi9u1r4u48Ymwm5JkdOKoH057ImCo26WqRqJBUgA44xwmUsKLFAmSg1JqzWCO5pBDyA3RaNBscD8ZzQ==", - "requires": { - "tslib": "^1.9.0" - } + "integrity": "sha512-UMhOQehvi9u1r4u48Ymwm5JkdOKoH057ImCo26WqRqJBUgA44xwmUsKLFAmSg1JqzWCO5pBDyA3RaNBscD8ZzQ==" }, "@angular/compiler-cli": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-8.2.2.tgz", "integrity": "sha512-lEfWykViorBom4iWeZusoH4yAFkalyys/k9sI2qiTSVaH6TyowXbnfTMGfFQXKFydxI9sE86cCPoaRcR6fQcKQ==", "dev": true, - "requires": { - "canonical-path": "1.0.0", - "chokidar": "^2.1.1", - "convert-source-map": "^1.5.1", - "dependency-graph": "^0.7.2", - "magic-string": "^0.25.0", - "minimist": "^1.2.0", - "reflect-metadata": "^0.1.2", - "source-map": "^0.6.1", - "tslib": "^1.9.0", - "yargs": "13.1.0" - }, "dependencies": { "ansi-regex": { "version": "4.1.0", @@ -301,19 +163,12 @@ "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" - } + "dev": true } } }, @@ -327,60 +182,25 @@ "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" - } + "dev": true }, "chokidar": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", - "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" - } + "dev": true }, "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" - } + "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" - } + "dev": true }, "fsevents": { "version": "1.2.9", @@ -940,19 +760,13 @@ "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" - } + "dev": true }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } + "dev": true }, "isarray": { "version": "1.0.0", @@ -964,36 +778,19 @@ "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" - } + "dev": true }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true }, "require-main-filename": { "version": "2.0.0", @@ -1001,99 +798,58 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "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" - } - }, "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" - } + "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 }, "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" - } + "dev": true }, "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" - } + "dev": true }, "yargs": { "version": "13.1.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.1.0.tgz", "integrity": "sha512-1UhJbXfzHiPqkfXNHYhiz79qM/kZqjTE8yGlEjZa85Q+3+OwcV6NRkV7XOV1W2Eom2bzILeUn55pQYffjVOLAg==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "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.0.0" - } + "dev": true }, "yargs-parser": { "version": "13.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "dev": true } } }, "@angular/core": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@angular/core/-/core-8.2.2.tgz", - "integrity": "sha512-glQLJ3aeRWHMsN9QeJYis5FVdCg0lBU2s9aFX9i6WvVLscYmGoBk+TKsgO+uJjLnUUgsCPLRLzde02IJEQzCGw==", - "requires": { - "tslib": "^1.9.0" - } + "integrity": "sha512-glQLJ3aeRWHMsN9QeJYis5FVdCg0lBU2s9aFX9i6WvVLscYmGoBk+TKsgO+uJjLnUUgsCPLRLzde02IJEQzCGw==" }, "@angular/forms": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-8.2.2.tgz", - "integrity": "sha512-2PTTKWP+GoHRLf3S3HKzn5QJtCMMRaMmcTrbR10hgUmDPdMeULGNZG3OacV8rRbRv4TDtXoqbKp0NRFQ7xsofQ==", - "requires": { - "tslib": "^1.9.0" - } + "integrity": "sha512-2PTTKWP+GoHRLf3S3HKzn5QJtCMMRaMmcTrbR10hgUmDPdMeULGNZG3OacV8rRbRv4TDtXoqbKp0NRFQ7xsofQ==" }, "@angular/http": { "version": "7.2.15", "resolved": "https://registry.npmjs.org/@angular/http/-/http-7.2.15.tgz", - "integrity": "sha512-TR7PEdmLWNIre3Zn8lvyb4lSrvPUJhKLystLnp4hBMcWsJqq5iK8S3bnlR4viZ9HMlf7bW7+Hm4SI6aB3tdUtw==", - "requires": { - "tslib": "^1.9.0" - } + "integrity": "sha512-TR7PEdmLWNIre3Zn8lvyb4lSrvPUJhKLystLnp4hBMcWsJqq5iK8S3bnlR4viZ9HMlf7bW7+Hm4SI6aB3tdUtw==" }, "@angular/language-service": { "version": "8.2.2", @@ -1104,58 +860,34 @@ "@angular/platform-browser": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-8.2.2.tgz", - "integrity": "sha512-8PivPsi4Lrtl3vkC/a/s4QUSlv2nXjtea4h+t7zEpj6o9TeONA5iNe1LHSruG66IfOCW/U8l1THHJAsTj/8OAw==", - "requires": { - "tslib": "^1.9.0" - } + "integrity": "sha512-8PivPsi4Lrtl3vkC/a/s4QUSlv2nXjtea4h+t7zEpj6o9TeONA5iNe1LHSruG66IfOCW/U8l1THHJAsTj/8OAw==" }, "@angular/platform-browser-dynamic": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.2.2.tgz", - "integrity": "sha512-c34GNNe9iDX6OUw7PJua4BbkUVTeX+SYmv5Iv5+pNENp9n6Y/kousbpoaDjLx37/8ujE8c9U378OeopZoasE4Q==", - "requires": { - "tslib": "^1.9.0" - } + "integrity": "sha512-c34GNNe9iDX6OUw7PJua4BbkUVTeX+SYmv5Iv5+pNENp9n6Y/kousbpoaDjLx37/8ujE8c9U378OeopZoasE4Q==" }, "@angular/platform-server": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-8.2.2.tgz", - "integrity": "sha512-LSi+CL7uApdSMuCf5IYqO2UbvPzDbvTvpFrpFZgcqweeKhpcaNjfm3M51hrec8eTlpd06ONd93SwKC2gqkmr7A==", - "requires": { - "domino": "^2.1.2", - "tslib": "^1.9.0", - "xhr2": "^0.1.4" - } + "integrity": "sha512-LSi+CL7uApdSMuCf5IYqO2UbvPzDbvTvpFrpFZgcqweeKhpcaNjfm3M51hrec8eTlpd06ONd93SwKC2gqkmr7A==" }, "@angular/router": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@angular/router/-/router-8.2.2.tgz", - "integrity": "sha512-aoIuSiVYBFh53dS4a79ZK23YjQ363x+8hakorDdAdrC3WwGST9YYDpVuNoa/gahkWIWCWN4Q0nl16cjQ6XI6BA==", - "requires": { - "tslib": "^1.9.0" - } + "integrity": "sha512-aoIuSiVYBFh53dS4a79ZK23YjQ363x+8hakorDdAdrC3WwGST9YYDpVuNoa/gahkWIWCWN4Q0nl16cjQ6XI6BA==" }, "@babel/code-frame": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.0.0" - } + "dev": true }, "@babel/generator": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz", "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==", "dev": true, - "requires": { - "@babel/types": "^7.5.5", - "jsesc": "^2.5.1", - "lodash": "^4.17.13", - "source-map": "^0.5.0", - "trim-right": "^1.0.1" - }, "dependencies": { "jsesc": { "version": "2.5.2", @@ -1175,41 +907,25 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.0.0", - "@babel/template": "^7.1.0", - "@babel/types": "^7.0.0" - } + "dev": true }, "@babel/helper-get-function-arity": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } + "dev": true }, "@babel/helper-split-export-declaration": { "version": "7.4.4", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", - "dev": true, - "requires": { - "@babel/types": "^7.4.4" - } + "dev": true }, "@babel/highlight": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", "dev": true, - "requires": { - "chalk": "^2.0.0", - "esutils": "^2.0.2", - "js-tokens": "^4.0.0" - }, "dependencies": { "js-tokens": { "version": "4.0.0", @@ -1229,38 +945,19 @@ "version": "7.4.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@babel/parser": "^7.4.4", - "@babel/types": "^7.4.4" - } + "dev": true }, "@babel/traverse": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz", "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==", "dev": true, - "requires": { - "@babel/code-frame": "^7.5.5", - "@babel/generator": "^7.5.5", - "@babel/helper-function-name": "^7.1.0", - "@babel/helper-split-export-declaration": "^7.4.4", - "@babel/parser": "^7.5.5", - "@babel/types": "^7.5.5", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.13" - }, "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" - } + "dev": true }, "globals": { "version": "11.12.0", @@ -1281,11 +978,6 @@ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz", "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==", "dev": true, - "requires": { - "esutils": "^2.0.2", - "lodash": "^4.17.13", - "to-fast-properties": "^2.0.0" - }, "dependencies": { "to-fast-properties": { "version": "2.0.0", @@ -1298,32 +990,19 @@ "@ng-bootstrap/ng-bootstrap": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-5.1.0.tgz", - "integrity": "sha512-IYoKE1NMrIPbRV0077/uHOjdwPb3qyhHpbBXiMGjclkSm2GvKXNPIzgd3Vjon/lbKelHdAW4A/upUHN2VYUi3w==", - "requires": { - "tslib": "^1.9.0" - } + "integrity": "sha512-IYoKE1NMrIPbRV0077/uHOjdwPb3qyhHpbBXiMGjclkSm2GvKXNPIzgd3Vjon/lbKelHdAW4A/upUHN2VYUi3w==" }, "@ngtools/webpack": { "version": "8.2.2", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-8.2.2.tgz", "integrity": "sha512-ksPFlZbH0+Rj+0qTGmkbtU3GHLjQKF4nN047AZn8Q4QnPynKqItHskSlyVi0CMnKfJxOr2VTxlSkiKN+pUb0sA==", "dev": true, - "requires": { - "@angular-devkit/core": "8.2.2", - "enhanced-resolve": "4.1.0", - "rxjs": "6.4.0", - "tree-kill": "1.2.1", - "webpack-sources": "1.3.0" - }, "dependencies": { "rxjs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "dev": true } } }, @@ -1341,39 +1020,27 @@ "version": "8.2.2", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-8.2.2.tgz", "integrity": "sha512-0kZoGXwYRDLREwMYT+m0MyGenpPidLEulrWxgYWoLhsJAFKax7lTy2YYljtFTd+AlZYyB3PTpDsDip8uT743tA==", - "dev": true, - "requires": { - "@angular-devkit/core": "8.2.2", - "@angular-devkit/schematics": "8.2.2" - } + "dev": true }, "@schematics/update": { "version": "0.802.2", "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.802.2.tgz", "integrity": "sha512-ohwdxf0+uQ0aCTk27evs1l04rJ1nB3S95ihDr3rSQOl0WWizdto6TbXURtQ4PubORehjqvhrqqKGVp+QL2npGw==", "dev": true, - "requires": { - "@angular-devkit/core": "8.2.2", - "@angular-devkit/schematics": "8.2.2", - "@yarnpkg/lockfile": "1.1.0", - "ini": "1.3.5", - "pacote": "9.5.4", - "rxjs": "6.4.0", - "semver": "6.3.0", - "semver-intersect": "1.4.0" - }, "dependencies": { "rxjs": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.4.0.tgz", "integrity": "sha512-Z9Yfa11F6B9Sg/BK9MnqnQ+aQYicPLtilXBp2yUtDt2JRCE0h26d33EnfO3ZxoNxG0T92OUucP3Ct7cpfkdFfw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "dev": true } } }, + "@swimlane/ngx-datatable": { + "version": "16.0.2", + "resolved": "https://registry.npmjs.org/@swimlane/ngx-datatable/-/ngx-datatable-16.0.2.tgz", + "integrity": "sha512-+JxVumYGr4wON2YC0dXYt0vWmWNaWcVFWdAfrb6gXL/6iAJco70rX59lFvQ6ubFVgDKCsf+QycBXODvLnHaGUQ==" + }, "@types/events": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", @@ -1390,12 +1057,7 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } + "dev": true }, "@types/jasmine": { "version": "3.4.0", @@ -1407,37 +1069,25 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.6.tgz", "integrity": "sha512-2ZOKrxb8bKRmP/po5ObYnRDgFE4i+lQiEB27bAMmtMWLgJSqlIDqlLx6S0IRorpOmOPRQ6O80NujTmQAtBkeNw==", - "dev": true, - "requires": { - "@types/jasmine": "*" - } + "dev": true }, "@types/leaflet": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.5.1.tgz", "integrity": "sha512-E5k+vyE2Tv9wQsO6ZsEy08Pjd8RjHPkCzz3Ubt7feMc+5+VkbXtcZMcciczRWuMN5rFIsVywLxRhvTp7fAbbzg==", - "dev": true, - "requires": { - "@types/geojson": "*" - } + "dev": true }, "@types/leaflet.locatecontrol": { "version": "0.60.7", "resolved": "https://registry.npmjs.org/@types/leaflet.locatecontrol/-/leaflet.locatecontrol-0.60.7.tgz", "integrity": "sha512-sac/MeK4gB+3XTJ3JzCe3HqLwKNHblIpZrxUJ6FapWK8uISZ0wcy8motVO7+v/yO47tQgsnYaobwFZ//beWHBQ==", - "dev": true, - "requires": { - "@types/leaflet": "*" - } + "dev": true }, "@types/leaflet.markercluster": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@types/leaflet.markercluster/-/leaflet.markercluster-1.4.0.tgz", "integrity": "sha512-ctCkUvknqzt+6eLOhZK7ta+G6WQ9wkTeFvOw1KhWYoPY/ZuzLD+QUg1Umnw7yzMNA+L00ne3cmTk/xmVNkRSLQ==", - "dev": true, - "requires": { - "@types/leaflet": "*" - } + "dev": true }, "@types/minimatch": { "version": "3.0.3", @@ -1473,23 +1123,13 @@ "version": "0.1.5", "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.5.tgz", "integrity": "sha512-zfvjpp7jiafSmrzJ2/i3LqOyTYTuJ7u1KOXlKgDlvsj9Rr0x7ZiYu5lZbXwobL7lmsRNtPXlBfmaUD8eU2Hu8w==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "source-map": "^0.6.1" - } + "dev": true }, "@webassemblyjs/ast": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" - } + "dev": true }, "@webassemblyjs/floating-point-hex-parser": { "version": "1.8.5", @@ -1513,10 +1153,7 @@ "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.8.5" - } + "dev": true }, "@webassemblyjs/helper-fsm": { "version": "1.8.5", @@ -1528,11 +1165,7 @@ "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" - } + "dev": true }, "@webassemblyjs/helper-wasm-bytecode": { "version": "1.8.5", @@ -1544,31 +1177,19 @@ "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" - } + "dev": true }, "@webassemblyjs/ieee754": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } + "dev": true }, "@webassemblyjs/leb128": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } + "dev": true }, "@webassemblyjs/utf8": { "version": "1.8.5", @@ -1580,81 +1201,37 @@ "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" - } + "dev": true }, "@webassemblyjs/wasm-gen": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } + "dev": true }, "@webassemblyjs/wasm-opt": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" - } + "dev": true }, "@webassemblyjs/wasm-parser": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" - } + "dev": true }, "@webassemblyjs/wast-parser": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", - "@xtuc/long": "4.2.2" - } + "dev": true }, "@webassemblyjs/wast-printer": { "version": "1.8.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", - "@xtuc/long": "4.2.2" - } + "dev": true }, "@xtuc/ieee754": { "version": "1.2.0", @@ -1674,16 +1251,6 @@ "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": "1.0.4", "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", @@ -1692,11 +1259,7 @@ "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==" }, "acorn": { "version": "4.0.13", @@ -1706,10 +1269,7 @@ "acorn-globals": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", - "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", - "requires": { - "acorn": "^4.0.4" - } + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=" }, "adm-zip": { "version": "0.4.13", @@ -1727,30 +1287,18 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "ajv": { "version": "6.10.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==" }, "ajv-errors": { "version": "1.0.1", @@ -1798,20 +1346,13 @@ "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" - } + "dev": true }, "anymatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.0.3.tgz", "integrity": "sha512-c6IvoeBECQlMVuYUjSwimnhmztImpErfxJzWZhIQinIvQWoGOnB0dLIgifbPHQt5heS6mNlaZG16f06H3C8t1g==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } + "dev": true }, "app-root-path": { "version": "2.2.1", @@ -1823,10 +1364,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", - "dev": true, - "requires": { - "default-require-extensions": "^2.0.0" - } + "dev": true }, "aproba": { "version": "1.2.0", @@ -1844,20 +1382,13 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "arr-diff": { "version": "4.0.0", @@ -1891,10 +1422,7 @@ "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" - } + "dev": true }, "array-uniq": { "version": "1.0.3", @@ -1929,31 +1457,19 @@ "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==" }, "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } + "dev": true }, "assert": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, "dependencies": { "inherits": { "version": "2.0.1", @@ -1965,10 +1481,7 @@ "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" - } + "dev": true } } }, @@ -1993,10 +1506,7 @@ "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" - } + "dev": true }, "async-each": { "version": "1.0.3", @@ -2025,16 +1535,7 @@ "version": "9.6.1", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz", "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==", - "dev": true, - "requires": { - "browserslist": "^4.6.3", - "caniuse-lite": "^1.0.30000980", - "chalk": "^2.4.2", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.17", - "postcss-value-parser": "^4.0.0" - } + "dev": true }, "aws-sign2": { "version": "0.7.0", @@ -2050,21 +1551,13 @@ "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" - } + "dev": true }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, "dependencies": { "ansi-styles": { "version": "2.2.1", @@ -2076,14 +1569,7 @@ "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" - } + "dev": true }, "supports-color": { "version": "2.0.0", @@ -2098,16 +1584,6 @@ "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", "dev": true, - "requires": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - }, "dependencies": { "source-map": { "version": "0.5.7", @@ -2121,20 +1597,13 @@ "version": "6.23.0", "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "requires": { - "babel-runtime": "^6.22.0" - } + "dev": true }, "babel-runtime": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", "dev": true, - "requires": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - }, "dependencies": { "core-js": { "version": "2.6.9", @@ -2148,43 +1617,19 @@ "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" - } + "dev": true }, "babel-traverse": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dev": true, - "requires": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } + "dev": true }, "babel-types": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dev": true, - "requires": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } + "dev": true }, "babylon": { "version": "6.18.0", @@ -2208,53 +1653,30 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -2285,19 +1707,13 @@ "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=" }, "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" - } + "dev": true }, "big.js": { "version": "5.2.2", @@ -2321,10 +1737,7 @@ "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" - } + "dev": true }, "bluebird": { "version": "3.5.5", @@ -2341,33 +1754,13 @@ "body-parser": { "version": "1.19.0", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "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" - } + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==" }, "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" - }, "dependencies": { "array-flatten": { "version": "2.1.2", @@ -2385,20 +1778,13 @@ "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" }, "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" - } + "dev": true }, "brorand": { "version": "1.1.0", @@ -2410,103 +1796,55 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true }, "browserify-rsa": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "randombytes": "^2.0.1" - } + "dev": true }, "browserify-sign": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", - "dev": true, - "requires": { - "bn.js": "^4.1.1", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.2", - "elliptic": "^6.0.0", - "inherits": "^2.0.1", - "parse-asn1": "^5.0.0" - } + "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" - } + "dev": true }, "browserslist": { "version": "4.6.6", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz", "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000984", - "electron-to-chromium": "^1.3.191", - "node-releases": "^1.1.25" - } + "dev": true }, "browserstack": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.3.tgz", "integrity": "sha512-AO+mECXsW4QcqC9bxwM29O7qWa7bJT94uBFzeb5brylIQwawuEziwq20dPYbins95GlWzOawgyDNdjYAo32EKg==", - "dev": true, - "requires": { - "https-proxy-agent": "^2.2.1" - } + "dev": true }, "buffer": { "version": "4.9.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=", "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -2520,11 +1858,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", - "dev": true, - "requires": { - "buffer-alloc-unsafe": "^1.1.0", - "buffer-fill": "^1.0.0" - } + "dev": true }, "buffer-alloc-unsafe": { "version": "1.1.0", @@ -2583,58 +1917,25 @@ "version": "11.3.3", "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz", "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==", - "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", - "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" - } + "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true }, "callsite": { "version": "1.0.0", @@ -2675,12 +1976,7 @@ "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" - } + "dev": true }, "chardet": { "version": "0.7.0", @@ -2693,25 +1989,12 @@ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.0.2.tgz", "integrity": "sha512-c4PR2egjNjI1um6bamCQ6bUNPDiyofNQruHvKgHQ4gDUP/ITSVSzNsiI5OWtHOsX323i5ha/kk4YmOZ1Ktg7KA==", "dev": true, - "requires": { - "anymatch": "^3.0.1", - "braces": "^3.0.2", - "fsevents": "^2.0.6", - "glob-parent": "^5.0.0", - "is-binary-path": "^2.1.0", - "is-glob": "^4.0.1", - "normalize-path": "^3.0.0", - "readdirp": "^3.1.1" - }, "dependencies": { "glob-parent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz", "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } + "dev": true } } }, @@ -2725,20 +2008,13 @@ "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" - } + "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" - } + "dev": true }, "circular-dependency-plugin": { "version": "5.0.2", @@ -2751,21 +2027,12 @@ "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" - } + "dev": true } } }, @@ -2773,28 +2040,18 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", - "dev": true, - "requires": { - "source-map": "~0.6.0" - } + "dev": true }, "cli": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", - "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", - "requires": { - "exit": "0.1.2", - "glob": "^7.1.1" - } + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=" }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } + "dev": true }, "cli-width": { "version": "2.2.0", @@ -2807,11 +2064,6 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, - "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" - }, "dependencies": { "ansi-regex": { "version": "3.0.0", @@ -2823,10 +2075,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } + "dev": true } } }, @@ -2840,13 +2089,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-2.0.2.tgz", "integrity": "sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==", - "dev": true, - "requires": { - "for-own": "^1.0.0", - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.0", - "shallow-clone": "^1.0.0" - } + "dev": true }, "co": { "version": "4.6.0", @@ -2865,17 +2108,6 @@ "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-5.1.0.tgz", "integrity": "sha512-QiyY2/oDQnYx4mAVEDqr+z9MwrOto18tQFjExiuRChXCy0yvngS5fQpWIxvAGpbOmZFiR1PRTRLbEI71u10maA==", "dev": true, - "requires": { - "app-root-path": "^2.2.1", - "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", - "semver-dsl": "^1.0.1", - "source-map": "^0.5.7", - "sprintf-js": "^1.1.2" - }, "dependencies": { "source-map": { "version": "0.5.7", @@ -2895,20 +2127,13 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "color-name": { "version": "1.1.3", @@ -2925,10 +2150,7 @@ "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" }, "commander": { "version": "2.20.0", @@ -2970,25 +2192,13 @@ "version": "2.0.17", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", - "dev": true, - "requires": { - "mime-db": ">= 1.40.0 < 2" - } + "dev": true }, "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": { "bytes": { "version": "3.0.0", @@ -3008,12 +2218,6 @@ "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" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -3025,25 +2229,13 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -3051,13 +2243,7 @@ "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" - } + "dev": true }, "connect-history-api-fallback": { "version": "1.6.0", @@ -3068,10 +2254,7 @@ "console-browserify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "requires": { - "date-now": "^0.1.4" - } + "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=" }, "constants-browserify": { "version": "1.0.0", @@ -3082,10 +2265,7 @@ "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==" }, "content-type": { "version": "1.0.4", @@ -3101,10 +2281,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "dev": true }, "cookie": { "version": "0.4.0", @@ -3120,15 +2297,7 @@ "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" - } + "dev": true }, "copy-descriptor": { "version": "0.1.1", @@ -3140,21 +2309,7 @@ "version": "5.0.4", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.4.tgz", "integrity": "sha512-YBuYGpSzoCHSSDGyHy6VJ7SHojKp6WHT4D7ItcQFNAYx2hrwkMe56e97xfVR0/ovDuMTrMffXUiltvQljtAGeg==", - "dev": true, - "requires": { - "cacache": "^11.3.3", - "find-cache-dir": "^2.1.0", - "glob-parent": "^3.1.0", - "globby": "^7.1.1", - "is-glob": "^4.0.1", - "loader-utils": "^1.2.3", - "minimatch": "^3.0.4", - "normalize-path": "^3.0.0", - "p-limit": "^2.2.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", - "webpack-log": "^2.0.0" - } + "dev": true }, "core-js": { "version": "3.2.1", @@ -3170,63 +2325,31 @@ "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" - } + "dev": true }, "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.0.0" - } + "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" - } + "dev": true }, "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" - } + "dev": true }, "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", @@ -3240,20 +2363,7 @@ "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" - } + "dev": true }, "css-parse": { "version": "1.7.0", @@ -3265,21 +2375,13 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.1.tgz", "integrity": "sha512-xYL0AMZJ4gFzJQsHUKa5jiWWi2vH77WVNg7JYRyewwj6oPh4yb/y6Y9ZCw9dsj/9UauMhtuxR+ogQd//EdEVNA==", - "dev": true, - "requires": { - "cssesc": "^0.1.0", - "fastparse": "^1.1.1", - "regexpu-core": "^1.0.0" - } + "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" - } + "dev": true }, "cssesc": { "version": "0.1.0", @@ -3295,10 +2397,7 @@ "cssstyle": { "version": "0.2.37", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "requires": { - "cssom": "0.3.x" - } + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=" }, "custom-event": { "version": "1.0.1", @@ -3321,10 +2420,7 @@ "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=" }, "date-format": { "version": "2.1.0", @@ -3340,10 +2436,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" }, "debuglog": { "version": "1.0.1", @@ -3378,68 +2471,43 @@ "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" - } + "dev": true }, "default-require-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", - "dev": true, - "requires": { - "strip-bom": "^3.0.0" - } + "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -3448,28 +2516,12 @@ "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": { "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", @@ -3501,11 +2553,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } + "dev": true }, "destroy": { "version": "1.0.4", @@ -3522,10 +2570,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } + "dev": true }, "detect-node": { "version": "2.0.4", @@ -3537,11 +2582,7 @@ "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" - } + "dev": true }, "di": { "version": "0.0.1", @@ -3559,21 +2600,13 @@ "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" - } + "dev": true }, "dir-glob": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - } + "dev": true }, "dns-equal": { "version": "1.0.0", @@ -3585,41 +2618,24 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "dom-serialize": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true, - "requires": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" - } + "dev": true }, "dom-serializer": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz", "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, "dependencies": { "domelementtype": { "version": "2.0.1", @@ -3647,10 +2663,7 @@ "domhandler": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", - "requires": { - "domelementtype": "1" - } + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=" }, "domino": { "version": "2.1.3", @@ -3660,23 +2673,13 @@ "domutils": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=" }, "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" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -3688,36 +2691,20 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true } } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=" }, "ee-first": { "version": "1.1.1", @@ -3734,16 +2721,7 @@ "version": "6.5.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", - "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" - } + "dev": true }, "emoji-regex": { "version": "7.0.3", @@ -3766,33 +2744,19 @@ "version": "0.1.12", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "dev": true, - "requires": { - "iconv-lite": "~0.4.13" - } + "dev": true }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } + "dev": true }, "engine.io": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.2.1.tgz", "integrity": "sha512-+VlKzHzMhaU+GsCIg4AoXF1UdDFjHHwMmMKqMJNDNLlUlejz58FCy4LBqB2YVJskHGYl06BatYWKP2TVdVXE5w==", "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "1.0.0", - "cookie": "0.3.1", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.0", - "ws": "~3.3.1" - }, "dependencies": { "cookie": { "version": "0.3.1", @@ -3804,10 +2768,7 @@ "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" - } + "dev": true } } }, @@ -3816,19 +2777,6 @@ "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.2.1.tgz", "integrity": "sha512-y5AbkytWeM4jQr7m/koQLc5AxpRKC1hEVUb/s1FUAWEJq5AzJJ4NLvzuKPuxtDi5Mq755WuDvZ6Iv2rXj4PTzw==", "dev": true, - "requires": { - "component-emitter": "1.2.1", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.1.1", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.5", - "parseuri": "0.0.5", - "ws": "~3.3.1", - "xmlhttprequest-ssl": "~1.5.4", - "yeast": "0.1.2" - }, "dependencies": { "component-emitter": { "version": "1.2.1", @@ -3840,10 +2788,7 @@ "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" - } + "dev": true } } }, @@ -3851,25 +2796,13 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.1.3.tgz", "integrity": "sha512-6HXPre2O4Houl7c4g7Ic/XzPnHBvaEmN90vtRO9uLmwtRqQmTOw0QMevL1TOfL2Cpu1VzsaTmMotQgMdkzGkVA==", - "dev": true, - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.5", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } + "dev": true }, "enhanced-resolve": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.0.tgz", "integrity": "sha512-F/7vkyTtyc/llOIn8oWclcB25KdRaiPBpZYDgJHgh/UHtpgT2p2eldQgtQnLtUvfMKPKxbRaQM/hHkvLHt1Vng==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "tapable": "^1.0.0" - } + "dev": true }, "ent": { "version": "2.2.0", @@ -3892,44 +2825,25 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "es-abstract": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } + "dev": true }, "es-to-primitive": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } + "dev": true }, "es6-promise": { "version": "4.2.8", @@ -3941,10 +2855,7 @@ "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" - } + "dev": true }, "escape-html": { "version": "1.0.3", @@ -3960,24 +2871,13 @@ "escodegen": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", - "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==" }, "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" - } + "dev": true }, "esprima": { "version": "3.1.3", @@ -3988,10 +2888,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", - "dev": true, - "requires": { - "estraverse": "^4.1.0" - } + "dev": true }, "estraverse": { "version": "4.3.0", @@ -4024,35 +2921,19 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true }, "exit": { "version": "0.1.2", @@ -4064,33 +2945,18 @@ "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -4098,47 +2964,12 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "^1.0.1" - } + "dev": true }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "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" - } + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==" }, "extend": { "version": "3.0.2", @@ -4150,19 +2981,12 @@ "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" - } + "dev": true } } }, @@ -4170,75 +2994,43 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -4272,10 +3064,7 @@ "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" - } + "dev": true }, "figgy-pudding": { "version": "3.5.1", @@ -4287,30 +3076,19 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } + "dev": true }, "file-loader": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.1.0.tgz", "integrity": "sha512-ajDk1nlByoalZAGR4b0H6oD+EGlWnyW1qbSxzaUc7RFiqmn+RbXQQRbTc72jsiUIlVusJ4Et58ltds8ZwTfnAw==", "dev": true, - "requires": { - "loader-utils": "^1.2.3", - "schema-utils": "^2.0.0" - }, "dependencies": { "schema-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.1.0.tgz", "integrity": "sha512-g6SViEZAfGNrToD82ZPUjq52KUPDYc+fN5+g6Euo5mLokl/9Yx14z0Cu4RR1m55HtBXejO0sBt+qw79axN+Fiw==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0" - } + "dev": true } } }, @@ -4323,66 +3101,36 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", - "dev": true, - "requires": { - "glob": "^7.0.3", - "minimatch": "^3.0.3" - } + "dev": true }, "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" - } + "dev": true }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "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" - } + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==" }, "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" - } + "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" - } + "dev": true }, "findup-sync": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "dev": true, - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } + "dev": true }, "flatted": { "version": "2.0.1", @@ -4395,10 +3143,6 @@ "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" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -4410,25 +3154,13 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -4437,18 +3169,12 @@ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz", "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==", "dev": true, - "requires": { - "debug": "^3.2.6" - }, "dependencies": { "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "dev": true }, "ms": { "version": "2.1.2", @@ -4473,10 +3199,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "^1.0.1" - } + "dev": true }, "forever-agent": { "version": "0.6.1", @@ -4486,12 +3209,7 @@ "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==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" }, "forwarded": { "version": "0.1.2", @@ -4502,10 +3220,7 @@ "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" - } + "dev": true }, "fresh": { "version": "0.5.2", @@ -4517,10 +3232,6 @@ "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" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -4532,25 +3243,13 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -4558,33 +3257,19 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } + "dev": true }, "fs-minipass": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz", "integrity": "sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==", - "dev": true, - "requires": { - "minipass": "^2.2.1" - } + "dev": true }, "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" - } + "dev": true }, "fs.realpath": { "version": "1.0.0", @@ -4620,10 +3305,7 @@ "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" - } + "dev": true }, "get-value": { "version": "2.0.6", @@ -4634,42 +3316,24 @@ "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=" }, "glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", - "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" - } + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==" }, "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" - } + "dev": true } } }, @@ -4678,20 +3342,12 @@ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, - "requires": { - "global-prefix": "^3.0.0" - }, "dependencies": { "global-prefix": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - } + "dev": true } } }, @@ -4699,14 +3355,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "dev": true, - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } + "dev": true }, "globals": { "version": "9.18.0", @@ -4719,14 +3368,6 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", "dev": true, - "requires": { - "array-union": "^1.0.1", - "dir-glob": "^2.0.0", - "glob": "^7.1.2", - "ignore": "^3.3.5", - "pify": "^3.0.0", - "slash": "^1.0.0" - }, "dependencies": { "pify": { "version": "3.0.0", @@ -4752,13 +3393,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", - "dev": true, - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - } + "dev": true }, "har-schema": { "version": "2.0.0", @@ -4768,38 +3403,25 @@ "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==" }, "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" - } + "dev": true }, "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" - } + "dev": true }, "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", @@ -4831,40 +3453,25 @@ "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" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -4872,10 +3479,7 @@ "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" - } + "dev": true } } }, @@ -4883,41 +3487,25 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } + "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" - } + "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" - } + "dev": true }, "homedir-polyfill": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "dev": true, - "requires": { - "parse-passwd": "^1.0.0" - } + "dev": true }, "hosted-git-info": { "version": "2.8.4", @@ -4930,12 +3518,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" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -4947,35 +3529,20 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true } } }, "html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "requires": { - "whatwg-encoding": "^1.0.1" - } + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==" }, "html-entities": { "version": "1.2.1", @@ -4986,14 +3553,7 @@ "htmlparser2": { "version": "3.8.3", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", - "requires": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" - } + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=" }, "http-cache-semantics": { "version": "3.8.1", @@ -5010,14 +3570,7 @@ "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==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==" }, "http-parser-js": { "version": "0.4.10", @@ -5029,31 +3582,19 @@ "version": "1.17.0", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.17.0.tgz", "integrity": "sha512-Taqn+3nNvYRfJ3bGvKfBSRwy1v6eePlm3oc/aWVxZp57DQr5Eq3xhKJi7Z4hZpS8PC3H4qI+Yly5EmFacGuA/g==", - "dev": true, - "requires": { - "eventemitter3": "^3.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -5061,23 +3602,12 @@ "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" - } + "dev": true }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=" }, "https-browserify": { "version": "1.0.0", @@ -5090,19 +3620,12 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, "dependencies": { "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "dev": true }, "ms": { "version": "2.1.2", @@ -5116,18 +3639,12 @@ "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" - } + "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==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" }, "ieee754": { "version": "1.1.13", @@ -5151,10 +3668,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.1.tgz", "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } + "dev": true }, "image-size": { "version": "0.5.5", @@ -5173,39 +3687,25 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true }, "imurmurhash": { "version": "0.1.4", @@ -5228,11 +3728,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" }, "inherits": { "version": "2.0.3", @@ -5250,21 +3746,6 @@ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.0.tgz", "integrity": "sha512-scfHejeG/lVZSpvCXpsB4j/wQNPM5JC8kiElOI0OUTwmc1RTpXr4H32/HOlQHcZiYl2z2VElwuCVDRG8vFmbnA==", "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, "dependencies": { "ansi-regex": { "version": "4.1.0", @@ -5276,10 +3757,7 @@ "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" - } + "dev": true } } }, @@ -5287,11 +3765,7 @@ "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" - } + "dev": true }, "interpret": { "version": "1.2.0", @@ -5303,10 +3777,7 @@ "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" - } + "dev": true }, "invert-kv": { "version": "2.0.0", @@ -5336,18 +3807,12 @@ "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" - } + "dev": true } } }, @@ -5361,10 +3826,7 @@ "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" - } + "dev": true }, "is-buffer": { "version": "1.1.6", @@ -5383,18 +3845,12 @@ "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" - } + "dev": true } } }, @@ -5409,11 +3865,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", @@ -5445,10 +3896,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", @@ -5460,10 +3908,7 @@ "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" - } + "dev": true }, "is-number": { "version": "7.0.0", @@ -5481,19 +3926,13 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "is-plain-obj": { "version": "1.1.0", @@ -5505,10 +3944,7 @@ "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" - } + "dev": true }, "is-promise": { "version": "2.1.0", @@ -5520,10 +3956,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "dev": true, - "requires": { - "has": "^1.0.1" - } + "dev": true }, "is-stream": { "version": "1.1.0", @@ -5535,10 +3968,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } + "dev": true }, "is-typedarray": { "version": "1.0.0", @@ -5566,10 +3996,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-3.0.3.tgz", "integrity": "sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw==", - "dev": true, - "requires": { - "buffer-alloc": "^1.2.0" - } + "dev": true }, "isexe": { "version": "2.0.0", @@ -5593,21 +4020,6 @@ "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.6.tgz", "integrity": "sha512-x0Eicp6KsShG1k1rMgBAi/1GgY7kFGEBwQpw3PXGEmu+rBcBNhqU8g2DgY9mlepAsLPzrzrbqSgCGANnki4POA==", "dev": true, - "requires": { - "async": "^2.6.2", - "compare-versions": "^3.4.0", - "fileset": "^2.0.3", - "istanbul-lib-coverage": "^2.0.5", - "istanbul-lib-hook": "^2.0.7", - "istanbul-lib-instrument": "^3.3.0", - "istanbul-lib-report": "^2.0.8", - "istanbul-lib-source-maps": "^3.0.6", - "istanbul-reports": "^2.2.4", - "js-yaml": "^3.13.1", - "make-dir": "^2.1.0", - "minimatch": "^3.0.4", - "once": "^1.4.0" - }, "dependencies": { "istanbul-lib-coverage": { "version": "2.0.5", @@ -5619,16 +4031,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", - "dev": true, - "requires": { - "@babel/generator": "^7.4.0", - "@babel/parser": "^7.4.3", - "@babel/template": "^7.4.0", - "@babel/traverse": "^7.4.3", - "@babel/types": "^7.4.0", - "istanbul-lib-coverage": "^2.0.5", - "semver": "^6.0.0" - } + "dev": true } } }, @@ -5637,24 +4040,12 @@ "resolved": "https://registry.npmjs.org/istanbul-instrumenter-loader/-/istanbul-instrumenter-loader-3.0.1.tgz", "integrity": "sha512-a5SPObZgS0jB/ixaKSMdn6n/gXSrK2S6q/UfRJBT3e6gQmVjwZROTODQsYW5ZNwOu78hG62Y3fWlebaVOL0C+w==", "dev": true, - "requires": { - "convert-source-map": "^1.5.0", - "istanbul-lib-instrument": "^1.7.3", - "loader-utils": "^1.1.0", - "schema-utils": "^0.3.0" - }, "dependencies": { "ajv": { "version": "5.5.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } + "dev": true }, "fast-deep-equal": { "version": "1.1.0", @@ -5672,10 +4063,7 @@ "version": "0.3.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.3.0.tgz", "integrity": "sha1-9YdyIs4+kx7a4DnxfrNxbnE3+M8=", - "dev": true, - "requires": { - "ajv": "^5.0.0" - } + "dev": true } } }, @@ -5689,25 +4077,13 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz", "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==", - "dev": true, - "requires": { - "append-transform": "^1.0.0" - } + "dev": true }, "istanbul-lib-instrument": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", "dev": true, - "requires": { - "babel-generator": "^6.18.0", - "babel-template": "^6.16.0", - "babel-traverse": "^6.18.0", - "babel-types": "^6.18.0", - "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.2.1", - "semver": "^5.3.0" - }, "dependencies": { "semver": { "version": "5.7.1", @@ -5722,11 +4098,6 @@ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", "dev": true, - "requires": { - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "supports-color": "^6.1.0" - }, "dependencies": { "istanbul-lib-coverage": { "version": "2.0.5", @@ -5738,10 +4109,7 @@ "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" - } + "dev": true } } }, @@ -5750,22 +4118,12 @@ "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": { "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" - } + "dev": true }, "istanbul-lib-coverage": { "version": "2.0.5", @@ -5785,21 +4143,13 @@ "version": "2.2.6", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.6.tgz", "integrity": "sha512-SKi4rnMyLBKe0Jy2uUdx28h8oG7ph2PPuQPvIAh31d+Ci+lSiEu4C+h3oBPuJ9+mPKhOyW0M8gY4U5NM1WLeXA==", - "dev": true, - "requires": { - "handlebars": "^4.1.2" - } + "dev": true }, "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", @@ -5819,10 +4169,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-4.2.1.tgz", "integrity": "sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==", - "dev": true, - "requires": { - "colors": "1.1.2" - } + "dev": true }, "jasminewd2": { "version": "2.2.0", @@ -5846,10 +4193,6 @@ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, "dependencies": { "esprima": { "version": "4.0.1", @@ -5867,28 +4210,7 @@ "jsdom": { "version": "9.12.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", - "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", - "requires": { - "abab": "^1.0.3", - "acorn": "^4.0.4", - "acorn-globals": "^3.1.0", - "array-equal": "^1.0.0", - "content-type-parser": "^1.0.1", - "cssom": ">= 0.3.2 < 0.4.0", - "cssstyle": ">= 0.2.37 < 0.3.0", - "escodegen": "^1.6.1", - "html-encoding-sniffer": "^1.0.1", - "nwmatcher": ">= 1.3.9 < 2.0.0", - "parse5": "^1.5.1", - "request": "^2.79.0", - "sax": "^1.2.1", - "symbol-tree": "^3.2.1", - "tough-cookie": "^2.3.2", - "webidl-conversions": "^4.0.0", - "whatwg-encoding": "^1.0.1", - "whatwg-url": "^4.3.0", - "xml-name-validator": "^2.0.1" - } + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=" }, "jsesc": { "version": "1.3.0", @@ -5899,17 +4221,7 @@ "jshint": { "version": "2.10.2", "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.10.2.tgz", - "integrity": "sha512-e7KZgCSXMJxznE/4WULzybCMNXNAd/bf5TSrvVEq78Q/K8ZwFpmBqQeDtNiHc3l49nV4E/+YeHU/JZjSUIrLAA==", - "requires": { - "cli": "~1.0.0", - "console-browserify": "1.1.x", - "exit": "0.1.x", - "htmlparser2": "3.8.x", - "lodash": "~4.17.11", - "minimatch": "~3.0.2", - "shelljs": "0.3.x", - "strip-json-comments": "1.0.x" - } + "integrity": "sha512-e7KZgCSXMJxznE/4WULzybCMNXNAd/bf5TSrvVEq78Q/K8ZwFpmBqQeDtNiHc3l49nV4E/+YeHU/JZjSUIrLAA==" }, "json-parse-better-errors": { "version": "1.0.2", @@ -5942,19 +4254,13 @@ "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" - } + "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" - } + "dev": true }, "jsonparse": { "version": "1.3.1", @@ -5962,28 +4268,22 @@ "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "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 + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=" }, "jszip": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", "dev": true, - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "set-immediate-shim": "~1.0.1" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -5995,25 +4295,13 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -6022,35 +4310,6 @@ "resolved": "https://registry.npmjs.org/karma/-/karma-4.2.0.tgz", "integrity": "sha512-fmCuxN1rwJxTdZfOXK5LjlmS4Ana/OvzNMpkyLL/TLE8hmgSkpVpMYQ7RTVa8TNKRVQDZNl5W1oF5cfKfgIMlA==", "dev": true, - "requires": { - "bluebird": "^3.3.0", - "body-parser": "^1.16.1", - "braces": "^3.0.2", - "chokidar": "^3.0.0", - "colors": "^1.1.0", - "connect": "^3.6.0", - "core-js": "^3.1.3", - "di": "^0.0.1", - "dom-serialize": "^2.2.0", - "flatted": "^2.0.0", - "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "http-proxy": "^1.13.0", - "isbinaryfile": "^3.0.0", - "lodash": "^4.17.11", - "log4js": "^4.0.0", - "mime": "^2.3.1", - "minimatch": "^3.0.2", - "optimist": "^0.6.1", - "qjobs": "^1.1.4", - "range-parser": "^1.2.0", - "rimraf": "^2.6.0", - "safe-buffer": "^5.0.1", - "socket.io": "2.1.1", - "source-map": "^0.6.1", - "tmp": "0.0.33", - "useragent": "2.3.0" - }, "dependencies": { "mime": { "version": "2.4.4", @@ -6064,29 +4323,19 @@ "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" - } + "dev": true }, "karma-coverage-istanbul-reporter": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-2.1.0.tgz", "integrity": "sha512-UH0mXPJFJyK5uiK7EkwGtQ8f30lCBAfqRResnZ4pzLJ04SOp4SPlYkmwbbZ6iVJ6sQFVzlDUXlntBEsLRdgZpg==", - "dev": true, - "requires": { - "istanbul-api": "^2.1.6", - "minimatch": "^3.0.4" - } + "dev": true }, "karma-jasmine": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-2.0.1.tgz", "integrity": "sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==", - "dev": true, - "requires": { - "jasmine-core": "^3.3" - } + "dev": true }, "karma-jasmine-html-reporter": { "version": "1.4.2", @@ -6098,10 +4347,7 @@ "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" - } + "dev": true }, "killable": { "version": "1.0.1", @@ -6119,10 +4365,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", - "dev": true, - "requires": { - "invert-kv": "^2.0.0" - } + "dev": true }, "leaflet": { "version": "1.5.1", @@ -6153,57 +4396,30 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz", "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==", - "dev": true, - "requires": { - "clone": "^2.1.2", - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "mime": "^1.4.1", - "mkdirp": "^0.5.0", - "promise": "^7.1.1", - "request": "^2.83.0", - "source-map": "~0.6.0" - } + "dev": true }, "less-loader": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz", "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==", - "dev": true, - "requires": { - "clone": "^2.1.1", - "loader-utils": "^1.1.0", - "pify": "^4.0.1" - } + "dev": true }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=" }, "license-webpack-plugin": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.1.tgz", "integrity": "sha512-TiarZIg5vkQ2rGdYJn2+5YxO/zqlqjpK5IVglr7OfmrN1sBCakS+PQrsP2uC5gtve1ZDb9WMSUMlmHDQ0FoW4w==", - "dev": true, - "requires": { - "@types/webpack-sources": "^0.1.5", - "webpack-sources": "^1.2.0" - } + "dev": true }, "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" - } + "dev": true }, "loader-runner": { "version": "2.4.0", @@ -6215,22 +4431,13 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "lodash": { "version": "4.17.15", @@ -6254,22 +4461,12 @@ "resolved": "https://registry.npmjs.org/log4js/-/log4js-4.5.1.tgz", "integrity": "sha512-EEEgFcE9bLgaYUKuozyFfytQM2wDHtXn4tAN41pkaxpNjAykv11GVdeI4tHtmPWW4Xrgh9R/2d7XYghDVjbKKw==", "dev": true, - "requires": { - "date-format": "^2.0.0", - "debug": "^4.1.1", - "flatted": "^2.0.0", - "rfdc": "^1.1.4", - "streamroller": "^1.0.6" - }, "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" - } + "dev": true }, "ms": { "version": "2.1.2", @@ -6289,38 +4486,25 @@ "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" - } + "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" - } + "dev": true }, "magic-string": { "version": "0.25.3", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.3.tgz", "integrity": "sha512-6QK0OpF/phMz0Q2AxILkX2mFhi7m+WMwTRg0LQKq/WBB0cDP4rYH3Wp4/d3OTXlrPLVJT/RFqj8tFeAR4nk8AA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } + "dev": true }, "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", @@ -6341,42 +4525,12 @@ "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.0.tgz", "integrity": "sha512-nFr/vpL1Jc60etMVKeaLOqfGjMMb3tAHFVJWxHOFCFS04Zmd7kGlMxo0l1tzfhoQje0/UPnd0X8OeGUiXXnfPA==", "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.1", - "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.3", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", - "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" - } + "dev": true } } }, @@ -6390,10 +4544,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", - "dev": true, - "requires": { - "p-defer": "^1.0.0" - } + "dev": true }, "map-cache": { "version": "0.2.2", @@ -6405,21 +4556,13 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "media-typer": { "version": "0.3.0", @@ -6430,22 +4573,13 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", - "dev": true, - "requires": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - } + "dev": true }, "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" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -6457,25 +4591,13 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -6494,48 +4616,18 @@ "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" - }, "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" - } + "dev": true } } }, @@ -6544,21 +4636,12 @@ "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" - } + "dev": true } } }, @@ -6567,18 +4650,12 @@ "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" - } + "dev": true } } }, @@ -6586,11 +4663,7 @@ "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" - } + "dev": true } } }, @@ -6598,11 +4671,7 @@ "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" - } + "dev": true }, "mime": { "version": "1.6.0", @@ -6617,10 +4686,7 @@ "mime-types": { "version": "2.1.24", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==" }, "mimic-fn": { "version": "2.1.0", @@ -6632,13 +4698,7 @@ "version": "0.8.0", "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.8.0.tgz", "integrity": "sha512-MNpRGbNA52q6U92i0qbVpQNsgk7LExy41MdAlG84FeytfDOtRIf/mCHdEgG8rpTKOaNKiqUnZdlptF469hxqOw==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "normalize-url": "1.9.1", - "schema-utils": "^1.0.0", - "webpack-sources": "^1.1.0" - } + "dev": true }, "minimalistic-assert": { "version": "1.0.1", @@ -6655,10 +4715,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" }, "minimist": { "version": "1.2.0", @@ -6670,57 +4727,31 @@ "version": "2.3.5", "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } + "dev": true }, "minizlib": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", - "dev": true, - "requires": { - "minipass": "^2.2.1" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -6729,10 +4760,6 @@ "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", "dev": true, - "requires": { - "for-in": "^0.1.3", - "is-extendable": "^0.1.1" - }, "dependencies": { "for-in": { "version": "0.1.8", @@ -6747,9 +4774,6 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, - "requires": { - "minimist": "0.0.8" - }, "dependencies": { "minimist": { "version": "0.0.8", @@ -6762,25 +4786,13 @@ "mock-browser": { "version": "0.92.14", "resolved": "https://registry.npmjs.org/mock-browser/-/mock-browser-0.92.14.tgz", - "integrity": "sha1-U6hyAO38Xd2+K0YAI7KogSW3ReI=", - "requires": { - "jsdom": "^9.12.0", - "lodash": "^4.5" - } + "integrity": "sha1-U6hyAO38Xd2+K0YAI7KogSW3ReI=" }, "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" - } + "dev": true }, "ms": { "version": "2.0.0", @@ -6791,11 +4803,7 @@ "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" - } + "dev": true }, "multicast-dns-service-types": { "version": "1.1.0", @@ -6809,31 +4817,11 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", "dev": true }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "dev": true, - "optional": true - }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } + "dev": true }, "negotiator": { "version": "0.6.2", @@ -6849,10 +4837,7 @@ "ngx-toastr": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-10.1.0.tgz", - "integrity": "sha512-LXGL8jKIm0SGklkXytNKbR6VrF94all35SaUfgd1gOUzgllTW2ldqORDZlgIaiMB3Dcybaald8p3boEHvfjEIQ==", - "requires": { - "tslib": "^1.9.0" - } + "integrity": "sha512-LXGL8jKIm0SGklkXytNKbR6VrF94all35SaUfgd1gOUzgllTW2ldqORDZlgIaiMB3Dcybaald8p3boEHvfjEIQ==" }, "nice-try": { "version": "1.0.5", @@ -6864,12 +4849,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", "integrity": "sha512-nJIxm1QmAj4v3nfCvEeCrYSoVwXyxLnaPBK5W1W5DGEJwjlKuC2VEUycGw5oxk+4zZahRrB84PUJJgEmhFTDFw==", - "dev": true, - "requires": { - "encoding": "^0.1.11", - "json-parse-better-errors": "^1.0.0", - "safe-buffer": "^5.1.1" - } + "dev": true }, "node-forge": { "version": "0.7.5", @@ -6882,31 +4862,6 @@ "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": { "isarray": { "version": "1.0.0", @@ -6925,24 +4880,12 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, "dependencies": { "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" - } + "dev": true } } }, @@ -6951,9 +4894,6 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, "dependencies": { "safe-buffer": { "version": "5.2.0", @@ -6970,9 +4910,6 @@ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.27.tgz", "integrity": "sha512-9iXUqHKSGo6ph/tdXVbHFbhRVQln4ZDTIBJCzsa90HimnBYc5jw8RWYt4wBYFHehGyC3koIz5O4mb2fHrbPOuA==", "dev": true, - "requires": { - "semver": "^5.3.0" - }, "dependencies": { "semver": { "version": "5.7.1", @@ -6987,12 +4924,6 @@ "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": { "semver": { "version": "5.7.1", @@ -7018,13 +4949,7 @@ "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" - } + "dev": true }, "npm-bundled": { "version": "1.0.6", @@ -7037,12 +4962,6 @@ "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", "integrity": "sha512-zYbhP2k9DbJhA0Z3HKUePUgdB1x7MfIfKssC+WLPFMKTBZKpZh5m13PgexJjCq6KW7j17r0jHWcCpxEqnnncSA==", "dev": true, - "requires": { - "hosted-git-info": "^2.6.0", - "osenv": "^0.1.5", - "semver": "^5.5.0", - "validate-npm-package-name": "^3.0.0" - }, "dependencies": { "semver": { "version": "5.7.1", @@ -7056,22 +4975,13 @@ "version": "1.4.4", "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.4.tgz", "integrity": "sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw==", - "dev": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } + "dev": true }, "npm-pick-manifest": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-2.2.3.tgz", "integrity": "sha512-+IluBC5K201+gRU85vFlUwX3PFShZAbAgDNp2ewJdWMVSppdo/Zih0ul2Ecky/X7b51J7LrrUAP+XOmOCvYZqA==", "dev": true, - "requires": { - "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.0.0", - "semver": "^5.4.1" - }, "dependencies": { "semver": { "version": "5.7.1", @@ -7085,24 +4995,13 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz", "integrity": "sha512-Jllq35Jag8dtv0M17ue74XtdQTyqKzuAYGiX9mAjOhkmNjib3bBUgK6mUY61+AHnXeSRobQkpY3/xIOS/omptw==", - "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" - } + "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" - } + "dev": true }, "num2fraction": { "version": "1.2.2", @@ -7143,29 +5042,18 @@ "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" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -7179,29 +5067,19 @@ "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" - } + "dev": true }, "object.getownpropertydescriptors": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" - } + "dev": true }, "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" - } + "dev": true }, "obuf": { "version": "1.1.2", @@ -7212,10 +5090,7 @@ "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=" }, "on-headers": { "version": "1.0.2", @@ -7226,19 +5101,13 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" }, "onetime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - }, "dependencies": { "mimic-fn": { "version": "1.2.0", @@ -7252,29 +5121,19 @@ "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } + "dev": true }, "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" - } + "dev": true }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, "dependencies": { "minimist": { "version": "0.0.10", @@ -7293,24 +5152,13 @@ "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=" }, "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" - } + "dev": true }, "os-browserify": { "version": "0.3.0", @@ -7328,12 +5176,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - } + "dev": true }, "os-tmpdir": { "version": "1.0.2", @@ -7345,11 +5188,7 @@ "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" - } + "dev": true }, "p-defer": { "version": "1.0.0", @@ -7373,19 +5212,13 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } + "dev": true }, "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" - } + "dev": true }, "p-map": { "version": "2.1.0", @@ -7397,10 +5230,7 @@ "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" - } + "dev": true }, "p-try": { "version": "2.2.0", @@ -7413,58 +5243,12 @@ "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.4.tgz", "integrity": "sha512-nWr0ari6E+apbdoN0hToTKZElO5h4y8DGFa2pyNA5GQIdcP0imC96bA0bbPw1gpeguVIiUgHHaAlq/6xfPp8Qw==", "dev": true, - "requires": { - "bluebird": "^3.5.3", - "cacache": "^12.0.0", - "figgy-pudding": "^3.5.1", - "get-stream": "^4.1.0", - "glob": "^7.1.3", - "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-package-arg": "^6.1.0", - "npm-packlist": "^1.1.12", - "npm-pick-manifest": "^2.2.3", - "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.8", - "unique-filename": "^1.1.1", - "which": "^1.3.1" - }, "dependencies": { "cacache": { "version": "12.0.3", "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", - "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" - } + "dev": true }, "semver": { "version": "5.7.1", @@ -7485,11 +5269,6 @@ "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", "dev": true, - "requires": { - "cyclist": "~0.2.2", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -7501,25 +5280,13 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -7527,25 +5294,13 @@ "version": "5.1.4", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", - "dev": true, - "requires": { - "asn1.js": "^4.0.0", - "browserify-aes": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } + "dev": true }, "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" - } + "dev": true }, "parse-passwd": { "version": "1.0.0", @@ -7562,19 +5317,13 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "parseurl": { "version": "1.3.3", @@ -7638,9 +5387,6 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, - "requires": { - "pify": "^3.0.0" - }, "dependencies": { "pify": { "version": "3.0.0", @@ -7654,14 +5400,7 @@ "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } + "dev": true }, "performance-now": { "version": "2.1.0", @@ -7690,30 +5429,19 @@ "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" - } + "dev": true }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } + "dev": true }, "portfinder": { "version": "1.0.23", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.23.tgz", "integrity": "sha512-B729mL/uLklxtxuiJKfQ84WPxNw5a7Yhx3geQZdcA4GjNjZSTSSMMWyoennMVnTWSmAR0lMdzWYN0JLnHrg1KQ==", "dev": true, - "requires": { - "async": "^1.5.2", - "debug": "^2.2.0", - "mkdirp": "0.5.x" - }, "dependencies": { "async": { "version": "1.5.2", @@ -7734,20 +5462,12 @@ "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz", "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==", "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, "dependencies": { "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" - } + "dev": true } } }, @@ -7756,12 +5476,6 @@ "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", @@ -7775,23 +5489,13 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "import-cwd": "^2.0.0" - } + "dev": true }, "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" - } + "dev": true }, "postcss-value-parser": { "version": "4.0.2", @@ -7827,10 +5531,7 @@ "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "dev": true, - "optional": true, - "requires": { - "asap": "~2.0.3" - } + "optional": true }, "promise-inflight": { "version": "1.0.1", @@ -7843,10 +5544,6 @@ "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", @@ -7860,33 +5557,13 @@ "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" - } + "dev": true }, "protractor": { "version": "5.4.2", "resolved": "https://registry.npmjs.org/protractor/-/protractor-5.4.2.tgz", "integrity": "sha512-zlIj64Cr6IOWP7RwxVeD8O4UskLYPoyIcg0HboWJL9T79F1F0VWtKkGTr/9GN6BKL+/Q/GmM7C9kFVCfDbP5sA==", "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", - "optimist": "~0.6.0", - "q": "1.4.1", - "saucelabs": "^1.5.0", - "selenium-webdriver": "3.6.0", - "source-map-support": "~0.4.0", - "webdriver-js-extender": "2.1.0", - "webdriver-manager": "^12.0.6" - }, "dependencies": { "ansi-styles": { "version": "2.2.1", @@ -7898,43 +5575,19 @@ "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" - } + "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" - } + "dev": true }, "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" - } + "dev": true }, "is-path-cwd": { "version": "1.0.0", @@ -7946,19 +5599,13 @@ "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" - } + "dev": true }, "is-path-inside": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } + "dev": true }, "pify": { "version": "2.3.0", @@ -7982,10 +5629,7 @@ "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" - } + "dev": true }, "supports-color": { "version": "2.0.0", @@ -7997,31 +5641,14 @@ "version": "12.1.6", "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.6.tgz", "integrity": "sha512-B1mOycNCrbk7xODw7Jgq/mdD3qzPxMaTsnKIQDy2nXlQoyjTrJTTD0vRpEZI9b8RibPEyQvh9zIZ0M1mpOxS3w==", - "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" - } + "dev": true } } }, "proxy-addr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" - } + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==" }, "prr": { "version": "1.0.1", @@ -8044,46 +5671,25 @@ "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" - } + "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" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -8113,11 +5719,7 @@ "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" - } + "dev": true }, "querystring": { "version": "0.2.0", @@ -8141,20 +5743,13 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "range-parser": { "version": "1.2.1", @@ -8164,32 +5759,19 @@ "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==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==" }, "raw-loader": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-1.0.0.tgz", "integrity": "sha512-Uqy5AqELpytJTRxYT4fhltcKPj0TyaEpzJDcGz7DFJi+pQOOi3GjR/DOdxTkTsF+NzhnldIoG6TORaBlInUuqA==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" - } + "dev": true }, "read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", "dev": true, - "requires": { - "pify": "^2.3.0" - }, "dependencies": { "pify": { "version": "2.3.0", @@ -8203,57 +5785,30 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.0.tgz", "integrity": "sha512-KLhu8M1ZZNkMcrq1+0UJbR8Dii8KZUqB0Sha4mOx/bknfKI/fyrQVrG/YIt2UOtG667sD8+ee4EXMM91W9dC+A==", - "dev": true, - "requires": { - "glob": "^7.1.1", - "graceful-fs": "^4.1.2", - "json-parse-better-errors": "^1.0.1", - "normalize-package-data": "^2.0.0", - "slash": "^1.0.0" - } + "dev": true }, "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" - } + "dev": true }, "readable-stream": { "version": "1.1.14", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=" }, "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" - } + "dev": true }, "readdirp": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.1.2.tgz", "integrity": "sha512-8rhl0xs2cxfVsqzreYCvs8EwBfn/DhVdqtoLmw19uI3SC5avYX9teCurlErfpPXGmYtMHReGaP2RsLnFvz/lnw==", - "dev": true, - "requires": { - "picomatch": "^2.0.4" - } + "dev": true }, "reflect-metadata": { "version": "0.1.13", @@ -8277,22 +5832,13 @@ "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" - } + "dev": true }, "regexpu-core": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", "integrity": "sha1-hqdj9Y7k18L2sQLkdkBQ3n7ZDGs=", - "dev": true, - "requires": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" - } + "dev": true }, "regjsgen": { "version": "0.2.0", @@ -8305,9 +5851,6 @@ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, "dependencies": { "jsesc": { "version": "0.5.0", @@ -8339,37 +5882,12 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, - "requires": { - "is-finite": "^1.0.0" - } + "dev": true }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, "dependencies": { "punycode": { "version": "1.4.1", @@ -8384,11 +5902,7 @@ "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==" } } }, @@ -8414,40 +5928,25 @@ "version": "1.12.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } + "dev": true }, "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" - } + "dev": true }, "resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", "dev": true, - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, "dependencies": { "global-modules": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "dev": true, - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } + "dev": true } } }, @@ -8467,11 +5966,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } + "dev": true }, "ret": { "version": "0.1.15", @@ -8495,46 +5990,30 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "run-async": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, - "requires": { - "is-promise": "^2.1.0" - } + "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" - } + "dev": true }, "rxjs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", - "requires": { - "tslib": "^1.9.0" - } + "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==" }, "safe-buffer": { "version": "5.1.2", @@ -8545,10 +6024,7 @@ "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" - } + "dev": true }, "safer-buffer": { "version": "2.1.2", @@ -8559,24 +6035,13 @@ "version": "1.22.7", "resolved": "https://registry.npmjs.org/sass/-/sass-1.22.7.tgz", "integrity": "sha512-ahREi0AdG7RTovSv14+yd1prQSfIvFcrDpOsth5EQf1+RM7SvOxsSttzNQaFmK1aa/k/3vyYwlYF5l0Xl+6c+g==", - "dev": true, - "requires": { - "chokidar": ">=2.0.0 <4.0.0" - } + "dev": true }, "sass-loader": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-7.1.0.tgz", "integrity": "sha512-+G+BKGglmZM2GUSfT9TLuEp6tzehHPjAMoRRItOojWIqIGPloVCMhNIQuG639eJ+y033PaGTSjLaTHts8Kw79w==", "dev": true, - "requires": { - "clone-deep": "^2.0.1", - "loader-utils": "^1.0.1", - "lodash.tail": "^4.1.1", - "neo-async": "^2.5.0", - "pify": "^3.0.0", - "semver": "^5.5.0" - }, "dependencies": { "pify": { "version": "3.0.0", @@ -8596,10 +6061,7 @@ "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" - } + "dev": true }, "sax": { "version": "1.2.4", @@ -8610,12 +6072,7 @@ "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" - } + "dev": true }, "select-hose": { "version": "2.0.0", @@ -8628,21 +6085,12 @@ "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", "dev": true, - "requires": { - "jszip": "^3.1.3", - "rimraf": "^2.5.4", - "tmp": "0.0.30", - "xml2js": "^0.4.17" - }, "dependencies": { "tmp": { "version": "0.0.30", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.1" - } + "dev": true } } }, @@ -8650,10 +6098,7 @@ "version": "1.10.4", "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.4.tgz", "integrity": "sha512-9AukTiDmHXGXWtWjembZ5NDmVvP2695EtpgbCsxCa68w3c88B+alqbmZ4O3hZ4VWGXeGWzEVdvqgAJD8DQPCDw==", - "dev": true, - "requires": { - "node-forge": "0.7.5" - } + "dev": true }, "semver": { "version": "6.3.0", @@ -8666,9 +6111,6 @@ "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", @@ -8683,9 +6125,6 @@ "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", @@ -8699,21 +6138,6 @@ "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "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": { "ms": { "version": "2.1.1", @@ -8733,27 +6157,12 @@ "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": { "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" - } + "dev": true }, "setprototypeof": { "version": "1.1.0", @@ -8766,13 +6175,7 @@ "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==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==" }, "set-blocking": { "version": "2.0.0", @@ -8791,21 +6194,12 @@ "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" - } + "dev": true } } }, @@ -8824,22 +6218,13 @@ "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" - } + "dev": true }, "shallow-clone": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-1.0.0.tgz", "integrity": "sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==", "dev": true, - "requires": { - "is-extendable": "^0.1.1", - "kind-of": "^5.0.0", - "mixin-object": "^2.0.1" - }, "dependencies": { "kind-of": { "version": "5.1.0", @@ -8853,10 +6238,7 @@ "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" - } + "dev": true }, "shebang-regex": { "version": "1.0.0", @@ -8892,34 +6274,18 @@ "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } + "dev": true }, "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" - } + "dev": true }, "source-map": { "version": "0.5.7", @@ -8934,49 +6300,30 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -8985,18 +6332,12 @@ "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" - } + "dev": true } } }, @@ -9005,23 +6346,12 @@ "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.1.1.tgz", "integrity": "sha512-rORqq9c+7W0DAK3cleWNSyfv/qKXV99hV4tZe+gGLfBECw3XEhBy7x85F3wypA9688LKjtwO9pX9L33/xQI8yA==", "dev": true, - "requires": { - "debug": "~3.1.0", - "engine.io": "~3.2.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.1.1", - "socket.io-parser": "~3.2.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" - } + "dev": true } } }, @@ -9036,22 +6366,6 @@ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.1.1.tgz", "integrity": "sha512-jxnFyhAuFxYfjqIgduQlhzqTcOEQSn+OHKVfAxWaNWa7ecP7xSNk2Dx/3UEsDcY7NcFafxvNvKPmmO7HTwTxGQ==", "dev": true, - "requires": { - "backo2": "1.0.2", - "base64-arraybuffer": "0.1.5", - "component-bind": "1.0.0", - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "engine.io-client": "~3.2.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.2.0", - "to-array": "0.1.4" - }, "dependencies": { "component-emitter": { "version": "1.2.1", @@ -9063,10 +6377,7 @@ "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" - } + "dev": true } } }, @@ -9075,11 +6386,6 @@ "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.2.0.tgz", "integrity": "sha512-FYiBx7rc/KORMJlgsXysflWx/RIvtqZbyGLlHZvjfmPTPeuD/I8MaW7cfFrj5tRltICJdgwflhfZ3NVVbVLFQA==", "dev": true, - "requires": { - "component-emitter": "1.2.1", - "debug": "~3.1.0", - "isarray": "2.0.1" - }, "dependencies": { "component-emitter": { "version": "1.2.1", @@ -9091,10 +6397,7 @@ "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" - } + "dev": true }, "isarray": { "version": "2.0.1", @@ -9108,43 +6411,25 @@ "version": "0.3.19", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", - "dev": true, - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.0.1" - } + "dev": true }, "sockjs-client": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.3.0.tgz", "integrity": "sha512-R9jxEzhnnrdxLCNln0xg5uGHqMnkhPSTzUZH2eXcR03S/On9Yvoq2wyUZILRUhZCNVu2PmwWVoyuiPz8th8zbg==", "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.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "dev": true }, "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" - } + "dev": true }, "ms": { "version": "2.1.2", @@ -9158,30 +6443,19 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.2.tgz", "integrity": "sha512-pCpjxQgOByDHLlNqlnh/mNSAxIUkyBBuwwhTcV+enZGbDaClPvHdvm6uvOwZfFJkam7cGhBNbb4JxiP8UZkRvQ==", - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "4.0.2" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -9189,10 +6463,7 @@ "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" - } + "dev": true }, "source-list-map": { "version": "2.0.1", @@ -9209,34 +6480,19 @@ "version": "0.2.4", "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.4.tgz", "integrity": "sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==", - "dev": true, - "requires": { - "async": "^2.5.0", - "loader-utils": "^1.1.0" - } + "dev": true }, "source-map-resolve": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "dev": true, - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } + "dev": true }, "source-map-support": { "version": "0.5.12", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } + "dev": true }, "source-map-url": { "version": "0.4.0", @@ -9254,11 +6510,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } + "dev": true }, "spdx-exceptions": { "version": "2.2.0", @@ -9270,11 +6522,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } + "dev": true }, "spdx-license-ids": { "version": "3.0.5", @@ -9287,22 +6535,12 @@ "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.1.tgz", "integrity": "sha512-HeZS3PBdMA+sZSu0qwpCxl3DeALD5ASx8pAX0jZdKXSpPWbQ6SYGnlg3BBmYLx5LtiZrmkAZfErCm2oECBcioA==", "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" - }, "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" - } + "dev": true }, "ms": { "version": "2.1.2", @@ -9317,23 +6555,12 @@ "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": { "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" - } + "dev": true }, "ms": { "version": "2.1.2", @@ -9345,12 +6572,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } + "dev": true }, "safe-buffer": { "version": "5.2.0", @@ -9362,10 +6584,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } + "dev": true } } }, @@ -9373,19 +6592,13 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.1.tgz", "integrity": "sha512-qVIkJvbtS9j/UeZumbdfz0vg+QfG/zxonAjzefZrqzkr7xOncLVXkeGbTpzd1gjCBM4PmVNkWlkeTVhgskAGSQ==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } + "dev": true }, "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" - } + "dev": true }, "sprintf-js": { "version": "1.0.3", @@ -9396,46 +6609,25 @@ "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "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" - } + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==" }, "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" - } + "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" - } + "dev": true } } }, @@ -9449,10 +6641,6 @@ "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" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -9464,25 +6652,13 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -9490,24 +6666,13 @@ "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" - } + "dev": true }, "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" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -9519,25 +6684,13 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -9552,22 +6705,12 @@ "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-1.0.6.tgz", "integrity": "sha512-3QC47Mhv3/aZNFpDDVO44qQb9gwB9QggMEE0sQmkTAwBVYdBRWISdsywlkfm5II1Q5y/pmrHflti/IgmIzdDBg==", "dev": true, - "requires": { - "async": "^2.6.2", - "date-format": "^2.0.0", - "debug": "^3.2.6", - "fs-extra": "^7.0.1", - "lodash": "^4.17.14" - }, "dependencies": { "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "dev": true }, "ms": { "version": "2.1.2", @@ -9583,15 +6726,16 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", "dev": true }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, "dependencies": { "ansi-regex": { "version": "3.0.0", @@ -9603,26 +6747,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } + "dev": true } } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, "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" - } + "dev": true }, "strip-bom": { "version": "3.0.0", @@ -9645,39 +6778,19 @@ "version": "0.23.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0", - "schema-utils": "^1.0.0" - } + "dev": true }, "stylus": { "version": "0.54.5", "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.5.tgz", "integrity": "sha1-QrlWCTHKcJDOhRWnmLqeaqPW3Hk=", "dev": true, - "requires": { - "css-parse": "1.7.x", - "debug": "*", - "glob": "7.0.x", - "mkdirp": "0.5.x", - "sax": "0.5.x", - "source-map": "0.1.x" - }, "dependencies": { "glob": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "integrity": "sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo=", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.2", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } + "dev": true }, "sax": { "version": "0.5.8", @@ -9689,10 +6802,7 @@ "version": "0.1.43", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } + "dev": true } } }, @@ -9700,21 +6810,13 @@ "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" - } + "dev": true }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } + "dev": true }, "symbol-observable": { "version": "1.2.0", @@ -9737,45 +6839,19 @@ "version": "4.4.10", "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.10.tgz", "integrity": "sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA==", - "dev": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.5", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } + "dev": true }, "terser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.2.0.tgz", "integrity": "sha512-6lPt7lZdZ/13icQJp8XasFOwZjFJkxFFIb/N1fhYEQNoNI3Ilo3KABZ9OocZvZoB39r6SiIk/0+v/bt8nZoSeA==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } + "dev": true }, "terser-webpack-plugin": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.3.0.tgz", "integrity": "sha512-W2YWmxPjjkUcOWa4pBEv4OP4er1aeQJlSo2UhtCFQCuRXEHjOFscO8VyWHj9JLlA0RzQb8Y2/Ta78XZvT54uGg==", - "dev": true, - "requires": { - "cacache": "^11.3.2", - "find-cache-dir": "^2.0.0", - "is-wsl": "^1.1.0", - "loader-utils": "^1.2.3", - "schema-utils": "^1.0.0", - "serialize-javascript": "^1.7.0", - "source-map": "^0.6.1", - "terser": "^4.0.0", - "webpack-sources": "^1.3.0", - "worker-farm": "^1.7.0" - } + "dev": true }, "through": { "version": "2.3.8", @@ -9788,10 +6864,6 @@ "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" - }, "dependencies": { "isarray": { "version": "1.0.0", @@ -9803,25 +6875,13 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -9835,19 +6895,13 @@ "version": "2.0.11", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } + "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" - } + "dev": true }, "to-array": { "version": "0.1.4", @@ -9872,18 +6926,12 @@ "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" - } + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true } } }, @@ -9891,22 +6939,13 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "toidentifier": { "version": "1.0.0", @@ -9916,11 +6955,7 @@ "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==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" }, "tr46": { "version": "0.0.3", @@ -9944,23 +6979,12 @@ "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-6.0.4.tgz", "integrity": "sha512-p2zJYe7OtwR+49kv4gs7v4dMrfYD1IPpOtqiSPCbe8oR+4zEBtdHwzM7A7M91F+suReqgzZrlClk4LRSSp882g==", "dev": true, - "requires": { - "chalk": "^2.3.0", - "enhanced-resolve": "^4.0.0", - "loader-utils": "^1.0.2", - "micromatch": "^4.0.0", - "semver": "^6.0.0" - }, "dependencies": { "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" - } + "dev": true } } }, @@ -9968,14 +6992,7 @@ "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" - } + "dev": true }, "tslib": { "version": "1.10.0", @@ -9987,21 +7004,6 @@ "resolved": "https://registry.npmjs.org/tslint/-/tslint-5.18.0.tgz", "integrity": "sha512-Q3kXkuDEijQ37nXZZLKErssQVnwCV/+23gFEMROi8IlbaBG6tXqLPQJ5Wjcyt/yHPKBC+hD5SzuGaMora+ZS6w==", "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "builtin-modules": "^1.1.1", - "chalk": "^2.3.0", - "commander": "^2.12.1", - "diff": "^3.2.0", - "glob": "^7.1.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "resolve": "^1.3.2", - "semver": "^5.3.0", - "tslib": "^1.8.0", - "tsutils": "^2.29.0" - }, "dependencies": { "diff": { "version": "3.5.0", @@ -10021,10 +7023,7 @@ "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" - } + "dev": true }, "tty-browserify": { "version": "0.0.0", @@ -10035,10 +7034,7 @@ "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=" }, "tweetnacl": { "version": "0.14.5", @@ -10048,19 +7044,12 @@ "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=" }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==" }, "typedarray": { "version": "0.0.6", @@ -10079,11 +7068,7 @@ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz", "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==", "dev": true, - "optional": true, - "requires": { - "commander": "~2.20.0", - "source-map": "~0.6.1" - } + "optional": true }, "ultron": { "version": "1.1.1", @@ -10100,51 +7085,31 @@ "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" - } + "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" - } + "dev": true }, "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" - } + "dev": true }, "universal-analytics": { "version": "0.4.20", "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.20.tgz", "integrity": "sha512-gE91dtMvNkjO+kWsPstHRtSwHXz0l2axqptGYp5ceg4MsuurloM0PU3pdOfpb5zBXUvyjT4PwhWK2m39uczZuw==", "dev": true, - "requires": { - "debug": "^3.0.0", - "request": "^2.88.0", - "uuid": "^3.0.0" - }, "dependencies": { "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } + "dev": true }, "ms": { "version": "2.1.2", @@ -10170,30 +7135,18 @@ "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" - } + "dev": true } } }, @@ -10220,10 +7173,7 @@ "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==" }, "urix": { "version": "0.1.0", @@ -10236,10 +7186,6 @@ "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", @@ -10253,11 +7199,7 @@ "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" - } + "dev": true }, "use": { "version": "3.1.1", @@ -10270,20 +7212,12 @@ "resolved": "https://registry.npmjs.org/useragent/-/useragent-2.3.0.tgz", "integrity": "sha512-4AoH4pxuSvHCjqLO04sU6U/uE65BYza8l/KKBS0b0hnUPWi+cQ2BpeTEwejCSx9SPV5/U03nniDTrWx5NrmKdw==", "dev": true, - "requires": { - "lru-cache": "4.1.x", - "tmp": "0.0.x" - }, "dependencies": { "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } + "dev": true }, "yallist": { "version": "2.1.2", @@ -10297,10 +7231,7 @@ "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" - } + "dev": true }, "util-deprecate": { "version": "1.0.2", @@ -10312,10 +7243,7 @@ "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" - } + "dev": true }, "utils-merge": { "version": "1.0.1", @@ -10337,20 +7265,13 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "vary": { "version": "1.1.2", @@ -10360,12 +7281,7 @@ "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=" }, "vm-browserify": { "version": "1.1.0", @@ -10384,30 +7300,18 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", "dev": true, - "requires": { - "chokidar": "^2.0.2", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, "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" - } + "dev": true } } }, @@ -10421,60 +7325,25 @@ "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" - } + "dev": true }, "chokidar": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", - "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" - } + "dev": true }, "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" - } + "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" - } + "dev": true }, "fsevents": { "version": "1.2.9", @@ -11028,19 +7897,13 @@ "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" - } + "dev": true }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } + "dev": true }, "isarray": { "version": "1.0.0", @@ -11052,55 +7915,31 @@ "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" - } + "dev": true }, "readable-stream": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -11108,20 +7947,13 @@ "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" - } + "dev": true }, "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" - } + "dev": true }, "webidl-conversions": { "version": "4.0.2", @@ -11133,31 +7965,6 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.38.0.tgz", "integrity": "sha512-lbuFsVOq8PZY+1Ytz/mYOvYOo+d4IJ31hHk/7iyoeWtwN33V+5HYotSH+UIb9tq914ey0Hot7z6HugD+je3sWw==", "dev": true, - "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "acorn": "^6.2.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "chrome-trace-event": "^1.0.0", - "enhanced-resolve": "^4.1.0", - "eslint-scope": "^4.0.0", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "micromatch": "^3.1.8", - "mkdirp": "~0.5.0", - "neo-async": "^2.5.0", - "node-libs-browser": "^2.0.0", - "schema-utils": "^1.0.0", - "tapable": "^1.1.0", - "terser-webpack-plugin": "^1.1.0", - "watchpack": "^1.5.0", - "webpack-sources": "^1.3.0" - }, "dependencies": { "acorn": { "version": "6.3.0", @@ -11172,19 +7979,6 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.7.tgz", "integrity": "sha512-OhTUCttAsr+IZSMVwGROGRHvT+QAs8H6/mHIl4SvhAwYywjiylYjpwybGx7WQ9Hkb45FhjtsymkwiRRbGJ1SZQ==", "dev": true, - "requires": { - "chalk": "2.4.2", - "cross-spawn": "6.0.5", - "enhanced-resolve": "4.1.0", - "findup-sync": "3.0.0", - "global-modules": "2.0.0", - "import-local": "2.0.0", - "interpret": "1.2.0", - "loader-utils": "1.2.3", - "supports-color": "6.1.0", - "v8-compile-cache": "2.0.3", - "yargs": "13.2.4" - }, "dependencies": { "ansi-regex": { "version": "4.1.0", @@ -11196,12 +7990,7 @@ "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" - } + "dev": true }, "get-caller-file": { "version": "2.0.5", @@ -11219,70 +8008,37 @@ "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" - } + "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" - } + "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" - } + "dev": true }, "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" - } + "dev": true }, "yargs": { "version": "13.2.4", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz", "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "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.0" - } + "dev": true }, "yargs-parser": { "version": "13.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "dev": true } } }, @@ -11291,10 +8047,6 @@ "resolved": "https://registry.npmjs.org/webpack-core/-/webpack-core-0.6.9.tgz", "integrity": "sha1-/FcViMhVjad76e+23r3Fo7FyvcI=", "dev": true, - "requires": { - "source-list-map": "~0.1.7", - "source-map": "~0.4.1" - }, "dependencies": { "source-list-map": { "version": "0.1.8", @@ -11306,10 +8058,7 @@ "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dev": true, - "requires": { - "amdefine": ">=0.0.4" - } + "dev": true } } }, @@ -11318,12 +8067,6 @@ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.0.tgz", "integrity": "sha512-qvDesR1QZRIAZHOE3iQ4CXLZZSQ1lAUsSpnQmlB1PBfoN/xdRjmge3Dok0W4IdaVLJOGJy3sGI4sZHwjRU0PCA==", "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.2", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, "dependencies": { "mime": { "version": "2.4.4", @@ -11338,58 +8081,18 @@ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.7.2.tgz", "integrity": "sha512-mjWtrKJW2T9SsjJ4/dxDC2fkFVUw8jlpemDERqV0ZJIkjjjamR2AbQlr3oz+j4JLhYCHImHnXZK5H06P2wvUew==", "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.6", - "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.2.1", - "http-proxy-middleware": "^0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "killable": "^1.0.1", - "loglevel": "^1.6.3", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.20", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.4", - "semver": "^6.1.1", - "serve-index": "^1.9.1", - "sockjs": "0.3.19", - "sockjs-client": "1.3.0", - "spdy": "^4.0.0", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.0", - "webpack-log": "^2.0.0", - "yargs": "12.0.5" - }, "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" - } + "dev": true } } }, @@ -11403,69 +8106,31 @@ "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" - } + "dev": true }, "chokidar": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", - "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" - } + "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" - } + "dev": true }, "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" - } + "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" - } + "dev": true }, "fsevents": { "version": "1.2.9", @@ -12019,19 +8684,13 @@ "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" - } + "dev": true }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - } + "dev": true }, "isarray": { "version": "1.0.0", @@ -12043,10 +8702,7 @@ "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" - } + "dev": true }, "ms": { "version": "2.1.2", @@ -12058,55 +8714,31 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } + "dev": true }, "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" - } + "dev": true }, "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" - } + "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" - } + "dev": true }, "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" - } + "dev": true } } }, @@ -12114,50 +8746,31 @@ "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" - } + "dev": true }, "webpack-merge": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz", "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==", - "dev": true, - "requires": { - "lodash": "^4.17.5" - } + "dev": true }, "webpack-sources": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } + "dev": true }, "webpack-subresource-integrity": { "version": "1.1.0-rc.6", "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.1.0-rc.6.tgz", "integrity": "sha512-Az7y8xTniNhaA0620AV1KPwWOqawurVVDzQSpPAeR5RwNbL91GoBSJAAo9cfd+GiFHwsS5bbHepBw1e6Hzxy4w==", - "dev": true, - "requires": { - "webpack-core": "^0.6.8" - } + "dev": true }, "websocket-driver": { "version": "0.7.3", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } + "dev": true }, "websocket-extensions": { "version": "0.1.3", @@ -12168,19 +8781,12 @@ "whatwg-encoding": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "requires": { - "iconv-lite": "0.4.24" - } + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==" }, "whatwg-url": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - }, "dependencies": { "webidl-conversions": { "version": "3.0.1", @@ -12199,10 +8805,7 @@ "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" - } + "dev": true }, "which-module": { "version": "2.0.0", @@ -12219,49 +8822,31 @@ "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" - } + "dev": true }, "worker-plugin": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-3.1.0.tgz", "integrity": "sha512-iQ9KTTmmN5fhfc2KMR7CcDblvcrg1QQ4pXymqZ3cRZF8L0890YLBcEqlIsGPdxoFwghyN8RA1pCEhCKuTF4Lkw==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0" - } + "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "dev": true }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } + "dev": true } } }, @@ -12274,12 +8859,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } + "dev": true }, "xhr2": { "version": "0.1.4", @@ -12295,11 +8875,7 @@ "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", - "dev": true, - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } + "dev": true }, "xmlbuilder": { "version": "9.0.7", @@ -12335,31 +8911,13 @@ "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", - "dev": true, - "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" - } + "dev": true }, "yargs-parser": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "dev": true }, "yeast": { "version": "0.1.2", diff --git a/frontend/package.json b/frontend/package.json index 6ae4df77..90aebe84 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -30,6 +30,7 @@ "@ng-bootstrap/ng-bootstrap": "^5.1.0", "@nguniversal/express-engine": "^8.1.1", "@nguniversal/module-map-ngfactory-loader": "8.1.1", + "@swimlane/ngx-datatable": "^16.0.2", "bootstrap": "^4.3.1", "core-js": "^3.2.1", "domino": "^2.1.3", diff --git a/frontend/src/app/app.module.ts b/frontend/src/app/app.module.ts index 52f58416..1583a7c1 100644 --- a/frontend/src/app/app.module.ts +++ b/frontend/src/app/app.module.ts @@ -5,6 +5,7 @@ import { FormsModule, ReactiveFormsModule } from "@angular/forms"; import { registerLocaleData } from "@angular/common"; import { NgbModule } from "@ng-bootstrap/ng-bootstrap"; +import { NgxDatatableModule } from '@swimlane/ngx-datatable'; import { AppComponent } from "./app.component"; import { routing } from "./app.routing"; @@ -56,6 +57,7 @@ import { CommonModule } from '@angular/common'; ReactiveFormsModule, FormsModule, NgbModule, + NgxDatatableModule, CommonModule, BrowserAnimationsModule, ToastrModule.forRoot( diff --git a/frontend/src/assets/css/material.css b/frontend/src/assets/css/material.css new file mode 100644 index 00000000..5ea414cf --- /dev/null +++ b/frontend/src/assets/css/material.css @@ -0,0 +1,303 @@ +/* + This stylesheet uses scss valiables for most of the colors / background-colors of the table + to enable the customization of the displayed table without cloning the stylesheet into the + own application. + + To modify table colors, add the following lines to the scss file of your application + (this example modifies the color of the selected row - selectionType = single, multi or multiClick): + + $ngx-datatable-selected-active-background: yellow; + $ngx-datatable-selected-active-background-hover: rgba(yellow, 0.2); + + @import '~@swimlane/ngx-datatable/index.css'; + @import '~@swimlane/ngx-datatable/themes/material.scss'; + @import '~@swimlane/ngx-datatable/assets/icons.css'; + +That's all. +*/ +.ngx-datatable.material { + background: #fff; + box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12); + /** + * Shared Styles + */ + /** + * Global Row Styles + */ + /** + * Header Styles + */ + /** + * Body Styles + */ + /** + * Footer Styles + */ } + .ngx-datatable.material.striped .datatable-row-odd { + background: #eee; } + .ngx-datatable.material.single-selection .datatable-body-row.active, + .ngx-datatable.material.single-selection .datatable-body-row.active .datatable-row-group, .ngx-datatable.material.multi-selection .datatable-body-row.active, + .ngx-datatable.material.multi-selection .datatable-body-row.active .datatable-row-group, .ngx-datatable.material.multi-click-selection .datatable-body-row.active, + .ngx-datatable.material.multi-click-selection .datatable-body-row.active .datatable-row-group { + background-color: #304ffe; + color: #fff; } + .ngx-datatable.material.single-selection .datatable-body-row.active:hover, + .ngx-datatable.material.single-selection .datatable-body-row.active:hover .datatable-row-group, .ngx-datatable.material.multi-selection .datatable-body-row.active:hover, + .ngx-datatable.material.multi-selection .datatable-body-row.active:hover .datatable-row-group, .ngx-datatable.material.multi-click-selection .datatable-body-row.active:hover, + .ngx-datatable.material.multi-click-selection .datatable-body-row.active:hover .datatable-row-group { + background-color: #193ae4; + color: #fff; } + .ngx-datatable.material.single-selection .datatable-body-row.active:focus, + .ngx-datatable.material.single-selection .datatable-body-row.active:focus .datatable-row-group, .ngx-datatable.material.multi-selection .datatable-body-row.active:focus, + .ngx-datatable.material.multi-selection .datatable-body-row.active:focus .datatable-row-group, .ngx-datatable.material.multi-click-selection .datatable-body-row.active:focus, + .ngx-datatable.material.multi-click-selection .datatable-body-row.active:focus .datatable-row-group { + background-color: #2041ef; + color: #fff; } + .ngx-datatable.material:not(.cell-selection) .datatable-body-row:hover, + .ngx-datatable.material:not(.cell-selection) .datatable-body-row:hover .datatable-row-group { + background-color: #eee; + transition-property: background; + transition-duration: 0.3s; + transition-timing-function: linear; } + .ngx-datatable.material:not(.cell-selection) .datatable-body-row:focus, + .ngx-datatable.material:not(.cell-selection) .datatable-body-row:focus .datatable-row-group { + background-color: #ddd; } + .ngx-datatable.material.cell-selection .datatable-body-cell:hover, + .ngx-datatable.material.cell-selection .datatable-body-cell:hover .datatable-row-group { + background-color: #eee; + transition-property: background; + transition-duration: 0.3s; + transition-timing-function: linear; } + .ngx-datatable.material.cell-selection .datatable-body-cell:focus, + .ngx-datatable.material.cell-selection .datatable-body-cell:focus .datatable-row-group { + background-color: #ddd; } + .ngx-datatable.material.cell-selection .datatable-body-cell.active, + .ngx-datatable.material.cell-selection .datatable-body-cell.active .datatable-row-group { + background-color: #304ffe; + color: #fff; } + .ngx-datatable.material.cell-selection .datatable-body-cell.active:hover, + .ngx-datatable.material.cell-selection .datatable-body-cell.active:hover .datatable-row-group { + background-color: #193ae4; + color: #fff; } + .ngx-datatable.material.cell-selection .datatable-body-cell.active:focus, + .ngx-datatable.material.cell-selection .datatable-body-cell.active:focus .datatable-row-group { + background-color: #2041ef; + color: #fff; } + .ngx-datatable.material .empty-row { + height: 50px; + text-align: left; + padding: 0.5rem 1.2rem; + vertical-align: top; + border-top: 0; } + .ngx-datatable.material .loading-row { + text-align: left; + padding: 0.5rem 1.2rem; + vertical-align: top; + border-top: 0; } + .ngx-datatable.material .datatable-header .datatable-row-left, + .ngx-datatable.material .datatable-body .datatable-row-left { + background-color: #fff; + background-position: 100% 0; + background-repeat: repeat-y; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABCAYAAAD5PA/NAAAAFklEQVQIHWPSkNeSBmJhTQVtbiDNCgASagIIuJX8OgAAAABJRU5ErkJggg==); } + .ngx-datatable.material .datatable-header .datatable-row-right, + .ngx-datatable.material .datatable-body .datatable-row-right { + background-position: 0 0; + background-color: #fff; + background-repeat: repeat-y; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABCAYAAAD5PA/NAAAAFklEQVQI12PQkNdi1VTQ5gbSwkAsDQARLAIGtOSFUAAAAABJRU5ErkJggg==); } + .ngx-datatable.material .datatable-header { + border-bottom: 1px solid rgba(0, 0, 0, 0.12); } + .ngx-datatable.material .datatable-header .datatable-header-cell { + text-align: left; + padding: 0.9rem 1.2rem; + font-weight: 400; + background-color: #fff; + color: rgba(0, 0, 0, 0.54); + vertical-align: bottom; + font-size: 12px; + font-weight: 500; } + .ngx-datatable.material .datatable-header .datatable-header-cell .datatable-header-cell-wrapper { + position: relative; } + .ngx-datatable.material .datatable-header .datatable-header-cell.longpress .draggable::after { + transition: transform 400ms ease, opacity 400ms ease; + opacity: 0.5; + transform: scale(1); } + .ngx-datatable.material .datatable-header .datatable-header-cell .draggable::after { + content: ' '; + position: absolute; + top: 50%; + left: 50%; + margin: -30px 0 0 -30px; + height: 60px; + width: 60px; + background: #eee; + border-radius: 100%; + opacity: 1; + filter: none; + transform: scale(0); + z-index: 9999; + pointer-events: none; } + .ngx-datatable.material .datatable-header .datatable-header-cell.dragging .resize-handle { + border-right: none; } + .ngx-datatable.material .datatable-header .resize-handle { + border-right: solid 1px #eee; } + .ngx-datatable.material .datatable-body .datatable-row-detail { + background: #f5f5f5; + padding: 10px; } + .ngx-datatable.material .datatable-body .datatable-group-header { + background: #f5f5f5; + border-bottom: solid 1px #d9d8d9; + border-top: solid 1px #d9d8d9; } + .ngx-datatable.material .datatable-body .datatable-body-row .datatable-body-cell { + text-align: left; + padding: 0.9rem 1.2rem; + vertical-align: top; + border-top: 0; + color: rgba(0, 0, 0, 0.87); + transition: width 0.3s ease; + font-size: 14px; + font-weight: 400; } + .ngx-datatable.material .datatable-body .datatable-body-row .datatable-body-group-cell { + text-align: left; + padding: 0.9rem 1.2rem; + vertical-align: top; + border-top: 0; + color: rgba(0, 0, 0, 0.87); + transition: width 0.3s ease; + font-size: 14px; + font-weight: 400; } + .ngx-datatable.material .datatable-body .progress-linear { + display: block; + position: relative; + width: 100%; + height: 5px; + padding: 0; + margin: 0; + position: absolute; } + .ngx-datatable.material .datatable-body .progress-linear .container { + display: block; + position: relative; + overflow: hidden; + width: 100%; + height: 5px; + -webkit-transform: translate(0, 0) scale(1, 1); + transform: translate(0, 0) scale(1, 1); + background-color: #aad1f9; } + .ngx-datatable.material .datatable-body .progress-linear .container .bar { + transition: all 0.2s linear; + -webkit-animation: query 0.8s infinite cubic-bezier(0.39, 0.575, 0.565, 1); + animation: query 0.8s infinite cubic-bezier(0.39, 0.575, 0.565, 1); + transition: -webkit-transform 0.2s linear; + transition: transform 0.2s linear; + background-color: #106cc8; + position: absolute; + left: 0; + top: 0; + bottom: 0; + width: 100%; + height: 5px; } + .ngx-datatable.material .datatable-footer { + border-top: 1px solid rgba(0, 0, 0, 0.12); + font-size: 12px; + font-weight: 400; + color: rgba(0, 0, 0, 0.54); } + .ngx-datatable.material .datatable-footer .page-count { + line-height: 50px; + height: 50px; + padding: 0 1.2rem; } + .ngx-datatable.material .datatable-footer .datatable-pager { + margin: 0 10px; } + .ngx-datatable.material .datatable-footer .datatable-pager li { + vertical-align: middle; } + .ngx-datatable.material .datatable-footer .datatable-pager li.disabled a { + color: rgba(0, 0, 0, 0.26) !important; + background-color: transparent !important; } + .ngx-datatable.material .datatable-footer .datatable-pager li.active a { + background-color: rgba(158, 158, 158, 0.2); + font-weight: bold; } + .ngx-datatable.material .datatable-footer .datatable-pager a { + height: 22px; + min-width: 24px; + line-height: 22px; + padding: 0 6px; + border-radius: 3px; + margin: 6px 3px; + text-align: center; + vertical-align: top; + color: rgba(0, 0, 0, 0.54); + text-decoration: none; + vertical-align: bottom; } + .ngx-datatable.material .datatable-footer .datatable-pager a:hover { + color: rgba(0, 0, 0, 0.75); + background-color: rgba(158, 158, 158, 0.2); } + .ngx-datatable.material .datatable-footer .datatable-pager .datatable-icon-left, + .ngx-datatable.material .datatable-footer .datatable-pager .datatable-icon-skip, + .ngx-datatable.material .datatable-footer .datatable-pager .datatable-icon-right, + .ngx-datatable.material .datatable-footer .datatable-pager .datatable-icon-prev { + font-size: 20px; + line-height: 20px; + padding: 0 3px; } + .ngx-datatable.material .datatable-summary-row .datatable-body-row { + background-color: #ddd; } + .ngx-datatable.material .datatable-summary-row .datatable-body-row:hover { + background-color: #ddd; } + .ngx-datatable.material .datatable-summary-row .datatable-body-row .datatable-body-cell { + font-weight: bold; } + +/** + * Checkboxes +**/ +.datatable-checkbox { + position: relative; + margin: 0; + cursor: pointer; + vertical-align: middle; + display: inline-block; + box-sizing: border-box; + padding: 0; } + .datatable-checkbox input[type='checkbox'] { + position: relative; + margin: 0 1rem 0 0; + cursor: pointer; + outline: none; } + .datatable-checkbox input[type='checkbox']:before { + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + content: ''; + position: absolute; + left: 0; + z-index: 1; + width: 1rem; + height: 1rem; + border: 2px solid #f2f2f2; } + .datatable-checkbox input[type='checkbox']:checked:before { + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + transform: rotate(-45deg); + height: 0.5rem; + border-color: #009688; + border-top-style: none; + border-right-style: none; } + .datatable-checkbox input[type='checkbox']:after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 1rem; + height: 1rem; + background: #fff; + cursor: pointer; } + +/** + * Progress bar animations + */ +@keyframes query { + 0% { + opacity: 1; + transform: translateX(35%) scale(0.3, 1); } + 100% { + opacity: 0; + transform: translateX(-50%) scale(0, 1); } } diff --git a/frontend/src/styles.css b/frontend/src/styles.css index 0c328759..7c5c87ee 100644 --- a/frontend/src/styles.css +++ b/frontend/src/styles.css @@ -1,4 +1,6 @@ /* You can add global styles to this file, and also import other style files */ +@import 'assets/css/material.css'; + @font-face { font-display: auto; From 06016cf4e103b747115f787b285caac2d5eda888 Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Wed, 20 Nov 2019 12:00:53 +0100 Subject: [PATCH 02/76] Back to DEV --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index 679c772d..13668bbb 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2.0.dev0 +0.3.0.dev0 From b018145827089f6cfeff9c8389f666708a887e4b Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Wed, 20 Nov 2019 12:01:49 +0100 Subject: [PATCH 03/76] Back to DEV --- docs/CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index b1ccdb38..c231c352 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,6 +1,13 @@ CHANGELOG ========= +0.3.0 (unreleased) +------------------ + +**🐛 Fixes** + +* + 0.2.0 (2019-11-20) ------------------ From b1928c28e54e10ab37f18a5ce9e7760223e05a54 Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Wed, 20 Nov 2019 12:06:18 +0100 Subject: [PATCH 04/76] Update README.md --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dfbe5e26..9100716f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # GeoNature-citizen -Portail d'inventaire participatif de la biodiversité à destination du grand public ([**Démo**](http://democitizen.geonature.fr)) +Portail d'inventaire participatif de la biodiversité à destination du grand public ([**Démo**](http://democitizen.geonature.fr)). ![logo](https://github.com/PnX-SI/GeoNature-citizen/raw/master/frontend/src/assets/logo.png) @@ -9,14 +9,19 @@ Portail d'inventaire participatif de la biodiversité à destination du grand pu **English:** GeoNature-citizen is a free and Open Source web solution for citizen science projects for biodiversity data collection. It is fully customizable. Your platform may be a single or a multiple program and be based on existing or adoc list of species. + The data collection is gamified to improve the user management using badges and scores. It can also be customized to accept new user to be created or not. + It is based on a fully open Source stack from PostgreSQL to Angular. **Francais:** GeoNature-citizen est une solution web gratuite et à code source ouvert pour les projets de science citoyenne destinés à la collecte de données sur la biodiversité. L'outil est entièrement personnalisable. Votre plateforme peut être constituée d'un programme unique ou de plusieurs programmes de collecte et être basée sur une liste d'espèces existante ou adoc. + La collecte de données est ludifiée pour améliorer la gestion des utilisateurs à l’aide de badges et de scores. Elle peut également être personnalisée pour accepter que de nouveaux utilisateurs soient créés ou non. +Documentation : https://geonature-citizen.readthedocs.io + ## Cas d'utilisation - https://obs.mercantour-parcnational.fr @@ -50,7 +55,7 @@ GeoNature-citizen s'appuie sur [TaxHub](https://github.com/PnX-SI/TaxHub) pour l Ce projet est initialement développé pour répondre aux besoins de collectes participatives dans le cadre des démarches d'atlas de biodiversité communal/territorial (ABC/ABT). La première version de ce projet est le fruit d'une démarche mutualisée entre différents projects : * Projet d'Atlas de biodiversité de territorie de [Valence Romans Agglo](http://www.valenceromansagglo.fr/fr/index.html), en partenariat avec la [LPO Auvergne-Rhône-Alpes](https://auvergne-rhone-alpes.lpo.fr/). -* Projets d'inventaires participatifs du [Parc national du Mercantour](http://www.mercantour-parcnational.fr/fr) et du [Syndicat Mixte pour la gestion et la protection de la Camargue Gardoise](https://www.camarguegardoise.com/), avec une réalisation par [NaturalSolutions](https://www.natural-solutions.eu/). +* Projets d'inventaires participatifs du [Parc national du Mercantour](http://www.mercantour-parcnational.fr/fr) et du [Syndicat Mixte pour la gestion et la protection de la Camargue Gardoise](https://www.camarguegardoise.com/), avec une réalisation par [Natural Solutions](https://www.natural-solutions.eu/). Il constitue l'une des briques du projet GeoNature, porté par les [Parcs nationaux de France](http://www.parcsnationaux.fr/fr) et bénéficie de l'appui technique du [Parc national des Ecrins](http://www.ecrins-parcnational.fr/). From c5f7945af279942aafce69dd600e8b20b1c79d97 Mon Sep 17 00:00:00 2001 From: Camille Monchicourt Date: Wed, 20 Nov 2019 12:45:18 +0100 Subject: [PATCH 05/76] DOC install - Un peu de mise en forme --- docs/index.rst | 50 ++++++++++++++++++++++++-------------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index 8552cf21..df4c03ab 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -1,5 +1,5 @@ ==================================== -Installation de Geonature Citizen +Installation de GeoNature-citizen ==================================== @@ -10,10 +10,10 @@ Application développée et installée sur un serveur Debian 9. Ce serveur doit aussi disposer de : -- sudo (apt-get install sudo) +- sudo (``apt-get install sudo``) - un utilisateur (``monuser`` dans cette documentation) appartenant au groupe ``sudo`` (pour pouvoir bénéficier des droits d'administrateur) -**1. Créer un utilisateur debian :** +**1. Créer un utilisateur Debian :** :: @@ -39,26 +39,26 @@ Ce serveur doit aussi disposer de : INSTALLATION DE TAXHUB ====================== -Pour plus de détails, lien officiel pour l’installation de taxhub : +Pour plus de détails, lien officiel pour l’installation de TaxHub : https://taxhub.readthedocs.io/fr/latest/ Configurer le serveur : -https://taxhub.readthedocs.io/fr/latest/serveur.html#installation-et-configuration-du-serveur : +https://taxhub.readthedocs.io/fr/latest/serveur.html#installation-et-configuration-du-serveur -Configurer postgresql : +Configurer PostgreSQL : https://taxhub.readthedocs.io/fr/latest/serveur.html#installation-et-configuration-de-posgresql Configuration et installation de l’application : https://taxhub.readthedocs.io/fr/latest/installation.html :notes: - - Bien vérifier de ne pas être en root : + - Bien vérifier de ne pas être en ``root`` : :: su - nom_utilisateur (geonatadmin) - - Pour avoir les caractéristiques de votre instance: + - Pour avoir les caractéristiques de votre instance : :: @@ -66,17 +66,15 @@ https://taxhub.readthedocs.io/fr/latest/installation.html uname -a -INSTALLATION DE GEONATURE CITIZEN +INSTALLATION DE GEONATURE-CITIZEN ================================= - -**Etape 1 : Configurer postgresql:** - +**Etape 1 : Configurer PostgreSQL :** :notes: - - Cette étape n'est nécessaire que si Taxhub n’est pas installé - - voir init_launch_db.rst: https://github.com/PnX-SI/GeoNature citizen/blob/taxhub_rest/docs/devs/init_launch_db.rst + - Cette étape n'est nécessaire que si TaxHub n’est pas installé + - voir init_launch_db.rst : https://github.com/PnX-SI/GeoNature-citizen/blob/master/docs/devs/init_launch_db.rst :: @@ -108,15 +106,15 @@ installer virtualenv : virtualenv -p /usr/bin/python3 venv source venv/bin/activate -**Etape 3 : Installation du backend et de la base des données:** +**Etape 3 : Installation du backend et de la base des données :** :notes: - init_launch_backend.rst - creation referentiel géo - - voir : https://github.com/PnX-SI/GeoNature-citizen//blob/taxhub_rest/docs/devs/init_launch_backend.rst + - voir : https://github.com/PnX-SI/GeoNature-citizen/blob/master/docs/devs/init_launch_db.rst -Cloner le dépôt github de Geonature Citizen +Cloner le dépôt Github de GeoNature-citizen :: @@ -126,7 +124,7 @@ Cloner le dépôt github de Geonature Citizen cd citizen/backend -Création du référentiel des géométries communales: +Création du référentiel des géométries communales : :: @@ -157,28 +155,28 @@ Pour restaurer en cas de besoin : psql -d geonature2db -h localhost -p 5432 -U geonatadmin -f /tmp/ref_geo_municipalities.sql psql -d geonature2db -h localhost -p 5432 -U geonatadmin -c "DROP TABLE ref_geo.temp_fr_municipalities;" -lancement du backend pour générer les schémas: +Lancement du backend pour générer les schémas : -en mode debug: +En mode debug : :: export FLASK_ENV=development; export FLASK_DEBUG=1; export FLASK_RUN_PORT=5002; export FLASK_APP=wsgi; python -m flask run --host=0.0.0.0 -enregistrement du module principal: +Enregistrement du module principal : :: insert into gnc_core.t_modules values (1, 'main', 'main', 'main', NULL, false, '2019-05-26 09:38:39.389933', '2019-05-26 09:38:39.389933'); -enregistrement d’un programme exemple +Enregistrement d’un programme exemple :: psql -d geonature2db -h localhost -p 5432 -U geonatadmin -c "INSERT INTO gnc_core.t_programs VALUES (1, 'Au 68', 'inventaire du 68', 'desc', NULL, NULL, 1, 1, 't', '0106000020E6100000010000000103000000010000000500000001000070947C154042CA401665A5454001000070EE7C15402235D7E667A54540010000D81C7D1540AFBA27365AA5454000000040C47C1540DD9BD74A58A5454001000070947C154042CA401665A54540', '2019-05-26 09:38:39.389933', '2019-05-26 09:38:39.389933');" -**Etape 4 : éditer le fichier de config :** +**Etape 4 : éditer le fichier de config :** :notes: @@ -221,7 +219,7 @@ enregistrement d’un programme exemple cp -v src/assets/badges_* ../media/ -éditer la conf: +Editer la conf : :: @@ -229,14 +227,14 @@ enregistrement d’un programme exemple # copier le template css alternatif cp src/custom/custom.css.template src/custom/custom.css -Lancer le front: +Lancer le front : :: npm run start -- --host=0.0.0.0 -ré génération des locales après modification de l’UI: +Ré-génération des locales après modification de l’UI : :: From 66e87076beb3135b4539f56cc12975a0eb6bfe0e Mon Sep 17 00:00:00 2001 From: HamoudaAmine Date: Mon, 25 Nov 2019 14:11:05 +0100 Subject: [PATCH 06/76] add observations user dashbord --- backend/gncitizen/core/badges/routes.py | 17 +- backend/gncitizen/core/observations/routes.py | 132 ++- frontend/src/app/app.component.css | 10 +- frontend/src/app/app.component.html | 14 +- .../user-dashboard.component.css | 45 +- .../user-dashboard.component.html | 56 +- .../user-dashboard.component.ts | 170 ++- .../user-dashboard/user.service.service.ts | 64 ++ frontend/src/app/home/home.component.css | 119 +- frontend/src/app/home/home.component.html | 39 +- frontend/src/app/home/home.component.ts | 6 + .../observations/form/form.component.html | 192 +--- .../observations/form/form.component.ts | 310 ++--- .../observations/form/formValidators.ts | 21 + .../observations/list/list.component.css | 45 +- .../observations/list/list.component.html | 21 +- .../modalflow/modalflow.component.html | 11 + .../modalflow/modalflow.component.ts | 25 +- .../modalflow/modalflow.service.ts | 12 +- .../steps/committed/committed.component.html | 21 +- .../steps/committed/committed.component.ts | 6 +- .../programs/observations/obs.component.css | 530 +-------- .../programs/observations/obs.component.html | 2 +- .../observations/observations.service.ts | 25 + frontend/src/assets/css/material.css | 12 +- frontend/src/styles.css | 1024 +++++++++++++---- 26 files changed, 1684 insertions(+), 1245 deletions(-) create mode 100644 frontend/src/app/auth/user-dashboard/user.service.service.ts create mode 100644 frontend/src/app/programs/observations/form/formValidators.ts create mode 100644 frontend/src/app/programs/observations/modalflow/modalflow.component.html create mode 100644 frontend/src/app/programs/observations/observations.service.ts diff --git a/backend/gncitizen/core/badges/routes.py b/backend/gncitizen/core/badges/routes.py index 5655cc8b..80340415 100644 --- a/backend/gncitizen/core/badges/routes.py +++ b/backend/gncitizen/core/badges/routes.py @@ -32,7 +32,6 @@ def get_rewards(id): } ) total_obs = total_obs + item.nb_obs - print('total_obs',total_obs) taxon_classe_query = ObservationModel.query.filter( ObservationModel.id_role == id).outerjoin( Taxref, Taxref.cd_nom == ObservationModel.cd_nom @@ -156,3 +155,19 @@ def monthdelta(d1, d2): else: break return delta + + +@routes.route("/stats", methods=["GET"]) +@json_resp +def get_stat(): + try: + stats = {} + stats["nb_obs"] = ObservationModel.query.count() + stats["nb_user"] = UserModel.query.count() + stats["nb_program"] = ProgramsModel.query.count() + stats["nb_espece"] = ObservationModel.query.distinct( + ObservationModel.cd_nom).count() + return (stats, 200) + except Exception as e: + current_app.logger.critical("[get_observations] Error: %s", str(e)) + return {"message": str(e)}, 400 diff --git a/backend/gncitizen/core/observations/routes.py b/backend/gncitizen/core/observations/routes.py index 2fb42e3e..f66aa694 100644 --- a/backend/gncitizen/core/observations/routes.py +++ b/backend/gncitizen/core/observations/routes.py @@ -14,7 +14,7 @@ from geojson import FeatureCollection from geoalchemy2.shape import from_shape from shapely.geometry import Point, asShape - +from sqlalchemy import desc from gncitizen.core.commons.models import MediaModel, ProgramsModel from gncitizen.core.ref_geo.models import LAreas from .models import ObservationMediaModel, ObservationModel @@ -42,6 +42,7 @@ "cd_nom", "id_observation", "observer", + "id_program", "municipality", "obs_txt", "count", @@ -103,7 +104,8 @@ def generate_observation_geojson(id_observation): TMedias.cd_ref == observation.ObservationModel.cd_nom ).all() if medias: - feature["properties"]["medias"] = [media.as_dict(True) for media in medias] + feature["properties"]["medias"] = [ + media.as_dict(True) for media in medias] else: taxhub_list_id = ( @@ -228,7 +230,8 @@ def post_observation(): """ try: request_datas = request.form - current_app.logger.debug("[post_observation] request data:", request_datas) + current_app.logger.debug( + "[post_observation] request data:", request_datas) datas2db = {} for field in request_datas: if hasattr(ObservationModel, field): @@ -257,9 +260,8 @@ def post_observation(): if newobs.obs_txt is None or len(newobs.obs_txt) == 0: newobs.obs_txt = "Anonyme" - newobs.uuid_sinp = uuid.uuid4() - newobs.municipality = get_municipality_id_from_wkb(newobs.geom) + newobs.uuid_sinp = uuid.uuid4() db.session.add(newobs) db.session.commit() current_app.logger.debug(newobs.as_dict()) @@ -275,11 +277,13 @@ def post_observation(): newobs.id_observation, ObservationMediaModel, ) - current_app.logger.debug("[post_observation] ObsTax UPLOAD FILE {}".format(file)) + current_app.logger.debug( + "[post_observation] ObsTax UPLOAD FILE {}".format(file)) features[0]["properties"]["images"] = file except Exception as e: - current_app.logger.warning("[post_observation] ObsTax ERROR ON FILE SAVING", str(e)) + current_app.logger.warning( + "[post_observation] ObsTax ERROR ON FILE SAVING", str(e)) # raise GeonatureApiError(e) return ({"message": "Nouvelle observation créée.", "features": features}, 200) @@ -313,7 +317,7 @@ def get_observations(): """ try: observations = ObservationModel.query.order_by( - ObservationModel.timestamp_create.desc() + desc(ObservationModel.timestamp_create) ).all() features = [] for observation in observations: @@ -374,7 +378,7 @@ def get_observations_from_list(id): # noqa: A002 current_app.logger.debug("R", t["cd_nom"]) datas = ( ObservationModel.query.filter_by(cd_nom=t["cd_nom"]) - .order_by(ObservationModel.timestamp_create.desc()) + .order_by(desc(ObservationModel.timestamp_create)) .all() ) for d in datas: @@ -383,13 +387,15 @@ def get_observations_from_list(id): # noqa: A002 for k in observation_dict: if k in obs_keys: feature["properties"][k] = observation_dict[k] - taxref = get_specie_from_cd_nom(feature["properties"]["cd_nom"]) + taxref = get_specie_from_cd_nom( + feature["properties"]["cd_nom"]) for k in taxref: feature["properties"][k] = taxref[k] features.append(feature) return FeatureCollection(features) except Exception as e: - current_app.logger.critical("[get_observations_from_list] Error: %s", str(e)) + current_app.logger.critical( + "[get_observations_from_list] Error: %s", str(e)) return {"message": str(e)}, 400 @@ -453,13 +459,15 @@ def get_program_observations( .join(UserModel, ObservationModel.id_role == UserModel.id_user, full=True) ) - observations = observations.order_by(ObservationModel.timestamp_create.desc()) + observations = observations.order_by( + desc(ObservationModel.timestamp_create)) # current_app.logger.debug(str(observations)) observations = observations.all() if current_app.config.get("API_TAXHUB") is not None: taxhub_list_id = ( - ProgramsModel.query.filter_by(id_program=program_id).one().taxonomy_list + ProgramsModel.query.filter_by( + id_program=program_id).one().taxonomy_list ) taxon_repository = mkTaxonRepository(taxhub_list_id) @@ -472,7 +480,8 @@ def get_program_observations( } # Observer - feature["properties"]["observer"] = {"username": observation.username} + feature["properties"]["observer"] = { + "username": observation.username} # Observer submitted media feature["properties"]["image"] = ( @@ -536,7 +545,8 @@ def get_program_observations( # trace = traceback.format_exc() # return("
" + trace + "
"), 500 raise e - current_app.logger.critical("[get_program_observations] Error: %s", str(e)) + current_app.logger.critical( + "[get_program_observations] Error: %s", str(e)) return {"message": str(e)}, 400 @@ -581,25 +591,27 @@ def get_all_observations() -> Union[FeatureCollection, Tuple[Dict, int]]: .join(UserModel, ObservationModel.id_role == UserModel.id_user, full=True) ) - observations = observations.order_by(ObservationModel.timestamp_create.desc()) + observations = observations.order_by( + desc(ObservationModel.timestamp_create)) # current_app.logger.debug(str(observations)) observations = observations.all() # loop to retrieve taxonomic data from all programs if current_app.config.get("API_TAXHUB") is not None: - programs = ProgramsModel.query.all() - taxon_repository = [] - for program in programs: - taxhub_list_id = ( - ProgramsModel.query.filter_by(id_program=program.id_program).one().taxonomy_list - ) - taxon_data = mkTaxonRepository(taxhub_list_id) - try: - for taxon in taxon_data: - if taxon not in taxon_repository: - taxon_repository.append(taxon) - except Exception as e: - current_app.logger.critical(str(e)) + programs = ProgramsModel.query.all() + taxon_repository = [] + for program in programs: + taxhub_list_id = ( + ProgramsModel.query.filter_by( + id_program=program.id_program).one().taxonomy_list + ) + taxon_data = mkTaxonRepository(taxhub_list_id) + try: + for taxon in taxon_data: + if taxon not in taxon_repository: + taxon_repository.append(taxon) + except Exception as e: + current_app.logger.critical(str(e)) features = [] for observation in observations: @@ -610,7 +622,8 @@ def get_all_observations() -> Union[FeatureCollection, Tuple[Dict, int]]: } # Observer - feature["properties"]["observer"] = {"username": observation.username} + feature["properties"]["observer"] = { + "username": observation.username} # Observer submitted media feature["properties"]["image"] = ( @@ -673,7 +686,8 @@ def get_all_observations() -> Union[FeatureCollection, Tuple[Dict, int]]: # trace = traceback.format_exc() # return("
" + trace + "
"), 500 raise e - current_app.logger.critical("[get_program_observations] Error: %s", str(e)) + current_app.logger.critical( + "[get_program_observations] Error: %s", str(e)) return {"message": str(e)}, 400 @@ -701,20 +715,22 @@ def get_rewards(id): @routes.route("/observations/users/", methods=["GET"]) @json_resp -def get_observations_by_user_id(user_id) : +def get_observations_by_user_id(user_id): try: observations = ( db.session.query( ObservationModel, + ProgramsModel, UserModel.username, MediaModel.filename.label("image"), LAreas.area_name, LAreas.area_code, ) - .filter(ObservationModel.id_role == user_id, ProgramsModel.is_active) + .filter(ObservationModel.id_role == user_id) .join(LAreas, LAreas.id_area == ObservationModel.municipality, isouter=True) .join( ProgramsModel, + ProgramsModel.id_program == ObservationModel.id_program, isouter=True, ) .join( @@ -730,9 +746,11 @@ def get_observations_by_user_id(user_id) : .join(UserModel, ObservationModel.id_role == UserModel.id_user, full=True) ) - observations = observations.order_by(ObservationModel.timestamp_create.desc()) + observations = observations.order_by( + desc(ObservationModel.timestamp_create)) # current_app.logger.debug(str(observations)) observations = observations.all() + if current_app.config.get("API_TAXHUB") is not None: taxhub_list_id = ( ProgramsModel.query.one().taxonomy_list @@ -747,7 +765,8 @@ def get_observations_by_user_id(user_id) : } # Observer - feature["properties"]["observer"] = {"username": observation.username} + feature["properties"]["observer"] = { + "username": observation.username} # Observer submitted media feature["properties"]["image"] = ( "/".join( @@ -765,7 +784,11 @@ def get_observations_by_user_id(user_id) : for k in observation_dict: if k in obs_keys and k != "municipality": feature["properties"][k] = observation_dict[k] - + # Program + program_dict = observation.ProgramsModel.as_dict(True) + for program in program_dict: + if program == "title": + feature["properties"]["program_title"] = program_dict[program] # TaxRef if current_app.config.get("API_TAXHUB") is None: taxref = Taxref.query.filter( @@ -799,5 +822,38 @@ def get_observations_by_user_id(user_id) : except Exception as e: raise e - current_app.logger.critical("[get_program_observations] Error: %s", str(e)) - return {"message": str(e)}, 400 \ No newline at end of file + current_app.logger.critical( + "[get_program_observations] Error: %s", str(e)) + return {"message": str(e)}, 400 + + +@routes.route("/observations", methods=["PATCH"]) +@json_resp +@jwt_optional +def update_observation(): + try: + update_data = request.form + update_obs = {} + for prop in ["cd_nom", "count", "comment", "date"]: + update_obs[prop] = update_data[prop] + try: + _coordinates = json.loads(update_data["geometry"]) + _point = Point(_coordinates["x"], _coordinates["y"]) + _shape = asShape(_point) + update_obs["geom"] = from_shape(Point(_shape), srid=4326) + update_obs["municipality"] = get_municipality_id_from_wkb( + update_obs['geom']) + except Exception as e: + current_app.logger.warning("[post_observation] coords ", e) + raise GeonatureApiError(e) + + ObservationModel.query.filter_by(id_observation=update_data.get( + 'id_observation')).update(update_obs, synchronize_session='fetch') + db.session.commit() + + return ('observation updated successfully'), 200 + except Exception as e: + current_app.logger.critical("[post_observation] Error: %s", str(e)) + return {"message": str(e)}, 400 + + diff --git a/frontend/src/app/app.component.css b/frontend/src/app/app.component.css index ff45e6be..5e667883 100644 --- a/frontend/src/app/app.component.css +++ b/frontend/src/app/app.component.css @@ -1,9 +1,7 @@ .router-app { - margin-top: var(--router-outlet-margin-top); + height: 100%; } -@media screen and (max-width: 576px) { - .router-app { - margin-top: 65px !important; - } -} + + + diff --git a/frontend/src/app/app.component.html b/frontend/src/app/app.component.html index 29fa550b..93949b86 100644 --- a/frontend/src/app/app.component.html +++ b/frontend/src/app/app.component.html @@ -1,9 +1,9 @@ -
- - -
-
+ +
+
+ + +
+
- - diff --git a/frontend/src/app/auth/user-dashboard/user-dashboard.component.css b/frontend/src/app/auth/user-dashboard/user-dashboard.component.css index 7d10eb51..76b729e0 100644 --- a/frontend/src/app/auth/user-dashboard/user-dashboard.component.css +++ b/frontend/src/app/auth/user-dashboard/user-dashboard.component.css @@ -72,14 +72,13 @@ margin-top: 30px; } -#badges h3 { +section h3 { text-align: center; font-weight: normal; text-transform: uppercase; } #badges .inner-row { - padding: 8px 10px; background: #f3f3f3; border: solid 3px #fff; @@ -91,8 +90,16 @@ height: 70px; } -/* DONNEES PERSO */ +.main-photo { + margin-left: -14px; + object-fit: cover; + min-width: 140px !important; + max-width: 140px !important; + height: 100px; + +} +/* DONNEES PERSO */ .personal-data { margin: 20px 0px; display: flex; @@ -106,12 +113,15 @@ .personal-data button { font-size: 16px; - background: var(--primary); padding: 10px 30px; margin: 10px 25px; max-height: 115px; } +.personal-data button.export { + background: var(--primary); +} + .personal-data button i { margin-right: 15px; } @@ -120,7 +130,7 @@ padding: 0px 10px; } -form > button { +form>button { background: var(--primary); padding: 10px 30px; margin: 0 auto; @@ -129,6 +139,11 @@ form > button { display: block; } +app-modalflow { + position: relative; + display: contents; +} + /* MODIF DATA */ .modal-header { @@ -151,6 +166,25 @@ form > button { margin: 0; } +.title { + padding-top: 50px; + padding-bottom: 20px; + text-align: center; + text-transform: uppercase; + font-size: 22px; + font-weight: 600; + color: #626262 +} + +.title::before, +.title::after { + display: inline-block; + content: ""; + border-top: 1px solid #b1b0b0; + width: 6rem; + margin: 0 1rem; + transform: translateY(-8px); +} /* @media screen and (min-width: 992px) { #badges .row div:nth-child(2):before { content: " "; @@ -183,6 +217,7 @@ form > button { height: 2px; width: 60%; } + #badges .row div:nth-child(2):after { content: " "; background-color: #333; diff --git a/frontend/src/app/auth/user-dashboard/user-dashboard.component.html b/frontend/src/app/auth/user-dashboard/user-dashboard.component.html index 9720462b..7bd25e12 100644 --- a/frontend/src/app/auth/user-dashboard/user-dashboard.component.html +++ b/frontend/src/app/auth/user-dashboard/user-dashboard.component.html @@ -3,18 +3,45 @@
-
+
{ +stats?.platform_attendance, plural, =0 { aucune observation} =1 {une observation} other {{{stats?.platform_attendance}} observations} } -

{{ username }}

+

{{ username }}

-
-

Vos badges

+
+

Mes observations

+ + + + + + + + + {{row.taxref.nom_complet}} + + + + + + + + + + + + + + +
+
+

Mes badges

-
Récompenses géneral
+
Récompenses géneral
@@ -34,16 +61,19 @@
Récompenses d'identification d'espèces
[alt]="r_badge.type + r_badge.name" [ngbTooltip]="r_badge.reward_label +' '+ r_badge.name" />
-
+
-
- - + -
+
@@ -141,3 +171,9 @@

Mettre à jour vos données personnelles

+ +
+
+
+
+
diff --git a/frontend/src/app/auth/user-dashboard/user-dashboard.component.ts b/frontend/src/app/auth/user-dashboard/user-dashboard.component.ts index 20c567b7..11b7bacb 100644 --- a/frontend/src/app/auth/user-dashboard/user-dashboard.component.ts +++ b/frontend/src/app/auth/user-dashboard/user-dashboard.component.ts @@ -1,15 +1,15 @@ import { Component, OnInit } from "@angular/core"; import { Router } from "@angular/router"; -import { HttpClient, HttpHeaders } from "@angular/common/http"; -import { Observable, Subject, throwError } from "rxjs"; +import { throwError, forkJoin } from "rxjs"; import { tap, catchError } from "rxjs/operators"; - import { NgbModal, NgbModalRef } from "@ng-bootstrap/ng-bootstrap"; - import { AppConfig } from "../../../conf/app.config"; import { AuthService } from "./../auth.service"; - +import { UseService } from "./user.service.service"; import { saveAs } from "file-saver"; +import * as _ from "lodash"; +import { Point } from "leaflet"; +import { ModalFlowService } from "src/app/programs/observations/modalflow/modalflow.service"; @Component({ selector: "app-user-dashboard", @@ -17,9 +17,6 @@ import { saveAs } from "file-saver"; styleUrls: ["./user-dashboard.component.css"] }) export class UserDashboardComponent implements OnInit { - private headers: HttpHeaders = new HttpHeaders({ - "Content-Type": "application/json" - }); readonly AppConfig = AppConfig; modalRef: NgbModalRef; username: string = "not defined"; @@ -31,32 +28,35 @@ export class UserDashboardComponent implements OnInit { main_badges: any = []; programs_badges: any = []; recognition_badges: any = []; + observations: any; + rows: any = []; + obsToExport: any = []; constructor( private auth: AuthService, - private http: HttpClient, + private userService: UseService, private router: Router, - private modalService: NgbModal + private modalService: NgbModal, + private flowService: ModalFlowService ) {} ngOnInit(): void { const access_token = localStorage.getItem("access_token"); - console.debug("dashboard", access_token); if (access_token) { this.auth .ensureAuthorized() .pipe( tap(user => { - console.debug("user:", user); if (user && user["features"] && user["features"]["id_role"]) { this.isLoggedIn = true; this.username = user["features"]["username"]; this.stats = user["features"]["stats"]; this.role_id = user["features"]["id_role"]; // FIXME: source backend conf - if (AppConfig["REWARDS"]) { - this.getBadgeCategories(); - } + this.getData(); + this.flowService.getModalCloseSatus().subscribe(status => { + if (status === "updateObs") this.getData(); + }); } }), catchError(err => throwError(err)) @@ -65,7 +65,84 @@ export class UserDashboardComponent implements OnInit { } } - deletePersonalData() { + getData() { + let data = []; + this.rows = []; + this.obsToExport = []; + this.observations = null; + this.badges = null; + this.main_badges = []; + this.programs_badges = []; + this.recognition_badges =[]; + let badgeCategories = this.userService.getBadgeCategories(this.role_id); + let userObservations = this.userService.getObservationsByUserId( + this.role_id + ); + if (AppConfig["REWARDS"]) { + data.push(badgeCategories); + } + data.push(userObservations); + + forkJoin(data).subscribe((data: any) => { + if (data.length > 1) { + this.badges = data[0]; + localStorage.setItem("badges", JSON.stringify(this.badges)); + this.badges.forEach(badge => { + if (badge.type == "all_attendance" || badge.type == "seniority") + this.main_badges.push(badge); + if (badge.type == "program_attendance") + this.programs_badges.push(badge); + if (badge.type == "recognition") this.recognition_badges.push(badge); + }); + this.observations = data[1].features; + this.observations.forEach(obs => { + let coords: Point = new Point( + obs.geometry.coordinates[0], + obs.geometry.coordinates[1] + ); + this.obsToExport.push({ + id_observation: obs.properties.id_observation, + date: obs.properties.date, + program: obs.properties.program_title, + count: obs.properties.count, + comment: obs.properties.comment, + municipality: obs.properties.municipality.name, + taxref: obs.properties.taxref.nom_complet, + }) + this.rows.push({ + media_url: + obs.properties.images && !!obs.properties.images.length + ? AppConfig.API_ENDPOINT + "/media/" + obs.properties.images[0] + : obs.properties.image + ? obs.properties.image + : obs.properties.medias && !!obs.properties.medias.length + ? AppConfig.API_TAXHUB + + "/tmedias/thumbnail/" + + obs.properties.medias[0].id_media + + "?h=80&v=80" + : "assets/default_image.png", + taxref: obs.properties.taxref, + date: obs.properties.date, + municipality: obs.properties.municipality.name, + program_id: obs.properties.id_program, + program: obs.properties.program_title, + count: obs.properties.count, + comment: obs.properties.comment, + id_observation: obs.properties.id_observation, + taxon: { + media: obs.properties.media, + taxref: obs.properties.taxref + }, + coords: coords + }); + }); + } else { + this.observations = data[0].features; + } + }); + } + + onDeletePersonalData() { const access_token = localStorage.getItem("access_token"); this.auth .selfDeleteAccount(access_token) @@ -82,13 +159,8 @@ export class UserDashboardComponent implements OnInit { .catch(err => console.log("err", err)); } - getPersonalInfo(): Observable { - let url = `${AppConfig.API_ENDPOINT}/user/info`; - return this.http.get(url, { headers: this.headers }); - } - - exportPersonalData() { - this.getPersonalInfo().subscribe(data => { + onExportPersonalData() { + this.userService.getPersonalInfo().subscribe(data => { let blob = new Blob([JSON.stringify(data)], { type: "text/plain;charset=utf-8" }); @@ -98,8 +170,14 @@ export class UserDashboardComponent implements OnInit { }); } - editInfos(content): void { - this.getPersonalInfo().subscribe(data => { + onExportObservations() { + let csv_str = this.userService.ConvertToCSV(this.obsToExport, ['id_observation','taxref','date','program', 'count', 'comment', 'municipality']) + let blob = new Blob([csv_str], {type: 'text/csv' }) + saveAs(blob, "mydata.csv"); + } + + onEditInfos(content): void { + this.userService.getPersonalInfo().subscribe(data => { this.personalInfo = data; this.modalRef = this.modalService.open(content, { size: "lg", @@ -108,44 +186,14 @@ export class UserDashboardComponent implements OnInit { }); } - onUpdatePersonalData(): void | Error { - this.http - .post(`${AppConfig.API_ENDPOINT}/user/info`, this.personalInfo, { - headers: this.headers - }) - .pipe( - catchError(error => { - //window.alert(error); - return throwError(error); - }) - ) - .subscribe(() => { - this.modalRef.close(); - }); + onUpdatePersonalData() { + this.userService.updatePersonalData(this.personalInfo).subscribe(() => { + this.modalRef.close(); + }); } - getBadgeCategories() { - this.http - .get(`${AppConfig.API_ENDPOINT}/rewards/${this.role_id}`) - .subscribe( - rewards => { - this.badges = rewards; - localStorage.setItem("badges", JSON.stringify(this.badges)); - this.badges.forEach(badge => { - if (badge.type == "all_attendance" || badge.type == "seniority") - this.main_badges.push(badge); - if (badge.type == "program_attendance") - this.programs_badges.push(badge); - if (badge.type == "recognition") - this.recognition_badges.push(badge); - }); - }, - err => { - throwError(err); - } - ); - } ngOnDestroy(): void { - if (this.modalRef) this.modalRef.close() + if (this.modalRef) this.modalRef.close(); + this.flowService.setModalCloseSatus(null) } } diff --git a/frontend/src/app/auth/user-dashboard/user.service.service.ts b/frontend/src/app/auth/user-dashboard/user.service.service.ts new file mode 100644 index 00000000..d36411b9 --- /dev/null +++ b/frontend/src/app/auth/user-dashboard/user.service.service.ts @@ -0,0 +1,64 @@ +import { Injectable } from "@angular/core"; +import { HttpClient, HttpHeaders } from "@angular/common/http"; +import { AppConfig } from "../../../conf/app.config"; +import { catchError } from "rxjs/operators"; +import { throwError } from "rxjs"; + +@Injectable({ + providedIn: "root" +}) +export class UseService { + private headers: HttpHeaders = new HttpHeaders({ + "Content-Type": "application/json" + }); + + constructor(private http: HttpClient) {} + + getPersonalInfo() { + let url = `${AppConfig.API_ENDPOINT}/user/info`; + return this.http.get(url, { headers: this.headers }); + } + + getBadgeCategories(userId: number) { + return this.http.get(`${AppConfig.API_ENDPOINT}/rewards/${userId}`); + } + + updatePersonalData(personalInfo): any { + this.http + .post(`${AppConfig.API_ENDPOINT}/user/info`, personalInfo, { + headers: this.headers + }) + .pipe( + catchError(error => { + return throwError(error); + }) + ); + } + + getObservationsByUserId(userId: number) { + return this.http.get( + `${AppConfig.API_ENDPOINT}/observations/users/${userId}` + ); + } + + ConvertToCSV(objArray, headerList) { + let array = typeof objArray != "object" ? JSON.parse(objArray) : objArray; + let str = ""; + let row = ""; + for (let index in headerList) { + row += headerList[index] + ";"; + } + row = row.slice(0, -1); + str += row + "\r\n"; + for (let i = 0; i < array.length; i++) { + let line ="" ; + for (let index in headerList) { + let head = headerList[index]; + line += ";" + array[i][head]; + } + line = line.slice(1); + str += line + "\r\n"; + } + return str; + } +} diff --git a/frontend/src/app/home/home.component.css b/frontend/src/app/home/home.component.css index f7f7e67e..70687666 100644 --- a/frontend/src/app/home/home.component.css +++ b/frontend/src/app/home/home.component.css @@ -2,7 +2,6 @@ section { width: 100%; min-height: 70vh; position: relative; - margin-bottom: 20px; } .section:before { @@ -32,7 +31,8 @@ section { background: url(../../assets/background.jpg) no-repeat; background-size: cover; position: relative; - height: calc(100vh - 113px); + height: calc(100vh - var(--router-outlet-margin-top)); + margin-top: var(--router-outlet-margin-top); } #welcome:before { @@ -643,3 +643,118 @@ app-observations { margin-bottom: 15px; } } + + +.panel-container { + padding-top: 20px; +} +.panel { + margin: 20px 0; + background-color: #fff; + border: 1px solid transparent; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.no-padding { + padding: 0; + margin: 0; +} + +.panel-widget { + padding: 10px 0; + position: relative; + box-shadow: none; + border-radius: 0; + background: none; + text-align: center; + color: #333; +} + +.panel-widget .text-muted { + margin-top: -6px; + text-transform: uppercase; + font-weight: bold; + font-size: 0.8em; +} + +.panel-widget .large { + color: #373b45; + font-size: 3em; +} + +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + font-size: 20px; + font-weight: 300; + letter-spacing: 0.025em; + height: 60px; + line-height: 38px; +} + +.title-spaced { + font-size: 20px; + font-weight: 300; + letter-spacing: 0.025em; + height: 60px; + line-height: 38px; +} +.falsy-btn { + padding-right: 5px; + padding-left: 5px; + border-color: black; + border-width: 1px; + border-style: solid; +} + +.panel-body { + padding: 15px; +} + +.panel-default .panel-heading { + background: #fff; + border-bottom: 1px solid #e9ecf2; + color: #444444; +} + +.panel-default > .panel-heading { + color: #333; + border-color: #ddd; +} + +.text-muted { + color: #c5c7cc; +} + +.fa-xl { + font-size: 3em; +} + +.large { + font-size: 2em; +} + +.color-blue { + color: #30a5ff; +} + +.color-orange { + color: #ffb53e; +} + +.color-teal { + color: #1ebfae; +} + +.color-gray { + color: #6e7579; +} + +.float-right { + float: right; +} + +.general-stat{ + background-color: white; +} diff --git a/frontend/src/app/home/home.component.html b/frontend/src/app/home/home.component.html index 5db83d15..3ac9ff2b 100644 --- a/frontend/src/app/home/home.component.html +++ b/frontend/src/app/home/home.component.html @@ -8,6 +8,42 @@

+ +
+
+
+
+
{{stats.nb_obs}}
+
Observations
+
+
+
+
+
+
+
{{stats.nb_espece}}
+
Espèces
+
+
+
+
+
+
+
{{stats.nb_user}}
+
Observateurs
+
+
+
+
+
+
+
{{stats.nb_program}}
+
Programmes
+
+
+
+
+
@@ -25,19 +61,16 @@

: 'url(' + 'assets/prog1.jpg' + ')', 'background-size': 'cover' }">
-
{{ p.title }} 

-

{{ AppConfig.platform_participate[localeId] }}

- diff --git a/frontend/src/app/home/home.component.ts b/frontend/src/app/home/home.component.ts index 4af138ea..c14a09f9 100644 --- a/frontend/src/app/home/home.component.ts +++ b/frontend/src/app/home/home.component.ts @@ -6,6 +6,7 @@ import { Meta, SafeHtml, DomSanitizer } from "@angular/platform-browser"; import { AppConfig } from "../../conf/app.config"; import { ProgramsResolve } from "../programs/programs-resolve.service"; import { Program } from "../programs/programs.models"; +import { ObservationsService } from "../programs/observations/observations.service"; @Component({ selector: "app-home", @@ -21,11 +22,13 @@ export class HomeComponent implements OnInit, AfterViewChecked { platform_intro: SafeHtml; AppConfig = AppConfig; htmlContent: SafeHtml; + stats: Object; constructor( @Inject(LOCALE_ID) readonly localeId: string, private route: ActivatedRoute, private meta: Meta, + private observationsService: ObservationsService, protected domSanitizer: DomSanitizer, protected http: HttpClient ) {} @@ -33,6 +36,9 @@ export class HomeComponent implements OnInit, AfterViewChecked { ngOnInit() { this.route.data.subscribe((data: { programs: Program[] }) => { this.programs = data.programs; + this.observationsService.getStat().subscribe( + (stats) => this.stats=stats + ) }); this.route.fragment.subscribe(fragment => { this.fragment = fragment; diff --git a/frontend/src/app/programs/observations/form/form.component.html b/frontend/src/app/programs/observations/form/form.component.html index 2a60d689..0261eefa 100644 --- a/frontend/src/app/programs/observations/form/form.component.html +++ b/frontend/src/app/programs/observations/form/form.component.html @@ -1,92 +1,47 @@ -
- - +
- +
-
= taxonSelectInputThreshold && taxaCount < taxonAutocompleteInputThreshold - " - class="d-inline-flex toolbar" - > + " class="d-inline-flex toolbar">
- -
-
+
+
- + " [alt]="!!s.nom_francais ? s.nom_francais : s.taxref.nom_vern" (click)="onTaxonSelected(s)" /> {{ !!s.nom_francais ? s.nom_francais : s.taxref.nom_vern }}
- -
+
- +
@@ -95,64 +50,30 @@
Informations complémentaires
- +
- +
- +
- - + +
-
@@ -166,58 +87,31 @@
Où avez-vous observé cette espèce ?
-
+
- +

- Cliquez sur la carte pour renseigner le lieu précis de votre - observation + Cliquez sur la carte pour renseigner le lieu précis de votre + observation

-
- - {{ AppConfig.program_allow_email_contact[localeId] }} -
-
- - -
+
+ + {{ AppConfig.program_allow_email_contact[localeId] }} +
+
+ + +
-

+ (obsForm.touched || obsForm.dirty) + "> Champs manquants

diff --git a/frontend/src/app/programs/observations/form/form.component.ts b/frontend/src/app/programs/observations/form/form.component.ts index cea3bfa3..318032e9 100644 --- a/frontend/src/app/programs/observations/form/form.component.ts +++ b/frontend/src/app/programs/observations/form/form.component.ts @@ -1,13 +1,7 @@ +import { FormGroup, FormBuilder, Validators } from "@angular/forms"; +import { geometryValidator, ngbDateMaxIsToday } from "./formValidators"; import { MAP_CONFIG } from "./../../../../conf/map.config"; import * as L from "leaflet"; -import { - AbstractControl, - FormControl, - FormGroup, - ValidatorFn, - Validators -} from "@angular/forms"; -import { ActivatedRoute } from "@angular/router"; import { AfterViewInit, Component, @@ -31,19 +25,19 @@ import { } from "rxjs/operators"; import { FeatureCollection } from "geojson"; import { GncProgramsService } from "../../../api/gnc-programs.service"; -import { HttpClient, HttpHeaders } from "@angular/common/http"; import { LeafletMouseEvent } from "leaflet"; -import { NgbDate } from "@ng-bootstrap/ng-bootstrap"; +import { NgbDate, NgbDateParserFormatter } from "@ng-bootstrap/ng-bootstrap"; import { Observable } from "rxjs"; import { ObservationFeature, PostObservationResponse, - TaxonomyList, - TaxonomyListItem + TaxonomyList } from "../observation.model"; import "leaflet-gesture-handling"; import "leaflet-fullscreen/dist/Leaflet.fullscreen"; import { ToastrService } from "ngx-toastr"; +import { ModalFlowService } from "../modalflow/modalflow.service"; +import { ObservationsService } from "../observations.service"; declare let $: any; @@ -71,25 +65,6 @@ export const obsFormMarkerIcon = L.icon({ iconAnchor: [16, 42] }); -export function ngbDateMaxIsToday(): ValidatorFn { - return (control: AbstractControl): { [key: string]: any } | null => { - const today = new Date(); - const selected = NgbDate.from(control.value); - if (!selected) return { "Null date": true }; - const date_impl = new Date(selected.year, selected.month - 1, selected.day); - return date_impl > today ? { "Parsed a date in the future": true } : null; - }; -} - -export function geometryValidator(): ValidatorFn { - return (control: AbstractControl): { [key: string]: any } | null => { - const validGeometry = /Point\(\d{1,3}(|\.\d{1,7}),(|\s)\d{1,3}(|\.\d{1,7})\)$/.test( - control.value - ); - return validGeometry ? null : { geometry: { value: control.value } }; - }; -} - @Component({ selector: "app-obs-form", templateUrl: "./form.component.html", @@ -98,37 +73,15 @@ export function geometryValidator(): ValidatorFn { }) export class ObsFormComponent implements AfterViewInit { private readonly URL = AppConfig.API_ENDPOINT; - @Input("coords") coords: L.Point; + @Input("data") data; @Output("newObservation") newObservation: EventEmitter< ObservationFeature > = new EventEmitter(); @ViewChild("photo", { static: true }) photo: ElementRef; today = new Date(); - program_id: any; - obsForm = new FormGroup( - { - cd_nom: new FormControl("", Validators.required), - count: new FormControl("1", Validators.required), - comment: new FormControl(""), - date: new FormControl( - { - year: this.today.getFullYear(), - month: this.today.getMonth() + 1, - day: this.today.getDate() - }, - [Validators.required, ngbDateMaxIsToday()] - ), - photo: new FormControl(""), - geometry: new FormControl(this.coords ? this.coords : "", [ - Validators.required, - geometryValidator() - ]), - id_program: new FormControl(this.program_id), - email: new FormControl({value:'',disabled:true}), - agreeContactRGPD: new FormControl(""), - } - //{ updateOn: "submit" } - ); + program_id: number; + coords: L.Point; + modalflow; taxonSelectInputThreshold = taxonSelectInputThreshold; taxonAutocompleteInputThreshold = taxonAutocompleteInputThreshold; autocomplete = "isOff"; @@ -144,70 +97,29 @@ export class ObsFormComponent implements AfterViewInit { hasZoomAlert: boolean; zoomAlertTimeout: any; AppConfig = AppConfig; - - disabledDates = (date: NgbDate, current: { month: number }) => { - const date_impl = new Date(date.year, date.month - 1, date.day); - return date_impl > this.today; - }; - - inputAutoCompleteSearch = (text$: Observable) => - text$.pipe( - debounceTime(200), - distinctUntilChanged(), - map(term => - term === "" // term.length < n - ? [] - : this.species - .filter( - v => new RegExp(term, "gi").test(v["name"]) - // v => v["name"].toLowerCase().indexOf(term.toLowerCase()) > -1 - ) - .slice(0, taxonAutocompleteMaxResults) - ) - ); - - inputAutoCompleteFormatter = (x: { name: string }) => x.name; - - inputAutoCompleteSetup = () => { - for (let taxon in this.taxa) { - for (let field of taxonAutocompleteFields) { - if (this.taxa[taxon]["taxref"][field]) { - this.species.push({ - name: - field === "cd_nom" - ? `${this.taxa[taxon]["taxref"]["cd_nom"]} - ${ - this.taxa[taxon]["taxref"]["nom_complet"] - }` - : this.taxa[taxon]["taxref"][field], - cd_nom: this.taxa[taxon]["taxref"]["cd_nom"], - icon: - this.taxa[taxon]["medias"].length >= 1 - ? // ? this.taxa[taxon]["medias"][0]["url"] - AppConfig.API_TAXHUB + - "/tmedias/thumbnail/" + - this.taxa[taxon]["medias"][0]["id_media"] + - "?h=20" - : "assets/default_image.png" - }); - } - } - } - this.autocomplete = "isOn"; - }; + obsForm: FormGroup; constructor( @Inject(LOCALE_ID) readonly localeId: string, - private http: HttpClient, + private observationsService: ObservationsService, + private formBuilder: FormBuilder, + private dateParser: NgbDateParserFormatter, private programService: GncProgramsService, - private route: ActivatedRoute, + private flowService: ModalFlowService, private toastr: ToastrService, private auth: AuthService ) {} + ngOnInit(): void { + this.program_id = this.data.program_id; + this.coords = this.data.coords; + this.intiForm(); + if (this.data.updateData) this.patchForm(this.data.updateData); + } + ngAfterViewInit() { - this.route.params.subscribe(params => (this.program_id = params["id"])); - this.http - .get(`${AppConfig.API_ENDPOINT}/programs/${this.program_id}`) + this.programService + .getProgram(this.program_id) .subscribe((result: FeatureCollection) => { this.program = result; this.taxonomyListID = this.program.features[0].properties.taxonomy_list; @@ -245,7 +157,7 @@ export class ObsFormComponent implements AfterViewInit { L.control .locate({ - icon: 'fa fa-compass', + icon: "fa fa-compass", position: map_conf.GEOLOCATION_CONTROL_POSITION, getLocationBounds: locationEvent => locationEvent.bounds.extend(L.LatLngBounds), @@ -339,62 +251,135 @@ export class ObsFormComponent implements AfterViewInit { }); } - onTaxonSelected(taxon: TaxonomyListItem): void { - this.selectedTaxon = taxon; - this.obsForm.controls["cd_nom"].patchValue(taxon.taxref["cd_nom"]); + intiForm() { + this.obsForm = this.formBuilder.group( + { + cd_nom: ["", Validators.required], + count: [1, Validators.required], + comment: [""], + date: [ + { + year: this.today.getFullYear(), + month: this.today.getMonth() + 1, + day: this.today.getDate() + }, + [Validators.required, ngbDateMaxIsToday()] + ], + photo: [""], + geometry: [ + this.data.coords ? this.coords : "", + [Validators.required, geometryValidator()] + ], + id_program: [this.program_id], + email: [{ value: "", disabled: true }], + agreeContactRGPD: [""] + } + //{ updateOn: "submit" } + ); } - onChangeContactCheckBoxRGPD(): void{ - this.obsForm.controls["agreeContactRGPD"].value ? this.obsForm.controls["email"].enable() : this.obsForm.controls["email"].disable(); - this.obsForm.controls["email"].setValue(''); - }; + patchForm(updateData) { + this.onTaxonSelected(updateData.taxon); + this.obsForm.patchValue({ + count: updateData.count, + comment: updateData.comment, + date: this.dateParser.parse(updateData.date), + geometry: this.data.coords ? this.coords : "", + id_program: updateData.program_id + }); - isSelectedTaxon(taxon: TaxonomyListItem): boolean { - return this.selectedTaxon === taxon; } - onFormSubmit(): void { - let obs: ObservationFeature; - this.postObservation().subscribe( - (data: PostObservationResponse) => { - obs = data.features[0]; - }, - err => console.log(err), - //alert(err), - () => { - this.newObservation.emit(obs); + inputAutoCompleteSetup = () => { + for (let taxon in this.taxa) { + for (let field of taxonAutocompleteFields) { + if (this.taxa[taxon]["taxref"][field]) { + this.species.push({ + name: + field === "cd_nom" + ? `${this.taxa[taxon]["taxref"]["cd_nom"]} - ${this.taxa[taxon]["taxref"]["nom_complet"]}` + : this.taxa[taxon]["taxref"][field], + cd_nom: this.taxa[taxon]["taxref"]["cd_nom"], + icon: + this.taxa[taxon]["medias"].length >= 1 + ? // ? this.taxa[taxon]["medias"][0]["url"] + AppConfig.API_TAXHUB + + "/tmedias/thumbnail/" + + this.taxa[taxon]["medias"][0]["id_media"] + + "?h=20" + : "assets/default_image.png" + }); + } } + } + this.autocomplete = "isOn"; + }; + + inputAutoCompleteSearch = (text$: Observable) => + text$.pipe( + debounceTime(200), + distinctUntilChanged(), + map(term => + term === "" // term.length < n + ? [] + : this.species + .filter( + v => v["name"].toLowerCase().indexOf(term.toLowerCase()) > -1 + // v => new RegExp(term, "gi").test(v["name"]) + ) + .slice(0, taxonAutocompleteMaxResults) + ) ); + + inputAutoCompleteFormatter = (x: { name: string }) => x.name; + disabledDates = (date: NgbDate, current: { month: number }) => { + const date_impl = new Date(date.year, date.month - 1, date.day); + return date_impl > this.today; + }; + + onTaxonSelected(taxon: any): void { + this.selectedTaxon = taxon; + this.obsForm.controls["cd_nom"].patchValue({ + cd_nom: taxon.taxref["cd_nom"], + name: taxon.taxref.nom_complet + }); } - postObservation(): Observable { - const httpOptions = { - headers: new HttpHeaders({ - Accept: "application/json" - }) - }; + onChangeContactCheckBoxRGPD(): void { + this.obsForm.controls["agreeContactRGPD"].value + ? this.obsForm.controls["email"].enable() + : this.obsForm.controls["email"].disable(); + this.obsForm.controls["email"].setValue(""); + } - this.obsForm.controls["id_program"].patchValue(this.program_id); + isSelectedTaxon(taxon: any): boolean { + if (this.selectedTaxon) + return this.selectedTaxon.taxref.cd_nom === taxon.taxref.cd_nom; + } - let formData: FormData = new FormData(); + onFormSubmit(): void { + this.postObservation(); + } - const files: FileList = this.photo.nativeElement.files; - if (files.length > 0) { - formData.append("file", files[0], files[0].name); + creatFromDataToPost(): FormData { + this.obsForm.controls["id_program"].patchValue(this.program_id); + let formData: FormData = new FormData(); + if (!this.data.updateData) { + const files: FileList = this.photo.nativeElement.files; + if (files.length > 0) { + formData.append("file", files[0], files[0].name); + } } - formData.append( "geometry", JSON.stringify(this.obsForm.get("geometry").value) ); - const taxon = this.obsForm.get("cd_nom").value; let cd_nom = Number.parseInt(taxon); if (isNaN(cd_nom)) { cd_nom = Number.parseInt(taxon.cd_nom); } formData.append("cd_nom", cd_nom.toString()); - const obsDateControlValue = NgbDate.from(this.obsForm.controls.date.value); const obsDate = new Date( obsDateControlValue.year, @@ -407,16 +392,35 @@ export class ObsFormComponent implements AfterViewInit { .toISOString() .match(/\d{4}-\d{2}-\d{2}/)[0]; formData.append("date", normDate); - - for (let item of ["count", "comment", "id_program","email"]) { + for (let item of ["count", "comment", "id_program", "email"]) { formData.append(item, this.obsForm.get(item).value); } + return formData; + } + + postObservation() { + let obs: ObservationFeature; + let formData = this.creatFromDataToPost(); + this.observationsService.postObservation(formData).subscribe( + (data: PostObservationResponse) => { + obs = data.features[0]; + this.newObservation.emit(obs); + this.flowService.setModalCloseSatus("newObs"); + }, + err => console.error(err) + ); + } - return this.http.post( - `${this.URL}/observations`, - formData, - httpOptions + onFormUpdate(): void { + let formData = this.creatFromDataToPost(); + formData.append( + "id_observation", + this.data.updateData.id_observation.toString() ); + this.observationsService.updateObservation(formData).subscribe(() => { + this.flowService.closeModal(); + this.flowService.setModalCloseSatus("updateObs"); + }); } isLoggedIn(): Observable { @@ -426,6 +430,4 @@ export class ObsFormComponent implements AfterViewInit { }) ); } - - getMediaUrl() {} } diff --git a/frontend/src/app/programs/observations/form/formValidators.ts b/frontend/src/app/programs/observations/form/formValidators.ts new file mode 100644 index 00000000..d957b4fd --- /dev/null +++ b/frontend/src/app/programs/observations/form/formValidators.ts @@ -0,0 +1,21 @@ +import { AbstractControl, ValidatorFn } from "@angular/forms"; +import { NgbDate } from "@ng-bootstrap/ng-bootstrap"; + +export function ngbDateMaxIsToday(): ValidatorFn { + return (control: AbstractControl): { [key: string]: any } | null => { + const today = new Date(); + const selected = NgbDate.from(control.value); + if (!selected) return { "Null date": true }; + const date_impl = new Date(selected.year, selected.month - 1, selected.day); + return date_impl > today ? { "Parsed a date in the future": true } : null; + }; +} + +export function geometryValidator(): ValidatorFn { + return (control: AbstractControl): { [key: string]: any } | null => { + const validGeometry = /Point\(\d{1,3}(|\.\d{1,7}),(|\s)\d{1,3}(|\.\d{1,7})\)$/.test( + control.value + ); + return validGeometry ? null : { geometry: { value: control.value } }; + }; +} diff --git a/frontend/src/app/programs/observations/list/list.component.css b/frontend/src/app/programs/observations/list/list.component.css index c0542284..a71fc440 100644 --- a/frontend/src/app/programs/observations/list/list.component.css +++ b/frontend/src/app/programs/observations/list/list.component.css @@ -104,13 +104,11 @@ .obs-found { /* background-color: var(--secondary); */ - background-image: linear-gradient( - 178deg, - var(--secondary) 0%, - var(--secondary) 60%, - var(--secondary-gradient) 63%, - var(--secondary-gradient) - ) !important; + background-image: linear-gradient(178deg, + var(--secondary) 0%, + var(--secondary) 60%, + var(--secondary-gradient) 63%, + var(--secondary-gradient)) !important; min-height: 1.5em !important; } @@ -144,16 +142,20 @@ max-height: 40vh; height: inherit; } + .toggle { display: none; } + .side-bar, .map { position: static !important; } + .map { height: auto; } + /* #map{ height: 50vh; } */ @@ -161,3 +163,32 @@ transform: translateX(-0%); } } + + +.btn-detail-espece { + color: #fff !important; + background-position: -1px -1px; + background-repeat: repeat-x; + background-size: 110% 110%; + border: 1px solid; + border-radius: .25em; + background-color: var(--primary); + border-color: var(--primary); + cursor: pointer; + display: inline-block; + font-size: 14px; + font-weight: 600; + line-height: 20px; + padding: 6px 12px; + width: fit-content; + position: relative; + user-select: none; + vertical-align: middle; + white-space: nowrap; + +} + +.btn-detail-espece i { + vertical-align: text-bottom; + margin-left: 10px; +} diff --git a/frontend/src/app/programs/observations/list/list.component.html b/frontend/src/app/programs/observations/list/list.component.html index b1d88a15..47524634 100644 --- a/frontend/src/app/programs/observations/list/list.component.html +++ b/frontend/src/app/programs/observations/list/list.component.html @@ -1,14 +1,15 @@
- -

- {{ (features$ | async)?.length }} { +(features$ | async)?.length, plural, =0 { observation trouvée } =1 { observation trouvée !} other { observations trouvées !} } + {{ (features$ | async)?.length }} { +(features$ | async)?.length, plural, =0 { observation trouvée } =1 { + observation trouvée !} other { observations trouvées !} }

-
+
- à {{ o.properties.municipality?.name }} + à {{ o.properties.municipality?.name }}

+ + En savoir plus +
diff --git a/frontend/src/app/programs/observations/modalflow/modalflow.component.html b/frontend/src/app/programs/observations/modalflow/modalflow.component.html new file mode 100644 index 00000000..c09b2bed --- /dev/null +++ b/frontend/src/app/programs/observations/modalflow/modalflow.component.html @@ -0,0 +1,11 @@ +
+ + +
+ + + diff --git a/frontend/src/app/programs/observations/modalflow/modalflow.component.ts b/frontend/src/app/programs/observations/modalflow/modalflow.component.ts index e7e696f2..8a1cb405 100644 --- a/frontend/src/app/programs/observations/modalflow/modalflow.component.ts +++ b/frontend/src/app/programs/observations/modalflow/modalflow.component.ts @@ -14,26 +14,15 @@ import { AppConfig } from "../../../../conf/app.config"; @Component({ selector: "app-modalflow", - template: ` -
- - -
- - - - `, + templateUrl: "./modalflow.component.html", styleUrls: ["./modalflow.component.css"], encapsulation: ViewEncapsulation.None }) export class ModalFlowComponent { @Input("coords") coords; - @ViewChild("content", {static: true}) content: ElementRef; + @Input("program_id") program_id; + @Input("updateData") updateData; + @ViewChild("content", { static: true }) content: ElementRef; AppConfig = AppConfig; flowitems: FlowItem[]; timeout: any; @@ -44,7 +33,11 @@ export class ModalFlowComponent { ) {} clicked() { - this.flowitems = this.flowService.getFlowItems({ coords: this.coords }); + this.flowitems = this.flowService.getFlowItems({ + coords: this.coords, + program_id: this.program_id, + updateData: this.updateData + }); this.flowService.open(this.content); } diff --git a/frontend/src/app/programs/observations/modalflow/modalflow.service.ts b/frontend/src/app/programs/observations/modalflow/modalflow.service.ts index 4b8522b4..c1336f51 100644 --- a/frontend/src/app/programs/observations/modalflow/modalflow.service.ts +++ b/frontend/src/app/programs/observations/modalflow/modalflow.service.ts @@ -1,4 +1,5 @@ import { Injectable } from "@angular/core"; +import { Observable, BehaviorSubject, Subscription } from "rxjs"; import { NgbModal, @@ -24,6 +25,7 @@ export const MODAL_DEFAULTS: NgbModalOptions = { }) export class ModalFlowService extends FlowService { modalRef: NgbModalRef; + private modalCloseStatus: BehaviorSubject = new BehaviorSubject(null); constructor(private modalService: NgbModal) { super(); @@ -55,8 +57,6 @@ export class ModalFlowService extends FlowService { ); } - next_(data) {} - close(data) { this.modalRef.close(data); } @@ -72,4 +72,12 @@ export class ModalFlowService extends FlowService { new FlowItem(RewardComponent, { ...initialState, service: this }) ]; } + + getModalCloseSatus(): Observable { + return this.modalCloseStatus.asObservable(); + } + + setModalCloseSatus(type: "updateObs" | "newObs" | null) { + this.modalCloseStatus.next(type); + } } diff --git a/frontend/src/app/programs/observations/modalflow/steps/committed/committed.component.html b/frontend/src/app/programs/observations/modalflow/steps/committed/committed.component.html index 6b53f7ba..9fe3193f 100644 --- a/frontend/src/app/programs/observations/modalflow/steps/committed/committed.component.html +++ b/frontend/src/app/programs/observations/modalflow/steps/committed/committed.component.html @@ -1,23 +1,20 @@ diff --git a/frontend/src/app/programs/observations/modalflow/steps/committed/committed.component.ts b/frontend/src/app/programs/observations/modalflow/steps/committed/committed.component.ts index 01d1c704..d315c38c 100644 --- a/frontend/src/app/programs/observations/modalflow/steps/committed/committed.component.ts +++ b/frontend/src/app/programs/observations/modalflow/steps/committed/committed.component.ts @@ -11,7 +11,7 @@ import { ObservationFeature } from "../../../observation.model"; }) export class CommittedComponent implements IFlowComponent { @Input() data: any; - @ViewChild(ObsFormComponent, {static: true}) form: ObsFormComponent; + @ViewChild(ObsFormComponent, { static: true }) form: ObsFormComponent; onNewObservation(observation: ObservationFeature) { if (observation) { @@ -31,4 +31,8 @@ export class CommittedComponent implements IFlowComponent { committed() { this.form.onFormSubmit(); } + + onUdpdateObs() { + this.form.onFormUpdate(); + } } diff --git a/frontend/src/app/programs/observations/obs.component.css b/frontend/src/app/programs/observations/obs.component.css index 17bfee2a..53ecfd5e 100644 --- a/frontend/src/app/programs/observations/obs.component.css +++ b/frontend/src/app/programs/observations/obs.component.css @@ -18,7 +18,8 @@ section { #welcome { background: url(/assets/background.jpg) no-repeat; background-size: cover; - height: calc(100vh - var(--router-outlet-offset)); + height: calc(100vh - var(--router-outlet-margin-top)); + margin-top: var(--router-outlet-margin-top); } #welcome h1 { @@ -217,530 +218,3 @@ section .observations { background-color: var(--primary); } -/* POPUP CUSTOM */ - -.leaflet-popup-content-wrapper { - padding: 0px; -} - -.leaflet-popup-content { - margin: 0px; - min-width: 300px !important; - min-height: 80px !important; - max-height: 80px !important; - display: flex; - align-items: center; - justify-content: space-between; -} - -.leaflet-popup-tip, -.leaflet-popup-content-wrapper { - border-radius: 0px !important; -} - -.leaflet-popup-tip span, -.leaflet-popup-content-wrapper span { - color: var(--primary); - font-style: italic; - font-size: 13px; -} - -.leaflet-popup-tip p, -.leaflet-popup-content-wrapper p { - margin: 0 !important; - font-size: 14px; -} - -.leaflet-popup img, -.leaflet-popup-content-wrapper img { - width: 80px; - height: 80px; - object-fit: cover; - float: left; - margin-right: 3px; - padding: 2px; -} - -.leaflet-popup-content-wrapper img.icon { - width: 25px; - height: 17px; -} - -.leaflet-popup-content div { - height: 80px; - width: 40px; - background: var(--primary); - color: #fff; - display: flex; - justify-content: center; - align-items: center; - font-size: 18px; -} - -.modal-header { - background: var(--secondary); - background: var(--modal-header-bg-moz); - background: var(--modal-header-bg-webkit); - background: var(--modal-header-bg-linear); - border-radius: 0px; - align-items: center; - max-height: 61px; -} - -.modal-header h4 { - color: #fff; - text-transform: uppercase; - margin: 0 auto; - text-align: center; -} - -.modal-content { - max-height: 95vh; - overflow-y: auto; -} - -.modal-body, -.modal-content { - border-radius: 0px !important; -} - -span.input-group-text { - background-color: var(--secondary); - color: #fff; -} - -.modal-body input.ng-valid, -.modal-body input.pristine { - border: solid 1px rgb(206, 212, 218); -} - -.modal-content .row { - margin: 0 !important; -} - -.modal-content .col-lg-6, -.modal-content .col-lg-12 { - padding: 5px 5px; -} - -.modal-body input::placeholder, -.modal-body textarea::placeholder { - color: #ccc; -} - -.modal-footer button { - background-color: var(--secondary) !important; - color: #fff; - border: solid 1px transparent; - display: flex; - margin: 0 auto; - text-transform: uppercase; - padding: 6px 30px; -} - -.modal-footer button:hover, -.modal-footer button:active { - background: transparent; - color: var(--secondary); - border: solid 1px; - border-color: var(--secondary); -} - -/* MODALES AJOUTER UNE OBS */ - -.add-obs .obs-images { - overflow: hidden; - justify-content: space-between; - padding: 0px; -} - -.obs-img { - position: relative; - background-color:#e6e6e6; - margin: 0 8px; -} - -.obs-img span { - font-size: 11px; - color: #222; - text-align: center; - font-weight: 700; - display: block; - background: rgba(255, 255, 255, 0.5); - position: absolute; - bottom: 2px; - width: 100%; - padding: 2px 5px; -} - -.add-obs .form-group.btn { - background-color: var(--primary); - color: #fff; - padding: 5px 10px; - border-radius: 0px; -} - -.add-obs .form-group.btn i { - margin-right: 10px; -} - -.add-obs .form-group.btn label { - margin: 0; -} - -.half #obsMap { - height: 228px; - overflow: hidden; -} - -form .d-inline-flex { - width: 100%; -} - -/* .add-obs .col-lg-8 { - margin: 0 auto; - margin-bottom: 20px; -} */ - -.add-obs .form-group .form-group { - margin-bottom: 0; -} - -.add-obs select, -.add-obs .d-inline-flex input { - border: solid 1px var(--primary) !important; -} - -.toolbar select { - width: 50%; -} - -.obs-images img { - width: 120px; - height: 120px; - object-fit: cover; - opacity: 0.7; - -} - -.obs-img:hover img, -.obs-img.selected img { - opacity: 1; - cursor: pointer; - /* box-shadow: 0 0 0 3px var(--secondary);*/ - border: 3px solid var(--secondary) -} - -.scroll-img { - display: inline-flex; - overflow-x: auto; -} - -.obs-add-img { - margin: 5px; - background: #dcdcdc; - color: #fff; - display: flex; - justify-content: center; - text-align: center; - flex-direction: column; - min-width: 120px; - height: 120px; -} - -.obs-add-img:hover { - background: #a1a1a1; -} - -.obs-add-img input:hover, -.obs-add-img i:hover, -.obs-add-img label:hover, -.obs-add-img:hover { - cursor: pointer !important; -} - -.obs-add-img i { - font-size: 30px; -} - -.obs-add-img input { - height: 120px; - width: 120px; -} - -.add-obs ::-webkit-scrollbar-thumb { - background: var(--primary); - width: 10px; - border: 1px solid #eee; - margin: 5px; - border-radius: 5px; -} - -.add-obs ::-webkit-scrollbar { - background: #eee; - width: 10px; - height: 10px; - margin: 5px; - cursor: pointer; - border-radius: 5px; -} - -/* MODALE CONNEXION OU NON */ - -.modal-body .sign { - display: flex; - flex-direction: column; - text-align: center; - align-items: center; - padding: 40px; -} - -.modal-body .sign:hover i { - transform: translateY(-5px); -} - -.modal-body .sign i { - display: flex; - justify-content: center; - align-items: center; - -webkit-box-shadow: 0px 28px 91px -29px rgba(0, 0, 0, 0.75) !important; - -moz-box-shadow: 0px 28px 91px -29px rgba(0, 0, 0, 0.75) !important; - box-shadow: 0px 28px 91px -29px rgba(0, 0, 0, 0.75) !important; - margin-bottom: 30px; - height: 130px; - width: 130px; - border-radius: 50%; - transition: all 0.3s ease-in-out; -} - -.modal-body .sign i:before { - font-size: 60px; - color: #fff; -} - -.modal-body .sign:hover { - cursor: pointer; -} - -.modal-body .sign:first-child i { - background: var(--primary); -} - -.modal-body .sign:first-child span { - color: var(--primary); - font-size: 20px; - font-weight: 600; -} - -.modal-body .sign:last-child i { - background: #e8e1db; -} - -.modal-body .sign:last-child span { - color: #a0a0a0; - font-size: 20px; - font-weight: 600; -} - -.modal-footer span { - margin: 0 auto; - font-style: italic; - border-bottom: solid 1px grey; -} - -.modal-footer span:hover { - cursor: pointer; -} - -/* MODALE OBSERVATION AJOUTEE */ - -.obs-added { - text-align: center; -} - -.obs-added img { - display: block; - width: 100%; -} - -.obs-added div { - margin: -16px; - margin-bottom: 0px; -} - -.obs-added h5 { - color: var(--secondary); - font-style: italic; - font-size: 1.8em; - margin-top: 20px; -} - -.obs-added h6 { - text-transform: uppercase; - font-size: 1.2em; - margin-bottom: 20px; -} - -.obs-added p { - font-size: 1.5em; - color: #333; - font-weight: 500; - margin-bottom: 0; -} - -.obs-added span { - font-size: 1.6em; - font-style: italic; - color: #919191; -} - -/* MOdALES NEW BADGES */ - -.new-badge { - text-align: center; -} - -.new-badge img { - display: block; - width: 150px; - height: 150px; - margin: 0 auto; - margin-top: 30px; -} - -.new-badge div { - margin: -16px; - margin-bottom: 0px; -} - -.new-badge h5 { - color: var(--secondary); - font-style: italic; - font-size: 1.8em; - margin-top: 20px; -} - -.new-badge h6 { - text-transform: uppercase; - font-size: 1.2em; - margin-bottom: 20px; -} - -.new-badge p { - font-size: 1.5em; - color: #333; - font-weight: 500; - margin-bottom: 0; -} - -@media screen and (max-width: 991px) { - .sign { - padding: 0px 40px 20px 40px !important; - } - .obs-img span, - .obs-img img { - opacity: 1; - } -} - -@media screen and (max-width: 400px) { - .observations #map .btn-group { - right: 0px; - } -} - -.side-bar { - width: 33%; - position: absolute; - top: 0; - left: 0; - bottom: 0; -} - -input#slide-sidebar[type="checkbox"] { - display: none; -} - -input:checked ~ .map { - left: 0; - width: 100%; -} - -input:not(:checked) ~ .map { - width: 67%; -} - -.toggle { - z-index: 2; - position: absolute; - top: 0; - bottom: 0; - left: 33%; - background-color: var(--primary); - width: var(--list-toggler-width); - display: flex; - transition: left 0.5s ease; - align-items: center; - overflow: hidden; - margin-bottom: 0px; - justify-content: center; -} - -input:checked ~ .toggle { - left: 0; -} - -.toggle i { - transition: all 0.5s ease; -} - -input:checked ~ .toggle i { - transform: rotate(180deg); -} - -.toggle:hover { - cursor: pointer; -} - -.toggle i { - color: #fff; -} - -.map { - position: absolute; - top: 0; - left: 33%; - right: 0; - bottom: 0; - -moz-transition: left 0.5s ease; - transition: left 0.5s ease; -} - -.observation-zoom-statement-warning::after { - position: absolute; - color: darkred; - display: flex; - align-items: center; - padding: 1em; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: rgba(255, 255, 255, 0.8); - content: attr(data-observation-zoom-statement-warning); - z-index: 9999; -} - -@media screen and (max-width: 991px) { - .observations { - height: inherit; - } - - .leaflet-touch .leaflet-control-attribution { - display: none; - } - - .observation-zoom-statement-warning::after { - max-height: 40vh; - } -} diff --git a/frontend/src/app/programs/observations/obs.component.html b/frontend/src/app/programs/observations/obs.component.html index ace138fd..2ecd92b1 100644 --- a/frontend/src/app/programs/observations/obs.component.html +++ b/frontend/src/app/programs/observations/obs.component.html @@ -72,7 +72,7 @@

{{ program.title }}

(onClick)="onMapClicked($event)" >
- +
diff --git a/frontend/src/app/programs/observations/observations.service.ts b/frontend/src/app/programs/observations/observations.service.ts new file mode 100644 index 00000000..83c8a625 --- /dev/null +++ b/frontend/src/app/programs/observations/observations.service.ts @@ -0,0 +1,25 @@ +import { Injectable } from "@angular/core"; +import { HttpClient } from "@angular/common/http"; +import { AppConfig } from "../../../conf/app.config"; + +@Injectable({ + providedIn: "root" +}) +export class ObservationsService { + constructor(private http: HttpClient) {} + + updateObservation(formData) { + let url = `${AppConfig.API_ENDPOINT}/observations`; + return this.http.patch(url,formData); + } + + postObservation(formData) { + let url = `${AppConfig.API_ENDPOINT}/observations`; + return this.http.post(url, formData); + } + + getStat(){ + let url = `${AppConfig.API_ENDPOINT}/stats`; + return this.http.get(url); + } +} diff --git a/frontend/src/assets/css/material.css b/frontend/src/assets/css/material.css index 5ea414cf..230677ce 100644 --- a/frontend/src/assets/css/material.css +++ b/frontend/src/assets/css/material.css @@ -39,19 +39,19 @@ That's all. .ngx-datatable.material.single-selection .datatable-body-row.active .datatable-row-group, .ngx-datatable.material.multi-selection .datatable-body-row.active, .ngx-datatable.material.multi-selection .datatable-body-row.active .datatable-row-group, .ngx-datatable.material.multi-click-selection .datatable-body-row.active, .ngx-datatable.material.multi-click-selection .datatable-body-row.active .datatable-row-group { - background-color: #304ffe; + background-color: none; color: #fff; } .ngx-datatable.material.single-selection .datatable-body-row.active:hover, .ngx-datatable.material.single-selection .datatable-body-row.active:hover .datatable-row-group, .ngx-datatable.material.multi-selection .datatable-body-row.active:hover, .ngx-datatable.material.multi-selection .datatable-body-row.active:hover .datatable-row-group, .ngx-datatable.material.multi-click-selection .datatable-body-row.active:hover, .ngx-datatable.material.multi-click-selection .datatable-body-row.active:hover .datatable-row-group { - background-color: #193ae4; + background-color: none; color: #fff; } .ngx-datatable.material.single-selection .datatable-body-row.active:focus, .ngx-datatable.material.single-selection .datatable-body-row.active:focus .datatable-row-group, .ngx-datatable.material.multi-selection .datatable-body-row.active:focus, .ngx-datatable.material.multi-selection .datatable-body-row.active:focus .datatable-row-group, .ngx-datatable.material.multi-click-selection .datatable-body-row.active:focus, .ngx-datatable.material.multi-click-selection .datatable-body-row.active:focus .datatable-row-group { - background-color: #2041ef; + background-color: none; color: #fff; } .ngx-datatable.material:not(.cell-selection) .datatable-body-row:hover, .ngx-datatable.material:not(.cell-selection) .datatable-body-row:hover .datatable-row-group { @@ -73,15 +73,15 @@ That's all. background-color: #ddd; } .ngx-datatable.material.cell-selection .datatable-body-cell.active, .ngx-datatable.material.cell-selection .datatable-body-cell.active .datatable-row-group { - background-color: #304ffe; + background-color: #ddd; color: #fff; } .ngx-datatable.material.cell-selection .datatable-body-cell.active:hover, .ngx-datatable.material.cell-selection .datatable-body-cell.active:hover .datatable-row-group { - background-color: #193ae4; + background-color: #ddd; color: #fff; } .ngx-datatable.material.cell-selection .datatable-body-cell.active:focus, .ngx-datatable.material.cell-selection .datatable-body-cell.active:focus .datatable-row-group { - background-color: #2041ef; + background-color: #ddd; color: #fff; } .ngx-datatable.material .empty-row { height: 50px; diff --git a/frontend/src/styles.css b/frontend/src/styles.css index 7c5c87ee..099e5e8f 100644 --- a/frontend/src/styles.css +++ b/frontend/src/styles.css @@ -1,40 +1,46 @@ /* You can add global styles to this file, and also import other style files */ @import 'assets/css/material.css'; +@import '~@swimlane/ngx-datatable/assets/icons.css'; @font-face { - font-display: auto; - font-family: "Satisfy"; - src: url("assets/Satisfy-Regular.ttf") format("truetype"); + font-display: auto; + font-family: "Satisfy"; + src: url("assets/Satisfy-Regular.ttf") format("truetype"); +} + + +.ngx-datatable .datatable-footer { + overflow: hidden !important; } /* @import '~ngx-toastr/toastr'; */ :root { - --default-font-color: #5d6970; - --primary: #00a99d; - --dark-primary: #0a998f; - --secondary: #60b15c; - --secondary-gradient: #57a154; - --ternary: #45765c; - --list-toggler-width: 1.2rem; - /* --list-toggler-width: 21px; */ - --list-obs-offset: calc(var(--router-outlet-offset) + 4em); - /* --list-obs-offset: 170px; */ - --router-outlet-margin-top: 6.625em; - /* --router-outlet-margin-top: 106px; */ - --router-outlet-offset: calc(var(--router-outlet-margin-top) + 0.5em); - /* --router-outlet-offset: 113px; */ - --modal-header-bg-moz: moz-linear-gradient( 179.4deg, var(--secondary) 0%, var(--secondary) 50%, var(--secondary-gradient) 51%, var(--secondary-gradient) 100%); - --modal-header-bg-webkit: moz-linear-gradient( 179.4deg, var(--secondary) 0%, var(--secondary) 50%, var(--secondary-gradient) 51%, var(--secondary-gradient) 100%); - --modal-header-bg-linear: linear-gradient( 179.4deg, var(--secondary) 0%, var(--secondary) 50%, var(--secondary-gradient) 51%, var(--secondary-gradient) 100%); + --default-font-color: #5d6970; + --primary: #00a99d; + --dark-primary: #0a998f; + --secondary: #60b15c; + --secondary-gradient: #57a154; + --ternary: #45765c; + --list-toggler-width: 1.2rem; + /* --list-toggler-width: 21px; */ + --list-obs-offset: calc(var(--router-outlet-offset) + 4em); + /* --list-obs-offset: 170px; */ + --router-outlet-margin-top: 6.625em; + /* --router-outlet-margin-top: 106px; */ + --router-outlet-offset: calc(var(--router-outlet-margin-top) + 0.5em); + /* --router-outlet-offset: 113px; */ + --modal-header-bg-moz: moz-linear-gradient(179.4deg, var(--secondary) 0%, var(--secondary) 50%, var(--secondary-gradient) 51%, var(--secondary-gradient) 100%); + --modal-header-bg-webkit: moz-linear-gradient(179.4deg, var(--secondary) 0%, var(--secondary) 50%, var(--secondary-gradient) 51%, var(--secondary-gradient) 100%); + --modal-header-bg-linear: linear-gradient(179.4deg, var(--secondary) 0%, var(--secondary) 50%, var(--secondary-gradient) 51%, var(--secondary-gradient) 100%); } html, body { - height: 100%; - color: var(--default-font-color); + height: 100%; + color: var(--default-font-color); } h1, @@ -43,284 +49,289 @@ h3, h4, h5, h6 { - font-family: "Open Sans", Helvetica, Arial, sans-serif; + font-family: "Open Sans", Helvetica, Arial, sans-serif; } .loading-text { - text-align: center; - /* font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; */ - display: block; - margin-left: auto; - margin-right: auto; - margin-top: 5%; - color: var(--default-font-color); - /* position: absolute !important; */ - /* padding: 10px; */ + text-align: center; + /* font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; */ + display: block; + margin-left: auto; + margin-right: auto; + margin-top: 5%; + color: var(--default-font-color); + /* position: absolute !important; */ + /* padding: 10px; */ } .loader-1 { - /* border: 1px solid #eeeeee; */ - border-top: 3px solid var(--primary); - border-radius: 50%; - position: absolute !important; - left: 50%; - top: 50%; - margin-top: -60px; - margin-left: -60px; - width: 120px; - height: 120px; - animation: spin 5s linear infinite; - z-index: 999; + /* border: 1px solid #eeeeee; */ + border-top: 3px solid var(--primary); + border-radius: 50%; + position: absolute !important; + left: 50%; + top: 50%; + margin-top: -60px; + margin-left: -60px; + width: 120px; + height: 120px; + animation: spin 5s linear infinite; + z-index: 999; } .loader-2 { - /* border: 1px solid #eeeeee; */ - border-top: 3px solid var(--primary); - border-radius: 50%; - position: absolute !important; - left: 50%; - top: 50%; - margin-top: -50px; - margin-left: -50px; - width: 100px; - height: 100px; - animation: spin 2s linear infinite; - animation-direction: reverse; - z-index: 999; + /* border: 1px solid #eeeeee; */ + border-top: 3px solid var(--primary); + border-radius: 50%; + position: absolute !important; + left: 50%; + top: 50%; + margin-top: -50px; + margin-left: -50px; + width: 100px; + height: 100px; + animation: spin 2s linear infinite; + animation-direction: reverse; + z-index: 999; } .loader-3 { - /* border: 1px solid #eeeeee; */ - border-top: 3px solid var(--primary); - border-radius: 50%; - position: absolute !important; - left: 50%; - top: 50%; - margin-top: -40px; - margin-left: -40px; - width: 80px; - height: 80px; - animation: spin 1s linear infinite; - z-index: 999; + /* border: 1px solid #eeeeee; */ + border-top: 3px solid var(--primary); + border-radius: 50%; + position: absolute !important; + left: 50%; + top: 50%; + margin-top: -40px; + margin-left: -40px; + width: 80px; + height: 80px; + animation: spin 1s linear infinite; + z-index: 999; } .loader-icon { - color: var(--primary); - /* position: absolute !important; */ - margin: 0; - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); + color: var(--primary); + /* position: absolute !important; */ + margin: 0; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); } @keyframes spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } } .bubblingG { - text-align: center; - width: 78px; - height: 49px; - margin: auto; + text-align: center; + width: 78px; + height: 49px; + margin: auto; } .bubblingG span { - display: inline-block; - vertical-align: middle; - width: 10px; - height: 10px; - margin: 24px auto; - background: rgb(0, 0, 0); - border-radius: 49px; - -o-border-radius: 49px; - -ms-border-radius: 49px; - -webkit-border-radius: 49px; - -moz-border-radius: 49px; - animation: bubblingG 1.5s infinite alternate; - -o-animation: bubblingG 1.5s infinite alternate; - -ms-animation: bubblingG 1.5s infinite alternate; - -webkit-animation: bubblingG 1.5s infinite alternate; - -moz-animation: bubblingG 1.5s infinite alternate; + display: inline-block; + vertical-align: middle; + width: 10px; + height: 10px; + margin: 24px auto; + background: rgb(0, 0, 0); + border-radius: 49px; + -o-border-radius: 49px; + -ms-border-radius: 49px; + -webkit-border-radius: 49px; + -moz-border-radius: 49px; + animation: bubblingG 1.5s infinite alternate; + -o-animation: bubblingG 1.5s infinite alternate; + -ms-animation: bubblingG 1.5s infinite alternate; + -webkit-animation: bubblingG 1.5s infinite alternate; + -moz-animation: bubblingG 1.5s infinite alternate; } #bubblingG_1 { - animation-delay: 0s; - -o-animation-delay: 0s; - -ms-animation-delay: 0s; - -webkit-animation-delay: 0s; - -moz-animation-delay: 0s; + animation-delay: 0s; + -o-animation-delay: 0s; + -ms-animation-delay: 0s; + -webkit-animation-delay: 0s; + -moz-animation-delay: 0s; } #bubblingG_2 { - animation-delay: 0.45s; - -o-animation-delay: 0.45s; - -ms-animation-delay: 0.45s; - -webkit-animation-delay: 0.45s; - -moz-animation-delay: 0.45s; + animation-delay: 0.45s; + -o-animation-delay: 0.45s; + -ms-animation-delay: 0.45s; + -webkit-animation-delay: 0.45s; + -moz-animation-delay: 0.45s; } #bubblingG_3 { - animation-delay: 0.9s; - -o-animation-delay: 0.9s; - -ms-animation-delay: 0.9s; - -webkit-animation-delay: 0.9s; - -moz-animation-delay: 0.9s; + animation-delay: 0.9s; + -o-animation-delay: 0.9s; + -ms-animation-delay: 0.9s; + -webkit-animation-delay: 0.9s; + -moz-animation-delay: 0.9s; } @keyframes bubblingG { - 0% { - width: 10px; - height: 10px; - background-color: rgb(0, 0, 0); - transform: translateY(0); - } - 100% { - width: 23px; - height: 23px; - background-color: rgb(255, 255, 255); - transform: translateY(-20px); - } + 0% { + width: 10px; + height: 10px; + background-color: rgb(0, 0, 0); + transform: translateY(0); + } + + 100% { + width: 23px; + height: 23px; + background-color: rgb(255, 255, 255); + transform: translateY(-20px); + } } @-o-keyframes bubblingG { - 0% { - width: 10px; - height: 10px; - background-color: rgb(0, 0, 0); - -o-transform: translateY(0); - } - 100% { - width: 23px; - height: 23px; - background-color: rgb(255, 255, 255); - -o-transform: translateY(-20px); - } + 0% { + width: 10px; + height: 10px; + background-color: rgb(0, 0, 0); + -o-transform: translateY(0); + } + + 100% { + width: 23px; + height: 23px; + background-color: rgb(255, 255, 255); + -o-transform: translateY(-20px); + } } @-ms-keyframes bubblingG { - 0% { - width: 10px; - height: 10px; - background-color: rgb(0, 0, 0); - -ms-transform: translateY(0); - } - 100% { - width: 23px; - height: 23px; - background-color: rgb(255, 255, 255); - -ms-transform: translateY(-20px); - } + 0% { + width: 10px; + height: 10px; + background-color: rgb(0, 0, 0); + -ms-transform: translateY(0); + } + + 100% { + width: 23px; + height: 23px; + background-color: rgb(255, 255, 255); + -ms-transform: translateY(-20px); + } } @-webkit-keyframes bubblingG { - 0% { - width: 10px; - height: 10px; - background-color: rgb(0, 0, 0); - -webkit-transform: translateY(0); - } - 100% { - width: 23px; - height: 23px; - background-color: rgb(255, 255, 255); - -webkit-transform: translateY(-20px); - } + 0% { + width: 10px; + height: 10px; + background-color: rgb(0, 0, 0); + -webkit-transform: translateY(0); + } + + 100% { + width: 23px; + height: 23px; + background-color: rgb(255, 255, 255); + -webkit-transform: translateY(-20px); + } } @-moz-keyframes bubblingG { - 0% { - width: 10px; - height: 10px; - background-color: rgb(0, 0, 0); - -moz-transform: translateY(0); - } - 100% { - width: 23px; - height: 23px; - background-color: rgb(255, 255, 255); - -moz-transform: translateY(-20px); - } + 0% { + width: 10px; + height: 10px; + background-color: rgb(0, 0, 0); + -moz-transform: translateY(0); + } + + 100% { + width: 23px; + height: 23px; + background-color: rgb(255, 255, 255); + -moz-transform: translateY(-20px); + } } button, .btn { - font-family: "Open Sans", Helvetica, Arial, sans-serif; + font-family: "Open Sans", Helvetica, Arial, sans-serif; } .btn-big { - text-transform: uppercase; - color: #fff !important; - padding: 20px 30px; - border: none; - font-weight: 500; - font-size: 18px; - width: fit-content; - transition: all 0.2s ease-in-out; + text-transform: uppercase; + color: #fff !important; + padding: 20px 30px; + border: none; + font-weight: 500; + font-size: 18px; + width: fit-content; + transition: all 0.2s ease-in-out; } .btn-big:hover { - -webkit-box-shadow: 0px 5px 11px -2px rgba(0, 0, 0, 0.75) !important; - -moz-box-shadow: 0px 5px 11px -2px rgba(0, 0, 0, 0.75) !important; - box-shadow: 0px 5px 11px -2px rgba(0, 0, 0, 0.75) !important; - color: #fff !important; - transform: translateY(-5px); + -webkit-box-shadow: 0px 5px 11px -2px rgba(0, 0, 0, 0.75) !important; + -moz-box-shadow: 0px 5px 11px -2px rgba(0, 0, 0, 0.75) !important; + box-shadow: 0px 5px 11px -2px rgba(0, 0, 0, 0.75) !important; + color: #fff !important; + transform: translateY(-5px); } button:disabled:hover { - transform: none; - box-shadow: none !important; - cursor: not-allowed; + transform: none; + box-shadow: none !important; + cursor: not-allowed; } ul { - list-style-type: none; + list-style-type: none; } a, button, *:focus { - color: #000; - box-shadow: none !important; - cursor: pointer; - outline: none; + color: #000; + box-shadow: none !important; + cursor: pointer; + outline: none; } a:hover, a:focus, a:active { - text-decoration: none !important; - color: #555; + text-decoration: none !important; + color: #555; } input:focus, textarea:focus, select:focus { - outline: none !important; - box-shadow: none !important; - border: solid 2px var(--primary) !important; + outline: none !important; + box-shadow: none !important; + border: solid 2px var(--primary) !important; } .ng-valid[required], -.ng-valid.required, -.ng-valid:not(form) { - border-left: 5px solid #42a948; - /* green */ +.ng-valid.required { + border-left: 5px solid #42a948; + /* green */ } .ng-invalid.ng-dirty:not(form) { - border-left: 5px solid #a94442; - /* red */ + border-left: 5px solid #a94442; + /* red */ } .modal-content { - border-radius: 0px !important; - border: none !important; + border-radius: 0px !important; + border: none !important; } @@ -340,9 +351,9 @@ select:focus { } */ @media screen and (max-width: 1024px) { - .btn-big { - padding: 10px 20px; - } + .btn-big { + padding: 10px 20px; + } } @@ -352,28 +363,585 @@ select:focus { /* firefox */ * { - scrollbar-color: var(--primary) var(--light); + scrollbar-color: var(--primary) var(--light); } /* blink scroll bar custom design */ ::-webkit-scrollbar-thumb { - background: var(--primary); - width: 10px; - border: 1px solid #eee; - margin: 5px; + background: var(--primary); + width: 10px; + border: 1px solid #eee; + margin: 5px; } ::-webkit-scrollbar { - background: #eee; - width: 10px; - height: 10px; - margin: 5px; - cursor: pointer; + background: #eee; + width: 10px; + height: 10px; + margin: 5px; + cursor: pointer; } .default-img { - position: relative; - background-color:#e6e6e6; - } \ No newline at end of file + position: relative; + background-color: #e6e6e6; +} + +/* POPUP CUSTOM */ + +.leaflet-popup-content-wrapper { + padding: 0px; +} + +.leaflet-popup-content { + margin: 0px; + min-width: 300px !important; + min-height: 80px !important; + max-height: 80px !important; + display: flex; + align-items: center; + justify-content: space-between; +} + +.leaflet-popup-tip, +.leaflet-popup-content-wrapper { + border-radius: 0px !important; +} + +.leaflet-popup-tip span, +.leaflet-popup-content-wrapper span { + color: var(--primary); + font-style: italic; + font-size: 13px; +} + +.leaflet-popup-tip p, +.leaflet-popup-content-wrapper p { + margin: 0 !important; + font-size: 14px; +} + +.leaflet-popup img, +.leaflet-popup-content-wrapper img { + width: 80px; + height: 80px; + object-fit: cover; + float: left; + margin-right: 3px; + padding: 2px; +} + +.leaflet-popup-content-wrapper img.icon { + width: 25px; + height: 17px; +} + +.leaflet-popup-content div { + height: 80px; + width: 40px; + background: var(--primary); + color: #fff; + display: flex; + justify-content: center; + align-items: center; + font-size: 18px; +} + +.modal-header { + background: var(--secondary); + background: var(--modal-header-bg-moz); + background: var(--modal-header-bg-webkit); + background: var(--modal-header-bg-linear); + border-radius: 0px; + align-items: center; + max-height: 61px; +} + +.modal-header h4 { + color: #fff; + text-transform: uppercase; + margin: 0 auto; + text-align: center; +} + +.modal-content { + max-height: 95vh; + overflow-y: auto; +} + +.modal-body, +.modal-content { + border-radius: 0px !important; +} + +span.input-group-text { + background-color: var(--secondary); + color: #fff; +} + +.modal-body input.ng-valid, +.modal-body input.pristine { + border: solid 1px rgb(206, 212, 218); +} + +.modal-content .row { + margin: 0 !important; +} + +.modal-content .col-lg-6, +.modal-content .col-lg-12 { + padding: 5px 5px; +} + +.modal-body input::placeholder, +.modal-body textarea::placeholder { + color: #ccc; +} + +.modal-footer button { + background-color: var(--secondary) !important; + color: #fff; + border: solid 1px transparent; + display: flex; + margin: 0 auto; + text-transform: uppercase; + padding: 6px 30px; +} + +.modal-footer button:hover, +.modal-footer button:active { + background: transparent; + color: var(--secondary); + border: solid 1px; + border-color: var(--secondary); +} + +/* MODALES AJOUTER UNE OBS */ + +.add-obs .obs-images { + overflow: hidden; + justify-content: space-between; + padding: 0px; +} + +.obs-img { + position: relative; + background-color: #e6e6e6; + margin: 0 8px; +} + +.obs-img span { + font-size: 11px; + color: #222; + text-align: center; + font-weight: 700; + display: block; + background: rgba(255, 255, 255, 0.5); + position: absolute; + bottom: 2px; + width: 100%; + padding: 2px 5px; +} + +.add-obs .form-group.btn { + background-color: var(--primary); + color: #fff; + padding: 5px 10px; + border-radius: 0px; +} + +.add-obs .form-group.btn i { + margin-right: 10px; +} + +.add-obs .form-group.btn label { + margin: 0; +} + +.half #obsMap { + height: 228px; + overflow: hidden; +} + +form .d-inline-flex { + width: 100%; +} + +/* .add-obs .col-lg-8 { + margin: 0 auto; + margin-bottom: 20px; + } */ + +.add-obs .form-group .form-group { + margin-bottom: 0; +} + +.add-obs select, +.add-obs .d-inline-flex input { + border: solid 1px var(--primary) !important; +} + +.toolbar select { + width: 50%; +} + +.obs-images img { + width: 120px; + height: 120px; + object-fit: cover; + opacity: 0.7; + +} + +.obs-img:hover img, +.obs-img.selected img { + opacity: 1; + cursor: pointer; + /* box-shadow: 0 0 0 3px var(--secondary);*/ + border: 3px solid var(--secondary) +} + +.scroll-img { + display: inline-flex; + overflow-x: auto; +} + +.obs-add-img { + margin: 5px; + background: #dcdcdc; + color: #fff; + display: flex; + justify-content: center; + text-align: center; + flex-direction: column; + min-width: 120px; + height: 120px; +} + +.obs-add-img:hover { + background: #a1a1a1; +} + +.obs-add-img input:hover, +.obs-add-img i:hover, +.obs-add-img label:hover, +.obs-add-img:hover { + cursor: pointer !important; +} + +.obs-add-img i { + font-size: 30px; +} + +.obs-add-img input { + height: 120px; + width: 120px; +} + +.add-obs ::-webkit-scrollbar-thumb { + background: var(--primary); + width: 10px; + border: 1px solid #eee; + margin: 5px; + border-radius: 5px; +} + +.add-obs ::-webkit-scrollbar { + background: #eee; + width: 10px; + height: 10px; + margin: 5px; + cursor: pointer; + border-radius: 5px; +} + +/* MODALE CONNEXION OU NON */ + +.modal-body .sign { + display: flex; + flex-direction: column; + text-align: center; + align-items: center; + padding: 40px; +} + +.modal-body .sign:hover i { + transform: translateY(-5px); +} + +.modal-body .sign i { + display: flex; + justify-content: center; + align-items: center; + -webkit-box-shadow: 0px 28px 91px -29px rgba(0, 0, 0, 0.75) !important; + -moz-box-shadow: 0px 28px 91px -29px rgba(0, 0, 0, 0.75) !important; + box-shadow: 0px 28px 91px -29px rgba(0, 0, 0, 0.75) !important; + margin-bottom: 30px; + height: 130px; + width: 130px; + border-radius: 50%; + transition: all 0.3s ease-in-out; +} + +.modal-body .sign i:before { + font-size: 60px; + color: #fff; +} + +.modal-body .sign:hover { + cursor: pointer; +} + +.modal-body .sign:first-child i { + background: var(--primary); +} + +.modal-body .sign:first-child span { + color: var(--primary); + font-size: 20px; + font-weight: 600; +} + +.modal-body .sign:last-child i { + background: #e8e1db; +} + +.modal-body .sign:last-child span { + color: #a0a0a0; + font-size: 20px; + font-weight: 600; +} + +.modal-footer span { + margin: 0 auto; + font-style: italic; + border-bottom: solid 1px grey; +} + +.modal-footer span:hover { + cursor: pointer; +} + +/* MODALE OBSERVATION AJOUTEE */ + +.obs-added { + text-align: center; +} + +.obs-added img { + display: block; + width: 100%; +} + +.obs-added div { + margin: -16px; + margin-bottom: 0px; +} + +.obs-added h5 { + color: var(--secondary); + font-style: italic; + font-size: 1.8em; + margin-top: 20px; +} + +.obs-added h6 { + text-transform: uppercase; + font-size: 1.2em; + margin-bottom: 20px; +} + +.obs-added p { + font-size: 1.5em; + color: #333; + font-weight: 500; + margin-bottom: 0; +} + +.obs-added span { + font-size: 1.6em; + font-style: italic; + color: #919191; +} + +/* MOdALES NEW BADGES */ + +.new-badge { + text-align: center; +} + +.new-badge img { + display: block; + width: 150px; + height: 150px; + margin: 0 auto; + margin-top: 30px; +} + +.new-badge div { + margin: -16px; + margin-bottom: 0px; +} + +.new-badge h5 { + color: var(--secondary); + font-style: italic; + font-size: 1.8em; + margin-top: 20px; +} + +.new-badge h6 { + text-transform: uppercase; + font-size: 1.2em; + margin-bottom: 20px; +} + +.new-badge p { + font-size: 1.5em; + color: #333; + font-weight: 500; + margin-bottom: 0; +} + +@media screen and (max-width: 991px) { + .sign { + padding: 0px 40px 20px 40px !important; + } + + .obs-img span, + .obs-img img { + opacity: 1; + } +} + +@media screen and (max-width: 400px) { + .observations #map .btn-group { + right: 0px; + } +} + +.side-bar { + width: 33%; + position: absolute; + top: 0; + left: 0; + bottom: 0; +} + +input#slide-sidebar[type="checkbox"] { + display: none; +} + +input:checked~.map { + left: 0; + width: 100%; +} + +input:not(:checked)~.map { + width: 67%; +} + +.toggle { + z-index: 2; + position: absolute; + top: 0; + bottom: 0; + left: 33%; + background-color: var(--primary); + width: var(--list-toggler-width); + display: flex; + transition: left 0.5s ease; + align-items: center; + overflow: hidden; + margin-bottom: 0px; + justify-content: center; +} + +input:checked~.toggle { + left: 0; +} + +.toggle i { + transition: all 0.5s ease; +} + +input:checked~.toggle i { + transform: rotate(180deg); +} + +.toggle:hover { + cursor: pointer; +} + +.toggle i { + color: #fff; +} + +.map { + position: absolute; + top: 0; + left: 33%; + right: 0; + bottom: 0; + -moz-transition: left 0.5s ease; + transition: left 0.5s ease; +} + +.observation-zoom-statement-warning::after { + position: absolute; + color: darkred; + display: flex; + align-items: center; + padding: 1em; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: rgba(255, 255, 255, 0.8); + content: attr(data-observation-zoom-statement-warning); + z-index: 9999; +} + +@media screen and (max-width: 991px) { + .observations { + height: inherit; + } + + .leaflet-touch .leaflet-control-attribution { + display: none; + } + + .observation-zoom-statement-warning::after { + max-height: 40vh; + } +} + +.datatable-scroll { + width: 100% !important; +} + +.datatable-row-wrapper { + width: 100% !important; +} + +.page-count { + display: none !important +} + +.datatable-body-row { + border-bottom: 1px solid rgba(0, 0, 0, 0.12) !important; + width: 100% !important; + +} + +.datatable-body-cell { + display: flex !important; + align-items: center !important; + +} + +.datatable-row-wrapper:last-child .datatable-body-row { + border-bottom: none !important +} From 561c18a46a7e29bd588bb03ff3a119e9ddb48b41 Mon Sep 17 00:00:00 2001 From: HamoudaAmine Date: Wed, 4 Dec 2019 17:50:43 +0100 Subject: [PATCH 07/76] =?UTF-8?q?=20Avatar=20utilisateur=20#145=20&&=20Mis?= =?UTF-8?q?e=20=C3=A0=20jour=20des=20donn=C3=A9es=20personnelles=20#144?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/gncitizen/core/commons/routes.py | 2 - backend/gncitizen/core/ref_geo/routes.py | 1 - backend/gncitizen/core/users/models.py | 2 + backend/gncitizen/core/users/routes.py | 56 +++-- backend/gncitizen/utils/env.py | 2 - backend/server.py | 1 - backend/test_old.py | 1 - frontend/src/app/auth/auth.service.ts | 4 +- frontend/src/app/auth/models.ts | 2 + .../app/auth/register/register.component.css | 1 + .../app/auth/register/register.component.html | 193 +++++------------- .../app/auth/register/register.component.ts | 16 ++ .../user-dashboard/customFormValidator.ts | 22 ++ .../user-dashboard.component.css | 39 +++- .../user-dashboard.component.html | 68 +++--- .../user-dashboard.component.ts | 93 ++++++++- .../user-dashboard/user.service.service.ts | 8 +- frontend/src/app/home/home.component.html | 2 +- frontend/src/assets/user.jpg | Bin 29925 -> 0 bytes frontend/src/styles.css | 64 ++++++ 20 files changed, 360 insertions(+), 217 deletions(-) create mode 100644 frontend/src/app/auth/user-dashboard/customFormValidator.ts delete mode 100644 frontend/src/assets/user.jpg diff --git a/backend/gncitizen/core/commons/routes.py b/backend/gncitizen/core/commons/routes.py index 421e27a1..16c071e1 100644 --- a/backend/gncitizen/core/commons/routes.py +++ b/backend/gncitizen/core/commons/routes.py @@ -241,14 +241,12 @@ def post_program(): try: newprogram = ProgramsModel(**datas2db) except Exception as e: - print(e) raise GeonatureApiError(e) try: shape = asShape(request_datas["geometry"]) newprogram.geom = from_shape(MultiPolygon(shape), srid=4326) except Exception as e: - print(e) raise GeonatureApiError(e) db.session.add(newprogram) diff --git a/backend/gncitizen/core/ref_geo/routes.py b/backend/gncitizen/core/ref_geo/routes.py index 28ce7c3f..4b49e087 100644 --- a/backend/gncitizen/core/ref_geo/routes.py +++ b/backend/gncitizen/core/ref_geo/routes.py @@ -75,7 +75,6 @@ def get_municipality(insee): 200: description: A municipality """ - print('INSEE: ', insee) try: q = db.session.query( LAreas.area_name, diff --git a/backend/gncitizen/core/users/models.py b/backend/gncitizen/core/users/models.py index 1bc622a6..a54bf716 100644 --- a/backend/gncitizen/core/users/models.py +++ b/backend/gncitizen/core/users/models.py @@ -46,6 +46,7 @@ class UserModel(TimestampMixinModel, db.Model): email = db.Column(db.String(150), unique=True, nullable=False) phone = db.Column(db.String(15)) organism = db.Column(db.String(100)) + avatar = db.Column(db.String()) admin = db.Column(db.Boolean, default=False) def save_to_db(self): @@ -66,6 +67,7 @@ def as_secured_dict(self, recursif=False, columns=()): "email": self.email, "phone": self.phone, "organism": self.organism, + "avatar": self.avatar, "full_name": name + " " + surname, "admin": self.admin, "timestamp_create": self.timestamp_create.isoformat(), diff --git a/backend/gncitizen/core/users/routes.py b/backend/gncitizen/core/users/routes.py index aadebb3b..77d0c0b7 100644 --- a/backend/gncitizen/core/users/routes.py +++ b/backend/gncitizen/core/users/routes.py @@ -1,4 +1,5 @@ import flask +import os from flask import request, Blueprint, current_app from flask_jwt_extended import ( create_access_token, @@ -12,6 +13,7 @@ from sqlalchemy.exc import IntegrityError from gncitizen.utils.errors import GeonatureApiError +from gncitizen.utils.env import MEDIA_DIR from gncitizen.utils.sqlalchemy import json_resp from server import db, jwt from gncitizen.core.observations.models import ObservationModel @@ -21,6 +23,7 @@ import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText +import base64 routes = Blueprint("users", __name__) @@ -76,19 +79,23 @@ def registration(): """ try: request_datas = dict(request.get_json()) - - # Génération du dictionnaire des données à sauvegarder datas_to_save = {} for data in request_datas: if hasattr(UserModel, data) and data != "password": datas_to_save[data] = request_datas[data] # Hashed password - datas_to_save["password"] = UserModel.generate_hash(request_datas["password"]) + datas_to_save["password"] = UserModel.generate_hash( + request_datas["password"]) # Protection against admin creation from API datas_to_save["admin"] = False - + if ('extention' in request_datas and 'avatar' in request_datas): + extention = request_datas["extention"] + imgdata = base64.b64decode(request_datas["avatar"].replace( + 'data:image/'+extention+';base64,', '')) + filename = 'avatar_' + request_datas["username"] + '.' + extention + datas_to_save["avatar"] = filename try: newuser = UserModel(**datas_to_save) except Exception as e: @@ -132,6 +139,13 @@ def registration(): access_token = create_access_token(identity=newuser.username) refresh_token = create_refresh_token(identity=newuser.username) + + # save user avatar + if ('extention' in request_datas and 'avatar' in request_datas): + handler = open(os.path.join(str(MEDIA_DIR), filename), "wb+") + handler.write(imgdata) + handler.close() + return ( { "message": """Félicitations, l'utilisateur "{}" a été créé""".format( @@ -293,7 +307,7 @@ def get_allusers(): return allusers, 200 -@routes.route("/user/info", methods=["GET", "POST"]) +@routes.route("/user/info", methods=["GET", "PATCH"]) @json_resp @jwt_required def logged_user(): @@ -324,21 +338,35 @@ def logged_user(): return ({"message": "Vos données personelles", "features": result}, 200) - if flask.request.method == "POST": + if flask.request.method == "PATCH": is_admin = user.admin or False - current_app.logger.debug("[logged_user] Update current user personnal data") + current_app.logger.debug( + "[logged_user] Update current user personnal data") request_data = dict(request.get_json()) + if ('extention' in request_data and 'avatar' in request_data): + extention = request_data["extention"] + imgdata = base64.b64decode(request_data["avatar"].replace( + 'data:image/'+extention+';base64,', '')) + filename = 'avatar_' + \ + current_user + '.' + extention + request_data['avatar'] = filename + if os.path.exists(os.path.join(str(MEDIA_DIR), user.as_secured_dict(True)["avatar"])): + os.remove(os.path.join(str(MEDIA_DIR), + user.as_secured_dict(True)["avatar"])) + handler = open(os.path.join(str(MEDIA_DIR), filename), "wb+") + handler.write(imgdata) + handler.close() + for data in request_data: if hasattr(UserModel, data) and data not in { "id_user", - "password", + "username", "admin", }: setattr(user, data, request_data[data]) - - user.password = UserModel.generate_hash(request_data["password"]) + if ('newPassword' in request_data): + user.password = UserModel.generate_hash(request_data["newPassword"]) user.admin = is_admin - # QUESTION: do we want to update corresponding obs IDs ... in any case ? user.update() return ( { @@ -420,7 +448,8 @@ def reset_user_password(): user = UserModel.query.filter_by(username=username, email=email).one() except Exception: return ( - {"message": """L'email "{}" n'est pas enregistré.""".format(email)}, + {"message": """L'email "{}" n'est pas enregistré.""".format( + email)}, 400, ) @@ -462,7 +491,8 @@ def reset_user_password(): str(current_app.config["MAIL"]["MAIL_AUTH_PASSWD"]), ) server.sendmail( - current_app.config["MAIL"]["MAIL_FROM"], user.email, msg.as_string() + current_app.config["MAIL"]["MAIL_FROM"], user.email, msg.as_string( + ) ) server.quit() user.password = passwd_hash diff --git a/backend/gncitizen/utils/env.py b/backend/gncitizen/utils/env.py index 22d29e23..e38cd421 100644 --- a/backend/gncitizen/utils/env.py +++ b/backend/gncitizen/utils/env.py @@ -110,6 +110,4 @@ def list_and_import_gnc_modules(app, mod_path=GNC_EXTERNAL_MODULE): sys.path.pop(0) conf_module = load_toml(str(f / "config/conf_gn_module.toml")) - print(conf_module, conf_manifest, module_blueprint) - yield conf_module, conf_manifest, module_blueprint diff --git a/backend/server.py b/backend/server.py index aa653eae..df36a01a 100644 --- a/backend/server.py +++ b/backend/server.py @@ -124,7 +124,6 @@ def get_app(config, _app=None, with_external_mods=True, url_prefix="/api"): except Exception as e: current_app.logger.debug(e) prefix = url_prefix - print(prefix) app.register_blueprint( module.backend.blueprint.blueprint, url_prefix=prefix ) diff --git a/backend/test_old.py b/backend/test_old.py index 744fb817..1a9bdec2 100644 --- a/backend/test_old.py +++ b/backend/test_old.py @@ -79,7 +79,6 @@ def getsights(): if __name__ == "__main__": - print("test.py is being run directly") registration() login() logout() diff --git a/frontend/src/app/auth/auth.service.ts b/frontend/src/app/auth/auth.service.ts index b16d0ab2..1bfa7602 100644 --- a/frontend/src/app/auth/auth.service.ts +++ b/frontend/src/app/auth/auth.service.ts @@ -44,8 +44,10 @@ export class AuthService { } register(user: RegisterUser): Observable { + console.log('user',user); + let url: string = `${AppConfig.API_ENDPOINT}/registration`; - return this.http.post(url, user, { headers: this.headers }).pipe( + return this.http.post(url, user).pipe( map(user => { if (user) { this.authenticate(user); diff --git a/frontend/src/app/auth/models.ts b/frontend/src/app/auth/models.ts index abe090c1..a803ec2c 100644 --- a/frontend/src/app/auth/models.ts +++ b/frontend/src/app/auth/models.ts @@ -4,6 +4,8 @@ export class RegisterUser { email?: string; name?: string; surname?: string; + avatar?: string | ArrayBuffer; + extention?: string; constructor() {} } diff --git a/frontend/src/app/auth/register/register.component.css b/frontend/src/app/auth/register/register.component.css index 0610fdba..04cfe5a4 100644 --- a/frontend/src/app/auth/register/register.component.css +++ b/frontend/src/app/auth/register/register.component.css @@ -68,3 +68,4 @@ span.input-group-text { margin: 0 auto; } } + diff --git a/frontend/src/app/auth/register/register.component.html b/frontend/src/app/auth/register/register.component.html index cb0465fa..bf551951 100644 --- a/frontend/src/app/auth/register/register.component.html +++ b/frontend/src/app/auth/register/register.component.html @@ -1,40 +1,29 @@
@@ -89,127 +57,60 @@

Créez votre compte

- +
- +
- + " i18n> Les mots de passe diffèrent.
- +
- - + +
Veuillez accepter les conditions d'utilisation. - + J'accepte les - conditions d'utilisation + conditions d'utilisation +
- - diff --git a/frontend/src/app/auth/register/register.component.ts b/frontend/src/app/auth/register/register.component.ts index 6e8ea724..ebb2a737 100644 --- a/frontend/src/app/auth/register/register.component.ts +++ b/frontend/src/app/auth/register/register.component.ts @@ -22,6 +22,7 @@ export class RegisterComponent { staticAlertClosed = false; errorMessage: string; successMessage: string; + userAvatar: string | ArrayBuffer; constructor( @Inject(LOCALE_ID) readonly localeId: string, @@ -93,4 +94,19 @@ export class RegisterComponent { this._success.next(message); console.info("successMessage:", message); } + + onUploadAvatar($event) { + if ($event) { + if ($event.target.files && $event.target.files[0]) { + let reader = new FileReader(); + let file = $event.target.files[0]; + reader.readAsDataURL(file); + reader.onload = () => { + this.userAvatar = reader.result; + this.user.avatar = this.userAvatar; + this.user.extention = $event.target.files[0].type.split("/").pop(); + }; + } + } + } } diff --git a/frontend/src/app/auth/user-dashboard/customFormValidator.ts b/frontend/src/app/auth/user-dashboard/customFormValidator.ts new file mode 100644 index 00000000..ec967785 --- /dev/null +++ b/frontend/src/app/auth/user-dashboard/customFormValidator.ts @@ -0,0 +1,22 @@ +import { AbstractControl} from '@angular/forms'; + +export class CustomFormValidator{ + + static password(control: AbstractControl){ + var regEx = /^(?=.*[0-9]+.*)(?=.*[A-Z])(?=.*[a-z])[0-9a-zA-Z]{5,}$/; + var valid = regEx.test(control.value); + return valid ? null : { password: true }; + } + + + static MatchPassword(AC: AbstractControl) { + const password = AC.get('newPassword').value; // to get value in input tag + const confirmPassword = AC.get('confirmPassword').value; // to get value in input tag + if (password !== confirmPassword) { + return {MatchPassword: true}; + } else { + return null + } + } + +} diff --git a/frontend/src/app/auth/user-dashboard/user-dashboard.component.css b/frontend/src/app/auth/user-dashboard/user-dashboard.component.css index 76b729e0..c1a8dd4c 100644 --- a/frontend/src/app/auth/user-dashboard/user-dashboard.component.css +++ b/frontend/src/app/auth/user-dashboard/user-dashboard.component.css @@ -56,6 +56,10 @@ height: auto; margin: 0 auto; border-radius: 50%; + + fill: red; + + } .user-infos p { @@ -207,7 +211,9 @@ app-modalflow { transform: translateY(-50%); } } */ - +.danger{ + color: red; +} @media screen and (max-width: 991px) { #badges .row div:nth-child(2):before { content: " "; @@ -233,3 +239,34 @@ app-modalflow { width: 100% !important; } } + +.avatar-main-wrapper { + position: relative; + height: 160px; + width: 160px; + border-radius: 50%; + margin-top: 8px; + overflow: hidden; + box-shadow: 1px 1px 15px -5px black; + transition: all .3s ease; +} + +.avatar-main-wrapper .profile-pic { + height: 100%; + width: 100%; + transition: all .3s ease; +} + +.avatar-main-wrapper .profile-pic:after { + font-family: FontAwesome; + content: "\f007"; + top: 0; + left: 0; + width: 100%; + height: 100%; + position: absolute; + font-size: 140px; + background: #ecf0f1; + color: #34495e; + text-align: center; +} \ No newline at end of file diff --git a/frontend/src/app/auth/user-dashboard/user-dashboard.component.html b/frontend/src/app/auth/user-dashboard/user-dashboard.component.html index 7bd25e12..586972e9 100644 --- a/frontend/src/app/auth/user-dashboard/user-dashboard.component.html +++ b/frontend/src/app/auth/user-dashboard/user-dashboard.component.html @@ -7,7 +7,9 @@ { +stats?.platform_attendance, plural, =0 { aucune observation} =1 {une observation} other {{{stats?.platform_attendance}} observations} } - +
+ +

{{ username }}

@@ -31,7 +33,7 @@

Mes observations

- + @@ -78,7 +80,6 @@
Récompenses d'identification d'espèces
-