From 4ca662c8194af83415a5038de5ed801a81419728 Mon Sep 17 00:00:00 2001 From: Jakob Fahr Date: Sun, 5 Jul 2020 15:10:01 +0200 Subject: [PATCH] Merge feature/dashboard --- package-lock.json | 1767 ++++++++++++++++- package.json | 1 + src/app/app-routing.module.ts | 5 +- src/app/app.module.ts | 6 +- src/app/dashboard/dashboard.component.css | 10 +- src/app/dashboard/dashboard.component.html | 136 +- src/app/dashboard/dashboard.component.ts | 275 ++- src/app/services/backend.service.ts | 10 + src/app/task-table/task-table.component.ts | 2 +- .../userstory-inner-table.component.css | 0 .../userstory-inner-table.component.html | 90 + .../userstory-inner-table.component.ts | 143 ++ .../userstory-table.component.html | 108 +- .../userstory-table.component.ts | 133 +- src/styles.css | 9 + 15 files changed, 2204 insertions(+), 491 deletions(-) create mode 100644 src/app/userstory-inner-table/userstory-inner-table.component.css create mode 100644 src/app/userstory-inner-table/userstory-inner-table.component.html create mode 100644 src/app/userstory-inner-table/userstory-inner-table.component.ts create mode 100644 src/styles.css diff --git a/package-lock.json b/package-lock.json index e1d2616..c802c41 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2115,6 +2115,11 @@ "through": ">=2.2.7 <3" } }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -2131,11 +2136,32 @@ "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "acorn": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.3.1.tgz", + "integrity": "sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA==" + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + }, "adm-zip": { "version": "0.4.14", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz", - "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==", - "dev": true + "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==" }, "after": { "version": "0.8.2", @@ -2195,12 +2221,45 @@ "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", "dev": true }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "requires": { + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "alphanum-sort": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, + "alter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/alter/-/alter-0.2.0.tgz", + "integrity": "sha1-x1iICGF1cgNKrmJICvJrHU0cs80=", + "requires": { + "stable": "~0.1.3" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + }, "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", @@ -2267,6 +2326,11 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "archy": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/archy/-/archy-0.0.2.tgz", + "integrity": "sha1-kQ9Dv2YUH8M1VkWXq8GJ30Sz014=" + }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -2422,6 +2486,16 @@ "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, + "ast-traverse": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ast-traverse/-/ast-traverse-0.1.1.tgz", + "integrity": "sha1-ac8rg4bxnc2hux4F1o/jWdiJfeY=" + }, + "ast-types": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.3.tgz", + "integrity": "sha512-XTZ7xGML849LkQP86sWdQzfhwbt3YwIO6MqbX9mUNYY98VKaaVZP7YNNm70IpwecbkkxmfC5IYAzOQ/2p29zRA==" + }, "ast-types-flow": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", @@ -2476,6 +2550,34 @@ "postcss-value-parser": "^4.0.2" } }, + "autoprefixer-core": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/autoprefixer-core/-/autoprefixer-core-3.1.2.tgz", + "integrity": "sha1-reXOni2dcbt//DHWlvpeh66+tjQ=", + "requires": { + "caniuse-db": "^1.0.30000006", + "postcss": "~2.2.5" + }, + "dependencies": { + "postcss": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-2.2.6.tgz", + "integrity": "sha1-wENE4kSeRYa5Vfvkp093CA2EVx8=", + "requires": { + "js-base64": "~2.1.5", + "source-map": "~0.1.40" + } + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -2617,6 +2719,11 @@ } } }, + "base62": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz", + "integrity": "sha1-e0F0wvlESXU7EcJlHAg9qEGnsIQ=" + }, "base64-arraybuffer": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", @@ -2687,6 +2794,14 @@ "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", "dev": true }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "requires": { + "inherits": "~2.0.0" + } + }, "blocking-proxy": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", @@ -2798,6 +2913,11 @@ "fill-range": "^7.0.1" } }, + "breakable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/breakable/-/breakable-1.0.0.tgz", + "integrity": "sha1-eEp5eRWjjq0nutRWtVcstLuqeME=" + }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -2954,6 +3074,23 @@ "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", "dev": true }, + "builder-autoprefixer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/builder-autoprefixer/-/builder-autoprefixer-1.0.4.tgz", + "integrity": "sha1-nNjDdqbXoXIAvYyjMbUfIwDhrHA=", + "requires": { + "autoprefixer-core": "^3.1.1" + } + }, + "builder-es6-module-to-cjs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/builder-es6-module-to-cjs/-/builder-es6-module-to-cjs-1.1.0.tgz", + "integrity": "sha1-efMpfRjEe7iLQ5R1OPoccnQnHuM=", + "requires": { + "es6-module-jstransform": "^0.1.2", + "is-module": "^1.0.0" + } + }, "builtin-modules": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", @@ -3084,6 +3221,11 @@ "lodash.uniq": "^4.5.0" } }, + "caniuse-db": { + "version": "1.0.30001091", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001091.tgz", + "integrity": "sha512-KqQjRGDTIvfxh9k3iuvV5NW5OtxxvTUeC6AQLgR5esBFlyVRaVuWHaOk/XDVeau4zs8amPzgi2BcR4ef27fGZA==" + }, "caniuse-lite": { "version": "1.0.30001066", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001066.tgz", @@ -3102,6 +3244,15 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "requires": { + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -3112,6 +3263,16 @@ "supports-color": "^5.3.0" } }, + "chanel": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chanel/-/chanel-2.2.0.tgz", + "integrity": "sha1-JlKVsouSqoIAX4Zd0VpIlMQ42Tw=", + "requires": { + "co": "*", + "generator-supported": "*", + "to-descriptor": "*" + } + }, "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", @@ -3297,6 +3458,11 @@ "shallow-clone": "^3.0.0" } }, + "co": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/co/-/co-3.1.0.tgz", + "integrity": "sha1-TqVOpaCJOBUxheFSEMaNkJK8G3g=" + }, "coa": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", @@ -3339,6 +3505,40 @@ } } }, + "cogent": { + "version": "git://github.com/timaschew/cogent.git#2246bd071392f5053a3a110024fd608a40a593ba", + "from": "git://github.com/timaschew/cogent.git#fix-redirects", + "requires": { + "debug": "*", + "generator-supported": "~0.0.1", + "netrc": "~0.1.3", + "proxy-agent": "^1.1.0", + "raw-body": "^1.1.2", + "statuses": "^1.0.2", + "write-to": "^1.0.0" + }, + "dependencies": { + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=" + }, + "iconv-lite": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.8.tgz", + "integrity": "sha1-xgGadZXyzvynAuq2lKAQvNkpjSA=" + }, + "raw-body": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.3.4.tgz", + "integrity": "sha1-zMfd/Ea3KGHN1btDPIQLcLbyf1Q=", + "requires": { + "bytes": "1.0.0", + "iconv-lite": "0.4.8" + } + } + } + }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", @@ -3400,8 +3600,7 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "commondir": { "version": "1.0.1", @@ -3409,30 +3608,477 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, + "commoner": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/commoner/-/commoner-0.10.8.tgz", + "integrity": "sha1-NPw2cs0kOT6LtH5wyqApOBH08sU=", + "requires": { + "commander": "^2.5.0", + "detective": "^4.3.1", + "glob": "^5.0.15", + "graceful-fs": "^4.1.2", + "iconv-lite": "^0.4.5", + "mkdirp": "^0.5.0", + "private": "^0.1.6", + "q": "^1.1.2", + "recast": "^0.11.17" + }, + "dependencies": { + "ast-types": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.9.6.tgz", + "integrity": "sha1-ECyenpAF0+fjgpvwxPok7oYu6bk=" + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "recast": { + "version": "0.11.23", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.11.23.tgz", + "integrity": "sha1-RR/TAEqx5N+bTktmN2sqIZEkYtM=", + "requires": { + "ast-types": "0.9.6", + "esprima": "~3.1.0", + "private": "~0.1.5", + "source-map": "~0.5.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, "compare-versions": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", "dev": true }, + "component": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/component/-/component-1.1.0.tgz", + "integrity": "sha1-NgSaold5i37lcUKWHhjgdnkYyao=", + "requires": { + "co": "^3.0.0", + "commander": "^2.2.0", + "component-build": "^1.2.2", + "component-consoler": "^2.0.0", + "component-flatten": "^1.0.1", + "component-ls": "^2.1.0", + "component-outdated2": "^1.0.4", + "component-pin": "^1.0.4", + "component-remotes": "^1.2.0", + "component-resolver": "^1.3.0", + "component-search2": "^1.1.1", + "component-updater": "^1.0.4", + "component-watcher": "^1.0.1", + "debug": "*", + "mkdirp": "~0.3.5", + "rimraf": "^2.2.6", + "semver": "^2.2.1", + "superagent": "~0.17.0", + "tiny-lr-fork": "0.0.5", + "win-fork": "~1.1.1" + }, + "dependencies": { + "mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=" + } + } + }, "component-bind": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", "dev": true }, + "component-build": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/component-build/-/component-build-1.2.2.tgz", + "integrity": "sha1-1bwl0lIE35On2aN6LeAE4RmkpXw=", + "requires": { + "builder-autoprefixer": "^1.0.3", + "builder-es6-module-to-cjs": "^1.1.0", + "component-builder": "^1.1.12", + "debug": "*" + } + }, + "component-builder": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-builder/-/component-builder-1.2.1.tgz", + "integrity": "sha1-o5fBg3na9RH4Woy5TKDZIcHdsaQ=", + "requires": { + "chanel": "^2.0.0", + "co": "^3.1.0", + "component-flatten": "^1.0.1", + "component-manifest": "^1.0.0", + "component-require2": "^1.0.1", + "cp": "^0.1.1", + "debug": "*", + "generator-supported": "~0.0.1", + "graceful-fs": "^2.0.3", + "mkdirp": "^0.3.5", + "requires": "^1.0.0", + "syntax-error": "^1.1.1" + }, + "dependencies": { + "graceful-fs": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", + "integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA=" + }, + "mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=" + } + } + }, + "component-consoler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/component-consoler/-/component-consoler-2.0.0.tgz", + "integrity": "sha1-Peq/BGwjm2EGNi7JaJQGNruhTCM=", + "requires": { + "debug": "*" + } + }, + "component-downloader": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/component-downloader/-/component-downloader-1.2.0.tgz", + "integrity": "sha1-b/Z/9xyEaoWKrjGog1X5vxrUO20=", + "requires": { + "chanel": "^2.0.1", + "co": "^3", + "component-consoler": "^2.0.0", + "component-remotes": "^1.1.1", + "debug": "*", + "decompress": "~0.2.0", + "generator-supported": "~0.0.1", + "graceful-fs": "^2.0.2", + "mkdirp": "~0.3.5", + "rimraf": "^2.2.6", + "semver": "^2.2.0", + "unglob": "~0.1.2", + "write-to": "^1.0.0" + }, + "dependencies": { + "graceful-fs": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", + "integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA=" + }, + "mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=" + } + } + }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, + "component-flatten": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/component-flatten/-/component-flatten-1.0.1.tgz", + "integrity": "sha1-W0n0msRcuIxDAyuXozb1P4fNbIw=", + "requires": { + "semver": "^2.2.1" + }, + "dependencies": { + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=" + } + } + }, "component-inherit": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", "dev": true }, + "component-ls": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/component-ls/-/component-ls-2.1.0.tgz", + "integrity": "sha1-wR7ez4mDbd6JBkrQT+JK3YClERI=", + "requires": { + "archy": "~0.0.2" + } + }, + "component-manifest": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-manifest/-/component-manifest-1.0.0.tgz", + "integrity": "sha1-SNy7HqPGiHYifmra/PNxJbC81XI=", + "requires": { + "debug": "*", + "generator-supported": "~0.0.1", + "graceful-fs": "^2.0.1", + "unglob": "~0.1.1" + }, + "dependencies": { + "graceful-fs": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", + "integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA=" + } + } + }, + "component-outdated2": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/component-outdated2/-/component-outdated2-1.0.5.tgz", + "integrity": "sha1-IGbA9Cx1w18tS/3iv5/s4M5GPRQ=", + "requires": { + "component-consoler": "^2.0.0", + "component-flatten": "^1.0.1", + "component-remotes": "^1.1.5", + "generator-supported": "~0.0.1", + "semver": "^2.2.1" + }, + "dependencies": { + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=" + } + } + }, + "component-pin": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/component-pin/-/component-pin-1.0.5.tgz", + "integrity": "sha1-v6lOAepCB18ufU17X3i2Yt24NY0=", + "requires": { + "component-consoler": "^2.0.0", + "component-flatten": "^1.0.1", + "component-remotes": "^1.1.5", + "generator-supported": "~0.0.1", + "semver": "^2.2.1" + }, + "dependencies": { + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=" + } + } + }, + "component-remotes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/component-remotes/-/component-remotes-1.2.0.tgz", + "integrity": "sha1-PQeYpR5ziZxs5VnZN2Olb8eh2IM=", + "requires": { + "co": "^3", + "cogent": "git://github.com/timaschew/cogent.git#fix-redirects", + "component-consoler": "^2.0.0", + "component-validator": "^1.0.0", + "debug": "*", + "generator-supported": "~0.0.1", + "graceful-fs": "^2.0.2", + "semver": "^2.2.1" + }, + "dependencies": { + "graceful-fs": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", + "integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA=" + }, + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=" + } + } + }, + "component-require2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/component-require2/-/component-require2-1.1.1.tgz", + "integrity": "sha1-POrqGYc8HG74X1O48572koWvXMU=" + }, + "component-resolver": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-resolver/-/component-resolver-1.3.0.tgz", + "integrity": "sha1-79grBa9krRJ4W5h8AfCsQfAKaNw=", + "requires": { + "chanel": "^2.0.2", + "co": "^3", + "component-consoler": "^2.0.0", + "component-downloader": "^1.2.0", + "component-flatten": "^1.0.1", + "component-remotes": "^1.2.0", + "component-validator": "^1.1.1", + "debug": "*", + "generator-supported": "~0.0.1", + "graceful-fs": "^2.0.1", + "semver": "^2.2.1", + "unglob": "~0.1.2" + }, + "dependencies": { + "graceful-fs": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz", + "integrity": "sha1-fNLNsiiko/Nule+mzBQt59GhNtA=" + }, + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=" + } + } + }, + "component-search2": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/component-search2/-/component-search2-1.1.1.tgz", + "integrity": "sha1-kmeDygb2Hvdd7YW7ZVuq3i/J65E=", + "requires": { + "JSONStream": "~0.8.0", + "bytes": "~0.3.0", + "cogent": "~0.4.0", + "component-consoler": "^2.0.0", + "debug": "*", + "event-stream": "^3.1.1", + "generator-supported": "~0.0.1", + "stream-to-array": "^1.0.0" + }, + "dependencies": { + "JSONStream": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-0.8.4.tgz", + "integrity": "sha1-kWV9/m/4V0gwZhMrRhi2Lo9Ih70=", + "requires": { + "jsonparse": "0.0.5", + "through": ">=2.2.7 <3" + } + }, + "bytes": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-0.3.0.tgz", + "integrity": "sha1-eOLg4ox/nHuYjqiu4NtNX6mUGTU=" + }, + "cogent": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/cogent/-/cogent-0.4.3.tgz", + "integrity": "sha1-UAdE8R2D6cD8Q+9vlem5zHFaCFQ=", + "requires": { + "debug": "*", + "generator-supported": "~0.0.1", + "netrc": "~0.1.3", + "proxy-agent": "^1.1.0", + "raw-body": "^1.1.2", + "statuses": "^1.0.2", + "write-to": "^1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.8.tgz", + "integrity": "sha1-xgGadZXyzvynAuq2lKAQvNkpjSA=" + }, + "jsonparse": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-0.0.5.tgz", + "integrity": "sha1-MwVCrT8KZUZlt3jz6y2an6UHrGQ=" + }, + "raw-body": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.3.4.tgz", + "integrity": "sha1-zMfd/Ea3KGHN1btDPIQLcLbyf1Q=", + "requires": { + "bytes": "1.0.0", + "iconv-lite": "0.4.8" + }, + "dependencies": { + "bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", + "integrity": "sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g=" + } + } + } + } + }, + "component-updater": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/component-updater/-/component-updater-1.0.5.tgz", + "integrity": "sha1-CHd/ZxzodeE+MHwdghfC6l8aSsQ=", + "requires": { + "component-consoler": "^2.0.0", + "component-flatten": "^1.0.1", + "component-remotes": "^1.1.5", + "generator-supported": "~0.0.1", + "semver": "^2.2.1" + }, + "dependencies": { + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha1-uYSPJdbPNjMwc+ye+IVtQvEjPlI=" + } + } + }, + "component-validator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/component-validator/-/component-validator-1.1.1.tgz", + "integrity": "sha1-+lD+t/WL7IndaXktE6Mn4lJgjl4=", + "requires": { + "component-consoler": "^2.0.0" + } + }, + "component-watcher": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/component-watcher/-/component-watcher-1.0.3.tgz", + "integrity": "sha1-wl6AF0sLQFVJXX7xJnmGJm2QxTU=", + "requires": { + "debug": "*", + "sane": "0" + } + }, "compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -3573,6 +4219,11 @@ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "dev": true }, + "cookiejar": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-1.3.0.tgz", + "integrity": "sha1-3QCzVnkCHpnL1OhVua0EGRNHR2U=" + }, "copy-concurrently": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", @@ -3751,8 +4402,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { "version": "5.2.1", @@ -3766,6 +4416,11 @@ "parse-json": "^4.0.0" } }, + "cp": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/cp/-/cp-0.1.1.tgz", + "integrity": "sha1-OUanbBpT/+DmhZPzQcEkszbB8G0=" + }, "create-ecdh": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", @@ -4150,6 +4805,11 @@ "assert-plus": "^1.0.0" } }, + "data-uri-to-buffer": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-0.0.4.tgz", + "integrity": "sha1-RuE6udqOMJdFyNAc5UchPr2y/j8=" + }, "date-format": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", @@ -4181,6 +4841,47 @@ "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, + "decompress": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-0.2.5.tgz", + "integrity": "sha1-0hMjPv4GbM2A2RTXk/GzDNmEuEc=", + "requires": { + "adm-zip": "^0.4.3", + "ext-name": "^1.0.0", + "get-stdin": "^0.1.0", + "mkdirp": "^0.3.5", + "nopt": "^2.2.0", + "rimraf": "^2.2.2", + "stream-combiner": "^0.0.4", + "tar": "^0.1.18", + "tempfile": "^0.1.2" + }, + "dependencies": { + "mkdirp": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz", + "integrity": "sha1-3j5fiWHIjHh+4TaN+EmsRBPsqNc=" + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "tar": { + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/tar/-/tar-0.1.20.tgz", + "integrity": "sha1-QpQLrltfIsdEg2mRJvnz8nRJyxM=", + "requires": { + "block-stream": "*", + "fstream": "~0.1.28", + "inherits": "2" + } + } + } + }, "deep-equal": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", @@ -4195,6 +4896,11 @@ "regexp.prototype.flags": "^1.2.0" } }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, "default-gateway": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", @@ -4281,6 +4987,85 @@ } } }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" + }, + "defs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/defs/-/defs-1.1.1.tgz", + "integrity": "sha1-siYJ8sehG6ej2xFoBcE5scr/qdI=", + "requires": { + "alter": "~0.2.0", + "ast-traverse": "~0.1.1", + "breakable": "~1.0.0", + "esprima-fb": "~15001.1001.0-dev-harmony-fb", + "simple-fmt": "~0.1.0", + "simple-is": "~0.2.0", + "stringmap": "~0.2.2", + "stringset": "~0.2.1", + "tryor": "~0.1.2", + "yargs": "~3.27.0" + }, + "dependencies": { + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "requires": { + "center-align": "^0.1.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yargs": { + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.27.0.tgz", + "integrity": "sha1-ISBUaTFuk5Ex1Z8toMbX+YIh6kA=", + "requires": { + "camelcase": "^1.2.1", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", + "os-locale": "^1.4.0", + "window-size": "^0.1.2", + "y18n": "^3.2.0" + } + } + } + }, + "degenerator": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz", + "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=", + "requires": { + "ast-types": "0.x.x", + "escodegen": "1.x.x", + "esprima": "3.x.x" + }, + "dependencies": { + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + } + } + }, "del": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", @@ -4374,6 +5159,27 @@ "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", "dev": true }, + "detective": { + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/detective/-/detective-4.7.1.tgz", + "integrity": "sha512-H6PmeeUcZloWtdt4DAkFyzFL94arpHr3NOwwmVILFiy+9Qd4JTxxXrzfyGk/lmct2qVGBwTSwSXagqu2BxmWig==", + "requires": { + "acorn": "^5.2.1", + "defined": "^1.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==" + } + } + }, + "dethroy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/dethroy/-/dethroy-1.0.2.tgz", + "integrity": "sha1-yCADMXaT3LzaP3UrAYLjvxbdRCE=" + }, "dezalgo": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", @@ -4510,6 +5316,11 @@ "is-obj": "^2.0.0" } }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=" + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -4567,6 +5378,11 @@ } } }, + "emitter-component": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.0.0.tgz", + "integrity": "sha1-8E3Rj8PcPpp0y8DzELCIZm5MAW8=" + }, "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", @@ -4751,6 +5567,22 @@ "is-symbol": "^1.0.2" } }, + "es6-module-jstransform": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/es6-module-jstransform/-/es6-module-jstransform-0.1.4.tgz", + "integrity": "sha1-OtHj6qt0UY9a8jwQFPGCjF6WfAI=", + "requires": { + "esprima-fb": "~3001.1.0-dev-harmony-fb", + "jstransform": "~3.0.0" + }, + "dependencies": { + "esprima-fb": { + "version": "3001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz", + "integrity": "sha1-t303q8046gt3Qmu4vCkizmtCZBE=" + } + } + }, "es6-promise": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", @@ -4777,6 +5609,26 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "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==", + "optional": true + } + } + }, "eslint-scope": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", @@ -4790,8 +5642,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esrecurse": { "version": "4.2.1", @@ -4805,14 +5656,12 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "etag": { "version": "1.8.1", @@ -4820,6 +5669,31 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, + "event-stream": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.5.tgz", + "integrity": "sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g==", + "requires": { + "duplexer": "^0.1.1", + "from": "^0.1.7", + "map-stream": "0.0.7", + "pause-stream": "^0.0.11", + "split": "^1.0.1", + "stream-combiner": "^0.2.2", + "through": "^2.3.8" + }, + "dependencies": { + "stream-combiner": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.2.2.tgz", + "integrity": "sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg=", + "requires": { + "duplexer": "~0.1.1", + "through": "~2.3.4" + } + } + } + }, "eventemitter3": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", @@ -4989,11 +5863,27 @@ } } }, + "ext-list": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-0.2.0.tgz", + "integrity": "sha1-NhTV8pn0pZKolinn3oJfF3TRmr0=", + "requires": { + "got": "^0.2.0" + } + }, + "ext-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-1.0.1.tgz", + "integrity": "sha1-GCgzVtxAo5NFXFRGDwWZzpfTDgw=", + "requires": { + "ext-list": "^0.2.0", + "underscore.string": "~2.3.3" + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, "extend-shallow": { "version": "3.0.2", @@ -5110,6 +6000,11 @@ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, "fastparse": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", @@ -5151,11 +6046,9 @@ } }, "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-0.0.2.tgz", + "integrity": "sha1-N83RtbkFQEs/BeGyNkW+aU/3D4I=" }, "fileset": { "version": "2.0.3", @@ -5362,6 +6255,11 @@ "mime-types": "^2.1.12" } }, + "formidable": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.0.14.tgz", + "integrity": "sha1-Kz9MQRy7X91pXESEPiojUUpDIxo=" + }, "forwarded": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", @@ -5383,6 +6281,11 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true }, + "from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4=" + }, "from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -5437,12 +6340,78 @@ "dev": true, "optional": true }, + "fstream": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-0.1.31.tgz", + "integrity": "sha1-czfwWPu7vvqMn1YaKMqwhJICyYg=", + "requires": { + "graceful-fs": "~3.0.2", + "inherits": "~2.0.0", + "mkdirp": "0.5", + "rimraf": "2" + }, + "dependencies": { + "graceful-fs": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz", + "integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==", + "requires": { + "natives": "^1.1.3" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + } + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, + "generator-supported": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/generator-supported/-/generator-supported-0.0.1.tgz", + "integrity": "sha1-kivSIBpsONj6y4FdWT2KA8iYwpk=" + }, "genfun": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", @@ -5459,6 +6428,11 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, + "get-stdin": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-0.1.0.tgz", + "integrity": "sha1-WZivJKr8gC0VyCxoVlfuuLENSpE=" + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -5468,6 +6442,34 @@ "pump": "^3.0.0" } }, + "get-uri": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-0.1.4.tgz", + "integrity": "sha1-NfinlUwSn7Ey/y3fXtgaV8uKnlQ=", + "requires": { + "data-uri-to-buffer": "0", + "debug": "2", + "extend": "3", + "file-uri-to-path": "0", + "ftp": "~0.3.5", + "readable-stream": "2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", @@ -5487,7 +6489,6 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5545,11 +6546,25 @@ } } }, + "got": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/got/-/got-0.2.0.tgz", + "integrity": "sha1-0Awkiyn9zK6pQN+coJlev/MbUaU=", + "requires": { + "object-assign": "^0.3.0" + }, + "dependencies": { + "object-assign": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-0.3.1.tgz", + "integrity": "sha1-Bg4qKifXwNd+x3t48Rqkf9iACNI=" + } + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", - "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", - "dev": true + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" }, "handle-thing": { "version": "2.0.1", @@ -5919,7 +6934,6 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } @@ -6191,11 +7205,15 @@ "loose-envify": "^1.0.0" } }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" }, "ip-regex": { "version": "2.1.0", @@ -6259,8 +7277,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { "version": "1.1.5", @@ -6372,6 +7389,11 @@ "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=" + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -6486,8 +7508,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isbinaryfile": { "version": "4.0.6", @@ -6738,6 +7759,11 @@ } } }, + "js-base64": { + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.9.tgz", + "integrity": "sha1-8OgK4DmkvWVLXygfyT8EqRSn/M4=" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -6829,6 +7855,31 @@ "verror": "1.10.0" } }, + "jstransform": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jstransform/-/jstransform-3.0.0.tgz", + "integrity": "sha1-olkats7o2XvzvoMNv6IxO4fNZAs=", + "requires": { + "base62": "0.1.1", + "esprima-fb": "~3001.1.0-dev-harmony-fb", + "source-map": "0.1.31" + }, + "dependencies": { + "esprima-fb": { + "version": "3001.1.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz", + "integrity": "sha1-t303q8046gt3Qmu4vCkizmtCZBE=" + }, + "source-map": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz", + "integrity": "sha1-n3BNDWnZ4TioG63267T94z0VHGE=", + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, "jszip": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.4.0.tgz", @@ -7120,6 +8171,19 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, "less": { "version": "3.11.1", "resolved": "https://registry.npmjs.org/less/-/less-3.11.1.tgz", @@ -7195,6 +8259,15 @@ "leven": "^3.1.0" } }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, "license-webpack-plugin": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.1.4.tgz", @@ -7292,6 +8365,11 @@ "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", "dev": true }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -7413,6 +8491,14 @@ } } }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "requires": { + "tmpl": "1.0.x" + } + }, "mamacro": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", @@ -7425,6 +8511,11 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.7.tgz", + "integrity": "sha1-ih8HiW2CsQkmvTdEokIACfiJdKg=" + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -7823,7 +8914,6 @@ "version": "0.5.5", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, "requires": { "minimist": "^1.2.5" } @@ -7911,6 +9001,11 @@ "to-regex": "^3.0.1" } }, + "natives": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", + "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==" + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -7923,6 +9018,16 @@ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", "dev": true }, + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" + }, + "netrc": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/netrc/-/netrc-0.1.4.tgz", + "integrity": "sha1-a+lPysqNd63gqWcNxGCRTJRHJEQ=" + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -7991,6 +9096,32 @@ "integrity": "sha512-ZQmnWS7adi61A9JsllJ2gdj2PauElcjnOwTp2O011iGzoakTxUsDGSe+6vD7wXbKdqhSFymC0OSx35aAMhrSdw==", "dev": true }, + "nopt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.2.1.tgz", + "integrity": "sha1-KqCbfRdoSHs7ianFqlIzW/8Lrqc=", + "requires": { + "abbrev": "1" + } + }, + "noptify": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz", + "integrity": "sha1-WPZUpz2XU98MUdlobckhBKZ/S7s=", + "requires": { + "nopt": "~2.0.0" + }, + "dependencies": { + "nopt": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz", + "integrity": "sha1-ynQW8gpeP5w7hhgPlilfo9C1Lg0=", + "requires": { + "abbrev": "1" + } + } + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -8351,6 +9482,19 @@ } } }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, "ora": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/ora/-/ora-4.0.3.tgz", @@ -8455,6 +9599,14 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -8519,6 +9671,64 @@ "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", "dev": true }, + "pac-proxy-agent": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-0.2.0.tgz", + "integrity": "sha1-rZApCdkvT+fMLl9Z9b9QYbz6cbI=", + "requires": { + "agent-base": "~1.0.1", + "debug": "2", + "extend": "~1.2.1", + "get-uri": "~0.1.0", + "pac-resolver": "~1.2.1", + "proxy-agent": "1", + "stream-to-array": "~1.0.0" + }, + "dependencies": { + "agent-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-1.0.2.tgz", + "integrity": "sha1-aJDT+yFwBLYrcPiSjg+uX4lSpwY=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "extend": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz", + "integrity": "sha1-oPX9bPyDpf5J72mNYOyKYk3UV2w=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "pac-resolver": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-1.2.6.tgz", + "integrity": "sha1-7QOvDFtZM1Bb3T8H91F1Rm1efPs=", + "requires": { + "co": "~3.0.6", + "degenerator": "~1.0.0", + "netmask": "~1.0.4", + "regenerator": "~0.8.13", + "thunkify": "~2.1.1" + }, + "dependencies": { + "co": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/co/-/co-3.0.6.tgz", + "integrity": "sha1-FEXyJsXrlWE45oyawwFn6n0ua9o=" + } + } + }, "pacote": { "version": "9.5.12", "resolved": "https://registry.npmjs.org/pacote/-/pacote-9.5.12.tgz", @@ -8824,6 +10034,14 @@ } } }, + "pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha1-/lo0sMvOErWqaitAPuLnO2AvFEU=", + "requires": { + "through": "~2.3" + } + }, "pbkdf2": { "version": "3.0.17", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", @@ -9585,6 +10803,11 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", "dev": true }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, "prepend-http": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", @@ -9594,8 +10817,7 @@ "private": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==" }, "process": { "version": "0.11.10", @@ -9606,8 +10828,7 @@ "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "promise": { "version": "7.3.1", @@ -10019,6 +11240,94 @@ "ipaddr.js": "1.9.1" } }, + "proxy-agent": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-1.1.1.tgz", + "integrity": "sha1-/LHu9eWJZcmV+TjwKdcp/IGFi5U=", + "requires": { + "http-proxy-agent": "0", + "https-proxy-agent": "0", + "lru-cache": "~2.5.0", + "pac-proxy-agent": "0", + "socks-proxy-agent": "1" + }, + "dependencies": { + "agent-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-1.0.2.tgz", + "integrity": "sha1-aJDT+yFwBLYrcPiSjg+uX4lSpwY=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "http-proxy-agent": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-0.2.7.tgz", + "integrity": "sha1-4X/aZfCQLZUs55IeYsf/iGJlWl4=", + "requires": { + "agent-base": "~1.0.1", + "debug": "2", + "extend": "3" + } + }, + "https-proxy-agent": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-0.3.6.tgz", + "integrity": "sha1-cT+jjl01P1DrFKNC/r4pAz7RYZs=", + "requires": { + "agent-base": "~1.0.1", + "debug": "2", + "extend": "3" + } + }, + "lru-cache": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.2.tgz", + "integrity": "sha1-H92tk4quEmPOE4aAvhs/WRwKtBw=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "smart-buffer": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-1.1.15.tgz", + "integrity": "sha1-fxFLW2X6s+KjWqd1uxLw0cZJvxY=" + }, + "socks": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/socks/-/socks-1.1.10.tgz", + "integrity": "sha1-W4t/x8jzQcU+0FbpKbe/Tei6e1o=", + "requires": { + "ip": "^1.1.4", + "smart-buffer": "^1.0.13" + } + }, + "socks-proxy-agent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-1.0.2.tgz", + "integrity": "sha1-Z+BrRH/lY3QX/eVzPL/f7J/+EX8=", + "requires": { + "agent-base": "~1.0.1", + "extend": "~1.2.1", + "socks": "~1.1.5" + }, + "dependencies": { + "extend": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz", + "integrity": "sha1-oPX9bPyDpf5J72mNYOyKYk3UV2w=" + } + } + } + } + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -10095,8 +11404,7 @@ "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, "qjobs": { "version": "1.2.0", @@ -10260,7 +11568,6 @@ "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -10292,6 +11599,39 @@ "picomatch": "^2.2.1" } }, + "recast": { + "version": "0.10.33", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.10.33.tgz", + "integrity": "sha1-lCgI96oBbx+nFCxGHX5XBKqo1pc=", + "requires": { + "ast-types": "0.8.12", + "esprima-fb": "~15001.1001.0-dev-harmony-fb", + "private": "~0.1.5", + "source-map": "~0.5.0" + }, + "dependencies": { + "ast-types": { + "version": "0.8.12", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.12.tgz", + "integrity": "sha1-oNkOQ1G7iHcWyD/WN+v4GK9K38w=" + }, + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=" + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "reduce-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/reduce-component/-/reduce-component-1.0.1.tgz", + "integrity": "sha1-4Mk1QsV0UhvqE98PlIjtgqt3xdo=" + }, "reflect-metadata": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", @@ -10313,6 +11653,32 @@ "regenerate": "^1.4.0" } }, + "regenerator": { + "version": "0.8.46", + "resolved": "https://registry.npmjs.org/regenerator/-/regenerator-0.8.46.tgz", + "integrity": "sha1-FUwydoY2HtUsrWmyVF78U6PQdpY=", + "requires": { + "commoner": "~0.10.3", + "defs": "~1.1.0", + "esprima-fb": "~15001.1001.0-dev-harmony-fb", + "private": "~0.1.5", + "recast": "0.10.33", + "regenerator-runtime": "~0.9.5", + "through": "~2.3.8" + }, + "dependencies": { + "esprima-fb": { + "version": "15001.1001.0-dev-harmony-fb", + "resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz", + "integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk=" + }, + "regenerator-runtime": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.9.6.tgz", + "integrity": "sha1-0z65XQ0gAaS+OWWXB8UbDLcc4Ck=" + } + } + }, "regenerator-runtime": { "version": "0.13.5", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", @@ -10401,8 +11767,7 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, "request": { "version": "2.88.2", @@ -10442,6 +11807,11 @@ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, + "requires": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/requires/-/requires-1.0.2.tgz", + "integrity": "sha1-djBOghNFYi/j+sCwcRoeTygo8Po=" + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -10517,6 +11887,14 @@ "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", "dev": true }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "requires": { + "align-text": "^0.1.1" + } + }, "rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -10585,8 +11963,33 @@ "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sane": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/sane/-/sane-0.8.1.tgz", + "integrity": "sha1-JDpLIECBvlWTwKIrC7sRVzUS/Mc=", + "requires": { + "minimatch": "~0.2.14", + "walker": "~1.0.5", + "watch": "~0.10.0" + }, + "dependencies": { + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } }, "sass": { "version": "1.26.3", @@ -10965,12 +12368,27 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=" + }, "signal-exit": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, + "simple-fmt": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/simple-fmt/-/simple-fmt-0.1.0.tgz", + "integrity": "sha1-GRv1ZqWeZTBILLJatTtKjchcOms=" + }, + "simple-is": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/simple-is/-/simple-is-0.2.0.tgz", + "integrity": "sha1-Krt1qt453rXMgVzhDmGRFkhQuvA=" + }, "simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -11490,6 +12908,14 @@ "chalk": "^2.0.1" } }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "requires": { + "through": "2" + } + }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -11534,8 +12960,7 @@ "stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" }, "static-extend": { "version": "0.1.2", @@ -11561,8 +12986,7 @@ "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, "stream-browserify": { "version": "2.0.2", @@ -11574,6 +12998,14 @@ "readable-stream": "^2.0.2" } }, + "stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha1-TV5DPBhSYd3mI8o/RMWGvPXErRQ=", + "requires": { + "duplexer": "~0.1.1" + } + }, "stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -11603,6 +13035,11 @@ "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", "dev": true }, + "stream-to-array": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-to-array/-/stream-to-array-1.0.0.tgz", + "integrity": "sha1-lBZrsp8+ok8ILS+M0+uyzA1uyiw=" + }, "streamroller": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", @@ -11713,11 +13150,20 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, "requires": { "safe-buffer": "~5.1.0" } }, + "stringmap": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stringmap/-/stringmap-0.2.2.tgz", + "integrity": "sha1-VWwTeyWPlCuHdvWy71gqoGnX0bE=" + }, + "stringset": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/stringset/-/stringset-0.2.1.tgz", + "integrity": "sha1-7yWcTjSTRDd/zRyRPdLoSMnAQrU=" + }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", @@ -11867,6 +13313,49 @@ } } }, + "superagent": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-0.17.0.tgz", + "integrity": "sha1-qtzVD75ak+cZkRGNeb8HFNYlu6g=", + "requires": { + "cookiejar": "1.3.0", + "debug": "~0.7.2", + "emitter-component": "1.0.0", + "extend": "~1.2.1", + "formidable": "1.0.14", + "methods": "0.0.1", + "mime": "1.2.5", + "qs": "0.6.5", + "reduce-component": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=" + }, + "extend": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-1.2.1.tgz", + "integrity": "sha1-oPX9bPyDpf5J72mNYOyKYk3UV2w=" + }, + "methods": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/methods/-/methods-0.0.1.tgz", + "integrity": "sha1-J3yQ+L7zlwlkWoNxxRw7bGSOBow=" + }, + "mime": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.5.tgz", + "integrity": "sha1-nu0HMCKov14WyFZsaGe4gyv7+hM=" + }, + "qs": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.6.5.tgz", + "integrity": "sha1-KUsmjksNQlD23eGbO4s0k13/FO8=" + } + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -11902,6 +13391,14 @@ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", "dev": true }, + "syntax-error": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz", + "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==", + "requires": { + "acorn-node": "^1.2.0" + } + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -11936,6 +13433,21 @@ } } }, + "tempfile": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-0.1.3.tgz", + "integrity": "sha1-fWtxAEcznTn4RzJ6BW2t8YMQMBA=", + "requires": { + "uuid": "~1.4.0" + }, + "dependencies": { + "uuid": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-1.4.2.tgz", + "integrity": "sha1-RTAZ9oaWam34PNxSROfJkOzDMvw=" + } + } + }, "terser": { "version": "4.6.10", "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.10.tgz", @@ -12043,8 +13555,7 @@ "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { "version": "2.0.5", @@ -12056,6 +13567,11 @@ "xtend": "~4.0.1" } }, + "thunkify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" + }, "thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -12077,6 +13593,34 @@ "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", "dev": true }, + "tiny-lr-fork": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/tiny-lr-fork/-/tiny-lr-fork-0.0.5.tgz", + "integrity": "sha1-Hpnh4qhGm3NquX2X7vqYxx927Qo=", + "requires": { + "debug": "~0.7.0", + "faye-websocket": "~0.4.3", + "noptify": "~0.0.3", + "qs": "~0.5.2" + }, + "dependencies": { + "debug": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", + "integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=" + }, + "faye-websocket": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz", + "integrity": "sha1-wUxbO/FNdBf/v9mQwKdJXNnzN7w=" + }, + "qs": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz", + "integrity": "sha1-MbGtBYVnZRxSaSFQa5qHk5EaA4Q=" + } + } + }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -12086,6 +13630,11 @@ "os-tmpdir": "~1.0.2" } }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=" + }, "to-array": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", @@ -12098,6 +13647,11 @@ "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", "dev": true }, + "to-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-descriptor/-/to-descriptor-1.0.1.tgz", + "integrity": "sha1-oOZ4w068fS2uRk2DcrwhR52cK80=" + }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -12166,6 +13720,11 @@ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, + "tryor": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tryor/-/tryor-0.1.2.tgz", + "integrity": "sha1-gUXkynyv9ArN48z5Rui4u3W0Fys=" + }, "ts-node": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", @@ -12243,6 +13802,14 @@ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, "type-fest": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", @@ -12277,6 +13844,57 @@ "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", "dev": true }, + "underscore.string": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz", + "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=" + }, + "unglob": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unglob/-/unglob-0.1.2.tgz", + "integrity": "sha1-8uwGKE5JGhx3YRp2CouOowAnLDg=", + "requires": { + "generator-supported": "~0.0.1", + "glob": "~3.2.8", + "minimatch": "~0.2.14" + }, + "dependencies": { + "glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=", + "requires": { + "inherits": "2", + "minimatch": "0.3" + }, + "dependencies": { + "minimatch": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=", + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=" + }, + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } + } + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", @@ -12502,8 +14120,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util-promisify": { "version": "2.1.0", @@ -12592,6 +14209,19 @@ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", "dev": true }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "requires": { + "makeerror": "1.0.x" + } + }, + "watch": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz", + "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=" + }, "watchpack": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", @@ -13288,6 +14918,26 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, + "win-fork": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/win-fork/-/win-fork-1.1.1.tgz", + "integrity": "sha1-j1jgZW/KAK3IyGoriePNLWotXl4=" + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + }, "worker-farm": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", @@ -13361,6 +15011,15 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write-to": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/write-to/-/write-to-1.1.1.tgz", + "integrity": "sha1-Xu+/aC0SjCqwwF9l3xA4c54GxqM=", + "requires": { + "dethroy": "1", + "mkdirp": "0" + } + }, "ws": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", @@ -13392,11 +15051,15 @@ "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", "dev": true }, + "xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { "version": "4.0.0", diff --git a/package.json b/package.json index 598596f..c10a72f 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "@ng-bootstrap/ng-bootstrap": "^6.0.0", "bootstrap": "^4.4.0", "chart.js": "^2.9.3", + "component": "^1.1.0", "rxjs": "~6.5.4", "tslib": "^1.10.0", "zone.js": "~0.10.2" diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 909fbbc..1ee7745 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -1,16 +1,17 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; - +import { DashboardComponent } from './dashboard/dashboard.component'; import { UserstoryTableComponent } from './userstory-table/userstory-table.component'; import { TaskTableComponent } from './task-table/task-table.component'; import { SprintTableComponent } from './sprint-table/sprint-table.component'; // import { DashboardComponent } from './dashboard/dashboard.component'; + const routes: Routes = [ { path: 'tasks', component: TaskTableComponent }, { path: 'userstories', component: UserstoryTableComponent }, + { path: 'dashboard', component: DashboardComponent }, { path: 'sprints', component: SprintTableComponent }, - // { path: 'dashboard', component: DashboardComponent }, { path: '', redirectTo: '/tasks', pathMatch: 'full' }, ]; diff --git a/src/app/app.module.ts b/src/app/app.module.ts index df6ac7c..a107416 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -14,7 +14,8 @@ import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { UserstoryTableComponent } from './userstory-table/userstory-table.component'; import { TaskTableComponent } from './task-table/task-table.component'; import { SprintTableComponent } from './sprint-table/sprint-table.component'; -// import { DashboardComponent } from './dashboard/dashboard.component'; +import { DashboardComponent } from './dashboard/dashboard.component'; +import { UserstoryInnerTableComponent } from './userstory-inner-table/userstory-inner-table.component'; @NgModule({ declarations: [ @@ -26,7 +27,8 @@ import { SprintTableComponent } from './sprint-table/sprint-table.component'; UserstoryTableComponent, SprintFormComponent, SprintTableComponent, - // DashboardComponent, + DashboardComponent, + UserstoryInnerTableComponent, ], imports: [ BrowserModule, diff --git a/src/app/dashboard/dashboard.component.css b/src/app/dashboard/dashboard.component.css index 4a386a0..e67ab28 100644 --- a/src/app/dashboard/dashboard.component.css +++ b/src/app/dashboard/dashboard.component.css @@ -1,3 +1,7 @@ -/* .text-2em { - font-size: 2rem; -} */ +.text-large { + font-size: 1.2rem; +} + +.text-very-large { + font-size: 2.4rem; +} diff --git a/src/app/dashboard/dashboard.component.html b/src/app/dashboard/dashboard.component.html index b63d9f1..9e6550d 100644 --- a/src/app/dashboard/dashboard.component.html +++ b/src/app/dashboard/dashboard.component.html @@ -1,60 +1,98 @@ -{% comment %}
+
-
-

