diff --git a/package-lock.json b/package-lock.json index 3ea83eb..3e727f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,9 +15,9 @@ "integrity": "sha512-sQzNo+2NwjgVAiy/AU3deYvemoH3CHtYvh+aH/3jq9yIK+2ZiuwhZ2oKmoBsVPEMzLjOqF07FhDLowrAAZfVRw==" }, "@angular-devkit/build-optimizer": { - "version": "0.0.38", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.0.38.tgz", - "integrity": "sha512-P3jcXLIHlxfX5TNDr/tZ1tARB7tZ7jLNtjRb66O4EMspnO0n6ke8SGwB7wcNIdr+VRH9jDQUyGAj9nUjlqn00A==", + "version": "0.0.42", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.0.42.tgz", + "integrity": "sha512-BAYCVZ10ro6mgZQDZiNiVbX8ppygw4q7z/stpwG8WjMswgMRIcxsxYoC1VFuWcUPAf4UyfTIav6e8UZWA5+xnQ==", "dev": true, "requires": { "loader-utils": "1.1.0", @@ -90,23 +90,24 @@ } }, "@angular/cli": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-1.6.4.tgz", - "integrity": "sha512-g4TD6mjIUpMsFSah3Wm0I0Q5AEbccgi2Dy2W4ec2fCz49FmATNnQ9wg8ePlO4B9RllAtnqdyaqzcGaLpB4SKew==", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-1.6.6.tgz", + "integrity": "sha512-+hNKTw8Pcg7RBEsXphpgnebnzlxpbAVW0hRK45iLvjC2550co5sPxxxCikKMjbQzr6LEBhpgGS2ma4jX/AXsCw==", "dev": true, "requires": { - "@angular-devkit/build-optimizer": "0.0.38", - "@angular-devkit/schematics": "0.0.48", + "@angular-devkit/build-optimizer": "0.0.42", + "@angular-devkit/core": "0.0.29", + "@angular-devkit/schematics": "0.0.52", "@ngtools/json-schema": "1.1.0", - "@ngtools/webpack": "1.9.4", - "@schematics/angular": "0.1.13", + "@ngtools/webpack": "1.9.6", + "@schematics/angular": "0.1.17", "autoprefixer": "7.2.5", "chalk": "2.2.2", "circular-dependency-plugin": "4.4.0", "common-tags": "1.7.2", "copy-webpack-plugin": "4.3.1", "core-object": "3.1.5", - "css-loader": "0.28.8", + "css-loader": "0.28.9", "cssnano": "3.10.0", "denodeify": "1.2.1", "ember-cli-string-utils": "1.1.0", @@ -144,17 +145,60 @@ "style-loader": "0.13.2", "stylus": "0.54.5", "stylus-loader": "3.0.1", - "uglifyjs-webpack-plugin": "1.1.6", + "uglifyjs-webpack-plugin": "1.1.8", "url-loader": "0.6.2", "webpack": "3.10.0", "webpack-dev-middleware": "1.12.0", - "webpack-dev-server": "2.9.4", + "webpack-dev-server": "2.11.1", "webpack-merge": "4.1.1", "webpack-sources": "1.0.1", - "webpack-subresource-integrity": "1.0.3", - "zone.js": "0.8.18" + "webpack-subresource-integrity": "1.0.3" }, "dependencies": { + "@angular-devkit/core": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.0.29.tgz", + "integrity": "sha512-jtUBA0pIrkdXcVqDmDrGlniqwM7NFOKdo7vWFDmCVLBbC9rZHeYW5Xv/+4HyBhGLJ4wxsAkUjsHKWGJINPPpiw==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "chokidar": "1.7.0", + "rxjs": "5.5.6", + "source-map": "0.5.6" + } + }, + "@angular-devkit/schematics": { + "version": "0.0.52", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.0.52.tgz", + "integrity": "sha512-NtG8VB5aWtg0cw1Y7EJinJMuAnXsNdkQkkVe/i7CO6TPLyFQSFQCN1YojCr43l8jTWTRebRslrBawPCMOxsOgw==", + "dev": true, + "requires": { + "@ngtools/json-schema": "1.1.0", + "rxjs": "5.5.6" + } + }, + "accepts": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", + "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "dev": true, + "requires": { + "mime-types": "2.1.16", + "negotiator": "0.6.1" + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "4.6.0", + "fast-deep-equal": "1.0.0", + "fast-json-stable-stringify": "2.0.0", + "json-schema-traverse": "0.3.1" + } + }, "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", @@ -164,6 +208,34 @@ "color-convert": "1.9.0" } }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "3.1.5", + "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-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "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 + }, "async": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz", @@ -173,6 +245,66 @@ "lodash": "4.17.4" } }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "1.0.4", + "debug": "2.6.9", + "depd": "1.1.1", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "braces": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.0.tgz", + "integrity": "sha512-P4O8UQRdGiMLWSizsApmXVQDBS6KCt7dSexgLKBmH5Hr1CZq7vsnscFh8oR1sP1ab1Zj0uCHCEzZeV6SfUf3rA==", + "dev": true, + "requires": { + "arr-flatten": "1.1.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "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.1.1", + "split-string": "3.1.0", + "to-regex": "3.0.1" + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, "chalk": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.2.2.tgz", @@ -190,28 +322,457 @@ "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", "dev": true }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "2.6.9", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "posix-character-classes": "0.1.1", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + } + } + }, + "express": { + "version": "4.16.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", + "integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", + "dev": true, + "requires": { + "accepts": "1.3.4", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "1.1.1", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "finalhandler": "1.1.0", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "1.1.2", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "2.0.2", + "qs": "6.5.1", + "range-parser": "1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.1", + "serve-static": "1.13.1", + "setprototypeof": "1.1.0", + "statuses": "1.3.1", + "type-is": "1.6.15", + "utils-merge": "1.0.1", + "vary": "1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "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" + } + }, + "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.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "on-finished": "2.3.0", + "parseurl": "1.3.2", + "statuses": "1.3.1", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "3.1.0", + "path-dirname": "1.0.2" + }, + "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.1" + } + } + } + }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "2.0.0", + "resolve-cwd": "2.0.0" + } + }, + "ipaddr.js": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", + "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "3.2.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.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-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.2.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.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.5.tgz", + "integrity": "sha512-ykttrLPQrz1PUJcXjwsTUjGoPJ64StIGNE2lGVD1c9CuguJ+L7/navsE8IcDNndOoCMvYV0qc/exfVbMHkUhvA==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "braces": "2.3.0", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "extglob": "2.0.4", + "fragment-cache": "0.2.1", + "kind-of": "6.0.2", + "nanomatch": "1.2.7", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "parseurl": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", + "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", + "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "dev": true, + "requires": { + "forwarded": "0.1.2", + "ipaddr.js": "1.5.2" + } + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + } + }, "schema-utils": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.3.tgz", "integrity": "sha512-sgv/iF/T4/SewJkaVpldKC4WjSkz0JsOh2eKtxCPpCO1oR05+7MOF+H476HVRbLArkgA7j5TRJJ4p2jdFkUGQQ==", "dev": true, "requires": { - "ajv": "5.2.2", + "ajv": "5.5.2", "ajv-keywords": "2.1.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "send": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", + "integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "1.1.1", + "destroy": "1.0.4", + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "etag": "1.8.1", + "fresh": "0.5.2", + "http-errors": "1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "2.3.0", + "range-parser": "1.2.0", + "statuses": "1.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "serve-static": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", + "integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", + "dev": true, + "requires": { + "encodeurl": "1.0.1", + "escape-html": "1.0.3", + "parseurl": "1.3.2", + "send": "0.16.1" + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "dev": true }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "0.10.0", + "uuid": "3.2.1" + } + }, "supports-color": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", @@ -222,19 +783,27 @@ } }, "uglify-es": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.7.tgz", - "integrity": "sha512-fGMnE6SsDRsCjxm78C+lv7MuXsse/dtF7QuTUT43BYf4jlxPjd+XTnGB8YjaCQJ3sv2LT4zk0mwpp9+QJocU6g==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", "dev": true, "requires": { "commander": "2.13.0", "source-map": "0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } } }, "uglifyjs-webpack-plugin": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.6.tgz", - "integrity": "sha512-VUja+7rYbznEvUaeb8IxOCTUrq4BCb1ml0vffa+mfwKtrAwlqnU0ENF14DtYltV1cxd/HSuK51CCA/D/8kMQVw==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.1.8.tgz", + "integrity": "sha512-XG8/QmR1pyPeE1kj2aigo5kos8umefB31zW+PMvAAytHSB0T/vQvN6sqt8+Sh+y0b0A7zlmxNi2dzRnj0wcqGA==", "dev": true, "requires": { "cacache": "10.0.2", @@ -242,11 +811,17 @@ "schema-utils": "0.4.3", "serialize-javascript": "1.4.0", "source-map": "0.6.1", - "uglify-es": "3.3.7", + "uglify-es": "3.3.9", "webpack-sources": "1.1.0", "worker-farm": "1.5.2" }, "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "webpack-sources": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz", @@ -259,6 +834,24 @@ } } }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", + "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, "webpack": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.10.0.tgz", @@ -267,7 +860,7 @@ "requires": { "acorn": "5.1.1", "acorn-dynamic-import": "2.0.2", - "ajv": "5.2.2", + "ajv": "5.5.2", "ajv-keywords": "2.1.0", "async": "2.6.0", "enhanced-resolve": "3.4.1", @@ -280,7 +873,7 @@ "memory-fs": "0.4.1", "mkdirp": "0.5.1", "node-libs-browser": "2.0.0", - "source-map": "0.5.7", + "source-map": "0.5.6", "supports-color": "4.5.0", "tapable": "0.2.8", "uglifyjs-webpack-plugin": "0.4.6", @@ -289,24 +882,132 @@ "yargs": "8.0.2" }, "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, "uglifyjs-webpack-plugin": { "version": "0.4.6", "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", "dev": true, "requires": { - "source-map": "0.5.7", + "source-map": "0.5.6", "uglify-js": "2.8.29", "webpack-sources": "1.0.1" } } } + }, + "webpack-dev-server": { + "version": "2.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-2.11.1.tgz", + "integrity": "sha512-ombhu5KsO/85sVshIDTyQ5HF3xjZR3N0sf5Ao6h3vFwpNyzInEzA1GV3QPVjTMLTNckp8PjfG1PFGznzBwS5lg==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "array-includes": "3.0.3", + "bonjour": "3.5.0", + "chokidar": "2.0.0", + "compression": "1.7.0", + "connect-history-api-fallback": "1.3.0", + "debug": "3.1.0", + "del": "3.0.0", + "express": "4.16.2", + "html-entities": "1.2.1", + "http-proxy-middleware": "0.17.4", + "import-local": "1.0.0", + "internal-ip": "1.2.0", + "ip": "1.1.5", + "killable": "1.0.0", + "loglevel": "1.4.1", + "opn": "5.1.0", + "portfinder": "1.0.13", + "selfsigned": "1.10.1", + "serve-index": "1.9.0", + "sockjs": "0.3.19", + "sockjs-client": "1.1.4", + "spdy": "3.4.7", + "strip-ansi": "3.0.1", + "supports-color": "5.1.0", + "webpack-dev-middleware": "1.12.2", + "yargs": "6.6.0" + }, + "dependencies": { + "chokidar": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.0.0.tgz", + "integrity": "sha512-OgXCNv2U6TnG04D3tth0gsvdbV4zdbxFG3sYUqcoQMoEFVd1j1pZR6TZ8iknC45o9IJ6PeQI/J6wT/+cHcniAw==", + "dev": true, + "requires": { + "anymatch": "2.0.0", + "async-each": "1.0.1", + "braces": "2.3.0", + "fsevents": "1.1.3", + "glob-parent": "3.1.0", + "inherits": "2.0.3", + "is-binary-path": "1.0.1", + "is-glob": "4.0.0", + "normalize-path": "2.1.1", + "path-is-absolute": "1.0.1", + "readdirp": "2.1.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "supports-color": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.1.0.tgz", + "integrity": "sha512-Ry0AwkoKjDpVKK4sV4h6o3UJmNRbjYm2uXhwfj3J56lMVdvnUNqzQVRztOOMGQ++w1K/TjNDFvpJk0F/LoeBCQ==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + }, + "webpack-dev-middleware": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-1.12.2.tgz", + "integrity": "sha512-FCrqPy1yy/sN6U/SaEZcHKRXGlqU0DUaEBL45jkUYoB8foVb6wCnbIJ1HKIx+qUFTW+3JpVcCJCxZ8VATL4e+A==", + "dev": true, + "requires": { + "memory-fs": "0.4.1", + "mime": "1.6.0", + "path-is-absolute": "1.0.1", + "range-parser": "1.2.0", + "time-stamp": "2.0.0" + } + }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + } + } + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + } } } }, @@ -393,9 +1094,9 @@ "dev": true }, "@ngtools/webpack": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.9.4.tgz", - "integrity": "sha512-kawxkGMGGK7vkgjglPXuqKXLbXlkyIch8tYoE2KPC2SlqYK8IB/gbkKT5fL12t67CvvJBQB4bJMAEYJIIqMN5w==", + "version": "1.9.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.9.6.tgz", + "integrity": "sha512-B4a1MlMvnGjT5APYg0mf9oL9OeacVMX0Czl5o5Qps7Hy7FobuY4CwhnCMJAPzy7JXLAEhp6wX8Bqmxj9JJfebA==", "dev": true, "requires": { "chalk": "2.2.2", @@ -464,12 +1165,20 @@ } }, "@schematics/angular": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.1.13.tgz", - "integrity": "sha512-2+cU/u/shDwJhRXr+guXw3GKnnqZtjv7qhQVwZgmgrlS5IV1aC+NxvYNkh2S8yrg2+gtJwuPOw7jIV9p2W6Abg==", + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.1.17.tgz", + "integrity": "sha512-PHE5gk/ogPY/aN94dbbtauHMCq+/7w4Kdcl7tGmSS8mPKEI0wa6XJi//Wq/tHi55lb2fP58oEZU6n6w/wQascw==", "dev": true, "requires": { - "@angular-devkit/core": "0.0.25" + "typescript": "2.6.2" + }, + "dependencies": { + "typescript": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", + "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", + "dev": true + } } }, "@schematics/schematics": { @@ -622,6 +1331,11 @@ "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true }, + "angular-scrollable-table": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/angular-scrollable-table/-/angular-scrollable-table-1.1.2.tgz", + "integrity": "sha1-hcXPvRwkObGlahYJwkO3Y7qhyJI=" + }, "ansi-html": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", @@ -700,6 +1414,12 @@ "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", @@ -799,6 +1519,12 @@ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "async": { "version": "1.5.2", "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", @@ -822,6 +1548,12 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, + "atob": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.0.3.tgz", + "integrity": "sha1-GcenYEc3dEaPILLS0DNyrX1Mv10=", + "dev": true + }, "autoprefixer": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.5.tgz", @@ -961,6 +1693,35 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "1.0.1", + "class-utils": "0.3.6", + "component-emitter": "1.2.1", + "define-property": "1.0.0", + "isobject": "3.0.1", + "mixin-deep": "1.3.0", + "pascalcase": "0.1.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "base64-arraybuffer": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", @@ -1019,12 +1780,13 @@ "dev": true }, "block-stream": { - "version": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", "dev": true, "optional": true, "requires": { - "inherits": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + "inherits": "2.0.3" } }, "blocking-proxy": { @@ -1286,16 +2048,47 @@ "glob": "7.1.2", "graceful-fs": "4.1.11", "lru-cache": "4.1.1", - "mississippi": "1.3.0", + "mississippi": "1.3.1", "mkdirp": "0.5.1", "move-concurrently": "1.0.1", "promise-inflight": "1.0.1", "rimraf": "2.6.1", - "ssri": "5.0.0", + "ssri": "5.1.0", "unique-filename": "1.1.0", "y18n": "3.2.1" } }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "1.0.0", + "component-emitter": "1.2.1", + "get-value": "2.0.6", + "has-value": "1.0.0", + "isobject": "3.0.1", + "set-value": "2.0.0", + "to-object-path": "0.3.0", + "union-value": "1.0.0", + "unset-value": "1.0.0" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", @@ -1333,7 +2126,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000793", + "caniuse-db": "1.0.30000799", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" }, @@ -1344,16 +2137,16 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000793", + "caniuse-db": "1.0.30000799", "electron-to-chromium": "1.3.31" } } } }, "caniuse-db": { - "version": "1.0.30000793", - "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000793.tgz", - "integrity": "sha1-PADGbkI6ehkHx92Wdpp4sq+opy4=", + "version": "1.0.30000799", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000799.tgz", + "integrity": "sha1-CQSVPek/P0kmR+WMGhvaenOgyws=", "dev": true }, "caniuse-lite": { @@ -1520,6 +2313,92 @@ "chalk": "1.1.3" } }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "define-property": "0.2.5", + "isobject": "3.0.1", + "static-extend": "0.1.2" + }, + "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.6" + } + }, + "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.2.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.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "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 + } + } + }, "clean-css": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", @@ -1601,6 +2480,16 @@ "sprintf-js": "1.0.3" } }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "1.0.0", + "object-visit": "1.0.1" + } + }, "color": { "version": "0.11.4", "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", @@ -1763,14 +2652,6 @@ "inherits": "2.0.3", "readable-stream": "2.3.3", "typedarray": "0.0.6" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } } }, "connect": { @@ -1849,6 +2730,12 @@ "run-queue": "1.0.3" } }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, "copy-webpack-plugin": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.3.1.tgz", @@ -2078,9 +2965,9 @@ "dev": true }, "css-loader": { - "version": "0.28.8", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.8.tgz", - "integrity": "sha512-4jGj7Ag6WUZ5lQyE4te9sJLn0lgkz6HI3WDE4aw98AkW1IAKXPP4blTpPeorlLDpNsYvojo0SYgRJOdz2KbuAw==", + "version": "0.28.9", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.9.tgz", + "integrity": "sha512-r3dgelMm/mkPz5Y7m9SeiGE46i2VsEU/OYbez+1llfxtv8b2y5/b5StaeEvPK3S5tlNQI+tDW/xDIhKJoZgDtw==", "dev": true, "requires": { "babel-code-frame": "6.26.0", @@ -2091,7 +2978,7 @@ "lodash.camelcase": "4.3.0", "object-assign": "4.1.1", "postcss": "5.2.18", - "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-extract-imports": "1.2.0", "postcss-modules-local-by-default": "1.2.0", "postcss-modules-scope": "1.1.0", "postcss-modules-values": "1.3.0", @@ -2117,7 +3004,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -2221,7 +3108,7 @@ "dev": true, "requires": { "browserslist": "1.7.7", - "caniuse-db": "1.0.30000793", + "caniuse-db": "1.0.30000799", "normalize-range": "0.1.2", "num2fraction": "1.2.2", "postcss": "5.2.18", @@ -2234,7 +3121,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000793", + "caniuse-db": "1.0.30000799", "electron-to-chromium": "1.3.31" } }, @@ -2245,7 +3132,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -2331,6 +3218,12 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", @@ -2354,6 +3247,15 @@ "object-keys": "1.0.11" } }, + "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.2" + } + }, "defined": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", @@ -2583,14 +3485,6 @@ "inherits": "2.0.3", "readable-stream": "2.3.3", "stream-shift": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } } }, "ecc-jsbn": { @@ -3118,6 +4012,15 @@ "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", "dev": true }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "0.1.1" + } + }, "extglob": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", @@ -3265,14 +4168,6 @@ "requires": { "inherits": "2.0.3", "readable-stream": "2.3.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } } }, "for-in": { @@ -3315,6 +4210,15 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz", "integrity": "sha1-Ge+YdMSuHCl7zweP3mOgm2aoQ2M=" }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "0.2.2" + } + }, "fresh": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.0.tgz", @@ -3328,14 +4232,6 @@ "requires": { "inherits": "2.0.3", "readable-stream": "2.3.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } } }, "fs-access": { @@ -4174,14 +5070,6 @@ "inherits": "2.0.3", "mkdirp": "0.5.1", "rimraf": "2.6.1" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } } }, "function-bind": { @@ -4247,6 +5135,12 @@ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -4428,6 +5322,66 @@ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, "hash-base": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-2.0.2.tgz", @@ -4540,7 +5494,7 @@ "ncname": "1.0.0", "param-case": "2.1.1", "relateurl": "0.2.7", - "uglify-js": "3.3.7" + "uglify-js": "3.3.9" }, "dependencies": { "commander": { @@ -4556,9 +5510,9 @@ "dev": true }, "uglify-js": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.7.tgz", - "integrity": "sha512-esJIpNQIC44EFSrbeFPhiXHy2HJ+dTcnn0Zdkn+5meuLsvoV0mFJffKlyezNIIHNfhF0NpgbifygCfEyAogIhQ==", + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.3.9.tgz", + "integrity": "sha512-J2t8B5tj9JdPTW4+sNZXmiIWHzTvcoITkaqzTiilu/biZF/9crqf/Fi7k5hqbOmVRh9/hVNxAxBYIMF7N6SqMQ==", "dev": true, "requires": { "commander": "2.13.0", @@ -4624,12 +5578,6 @@ "domelementtype": "1.3.0" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, "isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", @@ -4741,6 +5689,12 @@ "extend": "3.0.1" } }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, "icss-replace-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", @@ -4837,10 +5791,10 @@ } }, "inherits": { - "version": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.4", @@ -4891,6 +5845,23 @@ "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", "dev": true }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "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 + } + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -4922,11 +5893,47 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "6.0.2" + }, + "dependencies": { + "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 + } + } + }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "1.0.0", + "is-data-descriptor": "1.0.0", + "kind-of": "6.0.2" + }, + "dependencies": { + "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 + } + } + }, "is-directory": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", @@ -5001,6 +6008,26 @@ "kind-of": "3.2.2" } }, + "is-odd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-1.0.0.tgz", + "integrity": "sha1-O4qTLrAos3dcObsJ6RdnrM22kIg=", + "dev": true, + "requires": { + "is-number": "3.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, "is-path-cwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", @@ -5336,9 +6363,9 @@ "dev": true }, "js-base64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.1.tgz", - "integrity": "sha512-2h586r2I/CqU7z1aa1kBgWaVAXWAZK+zHnceGi/jFgn7+7VSluxYer/i3xOZVearCxxXvyDkLtTBo+OeJCA3kA==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.3.tgz", + "integrity": "sha512-H7ErYLM34CvDMto3GbD6xD0JLUGYXR3QTcH6B/tr4Hi/QpSThnCsIp+Sy5FRTw3B0d6py4HcNkW7nO/wdtGWEw==", "dev": true }, "js-marker-clusterer": { @@ -5926,11 +6953,26 @@ "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=", "dev": true }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "1.0.1" + } + }, "math-expression-evaluator": { "version": "1.2.17", "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", @@ -6062,9 +7104,9 @@ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" }, "mississippi": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.0.tgz", - "integrity": "sha1-0gFYPrEjJ+PFwWQqQEqcrPlONPU=", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-1.3.1.tgz", + "integrity": "sha512-/6rB8YXFbAtsUVRphIRQqB0+9c7VaPHCjVtvto+JqwVxgz8Zz+I+f68/JgQ+Pb4VlZb2svA9OtdXnHHsZz7ltg==", "dev": true, "requires": { "concat-stream": "1.6.0", @@ -6079,6 +7121,27 @@ "through2": "2.0.3" } }, + "mixin-deep": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.0.tgz", + "integrity": "sha512-dgaCvoh6i1nosAUBKb0l0pfJ78K8+S9fluyIR2YvAeUD/QuMahnFnF3xYty5eYXMjhGSsB0DsW6A0uAZyetoAg==", + "dev": true, + "requires": { + "for-in": "1.0.2", + "is-extendable": "1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "mixin-object": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", @@ -6156,6 +7219,45 @@ "integrity": "sha1-7XFfP+neArV6XmJS2QqWZ14fCFo=", "optional": true }, + "nanomatch": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.7.tgz", + "integrity": "sha512-/5ldsnyurvEw7wNpxLFgjVvBLMta43niEYOy0CJ4ntcYSbx6bugRUTQeFb4BR/WanEL1o3aQgHuVLHQaB6tOqg==", + "dev": true, + "requires": { + "arr-diff": "4.0.0", + "array-unique": "0.3.2", + "define-property": "1.0.0", + "extend-shallow": "2.0.1", + "fragment-cache": "0.2.1", + "is-odd": "1.0.0", + "kind-of": "5.1.0", + "object.pick": "1.3.0", + "regex-not": "1.0.0", + "snapdragon": "0.8.1", + "to-regex": "3.0.1" + }, + "dependencies": { + "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 + }, + "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 + } + } + }, "ncname": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/ncname/-/ncname-1.0.0.tgz", @@ -6189,6 +7291,11 @@ } } }, + "ng2-expanding-table": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ng2-expanding-table/-/ng2-expanding-table-1.5.2.tgz", + "integrity": "sha1-6ujPzuosALewgQsEQhEA53XMwhw=" + }, "ng2-validation-manager": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/ng2-validation-manager/-/ng2-validation-manager-0.5.3.tgz", @@ -6199,11 +7306,21 @@ "resolved": "https://registry.npmjs.org/ngx-bootstrap/-/ngx-bootstrap-2.0.0-beta.8.tgz", "integrity": "sha512-e+3euXDb4nhzxn9kBO4RPWwRaI2ef7Lg+us8Yo2DBfD/Kuk/vl7ksWjoolMFLKEGpcTcKhMT/4BH5dUx+S4AtA==" }, + "ngx-order-pipe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ngx-order-pipe/-/ngx-order-pipe-1.1.2.tgz", + "integrity": "sha512-uWI0+jVODGKhOtQCZS8pZLa/cebuLp9aAz+6080SxbtCkfn98ObNHE7csIaXkDQCEC3xwORY84cjtxV6DqdcGw==" + }, "ngx-pagination": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/ngx-pagination/-/ngx-pagination-3.0.3.tgz", "integrity": "sha1-MUFFJjYTc42MVE2jbNjazFqomm8=" }, + "ngx-pipes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ngx-pipes/-/ngx-pipes-2.1.0.tgz", + "integrity": "sha1-lpy8ePHHUSsSzAUPRBwlKPs6BaA=" + }, "no-case": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", @@ -6213,6 +7330,19 @@ "lower-case": "1.1.4" } }, + "node": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/node/-/node-9.4.0.tgz", + "integrity": "sha512-tqcU/4JVwvpbktGCA0LgAzR7mudW1UfPURpakRpu5UE29GQBIlqhyjZqM0eMRDl/CsY1ktAghM4oBI770zMRww==", + "requires": { + "node-bin-setup": "1.0.6" + } + }, + "node-bin-setup": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-bin-setup/-/node-bin-setup-1.0.6.tgz", + "integrity": "sha512-uPIxXNis1CRbv1DwqAxkgBk5NFV3s7cMN/Gf556jSw6jBvV7ca4F9lRL/8cALcZecRibeqU+5dFYqFFmzv5a0Q==" + }, "node-forge": { "version": "0.6.33", "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.6.33.tgz", @@ -6523,11 +7653,87 @@ "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", "dev": true }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "0.1.1", + "define-property": "0.2.5", + "kind-of": "3.2.2" + }, + "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.6" + } + }, + "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.2.2" + } + }, + "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.2.2" + } + }, + "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.1.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + } + } + }, "object-keys": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -6537,6 +7743,23 @@ "is-extendable": "0.1.1" } }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "obuf": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.1.tgz", @@ -6669,14 +7892,6 @@ "cyclist": "0.2.2", "inherits": "2.0.3", "readable-stream": "2.3.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } } }, "param-case": { @@ -6751,11 +7966,23 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", "integrity": "sha1-yKuMkiO6NIiKpkopeyiFO+wY2lY=" }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, "path-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.0.tgz", "integrity": "sha1-oLhwcpquIUAFt9UDLsLLuw+0RRo=" }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, "path-exists": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", @@ -6871,6 +8098,12 @@ "mkdirp": "0.5.1" } }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, "postcss": { "version": "6.0.16", "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.16.tgz", @@ -6954,7 +8187,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -6979,7 +8212,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7003,7 +8236,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7026,7 +8259,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7049,7 +8282,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7072,7 +8305,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7095,7 +8328,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7119,7 +8352,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7143,7 +8376,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7224,7 +8457,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7247,7 +8480,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7273,7 +8506,7 @@ "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "dev": true, "requires": { - "caniuse-db": "1.0.30000793", + "caniuse-db": "1.0.30000799", "electron-to-chromium": "1.3.31" } }, @@ -7284,7 +8517,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7315,7 +8548,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7339,7 +8572,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7365,7 +8598,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7391,7 +8624,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7399,9 +8632,9 @@ } }, "postcss-modules-extract-imports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", - "integrity": "sha1-thTJcgvmgW6u41+zpfqh26agXds=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.2.0.tgz", + "integrity": "sha1-ZhQOzs447wa/DT41XWm/WdFB6oU=", "dev": true, "requires": { "postcss": "6.0.16" @@ -7453,7 +8686,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7479,7 +8712,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7503,7 +8736,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7527,7 +8760,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7550,7 +8783,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7575,7 +8808,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7612,7 +8845,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7637,7 +8870,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7654,7 +8887,7 @@ "minimatch": "3.0.4", "mkdirp": "0.5.1", "postcss": "6.0.16", - "xxhashjs": "0.2.1" + "xxhashjs": "0.2.2" }, "dependencies": { "mime": { @@ -7689,7 +8922,7 @@ "dev": true, "requires": { "chalk": "1.1.3", - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.5.6", "supports-color": "3.2.3" } @@ -7928,19 +9161,13 @@ "requires": { "duplexify": "3.5.3", "inherits": "2.0.3", - "pump": "2.0.0" + "pump": "2.0.1" }, "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, "pump": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.0.tgz", - "integrity": "sha512-6MYypjOvtiXhBSTOD0Zs5eNjCGfnqi5mPsCsW+dgKTxrZzQMZQNpBo3XRkLx7id753f3EeyHLBqzqqUymIolgw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", "dev": true, "requires": { "end-of-stream": "1.4.1", @@ -8217,6 +9444,15 @@ "is-primitive": "2.0.0" } }, + "regex-not": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.0.tgz", + "integrity": "sha1-Qvg+OXcWIt+CawKvF2Ul1qXxV/k=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1" + } + }, "regexpu-core": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-1.0.0.tgz", @@ -8380,6 +9616,12 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=" }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -8549,7 +9791,7 @@ "dev": true, "optional": true, "requires": { - "js-base64": "2.4.1", + "js-base64": "2.4.3", "source-map": "0.4.4" }, "dependencies": { @@ -8648,11 +9890,32 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, + "set-getter": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz", + "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=", + "dev": true, + "requires": { + "to-object-path": "0.3.0" + } + }, "set-immediate-shim": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" }, + "set-value": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", + "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "split-string": "3.1.0" + } + }, "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -8740,6 +10003,118 @@ "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", "dev": true }, + "snapdragon": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.1.tgz", + "integrity": "sha1-4StUh/re0+PeoKyR6UAL91tAE3A=", + "dev": true, + "requires": { + "base": "0.11.2", + "debug": "2.6.8", + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "map-cache": "0.2.2", + "source-map": "0.5.6", + "source-map-resolve": "0.5.1", + "use": "2.0.2" + }, + "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.6" + } + }, + "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.2.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.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.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 + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "1.0.0", + "isobject": "3.0.1", + "snapdragon-util": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", @@ -8987,6 +10362,19 @@ } } }, + "source-map-resolve": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", + "integrity": "sha512-0KW2wvzfxm8NCTb30z0LMNyPqWCdDGE2viwzUaucqJdkTRXtZiSY3I+2A6nVAjmdOy0I4gU8DwnVVGsk9jvP2A==", + "dev": true, + "requires": { + "atob": "2.0.3", + "decode-uri-component": "0.2.0", + "resolve-url": "0.2.1", + "source-map-url": "0.4.0", + "urix": "0.1.0" + } + }, "source-map-support": { "version": "0.4.15", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", @@ -8996,6 +10384,12 @@ "source-map": "0.5.6" } }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, "spdx-correct": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", @@ -9041,6 +10435,36 @@ "wbuf": "1.7.2" } }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "3.0.2" + }, + "dependencies": { + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "1.0.0", + "is-extendable": "1.0.1" + } + }, + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "2.0.4" + } + } + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -9072,14 +10496,92 @@ } }, "ssri": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.0.0.tgz", - "integrity": "sha512-728D4yoQcQm1ooZvSbywLkV1RjfITZXh0oWrhM/lnsx3nAHx7LsRGJWB/YyvoceAYRq98xqbstiN4JBv1/wNHg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.1.0.tgz", + "integrity": "sha512-TevC8fgxQKTfQ1nWtM9GNzr3q5rrHNntG9CDMH1k3QhSZI6Kb+NbjLRs8oPFZa2Hgo7zoekL+UTvoEk7tsbjQg==", "dev": true, "requires": { "safe-buffer": "5.1.1" } }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "object-copy": "0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "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.2.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.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.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 + } + } + }, "statuses": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", @@ -9248,12 +10750,6 @@ "path-is-absolute": "1.0.1" } }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, "sax": { "version": "0.5.8", "resolved": "https://registry.npmjs.org/sax/-/sax-0.5.8.tgz", @@ -9318,18 +10814,9 @@ "dev": true, "optional": true, "requires": { - "block-stream": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "block-stream": "0.0.9", "fstream": "1.0.11", "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "optional": true - } } }, "through": { @@ -9392,6 +10879,115 @@ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "to-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.1.tgz", + "integrity": "sha1-FTWL7kosg712N3uh3ASdDxiDeq4=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "extend-shallow": "2.0.1", + "regex-not": "1.0.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "0.1.6" + } + }, + "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.2.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.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.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 + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "3.0.0", + "repeat-string": "1.6.1" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + } + } + }, "toposort": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.6.tgz", @@ -9447,13 +11043,6 @@ "once": "1.4.0", "path-is-absolute": "1.0.1" } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true, - "optional": true } } }, @@ -9654,9 +11243,9 @@ "dev": true }, "typescript": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", - "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.5.3.tgz", + "integrity": "sha512-ptLSQs2S4QuS6/OD1eAKG+S5G8QQtrU5RT32JULdZQtM1L3WTi34Wsu48Yndzi8xsObRAB9RPt/KhA9wlpEF6w==", "dev": true }, "uglify-js": { @@ -9719,6 +11308,32 @@ "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", "dev": true }, + "union-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", + "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", + "dev": true, + "requires": { + "arr-union": "3.1.0", + "get-value": "2.0.6", + "is-extendable": "0.1.1", + "set-value": "0.4.3" + }, + "dependencies": { + "set-value": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", + "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", + "dev": true, + "requires": { + "extend-shallow": "2.0.1", + "is-extendable": "0.1.1", + "is-plain-object": "2.0.4", + "to-object-path": "0.3.0" + } + } + } + }, "uniq": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", @@ -9769,12 +11384,64 @@ "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "0.3.1", + "isobject": "3.0.1" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "2.0.6", + "has-values": "0.1.4", + "isobject": "2.1.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "upper-case": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", "dev": true }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -9826,6 +11493,100 @@ } } }, + "use": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/use/-/use-2.0.2.tgz", + "integrity": "sha1-riig1y+TvyJCKhii43mZMRLeyOg=", + "dev": true, + "requires": { + "define-property": "0.2.5", + "isobject": "3.0.1", + "lazy-cache": "2.0.2" + }, + "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.6" + } + }, + "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.2.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.2.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "0.1.6", + "is-data-descriptor": "0.1.4", + "kind-of": "5.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "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 + }, + "lazy-cache": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz", + "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=", + "dev": true, + "requires": { + "set-getter": "0.1.0" + } + } + } + }, "user-home": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", @@ -10382,9 +12143,9 @@ "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" }, "xxhashjs": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.1.tgz", - "integrity": "sha1-m76b6JYUKXbfo0wGGy0GjEPTDeA=", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", "dev": true, "requires": { "cuint": "0.2.2" diff --git a/package.json b/package.json index c0f2c8b..4439085 100644 --- a/package.json +++ b/package.json @@ -29,14 +29,19 @@ "@angular/router": "5.2.0", "@angular/upgrade": "5.2.0", "@types/moment": "2.13.0", + "angular-scrollable-table": "^1.1.2", "chart.js": "2.7.1", "core-js": "2.5.1", "js-marker-clusterer": "1.0.0", "moment": "^2.19.2", "ng2-charts": "1.6.0", + "ng2-expanding-table": "^1.5.2", "ng2-validation-manager": "0.5.3", "ngx-bootstrap": "2.0.0-beta.8", + "ngx-order-pipe": "^1.1.2", "ngx-pagination": "3.0.3", + "ngx-pipes": "^2.1.0", + "node": "^9.4.0", "rxjs": "5.5.6", "ts-helpers": "1.1.2", "webpack": "3.8.1", @@ -44,7 +49,8 @@ "zone.js": "0.8.18" }, "devDependencies": { - "@angular/cli": "1.6.4", + "@angular-devkit/schematics": "0.0.48", + "@angular/cli": "^1.6.6", "@angular/compiler-cli": "5.2.0", "@types/jasmine": "2.8.2", "@types/jasminewd2": "2.0.3", @@ -61,6 +67,6 @@ "protractor": "5.2.0", "ts-node": "3.3.0", "tslint": "5.8.0", - "typescript": "2.6.x" + "typescript": "^2.5.3" } } diff --git a/src/app/_guards/_interfaces/chart-data.ts b/src/app/_guards/_interfaces/chart-data.ts new file mode 100644 index 0000000..747f9a2 --- /dev/null +++ b/src/app/_guards/_interfaces/chart-data.ts @@ -0,0 +1,4 @@ +export interface ChartData { + data: Array; + label: string; +} diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 0f257e7..11f7ff2 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -25,6 +25,9 @@ import { CustGraphsService } from './providers/cust-graphs.service'; import { OrgSnippetsService } from './providers/org-snippets.service'; import { CustSnippetsService } from './providers/cust-snippets.service'; import { CustPiesService } from './providers/cust-pies.service'; +import { MedalsService } from './providers/medals.service'; +import { HeroPointsSnippetsService } from './providers/hero-points-snippets.service'; +import { HeroPointsGraphService } from './providers/hero-points-graph.service'; // Layouts import { FullLayoutComponent } from './layouts/full-layout.component'; @@ -38,11 +41,15 @@ import { P500Component } from './pages/500.component'; import { AuthModule } from './auth/auth.module'; import { DashboardModule } from './dashboard/dashboard.module'; +// Pipes +import { NgPipesModule } from 'ngx-pipes'; + @NgModule({ imports: [ BrowserModule, HttpClientModule, NgxPaginationModule, + NgPipesModule, BsDropdownModule.forRoot(), TabsModule.forRoot(), AuthModule, @@ -70,12 +77,18 @@ import { DashboardModule } from './dashboard/dashboard.module'; OrgSnippetsService, CustGraphsService, CustSnippetsService, + HeroPointsSnippetsService, + MedalsService, CustPiesService, + HeroPointsGraphService, { provide: LocationStrategy, useClass: HashLocationStrategy } ], + exports: [ + NgPipesModule, + ], bootstrap: [ AppComponent ] }) export class AppModule { } diff --git a/src/app/dashboard/dashboard-customer.component.html b/src/app/dashboard/dashboard-customer.component.html index e8019a4..809bac1 100644 --- a/src/app/dashboard/dashboard-customer.component.html +++ b/src/app/dashboard/dashboard-customer.component.html @@ -3,10 +3,10 @@
+ [graphName]="widget.name" + [graphTitle]="widget.title" + [graphIcon]="widget.icon" + [dataType]="widget.dataType">
diff --git a/src/app/dashboard/dashboard.module.ts b/src/app/dashboard/dashboard.module.ts index 2e47f80..1041621 100644 --- a/src/app/dashboard/dashboard.module.ts +++ b/src/app/dashboard/dashboard.module.ts @@ -21,10 +21,13 @@ import { PayrollLogComponent } from './payroll-log.component'; import { LeaderboardComponent } from './leaderboard.component'; import { MapComponent } from './map.component'; import { TrailMapComponent } from './trail-map.component'; +import { HeroPointsComponent } from './hero-points.component'; import { GraphWidget } from '../widgets/graph-widget.component'; import { OrgBarSnippetComponent } from '../snippets/org-snippet-bar.component'; import { CustBarSnippetComponent } from '../snippets/cust-snippet-bar.component'; +import { HeroPointsSnippetBarComponent } from '../snippets/hero-points-snippet-bar.component'; +import { HeroPointsGraphWidget } from '../widgets/hero-points-graph-widget.component'; import { GraphPanel } from '../panels/graph-panel.component'; import { PiePanel } from '../panels/pie-panel.component'; @@ -38,6 +41,9 @@ import { LeaderboardResultComponent } from '../shared/leaderboard-result.compone // API key env variable import import { environment } from '../../environments/environment'; +// Pipes +import { NgPipesModule } from 'ngx-pipes'; + @NgModule({ imports: [ // Angular imports @@ -53,6 +59,7 @@ import { environment } from '../../environments/environment'; NgxPaginationModule, DashboardRoutingModule, ModalModule.forRoot(), + NgPipesModule, ], declarations: [ DashboardComponent, @@ -74,8 +81,11 @@ import { environment } from '../../environments/environment'; GraphWidget, OrgBarSnippetComponent, CustBarSnippetComponent, + HeroPointsSnippetBarComponent, + HeroPointsGraphWidget, GraphPanel, PiePanel, + HeroPointsComponent, ], providers: [ CurrencyPipe, diff --git a/src/app/dashboard/dashboard.routing.ts b/src/app/dashboard/dashboard.routing.ts index 6505f9a..d222386 100644 --- a/src/app/dashboard/dashboard.routing.ts +++ b/src/app/dashboard/dashboard.routing.ts @@ -17,6 +17,7 @@ import { PayrollLogComponent } from './payroll-log.component'; import { LeaderboardComponent } from './leaderboard.component'; import { MapComponent } from './map.component'; import { TrailMapComponent } from './trail-map.component'; +import { HeroPointsComponent } from './hero-points.component'; // Using child path to allow for FullLayout theming const routes: Routes = [ @@ -84,6 +85,11 @@ const routes: Routes = [ path: 'feedback', component: FeedbackComponent, data: { title: 'Give Feedback' }, + }, + { + path: 'hero-points', + component: HeroPointsComponent, + data: { title: 'Hero Points' } } ], } diff --git a/src/app/dashboard/hero-points.component.html b/src/app/dashboard/hero-points.component.html new file mode 100644 index 0000000..c4e01f9 --- /dev/null +++ b/src/app/dashboard/hero-points.component.html @@ -0,0 +1,254 @@ +
+ +
+
+
+ + +
+
+
+
+
+
Points Gain by Week
+
+
+
+
    +
  • + This Week + {{ heroPointsStats.this_week }} ({{ heroPointsStats.this_week / heroPointsStats.max | percent:'1.0-0' }}) +
    +
    +
    +
    +
    +
  • +
  • + Last Week + {{ heroPointsStats.last_week }} ({{ heroPointsStats.last_week / heroPointsStats.max | percent:'1.0-0' }}) +
    +
    +
    +
    +
    +
  • +
  • + Week Maximum + {{ heroPointsStats.max }} ({{ heroPointsStats.max / heroPointsStats.max | percent:'1.0-0' }}) +
    +
    +
    +
    +
    +
  • +
  • + Weekly Average + {{ heroPointsStats.avg }} ({{ heroPointsStats.avg / heroPointsStats.max | percent:'1.0-0' }}) +
    +
    +
    +
    +
    +
  • +
