From 2dd60d37e6692678e6b7e1da18cd5aeaaed5acb1 Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Mon, 24 Dec 2018 22:10:11 +0300 Subject: [PATCH 01/29] update to Angular 7 --- .../venue-list/venue-list.component.ts | 4 +- .../venue-editor/venue-editor.component.html | 1 - DevActivator/DevActivator.csproj | 2 - DevActivator/npm-shrinkwrap.json | 3679 ++++++++--------- DevActivator/package.json | 37 +- 5 files changed, 1827 insertions(+), 1896 deletions(-) diff --git a/DevActivator/ClientApp/app/components/venue-list/venue-list.component.ts b/DevActivator/ClientApp/app/components/venue-list/venue-list.component.ts index 8158d1e..af66833 100644 --- a/DevActivator/ClientApp/app/components/venue-list/venue-list.component.ts +++ b/DevActivator/ClientApp/app/components/venue-list/venue-list.component.ts @@ -22,8 +22,8 @@ import { VenueListService } from "./venue-list.service"; }) export class VenueListComponent implements OnInit, OnDestroy { @Input() public title: string = "Поиск площадки"; - @Input() public iconName: string = ""; - @Input() public iconText: string = ""; + @Input() public iconName: string = "add"; + @Input() public iconText: string = "Добавить"; @Input() public set venueLink(value: { venueId?: string }) { if (value && value.venueId) { diff --git a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.component.html b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.component.html index d662050..076d2b0 100644 --- a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.component.html +++ b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.component.html @@ -99,5 +99,4 @@ -
{{ venue | json }}
\ No newline at end of file diff --git a/DevActivator/DevActivator.csproj b/DevActivator/DevActivator.csproj index 27067df..7cf3131 100644 --- a/DevActivator/DevActivator.csproj +++ b/DevActivator/DevActivator.csproj @@ -34,8 +34,6 @@ - - diff --git a/DevActivator/npm-shrinkwrap.json b/DevActivator/npm-shrinkwrap.json index 7b58de8..fbadac9 100644 --- a/DevActivator/npm-shrinkwrap.json +++ b/DevActivator/npm-shrinkwrap.json @@ -5,37 +5,38 @@ "requires": true, "dependencies": { "@angular-devkit/architect": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.8.5.tgz", - "integrity": "sha512-UMPQVdJkvT0f8ZFuhA2teDD697Tk1rUrW0X6yigPHmRhVTS9xbuJS/DeBN36NVJRUOOGYNDn5JHTLvywQf9q7A==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.11.4.tgz", + "integrity": "sha512-2zi6S9tPlk52vyqN67IvFoeNgd0uxtrPlwl3TdvJ3wrH7sYGJnkQ+EzAE7cKUGWAV989BbNtx2YxhRDHnN21Fg==", "dev": true, "requires": { - "@angular-devkit/core": "0.8.5", - "rxjs": "~6.2.0" + "@angular-devkit/core": "7.1.4", + "rxjs": "6.3.3" }, "dependencies": { "@angular-devkit/core": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.8.5.tgz", - "integrity": "sha512-QGYuGJDzCOjZaRR7pSly9QNM8RO7Q5NawqRYQzsOVhdI4n5GJ2gAYSw+wi5tyavlrNcbvLw9//MAPhBkPrZMJw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.1.4.tgz", + "integrity": "sha512-3cBVHjSQjMyE/mIyOX82ekdybNRQlN+kUfmdZS6oVW9aV48vdxcVbEGdl8t1H4enMf89u8kXiAAET9jFaqWopg==", "dev": true, "requires": { - "ajv": "~6.4.0", - "chokidar": "^2.0.3", - "rxjs": "~6.2.0", - "source-map": "^0.5.6" + "ajv": "6.5.3", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" } }, "ajv": { - "version": "6.4.0", - "resolved": "http://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", - "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", "dev": true, "requires": { - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0", - "uri-js": "^3.0.2" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "anymatch": { @@ -48,35 +49,6 @@ "normalize-path": "^2.1.1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "chokidar": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", @@ -98,77 +70,10 @@ "upath": "^1.0.5" } }, - "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" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "glob-parent": { @@ -192,35 +97,6 @@ } } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, "is-glob": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", @@ -230,136 +106,58 @@ "is-extglob": "^2.1.1" } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "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" - } - }, - "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" - } - }, - "rxjs": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz", - "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, - "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" - } + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "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==", "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - } + "punycode": "^2.1.0" } } } }, "@angular-devkit/core": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.8.5.tgz", - "integrity": "sha512-QGYuGJDzCOjZaRR7pSly9QNM8RO7Q5NawqRYQzsOVhdI4n5GJ2gAYSw+wi5tyavlrNcbvLw9//MAPhBkPrZMJw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.1.4.tgz", + "integrity": "sha512-3cBVHjSQjMyE/mIyOX82ekdybNRQlN+kUfmdZS6oVW9aV48vdxcVbEGdl8t1H4enMf89u8kXiAAET9jFaqWopg==", "dev": true, "requires": { - "ajv": "~6.4.0", - "chokidar": "^2.0.3", - "rxjs": "~6.2.0", - "source-map": "^0.5.6" + "ajv": "6.5.3", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" }, "dependencies": { "ajv": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", - "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", "dev": true, "requires": { - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0", - "uri-js": "^3.0.2" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "anymatch": { @@ -394,9 +192,9 @@ } }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "glob-parent": { @@ -429,49 +227,53 @@ "is-extglob": "^2.1.1" } }, - "rxjs": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz", - "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true } } }, "@angular-devkit/schematics": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.8.5.tgz", - "integrity": "sha512-rf6JyUncrTPpW33PMcDVrcQSLkt6iJEeqI9PXc65VBhGN7RaT00JQHVKdf5FNSmQ2Qenc1KpBrK3k6jrxTZv5Q==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-7.1.4.tgz", + "integrity": "sha512-+rn3ppcC3grsi9vV2uUIYh/5mUBEJ+JRCKW11BJoUqLMeu8W7h+vbVonyfwJXsk3FSTf9ZY0C7F7UqggRS3cWw==", "dev": true, "requires": { - "@angular-devkit/core": "0.8.5", - "rxjs": "~6.2.0" + "@angular-devkit/core": "7.1.4", + "rxjs": "6.3.3" }, "dependencies": { "@angular-devkit/core": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.8.5.tgz", - "integrity": "sha512-QGYuGJDzCOjZaRR7pSly9QNM8RO7Q5NawqRYQzsOVhdI4n5GJ2gAYSw+wi5tyavlrNcbvLw9//MAPhBkPrZMJw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.1.4.tgz", + "integrity": "sha512-3cBVHjSQjMyE/mIyOX82ekdybNRQlN+kUfmdZS6oVW9aV48vdxcVbEGdl8t1H4enMf89u8kXiAAET9jFaqWopg==", "dev": true, "requires": { - "ajv": "~6.4.0", - "chokidar": "^2.0.3", - "rxjs": "~6.2.0", - "source-map": "^0.5.6" + "ajv": "6.5.3", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" } }, "ajv": { - "version": "6.4.0", - "resolved": "http://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", - "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", "dev": true, "requires": { - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0", - "uri-js": "^3.0.2" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "anymatch": { @@ -484,35 +286,6 @@ "normalize-path": "^2.1.1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "chokidar": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", @@ -534,77 +307,10 @@ "upath": "^1.0.5" } }, - "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" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "glob-parent": { @@ -628,35 +334,6 @@ } } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, "is-glob": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", @@ -666,181 +343,94 @@ "is-extglob": "^2.1.1" } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "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" - } - }, - "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" - } - }, - "rxjs": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz", - "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, - "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" - } + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "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==", "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - } + "punycode": "^2.1.0" } } } }, "@angular/animations": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-6.1.10.tgz", - "integrity": "sha512-dd/lq7kw3uwfHPICan8psu2nthuUpp7PvMLuNIm0XxObZ4oNs0ls6uxKEDPnEkRKoGdiJpvmsyzZZN9ACMPEAA==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.1.4.tgz", + "integrity": "sha512-877LZ83scksJtflVz97CUWlSsZnxduBxPD+ls5OTrTT/bq3muzHCm8rgTO7S8fBwwrEVXLorvMAlhDPpMg5Swg==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "@angular/cdk": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-6.4.7.tgz", - "integrity": "sha512-18x0U66fLD5kGQWZ9n3nb75xQouXlWs7kUDaTd8HTrHpT1s2QIAqlLd1KxfrYiVhsEC2jPQaoiae7VnBlcvkBg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-7.2.0.tgz", + "integrity": "sha512-ANGNIvyEdkMW6APl+6XDQC5VBS+mS/M+3UB/ROnj+7Om3xe2DSbEjqDXB/SpeJYUp6Qg/wQoWmyvd4y8HfjMwA==", "dev": true, "requires": { + "parse5": "^5.0.0", "tslib": "^1.7.1" } }, "@angular/cli": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-6.2.5.tgz", - "integrity": "sha512-QG568QHq3X8CZ0D7aPbq9SlFiYyBEhrsfhGFr6jHNeljoCID2071GfnVsvuwj4vpeBT6axgOj0Dpm3M1r6UMMQ==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.8.5", - "@angular-devkit/core": "0.8.5", - "@angular-devkit/schematics": "0.8.5", - "@schematics/angular": "0.8.5", - "@schematics/update": "0.8.5", - "json-schema-traverse": "^0.4.1", - "opn": "^5.3.0", - "rxjs": "~6.2.0", - "semver": "^5.1.0", - "symbol-observable": "^1.2.0", - "yargs-parser": "^10.0.0" + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-7.1.4.tgz", + "integrity": "sha512-SruaZsmyq3+ymMPeMJSzhytvgtvzyzb1q58pUYX+vZjff2aMYOo0TVxJALwTOPIABICTqUTZmujbLG9uxVgxFA==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.11.4", + "@angular-devkit/core": "7.1.4", + "@angular-devkit/schematics": "7.1.4", + "@schematics/angular": "7.1.4", + "@schematics/update": "0.11.4", + "inquirer": "6.2.0", + "opn": "5.3.0", + "semver": "5.5.1", + "symbol-observable": "1.2.0" }, "dependencies": { "@angular-devkit/core": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.8.5.tgz", - "integrity": "sha512-QGYuGJDzCOjZaRR7pSly9QNM8RO7Q5NawqRYQzsOVhdI4n5GJ2gAYSw+wi5tyavlrNcbvLw9//MAPhBkPrZMJw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.1.4.tgz", + "integrity": "sha512-3cBVHjSQjMyE/mIyOX82ekdybNRQlN+kUfmdZS6oVW9aV48vdxcVbEGdl8t1H4enMf89u8kXiAAET9jFaqWopg==", "dev": true, "requires": { - "ajv": "~6.4.0", - "chokidar": "^2.0.3", - "rxjs": "~6.2.0", - "source-map": "^0.5.6" + "ajv": "6.5.3", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" } }, "ajv": { - "version": "6.4.0", - "resolved": "http://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", - "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", "dev": true, "requires": { - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0", - "uri-js": "^3.0.2" - }, - "dependencies": { - "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", - "dev": true - } + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "anymatch": { @@ -853,41 +443,6 @@ "normalize-path": "^2.1.1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, "chokidar": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", @@ -909,77 +464,10 @@ "upath": "^1.0.5" } }, - "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" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "glob-parent": { @@ -1003,160 +491,261 @@ } } }, - "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==", + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", "dev": true, "requires": { - "kind-of": "^6.0.0" + "is-extglob": "^2.1.1" } }, - "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==", + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "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==", "dev": true, "requires": { - "kind-of": "^6.0.0" + "punycode": "^2.1.0" } + } + } + }, + "@angular/common": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-7.1.4.tgz", + "integrity": "sha512-oQPCilcf1H/OXmt4z6PfGoCSb1YPRBAXGs/KRBARm3tYan2r5CmV0BFwpWXWQrEMt8YQqqLiBQUQ64d8+VFm8Q==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-7.1.4.tgz", + "integrity": "sha512-AvYXtjEJ27Rhv4c27DXNEa58Lit63jdydzbz7VuyFhNU+FwDUK2DC4gZe0nWZsf7HUniJezVRFkECDCZQeSKCQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "@angular/compiler-cli": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-7.1.4.tgz", + "integrity": "sha512-fyEY58A53pmVEuhfyU1z1TAi1n5rOK5cCjhFnUUnnESQFEW/aQYOl0ZL6LDsMSYfa78fkDw4Nc0DytvZ1ymVMw==", + "dev": true, + "requires": { + "canonical-path": "1.0.0", + "chokidar": "^1.4.2", + "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", + "shelljs": "^0.8.1", + "source-map": "^0.6.1", + "tslib": "^1.9.0", + "yargs": "9.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "dev": true, "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "string-width": { + "version": "1.0.2", + "resolved": "http://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" + } + } } }, - "is-glob": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", - "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", "dev": true, "requires": { - "is-extglob": "^2.1.1" + "locate-path": "^2.0.0" } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "load-json-file": { + "version": "2.0.0", + "resolved": "http://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", "dev": true, "requires": { - "isobject": "^3.0.1" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" } }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "os-locale": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", + "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", "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" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", "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" + "pify": "^2.0.0" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", "dev": true, "requires": { - "isobject": "^3.0.1" + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" } }, - "rxjs": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz", - "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==", + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", "dev": true, "requires": { - "tslib": "^1.9.0" + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" } }, - "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" - } + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "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": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" + "ansi-regex": "^3.0.0" } } } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "yargs": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-9.0.1.tgz", + "integrity": "sha1-UqzCP+7Kw0BCB47njAwAf1CF20w=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "read-pkg-up": "^2.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", + "yargs-parser": "^7.0.0" + } + }, "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", + "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", "dev": true, "requires": { "camelcase": "^4.1.0" @@ -1164,138 +753,112 @@ } } }, - "@angular/common": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-6.1.10.tgz", - "integrity": "sha512-73xxTSYJNKfiJ7C1Ajg+sz5l8y+blb/vNgHYg7O3yem5zLBnfPpidJ1UGg4W4d2Y+jwUVJbZKh8SKJarqAJVUQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "@angular/compiler": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-6.1.10.tgz", - "integrity": "sha512-FPIb2j3zfoBwb6vo/u0gQeu70h8InGlSisBr3xMACs/35/pwB6kbQR+JQiUr0D7k6QApg7AuMkvq8aFNelg0aw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "@angular/compiler-cli": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-6.1.10.tgz", - "integrity": "sha512-GCWdyeNQSnF4RfzO4A0+WHsNEgxKpl5arg4ldLSWMNkj/DrhMD4TnmxhR+IVY+7ieMkUBwpcuWRnjdOdnbmV+w==", - "dev": true, - "requires": { - "chokidar": "^1.4.2", - "minimist": "^1.2.0", - "reflect-metadata": "^0.1.2", - "tsickle": "^0.32.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - } - } - }, "@angular/core": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-6.1.10.tgz", - "integrity": "sha512-61l3rIQTVdT45eOf6/fBJIeVmV10mcrxqS4N/1OWkuDT29YSJTZSxGcv8QjAyyutuhcqWWpO6gVRkN07rWmkPg==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-7.1.4.tgz", + "integrity": "sha512-36uWLrmmlzf8JKaq2A5F2tPQEHvFSsbTQWOT559Drp1tzM2uSA7PysNHv5TXUshDn5i54S2EQFm4bj2YPp4Hzg==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "@angular/forms": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-6.1.10.tgz", - "integrity": "sha512-zAPx2kMV1/FbP5DrY472Sd/ze1m+GS6T5ullZCtP392r62p2RkwzDCXieR51YiRJjZj3M6c3AcRND7PWBdXT7A==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.1.4.tgz", + "integrity": "sha512-YB2lDRe7aMsaO5ZlbeFZGH+uTQOcpotFDKCmTckpefRJ7id6TlUSBYdYRH80qOQfPJGpsnqQvLZkL24UMasKtQ==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "@angular/http": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@angular/http/-/http-6.1.10.tgz", - "integrity": "sha512-LDsSqyexh8fj23y+G2oSGLWSZVhbxBBo2ehYHnRgH/jlp0pmZVLRaGgUMNSCVtZc1rxLzpEjZjtw+P+qlutAtw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-7.1.4.tgz", + "integrity": "sha512-Lrjb99sHu0Cv7MBbVLev1I1Fe+DJcwG4v7juZB/5nE5opKmbQo3Lfqvt2dVrMOxHeju9ReFznEnuGNMK6+m6pQ==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "@angular/material": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-6.4.7.tgz", - "integrity": "sha512-SdNx7Xovi24Kw9eU6lkLhY/7f2M7L9F+/uh6XuPr4jbGgCUVVpeeVI5ztZhsZRbj1sN+/r1p5w8u62apWWl5Ww==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-7.2.0.tgz", + "integrity": "sha512-ZLgpZ6hVJABMu6lk+97esN9TmLvBjeAgTbszLBJHOeSKocUGaWeKsdiUweMCdNgWrYNMowIAVKGqwavmaj7XTQ==", "dev": true, "requires": { - "parse5": "^5.0.0", "tslib": "^1.7.1" } }, "@angular/platform-browser": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-6.1.10.tgz", - "integrity": "sha512-CB7pqMwtgb7KjdHDAJlsXcs0rrU+2xQVaoOaqEfJtUrKhtGMLaZh8Qoic5l92SoGattkOw7SYarAOsWlAsVfvw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-7.1.4.tgz", + "integrity": "sha512-lIFBKo6Uqty7qYDI9T8quFCUzUpGBgpzvDe14aAHFwZCft9rMS1J7PB1F26/dy2RBQE8tUyN2zp2xZQnYAhMcA==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "@angular/platform-browser-dynamic": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-6.1.10.tgz", - "integrity": "sha512-DmBSUyFPoyKqkmBXyJ2CrP1oXDioeoBlPA8lmWUDUv2yBuoHIzIkdY/OkTZbdyu/QYa1hK2Jl9OlfoeoenKddg==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-7.1.4.tgz", + "integrity": "sha512-LtFd6XIz98BKjxrCRbaz2y0XSmVQSTzrvpAyNzKnzHAMn+4XpIpnzyV3Y6DeHolIBwLjFHFzGKMBwOHOwME4RQ==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "@angular/platform-server": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-6.1.10.tgz", - "integrity": "sha512-OKcbDJOCYrk+z5BaTbAsunLazlvFZZqOtYKU8zSCVuTGnGRINchO2RxHezS2+npzY1oO1zl1AA47RR59Nxutww==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-7.1.4.tgz", + "integrity": "sha512-4SwCzrXK4W9rlxnf+XBcqENLhKd0JVQ6S7agE56Jb3h7Vk5m9xABb+jmFYNfSqW9ZOwgM2inP7bKD9fjlp3x4g==", "dev": true, "requires": { - "domino": "^2.0.1", + "domino": "^2.1.0", "tslib": "^1.9.0", "xhr2": "^0.1.4" } }, "@angular/router": { - "version": "6.1.10", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-6.1.10.tgz", - "integrity": "sha512-tekI3dkdvd65oMoxjjgRA+16uDgPUBWHhYxids6pgO8vobZNtCo8VaVlcDyLUhdmtS5kONELx0iL5E2M0Y2Bag==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-7.1.4.tgz", + "integrity": "sha512-5VVVcRsmuKrIWPnh5zF1ExXmIpCx2tlisJ7YTS2FFDXnqrZ9i2QgaxyJuyZE+Btg3t7LPF4tkhRQpjauNiHJYA==", "dev": true, "requires": { "tslib": "^1.9.0" } }, "@ngtools/webpack": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-6.2.5.tgz", - "integrity": "sha512-gvv4n+M+YIoHX0JPvP+ygnI1L83iiJEDelqXxqdQ65ppM8Ua55xa+jLQc3vAjLbSuC2ANKHb9JK3GihBNghMgQ==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-7.1.4.tgz", + "integrity": "sha512-8A15TPJzg3g7yI70QvBzJ253P32WAgCVre9nMaDdd22UmlbvN8Ke4RuQY7vYVTECLL+bWpFJEFXL+ThzCRUgeA==", "dev": true, "requires": { - "@angular-devkit/core": "0.8.5", - "rxjs": "~6.2.0", - "tree-kill": "^1.0.0", - "webpack-sources": "^1.1.0" + "@angular-devkit/core": "7.1.4", + "enhanced-resolve": "4.1.0", + "rxjs": "6.3.3", + "tree-kill": "1.2.0", + "webpack-sources": "1.2.0" }, "dependencies": { - "rxjs": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz", - "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==", + "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" + } + }, + "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": { - "tslib": "^1.9.0" + "errno": "^0.1.3", + "readable-stream": "^2.0.1" } }, "source-list-map": { @@ -1310,10 +873,16 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, + "tapable": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.1.tgz", + "integrity": "sha512-9I2ydhj8Z9veORCw5PRm4u9uebCn0mcCa6scWoNcbZ6dAtoo2618u9UUzxgmsCOreJpqDDuv61LvwofW7hLcBA==", + "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==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.2.0.tgz", + "integrity": "sha512-9BZwxR85dNsjWz3blyxdOhTgtnQvv3OEs5xofI0wPYTwu5kaWxS08UuD1oI7WLBLpRO+ylf0ofnXLXWmGb2WMw==", "dev": true, "requires": { "source-list-map": "^2.0.0", @@ -1323,38 +892,39 @@ } }, "@schematics/angular": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.8.5.tgz", - "integrity": "sha512-2ZfnXajf7Pz5ZuZ4iwtDpVxcd58IQednhMGuNslzCeq7S2+FTnctTlmye63HoaRN8F/7M2aG4ztpm6VMYPPn2A==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.1.4.tgz", + "integrity": "sha512-4QVSmvQtOELek+FDq+k2ROeH9YrRrPJ6jWK179+qOruKSd4uTgEti/jy+fS0rfr52kDSGdDhz7XTh/QvQB89fg==", "dev": true, "requires": { - "@angular-devkit/core": "0.8.5", - "@angular-devkit/schematics": "0.8.5", - "typescript": ">=2.6.2 <2.10" + "@angular-devkit/core": "7.1.4", + "@angular-devkit/schematics": "7.1.4", + "typescript": "3.1.6" }, "dependencies": { "@angular-devkit/core": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.8.5.tgz", - "integrity": "sha512-QGYuGJDzCOjZaRR7pSly9QNM8RO7Q5NawqRYQzsOVhdI4n5GJ2gAYSw+wi5tyavlrNcbvLw9//MAPhBkPrZMJw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.1.4.tgz", + "integrity": "sha512-3cBVHjSQjMyE/mIyOX82ekdybNRQlN+kUfmdZS6oVW9aV48vdxcVbEGdl8t1H4enMf89u8kXiAAET9jFaqWopg==", "dev": true, "requires": { - "ajv": "~6.4.0", - "chokidar": "^2.0.3", - "rxjs": "~6.2.0", - "source-map": "^0.5.6" + "ajv": "6.5.3", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" } }, "ajv": { - "version": "6.4.0", - "resolved": "http://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", - "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", "dev": true, "requires": { - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0", - "uri-js": "^3.0.2" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "anymatch": { @@ -1367,35 +937,6 @@ "normalize-path": "^2.1.1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "chokidar": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", @@ -1417,77 +958,10 @@ "upath": "^1.0.5" } }, - "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" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "glob-parent": { @@ -1511,35 +985,6 @@ } } }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - }, "is-glob": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", @@ -1549,150 +994,80 @@ "is-extglob": "^2.1.1" } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "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" - } - }, - "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" - } + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, - "rxjs": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz", - "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true }, - "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" - } + "typescript": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz", + "integrity": "sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==", + "dev": true }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "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==", "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - } + "punycode": "^2.1.0" } } } }, "@schematics/update": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.8.5.tgz", - "integrity": "sha512-kcld8R13bFE/hoY8uSy7srU2MVI8uzzo14q0AbJBAmyM+v03sBRPhQ5U03Yvb+kedlisC4D4Crr8bkJYrM2Qig==", - "dev": true, - "requires": { - "@angular-devkit/core": "0.8.5", - "@angular-devkit/schematics": "0.8.5", - "npm-registry-client": "^8.5.1", - "rxjs": "~6.2.0", - "semver": "^5.3.0", - "semver-intersect": "^1.1.2" + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.11.4.tgz", + "integrity": "sha512-InfsMJtdWwoqCPmtlJeXBwRPPgIXUzpzIkCCcayRe9gy6PkPUIlOjfgEZ4Mqm/HR46lqsI8xwZfUK7SLV//a2g==", + "dev": true, + "requires": { + "@angular-devkit/core": "7.1.4", + "@angular-devkit/schematics": "7.1.4", + "@yarnpkg/lockfile": "1.1.0", + "ini": "1.3.5", + "pacote": "9.1.1", + "rxjs": "6.3.3", + "semver": "5.5.1", + "semver-intersect": "1.4.0" }, "dependencies": { "@angular-devkit/core": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.8.5.tgz", - "integrity": "sha512-QGYuGJDzCOjZaRR7pSly9QNM8RO7Q5NawqRYQzsOVhdI4n5GJ2gAYSw+wi5tyavlrNcbvLw9//MAPhBkPrZMJw==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-7.1.4.tgz", + "integrity": "sha512-3cBVHjSQjMyE/mIyOX82ekdybNRQlN+kUfmdZS6oVW9aV48vdxcVbEGdl8t1H4enMf89u8kXiAAET9jFaqWopg==", "dev": true, "requires": { - "ajv": "~6.4.0", - "chokidar": "^2.0.3", - "rxjs": "~6.2.0", - "source-map": "^0.5.6" + "ajv": "6.5.3", + "chokidar": "2.0.4", + "fast-json-stable-stringify": "2.0.0", + "rxjs": "6.3.3", + "source-map": "0.7.3" } }, "ajv": { - "version": "6.4.0", - "resolved": "http://registry.npmjs.org/ajv/-/ajv-6.4.0.tgz", - "integrity": "sha1-06/3jpJ3VJdx2vAWTP9ISCt1T8Y=", + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.5.3.tgz", + "integrity": "sha512-LqZ9wY+fx3UMiiPd741yB2pj3hhil+hQc8taf4o2QGRFpWgZ2V5C8HA165DY9sS3fJwsk7uT7ZlFEyC3Ig3lLg==", "dev": true, "requires": { - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0", - "uri-js": "^3.0.2" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, "anymatch": { @@ -1705,35 +1080,6 @@ "normalize-path": "^2.1.1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "chokidar": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.4.tgz", @@ -1755,77 +1101,10 @@ "upath": "^1.0.5" } }, - "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" - } - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "glob-parent": { @@ -1845,37 +1124,8 @@ "dev": true, "requires": { "is-extglob": "^2.1.0" - } - } - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + } + } } }, "is-glob": { @@ -1887,110 +1137,37 @@ "is-extglob": "^2.1.1" } }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "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" - } - }, - "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" - } + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true }, - "rxjs": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.2.2.tgz", - "integrity": "sha512-0MI8+mkKAXZUF9vMrEoPnaoHkfzBPP4IGwUYRJhIRJF6/w3uByO1e91bEHn8zd43RdkTMKiooYKmwz7RH6zfOQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } + "semver": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", + "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==", + "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" - } + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "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==", "dev": true, "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - } + "punycode": "^2.1.0" } } } @@ -2013,6 +1190,22 @@ "integrity": "sha1-MEQ4FkfhHulzxa8uklMjkw9pHYA=", "dev": true }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, "accepts": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.3.tgz", @@ -2052,6 +1245,24 @@ "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", "dev": true }, + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "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" + } + }, "ajv": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.2.0.tgz", @@ -2122,6 +1333,12 @@ "loader-utils": "^0.2.15" } }, + "ansi-escapes": { + "version": "3.1.0", + "resolved": "http://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", + "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", + "dev": true + }, "ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", @@ -2242,19 +1459,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } + "dev": true }, "argparse": { "version": "1.0.9", @@ -2307,15 +1512,6 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, "asn1.js": { "version": "4.10.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", @@ -2376,12 +1572,6 @@ } } }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, "assertion-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", @@ -2423,12 +1613,6 @@ "integrity": "sha1-GdOGodntxufByF04iu28xW0zYC0=", "dev": true }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, "atob": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", @@ -2478,18 +1662,6 @@ } } }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", - "dev": true - }, "babel-code-frame": { "version": "6.22.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", @@ -2589,15 +1761,6 @@ "integrity": "sha1-R2iMuZu2gE8OBtPnY7HDLlfY5rY=", "dev": true }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, "better-assert": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", @@ -2841,6 +2004,80 @@ "integrity": "sha1-fZcZb51br39pNeJZhVSe3SpsIzk=", "dev": true }, + "cacache": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.2.tgz", + "integrity": "sha512-E0zP4EPGDOaT2chM08Als91eYnf8Z+eH1awwwVsngUmgppfM5jjJ8l3z5vO5p5w/I3LsiXawb1sW0VY65pQABg==", + "dev": true, + "requires": { + "bluebird": "^3.5.3", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.3", + "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.2", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + }, + "dependencies": { + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + } + } + }, "cache-base": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-0.8.5.tgz", @@ -2899,10 +2136,10 @@ "integrity": "sha1-IM5qnO7vTvShXcjoDy6PuQSejXc=", "dev": true }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "canonical-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", + "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", "dev": true }, "center-align": { @@ -2950,6 +2187,12 @@ "supports-color": "^2.0.0" } }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -2973,6 +2216,12 @@ "readdirp": "^2.0.0" } }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true + }, "cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -3046,6 +2295,21 @@ "source-map": "0.5.x" } }, + "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" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", @@ -3184,15 +2448,6 @@ "lodash": "^4.5.0" } }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, "commander": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", @@ -3259,12 +2514,6 @@ "date-now": "^0.1.4" } }, - "console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "dev": true - }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -3277,12 +2526,35 @@ "integrity": "sha1-t9ETrueo3Se9IRM8TcJSnfFyHu0=", "dev": true }, + "convert-source-map": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", + "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, "cookie": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", "dev": true }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", @@ -3338,6 +2610,35 @@ "sha.js": "^2.4.8" } }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "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" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -3527,14 +2828,11 @@ "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", "dev": true }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } + "cyclist": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz", + "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=", + "dev": true }, "date-now": { "version": "0.1.4", @@ -3589,25 +2887,18 @@ "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", "dev": true }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true, - "optional": true - }, "depd": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", "integrity": "sha1-4b2Cxqq2ztlluXuIsX7T5SjKGMM=", "dev": true }, + "dependency-graph": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", + "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", + "dev": true + }, "des.js": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", @@ -3677,19 +2968,21 @@ } }, "domino": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.0.tgz", - "integrity": "sha512-xINSODvrnuQcm3eXJN4IkBR+JxqLrJN8Ge4fd00y1b7HsY0A4huKN5BflSS/oo8quBWmocTfWdFvrw2H8TjGqQ==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/domino/-/domino-2.1.1.tgz", + "integrity": "sha512-fqoTi6oQ881wYRENIEmz78hKVoc3X9HqVpklo419yxzebys6dtU5c83iVh3UYvvexPFdAuwlDYCsUM9//CrMMg==", "dev": true }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "duplexify": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.6.1.tgz", + "integrity": "sha512-vM58DwdnKmty+FSPzT14K9JXb90H+j5emaR4KYbr2KTIz00WHGbWOe5ghQTx233ZCLZtrGDALzKwcjEtSt35mA==", "dev": true, "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" } }, "ee-first": { @@ -3740,6 +3033,15 @@ "iconv-lite": "~0.4.13" } }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, "engine.io": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-1.8.3.tgz", @@ -3852,6 +3154,12 @@ "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", "dev": true }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, "errno": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", @@ -3876,6 +3184,23 @@ "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=", "dev": true }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "http://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + }, + "dependencies": { + "es6-promise": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz", + "integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg==", + "dev": true + } + } + }, "es6-shim": { "version": "0.35.3", "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.3.tgz", @@ -3944,6 +3269,29 @@ "safe-buffer": "^5.1.1" } }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "http://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } + } + }, "expand-braces": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/expand-braces/-/expand-braces-0.1.2.tgz", @@ -4113,6 +3461,37 @@ "is-extendable": "^0.1.0" } }, + "external-editor": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.0.3.tgz", + "integrity": "sha512-bn71H9+qWoOQKyZDo25mOMVpSmXROAsTJVVVYzrrtol3d4y+AsKjf4Iwl2Q+IuT0kFSQ1qo166UuIwqYq7mGnA==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "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" + } + } + } + }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -4154,12 +3533,6 @@ } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, "fast-deep-equal": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-0.1.0.tgz", @@ -4178,6 +3551,21 @@ "integrity": "sha1-0eJkOzipTXWDtHkGDmxK/8lAcfg=", "dev": true }, + "figgy-pudding": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", + "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "dev": true + }, + "figures": { + "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" + } + }, "file-loader": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-0.11.2.tgz", @@ -4249,6 +3637,16 @@ "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=", "dev": true }, + "flush-write-stream": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.0.3.tgz", + "integrity": "sha512-calZMC10u0FMUqoiunI2AiGIIUtUIvifNwkHhNupZH4cbNnW1Itkoh/Nf5HFYmDrwWPjrUxpkZT0KhuCq0jmGw==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.4" + } + }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", @@ -4264,34 +3662,6 @@ "for-in": "^1.0.1" } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", - "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "1.0.6", - "mime-types": "^2.1.12" - }, - "dependencies": { - "combined-stream": { - "version": "1.0.6", - "resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", - "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - } - } - }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -4301,6 +3671,16 @@ "map-cache": "^0.2.2" } }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, "fs-access": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/fs-access/-/fs-access-1.0.1.tgz", @@ -4310,6 +3690,27 @@ "null-check": "^1.0.0" } }, + "fs-minipass": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.5.tgz", + "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==", + "dev": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4851,22 +4252,11 @@ "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=", "dev": true }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true }, "get-caller-file": { "version": "1.0.3", @@ -4880,21 +4270,21 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -4940,42 +4330,6 @@ "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=", "dev": true }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.0.tgz", - "integrity": "sha512-+qnmNjI4OfH2ipQ9VQOw23bBd/ibtfbVdK2fYbY4acTDqKTW/YDp9McimZdDbG8iV9fZizUqQMD5xvriB146TA==", - "dev": true, - "requires": { - "ajv": "^5.3.0", - "har-schema": "^2.0.0" - }, - "dependencies": { - "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", - "dev": true, - "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" - } - }, - "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", - "dev": true - } - } - }, "has": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", @@ -5023,13 +4377,6 @@ "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true }, - "has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true, - "optional": true - }, "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", @@ -5155,6 +4502,12 @@ "uglify-js": "3.0.x" } }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, "http-errors": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.1.tgz", @@ -5177,15 +4530,25 @@ "requires-port": "1.x.x" } }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "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": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "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" + } + } } }, "https-browserify": { @@ -5194,6 +4557,42 @@ "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", "dev": true }, + "https-proxy-agent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", + "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", + "dev": true, + "requires": { + "agent-base": "^4.1.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, "iconv-lite": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", @@ -5241,62 +4640,184 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, - "postcss": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz", - "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=", + "postcss": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.6.tgz", + "integrity": "sha1-u6TVjohPx4yEDRU54Q7dqruPc70=", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "source-map": "^0.5.6", + "supports-color": "^4.1.0" + } + }, + "supports-color": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz", + "integrity": "sha1-kswUuz2tiSjKVlbDPhmhnyCvXHo=", + "dev": true, + "requires": { + "has-flag": "^2.0.0" + } + } + } + }, + "ieee754": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", + "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore-walk": { + "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" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.2.0.tgz", + "integrity": "sha512-QIEQG4YyQ2UYZGDC4srMZ7BjHOmNk1lR2JQj5UknBapklm6WHA+VVH7N+sUdX3A7NeCfGF8o4X1S3Ao7nAcIeg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.0", + "figures": "^2.0.0", + "lodash": "^4.17.10", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.1.0", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", + "dev": true + }, + "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" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { - "chalk": "^2.0.1", - "source-map": "^0.5.6", - "supports-color": "^4.1.0" + "ansi-regex": "^3.0.0" } }, "supports-color": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz", - "integrity": "sha1-kswUuz2tiSjKVlbDPhmhnyCvXHo=", + "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": "^2.0.0" + "has-flag": "^3.0.0" } } } }, - "ieee754": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.12.tgz", - "integrity": "sha512-GguP+DRY+pJ3soyIiGPTvdiVXjZ+DbXOxGpXn3eMvNW4x4irjqXm4wHKscC+TfxSJ0yw/S1F24tqdMNsMZTiLA==", - "dev": true - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "dev": true - }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, "interpret": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz", @@ -5309,6 +4830,12 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, "is-absolute-url": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", @@ -5508,6 +5035,12 @@ "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", "dev": true }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -5523,12 +5056,6 @@ "html-comment-regex": "^1.1.0" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -5581,27 +5108,12 @@ "whatwg-fetch": ">=0.10.0" } }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, "jasmine-core": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.6.4.tgz", "integrity": "sha1-3skmzQqfoof7bbXHVfpIfnTOysU=", "dev": true }, - "jasmine-diff": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/jasmine-diff/-/jasmine-diff-0.1.3.tgz", - "integrity": "sha1-k8zC3MQQKMXd1GBlWAdIOfLe6qg=", - "dev": true, - "requires": { - "diff": "^3.2.0" - } - }, "js-base64": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", @@ -5624,12 +5136,6 @@ "esprima": "^2.6.0" } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, "jsesc": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", @@ -5642,10 +5148,10 @@ "integrity": "sha1-i6oTZaYy9Yo8RtIBdfxgAsluN94=", "dev": true }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-schema-traverse": { @@ -5663,12 +5169,6 @@ "jsonify": "~0.0.0" } }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, "json3": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.2.tgz", @@ -5687,17 +5187,11 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true }, "karma": { "version": "1.7.0", @@ -5867,6 +5361,24 @@ "object-assign": "^4.0.1" } }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "dependencies": { + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -5963,6 +5475,52 @@ "integrity": "sha1-WQTcU3w57G2+/q6QIycTX6hRHxI=", "dev": true }, + "magic-string": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", + "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.1" + } + }, + "make-fetch-happen": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-4.0.1.tgz", + "integrity": "sha512-7R5ivfy9ilRJ1EMKIOziwrns9fGeAD4bAha8EB7BIiBBLHm2KeTUGCrICFt2rbHfzheTLynv50GnNTK1zDTrcQ==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^11.0.1", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.1", + "lru-cache": "^4.1.2", + "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": { + "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" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", @@ -6010,6 +5568,15 @@ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "dev": true }, + "mem": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", + "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, "memory-fs": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.3.0.tgz", @@ -6171,6 +5738,12 @@ "mime-db": "~1.27.0" } }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, "minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", @@ -6198,6 +5771,51 @@ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true }, + "minipass": { + "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" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "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" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, "mixin-deep": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.2.0.tgz", @@ -6217,12 +5835,32 @@ "minimist": "0.0.8" } }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, "nan": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", @@ -6364,6 +6002,17 @@ "is-stream": "^1.0.1" } }, + "node-fetch-npm": { + "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" + } + }, "node-libs-browser": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz", @@ -6434,6 +6083,12 @@ "sort-keys": "^1.0.0" } }, + "npm-bundled": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.0.5.tgz", + "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==", + "dev": true + }, "npm-package-arg": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.0.tgz", @@ -6460,37 +6115,80 @@ } } }, - "npm-registry-client": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-8.6.0.tgz", - "integrity": "sha512-Qs6P6nnopig+Y8gbzpeN/dkt+n7IyVd8f45NTMotGk6Qo7GfBmzwYx6jRLoOOgKiMnaQfYxsuyQlD8Mc3guBhg==", + "npm-packlist": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.1.12.tgz", + "integrity": "sha512-WJKFOVMeAlsU/pjXuqVdzU0WfgtIBCupkEVwn+1Y0ERAbUfWw8R4GjgVbaKnUjRoD2FoQbHOCbOyT5Mbs9Lw4g==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "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.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + } + } + }, + "npm-registry-fetch": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-3.8.0.tgz", + "integrity": "sha512-hrw8UMD+Nob3Kl3h8Z/YjmKamb1gf7D1ZZch2otrIXM3uFLB5vjEY6DhMlq80z/zZet6eETLbOXcuQudCB3Zpw==", "dev": true, "requires": { - "concat-stream": "^1.5.2", - "graceful-fs": "^4.1.6", - "normalize-package-data": "~1.0.1 || ^2.0.0", - "npm-package-arg": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0", - "npmlog": "2 || ^3.1.0 || ^4.0.0", - "once": "^1.3.3", - "request": "^2.74.0", - "retry": "^0.10.0", - "safe-buffer": "^5.1.1", - "semver": "2 >=2.2.1 || 3.x || 4 || 5", - "slide": "^1.1.3", - "ssri": "^5.2.4" + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^4.1.3", + "make-fetch-happen": "^4.0.1", + "npm-package-arg": "^6.1.0" + }, + "dependencies": { + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, + "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" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } } }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "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, - "optional": true, "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" + "path-key": "^2.0.0" } }, "null-check": { @@ -6511,12 +6209,6 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6629,10 +6321,19 @@ "wrappy": "1" } }, + "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" + } + }, "opn": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.4.0.tgz", - "integrity": "sha512-YF9MNdVy/0qvJvDtunAOzFw9iasOQHpVthTCvGzxt61Il64AYSGdK+rYwld7NAfk9qJ7dt+hymBNSc9LNYS+Sw==", + "version": "5.3.0", + "resolved": "http://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", "dev": true, "requires": { "is-wsl": "^1.1.0" @@ -6691,12 +6392,156 @@ "os-tmpdir": "^1.0.0" } }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pacote": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.1.1.tgz", + "integrity": "sha512-f28Rq5ozzKAA9YwIKw61/ipwAatUZseYmVssDbHHaexF0wRIVotapVEZPAjOT7Eu3LYVqEp0NVpNizoAnYBUaA==", + "dev": true, + "requires": { + "bluebird": "^3.5.2", + "cacache": "^11.2.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.3", + "lru-cache": "^4.1.3", + "make-fetch-happen": "^4.0.1", + "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.1.0", + "npm-registry-fetch": "^3.8.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.6", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "bluebird": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz", + "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==", + "dev": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "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" + } + }, + "rimraf": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", + "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "dev": true, + "requires": { + "glob": "^7.0.5" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "semver": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz", + "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, "pako": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz", "integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg==", "dev": true }, + "parallel-transform": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz", + "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=", + "dev": true, + "requires": { + "cyclist": "~0.2.2", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, "param-case": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", @@ -6821,6 +6666,12 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-parse": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", @@ -6857,12 +6708,6 @@ "sha.js": "^2.4.8" } }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -7464,16 +7309,41 @@ "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + } + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, "prr": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", "dev": true }, - "psl": { - "version": "1.1.29", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.29.tgz", - "integrity": "sha512-AeUmQ0oLN02flVHXWh9sSJF7mcdFq0ppid/JkErufc3hGIV/AMa8Fo9VgDo/cT2jFdOWoFvHp90qqBH54W+gjQ==", + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", "dev": true }, "public-encrypt": { @@ -7498,6 +7368,39 @@ } } }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", @@ -7672,6 +7575,15 @@ } } }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, "reduce-css-calc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", @@ -7773,69 +7685,6 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "mime-db": { - "version": "1.36.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", - "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", - "dev": true - }, - "mime-types": { - "version": "2.1.20", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", - "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", - "dev": true, - "requires": { - "mime-db": "~1.36.0" - } - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -7875,6 +7724,16 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, + "restore-cursor": { + "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" + } + }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -7915,6 +7774,24 @@ "inherits": "^2.0.1" } }, + "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" + } + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, "rxjs": { "version": "6.3.3", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.3.3.tgz", @@ -8088,17 +7965,42 @@ "safe-buffer": "^5.0.1" } }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true, - "optional": true + "dev": true }, - "slide": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", - "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "smart-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.1.tgz", + "integrity": "sha512-RFqinRVJVcCAL9Uh1oVqE6FZkqsyLiVOYEZ20TqIOjuX7iFVJ+zsbs4RIghnw/pTs7mZvt8ZHhvm1ZUrR4fykg==", "dev": true }, "snapdragon": { @@ -8322,6 +8224,26 @@ } } }, + "socks": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.2.2.tgz", + "integrity": "sha512-g6wjBnnMOZpE0ym6e0uHSddz9p3a+WsBaaYQaBaSCJYvrC4IXykQR9MNGjLQf38e9iIIhp3b1/Zk8YZI3KGJ0Q==", + "dev": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.0.1" + } + }, + "socks-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz", + "integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==", + "dev": true, + "requires": { + "agent-base": "~4.2.0", + "socks": "~2.2.0" + } + }, "sort-keys": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", @@ -8370,6 +8292,12 @@ "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, + "sourcemap-codec": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.4.tgz", + "integrity": "sha512-CYAPYdBu34781kLHkaW3m6b/uUSyMOC2R61gcYMWooeuaGtjof86ZA/8T+qVPPt7np1085CR9hmMGrySwEc8Xg==", + "dev": true + }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -8436,30 +8364,13 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "sshpk": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.15.1.tgz", - "integrity": "sha512-mSdgNUaidk+dRU5MhYtN9zebdzF2iG0cNPWy8HG+W8y+fT1JnSkh0fzzpjOa0L7P8i1Rscz38t0h4gPcKz43xA==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, "ssri": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", - "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "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": { - "safe-buffer": "^5.1.1" + "figgy-pudding": "^3.5.1" } }, "static-extend": { @@ -8520,6 +8431,16 @@ "readable-stream": "^2.0.2" } }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, "stream-http": { "version": "2.8.3", "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", @@ -8565,6 +8486,12 @@ } } }, + "stream-shift": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", + "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", + "dev": true + }, "strict-uri-encode": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", @@ -8609,6 +8536,12 @@ "is-utf8": "^0.2.0" } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, "style-loader": { "version": "0.18.2", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz", @@ -8665,12 +8598,77 @@ "integrity": "sha1-mTcqXJmb8t8WCvwNdL7U9HlIzSI=", "dev": true }, + "tar": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", "dev": true }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "process-nextick-args": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==", + "dev": true + }, + "readable-stream": { + "version": "2.3.6", + "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "http://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" + } + } + } + }, "timers-browserify": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", @@ -8783,59 +8781,12 @@ "loader-utils": "^0.2.16" } }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - }, "tree-kill": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==", "dev": true }, - "tsickle": { - "version": "0.32.1", - "resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.32.1.tgz", - "integrity": "sha512-JW9j+W0SaMSZGejIFZBk0AiPfnhljK3oLx5SaqxrJhjlvzFyPml5zqG1/PuScUj6yTe1muEqwk5CnDK0cOZmKw==", - "dev": true, - "requires": { - "jasmine-diff": "^0.1.3", - "minimist": "^1.2.0", - "mkdirp": "^0.5.1", - "source-map": "^0.6.0", - "source-map-support": "^0.5.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.9.tgz", - "integrity": "sha512-gR6Rw4MvUlYy83vP0vxoVNzM6t8MUXqNuRsuBmBHQDu1Fh6X015FrLdgoDKcNdkwGubozq0P4N0Q37UyFVr1EA==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - } - } - }, "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", @@ -8920,21 +8871,6 @@ "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", "dev": true }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, "type-detect": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.3.tgz", @@ -8958,9 +8894,9 @@ "dev": true }, "typescript": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", - "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz", + "integrity": "sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==", "dev": true }, "uglify-js": { @@ -9019,6 +8955,24 @@ "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", "dev": true }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.1.tgz", + "integrity": "sha512-n9cU6+gITaVu7VGj1Z8feKMmfAjEAQGhwD9fE3zvpRRa0wEIx8ODYkVGfSc94M2OX00tUFV8wH3zYbm1I8mxFg==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", @@ -9048,9 +9002,9 @@ "dev": true }, "uri-js": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-3.0.2.tgz", - "integrity": "sha1-+QuFhQf4HepNz7s8TD2/orVX+qo=", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, "requires": { "punycode": "^2.1.0" @@ -9185,12 +9139,6 @@ "integrity": "sha1-ApT7kiu5N1FTVBxPcJYjHyh8ivg=", "dev": true }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "dev": true - }, "validate-npm-package-license": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", @@ -9216,17 +9164,6 @@ "integrity": "sha1-N61zyO5Bf7PVgOeFMSMH0nSEfyI=", "dev": true }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "vm-browserify": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-0.0.4.tgz", @@ -9519,16 +9456,6 @@ "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", "dev": true }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", @@ -9603,6 +9530,12 @@ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + }, "yargs": { "version": "6.6.0", "resolved": "http://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", diff --git a/DevActivator/package.json b/DevActivator/package.json index 655b8fd..ac1e8dc 100644 --- a/DevActivator/package.json +++ b/DevActivator/package.json @@ -3,27 +3,28 @@ "private": true, "version": "0.0.0", "scripts": { - "start": "node node_modules/webpack/bin/webpack.js --config webpack.config.vendor.js && node node_modules/webpack/bin/webpack.js --watch", + "start": "webpack --config webpack.config.vendor.js && webpack --watch", + "build:vendor": "webpack --config webpack.config.vendor.js", "lint": "node node_modules/tslint/bin/tslint -p tsconfig.json -c tslint.json", "test": "karma start ClientApp/test/karma.conf.js", "prod": "node node_modules/webpack/bin/webpack.js --config webpack.config.vendor.js --env.prod && node node_modules/webpack/bin/webpack.js --env.prod" }, "devDependencies": { - "@angular/animations": "6.1.10", - "@angular/cdk": "^6.4.7", - "@angular/cli": "^6.2.5", - "@angular/common": "6.1.10", - "@angular/compiler": "6.1.10", - "@angular/compiler-cli": "6.1.10", - "@angular/core": "6.1.10", - "@angular/forms": "6.1.10", - "@angular/http": "6.1.10", - "@angular/material": "^6.4.7", - "@angular/platform-browser": "6.1.10", - "@angular/platform-browser-dynamic": "6.1.10", - "@angular/platform-server": "6.1.10", - "@angular/router": "6.1.10", - "@ngtools/webpack": "^6.2.5", + "@angular/animations": "7.1.4", + "@angular/cdk": "^7.2.0", + "@angular/cli": "^7.1.4", + "@angular/common": "7.1.4", + "@angular/compiler": "7.1.4", + "@angular/compiler-cli": "7.1.4", + "@angular/core": "7.1.4", + "@angular/forms": "7.1.4", + "@angular/http": "7.1.4", + "@angular/material": "^7.2.0", + "@angular/platform-browser": "7.1.4", + "@angular/platform-browser-dynamic": "7.1.4", + "@angular/platform-server": "7.1.4", + "@angular/router": "7.1.4", + "@ngtools/webpack": "^7.1.4", "@types/chai": "4.0.1", "@types/jasmine": "^2.5.53", "@types/webpack-env": "1.13.0", @@ -59,7 +60,7 @@ "style-loader": "0.18.2", "to-string-loader": "1.1.5", "tslint": "^5.11.0", - "typescript": "2.9.2", + "typescript": "3.1.6", "url-loader": "0.5.9", "webpack": "^2.5.1", "webpack-hot-middleware": "2.18.2", @@ -67,4 +68,4 @@ "zone.js": "0.8.26" }, "dependencies": {} -} +} \ No newline at end of file From 7b73e65a959a681b6dc6f992ec3fdb1e6ceba51a Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Tue, 25 Dec 2018 23:32:14 +0300 Subject: [PATCH 02/29] sessions, moment, styles.scss --- DevActivator.Common.BL/Config/CityTimeZone.cs | 21 + .../Enums/City.cs | 2 +- .../Extensions/StringExtension.cs | 11 + .../Extensions/MeetupExtensions.cs | 26 +- .../Extensions/VenueExtensions.cs | 5 +- DevActivator.Meetups.BL/Models/MeetupVm.cs | 2 +- DevActivator.Meetups.BL/Models/SessionVm.cs | 11 + DevActivator.Meetups.BL/Models/VenueVm.cs | 2 +- .../ClientApp/app/core/core.module.ts | 4 +- .../app/core/date-converter.service.ts | 14 + DevActivator/ClientApp/app/core/index.ts | 1 + .../app/pages/meetup-editor/interfaces.ts | 27 +- .../meetup-editor.component.html | 40 +- .../meetup-editor/meetup-editor.component.ts | 2 +- .../meetup-editor/meetup-editor.module.ts | 19 +- .../meetup-editor/meetup-editor.service.ts | 40 +- DevActivator/ClientApp/app/styles.scss | 14 + DevActivator/electron.ps1 | 3 +- DevActivator/npm-shrinkwrap.json | 1014 ++++++++++++++++- DevActivator/package.json | 8 +- DevActivator/webpack.config.vendor.js | 19 +- 21 files changed, 1228 insertions(+), 57 deletions(-) create mode 100644 DevActivator.Common.BL/Config/CityTimeZone.cs rename {DevActivator.Meetups.BL => DevActivator.Common.BL}/Enums/City.cs (91%) create mode 100644 DevActivator.Common.BL/Extensions/StringExtension.cs create mode 100644 DevActivator.Meetups.BL/Models/SessionVm.cs create mode 100644 DevActivator/ClientApp/app/core/date-converter.service.ts create mode 100644 DevActivator/ClientApp/app/styles.scss diff --git a/DevActivator.Common.BL/Config/CityTimeZone.cs b/DevActivator.Common.BL/Config/CityTimeZone.cs new file mode 100644 index 0000000..f8341d8 --- /dev/null +++ b/DevActivator.Common.BL/Config/CityTimeZone.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using DevActivator.Common.BL.Enums; + +namespace DevActivator.Common.BL.Config +{ + public static class CityTimeZone + { + public static TimeSpan GetTimeZone(this City city) => TimeZoneDic[city]; + + private static readonly Dictionary TimeZoneDic = new Dictionary + { + {City.Spb, TimeSpan.FromHours(3)}, + {City.Msk, TimeSpan.FromHours(3)}, + {City.Sar, TimeSpan.FromHours(4)}, + {City.Kry, TimeSpan.FromHours(7)}, + {City.Kzn, TimeSpan.FromHours(3)}, + {City.Nsk, TimeSpan.FromHours(7)}, + }; + } +} \ No newline at end of file diff --git a/DevActivator.Meetups.BL/Enums/City.cs b/DevActivator.Common.BL/Enums/City.cs similarity index 91% rename from DevActivator.Meetups.BL/Enums/City.cs rename to DevActivator.Common.BL/Enums/City.cs index 3c97e62..d3a3e47 100644 --- a/DevActivator.Meetups.BL/Enums/City.cs +++ b/DevActivator.Common.BL/Enums/City.cs @@ -1,4 +1,4 @@ -namespace DevActivator.Meetups.BL.Enums +namespace DevActivator.Common.BL.Enums { public enum City { diff --git a/DevActivator.Common.BL/Extensions/StringExtension.cs b/DevActivator.Common.BL/Extensions/StringExtension.cs new file mode 100644 index 0000000..405e7c2 --- /dev/null +++ b/DevActivator.Common.BL/Extensions/StringExtension.cs @@ -0,0 +1,11 @@ +using System; +using DevActivator.Common.BL.Enums; + +namespace DevActivator.Common.BL.Extensions +{ + public static class StringExtension + { + public static City GetCity(this string id) + => (City) Enum.Parse(typeof(City), id.Substring(0, 3), true); + } +} \ No newline at end of file diff --git a/DevActivator.Meetups.BL/Extensions/MeetupExtensions.cs b/DevActivator.Meetups.BL/Extensions/MeetupExtensions.cs index 20be34d..a3c1072 100644 --- a/DevActivator.Meetups.BL/Extensions/MeetupExtensions.cs +++ b/DevActivator.Meetups.BL/Extensions/MeetupExtensions.cs @@ -1,5 +1,8 @@ using System; +using System.Globalization; using System.Linq; +using DevActivator.Common.BL.Config; +using DevActivator.Common.BL.Extensions; using DevActivator.Meetups.BL.Entities; using DevActivator.Meetups.BL.Enums; using DevActivator.Meetups.BL.Models; @@ -44,11 +47,12 @@ public static MeetupVm ToVm(this Meetup meetup) CommunityId = meetup.CommunityId.GetCommunity(), FriendIds = meetup.FriendIds.Select(x => new FriendReference {FriendId = x}).ToList(), VenueId = meetup.VenueId, - Sessions = meetup.Sessions.Select(x => new Session + Sessions = meetup.Sessions.Select(x => new SessionVm { TalkId = x.TalkId, - StartTime = x.StartTime, - EndTime = x.EndTime + // todo: extract as helper method + StartTime = x.StartTime.Add(meetup.VenueId.GetCity().GetTimeZone()).ToString("yyyy-MM-ddTHH:mm:ss"), + EndTime = x.EndTime.Add(meetup.VenueId.GetCity().GetTimeZone()).ToString("yyyy-MM-ddTHH:mm:ss") }).ToList(), }; @@ -58,13 +62,25 @@ public static Meetup Extend(this Meetup original, MeetupVm meetup) Id = original.Id, Name = meetup.Name, CommunityId = meetup.CommunityId.ToString(), + Date = original.Date, FriendIds = meetup.FriendIds.Select(x => x.FriendId).ToList(), VenueId = meetup.VenueId, Sessions = meetup.Sessions.Select(x => new Session { TalkId = x.TalkId, - StartTime = x.StartTime, - EndTime = x.EndTime + // todo: extract as helper method + StartTime = DateTime.ParseExact( + $"{x.StartTime}Z", + "yyyy-MM-ddTHH:mm:ssZ", + CultureInfo.InvariantCulture, + DateTimeStyles.AdjustToUniversal) + .Subtract(meetup.VenueId.GetCity().GetTimeZone()), + EndTime = DateTime.ParseExact( + $"{x.EndTime}Z", + "yyyy-MM-ddTHH:mm:ssZ", + CultureInfo.InvariantCulture, + DateTimeStyles.AdjustToUniversal) + .Subtract(meetup.VenueId.GetCity().GetTimeZone()) }).ToList(), TalkIds = meetup.Sessions.Select(x => x.TalkId).ToList(), }; diff --git a/DevActivator.Meetups.BL/Extensions/VenueExtensions.cs b/DevActivator.Meetups.BL/Extensions/VenueExtensions.cs index 86aa2c5..8a68c1b 100644 --- a/DevActivator.Meetups.BL/Extensions/VenueExtensions.cs +++ b/DevActivator.Meetups.BL/Extensions/VenueExtensions.cs @@ -1,6 +1,6 @@ using System; +using DevActivator.Common.BL.Extensions; using DevActivator.Meetups.BL.Entities; -using DevActivator.Meetups.BL.Enums; using DevActivator.Meetups.BL.Models; namespace DevActivator.Meetups.BL.Extensions @@ -47,8 +47,5 @@ public static Venue Extend(this Venue original, VenueVm venue) Address = venue.Address, MapUrl = venue.MapUrl }; - - private static City GetCity(this string id) - => (City) Enum.Parse(typeof(City), id.Substring(0, 3), true); } } \ No newline at end of file diff --git a/DevActivator.Meetups.BL/Models/MeetupVm.cs b/DevActivator.Meetups.BL/Models/MeetupVm.cs index 0869da9..80db5e4 100644 --- a/DevActivator.Meetups.BL/Models/MeetupVm.cs +++ b/DevActivator.Meetups.BL/Models/MeetupVm.cs @@ -16,6 +16,6 @@ public class MeetupVm public string VenueId { get; set; } - public List Sessions { get; set; } + public List Sessions { get; set; } } } \ No newline at end of file diff --git a/DevActivator.Meetups.BL/Models/SessionVm.cs b/DevActivator.Meetups.BL/Models/SessionVm.cs new file mode 100644 index 0000000..46a3200 --- /dev/null +++ b/DevActivator.Meetups.BL/Models/SessionVm.cs @@ -0,0 +1,11 @@ +namespace DevActivator.Meetups.BL.Models +{ + public class SessionVm + { + public string TalkId { get; set; } + + public string StartTime { get; set; } + + public string EndTime { get; set; } + } +} \ No newline at end of file diff --git a/DevActivator.Meetups.BL/Models/VenueVm.cs b/DevActivator.Meetups.BL/Models/VenueVm.cs index 1ce89f4..11abb3b 100644 --- a/DevActivator.Meetups.BL/Models/VenueVm.cs +++ b/DevActivator.Meetups.BL/Models/VenueVm.cs @@ -1,4 +1,4 @@ -using DevActivator.Meetups.BL.Enums; +using DevActivator.Common.BL.Enums; namespace DevActivator.Meetups.BL.Models { diff --git a/DevActivator/ClientApp/app/core/core.module.ts b/DevActivator/ClientApp/app/core/core.module.ts index bf80640..81ed58b 100644 --- a/DevActivator/ClientApp/app/core/core.module.ts +++ b/DevActivator/ClientApp/app/core/core.module.ts @@ -1,5 +1,6 @@ import { NgModule } from "@angular/core"; +import { DateConverterService } from "./date-converter.service"; import { HttpService } from "./http.service"; import { LayoutService } from "./layout.service"; import { PatternErrorMessagePipe } from "./pattern-error-message.pipe"; @@ -15,8 +16,9 @@ import { RequiredErrorMessagePipe } from "./required-error-message.pipe"; RequiredErrorMessagePipe, ], providers: [ - LayoutService, + DateConverterService, HttpService, + LayoutService, ], }) export class CoreModule { } diff --git a/DevActivator/ClientApp/app/core/date-converter.service.ts b/DevActivator/ClientApp/app/core/date-converter.service.ts new file mode 100644 index 0000000..d92b756 --- /dev/null +++ b/DevActivator/ClientApp/app/core/date-converter.service.ts @@ -0,0 +1,14 @@ +import * as moment from "moment"; +import { Moment } from "moment"; + +moment.locale("ru"); + +export class DateConverterService { + public static toMoment(date: string): Moment { + return moment(date).clone(); + } + + public static toApiString(date: Moment): string { + return date.format("YYYY-MM-DDTHH:mm:ss"); + } +} diff --git a/DevActivator/ClientApp/app/core/index.ts b/DevActivator/ClientApp/app/core/index.ts index d4cd3a0..83f111c 100644 --- a/DevActivator/ClientApp/app/core/index.ts +++ b/DevActivator/ClientApp/app/core/index.ts @@ -9,3 +9,4 @@ export { CoreModule } from "./core.module"; export { LayoutService } from "./layout.service"; export { HttpService } from "./http.service"; export { IMessage } from "./interfaces"; +export { DateConverterService } from "./date-converter.service"; diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/interfaces.ts b/DevActivator/ClientApp/app/pages/meetup-editor/interfaces.ts index 3521873..22fb3c5 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/interfaces.ts +++ b/DevActivator/ClientApp/app/pages/meetup-editor/interfaces.ts @@ -1,28 +1,29 @@ +import { Moment } from "moment"; + export interface IFriendReference { friendId: string; } -export interface IApiSession { +export interface ISession { talkId: string; - startTime: string; - endTime: string; + startTime: Moment; + endTime: Moment; } -export type ISession = IApiSession & { - // todo: date to moment - startTime: Date; - endTime: Date; -}; - -export interface IApiMeetup { +export interface IMeetup { id: string; name: string; communityId: string; friendIds: IFriendReference[]; venueId: string; - sessions: IApiSession[]; + sessions: ISession[]; } -export type IMeetup = IApiMeetup & { - sessions: ISession[]; +export type IApiSession = ISession & { + startTime: string; + endTime: string; +}; + +export type IApiMeetup = IMeetup & { + sessions: IApiSession[]; }; diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.html b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.html index 5143677..3828d1a 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.html +++ b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.html @@ -84,14 +84,50 @@ + -
{{ session.startTime }}
-
{{ session.endTime }}
+ + + Время начала + + + + + + + Время окончания + + + + +
diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts index c3ddd56..95da855 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts +++ b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts @@ -2,9 +2,12 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnIni import { ActivatedRoute, Params, Router } from "@angular/router"; import { LABELS, LayoutService, PATTERNS } from "@dotnetru/core"; import { IAutocompleteRow } from "@dotnetru/shared/autocomplete"; +import { Moment } from "moment"; import { Subscription } from "rxjs"; -import { IMeetup } from "./interfaces"; +import { COMMUNITIES } from "./constants"; +import { Community } from "./enums"; +import { IMeetup, ISession } from "./interfaces"; import { MeetupEditorService } from "./meetup-editor.service"; @Component({ @@ -17,10 +20,12 @@ import { MeetupEditorService } from "./meetup-editor.service"; export class MeetupEditorComponent implements OnInit, OnDestroy { public readonly LABELS = LABELS; public readonly PATTERNS = PATTERNS; + public readonly Community = Community; + public readonly COMMUNITIES = COMMUNITIES; // todo: create service method getDefaultMeetup public meetup: IMeetup = { - communityId: "", + communityId: Community.SpbDotNet, friendIds: [], id: "", name: "", @@ -98,15 +103,39 @@ export class MeetupEditorComponent implements OnInit, OnDestroy { this.meetup.venueId = row.id; } - // public onTalkSelected(row: IAutocompleteRow, index: number): void { - // this.meetup.talkIds[index] = { talkId: row.id }; - // } + public onTalkSelected(row: IAutocompleteRow, index: number): void { + this.meetup.sessions[index].talkId = row.id; + } + + public removeSession(index: number): void { + this.meetup.sessions.splice(index, 1); + } + + public tryFillEndTime(session: ISession): void { + console.log("tryFillEndTime", session); + if (session.startTime && !session.endTime) { + session.endTime = session.startTime.clone().add(1, "hour"); + } + } - // public removeTalk(index: number): void { - // this.meetup.talkIds.splice(index, 1); - // } + public addSession(): void { + let startTime: Moment | undefined; + if (this.meetup.sessions.length > 0) { + const lastSession = this.meetup.sessions[this.meetup.sessions.length - 1]; + if (lastSession.endTime) { + startTime = lastSession.endTime.clone().add(30, "minutes"); + } + } - // public addTalk(): void { - // this.meetup.talkIds.push({ talkId: "" }); - // } + let endTime: Moment | undefined; + if (startTime) { + endTime = startTime.clone().add(1, "hour"); + } + + this.meetup.sessions.push({ + endTime, + startTime, + talkId: "", + }); + } } diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.module.ts b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.module.ts index e5b3282..86130a8 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.module.ts +++ b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.module.ts @@ -9,6 +9,7 @@ import { MatFormFieldModule, MatIconModule, MatInputModule, + MatSelectModule, } from "@angular/material"; import { RouterModule } from "@angular/router"; import { CoreModule } from "@dotnetru/core"; @@ -49,6 +50,7 @@ import { MeetupEditorComponent } from "./meetup-editor.component"; MatFormFieldModule, MatIconModule, MatInputModule, + MatSelectModule, CoreModule, FriendListModule, diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.service.ts b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.service.ts index 436e826..636d4a8 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.service.ts +++ b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.service.ts @@ -77,8 +77,8 @@ export class MeetupEditorService { private toApiMeetup = (meetup: IMeetup): IApiMeetup => Object.assign({}, meetup, { sessions: meetup.sessions.map((x: ISession) => Object.assign({}, x, { - endTime: DateConverterService.toApiString(x.endTime), - startTime: DateConverterService.toApiString(x.startTime), + endTime: DateConverterService.toApiString(x.endTime!), + startTime: DateConverterService.toApiString(x.startTime!), })), }) } From 106eda0ec860b3e6fee7b524c55e199c49a6bcdb Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Tue, 22 Jan 2019 18:50:52 +0300 Subject: [PATCH 04/29] material icons font self hosting --- DevActivator/Views/Shared/_Layout.cshtml | 2 +- DevActivator/wwwroot/material-icons/font.css | 24 ++++++++++++++++++ .../wwwroot/material-icons/font.woff2 | Bin 0 -> 58004 bytes 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 DevActivator/wwwroot/material-icons/font.css create mode 100644 DevActivator/wwwroot/material-icons/font.woff2 diff --git a/DevActivator/Views/Shared/_Layout.cshtml b/DevActivator/Views/Shared/_Layout.cshtml index c278b64..2688638 100644 --- a/DevActivator/Views/Shared/_Layout.cshtml +++ b/DevActivator/Views/Shared/_Layout.cshtml @@ -6,7 +6,7 @@ @ViewData["Title"] - DevActivator - + @RenderBody() From 38e3e6f6d81594d30b3194fe9a886f55a9901b59 Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Wed, 6 Feb 2019 16:06:11 +0300 Subject: [PATCH 07/29] menu refactoring --- .../ClientApp/app/components/navmenu/index.ts | 1 + .../components/navmenu/navmenu.component.css | 4 ++ .../components/navmenu/navmenu.component.html | 53 ++++++++++++++----- .../app/components/navmenu/navmenu.module.ts | 8 +-- .../components/toolbar/toolbar.component.css | 4 ++ .../components/toolbar/toolbar.component.html | 5 +- .../app/components/toolbar/toolbar.module.ts | 2 + 7 files changed, 61 insertions(+), 16 deletions(-) create mode 100644 DevActivator/ClientApp/app/components/navmenu/index.ts diff --git a/DevActivator/ClientApp/app/components/navmenu/index.ts b/DevActivator/ClientApp/app/components/navmenu/index.ts new file mode 100644 index 0000000..fcbad19 --- /dev/null +++ b/DevActivator/ClientApp/app/components/navmenu/index.ts @@ -0,0 +1 @@ +export { NavMenuModule } from "./navmenu.module"; diff --git a/DevActivator/ClientApp/app/components/navmenu/navmenu.component.css b/DevActivator/ClientApp/app/components/navmenu/navmenu.component.css index e69de29..1637f87 100644 --- a/DevActivator/ClientApp/app/components/navmenu/navmenu.component.css +++ b/DevActivator/ClientApp/app/components/navmenu/navmenu.component.css @@ -0,0 +1,4 @@ +:host { + display: flex; + flex-direction: column; +} \ No newline at end of file diff --git a/DevActivator/ClientApp/app/components/navmenu/navmenu.component.html b/DevActivator/ClientApp/app/components/navmenu/navmenu.component.html index 758e3c6..b643239 100644 --- a/DevActivator/ClientApp/app/components/navmenu/navmenu.component.html +++ b/DevActivator/ClientApp/app/components/navmenu/navmenu.component.html @@ -1,12 +1,41 @@ - \ No newline at end of file + + + + search + Поиск + + + + developer_mode + В разработке + + + + + + person + Спикера + + + speaker_notes + Доклад + + + account_balance + Площадку + + + loyalty + Друга + + \ No newline at end of file diff --git a/DevActivator/ClientApp/app/components/navmenu/navmenu.module.ts b/DevActivator/ClientApp/app/components/navmenu/navmenu.module.ts index 4760038..a9bd826 100644 --- a/DevActivator/ClientApp/app/components/navmenu/navmenu.module.ts +++ b/DevActivator/ClientApp/app/components/navmenu/navmenu.module.ts @@ -1,5 +1,5 @@ import { NgModule } from "@angular/core"; -import { MatMenuModule } from "@angular/material"; +import { MatButtonModule, MatIconModule, MatMenuModule } from "@angular/material"; import { RouterModule } from "@angular/router"; import { NavMenuComponent } from "./navmenu.component"; @@ -13,8 +13,10 @@ import { NavMenuComponent } from "./navmenu.component"; ], imports: [ RouterModule, + + MatButtonModule, + MatIconModule, MatMenuModule, ], }) -export class NavMenuModule { -} +export class NavMenuModule { } diff --git a/DevActivator/ClientApp/app/components/toolbar/toolbar.component.css b/DevActivator/ClientApp/app/components/toolbar/toolbar.component.css index f09d325..54fb167 100644 --- a/DevActivator/ClientApp/app/components/toolbar/toolbar.component.css +++ b/DevActivator/ClientApp/app/components/toolbar/toolbar.component.css @@ -1,3 +1,7 @@ :host { display: block; +} + +mtp-menu { + flex-direction: row; } \ No newline at end of file diff --git a/DevActivator/ClientApp/app/components/toolbar/toolbar.component.html b/DevActivator/ClientApp/app/components/toolbar/toolbar.component.html index 09f7cfa..31b70c8 100644 --- a/DevActivator/ClientApp/app/components/toolbar/toolbar.component.html +++ b/DevActivator/ClientApp/app/components/toolbar/toolbar.component.html @@ -12,5 +12,8 @@ menu Меню - DevActivator v0.0.1-alpha + + + DevActivator v0.0.1-alpha + \ No newline at end of file diff --git a/DevActivator/ClientApp/app/components/toolbar/toolbar.module.ts b/DevActivator/ClientApp/app/components/toolbar/toolbar.module.ts index 14038fd..52bcc24 100644 --- a/DevActivator/ClientApp/app/components/toolbar/toolbar.module.ts +++ b/DevActivator/ClientApp/app/components/toolbar/toolbar.module.ts @@ -7,6 +7,7 @@ import { MatToolbarModule, } from "@angular/material"; import { CoreModule } from "@dotnetru/core"; +import { NavMenuModule } from "@dotnetru/navmenu"; import { ToolbarComponent } from "./toolbar.component"; @@ -19,6 +20,7 @@ import { ToolbarComponent } from "./toolbar.component"; ], imports: [ CoreModule, + NavMenuModule, MatButtonModule, MatIconModule, From 776c352b1f1b540f6e652ce4abfaaef8ccb0f63a Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Wed, 6 Feb 2019 21:30:12 +0300 Subject: [PATCH 08/29] extract session into separate component --- DevActivator/ClientApp/app/app.component.css | 5 + DevActivator/ClientApp/app/app.component.html | 4 +- .../app/core/date-converter.service.ts | 3 +- .../meetup-editor/meetup-editor.component.css | 5 + .../meetup-editor.component.html | 52 +----- .../meetup-editor/meetup-editor.component.ts | 13 +- .../meetup-editor/meetup-editor.module.ts | 3 + .../meetup-editor/meetup-editor.service.ts | 16 +- .../session-editor.component.css | 3 + .../session-editor.component.html | 41 ++++ .../meetup-editor/session-editor.component.ts | 41 ++++ .../talk-editor/talk-editor.component.html | 2 +- .../app/pages/timepad/timepad.component.css | 3 +- .../app/pages/timepad/timepad.component.html | 175 ++++++++++-------- .../app/pages/timepad/timepad.component.ts | 45 ++++- .../app/pages/timepad/timepad.service.ts | 10 +- 16 files changed, 266 insertions(+), 155 deletions(-) create mode 100644 DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.css create mode 100644 DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.html create mode 100644 DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.ts diff --git a/DevActivator/ClientApp/app/app.component.css b/DevActivator/ClientApp/app/app.component.css index 4825c8b..787220b 100644 --- a/DevActivator/ClientApp/app/app.component.css +++ b/DevActivator/ClientApp/app/app.component.css @@ -2,4 +2,9 @@ .mat-drawer-container { height: 100%; display: block; +} + +.router-container { + /* 64px - toolbar */ + height: calc(100% - 64px); } \ No newline at end of file diff --git a/DevActivator/ClientApp/app/app.component.html b/DevActivator/ClientApp/app/app.component.html index 7dd5197..175d7e1 100644 --- a/DevActivator/ClientApp/app/app.component.html +++ b/DevActivator/ClientApp/app/app.component.html @@ -6,6 +6,8 @@ - +
+ +
\ No newline at end of file diff --git a/DevActivator/ClientApp/app/core/date-converter.service.ts b/DevActivator/ClientApp/app/core/date-converter.service.ts index bf3caba..79cb303 100644 --- a/DevActivator/ClientApp/app/core/date-converter.service.ts +++ b/DevActivator/ClientApp/app/core/date-converter.service.ts @@ -12,10 +12,11 @@ export class DateConverterService { if (!date) { return ""; } + return date.format(format || "YYYY-MM-DDTHH:mm:ss"); } public static toApiString(date: Moment): string { - return date.toString(); + return DateConverterService.toString(date); } } diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.css b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.css index 06870b8..d9aa4cc 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.css +++ b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.css @@ -1,3 +1,8 @@ +:host { + display: block; + height: 100%; +} + .mat-form-field { width: 100%; margin: 0 auto; diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.html b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.html index b732988..e1c866a 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.html +++ b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.html @@ -95,53 +95,11 @@ (selected)="onVenueSelected($event)"> - - - - - - Время начала - - - - - - - Время окончания - - - - - - + diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.css b/DevActivator/ClientApp/app/pages/timepad/timepad.component.css index 93767a3..385ffc9 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.css +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.css @@ -15,9 +15,10 @@ padding: 12px 0 !important; } -.list-item-content { +.session-content { display: flex; align-items: flex-start; + padding: 8px 0; } .nowrap { diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html index fc008a7..5a9273d 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html @@ -1,97 +1,110 @@
- -

Программа встречи

- - - -
- - {{ sessoin.startTime | datetime : timeFormat }} - - - {{ sessoin.endTime | datetime : timeFormat }} - - - - {{ speakers[ref.speakerId].name }} - ({{ speakers[ref.speakerId].companyName }}) - - «{{ talks[sessoin.talkId].title }}» - - -
-
- - - - {{ sessoin.endTime | datetime : timeFormat }} - - - {{ sessions[i+1].startTime | datetime : timeFormat }} - Перерыв - - +

Программа встречи

+ + + + + + + +
+ + + {{ session.startTime | datetime : timeFormat }} + - + {{ session.endTime | datetime : timeFormat }} + + + + + {{ speakers[ref.speakerId].name }} + ({{ speakers[ref.speakerId].companyName }}) + + «{{ talks[session.talkId].title }}» + + + + +
+
+
+ + + + + +
+
- - - - -
+ + + + +

После этих вдохновляющих речей приглашаем всех желающих в бар для обсуждения накопившихся вопросов и идей!

Доклады

- - + + + - - - -

{{ sessionIx + 1 }}. «{{ talk.title }}»

-

{{ talk.description }}

-
-
+ + + +

{{ sessionIx + 1 }}. «{{ talk.title }}»

+

{{ talk.description }}

+
+
- - - - -
+ + + + +
- - + + - - - -

{{ speaker.name }}

-
-
- + + + +

{{ speaker.name }}

+
+
+ +
+

{{ speaker.description }}

-

{{ speaker.description }}

-
- - + + - - - - - + + + + + + diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts index 08e6992..df985b0 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts @@ -1,9 +1,10 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from "@angular/core"; import { ActivatedRoute, Params } from "@angular/router"; +import { LayoutService } from "@dotnetru/core"; import { Subscription } from "rxjs"; -import { Community } from "../meetup-editor/enums"; -import { IMeetup, ISession } from "../meetup-editor/interfaces"; -import { MeetupEditorService } from "../meetup-editor/meetup-editor.service"; + +import { Moment } from "moment"; +import { ISession } from "../meetup-editor/interfaces"; import { ITalk } from "../talk-editor/interfaces"; import { ISpeaker } from "./../speaker-editor/interfaces"; import { ICompositeMeetup, IMap, IRandomConcatModel } from "./interfaces"; @@ -41,6 +42,7 @@ export class TimepadComponent implements OnInit, OnDestroy { constructor( private _compositeService: CompositeService, + private _layoutService: LayoutService, private _activatedRoute: ActivatedRoute, private _changeDetectorRef: ChangeDetectorRef, ) { } @@ -67,15 +69,50 @@ export class TimepadComponent implements OnInit, OnDestroy { this._subs.forEach((x) => x.unsubscribe); } + public addSession(talkId: string = ""): void { + // todo: remove code duplication, see meetup-editor.component.ts + let startTime: Moment | undefined; + if (this.sessions.length > 0) { + const lastSession = this.sessions[this.sessions.length - 1]; + if (lastSession.endTime) { + startTime = lastSession.endTime.clone().add(30, "minutes"); + } + } + + let endTime: Moment | undefined; + if (startTime) { + endTime = startTime.clone().add(1, "hour"); + } + + this.sessions.push({ talkId, startTime, endTime }); + } + public deleteSession(index: number): void { this.sessions.splice(index, 1); } + public onTalkSelected(talkId: string, index: number): void { + const descriptor = this.descriptor; + if (descriptor.talkIds.some((x) => x === talkId)) { + this.sessions[index].talkId = talkId; + } else { + descriptor.talkIds.push(talkId); + this._compositeService.fetchMeetup(this._meetupId, descriptor, () => { + const session: ISession | undefined = this.sessions[index]; + if (session) { + this.sessions[index].talkId = talkId; + } else { + this.addSession(talkId); + } + }); + } + } + public onTalkSaved(talk: ITalk): void { if (talk.speakerIds.some((x) => { return !this.speakers[x.speakerId]; })) { - this._compositeService.fetchMeetup(this.meetupId, this.descriptor); + this._compositeService.fetchMeetup(this._meetupId, this.descriptor); } else { this.talks[talk.id] = talk; } diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts index d5ff685..5bea5b2 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts @@ -1,6 +1,6 @@ import { Injectable } from "@angular/core"; import { Router } from "@angular/router"; -import { API_ENDPOINTS, DateConverterService, HttpService, LayoutService } from "@dotnetru/core"; +import { API_ENDPOINTS, DateConverterService, HttpService } from "@dotnetru/core"; import { BehaviorSubject, Observable } from "rxjs"; import { filter, map } from "rxjs/operators"; @@ -19,14 +19,13 @@ export class CompositeService { private _meetup$: BehaviorSubject = new BehaviorSubject(null); constructor( - private _layoutService: LayoutService, private _httpService: HttpService, private _router: Router, ) { } - public fetchMeetup(meetupId: string, descriptor: IRandomConcatModel): void { + public fetchMeetup(meetupId: string | undefined, descriptor: IRandomConcatModel, cb?: () => void): void { this._httpService.post( - API_ENDPOINTS.getCompositeMeetupUrl.replace("{{meetupId}}", meetupId), + API_ENDPOINTS.getCompositeMeetupUrl.replace("{{meetupId}}", meetupId || ""), descriptor, (res: IApiCompositeMeetup) => { const model: ICompositeMeetup = Object.assign({}, { @@ -39,6 +38,9 @@ export class CompositeService { }); this._meetup$.next(model); + if (cb) { + cb(); + } }); } } From d04ed8e4faa175257ddcec55439613f0c864bc79 Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Thu, 7 Feb 2019 20:59:18 +0300 Subject: [PATCH 09/29] create talk via dialog --- .../meetup-editor/meetup-editor.component.ts | 8 ++- .../session-editor.component.html | 12 ++++- .../meetup-editor/session-editor.component.ts | 22 +++++++- .../speaker-editor-dialog.component.ts | 11 +--- .../ClientApp/app/pages/talk-editor/index.ts | 2 + .../talk-editor-dialog.component.ts | 36 +++++++++++++ .../talk-editor/talk-editor.component.html | 3 +- .../talk-editor/talk-editor.component.ts | 9 +++- .../pages/talk-editor/talk-editor.module.ts | 4 ++ .../pages/talk-editor/talk-editor.service.ts | 8 ++- .../app/pages/timepad/timepad.component.html | 13 +++++ .../app/pages/timepad/timepad.component.ts | 7 ++- .../app/pages/timepad/timepad.module.ts | 2 + DevActivator/ClientApp/app/themes/common.scss | 54 ++++++++++--------- 14 files changed, 146 insertions(+), 45 deletions(-) create mode 100644 DevActivator/ClientApp/app/pages/talk-editor/talk-editor-dialog.component.ts diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts index 4b1cb95..f5e85a8 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts +++ b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts @@ -104,7 +104,13 @@ export class MeetupEditorComponent implements OnInit, OnDestroy { } public onTalkSelected(talkId: string, index: number): void { - this.meetup.sessions[index].talkId = talkId; + this.meetup.sessions[index] = Object.assign( + {}, + this.meetup.sessions[index], + { + talkId, + }, + ); } public onRemoveSession(index: number): void { diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.html b/DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.html index 0cfc0e0..d2f646a 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.html +++ b/DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.html @@ -38,4 +38,14 @@ required autocomplete="false" [(ngModel)]="session.endTime"> - \ No newline at end of file + + +
+ +
\ No newline at end of file diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.ts b/DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.ts index 6992862..8ba3e5a 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.ts +++ b/DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.ts @@ -1,4 +1,6 @@ -import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from "@angular/core"; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from "@angular/core"; +import { MatDialog } from "@angular/material"; +import { ITalk, TalkEditorDialogComponent } from "@dotnetru/pages/talk-editor"; import { IAutocompleteRow } from "@dotnetru/shared/autocomplete"; import { ISession } from "./interfaces"; @@ -25,6 +27,11 @@ export class SessionEditorComponent { private _session: ISession = { talkId: "" }; + constructor( + private _dialog: MatDialog, + private _changeDetectorRef: ChangeDetectorRef, + ) { } + public onTalkSelected(row: IAutocompleteRow): void { this.talkSelected.emit(row.id); } @@ -38,4 +45,17 @@ export class SessionEditorComponent { this.session.endTime = this.session.startTime.clone().add(1, "hour"); } } + + public createTalk(): void { + const dialogRef = this._dialog.open(TalkEditorDialogComponent, { + panelClass: "full-height", + width: "640px", + }); + + dialogRef.afterClosed().subscribe((talk?: ITalk) => { + if (talk && talk.id) { + this.talkSelected.emit(talk.id); + } + }); + } } diff --git a/DevActivator/ClientApp/app/pages/speaker-editor/speaker-editor-dialog.component.ts b/DevActivator/ClientApp/app/pages/speaker-editor/speaker-editor-dialog.component.ts index 0b47111..dd8e79f 100644 --- a/DevActivator/ClientApp/app/pages/speaker-editor/speaker-editor-dialog.component.ts +++ b/DevActivator/ClientApp/app/pages/speaker-editor/speaker-editor-dialog.component.ts @@ -1,5 +1,5 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject } from "@angular/core"; -import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material"; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from "@angular/core"; +import { MatDialogRef } from "@angular/material"; import { ActivatedRoute, Router } from "@angular/router"; import { LayoutService } from "@dotnetru/core"; @@ -7,12 +7,6 @@ import { ISpeaker } from "./interfaces"; import { SpeakerEditorComponent } from "./speaker-editor.component"; import { SpeakerEditorService } from "./speaker-editor.service"; -export interface IDialogData { - id?: string; -} - -const successDialogResult: true = true; - @Component({ changeDetection: ChangeDetectionStrategy.OnPush, providers: [SpeakerEditorService], @@ -23,7 +17,6 @@ const successDialogResult: true = true; export class SpeakerEditorDialogComponent extends SpeakerEditorComponent { constructor( private _dialogRef: MatDialogRef, - @Inject(MAT_DIALOG_DATA) private _data: IDialogData, speakerEditorService: SpeakerEditorService, layoutService: LayoutService, activatedRoute: ActivatedRoute, diff --git a/DevActivator/ClientApp/app/pages/talk-editor/index.ts b/DevActivator/ClientApp/app/pages/talk-editor/index.ts index 9d3b607..b659367 100644 --- a/DevActivator/ClientApp/app/pages/talk-editor/index.ts +++ b/DevActivator/ClientApp/app/pages/talk-editor/index.ts @@ -1 +1,3 @@ +export { ITalk } from "./interfaces"; +export { TalkEditorDialogComponent } from "./talk-editor-dialog.component"; export { TalkEditorModule } from "./talk-editor.module"; diff --git a/DevActivator/ClientApp/app/pages/talk-editor/talk-editor-dialog.component.ts b/DevActivator/ClientApp/app/pages/talk-editor/talk-editor-dialog.component.ts new file mode 100644 index 0000000..53bff74 --- /dev/null +++ b/DevActivator/ClientApp/app/pages/talk-editor/talk-editor-dialog.component.ts @@ -0,0 +1,36 @@ +import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from "@angular/core"; +import { MatDialog, MatDialogRef } from "@angular/material"; +import { ActivatedRoute, Router } from "@angular/router"; +import { LayoutService } from "@dotnetru/core"; + +import { ITalk } from "./interfaces"; +import { TalkEditorComponent } from "./talk-editor.component"; +import { TalkEditorService } from "./talk-editor.service"; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + providers: [TalkEditorService], + selector: "mtp-talk-editor-dialog", + styleUrls: ["./talk-editor.component.css"], + templateUrl: "./talk-editor.component.html", +}) +export class TalkEditorDialogComponent extends TalkEditorComponent { + constructor( + private _dialogRef: MatDialogRef, + talkEditorService: TalkEditorService, + layoutService: LayoutService, + dialog: MatDialog, + activatedRoute: ActivatedRoute, + router: Router, + changeDetectorRef: ChangeDetectorRef, + ) { + super(talkEditorService, layoutService, dialog, activatedRoute, router, changeDetectorRef); + this.isDialog = true; + } + + public save(cb?: (talk: ITalk) => void): void { + super.save((talk: ITalk) => { + this._dialogRef.close(talk); + }); + } +} diff --git a/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.html b/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.html index d93d24e..38cf946 100644 --- a/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.html +++ b/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.html @@ -2,7 +2,8 @@ class="base-component-container">
- + +
+ + + + + +
+ +
+ +
+ + + + + + +

Программа встречи

+ (cdkDropListDropped)="onSessionDrop($event)"> @@ -16,7 +82,9 @@

Программа встречи

- + + diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts index 71cc80d..71c0c11 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts @@ -1,13 +1,14 @@ import { CdkDragDrop, moveItemInArray } from "@angular/cdk/drag-drop"; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from "@angular/core"; import { ActivatedRoute, Params } from "@angular/router"; -import { LayoutService } from "@dotnetru/core"; import { Moment } from "moment"; import { Subscription } from "rxjs"; +import { FriendEditorService } from "../friend-editor/friend-editor.service"; +import { IFriend } from "../friend-editor/interfaces"; import { ISession } from "../meetup-editor/interfaces"; +import { ISpeaker } from "../speaker-editor/interfaces"; import { ITalk } from "../talk-editor/interfaces"; -import { ISpeaker } from "./../speaker-editor/interfaces"; import { ICompositeMeetup, IMap, IRandomConcatModel } from "./interfaces"; import { CompositeService } from "./timepad.service"; @@ -24,6 +25,7 @@ export class TimepadComponent implements OnInit, OnDestroy { public sessions: ISession[] = []; public talks: IMap = {}; public speakers: IMap = {}; + public friends: IFriend[] = []; @Input() set meetupId(value: string) { this._meetupId = value; @@ -35,6 +37,7 @@ export class TimepadComponent implements OnInit, OnDestroy { private get descriptor(): IRandomConcatModel { return { + friendIds: this.friends.map((x) => x.id), sessions: this.sessions, speakerIds: Object.keys(this.speakers), talkIds: Object.keys(this.talks), @@ -43,7 +46,6 @@ export class TimepadComponent implements OnInit, OnDestroy { constructor( private _compositeService: CompositeService, - private _layoutService: LayoutService, private _activatedRoute: ActivatedRoute, private _changeDetectorRef: ChangeDetectorRef, ) { } @@ -61,6 +63,7 @@ export class TimepadComponent implements OnInit, OnDestroy { this.sessions = data.sessions; this.talks = data.talks; this.speakers = data.speakers; + this.friends = data.friends; this._changeDetectorRef.detectChanges(); }), ]; @@ -127,8 +130,31 @@ export class TimepadComponent implements OnInit, OnDestroy { } } - public drop(event: CdkDragDrop) { - moveItemInArray(this.sessions, event.previousIndex, event.currentIndex); - // todo: normalize times + public onSessionDrop(event: CdkDragDrop): void { + const tempTalkId: string = this.sessions[event.previousIndex].talkId; + this.sessions[event.previousIndex].talkId = this.sessions[event.currentIndex].talkId; + this.sessions[event.currentIndex].talkId = tempTalkId; + } + + public deleteFriend(ev: Event, index: number): void { + this.friends.splice(index, 1); + } + + public onFriendDrop(event: CdkDragDrop): void { + moveItemInArray(this.friends, event.previousIndex, event.currentIndex); + } + + public onFriendSaved(friend: IFriend, index: number): void { + this.friends[index] = friend; + } + + public onFriendSelected(friendId: string): void { + const descriptor = this.descriptor; + descriptor.friendIds.push(friendId); + this._compositeService.fetchMeetup(this._meetupId, descriptor); + } + + public createFriend(): void { + this.friends.push(FriendEditorService.getDefaultFriend()); } } diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts index 46d9c6d..c2c0b6f 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts @@ -4,6 +4,8 @@ import { NgModule } from "@angular/core"; import { MatButtonModule, MatExpansionModule, MatIconModule, MatListModule } from "@angular/material"; import { RouterModule } from "@angular/router"; import { CoreModule } from "@dotnetru/core"; +import { FriendListModule } from "@dotnetru/friend-list"; +import { FriendEditorModule } from "@dotnetru/pages/friend-editor"; import { MeetupEditorModule } from "@dotnetru/pages/meetup-editor"; import { SpeakerEditorModule } from "@dotnetru/pages/speaker-editor"; import { TalkEditorModule } from "@dotnetru/pages/talk-editor"; @@ -33,6 +35,8 @@ import { TimepadComponent } from "./timepad.component"; MatIconModule, MatListModule, + FriendListModule, + FriendEditorModule, MeetupEditorModule, SpeakerEditorModule, TalkEditorModule, diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts index 5bea5b2..7662512 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts @@ -29,6 +29,7 @@ export class CompositeService { descriptor, (res: IApiCompositeMeetup) => { const model: ICompositeMeetup = Object.assign({}, { + friends: res.friends, sessions: res.sessions.map((x: IApiSession) => Object.assign({}, x, { endTime: DateConverterService.toMoment(x.endTime), startTime: DateConverterService.toMoment(x.startTime), diff --git a/DevActivator/Controllers/CompositeController.cs b/DevActivator/Controllers/CompositeController.cs index 8b6e59c..f34ea6d 100644 --- a/DevActivator/Controllers/CompositeController.cs +++ b/DevActivator/Controllers/CompositeController.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using DevActivator.Meetups.BL.Entities; using DevActivator.Meetups.BL.Interfaces; using DevActivator.Meetups.BL.Models; using DevActivator.Models; @@ -14,12 +15,14 @@ public class CompositeController : Controller private readonly IMeetupService _meetupService; private readonly ITalkService _talkService; private readonly ISpeakerService _speakerService; + private readonly IFriendService _friendService; - public CompositeController(IMeetupService ms, ITalkService ts, ISpeakerService ss) + public CompositeController(IMeetupService ms, ITalkService ts, ISpeakerService ss, IFriendService fs) { _meetupService = ms; _talkService = ts; _speakerService = ss; + _friendService = fs; } [HttpPost("[action]/{meetupId?}")] @@ -31,12 +34,14 @@ public async Task GetMeetup([FromRoute] string meetupId, [FromBo descriptor.Sessions = descriptor.Sessions ?? new List(); descriptor.TalkIds = descriptor.TalkIds ?? new List(); descriptor.SpeakerIds = descriptor.SpeakerIds ?? new List(); + descriptor.FriendIds = descriptor.FriendIds ?? new List(); if (meetup?.Sessions != null) { descriptor.TalkIds.AddRange(meetup.Sessions.Select(x => x.TalkId)); } + // talks var talks = new Dictionary(); foreach (var talkId in descriptor.TalkIds.Distinct()) { @@ -44,10 +49,10 @@ public async Task GetMeetup([FromRoute] string meetupId, [FromBo talks.Add(talkId, talk); } + // speakers descriptor.SpeakerIds.AddRange( talks.Select(x => x.Value).SelectMany(x => x.SpeakerIds.Select(s => s.SpeakerId)) ); - var speakers = new Dictionary(); foreach (var speakerId in descriptor.SpeakerIds.Distinct()) { @@ -55,11 +60,30 @@ public async Task GetMeetup([FromRoute] string meetupId, [FromBo speakers.Add(speakerId, speaker); } + // friends + if (meetup?.FriendIds != null) + { + descriptor.FriendIds.AddRange(meetup.FriendIds.Select(x => x.FriendId)); + } + + var friends = new List(); + foreach (var friendId in descriptor.FriendIds.Distinct()) + { + var friend = await _friendService.GetFriendAsync(friendId).ConfigureAwait(false); + friends.Add(friend); + } + + // todo: venue + // todo: id + // todo: name + // todo: community + return new CompositeModel { Sessions = meetup?.Sessions, Talks = talks, - Speakers = speakers + Speakers = speakers, + Friends = friends }; } } diff --git a/DevActivator/Models/CompositeModel.cs b/DevActivator/Models/CompositeModel.cs index 39e55f3..49be567 100644 --- a/DevActivator/Models/CompositeModel.cs +++ b/DevActivator/Models/CompositeModel.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using DevActivator.Meetups.BL.Entities; using DevActivator.Meetups.BL.Models; namespace DevActivator.Models @@ -10,5 +11,7 @@ public class CompositeModel public Dictionary Talks { get; set; } public Dictionary Speakers { get; set; } + + public List Friends { get; set; } } } \ No newline at end of file diff --git a/DevActivator/Models/RandomConcatModel.cs b/DevActivator/Models/RandomConcatModel.cs index 67dcf71..e5beeaf 100644 --- a/DevActivator/Models/RandomConcatModel.cs +++ b/DevActivator/Models/RandomConcatModel.cs @@ -10,5 +10,7 @@ public class RandomConcatModel public List TalkIds { get; set; } public List SpeakerIds { get; set; } + + public List FriendIds { get; set; } } } \ No newline at end of file From 27108626da2054d2713568783cf1f697e58c3a5b Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Sun, 24 Feb 2019 17:17:04 +0300 Subject: [PATCH 12/29] fetch readonly meetupId --- .../ClientApp/app/pages/timepad/interfaces.ts | 2 ++ .../app/pages/timepad/timepad.component.html | 20 +++++++++++++++++++ .../app/pages/timepad/timepad.component.ts | 14 ++++++++++++- .../app/pages/timepad/timepad.module.ts | 5 ++++- .../app/pages/timepad/timepad.service.ts | 1 + .../Controllers/CompositeController.cs | 1 + DevActivator/Models/CompositeModel.cs | 2 ++ DevActivator/tslint.json | 1 + 8 files changed, 44 insertions(+), 2 deletions(-) diff --git a/DevActivator/ClientApp/app/pages/timepad/interfaces.ts b/DevActivator/ClientApp/app/pages/timepad/interfaces.ts index 9c21112..178c125 100644 --- a/DevActivator/ClientApp/app/pages/timepad/interfaces.ts +++ b/DevActivator/ClientApp/app/pages/timepad/interfaces.ts @@ -8,6 +8,7 @@ export interface IMap { } export interface ICompositeMeetup { + id: string | undefined; sessions: ISession[]; talks: IMap; speakers: IMap; @@ -19,6 +20,7 @@ export type IApiCompositeMeetup = ICompositeMeetup & { }; export interface IRandomConcatModel { + id: string | undefined; friendIds: string[]; sessions: ISession[]; talkIds: string[]; diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html index 476915e..5c2591b 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html @@ -1,4 +1,24 @@
+ + + + + {{ LABELS.IDENTITY | requiredErrorMessage }} + + + {{ PATTERNS.IDENTITY | patternErrorMessage }} + + + +

Партнеры

diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts index 71c0c11..b4de82f 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts @@ -1,6 +1,7 @@ import { CdkDragDrop, moveItemInArray } from "@angular/cdk/drag-drop"; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from "@angular/core"; import { ActivatedRoute, Params } from "@angular/router"; +import { LABELS, PATTERNS } from "@dotnetru/core"; import { Moment } from "moment"; import { Subscription } from "rxjs"; @@ -20,14 +21,23 @@ import { CompositeService } from "./timepad.service"; templateUrl: "timepad.component.html", }) export class TimepadComponent implements OnInit, OnDestroy { + public readonly LABELS = LABELS; + public readonly PATTERNS = PATTERNS; public readonly timeFormat: string = "HH:mm"; + // todo: remove readonly, implement false + public readonly editMode: boolean = true; + public sessions: ISession[] = []; public talks: IMap = {}; public speakers: IMap = {}; public friends: IFriend[] = []; - @Input() set meetupId(value: string) { + @Input() + get meetupId() { + return this._meetupId || ""; + } + set meetupId(value: string) { this._meetupId = value; this._compositeService.fetchMeetup(this._meetupId, this.descriptor); } @@ -37,6 +47,7 @@ export class TimepadComponent implements OnInit, OnDestroy { private get descriptor(): IRandomConcatModel { return { + id: this._meetupId, friendIds: this.friends.map((x) => x.id), sessions: this.sessions, speakerIds: Object.keys(this.speakers), @@ -60,6 +71,7 @@ export class TimepadComponent implements OnInit, OnDestroy { }), this._compositeService.meetup$ .subscribe((data: ICompositeMeetup) => { + this._meetupId = data.id; this.sessions = data.sessions; this.talks = data.talks; this.speakers = data.speakers; diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts index c2c0b6f..9bb6e50 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts @@ -1,7 +1,8 @@ import { DragDropModule } from "@angular/cdk/drag-drop"; import { CommonModule } from "@angular/common"; import { NgModule } from "@angular/core"; -import { MatButtonModule, MatExpansionModule, MatIconModule, MatListModule } from "@angular/material"; +import { FormsModule } from "@angular/forms"; +import { MatButtonModule, MatExpansionModule, MatIconModule, MatInputModule, MatListModule } from "@angular/material"; import { RouterModule } from "@angular/router"; import { CoreModule } from "@dotnetru/core"; import { FriendListModule } from "@dotnetru/friend-list"; @@ -21,6 +22,7 @@ import { TimepadComponent } from "./timepad.component"; ], imports: [ CommonModule, + FormsModule, RouterModule.forChild([ { path: "timepad", component: TimepadComponent }, @@ -33,6 +35,7 @@ import { TimepadComponent } from "./timepad.component"; MatButtonModule, MatExpansionModule, MatIconModule, + MatInputModule, MatListModule, FriendListModule, diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts index 7662512..eaadbc5 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts @@ -29,6 +29,7 @@ export class CompositeService { descriptor, (res: IApiCompositeMeetup) => { const model: ICompositeMeetup = Object.assign({}, { + id: meetupId, friends: res.friends, sessions: res.sessions.map((x: IApiSession) => Object.assign({}, x, { endTime: DateConverterService.toMoment(x.endTime), diff --git a/DevActivator/Controllers/CompositeController.cs b/DevActivator/Controllers/CompositeController.cs index f34ea6d..b51dda3 100644 --- a/DevActivator/Controllers/CompositeController.cs +++ b/DevActivator/Controllers/CompositeController.cs @@ -80,6 +80,7 @@ public async Task GetMeetup([FromRoute] string meetupId, [FromBo return new CompositeModel { + Id = meetup?.Id, Sessions = meetup?.Sessions, Talks = talks, Speakers = speakers, diff --git a/DevActivator/Models/CompositeModel.cs b/DevActivator/Models/CompositeModel.cs index 49be567..119d35e 100644 --- a/DevActivator/Models/CompositeModel.cs +++ b/DevActivator/Models/CompositeModel.cs @@ -6,6 +6,8 @@ namespace DevActivator.Models { public class CompositeModel { + public string Id { get; set; } + public List Sessions { get; set; } public Dictionary Talks { get; set; } diff --git a/DevActivator/tslint.json b/DevActivator/tslint.json index d17e372..4e3b8ca 100644 --- a/DevActivator/tslint.json +++ b/DevActivator/tslint.json @@ -6,6 +6,7 @@ ], "jsRules": {}, "rules": { + "object-literal-sort-keys": false, "max-line-length": [ true, { From 76f96ea070501dddc5d54133457c64cad4460066 Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Sun, 24 Feb 2019 17:28:59 +0300 Subject: [PATCH 13/29] working with meetup name --- .../ClientApp/app/pages/timepad/interfaces.ts | 3 ++- .../app/pages/timepad/timepad.component.html | 17 +++++++++++++++++ .../app/pages/timepad/timepad.component.ts | 4 +++- .../app/pages/timepad/timepad.service.ts | 3 +-- DevActivator/Controllers/CompositeController.cs | 5 +++-- DevActivator/Models/CompositeModel.cs | 2 ++ DevActivator/Models/RandomConcatModel.cs | 2 ++ 7 files changed, 30 insertions(+), 6 deletions(-) diff --git a/DevActivator/ClientApp/app/pages/timepad/interfaces.ts b/DevActivator/ClientApp/app/pages/timepad/interfaces.ts index 178c125..2dd5465 100644 --- a/DevActivator/ClientApp/app/pages/timepad/interfaces.ts +++ b/DevActivator/ClientApp/app/pages/timepad/interfaces.ts @@ -9,6 +9,7 @@ export interface IMap { export interface ICompositeMeetup { id: string | undefined; + name: string | undefined; sessions: ISession[]; talks: IMap; speakers: IMap; @@ -20,7 +21,7 @@ export type IApiCompositeMeetup = ICompositeMeetup & { }; export interface IRandomConcatModel { - id: string | undefined; + name: string | undefined; friendIds: string[]; sessions: ISession[]; talkIds: string[]; diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html index 5c2591b..7b8098d 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html @@ -18,6 +18,23 @@ + + + + {{ LABELS.TITLE | requiredErrorMessage }} + + + {{ PATTERNS.REQUIRED_STRING | patternErrorMessage }} + + +

Партнеры

= {}; public speakers: IMap = {}; @@ -47,7 +48,7 @@ export class TimepadComponent implements OnInit, OnDestroy { private get descriptor(): IRandomConcatModel { return { - id: this._meetupId, + name: this.name, friendIds: this.friends.map((x) => x.id), sessions: this.sessions, speakerIds: Object.keys(this.speakers), @@ -72,6 +73,7 @@ export class TimepadComponent implements OnInit, OnDestroy { this._compositeService.meetup$ .subscribe((data: ICompositeMeetup) => { this._meetupId = data.id; + this.name = data.name; this.sessions = data.sessions; this.talks = data.talks; this.speakers = data.speakers; diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts index eaadbc5..4a24df5 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts @@ -1,5 +1,4 @@ import { Injectable } from "@angular/core"; -import { Router } from "@angular/router"; import { API_ENDPOINTS, DateConverterService, HttpService } from "@dotnetru/core"; import { BehaviorSubject, Observable } from "rxjs"; import { filter, map } from "rxjs/operators"; @@ -20,7 +19,6 @@ export class CompositeService { constructor( private _httpService: HttpService, - private _router: Router, ) { } public fetchMeetup(meetupId: string | undefined, descriptor: IRandomConcatModel, cb?: () => void): void { @@ -30,6 +28,7 @@ export class CompositeService { (res: IApiCompositeMeetup) => { const model: ICompositeMeetup = Object.assign({}, { id: meetupId, + name: res.name, friends: res.friends, sessions: res.sessions.map((x: IApiSession) => Object.assign({}, x, { endTime: DateConverterService.toMoment(x.endTime), diff --git a/DevActivator/Controllers/CompositeController.cs b/DevActivator/Controllers/CompositeController.cs index b51dda3..be110e3 100644 --- a/DevActivator/Controllers/CompositeController.cs +++ b/DevActivator/Controllers/CompositeController.cs @@ -74,13 +74,14 @@ public async Task GetMeetup([FromRoute] string meetupId, [FromBo } // todo: venue - // todo: id - // todo: name // todo: community return new CompositeModel { Id = meetup?.Id, + Name = string.IsNullOrWhiteSpace(descriptor.Name) + ? meetup?.Name + : descriptor.Name, Sessions = meetup?.Sessions, Talks = talks, Speakers = speakers, diff --git a/DevActivator/Models/CompositeModel.cs b/DevActivator/Models/CompositeModel.cs index 119d35e..3daa892 100644 --- a/DevActivator/Models/CompositeModel.cs +++ b/DevActivator/Models/CompositeModel.cs @@ -8,6 +8,8 @@ public class CompositeModel { public string Id { get; set; } + public string Name { get; set; } + public List Sessions { get; set; } public Dictionary Talks { get; set; } diff --git a/DevActivator/Models/RandomConcatModel.cs b/DevActivator/Models/RandomConcatModel.cs index e5beeaf..31e5ff4 100644 --- a/DevActivator/Models/RandomConcatModel.cs +++ b/DevActivator/Models/RandomConcatModel.cs @@ -5,6 +5,8 @@ namespace DevActivator.Models { public class RandomConcatModel { + public string Name { get; set; } + public List Sessions { get; set; } public List TalkIds { get; set; } From 105bd056a9ffbb2172ecd625758029f5a7f98f41 Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Sun, 10 Mar 2019 13:06:39 +0300 Subject: [PATCH 14/29] set venue to meetup --- .../venue-list/venue-list.component.ts | 10 ++++++-- .../meetup-editor/meetup-editor.component.ts | 4 +-- .../app/pages/search/search.component.ts | 4 +-- .../ClientApp/app/pages/timepad/interfaces.ts | 3 +++ .../app/pages/timepad/timepad.component.html | 9 +++++++ .../app/pages/timepad/timepad.component.ts | 14 +++++++++++ .../app/pages/timepad/timepad.module.ts | 2 ++ .../app/pages/timepad/timepad.service.ts | 1 + .../Controllers/CompositeController.cs | 25 +++++++++++++++---- DevActivator/Models/CompositeModel.cs | 2 ++ DevActivator/Models/RandomConcatModel.cs | 4 ++- 11 files changed, 66 insertions(+), 12 deletions(-) diff --git a/DevActivator/ClientApp/app/components/venue-list/venue-list.component.ts b/DevActivator/ClientApp/app/components/venue-list/venue-list.component.ts index af66833..9b3e5f5 100644 --- a/DevActivator/ClientApp/app/components/venue-list/venue-list.component.ts +++ b/DevActivator/ClientApp/app/components/venue-list/venue-list.component.ts @@ -31,9 +31,15 @@ export class VenueListComponent implements OnInit, OnDestroy { } } + @Input() public set venueId(venueId: string | undefined) { + if (venueId) { + this._venueId$.next(venueId); + } + } + @ViewChild("autocomplete") public autocomplete!: AutocompleteComponent; - @Output() public readonly selected: EventEmitter = new EventEmitter(); + @Output() public readonly selected: EventEmitter = new EventEmitter(); @Output() public readonly iconClicked: EventEmitter = new EventEmitter(); public venues: IAutocompleteRow[] = []; @@ -75,7 +81,7 @@ export class VenueListComponent implements OnInit, OnDestroy { } public onSelected(row: IAutocompleteRow): void { - this.selected.emit(row); + this.selected.emit(row.id); } public onIconClicked(): void { diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts index ba9fe90..1fcfd4e 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts +++ b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts @@ -99,8 +99,8 @@ export class MeetupEditorComponent implements OnInit, OnDestroy { this.meetup.friendIds.push({ friendId: "" }); } - public onVenueSelected(row: IAutocompleteRow): void { - this.meetup.venueId = row.id; + public onVenueSelected(venueId: string): void { + this.meetup.venueId = venueId; } public onTalkSelected(talkId: string, index: number): void { diff --git a/DevActivator/ClientApp/app/pages/search/search.component.ts b/DevActivator/ClientApp/app/pages/search/search.component.ts index 7f26d33..d654b54 100644 --- a/DevActivator/ClientApp/app/pages/search/search.component.ts +++ b/DevActivator/ClientApp/app/pages/search/search.component.ts @@ -28,8 +28,8 @@ export class SearchPageComponent { this._router.navigateByUrl(`talk-creator`); } - public onVenueSelected(venue: IAutocompleteRow): void { - this._router.navigateByUrl(`venue-editor/${venue.id}`); + public onVenueSelected(venueId: string): void { + this._router.navigateByUrl(`venue-editor/${venueId}`); } public addVenue(): void { diff --git a/DevActivator/ClientApp/app/pages/timepad/interfaces.ts b/DevActivator/ClientApp/app/pages/timepad/interfaces.ts index 2dd5465..e0b2969 100644 --- a/DevActivator/ClientApp/app/pages/timepad/interfaces.ts +++ b/DevActivator/ClientApp/app/pages/timepad/interfaces.ts @@ -2,6 +2,7 @@ import { IFriend } from "../friend-editor/interfaces"; import { IApiSession, ISession } from "../meetup-editor/interfaces"; import { ISpeaker } from "../speaker-editor/interfaces"; import { ITalk } from "../talk-editor/interfaces"; +import { IVenue } from "../venue-editor/interfaces"; export interface IMap { [key: string]: T; @@ -10,6 +11,7 @@ export interface IMap { export interface ICompositeMeetup { id: string | undefined; name: string | undefined; + venue: IVenue | undefined; sessions: ISession[]; talks: IMap; speakers: IMap; @@ -22,6 +24,7 @@ export type IApiCompositeMeetup = ICompositeMeetup & { export interface IRandomConcatModel { name: string | undefined; + venueId: string | undefined; friendIds: string[]; sessions: ISession[]; talkIds: string[]; diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html index 7b8098d..18e7969 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html @@ -36,6 +36,15 @@ +

Площадка

+ + +

Партнеры

diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts index 4ddc1d3..287f993 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts @@ -10,6 +10,7 @@ import { IFriend } from "../friend-editor/interfaces"; import { ISession } from "../meetup-editor/interfaces"; import { ISpeaker } from "../speaker-editor/interfaces"; import { ITalk } from "../talk-editor/interfaces"; +import { IVenue } from "../venue-editor/interfaces"; import { ICompositeMeetup, IMap, IRandomConcatModel } from "./interfaces"; import { CompositeService } from "./timepad.service"; @@ -29,6 +30,7 @@ export class TimepadComponent implements OnInit, OnDestroy { public readonly editMode: boolean = true; public name: string | undefined = undefined; + public venue: IVenue | undefined = undefined; public sessions: ISession[] = []; public talks: IMap = {}; public speakers: IMap = {}; @@ -49,6 +51,7 @@ export class TimepadComponent implements OnInit, OnDestroy { private get descriptor(): IRandomConcatModel { return { name: this.name, + venueId: this.venue ? this.venue.id : undefined, friendIds: this.friends.map((x) => x.id), sessions: this.sessions, speakerIds: Object.keys(this.speakers), @@ -74,6 +77,7 @@ export class TimepadComponent implements OnInit, OnDestroy { .subscribe((data: ICompositeMeetup) => { this._meetupId = data.id; this.name = data.name; + this.venue = data.venue; this.sessions = data.sessions; this.talks = data.talks; this.speakers = data.speakers; @@ -171,4 +175,14 @@ export class TimepadComponent implements OnInit, OnDestroy { public createFriend(): void { this.friends.push(FriendEditorService.getDefaultFriend()); } + + public onVenueSelected(venueId: string): void { + const descriptor = this.descriptor; + descriptor.venueId = venueId; + this._compositeService.fetchMeetup(this._meetupId, descriptor); + } + + public createVenue(): void { + // todo: open modal + } } diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts index 9bb6e50..3219458 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts @@ -10,6 +10,7 @@ import { FriendEditorModule } from "@dotnetru/pages/friend-editor"; import { MeetupEditorModule } from "@dotnetru/pages/meetup-editor"; import { SpeakerEditorModule } from "@dotnetru/pages/speaker-editor"; import { TalkEditorModule } from "@dotnetru/pages/talk-editor"; +import { VenueListModule } from "@dotnetru/venue-list"; import { TimepadComponent } from "./timepad.component"; @@ -43,6 +44,7 @@ import { TimepadComponent } from "./timepad.component"; MeetupEditorModule, SpeakerEditorModule, TalkEditorModule, + VenueListModule, ], }) export class TimepadModule { } diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts index 4a24df5..6c2bcc4 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts @@ -29,6 +29,7 @@ export class CompositeService { const model: ICompositeMeetup = Object.assign({}, { id: meetupId, name: res.name, + venue: res.venue, friends: res.friends, sessions: res.sessions.map((x: IApiSession) => Object.assign({}, x, { endTime: DateConverterService.toMoment(x.endTime), diff --git a/DevActivator/Controllers/CompositeController.cs b/DevActivator/Controllers/CompositeController.cs index be110e3..fad4849 100644 --- a/DevActivator/Controllers/CompositeController.cs +++ b/DevActivator/Controllers/CompositeController.cs @@ -16,13 +16,15 @@ public class CompositeController : Controller private readonly ITalkService _talkService; private readonly ISpeakerService _speakerService; private readonly IFriendService _friendService; + private readonly IVenueService _venueService; - public CompositeController(IMeetupService ms, ITalkService ts, ISpeakerService ss, IFriendService fs) + public CompositeController(IMeetupService ms, ITalkService ts, ISpeakerService ss, IFriendService fs, IVenueService vs) { _meetupService = ms; _talkService = ts; _speakerService = ss; _friendService = fs; + _venueService = vs; } [HttpPost("[action]/{meetupId?}")] @@ -31,6 +33,7 @@ public async Task GetMeetup([FromRoute] string meetupId, [FromBo var meetup = await _meetupService.GetMeetupAsync(meetupId).ConfigureAwait(true); descriptor = descriptor ?? new RandomConcatModel(); + descriptor.VenueId = descriptor.VenueId; descriptor.Sessions = descriptor.Sessions ?? new List(); descriptor.TalkIds = descriptor.TalkIds ?? new List(); descriptor.SpeakerIds = descriptor.SpeakerIds ?? new List(); @@ -73,15 +76,27 @@ public async Task GetMeetup([FromRoute] string meetupId, [FromBo friends.Add(friend); } - // todo: venue + // name + if (string.IsNullOrWhiteSpace(descriptor.Name)) + { + descriptor.Name = meetup?.Name; + } + + // venue + descriptor.VenueId = descriptor.VenueId ?? meetup?.VenueId; + VenueVm venue = null; + if (!string.IsNullOrWhiteSpace(descriptor.VenueId)) + { + venue = await _venueService.GetVenueAsync(descriptor.VenueId).ConfigureAwait(false); + } + // todo: community return new CompositeModel { Id = meetup?.Id, - Name = string.IsNullOrWhiteSpace(descriptor.Name) - ? meetup?.Name - : descriptor.Name, + Name = descriptor.Name, + Venue = venue, Sessions = meetup?.Sessions, Talks = talks, Speakers = speakers, diff --git a/DevActivator/Models/CompositeModel.cs b/DevActivator/Models/CompositeModel.cs index 3daa892..8c35825 100644 --- a/DevActivator/Models/CompositeModel.cs +++ b/DevActivator/Models/CompositeModel.cs @@ -10,6 +10,8 @@ public class CompositeModel public string Name { get; set; } + public VenueVm Venue { get; set; } + public List Sessions { get; set; } public Dictionary Talks { get; set; } diff --git a/DevActivator/Models/RandomConcatModel.cs b/DevActivator/Models/RandomConcatModel.cs index 31e5ff4..4ec8600 100644 --- a/DevActivator/Models/RandomConcatModel.cs +++ b/DevActivator/Models/RandomConcatModel.cs @@ -6,7 +6,9 @@ namespace DevActivator.Models public class RandomConcatModel { public string Name { get; set; } - + + public string VenueId { get; set; } + public List Sessions { get; set; } public List TalkIds { get; set; } From 4cc9c649d32d73ba71467404963069c1fcc9d8df Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Sun, 10 Mar 2019 19:09:04 +0300 Subject: [PATCH 15/29] edit and create venue --- .../app/pages/timepad/timepad.component.html | 28 +++++++---- .../app/pages/timepad/timepad.component.ts | 33 +++++++++++-- .../app/pages/timepad/timepad.module.ts | 2 + .../ClientApp/app/pages/venue-editor/index.ts | 1 + .../venue-editor-dialog.component.ts | 46 +++++++++++++++++++ .../venue-editor/venue-editor.component.ts | 44 ++++++++++-------- .../pages/venue-editor/venue-editor.module.ts | 4 ++ .../venue-editor/venue-editor.service.ts | 11 ++--- 8 files changed, 134 insertions(+), 35 deletions(-) create mode 100644 DevActivator/ClientApp/app/pages/venue-editor/venue-editor-dialog.component.ts diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html index 18e7969..77219a5 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html @@ -36,14 +36,26 @@ -

Площадка

- - +

+ Площадка + +

+ + + + +

Партнеры

= {}; public speakers: IMap = {}; @@ -60,6 +65,7 @@ export class TimepadComponent implements OnInit, OnDestroy { } constructor( + private _dialog: MatDialog, private _compositeService: CompositeService, private _activatedRoute: ActivatedRoute, private _changeDetectorRef: ChangeDetectorRef, @@ -77,7 +83,7 @@ export class TimepadComponent implements OnInit, OnDestroy { .subscribe((data: ICompositeMeetup) => { this._meetupId = data.id; this.name = data.name; - this.venue = data.venue; + this.venue = data.venue || Object.assign({}, DEFAULT_VENUE); this.sessions = data.sessions; this.talks = data.talks; this.speakers = data.speakers; @@ -183,6 +189,27 @@ export class TimepadComponent implements OnInit, OnDestroy { } public createVenue(): void { - // todo: open modal + this.openVenueDialog(undefined); + } + + public editVenue(): void { + this.openVenueDialog(this.venue); + } + + private openVenueDialog(data?: IVenue): void { + const config: MatDialogConfig = { + panelClass: "full-height", + width: "640px", + }; + if (data) { + config.data = data; + } + const dialogRef = this._dialog.open(VenueEditorDialogComponent, config); + + dialogRef.afterClosed().subscribe((venue?: IVenue) => { + if (venue && venue.id) { + this.onVenueSelected(venue.id); + } + }); } } diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts index 3219458..1373197 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.module.ts @@ -10,6 +10,7 @@ import { FriendEditorModule } from "@dotnetru/pages/friend-editor"; import { MeetupEditorModule } from "@dotnetru/pages/meetup-editor"; import { SpeakerEditorModule } from "@dotnetru/pages/speaker-editor"; import { TalkEditorModule } from "@dotnetru/pages/talk-editor"; +import { VenueEditorModule } from "@dotnetru/pages/venue-editor"; import { VenueListModule } from "@dotnetru/venue-list"; import { TimepadComponent } from "./timepad.component"; @@ -44,6 +45,7 @@ import { TimepadComponent } from "./timepad.component"; MeetupEditorModule, SpeakerEditorModule, TalkEditorModule, + VenueEditorModule, VenueListModule, ], }) diff --git a/DevActivator/ClientApp/app/pages/venue-editor/index.ts b/DevActivator/ClientApp/app/pages/venue-editor/index.ts index 18c6ae5..c3b0432 100644 --- a/DevActivator/ClientApp/app/pages/venue-editor/index.ts +++ b/DevActivator/ClientApp/app/pages/venue-editor/index.ts @@ -1 +1,2 @@ +export { VenueEditorDialogComponent } from "./venue-editor-dialog.component"; export { VenueEditorModule } from "./venue-editor.module"; diff --git a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor-dialog.component.ts b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor-dialog.component.ts new file mode 100644 index 0000000..4b958ee --- /dev/null +++ b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor-dialog.component.ts @@ -0,0 +1,46 @@ +import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject } from "@angular/core"; +import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material"; +import { ActivatedRoute, Router } from "@angular/router"; +import { LayoutService } from "@dotnetru/core"; + +import { IVenue } from "./interfaces"; +import { VenueEditorComponent } from "./venue-editor.component"; +import { VenueEditorService } from "./venue-editor.service"; + +@Component({ + changeDetection: ChangeDetectionStrategy.OnPush, + providers: [VenueEditorService], + selector: "mtp-venue-editor-dialog", + styleUrls: ["./venue-editor.component.css"], + templateUrl: "./venue-editor.component.html", +}) +export class VenueEditorDialogComponent extends VenueEditorComponent implements AfterViewInit { + constructor( + private _dialogRef: MatDialogRef, + @Inject(MAT_DIALOG_DATA) private _data: IVenue | undefined, + venueEditorService: VenueEditorService, + layoutService: LayoutService, + activatedRoute: ActivatedRoute, + router: Router, + changeDetectorRef: ChangeDetectorRef, + ) { + super(venueEditorService, layoutService, activatedRoute, router, changeDetectorRef); + this.isDialog = true; + } + + public ngAfterViewInit(): void { + // todo: remove code duplication in VenueEditorComponent + // find: this._venueEditorService.venue$ .subscribe( + if (this._data) { + this.venue = this._data; + this.editMode = true; + this._changeDetectorRef.detectChanges(); + } + } + + public save(cb?: (venue: IVenue) => void): void { + super.save((venue: IVenue) => { + this._dialogRef.close(venue); + }); + } +} diff --git a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.component.ts b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.component.ts index 1e70231..bccb5ab 100644 --- a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.component.ts +++ b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.component.ts @@ -1,6 +1,14 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from "@angular/core"; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + EventEmitter, + OnDestroy, + OnInit, + Output, +} from "@angular/core"; import { ActivatedRoute, Params, Router } from "@angular/router"; -import { FILE_SIZES, LABELS, LayoutService, MIME_TYPES, PATTERNS } from "@dotnetru/core"; +import { LABELS, LayoutService, PATTERNS } from "@dotnetru/core"; import { City } from "@dotnetru/shared/city-select"; import { Subscription } from "rxjs"; @@ -18,11 +26,15 @@ export class VenueEditorComponent implements OnInit, OnDestroy { public readonly LABELS = LABELS; public readonly PATTERNS = PATTERNS; + @Output() public readonly saved: EventEmitter = new EventEmitter(); + // todo: create service method getDefaultVenue public venue: IVenue = { id: "", city: City.Spb, name: "", address: "", mapUrl: "" }; public editMode: boolean = true; + protected isDialog: boolean = false; + private _subs: Subscription[] = []; constructor( @@ -30,7 +42,7 @@ export class VenueEditorComponent implements OnInit, OnDestroy { private _layoutService: LayoutService, private _activatedRoute: ActivatedRoute, private _router: Router, - private _changeDetectorRef: ChangeDetectorRef, + protected _changeDetectorRef: ChangeDetectorRef, ) { } public ngOnInit(): void { @@ -63,27 +75,23 @@ export class VenueEditorComponent implements OnInit, OnDestroy { } } - public save(): void { + public save(cb?: (venue: IVenue) => void): void { if (this.editMode) { - this._venueEditorService.updateVenue(this.venue); + this._venueEditorService.updateVenue(this.venue, () => { + this.saved.emit(this.venue); + if (cb) { + cb(this.venue); + } + }); } else { - this._venueEditorService.addVenue(this.venue); + cb = cb || ((venue: IVenue) => { + this._router.navigateByUrl(`venue-editor${venue ? `/${venue.id}` : ""}`); + }); + this._venueEditorService.addVenue(this.venue, cb); } } public reset(): void { this._venueEditorService.reset(); } - - // public onSpeakerSelected(row: IAutocompleteRow, index: number): void { - // this.venue.speakerIds[index] = { speakerId: row.id }; - // } - - // public removeSpeaker(index: number): void { - // this.venue.speakerIds.splice(index, 1); - // } - - // public addSpeaker(): void { - // this.venue.speakerIds.push({ speakerId: "" }); - // } } diff --git a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.module.ts b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.module.ts index 4138001..d9de359 100644 --- a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.module.ts +++ b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.module.ts @@ -7,17 +7,21 @@ import { CoreModule } from "@dotnetru/core"; import { CitySelectModule } from "@dotnetru/shared/city-select"; import { SpeakerListModule } from "@dotnetru/speaker-list"; +import { VenueEditorDialogComponent } from "./venue-editor-dialog.component"; import { VenueEditorComponent } from "./venue-editor.component"; @NgModule({ declarations: [ VenueEditorComponent, + VenueEditorDialogComponent, ], entryComponents: [ VenueEditorComponent, + VenueEditorDialogComponent, ], exports: [ VenueEditorComponent, + VenueEditorDialogComponent, ], imports: [ RouterModule.forChild([ diff --git a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.service.ts b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.service.ts index 18ccc4d..22bdaff 100644 --- a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.service.ts +++ b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.service.ts @@ -1,5 +1,4 @@ import { Injectable } from "@angular/core"; -import { Router } from "@angular/router"; import { API_ENDPOINTS, HttpService, LayoutService } from "@dotnetru/core"; import { BehaviorSubject, Observable } from "rxjs"; import { filter, map } from "rxjs/operators"; @@ -23,7 +22,6 @@ export class VenueEditorService { constructor( private _layoutService: LayoutService, private _httpService: HttpService, - private _router: Router, ) { } public hasChanges(venue: IVenue): boolean { @@ -39,18 +37,18 @@ export class VenueEditorService { }); } - public addVenue(venue: IVenue): void { + public addVenue(venue: IVenue, cb: (res: IVenue) => void): void { this._httpService.post( API_ENDPOINTS.addVenueUrl, venue, - (x: IVenue) => { + (res: IVenue) => { this._layoutService.showInfo("Площадка добавлена успешно"); - this._router.navigateByUrl(`venue-editor${venue ? `/${venue.id}` : ""}`); + cb(res); }, ); } - public updateVenue(venue: IVenue): void { + public updateVenue(venue: IVenue, cb: () => void): void { this._httpService.post( API_ENDPOINTS.updateVenueUrl, venue, @@ -58,6 +56,7 @@ export class VenueEditorService { this._layoutService.showInfo("Площадка изменена успешно"); this._dataStore.venue = x; this._venue$.next(Object.assign({}, this._dataStore.venue)); + cb(); }, ); } From 56e903c150f5db5c46c1b712d8ea5604693c2c86 Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Sun, 10 Mar 2019 19:27:24 +0300 Subject: [PATCH 16/29] communityId in meetup --- .../Extensions/MeetupExtensions.cs | 2 +- .../pages/meetup-editor/meetup-editor.component.ts | 1 - .../ClientApp/app/pages/timepad/interfaces.ts | 3 +++ .../app/pages/timepad/timepad.component.html | 14 ++++++++++++++ .../app/pages/timepad/timepad.component.ts | 7 +++++++ .../ClientApp/app/pages/timepad/timepad.module.ts | 10 +++++++++- .../ClientApp/app/pages/timepad/timepad.service.ts | 1 + DevActivator/Controllers/CompositeController.cs | 8 +++++++- DevActivator/Models/CompositeModel.cs | 3 +++ DevActivator/Models/RandomConcatModel.cs | 2 ++ 10 files changed, 47 insertions(+), 4 deletions(-) diff --git a/DevActivator.Meetups.BL/Extensions/MeetupExtensions.cs b/DevActivator.Meetups.BL/Extensions/MeetupExtensions.cs index 96a7348..f930c91 100644 --- a/DevActivator.Meetups.BL/Extensions/MeetupExtensions.cs +++ b/DevActivator.Meetups.BL/Extensions/MeetupExtensions.cs @@ -83,7 +83,7 @@ public static Meetup Extend(this Meetup original, MeetupVm meetup) }).ToList(), }; - private static Community GetCommunity(this string id) + public static Community GetCommunity(this string id) => (Community) Enum.Parse(typeof(Community), id, true); } } \ No newline at end of file diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts index 1fcfd4e..e244c82 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts +++ b/DevActivator/ClientApp/app/pages/meetup-editor/meetup-editor.component.ts @@ -1,7 +1,6 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from "@angular/core"; import { ActivatedRoute, Params, Router } from "@angular/router"; import { LABELS, LayoutService, PATTERNS } from "@dotnetru/core"; -import { IAutocompleteRow } from "@dotnetru/shared/autocomplete"; import { Moment } from "moment"; import { Subscription } from "rxjs"; diff --git a/DevActivator/ClientApp/app/pages/timepad/interfaces.ts b/DevActivator/ClientApp/app/pages/timepad/interfaces.ts index e0b2969..dc65fc4 100644 --- a/DevActivator/ClientApp/app/pages/timepad/interfaces.ts +++ b/DevActivator/ClientApp/app/pages/timepad/interfaces.ts @@ -1,4 +1,5 @@ import { IFriend } from "../friend-editor/interfaces"; +import { Community } from "../meetup-editor/enums"; import { IApiSession, ISession } from "../meetup-editor/interfaces"; import { ISpeaker } from "../speaker-editor/interfaces"; import { ITalk } from "../talk-editor/interfaces"; @@ -11,6 +12,7 @@ export interface IMap { export interface ICompositeMeetup { id: string | undefined; name: string | undefined; + communityId: Community | undefined; venue: IVenue | undefined; sessions: ISession[]; talks: IMap; @@ -24,6 +26,7 @@ export type IApiCompositeMeetup = ICompositeMeetup & { export interface IRandomConcatModel { name: string | undefined; + communityId: string | undefined; venueId: string | undefined; friendIds: string[]; sessions: ISession[]; diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html index 77219a5..1d4289a 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html @@ -36,6 +36,20 @@ +

Сообщество

+ + + + {{ Community[community] }} + + + + +

Площадка

+
+
\ No newline at end of file diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts index e0647f9..9f0710a 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts @@ -2,7 +2,7 @@ import { CdkDragDrop, moveItemInArray } from "@angular/cdk/drag-drop"; import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from "@angular/core"; import { MatDialog, MatDialogConfig } from "@angular/material"; import { ActivatedRoute, Params } from "@angular/router"; -import { LABELS, PATTERNS } from "@dotnetru/core"; +import { DateConverterService, LABELS, PATTERNS } from "@dotnetru/core"; import { Moment } from "moment"; import { Subscription } from "rxjs"; @@ -64,7 +64,10 @@ export class TimepadComponent implements OnInit, OnDestroy { communityId: String(this.communityId || ""), venueId: this.venue ? this.venue.id : undefined, friendIds: this.friends.map((x) => x.id), - sessions: this.sessions, + sessions: this.sessions.map((x) => Object.assign({}, x, { + endTime: x.endTime ? DateConverterService.toApiString(x.endTime) : "", + startTime: x.startTime ? DateConverterService.toApiString(x.startTime) : "", + })), speakerIds: Object.keys(this.speakers), talkIds: Object.keys(this.talks), }; @@ -104,6 +107,10 @@ export class TimepadComponent implements OnInit, OnDestroy { this._subs.forEach((x) => x.unsubscribe); } + public save(): void { + this._compositeService.saveMeetup(this._meetupId, this.descriptor); + } + public addSession(talkId: string = ""): void { // todo: remove code duplication, see meetup-editor.component.ts let startTime: Moment | undefined; diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts index 2051510..9bae41c 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.service.ts @@ -26,24 +26,40 @@ export class CompositeService { API_ENDPOINTS.getCompositeMeetupUrl.replace("{{meetupId}}", meetupId || ""), descriptor, (res: IApiCompositeMeetup) => { - const model: ICompositeMeetup = Object.assign({}, { - id: meetupId, - name: res.name, - communityId: res.communityId, - venue: res.venue, - friends: res.friends, - sessions: res.sessions.map((x: IApiSession) => Object.assign({}, x, { - endTime: DateConverterService.toMoment(x.endTime), - startTime: DateConverterService.toMoment(x.startTime), - })), - speakers: res.speakers, - talks: res.talks, - }); + const model: ICompositeMeetup = this.toCompositeMeetup(meetupId, res); + this._meetup$.next(model); + if (cb) { + cb(); + } + }); + } + public saveMeetup(meetupId: string | undefined, descriptor: IRandomConcatModel, cb?: () => void): void { + this._httpService.post( + API_ENDPOINTS.saveCompositeMeetupUrl.replace("{{meetupId}}", meetupId || ""), + descriptor, + (res: IApiCompositeMeetup) => { + const model: ICompositeMeetup = this.toCompositeMeetup(meetupId, res); this._meetup$.next(model); if (cb) { cb(); } }); } + + private toCompositeMeetup(meetupId: string | undefined, data: IApiCompositeMeetup): ICompositeMeetup { + return Object.assign({}, { + id: meetupId, + name: data.name, + communityId: data.communityId, + venue: data.venue, + friends: data.friends, + sessions: data.sessions.map((x: IApiSession) => Object.assign({}, x, { + endTime: DateConverterService.toMoment(x.endTime), + startTime: DateConverterService.toMoment(x.startTime), + })), + speakers: data.speakers, + talks: data.talks, + }); + } } diff --git a/DevActivator/Controllers/CompositeController.cs b/DevActivator/Controllers/CompositeController.cs index 00b3cb8..ce228c0 100644 --- a/DevActivator/Controllers/CompositeController.cs +++ b/DevActivator/Controllers/CompositeController.cs @@ -40,11 +40,13 @@ public async Task GetMeetup([FromRoute] string meetupId, [FromBo descriptor.SpeakerIds = descriptor.SpeakerIds ?? new List(); descriptor.FriendIds = descriptor.FriendIds ?? new List(); - if (meetup?.Sessions != null) + if (meetup != null && descriptor.Sessions.Count == 0) { - descriptor.TalkIds.AddRange(meetup.Sessions.Select(x => x.TalkId)); + descriptor.Sessions = meetup.Sessions; } + descriptor.TalkIds.AddRange(descriptor.Sessions.Select(x => x.TalkId).Where(x => !string.IsNullOrWhiteSpace(x))); + // talks var talks = new Dictionary(); foreach (var talkId in descriptor.TalkIds.Distinct()) @@ -65,7 +67,7 @@ public async Task GetMeetup([FromRoute] string meetupId, [FromBo } // friends - if (meetup?.FriendIds != null) + if (meetup != null && descriptor.FriendIds.Count == 0) { descriptor.FriendIds.AddRange(meetup.FriendIds.Select(x => x.FriendId)); } @@ -73,7 +75,7 @@ public async Task GetMeetup([FromRoute] string meetupId, [FromBo var friends = new List(); foreach (var friendId in descriptor.FriendIds.Distinct()) { - var friend = await _friendService.GetFriendAsync(friendId).ConfigureAwait(false); + var friend = await _friendService.GetFriendAsync(friendId).ConfigureAwait(true); friends.Add(friend); } @@ -88,7 +90,7 @@ public async Task GetMeetup([FromRoute] string meetupId, [FromBo VenueVm venue = null; if (!string.IsNullOrWhiteSpace(descriptor.VenueId)) { - venue = await _venueService.GetVenueAsync(descriptor.VenueId).ConfigureAwait(false); + venue = await _venueService.GetVenueAsync(descriptor.VenueId).ConfigureAwait(true); } // community @@ -103,11 +105,65 @@ public async Task GetMeetup([FromRoute] string meetupId, [FromBo Name = descriptor.Name, CommunityId = descriptor.CommunityId.GetCommunity(), Venue = venue, - Sessions = meetup?.Sessions, + Sessions = descriptor.Sessions, Talks = talks, Speakers = speakers, Friends = friends }; } + + [HttpPost("[action]/{meetupId?}")] + public async Task SaveMeetup([FromRoute] string meetupId, [FromBody] RandomConcatModel descriptor = null) + { + var oldMeetup = await _meetupService.GetMeetupAsync(meetupId).ConfigureAwait(true); + + if (oldMeetup != null) + { + Extend(oldMeetup, descriptor); + var savedMeetup = await _meetupService.UpdateMeetupAsync(oldMeetup).ConfigureAwait(true); + meetupId = savedMeetup.Id; + } + else + { + var newMeetup = new MeetupVm {Id = meetupId}; + Extend(newMeetup, descriptor); + + var savedMeetup = await _meetupService.AddMeetupAsync(newMeetup).ConfigureAwait(true); + meetupId = savedMeetup.Id; + } + + return await GetMeetup(meetupId).ConfigureAwait(true); + } + + private static void Extend(MeetupVm meetup, RandomConcatModel descriptor) + { + if (descriptor != null) + { + if (!string.IsNullOrWhiteSpace(descriptor.Name)) + { + meetup.Name = descriptor.Name; + } + + if (!string.IsNullOrWhiteSpace(descriptor.CommunityId)) + { + meetup.CommunityId = descriptor.CommunityId.GetCommunity(); + } + + if (descriptor.FriendIds != null && descriptor.FriendIds.Count != 0) + { + meetup.FriendIds = descriptor.FriendIds.Select(x => new FriendReference {FriendId = x}).ToList(); + } + + if (!string.IsNullOrWhiteSpace(descriptor.VenueId)) + { + meetup.VenueId = descriptor.VenueId; + } + + if (descriptor.Sessions != null && descriptor.Sessions.Count != 0) + { + meetup.Sessions = descriptor.Sessions; + } + } + } } } \ No newline at end of file From 77955246be640854efd2fe2d567aaa9e1c38d39c Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Thu, 21 Mar 2019 19:53:48 +0300 Subject: [PATCH 18/29] create meetup --- DevActivator.Meetups.BL/Services/MeetupService.cs | 2 +- .../app/components/navmenu/navmenu.component.html | 7 ++++++- .../pages/meetup-editor/session-editor.component.ts | 2 +- .../ClientApp/app/pages/search/search.component.html | 4 ++++ .../ClientApp/app/pages/search/search.component.ts | 9 +++++++++ .../ClientApp/app/pages/timepad/timepad.component.ts | 12 +++++++----- DevActivator/wwwroot/icons/meetup.svg | 3 +++ 7 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 DevActivator/wwwroot/icons/meetup.svg diff --git a/DevActivator.Meetups.BL/Services/MeetupService.cs b/DevActivator.Meetups.BL/Services/MeetupService.cs index a82248f..4b3c781 100644 --- a/DevActivator.Meetups.BL/Services/MeetupService.cs +++ b/DevActivator.Meetups.BL/Services/MeetupService.cs @@ -32,7 +32,7 @@ public async Task> GetAllMeetupsAsync() public async Task GetMeetupAsync(string meetupId) { var meetup = await _meetupProvider.GetMeetupOrDefaultAsync(meetupId).ConfigureAwait(false); - return meetup.ToVm(); + return meetup?.ToVm(); } public async Task AddMeetupAsync(MeetupVm meetup) diff --git a/DevActivator/ClientApp/app/components/navmenu/navmenu.component.html b/DevActivator/ClientApp/app/components/navmenu/navmenu.component.html index b643239..0fe4bdb 100644 --- a/DevActivator/ClientApp/app/components/navmenu/navmenu.component.html +++ b/DevActivator/ClientApp/app/components/navmenu/navmenu.component.html @@ -17,7 +17,12 @@ - + + + Встречу + person diff --git a/DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.ts b/DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.ts index 8ba3e5a..6741523 100644 --- a/DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.ts +++ b/DevActivator/ClientApp/app/pages/meetup-editor/session-editor.component.ts @@ -19,7 +19,7 @@ export class SessionEditorComponent { return this._session; } public set session(value: ISession) { - this._session = Object.assign({}, value); + this._session = value; } @Output() public readonly talkSelected = new EventEmitter(); diff --git a/DevActivator/ClientApp/app/pages/search/search.component.html b/DevActivator/ClientApp/app/pages/search/search.component.html index 878eb26..968c149 100644 --- a/DevActivator/ClientApp/app/pages/search/search.component.html +++ b/DevActivator/ClientApp/app/pages/search/search.component.html @@ -15,4 +15,8 @@ + +
\ No newline at end of file diff --git a/DevActivator/ClientApp/app/pages/search/search.component.ts b/DevActivator/ClientApp/app/pages/search/search.component.ts index d654b54..9052812 100644 --- a/DevActivator/ClientApp/app/pages/search/search.component.ts +++ b/DevActivator/ClientApp/app/pages/search/search.component.ts @@ -51,4 +51,13 @@ export class SearchPageComponent { public addMeetup(): void { this._router.navigateByUrl(`meetup-creator`); } + + public addTimepad(): void { + this._router.navigateByUrl(`timepad`); + } + + public onTimepadSelected(meetup: IAutocompleteRow): void { + this._router.navigateByUrl(`timepad/${meetup.id}`); + } + } diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts b/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts index 9f0710a..3ad9de0 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.ts @@ -35,8 +35,7 @@ export class TimepadComponent implements OnInit, OnDestroy { public readonly PATTERNS = PATTERNS; public readonly timeFormat: string = "HH:mm"; - // todo: remove readonly, implement false - public readonly editMode: boolean = true; + public editMode: boolean = true; public name: string | undefined = undefined; public communityId: Community | undefined; @@ -52,7 +51,9 @@ export class TimepadComponent implements OnInit, OnDestroy { } set meetupId(value: string) { this._meetupId = value; - this._compositeService.fetchMeetup(this._meetupId, this.descriptor); + if (this.editMode) { + this._compositeService.fetchMeetup(this._meetupId, this.descriptor); + } } private _meetupId?: string; @@ -84,7 +85,8 @@ export class TimepadComponent implements OnInit, OnDestroy { this._subs = [ this._activatedRoute.params .subscribe((params: Params) => { - if (typeof params.meetupId === "string" && params.meetupId.length > 0) { + this.editMode = typeof params.meetupId === "string" && params.meetupId.length > 0; + if (this.editMode) { this.meetupId = params.meetupId; } }), @@ -142,7 +144,7 @@ export class TimepadComponent implements OnInit, OnDestroy { this._compositeService.fetchMeetup(this._meetupId, descriptor, () => { const session: ISession | undefined = this.sessions[index]; if (session) { - this.sessions[index].talkId = talkId; + this.sessions[index] = Object.assign({}, session, { talkId }); } else { this.addSession(talkId); } diff --git a/DevActivator/wwwroot/icons/meetup.svg b/DevActivator/wwwroot/icons/meetup.svg new file mode 100644 index 0000000..f767bb2 --- /dev/null +++ b/DevActivator/wwwroot/icons/meetup.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file From 2ffbc6abd23ca1b08268e816159d3017bad57017 Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Sat, 6 Apr 2019 10:18:47 +0300 Subject: [PATCH 19/29] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D1=84=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20-=20=D0=9F=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B8=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?"=D0=9F=D0=B0=D1=80=D1=82=D0=BD=D1=91=D1=80=D1=8B"=20=D0=B2=20"?= =?UTF-8?q?=D0=94=D1=80=D1=83=D0=B7=D1=8C=D1=8F"=20-=20=D0=9F=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B8=D0=BC=D0=B5=D0=BD=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20?= =?UTF-8?q?"=D0=A1=D0=BF=D0=B8=D0=BA=D0=B5=D1=80"=20=D0=B2=20"=D0=94=D0=BE?= =?UTF-8?q?=D0=BA=D0=BB=D0=B0=D0=B4=D1=87=D0=B8=D0=BA"=20-=20=D0=A3=D0=B4?= =?UTF-8?q?=D0=B0=D0=BB=D0=B8=D1=82=D1=8C=20=D0=BD=D0=B5=D0=BD=D1=83=D0=B6?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D1=82=D0=B5=D0=BA=D1=81=D1=82=20"=D0=9F?= =?UTF-8?q?=D0=BE=D1=81=D0=BB=D0=B5=20=D1=8D=D1=82=D0=B8=D1=85=20=D0=B2?= =?UTF-8?q?=D0=B4=D0=BE=D1=85=D0=BD=D0=BE=D0=B2=D0=BB=D1=8F=D1=8E=D1=89?= =?UTF-8?q?=D0=B8=D1=85=20..."=20-=20=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20=D0=BD=D0=B5=D0=BD=D1=83=D0=B6=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?=D1=82=D0=B5=D0=BA=D1=81=D1=82=20"=D0=A3=D1=87=D0=B0=D1=81?= =?UTF-8?q?=D1=82=D0=B8=D0=B5=20=D0=B1=D0=B5=D1=81=D0=BF=D0=BB=D0=B0=D1=82?= =?UTF-8?q?=D0=BD=D0=BE=D0=B5=20..."?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ClientApp/app/components/navmenu/navmenu.component.html | 2 +- .../app/components/speaker-list/speaker-list.component.ts | 2 +- .../app/pages/speaker-editor/speaker-editor.service.ts | 4 ++-- .../app/pages/talk-editor/talk-editor.component.html | 6 +++--- .../ClientApp/app/pages/timepad/timepad.component.html | 4 +--- 5 files changed, 8 insertions(+), 10 deletions(-) diff --git a/DevActivator/ClientApp/app/components/navmenu/navmenu.component.html b/DevActivator/ClientApp/app/components/navmenu/navmenu.component.html index 0fe4bdb..d633e6d 100644 --- a/DevActivator/ClientApp/app/components/navmenu/navmenu.component.html +++ b/DevActivator/ClientApp/app/components/navmenu/navmenu.component.html @@ -26,7 +26,7 @@ person - Спикера + Докладчика diff --git a/DevActivator/ClientApp/app/components/speaker-list/speaker-list.component.ts b/DevActivator/ClientApp/app/components/speaker-list/speaker-list.component.ts index cbdc908..2b1208e 100644 --- a/DevActivator/ClientApp/app/components/speaker-list/speaker-list.component.ts +++ b/DevActivator/ClientApp/app/components/speaker-list/speaker-list.component.ts @@ -21,7 +21,7 @@ import { SpeakerListService } from "./speaker-list.service"; templateUrl: "./speaker-list.component.html", }) export class SpeakerListComponent implements OnInit, OnDestroy { - @Input() public title: string = "Поиск спикера"; + @Input() public title: string = "Поиск докладчика"; @Input() public iconName: string = "add"; @Input() public iconText: string = "Добавить"; diff --git a/DevActivator/ClientApp/app/pages/speaker-editor/speaker-editor.service.ts b/DevActivator/ClientApp/app/pages/speaker-editor/speaker-editor.service.ts index 016bbcd..2081ae6 100644 --- a/DevActivator/ClientApp/app/pages/speaker-editor/speaker-editor.service.ts +++ b/DevActivator/ClientApp/app/pages/speaker-editor/speaker-editor.service.ts @@ -42,7 +42,7 @@ export class SpeakerEditorService { API_ENDPOINTS.addSpeakerUrl, speaker, (res: ISpeaker) => { - this._layoutService.showInfo("Спикер добавлен успешно"); + this._layoutService.showInfo("Докладчик добавлен успешно"); cb(res); }, ); @@ -53,7 +53,7 @@ export class SpeakerEditorService { API_ENDPOINTS.updateSpeakerUrl, speaker, (x: ISpeaker) => { - this._layoutService.showInfo("Спикер изменён успешно"); + this._layoutService.showInfo("Докладчик изменён успешно"); this._dataStore.speaker = x; this._speaker$.next(Object.assign({}, this._dataStore.speaker)); cb(); diff --git a/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.html b/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.html index 38cf946..595e6b7 100644 --- a/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.html +++ b/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.html @@ -64,7 +64,7 @@ person_add - Добавить спикера + Добавить докладчика Это парный доклад Это тройничок Это круглый стол @@ -86,7 +86,7 @@ mat-button (click)="createSpeaker()"> fiber_new - Создать спикера + Создать докладчика
diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html index ed58937..ce69dac 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html @@ -71,7 +71,7 @@

-

Партнеры

+

Друзья

@@ -207,7 +207,6 @@

Программа встречи

Добавить слот -

После этих вдохновляющих речей приглашаем всех желающих в бар для обсуждения накопившихся вопросов и идей!

Доклады

@@ -263,7 +262,6 @@

{{ speaker.name }}

-

Участие бесплатное, количество мест ограниченно!

+
close`); + } + public onFilesAccepted(files: IAcceptedFile[]): void { for (const acceptedFile of files) { this._speakerEditorService.storeSpeakerAvatar(this.speaker.id, acceptedFile.file); diff --git a/DevActivator/ClientApp/app/pages/talk-editor/talk-editor-dialog.component.ts b/DevActivator/ClientApp/app/pages/talk-editor/talk-editor-dialog.component.ts index 53bff74..721685b 100644 --- a/DevActivator/ClientApp/app/pages/talk-editor/talk-editor-dialog.component.ts +++ b/DevActivator/ClientApp/app/pages/talk-editor/talk-editor-dialog.component.ts @@ -2,7 +2,6 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component } from "@angular/ import { MatDialog, MatDialogRef } from "@angular/material"; import { ActivatedRoute, Router } from "@angular/router"; import { LayoutService } from "@dotnetru/core"; - import { ITalk } from "./interfaces"; import { TalkEditorComponent } from "./talk-editor.component"; import { TalkEditorService } from "./talk-editor.service"; @@ -33,4 +32,8 @@ export class TalkEditorDialogComponent extends TalkEditorComponent { this._dialogRef.close(talk); }); } + + public close(): void { + this._dialogRef.close(); + } } diff --git a/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.html b/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.html index 40a951b..2dafe8f 100644 --- a/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.html +++ b/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.html @@ -18,6 +18,13 @@ {{ editMode ? 'save' : 'add' }} {{ editMode ? 'Сохранить' : 'Добавить' }} +
diff --git a/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.ts b/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.ts index 3ec2b9c..a66d8a0 100644 --- a/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.ts +++ b/DevActivator/ClientApp/app/pages/talk-editor/talk-editor.component.ts @@ -1,20 +1,10 @@ -import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - EventEmitter, - Input, - OnDestroy, - OnInit, - Output, -} from "@angular/core"; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Output } from "@angular/core"; import { MatDialog } from "@angular/material"; import { ActivatedRoute, Params, Router } from "@angular/router"; import { LABELS, LayoutService, PATTERNS } from "@dotnetru/core"; import { ISpeaker, SpeakerEditorDialogComponent } from "@dotnetru/pages/speaker-editor"; import { IAutocompleteRow } from "@dotnetru/shared/autocomplete"; import { Subscription } from "rxjs"; - import { ITalk } from "./interfaces"; import { TalkEditorService } from "./talk-editor.service"; @@ -98,6 +88,10 @@ export class TalkEditorComponent implements OnInit, OnDestroy { this._talkEditorService.reset(); } + public close(): void { + console.warn(`${this.constructor.name} => close`); + } + public onSpeakerSelected(row: IAutocompleteRow, index: number): void { this.talk.speakerIds[index] = { speakerId: row.id }; } diff --git a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor-dialog.component.ts b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor-dialog.component.ts index 4b958ee..44f13fb 100644 --- a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor-dialog.component.ts +++ b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor-dialog.component.ts @@ -1,8 +1,7 @@ import { AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject } from "@angular/core"; -import { MAT_DIALOG_DATA, MatDialogRef } from "@angular/material"; +import { MatDialogRef, MAT_DIALOG_DATA } from "@angular/material"; import { ActivatedRoute, Router } from "@angular/router"; import { LayoutService } from "@dotnetru/core"; - import { IVenue } from "./interfaces"; import { VenueEditorComponent } from "./venue-editor.component"; import { VenueEditorService } from "./venue-editor.service"; @@ -43,4 +42,8 @@ export class VenueEditorDialogComponent extends VenueEditorComponent implements this._dialogRef.close(venue); }); } + + public close(): void { + this._dialogRef.close(); + } } diff --git a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.component.html b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.component.html index 5c6630f..115dace 100644 --- a/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.component.html +++ b/DevActivator/ClientApp/app/pages/venue-editor/venue-editor.component.html @@ -18,6 +18,13 @@ {{ editMode ? 'save' : 'add' }} {{ editMode ? 'Сохранить' : 'Добавить' }} + close`); + } } diff --git a/DevActivator/tslint.json b/DevActivator/tslint.json index 4e3b8ca..6d75524 100644 --- a/DevActivator/tslint.json +++ b/DevActivator/tslint.json @@ -7,6 +7,7 @@ "jsRules": {}, "rules": { "object-literal-sort-keys": false, + "ordered-imports": false, "max-line-length": [ true, { From 4558b7a4cec040cd268da85cc887eed600c08a2f Mon Sep 17 00:00:00 2001 From: OvCharOv Alex Date: Tue, 16 Apr 2019 19:34:29 +0300 Subject: [PATCH 24/29] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D1=84=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20-=20=D0=92=20=D0=B7?= =?UTF-8?q?=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE=D0=B2=D0=BE=D0=BA=20=D0=B2=D1=81?= =?UTF-8?q?=D0=B5=D1=85=20=D0=B4=D0=B8=D0=B0=D0=BB=D0=BE=D0=B3=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=BD=D1=83=D0=B6=D0=BD=D0=BE=20=D0=B4=D0=BE=D0=B1=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D1=82=D1=8C=20=D0=BD=D0=B0=D0=B7=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5,=20=D0=BE=D0=BF=D0=B8=D1=81=D1=8B=D0=B2=D0=B0?= =?UTF-8?q?=D1=8E=D1=89=D0=B5=D0=B5=20=D0=BA=D0=B0=D0=BA=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=81=D1=83=D1=89=D0=BD=D0=BE=D1=81=D1=82=D1=8C=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B4=D0=B0=D0=BA=D1=82=D0=B8=D1=80=D1=83=D0=B5=D1=82=D1=81?= =?UTF-8?q?=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../friend-editor.component.html | 37 +++++++------- .../speaker-editor.component.html | 51 ++++++++++--------- .../talk-editor/talk-editor.component.html | 51 ++++++++++--------- .../app/pages/timepad/timepad.component.css | 6 +++ .../app/pages/timepad/timepad.component.html | 4 ++ .../venue-editor/venue-editor.component.html | 51 ++++++++++--------- DevActivator/ClientApp/app/themes/common.scss | 13 +++++ 7 files changed, 124 insertions(+), 89 deletions(-) diff --git a/DevActivator/ClientApp/app/pages/friend-editor/friend-editor.component.html b/DevActivator/ClientApp/app/pages/friend-editor/friend-editor.component.html index dd56856..6e453e8 100644 --- a/DevActivator/ClientApp/app/pages/friend-editor/friend-editor.component.html +++ b/DevActivator/ClientApp/app/pages/friend-editor/friend-editor.component.html @@ -1,23 +1,26 @@
-
- - +
+ {{ editMode ? 'Редактирование' : 'Добавление' }} друга +
+ + +
{{ speaker.lastUpdateDate | json }} -
- - - +
+ {{ editMode ? 'Редактирование' : 'Добавление' }} докладчика +
+ + + +
-
- - - +
+ {{ editMode ? 'Редактирование' : 'Добавление' }} доклада +
+ + + +
diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.css b/DevActivator/ClientApp/app/pages/timepad/timepad.component.css index b8a1ac1..ba989cf 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.css +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.css @@ -61,4 +61,10 @@ p { .handle { padding-right: 4px; +} + +.header { + height: 40px; + display: flex; + align-items: center; } \ No newline at end of file diff --git a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html index a8af6fa..51af5cb 100644 --- a/DevActivator/ClientApp/app/pages/timepad/timepad.component.html +++ b/DevActivator/ClientApp/app/pages/timepad/timepad.component.html @@ -1,5 +1,9 @@
+
+ {{ editMode ? 'Редактирование' : 'Добавление' }} встречи +
+ -
- - - +
+ {{ editMode ? 'Редактирование' : 'Добавление' }} площадки +
+ + + +
Date: Tue, 16 Apr 2019 19:38:23 +0300 Subject: [PATCH 25/29] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=B0?= =?UTF-8?q?=D0=BB=D1=8C=D1=84=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D1=8F=20-=20=D0=9A=D0=BD=D0=BE?= =?UTF-8?q?=D0=BF=D0=BA=D0=B0=20"=D0=A1=D0=B1=D1=80=D0=BE=D1=81=D0=B8?= =?UTF-8?q?=D1=82=D1=8C"=20=D0=BD=D1=83=D0=B6=D0=BD=D0=B0=20=D1=82=D0=BE?= =?UTF-8?q?=D0=BB=D1=8C=D0=BA=D0=BE=20=D0=B5=D1=81=D0=BB=D0=B8=20=D1=84?= =?UTF-8?q?=D0=BE=D1=80=D0=BC=D0=B0=20=D0=BE=D1=82=D0=BA=D1=80=D1=8B=D0=BB?= =?UTF-8?q?=D0=B0=D1=81=D1=8C=20=D0=BD=D0=B0=20=D1=80=D0=B5=D0=B4=D0=B0?= =?UTF-8?q?=D0=BA=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5,?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=B8=20=D1=82=D0=B5=D0=BC=20=D0=B1=D0=BE=D0=BB?= =?UTF-8?q?=D0=B5=D0=B5=20=D0=BF=D1=80=D0=B8=20=D0=BF=D1=80=D0=BE=D1=81?= =?UTF-8?q?=D0=BC=D0=BE=D1=82=D1=80=D0=B5=20(=D0=B2=D1=8B=D0=B1=D0=BE?= =?UTF-8?q?=D1=80=D0=B5)=20=D0=BE=D0=BD=D0=B0=20=D0=BD=D0=B5=20=D0=BD?= =?UTF-8?q?=D1=83=D0=B6=D0=BD=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/pages/friend-editor/friend-editor.component.html | 2 +- .../app/pages/meetup-editor/meetup-editor.component.html | 2 +- .../app/pages/speaker-editor/speaker-editor.component.html | 2 +- .../ClientApp/app/pages/talk-editor/talk-editor.component.html | 2 +- .../app/pages/venue-editor/venue-editor.component.html | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/DevActivator/ClientApp/app/pages/friend-editor/friend-editor.component.html b/DevActivator/ClientApp/app/pages/friend-editor/friend-editor.component.html index 6e453e8..0ede6b5 100644 --- a/DevActivator/ClientApp/app/pages/friend-editor/friend-editor.component.html +++ b/DevActivator/ClientApp/app/pages/friend-editor/friend-editor.component.html @@ -7,7 +7,7 @@