Dashboard

-
+
+

Dashboard

+
-
-

Current sprint

-
+
-
+ +

Alle Userstories

+ Lege einen Sprint an, um Userstories zu organisieren. +
-
-
-
+ + +

Aktueller Sprint:

+

Sprint:

+

{{selectedSprint.title}}

+

{{toDateString(selectedSprint.startDate)}} - {{toDateString(selectedSprint.endDate)}}

+ + + + +

+ Verbleibende Tage: {{getRemainingDaysInSprint()}} +

+ +
+ +
+ +
+ +
+
+
+ Userstories -
-
- -
+
-
- -
-
- -
-
- Days remaining +
+
+ Zum Sprint "{{selectedSprint.title}}" sind aktuell keine Userstories vorhanden. +
+ +
+
+
+
+
+ + {{status.title}} + +
+
+ + {{getNumberOfUserstoriesByStatus(status)}} +
-
- - {{getRemainingDaysInSprint()}} - -
-
- -
-
- Userstories: {{status.title}} -
-
- - {{getNumberOfUserstoriesByStatus(status)}} - -
-
-
-
-
{% endcomment %} +
+
+
+ +
+
+
+ +
+ +
diff --git a/src/app/dashboard/dashboard.component.ts b/src/app/dashboard/dashboard.component.ts index edbe983..e8e4c92 100644 --- a/src/app/dashboard/dashboard.component.ts +++ b/src/app/dashboard/dashboard.component.ts @@ -1,159 +1,140 @@ -// import { Component, OnInit } from '@angular/core'; -// // import Chart from 'chart.js'; -// import { -// BackendService, -// ScrumStatus, -// ScrumUser, -// ScrumUserstory, -// ScrumSprint, -// } from '../services/backend.service'; +import {Component, OnChanges} from '@angular/core'; +import {forkJoin} from 'rxjs'; +import Chart from 'chart.js'; +import {BackendService, ScrumSprint, ScrumStatus, ScrumUserstory} from '../services/backend.service'; -// @Component({ -// selector: 'app-dashboard', -// templateUrl: 'dashboard.component.html', -// styleUrls: ['./dashboard.component.css'], -// }) -// export class DashboardComponent implements OnInit { -// /** -// * Returns the status that are used by at least one userstory. -// */ -// public get usedStatus(): ScrumStatus[] { -// return this.status.filter( -// (s) => this.userstories.find((us) => us.statusid === s.id) !== undefined -// ); -// } +@Component({ + selector: 'app-dashboard', + templateUrl: 'dashboard.component.html', + styleUrls: ['./dashboard.component.css'] +}) +export class DashboardComponent { + /** + * Returns the status that are used by at least one userstory. + */ + public get usedStatus(): ScrumStatus[] { + return this.status.filter(s => this.selectedSprintUserstories.find(us => us.statusid === s.id) !== undefined); + } -// private status: ScrumStatus[]; -// private userstories: ScrumUserstory[]; -// private sprints: ScrumSprint[]; + public get selectedSprintUserstories(): ScrumUserstory[] { + if (this.selectedSprint === undefined) { + return this.userstories; + } + return this.userstories.filter(us => us.sprintid === this.selectedSprint.id); + } -// constructor(private backendService: BackendService) { -// // backendService.getUserstories().subscribe(response => { -// // if (response.status > 399) { -// // alert('Fehler'); -// // } else { -// // this.userstories.push(...response.body); -// // } -// // }); -// // backendService.getAllStatus().subscribe(response => { -// // if (response.status > 399) { -// // alert('Fehler'); -// // } else { -// // this.status.push(...response.body); -// // } -// // }); -// // backendService.getSprints().subscribe(response => { -// // if (response.status > 399) { -// // alert('Fehler'); -// // } else { -// // this.sprints.push(...response.body); -// // } -// // }); + public get currentSprint(): ScrumSprint { + const now = Date.now(); + return this.sprints.find(s => Date.parse(s.startDate) < now && Date.parse(s.endDate) > now); + } -// this.status = [ -// { id: 0, title: 'In progress', description: '' }, -// { id: 1, title: 'Done', description: '' }, -// ]; -// this.userstories = [ -// { statusid: 0, title: '' }, -// { statusid: 0, title: '' }, -// { statusid: 0, title: '' }, -// { statusid: 1, title: '' }, -// { statusid: 1, title: '' }, -// ]; -// this.sprints = [ -// { -// description: '', -// title: '', -// project: 0, -// startDate: new Date(2020, 5, 22), -// endDate: new Date(2020, 5, 28), -// }, -// { -// description: '', -// title: '', -// project: 0, -// startDate: new Date(2020, 5, 29), -// endDate: new Date(2020, 6, 5), -// }, -// ]; -// } + private _selectedSprint: ScrumSprint; + public get selectedSprint(): ScrumSprint { + if (this._selectedSprint === undefined) { + if (this.currentSprint === undefined) { + return this.sprints[0]; + } + return this.currentSprint; + } + return this._selectedSprint; + } -// ngOnInit(): void { -// // @ts-ignore -// const context = document -// .getElementById('done-stories-chart') -// .getContext('2d'); -// const chart = new Chart(context, { -// type: 'pie', -// data: { -// labels: this.usedStatus.map((s) => s.title), -// datasets: [ -// { -// label: 'Done stories', -// data: this.usedStatus.map((s) => -// this.getNumberOfUserstoriesByStatus(s) -// ), -// backgroundColor: this.getBackgroundColors(), -// }, -// ], -// }, -// }); -// } + public set selectedSprint(value) { + this._selectedSprint = value; + this.createChart(); + } -// private getBackgroundColors(): string[] { -// const baseColors = [ -// 'rgb(255, 153, 102)', -// 'rgb(255, 102, 102)', -// 'rgb(153, 204, 255)', -// 'rgb(102, 153, 102)', -// 'rgb(204, 204, 153)', -// 'rgb(153, 102, 204)', -// 'rgb(204, 102, 102)', -// 'rgb(255, 204, 153)', -// 'rgb(153, 102, 255)', -// 'rgb(204, 204, 204)', -// 'rgb(102, 255, 204)', -// 'rgb(102, 153, 255)', -// 'rgb(153, 102, 153)', -// 'rgb(204, 204, 255)', -// ]; -// const colors = []; -// while (colors.length < this.usedStatus.length) { -// colors.push(...baseColors); -// } -// return colors; -// } + public status: ScrumStatus[] = []; + public userstories: ScrumUserstory[] = []; + public sprints: ScrumSprint[] = []; + + public chart: Chart; + + constructor(private backendService: BackendService) { + // download userstories, status and sprints and update + // the chart whenever a new response is there + forkJoin([backendService.getUserstories(), backendService.getAllStatus(), backendService.getSprints()]) + .subscribe(results => { + const [userstoryResponse, statusResponse, sprintResponse] = results; + if (userstoryResponse.status > 399 || statusResponse.status > 399 || sprintResponse.status > 399) { + alert('Fehler'); + } else { + this.userstories.push(...userstoryResponse.body); + this.status.push(...statusResponse.body); + this.sprints.push(...sprintResponse.body); + this.createChart(); + } + }); + } + + /** + * Returns the date in the following format: 1.7.2020 + */ + public toDateString(isoFormatString) { + const date = new Date(isoFormatString); + return `${date.getDate()}.${date.getMonth() + 1}.${date.getFullYear()}`; + } + + private createChart() { + // @ts-ignore + const context = document.getElementById('done-stories-chart').getContext('2d'); + + if (this.usedStatus.length === 0) { + this.chart.destroy(); + } + + else { + this.chart = new Chart(context, { + type: 'pie', + data: { + labels: this.usedStatus.map(s => s.title), + datasets: [{ + data: this.usedStatus.map(s => this.getNumberOfUserstoriesByStatus(s)), + backgroundColor: this.getBackgroundColors(), + options: { + legend: { + display: true, + position: 'right', + labels: { + fontColor: 'rgba(255, 255, 255, 0.8)' + } + } + } + }] + } + }); + this.chart.update(); + this.chart.render(); + } + } // public getNumberOfUserstoriesByStatus(status: ScrumStatus): number { // return this.userstories.filter((us) => us.statusid === status.id).length; // } -// public getRemainingDaysInSprint(): number { -// const now = new Date(); -// const currentSprint = this.sprints.find( -// (s) => s.endDate > now && s.startDate < now -// ); -// if (currentSprint === undefined) { -// return undefined; -// } -// const daysDelta = Math.floor( -// (currentSprint.endDate.getTime() - now.getTime()) / 86400000 -// ); -// return daysDelta; -// } + public getNumberOfUserstoriesByStatus(status: ScrumStatus): number { + return this.selectedSprintUserstories.filter(us => us.statusid === status.id).length; + } -// public getSprintUrgency(): number { -// const now = new Date(); -// const currentSprint = this.sprints.find( -// (s) => s.endDate > now && s.startDate < now -// ); -// if (currentSprint === undefined) { -// return undefined; -// } -// const deltaFromNow = currentSprint.endDate.getTime() - now.getTime(); -// const deltaFromStart = -// currentSprint.endDate.getTime() - currentSprint.startDate.getTime(); -// return Math.floor((3 * deltaFromNow) / deltaFromStart); -// } -// } + public getRemainingDaysInSprint(): number { + if (this.selectedSprint === undefined) { + return undefined; + } + return Math.floor((Date.parse(this.selectedSprint.endDate) - Date.now()) / 86400000); + } + + /** + * Returns the "urgency" of the current sprint (ie what percentage of the sprint is remaining) + * as an integer from 0 (most urgent) to 2 (least urgent). + */ + public getSprintUrgency(): number { + const now = Date.now(); + const sprint = this.selectedSprint; + if (sprint === undefined) { + return undefined; + } + const deltaFromNow = Date.parse(sprint.endDate) - now; + const deltaFromStart = Date.parse(sprint.endDate) - Date.parse(sprint.startDate); + return Math.floor(3 * deltaFromNow / deltaFromStart); + } +} diff --git a/src/app/services/backend.service.ts b/src/app/services/backend.service.ts index 6eb6ca7..9889cda 100644 --- a/src/app/services/backend.service.ts +++ b/src/app/services/backend.service.ts @@ -246,6 +246,7 @@ export interface ScrumUserstory { projectid?: number; } +<<<<<<< HEAD export interface ScrumSprint { id?: number; title: string; @@ -253,6 +254,15 @@ export interface ScrumSprint { startDate: Date; endDate: Date; project?: number; +======= +export interface ScrumSprint{ + id?: number; + title: string; + description?: string; + startDate: string; + endDate: string; + project: number; +>>>>>>> feature/dashboard } export interface ScrumCategory { diff --git a/src/app/task-table/task-table.component.ts b/src/app/task-table/task-table.component.ts index 54163ef..44299d5 100644 --- a/src/app/task-table/task-table.component.ts +++ b/src/app/task-table/task-table.component.ts @@ -14,7 +14,7 @@ import { getNumberForPriority } from '../services/sorting.service'; import { NONE_TYPE } from '@angular/compiler'; @Component({ - selector: 'app-userstory-table', + selector: 'app-task-table', templateUrl: './task-table.component.html', styleUrls: ['./task-table.component.css'], }) diff --git a/src/app/userstory-inner-table/userstory-inner-table.component.css b/src/app/userstory-inner-table/userstory-inner-table.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/userstory-inner-table/userstory-inner-table.component.html b/src/app/userstory-inner-table/userstory-inner-table.component.html new file mode 100644 index 0000000..2706790 --- /dev/null +++ b/src/app/userstory-inner-table/userstory-inner-table.component.html @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ID + + + + + + Titel + + + + + + Tasks + + + + + + Status + + + + + + Priorität + + + + + + + Category + + + + +
{{userstory.id}}{{userstory.title}} + + {{getNumberOfTasks(userstory)}} Tasks + + + + {{getStatusTitleById(userstory.statusid)}} + + {{userstory.priority}} + + {{getCategoryTitleById(userstory.categoryid)}} + + + + +
\ No newline at end of file diff --git a/src/app/userstory-inner-table/userstory-inner-table.component.ts b/src/app/userstory-inner-table/userstory-inner-table.component.ts new file mode 100644 index 0000000..3430dc0 --- /dev/null +++ b/src/app/userstory-inner-table/userstory-inner-table.component.ts @@ -0,0 +1,143 @@ +import { Component, Input } from '@angular/core'; +import { + BackendService, + ScrumTask, + ScrumUserstory, + ScrumStatus, + ScrumCategory, +} from '../services/backend.service'; +import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; +import { TableComponentBase } from '../services/table-component.base'; +import { getNumberForPriority } from '../services/sorting.service'; +import { UserstoryFormComponent } from '../userstory-form/userstory-form.component'; +import { ActivatedRoute, ParamMap, Router } from '@angular/router'; + +@Component({ + selector: 'app-userstory-inner-table', + templateUrl: './userstory-inner-table.component.html', + styleUrls: ['./userstory-inner-table.component.css'] +}) +export class UserstoryInnerTableComponent extends TableComponentBase { + public tasks: ScrumTask[] = []; + public filterPriority: string | null = null; + public highlightId: number; + public status: ScrumStatus[] = []; + public categories: ScrumCategory[] = []; + + @Input() public items: ScrumUserstory[] = []; + + public get filteredItems() { + return this.items.filter( + (task) => + this.filterPriority === null || task.priority === this.filterPriority + ); + } + + constructor( + private backendService: BackendService, + private modalService: NgbModal, + private route: ActivatedRoute, + private router: Router + ) { + super(); + + this.applyFilterParameters(this.route.snapshot.paramMap); + this.route.paramMap.subscribe((map) => this.applyFilterParameters(map)); + + backendService.getTasks().subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.tasks.push(...response.body); + } + }); + backendService.getAllStatus().subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.status.push(...response.body); + } + }); + backendService.getCategories().subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } else { + this.categories.push(...response.body); + } + }); + } + + private applyFilterParameters(params: ParamMap) { + if (params.has('id')) { + this.highlightId = parseInt(params.get('id')); + } + } + + public deleteUserstory(userstory: ScrumUserstory) { + this.backendService.deleteUserstory(userstory).subscribe((response) => { + if (response.status > 399) { + alert('Fehler'); + } + }); + const index = this.items.indexOf(userstory); + if (index !== -1) { + this.items.splice(index, 1); + } + } + + public openUserstoryForm(editUserstory?: ScrumUserstory) { + const modalRef = this.modalService.open(UserstoryFormComponent, { + backdrop: 'static', + keyboard: true, + }); + if (editUserstory === null) { + modalRef.result.then((result) => { + this.items.push(result); + }); + } + modalRef.componentInstance.userstory = editUserstory; + } + + public getNumberOfTasks(userstory: ScrumUserstory) { + return this.tasks.filter((t) => t.userstoryid === userstory.id).length; + } + + public sortById() { + this.doNumericSort('id', (us) => us.id); + } + + public sortByTitle() { + this.doStringSort('title', (us) => us.title); + } + + public sortByPrio() { + this.doNumericSort('priority', (us) => getNumberForPriority(us.priority)); + } + + public sortByTasks() { + this.doNumericSort('tasks', (us) => this.getNumberOfTasks(us)); + } + + sortByStatus() { + this.doNumericSort('statusid', (us) => us.statusid); + } + sortByCategory() { + this.doNumericSort('categoryid', (us) => us.categoryid); + } + + getStatusTitleById(id) { + var status = this.status.find((x) => x.id === id); + if (!status) { + return 'N/A'; + } + return status.title; + } + + getCategoryTitleById(id) { + var category = this.categories.find((x) => x.id === id); + if (!category) { + return 'N/A'; + } + return category.title; + } +} diff --git a/src/app/userstory-table/userstory-table.component.html b/src/app/userstory-table/userstory-table.component.html index 90e0ce0..75b9cf0 100644 --- a/src/app/userstory-table/userstory-table.component.html +++ b/src/app/userstory-table/userstory-table.component.html @@ -1,106 +1,4 @@ -
- -