+
+
+
+
+
+
+ + + + + + + + + + + + + + + +
RankNameHero Points
{{ i + 1 + (paginateLeadConfig.itemsPerPage * paginateLeadConfig.currentPage) - paginateLeadConfig.itemsPerPage }} {{ user.displayName }} {{ user.heroPoints }}
+ + + +
+
+ No Leaderboard available. +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MedalDescription
{{(medals | keys)[groupIndex]}}Click to collapse-{{(group[0] | values | filterBy: ['awarded']: 'true' | pluck: 'awarded').length}}/{{(group[0] | values | filterBy: ['awarded']).length}}
{{(medals | keys)[groupIndex]}}Click to expand+{{(group[0] | values | filterBy: ['awarded']: 'true' | pluck: 'awarded').length}}/{{(group[0] | values | filterBy: ['awarded']).length}}
{{(medals | keys)[groupIndex]}} {{thresholdIndex + 1}}DESCRIPTION{{threshold.threshold}}/{{threshold.threshold}} {{group[0].total}}/{{threshold.threshold}}
{{(medals | keys)[groupIndex]}} {{thresholdIndex + 1}}DESCRIPTION{{group[0].total}}/{{threshold.threshold}}
{{(medals | keys)[groupIndex]}}DESCRIPTION{{group[0].total}}/{{threshold.threshold}}
{{org.name}}Click to collapse-{{org.count}}/{{org.threshold}}
{{org.name}}Click to expand+{{org.count}}/{{org.threshold}}
{{(org | keys)[groupIndex]}}Click to collapse-{{(group[0] | values | filterBy: ['awarded']: 'true' | pluck: 'awarded').length}}/{{(group[0] | values | filterBy: ['awarded']).length}}
{{(org | keys)[groupIndex]}}Click to expand+{{(group[0] | values | filterBy: ['awarded']: 'true' | pluck: 'awarded').length}}/{{(group[0] | values | filterBy: ['awarded']).length}}
{{(org | keys)[groupIndex]}} {{thresholdIndex + 1}}DESCRIPTION{{threshold.threshold}}/{{threshold.threshold}}{{group[0].total}}/{{threshold.threshold}}
{{(org | keys)[groupIndex]}} {{thresholdIndex + 1}}DESCRIPTION{{group[0].total}}/{{threshold.threshold}}
{{(org | keys)[groupIndex]}}DESCRIPTION{{group[0].total}}/{{threshold.threshold}}
+
+
+ No Leaderboard available. +
+
+
+
diff --git a/src/app/dashboard/hero-points.component.ts b/src/app/dashboard/hero-points.component.ts new file mode 100644 index 0000000..b101630 --- /dev/null +++ b/src/app/dashboard/hero-points.component.ts @@ -0,0 +1,2042 @@ +import { Component, OnInit, Input, Output, EventEmitter, NgModule } from '@angular/core'; +import { ApiService } from '../providers/api-service'; +import { PaginationInstance } from 'ngx-pagination'; +import { Router } from '@angular/router'; +import { GraphWidget } from '../widgets/graph-widget.component'; +import { CustBarSnippetComponent } from '../snippets/cust-snippet-bar.component'; +//import { HeroPointsSnippetBarComponent } from '../snippets/hero-points-snippet-bar.component'; +import { DataType } from '../shared/data-types.enum'; + +import * as moment from 'moment'; +import 'rxjs/add/operator/map'; + +// import Services +import { CustSnippetsService } from '../providers/cust-snippets.service'; +import { MedalsService } from '../providers/medals.service'; +import { HeroPointsSnippetsService } from '../providers/hero-points-snippets.service'; + +// Pipes +import { KeysPipe } from 'ngx-pipes'; +import { FilterByPipe} from 'ngx-pipes'; +import { ValuesPipe } from 'ngx-pipes'; +import { PluckPipe } from 'ngx-pipes'; + +@Component({ + templateUrl: './hero-points.component.html', + + //ngx Pipes + providers: [ + KeysPipe, + FilterByPipe, + ValuesPipe, + PluckPipe, + HeroPointsSnippetsService, + ] +}) + + + +export class HeroPointsComponent implements OnInit { + + order: string = 'heroPoints'; + + public globalMedalList = [{ + group_name: [{ + threshold: { + awarded: false, + awarded_at: null, + points: 0, + threshold: 0, + }, + total: 0, + }], + }]; + + public organisationMedalList = [{ + org_id: [{ + group_name: [{ + threshold: { + awarded: false, + awarded_at: null, + points: 0, + threshold: 0, + }, + total: 0, + }], + name: '', + count: null, + threshold: null, + }], + }]; + + // Hero points stats + public heroPointsStats = { + this_week: 0, + last_week: 0, + max: 0, + sum: 0, + count: 0, + avg: 0, + }; + + // Gets list of transactions + public paginateConfig: PaginationInstance = { + id: 'transpaginate', + itemsPerPage: 10, + currentPage: 1, + totalItems: 0, + }; + + // Widgets to build graphs for data + public widgetList = [ + { + type: 'graph', + name: 'hero_points_last_week', + icon: 'icon-trophy', + title: 'Hero Points Gained Last Week', + }, + ]; + + constructor( + private api: ApiService, + private medalsService: MedalsService, + private keysPipe: KeysPipe, + private filterByPipe: FilterByPipe, + private valuesPipe: ValuesPipe, + private pluckPipe: PluckPipe, + private heroPointsSnippetsService: HeroPointsSnippetsService, + ) { + this.api.customerStats().subscribe( + result => { + //this.setWeekPurchaseList(result.weeks); + }, + error => { + console.log('Retrieval Error'); + console.log( error._body ); + } + ); + } + + public heroPointsConfig = { + totalPoints: 0, + lastTransactionPoints: 0, + totalTransactions: 0, + localMultiplier: 1, + fairMultiplier: 3, + }; + + ngOnInit(): void { + this.medalsService.getMedals() + .subscribe( + result => { + this.setGlobalMedalList(result.global), + this.setOrganisationMedalList(result.organisation) + } + ); + + this.heroPointsSnippetsService.getHeroPointsSnippets() + .subscribe( + result => { + this.heroPointsStats.this_week = result.widget_progress.this_week; + this.heroPointsStats.last_week = result.widget_progress.last_week; + this.heroPointsStats.max = result.widget_progress.max; + this.heroPointsStats.sum = result.widget_progress.sum; + this.heroPointsStats.count = result.widget_progress.count; + this.heroPointsStats.avg = result.widget_progress.sum / result.widget_progress.count; + } + ); + }; + + public setGlobalMedalList( data:any ){ + this.globalMedalList = [ + { + group_name: [{ + threshold: { + awarded: data.group_name.threshold.awarded, + awarded_at: data.group_name.threshold.awarded_at, + points: data.group_name.threshold.points, + threshold: data.group_name.threshold.threshold, + }, + total: data.group_name.total, + }], + }] + }; + + public setOrganisationMedalList( data: any ){ + this.organisationMedalList = [{ + org_id: [{ + group_name: [{ + threshold: { + awarded: data.org_id.group_name.threshold.awarded, + awarded_at: data.org_id.group_name.threshold.awarded_at, + points: data.org_id.group_name.threshold.points, + threshold: data.org_id.group_name.threshold.threshold, + }, + total: data.org_id.group_name.total, + }], + name: data.org_id.name, + count: (this.pluckPipe.transform(this.filterByPipe.transform(this.valuesPipe.transform(data.org_id.group_name), ['awarded'], true), 'awarded')).length, + threshold: (this.filterByPipe.transform(this.valuesPipe.transform(data.org_id.group_name), ['awarded'], true)).length, + }], + }] + }; + + public paginateLeadConfig: PaginationInstance = { + id: 'custom', + itemsPerPage: 8, + currentPage: 1 + }; + + public userList = [ + { + "userId": 1, + "name": "Test User", + "displayName": "Testy", + "heroPoints": 35080 + }, + { + "userId": 2, + "name": "Rebekah Pugh", + "displayName": "Rebekah", + "heroPoints": 31973 + }, + { + "userId": 3, + "name": "Sybil Hutchinson", + "displayName": "Sybil", + "heroPoints": 29291 + }, + { + "userId": 4, + "name": "Tara Cleveland", + "displayName": "Tara", + "heroPoints": 10873 + }, + { + "userId": 5, + "name": "Amber Hutchinson", + "displayName": "Amber", + "heroPoints": 42679 + }, + { + "userId": 6, + "name": "Tamekah Fuller", + "displayName": "Tamekah", + "heroPoints": 30048 + }, + { + "userId": 7, + "name": "Belle Benton", + "displayName": "Belle", + "heroPoints": 22014 + }, + { + "userId": 8, + "name": "Nash Chang", + "displayName": "Nash", + "heroPoints": 35414 + }, + { + "userId": 9, + "name": "Hedley Stafford", + "displayName": "Hedley", + "heroPoints": 41201 + }, + { + "userId": 10, + "name": "Mia Bowen", + "displayName": "Mia", + "heroPoints": 7454 + }, + { + "userId": 11, + "name": "Candace Short", + "displayName": "Candace", + "heroPoints": 5163 + }, + { + "userId": 12, + "name": "Germaine Leach", + "displayName": "Germaine", + "heroPoints": 15311 + }, + { + "userId": 13, + "name": "Hayden Britt", + "displayName": "Hayden", + "heroPoints": 22962 + }, + { + "userId": 14, + "name": "Curran Reynolds", + "displayName": "Curran", + "heroPoints": 20994 + }, + { + "userId": 15, + "name": "Orlando Yang", + "displayName": "Orlando", + "heroPoints": 37064 + } + ]; + + public organisationList = [ + { + "organisationId": 1, + "name": "Test SuperMarket", + "fairRating": 0.4, + "location": "Market Street", + "sector": 1 + }, + { + "organisationId": 2, + "name": "Local Cornershop", + "fairRating": 2, + "location": "South Road", + "sector": 1 + }, + { + "organisationId": 3, + "name": "Local Butchers", + "fairRating": 2.8, + "location": "Bowerham Road", + "sector": 1 + }, + { + "organisationId": 4, + "name": "Coffee Franchise", + "fairRating": 0.8, + "location": "Penny Street", + "sector": 1 + }, + { + "organisationId": 5, + "name": "Local Cafe", + "fairRating": 2.6, + "location": "Dalton Square", + "sector": 1 + } + ]; + + public medalList = [ + { + "medalId": 1, + "medalGroupId": 0, + "name": "keen_shopper_1", + "title": "Keen Shopper", + "description": "Add 1 transaction to your account", + "trackedStat": "transactions.transactionId + 1", + "valueRequired": 1, + "reward": 125, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 2, + "medalGroupId": 0, + "name": "keen_shopper_2", + "title": "Keen Shopper II", + "description": "Add 5 transactions to your account", + "trackedStat": "transactions.transactionId + 1", + "valueRequired": 5, + "reward": 1000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 3, + "medalGroupId": 0, + "name": "keen_shopper_3", + "title": "Keen Shopper III", + "description": "Add 25 transactions to your account", + "trackedStat": "transactions.transactionId + 1", + "valueRequired": 25, + "reward": 2500, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 4, + "medalGroupId": 0, + "name": "keen_shopper_4", + "title": "Keen Shopper IV", + "description": "Add 100 transactions to your account", + "trackedStat": "transactions.transactionId + 1", + "valueRequired": 100, + "reward": 5000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 5, + "medalGroupId": 0, + "name": "keen_shopper_5", + "title": "Keen Shopper V", + "description": "Add 1000 transactions to your account", + "trackedStat": "transactions.transactionId + 1", + "valueRequired": 1000, + "reward": 10000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 6, + "medalGroupId": 1, + "name": "fair_tradesman_1", + "title": "Fair Tradesman", + "description": "Earn 1 fair rating of 2.5 or more", + "trackedStat": "transactions.fairRating", + "valueRequired": 1, + "reward": 125, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 7, + "medalGroupId": 1, + "name": "fair_tradesman_2", + "title": "Fair Tradesman II", + "description": "Earn 5 fair ratings of 2.5 or more", + "trackedStat": "transactions.fairRating", + "valueRequired": 5, + "reward": 1000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 8, + "medalGroupId": 1, + "name": "fair_tradesman_3", + "title": "Fair Tradesman III", + "description": "Earn 25 fair ratings of 2.5 or more", + "trackedStat": "transactions.fairRating", + "valueRequired": 25, + "reward": 2500, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 9, + "medalGroupId": 1, + "name": "fair_tradesman_4", + "title": "Fair Tradesman IV", + "description": "Earn 100 fair ratings of 2.5 or more", + "trackedStat": "transactions.fairRating", + "valueRequired": 100, + "reward": 5000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 10, + "medalGroupId": 1, + "name": "fair_tradesman_5", + "title": "Fair Tradesman V", + "description": "Earn 1000 fair ratings of 2.5 or more", + "trackedStat": "transactions.fairRating", + "valueRequired": 1000, + "reward": 10000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 11, + "medalGroupId": 2, + "name": "avid_voter_1", + "title": "Avid Voter", + "description": "Vote 1 time", + "trackedStat": "user.timesVoted", + "valueRequired": 1, + "reward": 100, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 12, + "medalGroupId": 2, + "name": "avid_voter_2", + "title": "Avid Voter II", + "description": "Vote 5 times", + "trackedStat": "user.timesVoted", + "valueRequired": 5, + "reward": 500, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 13, + "medalGroupId": 2, + "name": "avid_voter_3", + "title": "Avid Voter III", + "description": "Vote 25 times", + "trackedStat": "user.timesVoted", + "valueRequired": 25, + "reward": 2500, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 14, + "medalGroupId": 2, + "name": "avid_voter_4", + "title": "Avid Voter IV", + "description": "Vote 50 times", + "trackedStat": "user.timesVoted", + "valueRequired": 50, + "reward": 5000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 15, + "medalGroupId": 2, + "name": "avid_voter_5", + "title": "Avid Voter V", + "description": "Vote 100 times", + "trackedStat": "user.timesVoted", + "valueRequired": 100, + "reward": 10000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 16, + "medalGroupId": 3, + "name": "local_loyalist_1", + "title": "Local Loyalist", + "description": "Earn 1 local score of 0.8 or more", + "trackedStat": "transations.localScore", + "valueRequired": 1, + "reward": 125, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 17, + "medalGroupId": 3, + "name": "local_loyalist_2", + "title": "Local Loyalist II", + "description": "Earn 5 local scores of 0.8 or more", + "trackedStat": "transations.localScore", + "valueRequired": 5, + "reward": 1000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 18, + "medalGroupId": 3, + "name": "local_loyalist_3", + "title": "Local Loyalist III", + "description": "Earn 25 local scores of 0.8 or more", + "trackedStat": "transations.localScore", + "valueRequired": 25, + "reward": 2500, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 19, + "medalGroupId": 3, + "name": "local_loyalist_4", + "title": "Local Loyalist IV", + "description": "Earn 100 local scores of 0.8 or more", + "trackedStat": "transations.localScore", + "valueRequired": 100, + "reward": 5000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 20, + "medalGroupId": 3, + "name": "local_loyalist_5", + "title": "Local Loyalist V", + "description": "Earn 1000 local scores of 0.8 or more", + "trackedStat": "transations.localScore", + "valueRequired": 1000, + "reward": 10000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 21, + "medalGroupId": 4, + "name": "eager_explorer_1", + "title": "Eager Explorer", + "description": "Earn 1 local score of 0.2 or less and a fair rating of 2 or more", + "trackedStat": "transations.localScore + transactions.fairRating", + "valueRequired": 1, + "reward": 100, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 22, + "medalGroupId": 4, + "name": "eager_explorer_2", + "title": "Eager Explorer II", + "description": "Earn 5 local scores of 0.2 or less and a fair rating of 2 or more", + "trackedStat": "transations.localScore + transactions.fairRating", + "valueRequired": 5, + "reward": 500, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 23, + "medalGroupId": 4, + "name": "eager_explorer_3", + "title": "Eager Explorer III", + "description": "Earn 20 local scores of 0.2 or less and a fair rating of 2 or more", + "trackedStat": "transations.localScore + transactions.fairRating", + "valueRequired": 20, + "reward": 1000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 24, + "medalGroupId": 4, + "name": "eager_explorer_4", + "title": "Eager Explorer IV", + "description": "Earn 50 local scores of 0.2 or less and a fair rating of 2 or more", + "trackedStat": "transations.localScore + transactions.fairRating", + "valueRequired": 50, + "reward": 2500, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 25, + "medalGroupId": 4, + "name": "eager_explorer_5", + "title": "Eager Explorer V", + "description": "Earn 100 local scores of 0.2 or less and a fair rating of 2 or more", + "trackedStat": "transations.localScore + transactions.fairRating", + "valueRequired": 100, + "reward": 5000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 26, + "medalGroupId": 5, + "name": "shopaholic", + "title": "Shopaholic", + "description": "Visit 5 different stores in one day", + "trackedStat": "transactions.organisationId + transactions.time", + "valueRequired": 5, + "reward": 2500, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 27, + "medalGroupId": 6, + "name": "completionist_1", + "title": "Completionist", + "description": "Earn all medals for an individual store 1 time", + "trackedStat": "user.storesCompleted", + "valueRequired": 1, + "reward": 5000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 28, + "medalGroupId": 6, + "name": "completionist_2", + "title": "Completionist II", + "description": "Earn all medals for an individual store 3 times", + "trackedStat": "user.storesCompleted", + "valueRequired": 3, + "reward": 10000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 29, + "medalGroupId": 6, + "name": "completionist_3", + "title": "Completionist III", + "description": "Earn all medals for an individual store 10 times", + "trackedStat": "user.storesCompleted", + "valueRequired": 10, + "reward": 25000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 30, + "medalGroupId": 6, + "name": "completionist_4", + "title": "Completionist IV", + "description": "Earn all medals for an individual store 25 times", + "trackedStat": "user.storesCompleted", + "valueRequired": 25, + "reward": 50000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 31, + "medalGroupId": 6, + "name": "completionist_5", + "title": "Completionist V", + "description": "Earn all medals for an individual store 50 times", + "trackedStat": "user.storesCompleted", + "valueRequired": 50, + "reward": 100000, + "unlocked": "FALSE", + "medalType": "global" + }, + { + "medalId": 32, + "medalGroupId": 7, + "name": "loyal_customer_1", + "title": "Loyal Customer", + "description": "Visit this store 2 times", + "trackedStat": "transactions.organisationId", + "valueRequired": 2, + "reward": 100, + "unlocked": "FALSE", + "medalType": "organisation" + }, + { + "medalId": 33, + "medalGroupId": 7, + "name": "loyal_customer_2", + "title": "Loyal Customer II", + "description": "Visit this store 5 times", + "trackedStat": "transactions.organisationId", + "valueRequired": 5, + "reward": 500, + "unlocked": "FALSE", + "medalType": "organisation" + }, + { + "medalId": 34, + "medalGroupId": 7, + "name": "loyal_customer_3", + "title": "Loyal Customer III", + "description": "Visit this store 10 times", + "trackedStat": "transactions.organisationId", + "valueRequired": 10, + "reward": 1000, + "unlocked": "FALSE", + "medalType": "organisation" + }, + { + "medalId": 35, + "medalGroupId": 7, + "name": "loyal_customer_4", + "title": "Loyal Customer IV", + "description": "Visit this store 25 times", + "trackedStat": "transactions.organisationId", + "valueRequired": 25, + "reward": 2500, + "unlocked": "FALSE", + "medalType": "organisation" + }, + { + "medalId": 36, + "medalGroupId": 7, + "name": "loyal_customer_5", + "title": "Loyal Customer V", + "description": "Visit this store 50 times", + "trackedStat": "transactions.organisationId", + "valueRequired": 50, + "reward": 5000, + "unlocked": "FALSE", + "medalType": "organisation" + }, + { + "medalId": 37, + "medalGroupId": 8, + "name": "opinionated", + "title": "Opinionated", + "description": "Vote on this store", + "trackedStat": "transactions.organisationId + votes.organisationId", + "valueRequired": 1, + "reward": 100, + "unlocked": "FALSE", + "medalType": "organisation" + }, + { + "medalId": 38, + "medalGroupId": 9, + "name": "devoted_customer", + "title": "Devoted Customer", + "description": "Visit this store 5 times in a week", + "trackedStat": "transactions.organisationId + transactions.time", + "valueRequired": 5, + "reward": 2500, + "unlocked": "FALSE", + "medalType": "organisation" + }, + { + "medalId": 39, + "medalGroupId": 10, + "name": "repeat_customer", + "title": "Repeat Customer", + "description": "Visit this store twice in one day", + "trackedStat": "transactions.organisationId + transactions.time", + "valueRequired": 2, + "reward": 2500, + "unlocked": "FALSE", + "medalType": "organisation" + } + ]; + + public transactionList = [ + { + "transactionId": 0, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£34.43", + "time": "2017-11-14 0:35:31", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 0 + }, + { + "transactionId": 1, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£21.96", + "time": "2017-11-14 10:43:02", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 0 + }, + { + "transactionId": 2, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£18.55", + "time": "2017-11-17 21:37:38", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 0 + }, + { + "transactionId": 3, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£5.29", + "time": "2017-11-18 1:59:55", + "fairRating": 2.8, + "localRating": 0.4, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 0 + }, + { + "transactionId": 4, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£24.24", + "time": "2017-11-18 9:39:41", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 0 + }, + { + "transactionId": 5, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£15.33", + "time": "2017-11-19 2:09:57", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 1 + }, + { + "transactionId": 6, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£19.00", + "time": "2017-11-19 7:04:01", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 1 + }, + { + "transactionId": 7, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£24.05", + "time": "2017-11-19 22:11:41", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 1 + }, + { + "transactionId": 8, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£5.92", + "time": "2017-11-19 22:27:28", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 1 + }, + { + "transactionId": 9, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£26.74", + "time": "2017-11-20 12:03:54", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 1 + }, + { + "transactionId": 10, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£9.97", + "time": "2017-11-21 11:12:22", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 1 + }, + { + "transactionId": 11, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£31.83", + "time": "2017-11-21 22:59:30", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 1 + }, + { + "transactionId": 12, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£29.82", + "time": "2017-11-22 18:23:44", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 1 + }, + { + "transactionId": 13, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£11.61", + "time": "2017-11-22 18:26:51", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 1 + }, + { + "transactionId": 14, + "organisationId": 4, + "organisationName": "Coffee Franchise", + "value": "£23.50", + "time": "2017-11-23 14:52:59", + "fairRating": 0.8, + "localRating": 0.4, + "overallRating": 1.2, + "pointsEarned": 220, + "week": 1 + }, + { + "transactionId": 15, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£25.57", + "time": "2017-11-23 21:41:42", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 1 + }, + { + "transactionId": 16, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£11.80", + "time": "2017-11-24 11:18:53", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 1 + }, + { + "transactionId": 17, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£16.23", + "time": "2017-11-25 11:42:49", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 1 + }, + { + "transactionId": 18, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£4.98", + "time": "2017-11-26 15:48:24", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 2 + }, + { + "transactionId": 19, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£27.32", + "time": "2017-11-29 3:34:22", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 2 + }, + { + "transactionId": 20, + "organisationId": 4, + "organisationName": "Coffee Franchise", + "value": "£11.97", + "time": "2017-11-29 17:18:18", + "fairRating": 0.8, + "localRating": 0.4, + "overallRating": 1.2, + "pointsEarned": 220, + "week": 2 + }, + { + "transactionId": 21, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£30.43", + "time": "2017-11-30 7:02:36", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 2 + }, + { + "transactionId": 22, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£19.62", + "time": "2017-11-30 13:00:46", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 2 + }, + { + "transactionId": 23, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£10.61", + "time": "2017-11-30 17:08:44", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 2 + }, + { + "transactionId": 24, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£13.81", + "time": "2017-12-01 9:52:39", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 2 + }, + { + "transactionId": 25, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£30.78", + "time": "2017-12-01 11:17:11", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 2 + }, + { + "transactionId": 26, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£13.19", + "time": "2017-12-03 4:49:25", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 3 + }, + { + "transactionId": 27, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£13.24", + "time": "2017-12-03 17:20:18", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 3 + }, + { + "transactionId": 28, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£18.35", + "time": "2017-12-04 20:05:41", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 3 + }, + { + "transactionId": 29, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£13.88", + "time": "2017-12-05 13:27:37", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 3 + }, + { + "transactionId": 30, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£27.78", + "time": "2017-12-05 18:57:20", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 3 + }, + { + "transactionId": 31, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£27.92", + "time": "2017-12-07 0:39:35", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 3 + }, + { + "transactionId": 32, + "organisationId": 4, + "organisationName": "Coffee Franchise", + "value": "£3.43", + "time": "2017-12-07 9:44:27", + "fairRating": 0.8, + "localRating": 0.4, + "overallRating": 1.2, + "pointsEarned": 220, + "week": 3 + }, + { + "transactionId": 33, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£24.01", + "time": "2017-12-09 17:20:02", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 3 + }, + { + "transactionId": 34, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£13.08", + "time": "2017-12-10 20:44:46", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 4 + }, + { + "transactionId": 35, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£3.60", + "time": "2017-12-12 5:09:49", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 4 + }, + { + "transactionId": 36, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£7.62", + "time": "2017-12-12 19:33:24", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 4 + }, + { + "transactionId": 37, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£18.71", + "time": "2017-12-13 6:15:07", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 4 + }, + { + "transactionId": 38, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£11.61", + "time": "2017-12-15 4:22:42", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 4 + }, + { + "transactionId": 39, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£14.78", + "time": "2017-12-15 7:50:18", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 4 + }, + { + "transactionId": 40, + "organisationId": 4, + "organisationName": "Coffee Franchise", + "value": "£2.88", + "time": "2017-12-16 8:45:36", + "fairRating": 0.8, + "localRating": 0.4, + "overallRating": 1.2, + "pointsEarned": 220, + "week": 4 + }, + { + "transactionId": 41, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£4.40", + "time": "2017-12-16 11:27:55", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 4 + }, + { + "transactionId": 42, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£19.64", + "time": "2017-12-18 0:24:37", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 5 + }, + { + "transactionId": 43, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£19.66", + "time": "2017-12-19 0:11:25", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 5 + }, + { + "transactionId": 44, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£26.58", + "time": "2017-12-20 17:31:57", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 5 + }, + { + "transactionId": 45, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£16.22", + "time": "2017-12-21 3:07:22", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 5 + }, + { + "transactionId": 46, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£11.30", + "time": "2017-12-21 9:35:19", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 5 + }, + { + "transactionId": 47, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£2.62", + "time": "2017-12-21 21:07:57", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 5 + }, + { + "transactionId": 48, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£32.59", + "time": "2017-12-22 17:28:20", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 5 + }, + { + "transactionId": 49, + "organisationId": 4, + "organisationName": "Coffee Franchise", + "value": "£5.22", + "time": "2017-12-24 6:20:00", + "fairRating": 0.8, + "localRating": 0.4, + "overallRating": 1.2, + "pointsEarned": 220, + "week": 6 + }, + { + "transactionId": 50, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£31.60", + "time": "2017-12-24 8:41:32", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 6 + }, + { + "transactionId": 51, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£17.46", + "time": "2017-12-25 1:47:58", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 6 + }, + { + "transactionId": 52, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£19.18", + "time": "2017-12-25 18:19:31", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 6 + }, + { + "transactionId": 53, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£25.57", + "time": "2017-12-25 18:43:26", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 6 + }, + { + "transactionId": 54, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£17.01", + "time": "2017-12-26 1:30:14", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 6 + }, + { + "transactionId": 55, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£1.31", + "time": "2017-12-27 17:19:03", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 6 + }, + { + "transactionId": 56, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£10.20", + "time": "2017-12-27 20:45:09", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 6 + }, + { + "transactionId": 57, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£3.17", + "time": "2017-12-28 13:19:16", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 6 + }, + { + "transactionId": 58, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£25.79", + "time": "2017-12-29 4:20:22", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 6 + }, + { + "transactionId": 59, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£29.45", + "time": "2017-12-30 9:47:52", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 6 + }, + { + "transactionId": 60, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£17.21", + "time": "2017-12-30 15:10:29", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 6 + }, + { + "transactionId": 61, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£4.33", + "time": "2017-12-31 1:25:40", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 7 + }, + { + "transactionId": 62, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£17.35", + "time": "2017-12-31 22:49:31", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 7 + }, + { + "transactionId": 63, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£13.11", + "time": "2018-01-01 4:39:26", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 7 + }, + { + "transactionId": 64, + "organisationId": 4, + "organisationName": "Coffee Franchise", + "value": "£30.45", + "time": "2018-01-02 22:20:23", + "fairRating": 0.8, + "localRating": 0.4, + "overallRating": 1.2, + "pointsEarned": 220, + "week": 7 + }, + { + "transactionId": 65, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£3.97", + "time": "2018-01-03 8:12:05", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 7 + }, + { + "transactionId": 66, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£19.61", + "time": "2018-01-04 0:35:22", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 7 + }, + { + "transactionId": 67, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£11.30", + "time": "2018-01-04 7:10:27", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 7 + }, + { + "transactionId": 68, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£23.80", + "time": "2018-01-04 21:38:35", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 7 + }, + { + "transactionId": 69, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£27.67", + "time": "2018-01-05 12:32:34", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 7 + }, + { + "transactionId": 70, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£1.32", + "time": "2018-01-07 3:02:02", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 8 + }, + { + "transactionId": 71, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£16.01", + "time": "2018-01-09 17:16:18", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 8 + }, + { + "transactionId": 72, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£15.87", + "time": "2018-01-11 22:09:27", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 8 + }, + { + "transactionId": 73, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£15.28", + "time": "2018-01-14 3:47:58", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 9 + }, + { + "transactionId": 74, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£13.91", + "time": "2018-01-14 9:08:59", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 9 + }, + { + "transactionId": 75, + "organisationId": 4, + "organisationName": "Coffee Franchise", + "value": "£8.06", + "time": "2018-01-14 12:43:39", + "fairRating": 0.8, + "localRating": 0.4, + "overallRating": 1.2, + "pointsEarned": 220, + "week": 9 + }, + { + "transactionId": 76, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£16.60", + "time": "2018-01-14 16:05:22", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 9 + }, + { + "transactionId": 77, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£1.30", + "time": "2018-01-15 12:47:41", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 9 + }, + { + "transactionId": 78, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£24.63", + "time": "2018-01-15 20:34:42", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 9 + }, + { + "transactionId": 79, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£1.85", + "time": "2018-01-16 2:34:19", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 9 + }, + { + "transactionId": 80, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£2.14", + "time": "2018-01-16 3:46:23", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 9 + }, + { + "transactionId": 81, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£34.38", + "time": "2018-01-16 9:22:41", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 9 + }, + { + "transactionId": 82, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£34.16", + "time": "2018-01-16 11:02:52", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 9 + }, + { + "transactionId": 83, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£16.32", + "time": "2018-01-16 16:48:33", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 9 + }, + { + "transactionId": 84, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£0.72", + "time": "2018-01-18 6:03:58", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 9 + }, + { + "transactionId": 85, + "organisationId": 4, + "organisationName": "Coffee Franchise", + "value": "£4.87", + "time": "2018-01-18 7:42:59", + "fairRating": 0.8, + "localRating": 0.4, + "overallRating": 1.2, + "pointsEarned": 220, + "week": 9 + }, + { + "transactionId": 86, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£29.20", + "time": "2018-01-18 9:17:18", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 9 + }, + { + "transactionId": 87, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£34.66", + "time": "2018-01-18 12:41:46", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 9 + }, + { + "transactionId": 88, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£19.54", + "time": "2018-01-18 22:29:38", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 9 + }, + { + "transactionId": 89, + "organisationId": 4, + "organisationName": "Coffee Franchise", + "value": "£8.10", + "time": "2018-01-19 1:49:19", + "fairRating": 0.8, + "localRating": 0.4, + "overallRating": 1.2, + "pointsEarned": 220, + "week": 9 + }, + { + "transactionId": 90, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£14.99", + "time": "2018-01-19 16:51:14", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 9 + }, + { + "transactionId": 91, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£23.99", + "time": "2018-01-19 20:04:52", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 9 + }, + { + "transactionId": 92, + "organisationId": 4, + "organisationName": "Coffee Franchise", + "value": "£26.61", + "time": "2018-01-21 6:52:00", + "fairRating": 0.8, + "localRating": 0.4, + "overallRating": 1.2, + "pointsEarned": 220, + "week": 10 + }, + { + "transactionId": 93, + "organisationId": 3, + "organisationName": "Local Butchers", + "value": "£22.94", + "time": "2018-01-21 17:27:32", + "fairRating": 2.8, + "localRating": 0.8, + "overallRating": 3.6, + "pointsEarned": 460, + "week": 10 + }, + { + "transactionId": 94, + "organisationId": 4, + "organisationName": "Coffee Franchise", + "value": "£10.15", + "time": "2018-01-22 5:11:23", + "fairRating": 0.8, + "localRating": 0.4, + "overallRating": 1.2, + "pointsEarned": 220, + "week": 10 + }, + { + "transactionId": 95, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£5.31", + "time": "2018-01-22 7:00:23", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 10 + }, + { + "transactionId": 96, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£12.68", + "time": "2018-01-22 7:15:59", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 10 + }, + { + "transactionId": 97, + "organisationId": 1, + "organisationName": "Test SuperMarket", + "value": "£23.56", + "time": "2018-01-22 22:08:41", + "fairRating": 0.4, + "localRating": 0.2, + "overallRating": 0.6, + "pointsEarned": 160, + "week": 10 + }, + { + "transactionId": 98, + "organisationId": 2, + "organisationName": "Local Cornershop", + "value": "£30.32", + "time": "2018-01-25 11:10:56", + "fairRating": 2, + "localRating": 1, + "overallRating": 3, + "pointsEarned": 400, + "week": 10 + }, + { + "transactionId": 99, + "organisationId": 5, + "organisationName": "Local Cafe", + "value": "£8.98", + "time": "2018-01-25 11:15:23", + "fairRating": 2.6, + "localRating": 0.6, + "overallRating": 3.2, + "pointsEarned": 420, + "week": 10 + } +]; + +transactionListWeek = [ + { + "weekId": 0, + "pointsEarned": 1860 + }, + { + "weekId": 1, + "pointsEarned": 4840 + }, + { + "weekId": 2, + "pointsEarned": 2380 + }, + { + "weekId": 3, + "pointsEarned": 2940 + }, + { + "weekId": 4, + "pointsEarned": 2920 + }, + { + "weekId": 5, + "pointsEarned": 2400 + }, + { + "weekId": 6, + "pointsEarned": 4360 + }, + { + "weekId": 7, + "pointsEarned": 3400 + }, + { + "weekId": 8, + "pointsEarned": 1220 + }, + { + "weekId": 9, + "pointsEarned": 6300 + }, + { + "weekId": 10, + "pointsEarned": 2460 + } +]; + +} diff --git a/src/app/layouts/full-layout.component.html b/src/app/layouts/full-layout.component.html index 8e4d931..94ecad1 100644 --- a/src/app/layouts/full-layout.component.html +++ b/src/app/layouts/full-layout.component.html @@ -97,6 +97,14 @@ + diff --git a/src/app/providers/cust-graphs.service.ts b/src/app/providers/cust-graphs.service.ts index e03da37..e304754 100644 --- a/src/app/providers/cust-graphs.service.ts +++ b/src/app/providers/cust-graphs.service.ts @@ -9,6 +9,7 @@ export class CustGraphsService { public getGraph(name: string, data: any = {}) { data.graph = name; + //console.log(this.api.post(this.custGraphUrl, data)); return this.api.post(this.custGraphUrl, data); } } diff --git a/src/app/providers/hero-points-graph.service.ts b/src/app/providers/hero-points-graph.service.ts new file mode 100644 index 0000000..0326efa --- /dev/null +++ b/src/app/providers/hero-points-graph.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import { ApiService } from './api-service'; +import { Observable } from 'rxjs/Rx'; + +@Injectable() +export class HeroPointsGraphService { + private heroPointsGraphUrl = '/v1/user/points'; + + constructor(private api: ApiService) { } + + // This endpoint should mimic basicStats + public getHeroPointsGraph(): Observable { + return this.api.post(this.heroPointsGraphUrl); + } +} diff --git a/src/app/providers/hero-points-leaderboard.service.ts b/src/app/providers/hero-points-leaderboard.service.ts new file mode 100644 index 0000000..259ba56 --- /dev/null +++ b/src/app/providers/hero-points-leaderboard.service.ts @@ -0,0 +1,8 @@ +import { Injectable } from '@angular/core'; + +@Injectable() +export class HeroPointsLeaderboardService { + + constructor() { } + +} diff --git a/src/app/providers/hero-points-snippets.service.ts b/src/app/providers/hero-points-snippets.service.ts new file mode 100644 index 0000000..a7709d2 --- /dev/null +++ b/src/app/providers/hero-points-snippets.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import { ApiService } from './api-service'; +import { Observable } from 'rxjs/Rx'; + +@Injectable() +export class HeroPointsSnippetsService { + private heroPointsSnippetsUrl = '/v1/user/points'; + + constructor(private api: ApiService) { } + + // This endpoint should mimic basicStats + public getHeroPointsSnippets(): Observable { + return this.api.post(this.heroPointsSnippetsUrl); + } +} diff --git a/src/app/providers/medals.service.ts b/src/app/providers/medals.service.ts new file mode 100644 index 0000000..4d324be --- /dev/null +++ b/src/app/providers/medals.service.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import { ApiService } from './api-service'; +import { Observable } from 'rxjs/Rx'; + +@Injectable() +export class MedalsService { + private medalsUrl = '/v1/user/medals'; + + constructor(private api: ApiService) { } + + public getMedals(): Observable { + return this.api.post(this.medalsUrl); + //return Observable.of() + + } +} diff --git a/src/app/snippets/cust-snippet-bar.component.ts b/src/app/snippets/cust-snippet-bar.component.ts index 93ac86d..be5ee1f 100644 --- a/src/app/snippets/cust-snippet-bar.component.ts +++ b/src/app/snippets/cust-snippet-bar.component.ts @@ -5,6 +5,7 @@ import { CustSnippetsService } from '../providers/cust-snippets.service'; selector: 'snippet-bar-cust', templateUrl: 'cust-snippet-bar.component.html', }) + export class CustBarSnippetComponent implements OnInit { public userSum = 0; diff --git a/src/app/snippets/hero-points-snippet-bar.component.html b/src/app/snippets/hero-points-snippet-bar.component.html new file mode 100644 index 0000000..2c33248 --- /dev/null +++ b/src/app/snippets/hero-points-snippet-bar.component.html @@ -0,0 +1,50 @@ +
+
+
+
+
    +
  • +
    My Hero Points
    +
    {{ heroPointsSnippets.points_total | number:'1.0-0' }}
    +
  • +
