diff --git a/package-lock.json b/package-lock.json index 5459b2f..44655a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,36 +5,25 @@ "requires": true, "dependencies": { "@angular-devkit/architect": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.6.3.tgz", - "integrity": "sha512-w9tK3VACU+CnOQQZT6o7QO2brn/OVNDf2Y11rI+ZQH7UIn6N0ZFoMl9WyFB//K2Gkoa7hAobykhRTtP8lrTF1g==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.6.5.tgz", + "integrity": "sha512-HlCCnpg301XGbNAycPCadZlSVCOHlFtw2qz2zzNBIWW2Cbi9q3eazWCg/OeD237qgJ8hxvGSkOi7vWG2AoYkIg==", "dev": true, "requires": { - "@angular-devkit/core": "0.6.3", + "@angular-devkit/core": "0.6.5", "rxjs": "^6.0.0" - }, - "dependencies": { - "rxjs": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.1.0.tgz", - "integrity": "sha512-lMZdl6xbHJCSb5lmnb6nOhsoBVCyoDC5LDJQK9WWyq+tsI7KnlDIZ0r0AZAlBpRPLbwQA9kzSBAZwNIZEZ+hcw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - } } }, "@angular-devkit/build-angular": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.6.3.tgz", - "integrity": "sha512-ce+uAXQXyuMy6IxSnsGKeHlLVjsI77DblNvkcO1NilP7iYxujEJx6qDq/Hrf1uhuqRpm+8pt5zY6QD90gQrDcg==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.6.5.tgz", + "integrity": "sha512-+ikh/nntfIgpIV5meunbWKdQQ0nlx/hR94UDo0YwpZjJPScEBrd3i3nhoAw6iTK1PfoGwYXSzZTnTJyQAGMUAg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.6.3", - "@angular-devkit/build-optimizer": "0.6.3", - "@angular-devkit/core": "0.6.3", - "@ngtools/webpack": "6.0.3", + "@angular-devkit/architect": "0.6.5", + "@angular-devkit/build-optimizer": "0.6.5", + "@angular-devkit/core": "0.6.5", + "@ngtools/webpack": "6.0.5", "ajv": "~6.4.0", "autoprefixer": "^8.4.1", "cache-loader": "^1.2.2", @@ -84,15 +73,6 @@ "webpack-subresource-integrity": "^1.1.0-rc.4" }, "dependencies": { - "rxjs": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.1.0.tgz", - "integrity": "sha512-lMZdl6xbHJCSb5lmnb6nOhsoBVCyoDC5LDJQK9WWyq+tsI7KnlDIZ0r0AZAlBpRPLbwQA9kzSBAZwNIZEZ+hcw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -112,9 +92,9 @@ } }, "@angular-devkit/build-optimizer": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.6.3.tgz", - "integrity": "sha512-C0LGWh7+rYjpE1T1guaq9EMovwhEJ1QR25qjJxUoYvN+sM+MfVpMhoa6ruqnxh+eQCfRiMdIsnbOboiZxNHTQw==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.6.5.tgz", + "integrity": "sha512-GXV3XLHvzmXwBRcpaXKiMrAFq0t8VTq9GwsQk9W1diUstlNCnuNSmwj1fpJxR23pPsH+5mvrrfWYdoXt8TWzHw==", "dev": true, "requires": { "loader-utils": "^1.1.0", @@ -124,9 +104,9 @@ } }, "@angular-devkit/core": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.6.3.tgz", - "integrity": "sha512-97hFVW6in8oYJUEqjmUP0Tb/mPlTG3sc0THpe5MCGEkDPjlp2cObt9rUCAVOjugBlScV8rzTpVQ+95PT60Py8A==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.6.5.tgz", + "integrity": "sha512-DpowzV6ObjVJb6ccElAD5rlqL9BN32ZGspg14YVyXf9mlmcNw3gm+P9BGIhuwJ8rt9fqmse87W59/Z2MLUTVkQ==", "dev": true, "requires": { "ajv": "~6.4.0", @@ -445,35 +425,340 @@ "snapdragon": "^0.8.1", "to-regex": "^3.0.2" } - }, - "rxjs": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.1.0.tgz", - "integrity": "sha512-lMZdl6xbHJCSb5lmnb6nOhsoBVCyoDC5LDJQK9WWyq+tsI7KnlDIZ0r0AZAlBpRPLbwQA9kzSBAZwNIZEZ+hcw==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } } } }, "@angular-devkit/schematics": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.6.3.tgz", - "integrity": "sha512-dXlyVNuFRhiOnhAk0NojEUThLrZBpVZmWvEQ4h/pnyHS0P9CfnHqJ8DCcCrjOwYkzdBwBrYchXOCYfo8zuxYGw==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.6.7.tgz", + "integrity": "sha512-DdVYUJls09w+efSZAN96WdcwrAZ6dnJGcUeep7TvImCTu26UPmckEw/yy0HvfM1rSZZsu/VN8r1PoaQTbGc2vw==", "dev": true, "requires": { - "@angular-devkit/core": "0.6.3", + "@angular-devkit/core": "0.6.7", "rxjs": "^6.0.0" }, "dependencies": { - "rxjs": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.1.0.tgz", - "integrity": "sha512-lMZdl6xbHJCSb5lmnb6nOhsoBVCyoDC5LDJQK9WWyq+tsI7KnlDIZ0r0AZAlBpRPLbwQA9kzSBAZwNIZEZ+hcw==", + "@angular-devkit/core": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.6.7.tgz", + "integrity": "sha512-kzNI95g3of8C0an2U/lUa2ixqABFKQt06VfzSz6pUCl/RJblLnxua9dgsSb8jc0eDQ5ZmekXN0UgkED0JDYXsQ==", "dev": true, "requires": { - "tslib": "^1.9.0" + "ajv": "~6.4.0", + "chokidar": "^2.0.3", + "rxjs": "^6.0.0", + "source-map": "^0.5.6" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "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.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.1.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "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" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "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" } } } @@ -487,16 +772,16 @@ } }, "@angular/cli": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-6.0.3.tgz", - "integrity": "sha512-G8jfgJublsRjveX1P+F5awHvpC07mKAF7f5lebowIs+QAHSOD6HxQ/JhMbJTwz/aj20iWgZOygA5LhkP0Wr+UQ==", + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-6.0.7.tgz", + "integrity": "sha512-rPFhPjT6TegRV5qENEgg0MwQKFDuqbF+OoEqgE5QjTQC2gQhnG/sHOgyqixHtvdLOaPfZczCjEltGQj/ELArqw==", "dev": true, "requires": { - "@angular-devkit/architect": "0.6.3", - "@angular-devkit/core": "0.6.3", - "@angular-devkit/schematics": "0.6.3", - "@schematics/angular": "0.6.3", - "@schematics/update": "0.6.3", + "@angular-devkit/architect": "0.6.7", + "@angular-devkit/core": "0.6.7", + "@angular-devkit/schematics": "0.6.7", + "@schematics/angular": "0.6.7", + "@schematics/update": "0.6.7", "opn": "~5.3.0", "resolve": "^1.1.7", "rxjs": "^6.0.0", @@ -506,27 +791,345 @@ "yargs-parser": "^10.0.0" }, "dependencies": { + "@angular-devkit/architect": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.6.7.tgz", + "integrity": "sha512-ULn46EmEJ9/AD9LJ9DwFtT1CcujpC3x1FSYjpPWqmyv1CH0vsjtMSgUCBUPIonqM4jRjDvIuxclpWJrsH/t9og==", + "dev": true, + "requires": { + "@angular-devkit/core": "0.6.7", + "rxjs": "^6.0.0" + } + }, + "@angular-devkit/core": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.6.7.tgz", + "integrity": "sha512-kzNI95g3of8C0an2U/lUa2ixqABFKQt06VfzSz6pUCl/RJblLnxua9dgsSb8jc0eDQ5ZmekXN0UgkED0JDYXsQ==", + "dev": true, + "requires": { + "ajv": "~6.4.0", + "chokidar": "^2.0.3", + "rxjs": "^6.0.0", + "source-map": "^0.5.6" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "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 }, - "rxjs": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.1.0.tgz", - "integrity": "sha512-lMZdl6xbHJCSb5lmnb6nOhsoBVCyoDC5LDJQK9WWyq+tsI7KnlDIZ0r0AZAlBpRPLbwQA9kzSBAZwNIZEZ+hcw==", + "chokidar": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", "dev": true, "requires": { - "tslib": "^1.9.0" + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.1.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.0" } }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "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" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "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" + } + }, "yargs-parser": { "version": "10.0.0", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.0.0.tgz", @@ -629,48 +1232,687 @@ } }, "@ngtools/webpack": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-6.0.3.tgz", - "integrity": "sha512-wrhSFItcZp4Yzp6lgSuy23YdhaUs9D+KdGZPjwzzXtJIJCSzGkWuXzwlCwyKSFRQ6thyH/T3nffpHNaS3dWn2A==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-6.0.5.tgz", + "integrity": "sha512-bJwsBW9X9mX8nk8JJDyNZuglL8Ym/RQVM1kmLvUztgQSAMnBo046zDWEkjamXxxiTvznwHpwQTVgUzEEVdAQjg==", "dev": true, "requires": { - "@angular-devkit/core": "0.6.3", + "@angular-devkit/core": "0.6.5", "tree-kill": "^1.0.0", "webpack-sources": "^1.1.0" } }, "@schematics/angular": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.6.3.tgz", - "integrity": "sha512-YhldE1K6x/8D0PxFusjtB32iOAayyD1PSxPCx/q7I7T6x/lG7l35ZDV6ZZE6bDvIaxQBsjhIm8ACy2n+xwFxTA==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.6.7.tgz", + "integrity": "sha512-gO7xSSzBQhj1t8aD3qBd03rj3hJ1XIWJ9rzLsPpC5hVfmMCpsc6cBnwm2asJ+eZlZUah46ZDhwlnMFEu8Sfczw==", "dev": true, "requires": { - "@angular-devkit/core": "0.6.3", - "@angular-devkit/schematics": "0.6.3", + "@angular-devkit/core": "0.6.7", + "@angular-devkit/schematics": "0.6.7", "typescript": ">=2.6.2 <2.8" + }, + "dependencies": { + "@angular-devkit/core": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.6.7.tgz", + "integrity": "sha512-kzNI95g3of8C0an2U/lUa2ixqABFKQt06VfzSz6pUCl/RJblLnxua9dgsSb8jc0eDQ5ZmekXN0UgkED0JDYXsQ==", + "dev": true, + "requires": { + "ajv": "~6.4.0", + "chokidar": "^2.0.3", + "rxjs": "^6.0.0", + "source-map": "^0.5.6" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "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.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.1.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "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" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "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" + } + } } }, "@schematics/update": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.6.3.tgz", - "integrity": "sha512-UsKrg02+jwdsz9BdMVxDMeAZCF+c+dvHRWww4D2RcNzWdCTVWeBqRAmlreJJ0TGE54r7PEBnmQe0t5mS4F3d4w==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.6.7.tgz", + "integrity": "sha512-uogLzGy3+/VlbQdevn/7WFTfs2Utl5ffwN17eCNayRuXmNyHlytKtz7cx8m1w9oj/VYxZXPbWTDVM1Hlnd/mqQ==", "dev": true, "requires": { - "@angular-devkit/core": "0.6.3", - "@angular-devkit/schematics": "0.6.3", + "@angular-devkit/core": "0.6.7", + "@angular-devkit/schematics": "0.6.7", "npm-registry-client": "^8.5.1", "rxjs": "^6.0.0", "semver": "^5.3.0", "semver-intersect": "^1.1.2" }, "dependencies": { - "rxjs": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.1.0.tgz", - "integrity": "sha512-lMZdl6xbHJCSb5lmnb6nOhsoBVCyoDC5LDJQK9WWyq+tsI7KnlDIZ0r0AZAlBpRPLbwQA9kzSBAZwNIZEZ+hcw==", + "@angular-devkit/core": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.6.7.tgz", + "integrity": "sha512-kzNI95g3of8C0an2U/lUa2ixqABFKQt06VfzSz6pUCl/RJblLnxua9dgsSb8jc0eDQ5ZmekXN0UgkED0JDYXsQ==", "dev": true, "requires": { - "tslib": "^1.9.0" + "ajv": "~6.4.0", + "chokidar": "^2.0.3", + "rxjs": "^6.0.0", + "source-map": "^0.5.6" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "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.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.3.tgz", + "integrity": "sha512-zW8iXYZtXMx4kux/nuZVXjkLP+CyIK5Al5FHnj1OgTKGZfp4Oy6/ymtMSKFv3GD8DviEmUPmJg9eFdJ/JzudMg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.0", + "braces": "^2.3.0", + "fsevents": "^1.1.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^2.1.1", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0", + "upath": "^1.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "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" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-glob": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.0.tgz", + "integrity": "sha1-lSHHaEXMJhCoUgPd8ICpWML/q8A=", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "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" } } } @@ -691,9 +1933,9 @@ } }, "@types/node": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.2.tgz", - "integrity": "sha512-bjk1RIeZBCe/WukrFToIVegOf91Pebr8cXYBwLBIsfiGWVQ+ifwWsT59H3RxrWzWrzd1l/Amk1/ioY5Fq3/bpA==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.1.4.tgz", + "integrity": "sha512-GpQxofkdlHYxjHad98UUdNoMO7JrmzQZoAaghtNg14Gwg7YkohcrCoJEcEMSgllx4VIZ+mYw7ZHjfaeIagP/rg==", "dev": true }, "@types/q": { @@ -1358,13 +2600,13 @@ "dev": true }, "autoprefixer": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.5.0.tgz", - "integrity": "sha512-buY1XxFoBrXvLsoFb0jP+niSu1tCj2RwMwHj96+RfQ8DJTgb0vUhh0dg6wjJT3JzsFYBrkSj8/sGtarNdlxTFw==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-8.5.1.tgz", + "integrity": "sha512-0zXQ6OqbnVaplQKkKTASxHFPMNy6WfrXS5QRDJ4zTDxEBB3r7NPDSK4h9KCyQi1tq0tX5MsN4RdzChVBn2k/aw==", "dev": true, "requires": { - "browserslist": "^3.2.7", - "caniuse-lite": "^1.0.30000839", + "browserslist": "^3.2.8", + "caniuse-lite": "^1.0.30000846", "normalize-range": "^0.1.2", "num2fraction": "^1.2.2", "postcss": "^6.0.22", @@ -1562,9 +2804,9 @@ "dev": true }, "base64-js": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.3.tgz", - "integrity": "sha512-MsAhsUW1GxCdgYSO6tAfZrNapmUKk7mWx/k5mFY/A1gBtkaCaNapTg+FExCw1r9yeaZhqx/xPg43xgTFH6KL5w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", "dev": true }, "base64id": { @@ -1853,9 +3095,9 @@ "dev": true }, "browserify-aes": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.1.1.tgz", - "integrity": "sha512-UGnTYAnB2a3YuYKIRy1/4FB2HdM866E0qC46JXvVTYKlBlZlnvfpSfY6OKfXZAkv70eJ2a1SqzpAo5CRhZGDFg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, "requires": { "buffer-xor": "^1.0.3", @@ -1867,9 +3109,9 @@ } }, "browserify-cipher": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.0.tgz", - "integrity": "sha1-mYgkSHS/XtTijalWZtzWasj8Njo=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "dev": true, "requires": { "browserify-aes": "^1.0.4", @@ -1878,9 +3120,9 @@ } }, "browserify-des": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.0.tgz", - "integrity": "sha1-2qJ3cXRwki7S/hhZQRihdUOXId0=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.1.tgz", + "integrity": "sha512-zy0Cobe3hhgpiOM32Tj7KQ3Vl91m0njwsjzZQK1L+JDf11dzP9qIvjreVinsvXrgfjhStXwUWAEpB9D7Gwmayw==", "dev": true, "requires": { "cipher-base": "^1.0.1", @@ -1923,13 +3165,13 @@ } }, "browserslist": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.7.tgz", - "integrity": "sha512-oYVLxFVqpX9uMhOIQBLtZL+CX4uY8ZpWcjNTaxyWl5rO8yA9SSNikFnAfvk8J3P/7z3BZwNmEqFKaJoYltj3MQ==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", "dev": true, "requires": { - "caniuse-lite": "^1.0.30000835", - "electron-to-chromium": "^1.3.45" + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" } }, "buffer": { @@ -2095,9 +3337,9 @@ } }, "caniuse-lite": { - "version": "1.0.30000842", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000842.tgz", - "integrity": "sha512-juspQHLwQRgptEM03HN66SpM/ggZUB+m49NAgJIaIS11aXVNeRB57sEY1X6tEzeK2THGvYWKZZu1wIbh+W7YTA==", + "version": "1.0.30000846", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000846.tgz", + "integrity": "sha512-qxUOHr5mTaadWH1ap0ueivHd8x42Bnemcn+JutVr7GWmm2bU4zoBhjuv5QdXgALQnnT626lOQros7cCDf8PwCg==", "dev": true }, "capture-stack-trace": { @@ -2644,9 +3886,9 @@ } }, "core-js": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.6.tgz", - "integrity": "sha512-lQUVfQi0aLix2xpyjrrJEvfuYCqPc/HwmTKsC/VNf8q0zsjX7SQZtp4+oRONN5Tsur9GDETPjj+Ub2iDiGZfSQ==" + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.7.tgz", + "integrity": "sha512-RszJCAxg/PP6uzXVXL6BsxSXx/B05oJAQ2vkJRjyjrEcNVycaqOmNb5OTxZPE3xa5gwZduqza6L9JOCenh/Ecw==" }, "core-util-is": { "version": "1.0.2", @@ -2677,9 +3919,9 @@ } }, "create-ecdh": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.0.tgz", - "integrity": "sha1-iIxyNZbN92EvZJgjPuvXo1MBc30=", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "dev": true, "requires": { "bn.js": "^4.1.0", @@ -2696,21 +3938,22 @@ } }, "create-hash": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", - "integrity": "sha1-YGBCrIuSYnUPSDyt2rD1gZFy2P0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", - "ripemd160": "^2.0.0", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", "sha.js": "^2.4.0" } }, "create-hmac": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.6.tgz", - "integrity": "sha1-rLniIaThe9sHbpBlfEK5PjcmzwY=", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, "requires": { "cipher-base": "^1.0.3", @@ -3090,9 +4333,9 @@ "dev": true }, "diffie-hellman": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.2.tgz", - "integrity": "sha1-tYNXOScM/ias9jIJn97SoH8gnl4=", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "dev": true, "requires": { "bn.js": "^4.1.0", @@ -3284,9 +4527,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.47", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.47.tgz", - "integrity": "sha1-dk6IfKkQTQGgrI6r7n38DizhQQQ=", + "version": "1.3.48", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.48.tgz", + "integrity": "sha1-07DYWTgUBE4JLs4hCPw6ya6kuQA=", "dev": true }, "elliptic": { @@ -3459,9 +4702,9 @@ } }, "es5-ext": { - "version": "0.10.42", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.42.tgz", - "integrity": "sha512-AJxO1rmPe1bDEfSR6TJ/FgMFYuTBhR5R57KW58iCkYACMyFbrkqVyzXSurYoScDGvgyMpk7uRF/lPUPPTmsRSA==", + "version": "0.10.43", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.43.tgz", + "integrity": "sha512-cZd1vezWuTM5qMlasKWqQFioFKwO352nVBzhOTMUf/pKQl5Gcq5EdJzqtSNXKnFQSCJDiQZjCYlYbnzFB657OA==", "dev": true, "requires": { "es6-iterator": "~2.0.3", @@ -4240,8 +5483,7 @@ "buffer-shims": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "caseless": { "version": "0.12.0", @@ -4258,8 +5500,7 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "combined-stream": { "version": "1.0.5", @@ -4278,14 +5519,12 @@ "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "cryptiles": { "version": "2.0.5", @@ -4363,8 +5602,7 @@ "extsprintf": { "version": "1.0.2", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "forever-agent": { "version": "0.6.1", @@ -5502,12 +6740,13 @@ } }, "hash-base": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", - "integrity": "sha1-ZuodhW206KVHDK32/OI65SRO8uE=", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "dev": true, "requires": { - "inherits": "^2.0.1" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, "hash.js": { @@ -5603,9 +6842,9 @@ "dev": true }, "html-minifier": { - "version": "3.5.15", - "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.15.tgz", - "integrity": "sha512-OZa4rfb6tZOZ3Z8Xf0jKxXkiDcFWldQePGYFDcgKqES2sXeWaEv9y6QQvWUtX3ySI3feApQi5uCsHLINQ6NoAw==", + "version": "3.5.16", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.16.tgz", + "integrity": "sha512-zP5EfLSpiLRp0aAgud4CQXPQZm9kXwWjR/cF0PfdOj+jjWnOaCgeZcll4kYXSvIBPeUMmyaSc7mM4IDtA+kboA==", "dev": true, "requires": { "camel-case": "3.0.x", @@ -5734,9 +6973,9 @@ } }, "http-parser-js": { - "version": "0.4.12", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.12.tgz", - "integrity": "sha1-uc+/Sizybw/DSxDKFImid3HjR08=", + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", + "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=", "dev": true }, "http-proxy": { @@ -6104,9 +7343,9 @@ "dev": true }, "ieee754": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "integrity": "sha1-vjPUCsEO8ZJnAfbwii2G+/0a0+Q=", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.11.tgz", + "integrity": "sha512-VhDzCKN7K8ufStx/CLj5/PDTMgph+qwN5Pkd5i0sGnVwk56zJ0lkT8Qzi1xqWLS0Wp29DgDtNeS7v8/wMoZeHg==", "dev": true }, "iferr": { @@ -6801,9 +8040,9 @@ } }, "istanbul-lib-coverage": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.2.tgz", - "integrity": "sha512-tZYA0v5A7qBSsOzcebJJ/z3lk3oSzH62puG78DbBA1+zupipX2CakDyiPV3pOb8He+jBwVimuwB0dTnh38hX0w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.0.tgz", + "integrity": "sha512-GvgM/uXRwm+gLlvkWHTjDAvwynZkL9ns15calTrmhGgowlwJBbWMYzWbKqE2DT6JDP1AFXKa+Zi0EkqNCUqY0A==", "dev": true }, "istanbul-lib-hook": { @@ -6816,9 +8055,9 @@ } }, "istanbul-lib-instrument": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.9.2.tgz", - "integrity": "sha512-nz8t4HQ2206a/3AXi+NHFWEa844DMpPsgbcUteJbt1j8LX1xg56H9rOMnhvcvVvPbW60qAIyrSk44H8ZDqaSSA==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.1.tgz", + "integrity": "sha512-1dYuzkOCbuR5GRJqySuZdsmsNKPL3PTuyPevQfoCXJePT9C8y1ga75neU+Tuy9+yS3G/dgx8wgOmp2KLpgdoeQ==", "dev": true, "requires": { "babel-generator": "^6.18.0", @@ -6826,7 +8065,7 @@ "babel-traverse": "^6.18.0", "babel-types": "^6.18.0", "babylon": "^6.18.0", - "istanbul-lib-coverage": "^1.1.2", + "istanbul-lib-coverage": "^1.2.0", "semver": "^5.3.0" } }, @@ -7306,38 +8545,6 @@ "dev": true, "optional": true }, - "boom": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", - "integrity": "sha1-T4owBctKfjiJ90kDD9JbluAdLjE=", - "dev": true, - "optional": true, - "requires": { - "hoek": "4.x.x" - } - }, - "cryptiles": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-3.1.2.tgz", - "integrity": "sha1-qJ+7Ig9c4l7FboxKqKT9e1sNKf4=", - "dev": true, - "optional": true, - "requires": { - "boom": "5.x.x" - }, - "dependencies": { - "boom": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/boom/-/boom-5.2.0.tgz", - "integrity": "sha512-Z5BTk6ZRe4tXXQlkqftmsAUANpXmuwlsF5Oov8ThoMbQRzdGTA1ngYRW160GexgOgjsFOKJz0LYhoNi+2AMBUw==", - "dev": true, - "optional": true, - "requires": { - "hoek": "4.x.x" - } - } - } - }, "form-data": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", @@ -7368,25 +8575,6 @@ "har-schema": "^2.0.0" } }, - "hawk": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-6.0.2.tgz", - "integrity": "sha512-miowhl2+U7Qle4vdLqDdPt9m09K6yZhkLDTWGoUiUzrQCn+mHHSmfJgAyGaLRZbPmTqfFFjRV1QWCW0VWUJBbQ==", - "dev": true, - "optional": true, - "requires": { - "boom": "4.x.x", - "cryptiles": "3.x.x", - "hoek": "4.x.x", - "sntp": "2.x.x" - } - }, - "hoek": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-4.2.1.tgz", - "integrity": "sha512-QLg82fGkfnJ/4iy1xZ81/9SIJiq1NGFUMGs6ParyjBZr6jW2Ufj/snDqTHixNlHdPNwN2RLVD0Pi3igeK9+JfA==", - "dev": true - }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -7414,9 +8602,9 @@ "optional": true }, "request": { - "version": "2.86.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.86.0.tgz", - "integrity": "sha512-BQZih67o9r+Ys94tcIW4S7Uu8pthjrQVxhsZ/weOwHbDfACxvIyvnAbzFQxjy1jMtvFSzv5zf4my6cZsJBbVzw==", + "version": "2.87.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", + "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", "dev": true, "optional": true, "requires": { @@ -7428,7 +8616,6 @@ "forever-agent": "~0.6.1", "form-data": "~2.3.1", "har-validator": "~5.0.3", - "hawk": "~6.0.2", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -7443,16 +8630,6 @@ "uuid": "^3.1.0" } }, - "sntp": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-2.1.0.tgz", - "integrity": "sha512-FL1b58BDrqS3A11lJ0zEdnJ3UOKqVxawAkF3k7F0CVN7VQ34aZrV+G8BZ1WC9ZL7NyrwsW0oviwsWDgRuVYtJg==", - "dev": true, - "optional": true, - "requires": { - "hoek": "4.x.x" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -7944,18 +9121,6 @@ "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" - }, - "dependencies": { - "hash-base": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", - "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - } } }, "media-typer": { @@ -8092,9 +9257,9 @@ } }, "minimalistic-assert": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz", - "integrity": "sha1-cCvi3aazf0g2vLP121ZkG2Sh09M=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true }, "minimalistic-crypto-utils": { @@ -9508,9 +10673,9 @@ } }, "parse-asn1": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.0.tgz", - "integrity": "sha1-N8T5t+06tlx0gXtfJICTf7+XxxI=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.1.tgz", + "integrity": "sha512-KPx7flKXg775zZpnp9SxJlz00gTd4BmJ2yJufSc44gMCRrRQ7NSzAcSJQfifuOLgW6bEi+ftrALtsgALeB2Adw==", "dev": true, "requires": { "asn1.js": "^4.0.0", @@ -9661,9 +10826,9 @@ } }, "pbkdf2": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz", - "integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==", + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.16.tgz", + "integrity": "sha512-y4CXP3thSxqf7c0qmOF+9UeOTrifiVTIM+u7NWlq+PRsHbr7r7dpCmvzrZxa96JJUNi0Y5w9VqG5ZNeCVMoDcA==", "dev": true, "requires": { "create-hash": "^1.1.2", @@ -10199,9 +11364,9 @@ } }, "public-encrypt": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.0.tgz", - "integrity": "sha1-OfaZ86RlYN1eusvKaTyvfGXBjMY=", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.2.tgz", + "integrity": "sha512-4kJ5Esocg8X3h8YgJsKAuoesBgB7mqH3eowiDzMUPKiRDDE7E/BqqZD1hnTByIaAFiwAw246YEltSq7tdrOH0Q==", "dev": true, "requires": { "bn.js": "^4.1.0", @@ -10795,12 +11960,12 @@ } }, "ripemd160": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.1.tgz", - "integrity": "sha1-D0WEKVxTo2KK9+bXmsohzlfRxuc=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, "requires": { - "hash-base": "^2.0.0", + "hash-base": "^3.0.0", "inherits": "^2.0.1" } }, @@ -11093,9 +12258,9 @@ "dev": true }, "sha.js": { - "version": "2.4.10", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.10.tgz", - "integrity": "sha512-vnwmrFDlOExK4Nm16J2KMWHLrp14lBrjxMxBJpu++EnsuBmpiYaM/MEs46Vxxm/4FvdP5yTwuCTO9it5FSjrqA==", + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, "requires": { "inherits": "^2.0.1", @@ -11745,16 +12910,42 @@ } }, "stream-http": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.0.tgz", - "integrity": "sha512-sZOFxI/5xw058XIRHl4dU3dZ+TTOIGJR78Dvo0oEAejIt4ou27k+3ne1zYmCV+v7UucbxIFQuOgnkTVHh8YPnw==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.2.tgz", + "integrity": "sha512-QllfrBhqF1DPcz46WxKTs6Mz1Bpc+8Qm6vbqOpVav5odAXwbyzwnEczoWqtxrsmlO+cJqtPrp/8gWKWjaKLLlA==", "dev": true, "requires": { "builtin-status-codes": "^3.0.0", "inherits": "^2.0.1", - "readable-stream": "^2.3.3", + "readable-stream": "^2.3.6", "to-arraybuffer": "^1.0.0", "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } } }, "stream-shift": { @@ -11925,6 +13116,12 @@ "has-flag": "^2.0.0" } }, + "symbol-observable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", + "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "dev": true + }, "tapable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.0.0.tgz", @@ -12155,9 +13352,9 @@ } }, "ts-node": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.0.3.tgz", - "integrity": "sha512-ARaOMNFEPKg2ZuC1qJddFvHxHNFVckR0g9xLxMIoMqSSIkDc8iS4/LoV53EdDWWNq2FGwqcEf0bVVGJIWpsznw==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-6.0.5.tgz", + "integrity": "sha512-iNhWu2hli9/1p9PGLJ/4OZS+NR0IVEVk63KCrH3qa7jJZxXa+oPheBj5JyM8tuQM9RkBpw1PrNUEUPJR9wTGDw==", "dev": true, "requires": { "arrify": "^1.0.0", @@ -12377,9 +13574,9 @@ "dev": true }, "uglify-js": { - "version": "3.3.25", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.25.tgz", - "integrity": "sha512-hobogryjDV36VrLK3Y69ou4REyrTApzUblVFmdQOYRe8cYaSmFJXMb4dR9McdvYDSbeNdzUgYr2YVukJaErJcA==", + "version": "3.3.28", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.28.tgz", + "integrity": "sha512-68Rc/aA6cswiaQ5SrE979UJcXX+ADA1z33/ZsPd+fbAiVdjZ16OXdbtGO+rJUUBgK6qdf3SOPhQf3K/ybF5Miw==", "dev": true, "requires": { "commander": "~2.15.0", diff --git a/package.json b/package.json index 742ce1f..670dea3 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ }, "scripts": { "build": "ng b --output-hashing=none", - "build:prod": "npm-run-all -s \"build -- --prod\" api-changed", + "build:prod": "npm-run-all -s \"build -- --prod --aot=false --build-optimizer=false\" api-changed", "build:dev": "npm-run-all -s build api-changed", "watch": "npm-run-all -l -p \"build -- --watch\" dist-watch", "dist-watch": "nodemon -w dist/api/ -x \"npm run api-changed\"", @@ -52,7 +52,7 @@ "chartist": "^0.11.0", "chartist-plugin-tooltips": "^0.0.17", "classlist.js": "^1.1.20150312", - "core-js": "^2.5.6", + "core-js": "^2.5.7", "dragula": "^3.7.2", "highlight.js": "^9.12.0", "marked": "^0.4.0", @@ -63,13 +63,13 @@ "zone.js": "^0.8.26" }, "devDependencies": { - "@angular-devkit/build-angular": "~0.6.3", - "@angular/cli": "^6.0.3", + "@angular-devkit/build-angular": "~0.6.5", + "@angular/cli": "^6.0.7", "@angular/compiler-cli": "^6.0.3", "@angular/language-service": "^6.0.3", "@types/jasmine": "~2.8.7", "@types/jasminewd2": "~2.0.3", - "@types/node": "~10.1.2", + "@types/node": "~10.1.4", "bourbon": "5.0.0", "bourbon-neat": "1.9.0", "codelyzer": "^4.3.0", @@ -85,7 +85,7 @@ "nodemon": "^1.17.5", "npm-run-all": "^4.1.3", "protractor": "~5.3.2", - "ts-node": "~6.0.3", + "ts-node": "~6.0.5", "tslint": "~5.10.0", "typescript": "^2.7.2" } diff --git a/src/api/composer.lock b/src/api/composer.lock index a6e6377..47c59bf 100644 --- a/src/api/composer.lock +++ b/src/api/composer.lock @@ -258,25 +258,28 @@ }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "478465659fd987669df0bd8a9bf22a8710e5f1b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/478465659fd987669df0bd8a9bf22a8710e5f1b6", + "reference": "478465659fd987669df0bd8a9bf22a8710e5f1b6", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { @@ -299,7 +302,7 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" + "time": "2018-05-29T17:25:09+00:00" }, { "name": "myclabs/php-enum", @@ -1109,16 +1112,16 @@ }, { "name": "phpunit/phpunit-mock-objects", - "version": "5.0.6", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf" + "reference": "3eaf040f20154d27d6da59ca2c6e28ac8fd56dce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf", - "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3eaf040f20154d27d6da59ca2c6e28ac8fd56dce", + "reference": "3eaf040f20154d27d6da59ca2c6e28ac8fd56dce", "shasum": "" }, "require": { @@ -1164,7 +1167,7 @@ "mock", "xunit" ], - "time": "2018-01-06T05:45:45+00:00" + "time": "2018-05-29T13:50:43+00:00" }, { "name": "pimple/pimple", diff --git a/src/app/app.api-http.ts b/src/app/app.api-http.ts index 68374b4..5b8a54f 100644 --- a/src/app/app.api-http.ts +++ b/src/app/app.api-http.ts @@ -1,6 +1,8 @@ import { Injectable } from '@angular/core'; import { HttpErrorResponse, + HttpHeaderResponse, + HttpResponseBase, HttpEvent, HttpHandler, HttpInterceptor, @@ -36,7 +38,15 @@ export class ApiInterceptor implements HttpInterceptor { return next.handle(request).pipe( tap((evt: HttpEvent) => { - if (!(evt instanceof HttpResponse)) { + if (evt instanceof HttpHeaderResponse || + !(evt instanceof HttpResponseBase)) { + return; + } + + if ((evt.status === 401 || evt.status === 400) && + (evt.url + '').indexOf('login') === -1) { + localStorage.removeItem(this.JWT_KEY); + this.router.navigate(['']); return; } @@ -44,13 +54,6 @@ export class ApiInterceptor implements HttpInterceptor { if (response.data) { localStorage.setItem(this.JWT_KEY, response.data[0]); } - }, (err: any) => { - if ((err instanceof HttpErrorResponse) && - (err.status === 401 || err.status === 400) && - (err.url + '').indexOf('login') === -1) { - this.router.navigate(['']); - localStorage.removeItem(this.JWT_KEY); - } }) ); } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 42dfaad..735aaea 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -31,7 +31,7 @@ import { SharedModule } from './shared/shared.module'; provide: HTTP_INTERCEPTORS, useClass: ApiInterceptor, multi: true - }, + } ], declarations: [ AppComponent, diff --git a/src/app/board/board.service.ts b/src/app/board/board.service.ts index ae92556..715b2cc 100644 --- a/src/app/board/board.service.ts +++ b/src/app/board/board.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; -import { BehaviorSubject, Observable } from 'rxjs'; +import { BehaviorSubject, Observable, of } from 'rxjs'; import { map, catchError } from 'rxjs/operators'; import { @@ -30,80 +30,80 @@ export class BoardService { getBoards(): Observable { return this.http.get('api/boards') .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } toggleCollapsed(userId: number, columnId: number): Observable { return this.http.post('api/users/' + userId + '/cols', { id: columnId }) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } updateBoard(board: Board): Observable { return this.http.post('api/boards/' + board.id, board) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } updateColumn(column: Column): Observable { return this.http.post('api/columns/' + column.id, column) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } addTask(task: Task): Observable { return this.http.post('api/tasks', task) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } updateTask(task: Task): Observable { return this.http.post('api/tasks/' + task.id, task) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } removeTask(taskId: number): Observable { return this.http.delete('api/tasks/' + taskId) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } getTaskActivity(taskId: number): Observable { return this.http.get('api/activity/task/' + taskId) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } updateComment(comment: Comment): Observable { return this.http.post('api/comments/' + comment.id, comment) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } removeComment(commentId: number): Observable { return this.http.delete('api/comments/' + commentId) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } diff --git a/src/app/board/column/column.component.html b/src/app/board/column/column.component.html index 4438254..21c304e 100644 --- a/src/app/board/column/column.component.html +++ b/src/app/board/column/column.component.html @@ -105,9 +105,8 @@ {{ strings['boards_taskDue'] + ' ' + viewModalProps.due_date }} -
- +
diff --git a/src/app/board/column/column.component.ts b/src/app/board/column/column.component.ts index 3c080d1..031b500 100644 --- a/src/app/board/column/column.component.ts +++ b/src/app/board/column/column.component.ts @@ -540,15 +540,11 @@ export class ColumnDisplay implements OnInit, OnDestroy { private getTaskDescription() { let html = marked(this.viewModalProps.description, this.markedCallback); - // Escape curly braces for dynamic component. - html = html.replace(/(\{)([^}]+)(\})/g, '{{ "{" }}$2{{ "}" }}'); - - return html; + return html.replace(/(\{)([^}]+)(\})/g, '{{ "{" }}$2{{ "}" }}'); } private getComment(text: string) { let html = marked(text, this.markedCallback); - return this.sanitizer.bypassSecurityTrustHtml(html); } diff --git a/src/app/board/task/task.component.ts b/src/app/board/task/task.component.ts index 77e275f..15f3b17 100644 --- a/src/app/board/task/task.component.ts +++ b/src/app/board/task/task.component.ts @@ -108,7 +108,8 @@ export class TaskDisplay implements OnInit { } getTaskDescription(): string { - return marked(this.taskData.description, this.markedCallback); + let html = marked(this.taskData.description, this.markedCallback); + return html.replace(/(\{)([^}]+)(\})/g, '{{ "{" }}$2{{ "}" }}'); } getPercentStyle() { diff --git a/src/app/login/login.component.ts b/src/app/login/login.component.ts index d223a77..6fc32e9 100644 --- a/src/app/login/login.component.ts +++ b/src/app/login/login.component.ts @@ -47,11 +47,7 @@ export class Login implements OnInit { this.isSubmitted = true; this.authService.login(this.username, this.password, this.remember) - .subscribe((response: any) => { - response = response.error - ? response.error - : response; - + .subscribe((response: ApiResponse) => { response.alerts.forEach(msg => { this.notes.add(new Notification(msg.type, msg.text)); }); diff --git a/src/app/settings/auto-actions/auto-actions.service.ts b/src/app/settings/auto-actions/auto-actions.service.ts index cf08e25..e1c5641 100644 --- a/src/app/settings/auto-actions/auto-actions.service.ts +++ b/src/app/settings/auto-actions/auto-actions.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; -import { Observable } from 'rxjs'; +import { Observable, of } from 'rxjs'; import { map, catchError } from 'rxjs/operators'; import { @@ -18,7 +18,7 @@ export class AutoActionsService { return this.http.post('api/autoactions', action) .pipe( map((response: ApiResponse) => { return response; }), - catchError((err, caught) => { return caught; }) + catchError((err) => { return of(err.error); }) ); } @@ -26,7 +26,7 @@ export class AutoActionsService { return this.http.delete('api/autoactions/' + action.id) .pipe( map((response: ApiResponse) => { return response; }), - catchError((err, caught) => { return caught; }) + catchError((err) => { return of(err.error); }) ); } } diff --git a/src/app/settings/board-admin/board-admin.component.ts b/src/app/settings/board-admin/board-admin.component.ts index dd5111c..67da707 100644 --- a/src/app/settings/board-admin/board-admin.component.ts +++ b/src/app/settings/board-admin/board-admin.component.ts @@ -124,6 +124,10 @@ export class BoardAdmin implements OnDestroy { } addEditBoard(): void { + if (!this.modal.isOpen(this.MODAL_ID)) { + return; + } + let isAdd = this.modalProps.title === 'Add'; this.saving = true; diff --git a/src/app/settings/board-admin/board-admin.service.ts b/src/app/settings/board-admin/board-admin.service.ts index bb9a727..b3c6f80 100644 --- a/src/app/settings/board-admin/board-admin.service.ts +++ b/src/app/settings/board-admin/board-admin.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; -import { Observable } from 'rxjs'; +import { Observable, of } from 'rxjs'; import { map, catchError } from 'rxjs/operators'; import { @@ -22,24 +22,24 @@ export class BoardAdminService { addBoard(board: BoardData): Observable { return this.http.post('api/boards', board) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } editBoard(board: BoardData): Observable { return this.http.post('api/boards/' + board.id, board) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } removeBoard(boardId: number): Observable { return this.http.delete('api/boards/' + boardId) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } diff --git a/src/app/settings/settings.service.ts b/src/app/settings/settings.service.ts index dabdb36..b2b1bc8 100644 --- a/src/app/settings/settings.service.ts +++ b/src/app/settings/settings.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; -import { BehaviorSubject, Observable } from 'rxjs'; +import { BehaviorSubject, Observable, of } from 'rxjs'; import { map, catchError } from 'rxjs/operators'; import { @@ -31,8 +31,8 @@ export class SettingsService { getUsers(): Observable { return this.http.get('api/users') .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } @@ -46,8 +46,8 @@ export class SettingsService { getBoards(): Observable { return this.http.get('api/boards') .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } @@ -58,8 +58,8 @@ export class SettingsService { getActions(): Observable { return this.http.get('api/autoactions') .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } } diff --git a/src/app/settings/user-admin/user-admin.component.ts b/src/app/settings/user-admin/user-admin.component.ts index 3c6d427..79f494c 100644 --- a/src/app/settings/user-admin/user-admin.component.ts +++ b/src/app/settings/user-admin/user-admin.component.ts @@ -93,6 +93,10 @@ export class UserAdmin { } addEditUser(): void { + if (!this.modal.isOpen(this.MODAL_ID)) { + return; + } + let isAdd = this.modalProps.prefix; this.saving = true; diff --git a/src/app/settings/user-admin/user-admin.service.ts b/src/app/settings/user-admin/user-admin.service.ts index 8f6facd..c530408 100644 --- a/src/app/settings/user-admin/user-admin.service.ts +++ b/src/app/settings/user-admin/user-admin.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; -import { Observable } from 'rxjs'; +import { Observable, of } from 'rxjs'; import { map, catchError } from 'rxjs/operators'; import { ApiResponse } from '../../shared/models'; @@ -15,24 +15,24 @@ export class UserAdminService { addUser(user: ModalUser): Observable { return this.http.post('api/users', user) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } editUser(user: ModalUser): Observable { return this.http.post('api/users/' + user.id, user) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } removeUser(userId: number): Observable { return this.http.delete('api/users/' + userId) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } } diff --git a/src/app/settings/user-settings/user-settings.component.ts b/src/app/settings/user-settings/user-settings.component.ts index 5aabdce..32c4475 100644 --- a/src/app/settings/user-settings/user-settings.component.ts +++ b/src/app/settings/user-settings/user-settings.component.ts @@ -120,7 +120,9 @@ export class UserSettings implements OnInit { this.resetPasswordForm(); this.changePassword.submitted = false; - this.auth.updateUser(JSON.parse(response.data[1])); + if (response.status === 'success') { + this.auth.updateUser(JSON.parse(response.data[1])); + } }); } @@ -129,7 +131,7 @@ export class UserSettings implements OnInit { if (this.changeUsername.newName === '') { this.notes.add(new Notification('error', - 'New Username cannot be blank.')); + this.strings['settings_usernameRequired'])); this.changeUsername.submitted = false; return; diff --git a/src/app/settings/user-settings/user-settings.service.ts b/src/app/settings/user-settings/user-settings.service.ts index 84ae7ce..9490f72 100644 --- a/src/app/settings/user-settings/user-settings.service.ts +++ b/src/app/settings/user-settings/user-settings.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; -import { Observable } from 'rxjs'; +import { Observable, of } from 'rxjs'; import { map, catchError } from 'rxjs/operators'; import { @@ -29,8 +29,8 @@ export class UserSettingsService { return this.http.post('api/users/' + this.activeUser.id, json) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } @@ -43,8 +43,8 @@ export class UserSettingsService { return this.http.post('api/users/' + this.activeUser.id, json) .pipe( - catchError((err, caught) => { return caught; }), - map((response: ApiResponse) => { return response; }) + map((response: ApiResponse) => { return response; }), + catchError((err) => { return of(err.error); }) ); } @@ -56,11 +56,11 @@ export class UserSettingsService { return this.http.post('api/users/' + this.activeUser.id, json) .pipe( - catchError((err, caught) => { return caught; }), map((response: ApiResponse) => { this.auth.updateUser(JSON.parse(response.data[1])); return response; - }) + }), + catchError((err) => { return of(err.error); }) ); } @@ -72,11 +72,11 @@ export class UserSettingsService { return this.http.post('api/users/' + this.activeUser.id, json) .pipe( - catchError((err, caught) => { return caught; }), map((response: ApiResponse) => { this.auth.updateUser(JSON.parse(response.data[1])); return response; - }) + }), + catchError((err) => { return of(err.error); }) ); } @@ -85,11 +85,12 @@ export class UserSettingsService { return this.http.post('api/users/' + this.activeUser.id + '/opts', json) .pipe( - catchError((err, caught) => { return caught; }), map((response: ApiResponse) => { - this.auth.updateUser(JSON.parse(response.data[1])); + this.auth.updateUser(JSON.parse(response.data[2]), + JSON.parse(response.data[1])); return response; - }) + }), + catchError((err) => { return of(err.error); }) ); } } diff --git a/src/app/shared/auth/auth.service.ts b/src/app/shared/auth/auth.service.ts index 9bfd676..a929c39 100644 --- a/src/app/shared/auth/auth.service.ts +++ b/src/app/shared/auth/auth.service.ts @@ -36,11 +36,11 @@ export class AuthService { authenticate(): Observable { return this.http.post('api/authenticate', null) .pipe( - catchError((err, caught) => { return of(false); }), map((response: ApiResponse) => { this.updateUser(response.data[1], response.data[2]); return true; - }) + }), + catchError((err, caught) => { return of(false); }) ); } @@ -54,13 +54,13 @@ export class AuthService { return this.http.post('api/login', json) .pipe( - catchError((err, caught) => { - this.updateUser(null, null); - return caught; - }), map((response: ApiResponse) => { this.updateUser(response.data[1], response.data[2]); return response; + }), + catchError((err, caught) => { + this.updateUser(null, null); + return of(err.error); }) ); } diff --git a/src/app/shared/context-menu/context-menu-item.component.ts b/src/app/shared/context-menu/context-menu-item.component.ts new file mode 100644 index 0000000..15f252e --- /dev/null +++ b/src/app/shared/context-menu/context-menu-item.component.ts @@ -0,0 +1,8 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'tb-context-menu-item', + template:`
+ + ` +}) diff --git a/src/app/shared/context-menu/context-menu-item.model.ts b/src/app/shared/context-menu/context-menu-item.model.ts deleted file mode 100644 index 393b6af..0000000 --- a/src/app/shared/context-menu/context-menu-item.model.ts +++ /dev/null @@ -1,18 +0,0 @@ -export class ContextMenuItem { - constructor(public text: string = '', - public action: Function = null, - public isSeparator: boolean = false, - public canHighlight: boolean = true, - public isCustom: boolean = false) { - if (isSeparator) { - this.text = '
'; - this.canHighlight = false; - } - - if (!isCustom) { - this.text = '' + this.text + - ''; - } - } -} - diff --git a/src/app/shared/context-menu/context-menu.component.html b/src/app/shared/context-menu/context-menu.component.html index 4e89533..9e22b7c 100644 --- a/src/app/shared/context-menu/context-menu.component.html +++ b/src/app/shared/context-menu/context-menu.component.html @@ -1,12 +1,11 @@
+ [ngClass]="{ 'menu-open': isOpen }" + (click)="$event.stopPropagation()"> + (click)="menuService.closeAllMenus()" + [ngClass]="{ 'no-highlight': item.isSeparator || !item.canHighlight }"> + +
diff --git a/src/app/shared/modal/modal.service.ts b/src/app/shared/modal/modal.service.ts index dfbe8e7..371ab2e 100644 --- a/src/app/shared/modal/modal.service.ts +++ b/src/app/shared/modal/modal.service.ts @@ -25,6 +25,16 @@ export class ModalService { this.modals.push(newModal); } + isOpen(modalId: string): boolean { + let modal = this.modals.find(modal => modal.modalId === modalId); + + if (modal) { + return modal.isOpen; + } + + return false; + } + open(modalId: string): void { let modal = this.modals.find(modal => modal.modalId === modalId); diff --git a/src/scss/_board.scss b/src/scss/_board.scss index 3e56951..7e27396 100644 --- a/src/scss/_board.scss +++ b/src/scss/_board.scss @@ -1,447 +1,447 @@ .board-nav { - margin: 5px; - width: 99%; + margin: 5px; + width: 99%; - label { - display: inline-block; + label { + display: inline-block; - select { - width: auto; - } + select { + width: auto; } + } } .no-boards { - @include shadow-low; + @include shadow-low; - background-color: $white; - margin: 1em auto; - padding: 1em; - padding-bottom: .1em; - width: 45%; + background-color: $white; + margin: 1em auto; + padding: 1em; + padding-bottom: .1em; + width: 45%; } .board { + display: flex; + height: calc(100% - 96px); + overflow-x: auto; + white-space: nowrap; + width: 100%; + + .icon-minus-squared-alt, + .icon-plus-squared-alt { + cursor: pointer; + margin-right: 5px; + } + + .column { + @include shadow-low(); + @include clearfix(); + + background-color: #fff; display: flex; - height: calc(100% - 96px); - overflow-x: auto; - white-space: nowrap; - width: 100%; + flex: 1 0 300px; + flex-direction: column; + height: calc(100% - 7px); + margin-left: 7px; + overflow: auto; + position: relative; + white-space: normal; - .icon-minus-squared-alt, - .icon-plus-squared-alt { + h3 { + background-color: $color-heading-bg; + border-bottom: 1px solid lighten($color-border, 18%); + font-size: 24px; + padding: 5px; + + &.near-limit { + box-shadow: 0 2px 2px 0 rgba(255, 150, 0, .4), + 0 1px 5px 0 rgba(255, 150, 0, .2), + 0 3px 1px -2px rgba(255, 150, 0, .2); + + .count { + color: rgb(255, 150, 0); + } + } + + &.limit-reached { + box-shadow: 0 2px 2px 0 rgba(255, 20, 0, .4), + 0 1px 5px 0 rgba(255, 20, 0, .2), + 0 3px 1px -2px rgba(255, 20, 0, .2); + + .count { + color: rgb(255, 20, 0); + } + } + + span { cursor: pointer; - margin-right: 5px; + } + + .count { + cursor: default; + } + + .count-editor { + float: right; + font-size: .5em; + margin-top: -4px; + } + + .limit-editor { + @include shadow-float; + + background-color: $white; + border-radius: 3px; + padding: 1em; + position: absolute; + right: 1.5em; + width: 70px; + z-index: 100; + } + + .sort-by { + cursor: default; + float: right; + font-size: .6em; + } + + select { + height: 1.7em; + padding: 0; + width: auto; + } + + .icon-cancel, + .icon-floppy { + margin: 5px; + margin-bottom: 0; + } + + .icon-cancel { + color: $color-text; + } + + .icon-angle-double-up, + .badge { + display: none; + } } - .column { - @include shadow-low(); - @include clearfix(); + .quick-add { + padding: 6px; + padding-right: 5px; + } - background-color: #fff; + &:last-of-type { + margin-right: 7px; + } + + &.double { + .tasks { + align-content: flex-start; + align-items: flex-start; display: flex; - flex: 1 0 300px; - flex-direction: column; - height: calc(100% - 7px); - margin-left: 7px; - overflow: auto; - position: relative; - white-space: normal; + flex-wrap: wrap; + justify-content: space-between; + } - h3 { - background-color: $color-heading-bg; - border-bottom: 1px solid lighten($color-border, 18%); - font-size: 24px; - padding: 5px; - - &.near-limit { - box-shadow: 0 2px 2px 0 rgba(255, 150, 0, .4), - 0 1px 5px 0 rgba(255, 150, 0, .2), - 0 3px 1px -2px rgba(255, 150, 0, .2); - - .count { - color: rgb(255, 150, 0); - } - } - - &.limit-reached { - box-shadow: 0 2px 2px 0 rgba(255, 20, 0, .4), - 0 1px 5px 0 rgba(255, 20, 0, .2), - 0 3px 1px -2px rgba(255, 20, 0, .2); - - .count { - color: rgb(255, 20, 0); - } - } - - span { - cursor: pointer; - } - - .count { - cursor: default; - } - - .count-editor { - float: right; - font-size: .5em; - margin-top: -4px; - } - - .limit-editor { - @include shadow-float; - - background-color: $white; - border-radius: 3px; - padding: 1em; - position: absolute; - right: 1.5em; - width: 70px; - z-index: 100; - } - - .sort-by { - cursor: default; - float: right; - font-size: .6em; - } - - select { - height: 1.7em; - padding: 0; - width: auto; - } - - .icon-cancel, - .icon-floppy { - margin: 5px; - margin-bottom: 0; - } - - .icon-cancel { - color: $color-text; - } - - .icon-angle-double-up, - .badge { - display: none; - } - } - - .quick-add { - padding: 6px; - padding-right: 5px; - } - - &:last-of-type { - margin-right: 7px; - } - - &.double { - .tasks { - align-content: flex-start; - align-items: flex-start; - display: flex; - flex-wrap: wrap; - justify-content: space-between; - } - - .task-container { - width: calc(50% - 3.5px); - } - } - - &.collapsed { - background-color: $color-heading-bg; - display: block; - flex: 0 0 35px; - - h3 { - border: 0; - overflow: unset; - padding: 0; - transform: rotate(90deg) - translateX(-25px) - translateY(2px); - transform-origin: left bottom; - white-space: nowrap; - } - - .badge { - cursor: default; - display: inline-block; - font-size: .6em; - margin-left: .9em; - transform: rotate(-90deg) translateX(4px); - } - - .icon-angle-double-down, - .icon-minus-squared-alt, - .icon-plus-squared-alt, - .tasks, - .sort-by, - .quick-add { - display: none; - } - - .icon-angle-double-up { - display: inline-block; - } - } + .task-container { + width: calc(50% - 3.5px); + } } - .tasks { - flex: 1 0; - flex-direction: column; - overflow-y: auto; - padding: 7px; - padding-top: 0; + &.collapsed { + background-color: $color-heading-bg; + display: block; + flex: 0 0 35px; - div:last-of-type { - margin-bottom: 0; - } - } - - .task-container { - display: block; - margin-bottom: 7px; - } - - code { - background-color: #1d1f21; + h3 { border: 0; - color: #c5c8c6; - overflow: auto; + overflow: unset; + padding: 0; + transform: rotate(90deg) + translateX(-25px) + translateY(2px); + transform-origin: left bottom; + white-space: nowrap; + } + + .badge { + cursor: default; + display: inline-block; + font-size: .6em; + margin-left: .9em; + transform: rotate(-90deg) translateX(4px); + } + + .icon-angle-double-down, + .icon-minus-squared-alt, + .icon-plus-squared-alt, + .tasks, + .sort-by, + .quick-add { + display: none; + } + + .icon-angle-double-up { + display: inline-block; + } + } + } + + .tasks { + flex: 1 0; + flex-direction: column; + overflow-y: auto; + padding: 7px; + padding-top: 0; + + div:last-of-type { + margin-bottom: 0; + } + } + + .task-container { + display: block; + margin-bottom: 7px; + } + + code { + background-color: #1d1f21; + border: 0; + color: #c5c8c6; + overflow: auto; + } + + a:link, + a:visited { + background-image: none; + color: inherit; + font-weight: bold; + text-decoration: underline; + text-shadow: none; + } + + a:hover, + a:active { + text-decoration: none; + } + + .overdue { + text-shadow: 0 0 2px rgba(255, 0, 0, 1); + } + + .near-due { + text-shadow: 0 0 2px rgba(255, 180, 0, 1); + } + + .task { + @include shadow-low(); + + h4 { + border-bottom: 1px solid lighten($color-border, 25%); + cursor: move; + font-size: 18px; + line-height: 1.5em; + padding: 0 5px 2px; + + .badge { + font-size: .6em; + margin-right: -2px; + margin-top: 2px; + } } - a:link, - a:visited { - background-image: none; - color: inherit; + .description { + max-height: 12em; + overflow: auto; + padding: 5px; + + h3, + h4 { + background: transparent; + border: 0; + cursor: default; + } + + p { + margin: 0 0 10px; + } + + p:last-of-type { + margin: 0; + } + } + + .checklist { + list-style: none; + margin-left: -27px; + } + + .stats { + font-size: .9em; + overflow: hidden; + padding: 0 5px; + } + + .category { + font-weight: 700; + } + + &.compact { + .description { + display: none; + } + } + + &.filtered { + opacity: .4; + + &.hide { + display: none; + } + } + } + + .view-modal { + .badge { + float: right; + margin-right: 3em; + margin-top: -4.2em; + } + + .icon { + cursor: pointer; + } + + [type="file"] { + width: 80%; + } + + .details { + @include shadow-low; + + .date { + padding-left: 1em; + padding-top: 1em; + } + + .stats { + display: flex; + justify-content: space-around; + + div { + display: flex; + flex-direction: column; + } + } + } + + custom-dynamic-component > :first-child { + margin-top: 0; + } + + custom-dynamic-component > :last-child { + margin-bottom: 0; + } + + .description { + max-height: 20em; + overflow: auto; + padding: 1em; + + .checklist { + list-style: none; + margin-left: -27px; + } + } + + .quick-actions { + display: flex; + justify-content: space-around; + margin-top: 12px; + + button { + width: 45%; + } + } + + .comment { + @include shadow-low; + + padding: 1em; + + p:first-of-type { + margin-top: 0; + } + + p:last-of-type { + margin-bottom: 0; + } + + .byline { + font-size: .8em; font-weight: bold; - text-decoration: underline; - text-shadow: none; + } + + .actions { + float: right; + margin-top: -1.5em; + } + + .icon { + cursor: pointer; + } } - a:hover, - a:active { - text-decoration: none; + h3 { + background: transparent; + border: 0; + margin: 1em 0 0; } - .overdue { - text-shadow: 0 0 2px rgba(255, 0, 0, 1); - } - - .near-due { - text-shadow: 0 0 2px rgba(255, 180, 0, 1); - } - - .task { - @include shadow-low(); - - h4 { - border-bottom: 1px solid lighten($color-border, 25%); - cursor: move; - font-size: 18px; - line-height: 1.5em; - padding: 0 5px 2px; - - .badge { - font-size: .6em; - margin-right: -2px; - margin-top: 2px; - } - } - - .description { - max-height: 12em; - overflow: auto; - padding: 5px; - - h3, - h4 { - background: transparent; - border: 0; - cursor: default; - } - - p { - margin: 0 0 10px; - } - - p:last-of-type { - margin: 0; - } - } - - .checklist { - list-style: none; - margin-left: -27px; - } - - .stats { - font-size: .9em; - overflow: hidden; - padding: 0 5px; - } - - .category { - font-weight: 700; - } - - &.compact { - .description { - display: none; - } - } - - &.filtered { - opacity: .4; - - &.hide { - display: none; - } - } - } - - .view-modal { - .badge { - float: right; - margin-right: 3em; - margin-top: -4.2em; - } - - .icon { - cursor: pointer; - } - - [type="file"] { - width: 80%; - } - - .details { - @include shadow-low; - - .date { - padding-left: 1em; - padding-top: 1em; - } - - .stats { - display: flex; - justify-content: space-around; - - div { - display: flex; - flex-direction: column; - } - } - } - - custom-dynamic-component > :first-child { - margin-top: 0; - } - - custom-dynamic-component > :last-child { - margin-bottom: 0; - } - - .description { - max-height: 20em; - overflow: auto; - padding: 1em; - - .checklist { - list-style: none; - margin-left: -27px; - } - } - - .quick-actions { - display: flex; - justify-content: space-around; - margin-top: 12px; - - button { - width: 45%; - } - } - - .comment { - @include shadow-low; - - padding: 1em; - - p:first-of-type { - margin-top: 0; - } - - p:last-of-type { - margin-bottom: 0; - } - - .byline { - font-size: .8em; - font-weight: bold; - } - - .actions { - float: right; - margin-top: -1.5em; - } - - .icon { - cursor: pointer; - } - } - - h3 { - background: transparent; - border: 0; - margin: 1em 0 0; - } - - .activity { - background-color: #fff; - box-shadow: 0 12px 15px 0 rgba(0, 0, 0, .22), - 0 17px 20px 0 rgba(0, 0, 0, .12); - height: 85vh; - left: 0; - overflow: hidden; - position: fixed; - top: 6em; - width: 300px; - - &.collapsed { - background-color: transparent; - box-shadow: none; - - .title { - transform: rotate(90deg) translateX(-48px) translateY(-1px); - transform-origin: left bottom; - } - } - - .log-items { - height: calc(100% - 48px); - overflow: auto; - } - - .log-item { - border-bottom: 1px solid #1b4e5c; - padding: .5em 1em; - } - - .log-item:last-of-type { - border: 0; - } - - span { - display: block; - font-size: .8em; - font-weight: bold; - } - } + .activity { + background-color: #fff; + box-shadow: 0 12px 15px 0 rgba(0, 0, 0, .22), + 0 17px 20px 0 rgba(0, 0, 0, .12); + height: 85vh; + left: 0; + overflow: hidden; + position: fixed; + top: 6em; + width: 300px; + + &.collapsed { + background-color: transparent; + box-shadow: none; + + .title { + transform: rotate(90deg) translateX(-48px) translateY(-1px); + transform-origin: left bottom; + } + } + + .log-items { + height: calc(100% - 48px); + overflow: auto; + } + + .log-item { + border-bottom: 1px solid #1b4e5c; + padding: .5em 1em; + } + + .log-item:last-of-type { + border: 0; + } + + span { + display: block; + font-size: .8em; + font-weight: bold; + } } + } } diff --git a/src/scss/_chartist-settings.scss b/src/scss/_chartist-settings.scss index 20e0cc2..da050d8 100644 --- a/src/scss/_chartist-settings.scss +++ b/src/scss/_chartist-settings.scss @@ -1,53 +1,54 @@ $ct-text-color: $color-text; .white-labels { - .ct-label { - color: $white; - fill: $white; - } + .ct-label { + color: $white; + fill: $white; + } } .chartist-tooltip { - background: $color-text; - border-radius: 3px; - color: $white; - opacity: 0; - padding: .5em; - pointer-events: none; + background: $color-text; + border-radius: 3px; + color: $white; + opacity: 0; + padding: .5em; + pointer-events: none; + position: absolute; + transition: opacity .2s; + + &::before { + border: 10px solid transparent; + border-top-color: $color-text; + content: ''; + height: 0; + left: 50%; + margin-left: -10px; position: absolute; - transition: opacity .2s; + top: 100%; + width: 0; + } - &::before { - border: 10px solid transparent; - border-top-color: $color-text; - content: ''; - height: 0; - left: 50%; - margin-left: -10px; - position: absolute; - top: 100%; - width: 0; - } - - &.tooltip-show { - opacity: 1; - } + &.tooltip-show { + opacity: 1; + } } $ct-series-colors: ( - #2291c9, - #135170, - #2088bc, - #104763, - #1d7faf, - #0d3e56, - #1b76a3, - #0b3449, - #196c96, - #092b3d, - #176389, - #072230, - #155a7c, - #051923, - #031016 + #2291c9, + #135170, + #2088bc, + #104763, + #1d7faf, + #0d3e56, + #1b76a3, + #0b3449, + #196c96, + #092b3d, + #176389, + #072230, + #155a7c, + #051923, + #031016 ); + diff --git a/src/scss/_context-menu.scss b/src/scss/_context-menu.scss index 80adc04..9d8c157 100644 --- a/src/scss/_context-menu.scss +++ b/src/scss/_context-menu.scss @@ -1,43 +1,43 @@ .collapsed { - .context-menu-container { - &.menu-open { - display: none; - } + .context-menu-container { + &.menu-open { + display: none; } + } } .context-menu-container { - @include shadow-high; + @include shadow-high; - background-color: $white; - border-radius: 3px; - color: $color-text; - display: none; - padding: 5px 0; - position: fixed; - width: 200px; - z-index: 100; + background-color: $white; + border-radius: 3px; + color: $color-text; + display: none; + padding: 5px 0; + position: fixed; + width: 200px; + z-index: 100; - &.menu-open { - display: block; + &.menu-open { + display: block; + } + + .menu-item { + cursor: pointer; + padding: 4px 10px; + user-select: none; + + &:hover { + background-color: lighten($color-background, 5%); } - .menu-item { - cursor: pointer; - padding: 4px 10px; - user-select: none; + &.no-highlight { + cursor: default; - &:hover { - background-color: lighten($color-background, 5%); - } - - &.no-highlight { - cursor: default; - - &:hover { - background-color: $white; - } - } + &:hover { + background-color: $white; + } } + } } diff --git a/src/scss/_core.scss b/src/scss/_core.scss index 68d3b0c..9ac0ddf 100644 --- a/src/scss/_core.scss +++ b/src/scss/_core.scss @@ -1,15 +1,15 @@ html { - background-image: url('../images/bg.png'); + background-image: url('../images/bg.png'); } html, body { - height: 100%; - margin: 0; + height: 100%; + margin: 0; } ::selection { - color: $color-background; + color: $color-background; } h1, @@ -18,42 +18,42 @@ h3, h4, h5, h6 { - font-family: Raleway; - font-weight: 500; - margin: 0; + font-family: Raleway; + font-weight: 500; + margin: 0; } form { - box-shadow: none; - padding: 0; + box-shadow: none; + padding: 0; } section { - @include clearfix(); - @include shadow-low(); + @include clearfix(); + @include shadow-low(); - background-color: $white; - margin-bottom: 1em; - position: relative; + background-color: $white; + margin-bottom: 1em; + position: relative; - h2 { - background-color: $color-heading-bg; - padding: 7px; - } + h2 { + background-color: $color-heading-bg; + padding: 7px; + } - h3 { - padding: 7px; - padding-left: 0; - } + h3 { + padding: 7px; + padding-left: 0; + } } a { - background-position: left 1.05em; + background-position: left 1.05em; } table { - border-collapse: collapse; - margin-bottom: 1em; + border-collapse: collapse; + margin-bottom: 1em; } // Override scss-base flat styles @@ -63,8 +63,9 @@ table { [type="submit"].flat, button.flat, .btn.flat { - background-color: $white; - color: $color-primary; + background-color: $white; + color: $color-primary; + margin-right: 7px; } // scss-lint:enable QualifyingElement @@ -74,136 +75,138 @@ input, optgroup, select, textarea { - font-family: "Pontano Sans", sans-serif; + font-family: "Pontano Sans", sans-serif; } button { - transition: background .3s; + margin-right: 7px; + transition: background .3s; } @keyframes spin { - 0% { - transform: rotate(0deg); - } + 0% { + transform: rotate(0deg); + } - 100% { - transform: rotate(360deg); - } + 100% { + transform: rotate(360deg); + } } .spinner { - animation: spin 1s infinite; - border: 3px solid $color-heading-bg; - border-radius: 50%; - border-right-color: $color-text; - display: inline-block; - height: 20px; - margin-bottom: -.3em; - width: 20px; + animation: spin 1s infinite; + border: 3px solid $color-heading-bg; + border-radius: 50%; + border-right-color: $color-text; + display: inline-block; + height: 20px; + margin-bottom: -.3em; + width: 20px; } .icon-help-circled { - position: relative; + position: relative; - &:hover::after { - @include shadow-high; + &:hover::after { + @include shadow-high; - background-color: $white; - border: 1px solid $color-border; - content: attr(data-help); - left: 20px; - min-width: 250px; - padding: 7px; - position: absolute; - text-align: left; - top: -1em; - z-index: 100; - } + background-color: $white; + border: 1px solid $color-border; + content: attr(data-help); + left: 20px; + min-width: 250px; + padding: 7px; + position: absolute; + text-align: left; + top: -1em; + z-index: 100; + } } .color-primary { - color: $color-primary; + color: $color-primary; } .color-secondary { - color: $color-secondary; + color: $color-secondary; } .loading { - padding-top: 2em; - text-align: center; + padding-top: 2em; + text-align: center; } .small { - font-size: .8em; + font-size: .8em; } .clearfix { - @include clearfix; + @include clearfix; } .row { - @include row(); + @include row(); - padding: 7px; + padding: 7px; } .right { - float: right; + float: right; } .center { - text-align: center; + text-align: center; } .inline { - margin-right: 1em; + margin-right: 1em; - input { - width: auto; - } + input { + width: auto; + } } .badge { - background-color: $color-tertiary; - border: 1px solid $color-border; - border-radius: 33%; - box-shadow: inset 1px 1px rgba(0, 0, 0, .1); - font-family: 'Fira Mono'; - font-size: .75em; - font-weight: 700; - line-height: 1.7em; - margin: 2px; - padding: 3px 5px 1px; + background-color: $color-tertiary; + border: 1px solid $color-border; + border-radius: 33%; + box-shadow: inset 1px 1px rgba(0, 0, 0, .1); + font-family: 'Fira Mono'; + font-size: .75em; + font-weight: 700; + line-height: 1.7em; + margin: 2px; + padding: 3px 5px 1px; } .quick-add { - padding: 7px; + padding: 7px; - input { - width: calc(100% - 40px); - } + input { + width: calc(100% - 40px); + } - button { - margin-left: 2px; - padding: 8px; - } + button { + margin-left: 5px; + margin-right: 0; + padding: 8px; + } } .toggle { - vertical-align: sub; + vertical-align: sub; - &::before { - height: 16px; - width: 30px; - } + &::before { + height: 16px; + width: 30px; + } - &::after { - top: -2px; - } + &::after { + top: -2px; + } } .hidden:checked + .toggle::after { - transform: translate(15px); + transform: translate(15px); } diff --git a/src/scss/_dashboard.scss b/src/scss/_dashboard.scss index 190d1bb..3bb6ba1 100644 --- a/src/scss/_dashboard.scss +++ b/src/scss/_dashboard.scss @@ -1,78 +1,78 @@ .dashboard { - @include clearfix(); + @include clearfix(); - margin: 7px 1em; + margin: 7px 1em; - .details { - margin-right: 1em; + .details { + margin-right: 1em; + } + + .half-page { + @include span-columns(9 of 18); + } + + .calendar { + td { + width: 100px; } - .half-page { - @include span-columns(9 of 18); + th { + text-align: center; + + .icon { + cursor: pointer; + } } - .calendar { - td { - width: 100px; - } - - th { - text-align: center; - - .icon { - cursor: pointer; - } - } - - .days { - background-color: $color-table-row; - border-left: 1px solid lighten($color-border, 15%); - border-right: 1px solid lighten($color-border, 15%); - } - - .today { - background-color: $color-table-row; - } - - .day { - border-left: 1px solid lighten($color-border, 15%); - height: 9em; - padding-top: 2em; - position: relative; - - &:last-of-type { - border-right: 1px solid lighten($color-border, 15%); - } - } - - .date { - left: 5px; - position: absolute; - top: 2px; - } - - .tasks-wrapper { - display: inline-block; - height: 6em; - overflow: auto; - width: 100%; - } - - .task { - border: 1px solid lighten($color-border, 20%); - cursor: pointer; - display: inline-block; - margin-bottom: .3em; - padding-left: 5px; - padding-right: 1.2em; - width: 100%; - - .points { - float: right; - font-weight: 700; - margin-right: -1em; - } - } + .days { + background-color: $color-table-row; + border-left: 1px solid lighten($color-border, 15%); + border-right: 1px solid lighten($color-border, 15%); } + + .today { + background-color: $color-table-row; + } + + .day { + border-left: 1px solid lighten($color-border, 15%); + height: 9em; + padding-top: 2em; + position: relative; + + &:last-of-type { + border-right: 1px solid lighten($color-border, 15%); + } + } + + .date { + left: 5px; + position: absolute; + top: 2px; + } + + .tasks-wrapper { + display: inline-block; + height: 6em; + overflow: auto; + width: 100%; + } + + .task { + border: 1px solid lighten($color-border, 20%); + cursor: pointer; + display: inline-block; + margin-bottom: .3em; + padding-left: 5px; + padding-right: 1.2em; + width: 100%; + + .points { + float: right; + font-weight: 700; + margin-right: -1em; + } + } + } } diff --git a/src/scss/_icons.scss b/src/scss/_icons.scss index 79860c8..32e46e1 100644 --- a/src/scss/_icons.scss +++ b/src/scss/_icons.scss @@ -1,25 +1,25 @@ @font-face { - font-family: 'fontello'; - src: url('../fonts/fontello.eot'); - src: url('../fonts/fontello.woff') format('woff'), - url('../fonts/fontello.ttf') format('truetype'), - url('../fonts/fontello.svg') format('svg'); - font-weight: normal; - font-style: normal; + font-family: 'fontello'; + src: url('../fonts/fontello.eot'); + src: url('../fonts/fontello.woff') format('woff'), + url('../fonts/fontello.ttf') format('truetype'), + url('../fonts/fontello.svg') format('svg'); + font-weight: normal; + font-style: normal; } .icon { - display: inline-block; - font-family: 'fontello'; - font-style: normal; - font-variant: normal; - font-weight: normal; - line-height: 1em; - speak: none; - text-align: center; - text-decoration: inherit; - text-transform: none; - width: 1em; + display: inline-block; + font-family: 'fontello'; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1em; + speak: none; + text-align: center; + text-decoration: inherit; + text-transform: none; + width: 1em; } .icon-trash-empty::before { content: '\e800'; } @@ -45,16 +45,16 @@ .icon-hashtag::before { content: '\f292'; } .icon-check::before { - content: '\e812'; - margin-left: -6px; + content: '\e812'; + margin-left: -6px; } .icon-check-empty::before { - content: '\f096'; - margin-left: -8px; + content: '\f096'; + margin-left: -8px; } .icon-help-circled { - cursor: help; + cursor: help; } diff --git a/src/scss/_login.scss b/src/scss/_login.scss index 7a5d98e..fbfcf50 100644 --- a/src/scss/_login.scss +++ b/src/scss/_login.scss @@ -1,66 +1,66 @@ .login { + @include shadow-low(); + + background-color: $white; + display: inline-block; + margin: 3em calc(50% - 175px); + padding: 1em; + position: relative; + text-align: center; + width: 350px; + + h1 { + margin: 1em; + margin-top: .5em; + } + + [type='text'] { + border-bottom: 0; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + text-align: center; + } + + [type='password'] { + border-top-left-radius: 0; + border-top-right-radius: 0; + text-align: center; + } + + label { + display: inline-block; + margin-top: .5em; + } + + button { + margin-top: .5em; + width: 100%; + } + + p { + font-size: .8em; + margin-bottom: -1em; + } + + &::before, + &::after { @include shadow-low(); - background-color: $white; - display: inline-block; - margin: 3em calc(50% - 175px); - padding: 1em; - position: relative; - text-align: center; - width: 350px; + background: $color-table-row; + content: ''; + height: 100%; + left: 0; + position: absolute; + top: 0; + transform: rotate(2deg); + width: 100%; + z-index: -1; + } - h1 { - margin: 1em; - margin-top: .5em; - } - - [type='text'] { - border-bottom: 0; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - text-align: center; - } - - [type='password'] { - border-top-left-radius: 0; - border-top-right-radius: 0; - text-align: center; - } - - label { - display: inline-block; - margin-top: .5em; - } - - button { - margin-top: .5em; - width: 100%; - } - - p { - font-size: .8em; - margin-bottom: -1em; - } - - &::before, - &::after { - @include shadow-low(); - - background: $color-table-row; - content: ''; - height: 100%; - left: 0; - position: absolute; - top: 0; - transform: rotate(2deg); - width: 100%; - z-index: -1; - } - - &::after { - background-color: darken($color-table-row, 5%); - transform: rotate(-3deg); - z-index: -2; - } + &::after { + background-color: darken($color-table-row, 5%); + transform: rotate(-3deg); + z-index: -2; + } } diff --git a/src/scss/_modal.scss b/src/scss/_modal.scss index b98609b..a710917 100644 --- a/src/scss/_modal.scss +++ b/src/scss/_modal.scss @@ -1,102 +1,102 @@ .no-scroll { - overflow: hidden; + overflow: hidden; } .modal-container { - background-color: rgba(0, 0, 0, .4); - bottom: 0; - display: flex; - left: 0; - overflow-y: auto; - padding: 10vh 0; - position: fixed; - right: 0; - top: 0; - visibility: hidden; - z-index: 1000; + background-color: rgba(0, 0, 0, .4); + bottom: 0; + display: flex; + left: 0; + overflow-y: auto; + padding: 10vh 0; + position: fixed; + right: 0; + top: 0; + visibility: hidden; + z-index: 1000; - &.animated { - transition: all .3s; - } + &.animated { + transition: all .3s; + } - &.modal-closed { - opacity: 0; - } + &.modal-closed { + opacity: 0; + } - &.modal-open { - opacity: 1; - visibility: visible; - } + &.modal-open { + opacity: 1; + visibility: visible; + } } .modal { - @include shadow-float(); + @include shadow-float(); - background-color: $white; - margin: auto; - max-width: 100%; - width: 450px; + background-color: $white; + margin: auto; + max-width: 100%; + width: 450px; - &.animated { - transition: all .3s; + &.animated { + transition: all .3s; + } + + &.wide { + width: 650px; + } + + &.modal-closed { + opacity: 0; + transform: translateY(-100%); + } + + .title { + background-color: $color-heading-bg; + + .right { + color: $color-text; + cursor: pointer; } - &.wide { - width: 650px; + .right:hover { + color: lighten($color-text, 10%); } + } - &.modal-closed { - opacity: 0; - transform: translateY(-100%); + .title, + .body { + padding: .75em; + } + + input, + select { + margin-bottom: 7px; + } + + [multiple] { + height: 4em; + } + + .half { + display: flex; + justify-content: space-between; + + label { + display: block; + width: 49%; } + } - .title { - background-color: $color-heading-bg; + .buttons { + float: right; + margin: 1em; + margin-right: 0; - .right { - color: $color-text; - cursor: pointer; - } - - .right:hover { - color: lighten($color-text, 10%); - } - } - - .title, - .body { - padding: .75em; - } - - input, - select { - margin-bottom: 7px; - } - - [multiple] { - height: 4em; - } - - .half { - display: flex; - justify-content: space-between; - - label { - display: block; - width: 49%; - } - } - - .buttons { - float: right; - margin: 1em; - margin-right: 0; - - .flat { - background-color: $white; - color: $color-text; - line-height: 1.1em; - } + .flat { + background-color: $white; + color: $color-text; + line-height: 1.1em; } + } } diff --git a/src/scss/_nav-top.scss b/src/scss/_nav-top.scss index 9130634..fd6a668 100644 --- a/src/scss/_nav-top.scss +++ b/src/scss/_nav-top.scss @@ -1,28 +1,28 @@ .nav-top { - border-bottom: 1px solid lighten($color-border, 10%); - margin-bottom: 5px; - padding: .5em; + border-bottom: 1px solid lighten($color-border, 10%); + margin-bottom: 5px; + padding: .5em; - h1 { - margin-top: 3px; + h1 { + margin-top: 3px; - span { - padding: 0; - } + span { + padding: 0; } + } - .dark { - color: $color-text; - } + .dark { + color: $color-text; + } - .small { - font-size: .655555em; - font-weight: 500; - } + .small { + font-size: .655555em; + font-weight: 500; + } - .buttons { - float: right; - margin-top: -2.2em; - } + .buttons { + float: right; + margin-top: -2.2em; + } } diff --git a/src/scss/_notifications.scss b/src/scss/_notifications.scss index e29b1d2..b496470 100644 --- a/src/scss/_notifications.scss +++ b/src/scss/_notifications.scss @@ -4,52 +4,52 @@ $error: #ffbaba; $info: #bde5f8; .notifications { - bottom: 1%; - left: calc(50% - 200px); - position: absolute; - z-index: 10000000; + bottom: 1%; + left: calc(50% - 200px); + position: absolute; + z-index: 10000000; - div { - @include shadow-float; + div { + @include shadow-float; - border: 1px solid; - border-radius: 2px; - cursor: pointer; - margin-bottom: .5em; - min-height: 3em; - opacity: 1; - padding: 1em; - text-align: center; - transition: opacity .5s linear; - width: 400px; + border: 1px solid; + border-radius: 2px; + cursor: pointer; + margin-bottom: .5em; + min-height: 3em; + opacity: 1; + padding: 1em; + text-align: center; + transition: opacity .5s linear; + width: 400px; - &.clicked { - opacity: 0; - } - - &.success { - background-color: $success; - border-color: darken($success, 30%); - color: darken($success, 60%); - } - - &.error { - background-color: $error; - border-color: darken($error, 10%); - color: darken($error, 60%); - } - - &.warn { - background-color: $warn; - border-color: darken($warn, 30%); - color: darken($warn, 57%); - } - - &.info { - background-color: $info; - border-color: darken($info, 30%); - color: darken($info, 50%); - } + &.clicked { + opacity: 0; } + + &.success { + background-color: $success; + border-color: darken($success, 30%); + color: darken($success, 60%); + } + + &.error { + background-color: $error; + border-color: darken($error, 10%); + color: darken($error, 60%); + } + + &.warn { + background-color: $warn; + border-color: darken($warn, 30%); + color: darken($warn, 57%); + } + + &.info { + background-color: $info; + border-color: darken($info, 30%); + color: darken($info, 50%); + } + } } diff --git a/src/scss/_settings.scss b/src/scss/_settings.scss index ec09065..6a9a230 100644 --- a/src/scss/_settings.scss +++ b/src/scss/_settings.scss @@ -1,293 +1,293 @@ .settings { - @include clearfix(); + @include clearfix(); - margin: 7px 1em; + margin: 7px 1em; - .quick-add { - padding: 0; + .quick-add { + padding: 0; + } + + .half-page { + @include span-columns(9 of 18); + } + + .half-modal { + float: left; + margin-right: 2%; + width: 49%; + + &:nth-of-type(2) { + margin: 0; } - .half-page { - @include span-columns(9 of 18); + label { + display: inline-block; + margin-top: 1em; + } + } + + .no-bottom-margin { + margin-bottom: 0; + } + + .borderless { + border: 0; + } + + .padded { + margin-right: 3px; + } + + .alternating { + td:last-child { + a { + background-image: none; + } + } + } + + .categories { + [type="text"] { + width: calc(100% - 81px); } - .half-modal { - float: left; - margin-right: 2%; - width: 49%; + [type="color"] { + cursor: pointer; + height: 35px; + margin-left: 2px; + vertical-align: bottom; + width: 35px; + } + } - &:nth-of-type(2) { - margin: 0; - } - - label { - display: inline-block; - margin-top: 1em; - } + .issue-trackers { + label { + display: inline-block; + margin-top: 1em; } - .no-bottom-margin { - margin-bottom: 0; + [type="text"] { + &:first-of-type { + width: 430px; + } + + &:last-of-type { + margin-left: 2px; + width: 148px; + } } - .borderless { - border: 0; - } - - .padded { - margin-right: 3px; - } - - .alternating { - td:last-child { - a { - background-image: none; - } - } - } - - .categories { - [type="text"] { - width: calc(100% - 81px); - } - - [type="color"] { - cursor: pointer; - height: 35px; - margin-left: 2px; - vertical-align: bottom; - width: 35px; - } - } - - .issue-trackers { - label { - display: inline-block; - margin-top: 1em; - } - - [type="text"] { - &:first-of-type { - width: 430px; - } - - &:last-of-type { - margin-left: 2px; - width: 148px; - } - } - - button { - height: 36px; - margin-left: 2px; - padding: 9px; - vertical-align: top; - } - } - - .double-edit .first { - .inline-edit { - margin-right: 1%; - width: 70%; - } - - [type="text"] { - width: 95%; - } - } - - .double-edit .last { - .inline-edit { - width: 25%; - } - - [type="text"] { - width: 86%; - } - } - - .users { - .user-select { - display: inline-block; - margin-bottom: .3em; - margin-top: 0; - width: 33%; - } - - label { - display: inline-block; - margin-top: 1em; - } - } - - .gu-mirror { - @include shadow-high; - - background: $white; - display: block; - // To override default opacity settings - filter: alpha(opacity = 100); - opacity: 1; - - .actions { - float: right; - } - } - - .modal-list { - border: 1px solid $color-border; - border-radius: 3px; - list-style: none; - margin: 0; - margin-bottom: 1em; - padding: 0; - - &.category-list { - [type="color"] { - border: 0; - cursor: pointer; - height: 24px; - margin: 0; - padding: 0; - width: 20px; - } - - .inline-edit { - vertical-align: top; - width: 85%; - } - } - - li { - border-bottom: 1px solid $color-border; - padding: 0 7px; - - &:last-of-type { - border: 0; - } - } - - .actions { - float: right; - } - - .badge { - margin-left: 5px; - margin-right: 13px; - } - - .icon-trash-empty, - .icon-edit { - cursor: pointer; - } + button { + height: 36px; + margin-left: 2px; + padding: 9px; + vertical-align: top; } + } + .double-edit .first { .inline-edit { + margin-right: 1%; + width: 70%; + } + + [type="text"] { + width: 95%; + } + } + + .double-edit .last { + .inline-edit { + width: 25%; + } + + [type="text"] { + width: 86%; + } + } + + .users { + .user-select { + display: inline-block; + margin-bottom: .3em; + margin-top: 0; + width: 33%; + } + + label { + display: inline-block; + margin-top: 1em; + } + } + + .gu-mirror { + @include shadow-high; + + background: $white; + display: block; + // To override default opacity settings + filter: alpha(opacity = 100); + opacity: 1; + + .actions { + float: right; + } + } + + .modal-list { + border: 1px solid $color-border; + border-radius: 3px; + list-style: none; + margin: 0; + margin-bottom: 1em; + padding: 0; + + &.category-list { + [type="color"] { + border: 0; + cursor: pointer; + height: 24px; + margin: 0; + padding: 0; + width: 20px; + } + + .inline-edit { + vertical-align: top; + width: 85%; + } + } + + li { + border-bottom: 1px solid $color-border; + padding: 0 7px; + + &:last-of-type { + border: 0; + } + } + + .actions { + float: right; + } + + .badge { + margin-left: 5px; + margin-right: 13px; + } + + .icon-trash-empty, + .icon-edit { + cursor: pointer; + } + } + + .inline-edit { + display: inline-block; + width: 82%; + + .icon { + cursor: pointer; + float: right; + margin-top: 4px; + } + + [type="text"] { + border: 0; + border-bottom: 1px solid $color-border; + border-radius: 0; + height: 1em; + margin: 0; + padding-left: 0; + width: 90%; + } + } + + .icon-resize-vertical { + border-right: 1px solid $color-border; + cursor: move; + margin-left: -5px; + margin-right: .5em; + width: 1.5em; + } + + section { + ul { + border: 1px solid lighten($color-border, 10%); + border-radius: 4px; + list-style: none; + margin: 0; + padding: 0; + + li { + @include clearfix(); + + border-bottom: 1px solid lighten($color-border, 10%); + line-height: 2em; + padding-left: 5px; + } + + li:last-of-type { + border-bottom: 0; + } + + .badge { + float: right; + margin-top: 3px; + } + } + + label { + display: block; + line-height: 2em; + + &.inline { display: inline-block; - width: 82%; + margin-right: 1em; + } - .icon { - cursor: pointer; - float: right; - margin-top: 4px; - } - - [type="text"] { - border: 0; - border-bottom: 1px solid $color-border; - border-radius: 0; - height: 1em; - margin: 0; - padding-left: 0; - width: 90%; - } + &.hidden { + display: none; + } } - .icon-resize-vertical { - border-right: 1px solid $color-border; - cursor: move; - margin-left: -5px; - margin-right: .5em; - width: 1.5em; + tbody label { + display: inline; } - section { - ul { - border: 1px solid lighten($color-border, 10%); - border-radius: 4px; - list-style: none; - margin: 0; - padding: 0; - - li { - @include clearfix(); - - border-bottom: 1px solid lighten($color-border, 10%); - line-height: 2em; - padding-left: 5px; - } - - li:last-of-type { - border-bottom: 0; - } - - .badge { - float: right; - margin-top: 3px; - } - } - - label { - display: block; - line-height: 2em; - - &.inline { - display: inline-block; - margin-right: 1em; - } - - &.hidden { - display: none; - } - } - - tbody label { - display: inline; - } - - .filters { - margin-top: -2.5em; - max-width: 80%; - } - - .hold-bottom { - bottom: 7px; - position: absolute; - } - - .autosize { - margin-bottom: .5em; - width: auto; - } - - .tall { - margin-top: 2.5em; - } - - .half { - @include span-columns(4.5 of 9); - padding: 7px; - - input, - button { - margin-top: 7px; - } - } - - .flat { - background-color: lighten($color-background, 10%); - color: $color-primary; - } + .filters { + margin-top: -2.5em; + max-width: 80%; } + + .hold-bottom { + bottom: 7px; + position: absolute; + } + + .autosize { + margin-bottom: .5em; + width: auto; + } + + .tall { + margin-top: 2.5em; + } + + .half { + @include span-columns(4.5 of 9); + padding: 7px; + + input, + button { + margin-top: 7px; + } + } + + .flat { + background-color: lighten($color-background, 10%); + color: $color-primary; + } + } } diff --git a/test/app/app.api-http.spec.ts b/test/app/app.api-http.spec.ts index ec28d35..5dcec8b 100644 --- a/test/app/app.api-http.spec.ts +++ b/test/app/app.api-http.spec.ts @@ -50,7 +50,8 @@ describe('ApiInterceptor', () => { }); const req = httpMock.expectOne(req => - req.headers.has('Content-Type') && req.headers.get('Content-Type') === 'application/json' + req.headers.has('Content-Type') && + req.headers.get('Content-Type') === 'application/json' ); expect(req.request.method).toEqual('GET'); @@ -69,7 +70,8 @@ describe('ApiInterceptor', () => { }); const req = httpMock.expectOne(req => - req.headers.has('Authorization') && req.headers.get('Authorization') === 'fake' + req.headers.has('Authorization') && + req.headers.get('Authorization') === 'fake' ); expect(req.request.method).toEqual('POST'); @@ -91,12 +93,13 @@ describe('ApiInterceptor', () => { }); const req = httpMock.expectOne(req => - req.headers.has('Content-Type') && req.headers.get('Content-Type') === 'application/json' + req.headers.has('Content-Type') && + req.headers.get('Content-Type') === 'application/json' ); expect(req.request.method).toEqual('GET'); const error = new HttpErrorResponse({ status: 401 }); - req.flush({}, error); + req.flush(error); expect(localStorage.getItem('Authorization')).toEqual(null); } ) diff --git a/test/app/board/task/task.component.spec.ts b/test/app/board/task/task.component.spec.ts index a9e7428..4e81d66 100644 --- a/test/app/board/task/task.component.spec.ts +++ b/test/app/board/task/task.component.spec.ts @@ -85,7 +85,7 @@ describe('TaskDisplay', () => { const actual = component.getTaskDescription(); - expect(actual).toEqual('

Make this HTML

\n '); + expect(actual).toEqual('

Make this HTML

\n'); }); it('handles checklists in markdown', () => { diff --git a/test/app/settings/board-admin/board-admin.component.spec.ts b/test/app/settings/board-admin/board-admin.component.spec.ts index bad3ac5..ad1e6a8 100644 --- a/test/app/settings/board-admin/board-admin.component.spec.ts +++ b/test/app/settings/board-admin/board-admin.component.spec.ts @@ -96,6 +96,7 @@ describe('BoardAdmin', () => { let called = false; + (component.modal).isOpen = () => true; (component.boardService).addBoard = () => { return { subscribe: fn => { const board = new Board(); @@ -118,6 +119,7 @@ describe('BoardAdmin', () => { let called = false; + (component.modal).isOpen = () => true; (component.boardService).editBoard = () => { return { subscribe: fn => { const board = new Board(); diff --git a/test/app/settings/user-admin/user-admin.component.spec.ts b/test/app/settings/user-admin/user-admin.component.spec.ts index 75ab818..0a164cc 100644 --- a/test/app/settings/user-admin/user-admin.component.spec.ts +++ b/test/app/settings/user-admin/user-admin.component.spec.ts @@ -66,6 +66,7 @@ describe('UserAdmin', () => { it('calls a service to add a user', () => { let called = false; + (component.modal).isOpen = () => true; (component.userService).addUser = () => { return { subscribe: fn => { const user = new User(); @@ -91,6 +92,7 @@ describe('UserAdmin', () => { it('calls a service to edit a user', () => { let called = false; + (component.modal).isOpen = () => true; (component.userService).editUser = () => { return { subscribe: fn => { const user = new User(); diff --git a/test/app/shared/auth/auth.service.spec.ts b/test/app/shared/auth/auth.service.spec.ts index 1f4f4ad..bcf84b0 100644 --- a/test/app/shared/auth/auth.service.spec.ts +++ b/test/app/shared/auth/auth.service.spec.ts @@ -75,9 +75,8 @@ describe('AuthService', () => { testCall('api/login', 'POST'); }); - fit('handles errors on user login', () => { - service.login('test', 'test', true).subscribe(response => { - console.log(response); + it('handles errors on user login', () => { + service.login('test', 'test', true).subscribe(() => {}, response => { expect(response.alerts.length).toEqual(1); }); @@ -93,7 +92,7 @@ describe('AuthService', () => { }); const testCall = (url, method, isError = false) => { - const req = httpMock.expectOne(url); + const req = httpMock.expectOne({ method, url }); expect(req.request.method).toEqual(method); if (isError) {