Userstories

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ID - - - - - - - Titel - - - - - - - Tasks - - - - - - - Status - - - - - - -
-
- Priorität: -
- {{filterPriority || "All"}} -
- - -
-
- - - - - -
-
-
- Category - - - - - -
{{userstory.id}}{{userstory.title}} - - {{getNumberOfTasks(userstory)}} Tasks - - - - {{getStatusTitleById(userstory.statusid)}} - - {{userstory.priority}} - - {{getCategoryTitleById(userstory.categoryid)}} - - - - -
+
+

Userstories

+
diff --git a/src/app/userstory-table/userstory-table.component.ts b/src/app/userstory-table/userstory-table.component.ts index 2baa7bd..b61809b 100644 --- a/src/app/userstory-table/userstory-table.component.ts +++ b/src/app/userstory-table/userstory-table.component.ts @@ -1,49 +1,18 @@ import { Component } from '@angular/core'; import { BackendService, - ScrumTask, ScrumUserstory, - ScrumStatus, - ScrumCategory, } from '../services/backend.service'; -import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; -import { TableComponentBase } from '../services/table-component.base'; -import { getNumberForPriority } from '../services/sorting.service'; -import { UserstoryFormComponent } from '../userstory-form/userstory-form.component'; -import { ActivatedRoute, ParamMap, Router } from '@angular/router'; @Component({ selector: 'app-userstory-table', templateUrl: './userstory-table.component.html', styleUrls: ['./userstory-table.component.css'], }) -export class UserstoryTableComponent extends TableComponentBase< - ScrumUserstory -> { - public tasks: ScrumTask[] = []; - public filterPriority: string | null = null; - public highlightId: number; - public status: ScrumStatus[] = []; - public categories: ScrumCategory[] = []; - - public get filteredItems() { - return this.items.filter( - (task) => - this.filterPriority === null || task.priority === this.filterPriority - ); - } - - constructor( - private backendService: BackendService, - private modalService: NgbModal, - private route: ActivatedRoute, - private router: Router - ) { - super(); - - this.applyFilterParameters(this.route.snapshot.paramMap); - this.route.paramMap.subscribe((map) => this.applyFilterParameters(map)); +export class UserstoryTableComponent { + public items: ScrumUserstory[] = []; + constructor(private backendService: BackendService) { backendService.getUserstories().subscribe((response) => { if (response.status > 399) { alert('Fehler'); @@ -51,101 +20,5 @@ export class UserstoryTableComponent extends TableComponentBase< this.items.push(...response.body); } }); - backendService.getTasks().subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.tasks.push(...response.body); - } - }); - backendService.getAllStatus().subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.status.push(...response.body); - } - }); - backendService.getCategories().subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } else { - this.categories.push(...response.body); - } - }); - } - - private applyFilterParameters(params: ParamMap) { - if (params.has('id')) { - this.highlightId = parseInt(params.get('id')); - } - } - - public deleteUserstory(userstory: ScrumUserstory) { - this.backendService.deleteUserstory(userstory).subscribe((response) => { - if (response.status > 399) { - alert('Fehler'); - } - }); - const index = this.items.indexOf(userstory); - if (index !== -1) { - this.items.splice(index, 1); - } - } - - public openUserstoryForm(editUserstory?: ScrumUserstory) { - const modalRef = this.modalService.open(UserstoryFormComponent, { - backdrop: 'static', - keyboard: true, - size: 'lg' - }); - if (editUserstory === null) { - modalRef.result.then((result) => { - this.items.push(result); - }); - } - modalRef.componentInstance.userstory = editUserstory; - } - - public getNumberOfTasks(userstory: ScrumUserstory) { - return this.tasks.filter((t) => t.userstoryid === userstory.id).length; - } - - public sortById() { - this.doNumericSort('id', (us) => us.id); - } - - public sortByTitle() { - this.doStringSort('title', (us) => us.title); - } - - public sortByPrio() { - this.doNumericSort('priority', (us) => getNumberForPriority(us.priority)); - } - - public sortByTasks() { - this.doNumericSort('tasks', (us) => this.getNumberOfTasks(us)); - } - - sortByStatus() { - this.doNumericSort('statusid', (us) => us.statusid); - } - sortByCategory() { - this.doNumericSort('categoryid', (us) => us.categoryid); - } - - getStatusTitleById(id) { - var status = this.status.find((x) => x.id === id); - if (!status) { - return 'N/A'; - } - return status.title; - } - - getCategoryTitleById(id) { - var category = this.categories.find((x) => x.id === id); - if (!category) { - return 'N/A'; - } - return category.title; } } diff --git a/src/styles.css b/src/styles.css new file mode 100644 index 0000000..0fe5df0 --- /dev/null +++ b/src/styles.css @@ -0,0 +1,9 @@ +/* You can add global styles to this file, and also import other style files */ +.custom-text-secondary { + color: white; + } + + .white-content .custom-text-secondary { + color: black !important; + } + \ No newline at end of file