+
+
+
+
+
+
+
    +
  • +
    Last Transaction Points
    +
    {{ heroPointsSnippets.point_last | number:'1.0-0' }}
    +
  • +
+
+
+
+
+
+
+
    +
  • +
    Total Transactions
    +
    {{ heroPointsSnippets.trans_count | number:'1.0-0' }}
    +
  • +
+
+
+
+
+
+
+
    +
  • +
    Average Multiplier
    +
    {{ heroPointsSnippets.avg_multi | number:'1.0-0' }}
    +
  • +
+
+
+
+
diff --git a/src/app/snippets/hero-points-snippet-bar.component.ts b/src/app/snippets/hero-points-snippet-bar.component.ts new file mode 100644 index 0000000..c264ac4 --- /dev/null +++ b/src/app/snippets/hero-points-snippet-bar.component.ts @@ -0,0 +1,34 @@ +import { Component, OnInit } from '@angular/core'; +import { HeroPointsSnippetsService } from '../providers/hero-points-snippets.service'; + +@Component({ + selector: 'snippet-bar-hero-points', + templateUrl: './hero-points-snippet-bar.component.html', +}) + +export class HeroPointsSnippetBarComponent implements OnInit { + + // Hero Points snippets + public heroPointsSnippets = { + avg_multi: 0, + point_last: 0, + points_total: 0, + trans_count: 0, + }; + + constructor( + private heroPointsSnippetsService: HeroPointsSnippetsService, + ) { } + + public ngOnInit(): void { + this.heroPointsSnippetsService.getHeroPointsSnippets() + .subscribe( + result => { + this.heroPointsSnippets.avg_multi = result.snippets.avg_multi; + this.heroPointsSnippets.point_last = result.snippets.point_last; + this.heroPointsSnippets.points_total = result.snippets.points_total; + this.heroPointsSnippets.trans_count = result.snippets.trans_count; + } + ) + } +} diff --git a/src/app/widgets/hero-points-graph-widget.component.html b/src/app/widgets/hero-points-graph-widget.component.html new file mode 100644 index 0000000..81cb895 --- /dev/null +++ b/src/app/widgets/hero-points-graph-widget.component.html @@ -0,0 +1,21 @@ +
+
+ +

{{ graphSum }}

+

{{ graphTitle }}

+
+
+ +
+
diff --git a/src/app/widgets/hero-points-graph-widget.component.ts b/src/app/widgets/hero-points-graph-widget.component.ts new file mode 100644 index 0000000..04e25da --- /dev/null +++ b/src/app/widgets/hero-points-graph-widget.component.ts @@ -0,0 +1,154 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; +import { OrgGraphsService } from '../providers/org-graphs.service'; +import { DataType } from '../shared/data-types.enum'; + +interface ChartData { + data: Array; + label: string; +} + +@Component({ + selector: 'hero-points-widget-graph', + templateUrl: 'hero-points-graph-widget.component.html', +}) +export class HeroPointsGraphWidget implements OnInit { + @Input() public graphName: string; + @Input() public graphTitle = 'Graph'; + @Input() public graphIcon = 'icon-graph'; + @Input() public dataType: DataType = DataType.number; + + @Output() public graphHover = new EventEmitter(); + @Output() public graphClick = new EventEmitter(); + + public graphSum: Number = 0; + public availableDataTypes = DataType; + + public lineChartData: Array = [ + { + data: [], + label: 'Series A' + } + ]; + public lineChartLabels: Array; + public lineChartOptions: any = { + maintainAspectRatio: false, + scales: { + xAxes: [{ + type: 'time', + time: { + unit: 'day', + displayFormats: { + day: 'MMM D', + }, + tooltipFormat: 'MMM D', + }, + gridLines: { + color: 'transparent', + zeroLineColor: 'transparent' + }, + ticks: { + fontSize: 2, + source: 'data', + fontColor: 'transparent', + } + + }], + yAxes: [{ + display: false, + ticks: { + display: false, + } + }], + }, + elements: { + line: { + borderWidth: 1 + }, + point: { + radius: 4, + hitRadius: 10, + hoverRadius: 4, + }, + }, + legend: { + display: false + }, + tooltips: { + callbacks: { + label: (tooltip, data) => { + return this.tooltipLabelCallback(tooltip, data); + }, + }, + }, + }; + public lineChartColours: Array = [ + { + backgroundColor: '#20a8d8', + borderColor: 'rgba(255,255,255,.55)' + } + ]; + public lineChartLegend = false; + public lineChartType = 'line'; + + + constructor( + private graphService: OrgGraphsService, + ) { } + + ngOnInit(): void { + if ( this.graphName == null ) { + throw new Error('Attribute \'graphName\' is required on component \'widget-graph\''); + } + if ( this.dataType === undefined ) { + // Need to do this as it may be passed in a loop with an undefined value + this.dataType = DataType.number; + } + if ( !( this.dataType in DataType ) ) { + console.warn('Unknown DataType for graph \'' + this.graphName + '\' - defaulting to number'); + } + this.graphService.getGraph(this.graphName) + .subscribe( result => this.setData(result.graph) ); + } + + private setData(data: any) { + this.setChartData(data.data); + this.setChartLabels(data.labels); + this.setChartBounds(data.bounds); + } + + private setChartBounds(data) { + this.lineChartOptions.scales.xAxes[0].time.max = data.max; + this.lineChartOptions.scales.xAxes[0].time.min = data.min; + } + + private setChartData(data: Array) { + this.lineChartData[0].data = data; + this.graphSum = data.reduce((a, b) => a + b, 0); + // Set point size based on data + if ( data.length < 15 ) { + this.lineChartOptions.elements.point.radius = 4; + this.lineChartOptions.elements.line.borderWidth = 1; + } else { + this.lineChartOptions.elements.point.radius = 2; + this.lineChartOptions.elements.line.borderWidth = 2; + } + } + + private setChartLabels(data: Array) { + this.lineChartLabels = data; + } + + // events + public chartClicked(e: any): void { + console.log(e); + } + + public chartHovered(e: any): void { + console.log(e); + } + + private tooltipLabelCallback(tooltipItem: any, data: any) { + const value = tooltipItem.yLabel; + return value || '0'; + } +} diff --git a/src/scss/_custom.scss b/src/scss/_custom.scss index fa409c6..4a956d4 100644 --- a/src/scss/_custom.scss +++ b/src/scss/_custom.scss @@ -6,8 +6,14 @@ .table-striped tbody tr:nth-of-type(odd) { background-color: #d2eef7; } + +.table-striped tbody tr:nth-of-type(even) { + background-color: #ffffff; +} + .table-hover tbody tr:hover td { background-color: $table-bg-hover; + color: #000000; } .table thead tr { @@ -15,6 +21,63 @@ color: #e8ebed; } +.header-fixed { + width: 100%; + table-layout:fixed; + display: table; +} + +.header-fixed > thead, +.header-fixed > tbody, +.header-fixed > thead > tr, +.header-fixed > tbody > tr, +.header-fixed > thead > tr > th, +.header-fixed > tbody > tr > td { + display: block; +} + +.header-fixed > tbody > tr:after, +.header-fixed > thead > tr:after { + content: ' '; + display: block; + visibility: hidden; + clear: both; +} + +.header-fixed { + + tbody { + overflow-y: auto; + height: 370px; + } +} + +tr.collapse.in { + display:table-row; +} + +.header-fixed > tbody > tr > td, +.header-fixed > thead > tr > th, +{ + //width: 33.33%; + float: left; + overflow-wrap: break-word; + + .col-1 {width: 8.33%;} + .col-2 {width: 16.66%;} + .col-3 {width: 25%;} + .col-4 {width: 33.33%;} + .col-5 {width: 41.66%;} + .col-6 {width: 50%;} + .col-7 {width: 58.33%;} + .col-8 {width: 66.66%;} + .col-9 {width: 75%;} + .col-10 {width: 83.33%;} + .col-11 {width: 91.66%;} + .col-12 {width: 100%;} +} + + // Map styling agm-map { height: 75vh; @@ -43,6 +106,23 @@ agm-map { color: #10602c; } +.number-circle-hero { + height: 10rem; + border-radius:50%; + text-align:center; + width: 10rem; + padding: 5rem 5%; + line-height: 0; + position: relative; + background: #F39C12; + color: white; + font-size: 0.875rem; +} + +.text-orange { + color: #D35400; +} + // white title font variant on type-2 as defined in _widgets.css .horizontal-bars { padding: 0;