diff --git a/.gitignore b/.gitignore index c558400..132919f 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,5 @@ $RECYCLE.BIN/ .DS_Store Thumbs.db UserInterfaceState.xcuserstate + +config/config-dev.json diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..cea672e --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,14 @@ +# Changelog + +# v0.0.2 + +* Reduced image quality to increase upload speed +* Reformatted Leaderboard layout +* Added User Settings editing +* Added First Boot page & Help prompt +* Added receipt purchase time +* Added Display name to front page + +# v0.0.1 + +* Initial Release diff --git a/config.xml b/config.xml index 5cad816..4c759cd 100644 --- a/config.xml +++ b/config.xml @@ -1,5 +1,5 @@ - + LocalLoop Tracking Local Money for Local People. Pear Trading Development Team diff --git a/config/config-dev.json b/config/config-dev.json deleted file mode 100644 index 23176e4..0000000 --- a/config/config-dev.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api_url": "https://dev.peartrade.org/api" -} diff --git a/config/config-dev.json.example b/config/config-dev.json.example new file mode 100644 index 0000000..1de26fd --- /dev/null +++ b/config/config-dev.json.example @@ -0,0 +1,3 @@ +{ + "api_url": "http://dev.peartrade.org/api" +} diff --git a/package-lock.json b/package-lock.json index 98836d9..698e9db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,6 +49,16 @@ "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.0.2.tgz", "integrity": "sha1-Wib5o+n36vPMfAKDbPri6Izxhi8=" }, + "@angular/platform-server": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-4.3.4.tgz", + "integrity": "sha1-zf/kDT2xF1m8oi8ywnkT+TvAkPM=", + "requires": { + "parse5": "3.0.2", + "tslib": "1.7.1", + "xhr2": "0.1.4" + } + }, "@angular/tsc-wrapped": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.0.2.tgz", @@ -140,34 +150,85 @@ } }, "@ionic/cli-plugin-cordova": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@ionic/cli-plugin-cordova/-/cli-plugin-cordova-1.4.1.tgz", - "integrity": "sha512-riH3qc11S1Q1OsQgawTYG8KAVZ6Mls9cS1pAcmYGFfV59vdoWHzUpVFuEtHLrfrcGzW31uLErAHjKQN1+w6t6g==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@ionic/cli-plugin-cordova/-/cli-plugin-cordova-1.6.2.tgz", + "integrity": "sha512-ZAdVISxGsRfKFzbCle4Sb3ycLBJ/uFoefkP1Blm8P6L7Mst4JlDGIGUDwGkpfNaGuT9IKyqmzIvv1fhWwZX5ng==", "dev": true, "requires": { - "@ionic/cli-utils": "1.5.0", - "chalk": "2.0.1", - "xml2js": "0.4.17" + "@ionic/cli-utils": "1.7.0", + "chalk": "2.1.0", + "elementtree": "0.1.7", + "tslib": "1.7.1" }, "dependencies": { + "@ionic/cli-utils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@ionic/cli-utils/-/cli-utils-1.7.0.tgz", + "integrity": "sha512-PNGDtLwqX8RL6fbE5WnyBndIfBzxuo4eglhW8+VFhCm/5m83/sCsr1+7gflt7ldUVlD8j0/SaPByYEm0JFq/Jg==", + "dev": true, + "requires": { + "archiver": "2.0.0", + "chalk": "2.1.0", + "ci-info": "1.0.0", + "cross-spawn": "5.1.0", + "dargs": "5.1.0", + "dev-null": "0.1.1", + "inquirer": "3.2.1", + "leek": "0.0.24", + "lodash": "4.17.4", + "minimist": "1.2.0", + "ncp": "2.0.0", + "semver": "5.4.1", + "slice-ansi": "1.0.0", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "superagent": "3.5.2", + "tslib": "1.7.1", + "uuid": "3.1.0", + "wrap-ansi": "3.0.1" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { "color-convert": "1.9.0" } }, + "archiver": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.0.0.tgz", + "integrity": "sha1-/7c+zM2N1lsAGeEYD3gJKgU9Q8Q=", + "dev": true, + "requires": { + "archiver-utils": "1.3.0", + "async": "2.5.0", + "buffer-crc32": "0.2.13", + "glob": "7.1.2", + "lodash": "4.17.4", + "readable-stream": "2.3.3", + "tar-stream": "1.5.4", + "walkdir": "0.0.11", + "zip-stream": "1.2.0" + } + }, "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "dev": true, "requires": { - "ansi-styles": "3.1.0", + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" + "supports-color": "4.2.1" } }, "color-convert": { @@ -179,57 +240,163 @@ "color-name": "1.1.2" } }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "4.1.1", + "shebang-command": "1.2.0", + "which": "1.2.14" + } + }, "has-flag": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "inquirer": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.1.tgz", + "integrity": "sha512-QgW3eiPN8gpj/K5vVpHADJJgrrF0ho/dZGylikGX7iqAdRgC9FVKYKWFLx6hZDBFcOLEoSqINYrVPeFAeG/PdA==", + "dev": true, + "requires": { + "ansi-escapes": "2.0.0", + "chalk": "2.1.0", + "cli-cursor": "2.1.0", + "cli-width": "2.1.0", + "external-editor": "2.0.4", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "2.0.0", + "strip-ansi": "4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "3.0.0" + } + }, "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", "dev": true, "requires": { "has-flag": "2.0.0" } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0" + } } } }, "@ionic/cli-plugin-ionic-angular": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@ionic/cli-plugin-ionic-angular/-/cli-plugin-ionic-angular-1.3.2.tgz", - "integrity": "sha512-U0uIrh32MXXzvqraeE82Obc54e7uv3Crd0NcG/IOvnpL2vtG9idPEK+ApItYjdZG63RTs//mKdRcz1wga6y+dA==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@ionic/cli-plugin-ionic-angular/-/cli-plugin-ionic-angular-1.4.1.tgz", + "integrity": "sha512-GwGbDH+n6Qajw8faZBD3qq9xh4+DTBdwQqf6EpI4/DkHfzWzeq6asvRjrY1TPTDfMinQI5NTsrx0zup4qceGFA==", "dev": true, "requires": { - "@ionic/cli-utils": "1.5.0", - "chalk": "2.0.1" + "@ionic/cli-utils": "1.7.0", + "chalk": "2.1.0", + "tslib": "1.7.1" }, "dependencies": { "@ionic/cli-utils": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@ionic/cli-utils/-/cli-utils-1.5.0.tgz", - "integrity": "sha512-w0eissKYEnDAAs/pw5CA1ix8/SPWhvYZ+XeDDbUhq6CCgTnBqVkyTEFC/D+KTkALySqQUX8cKQ1NUKMXqOxUDw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@ionic/cli-utils/-/cli-utils-1.7.0.tgz", + "integrity": "sha512-PNGDtLwqX8RL6fbE5WnyBndIfBzxuo4eglhW8+VFhCm/5m83/sCsr1+7gflt7ldUVlD8j0/SaPByYEm0JFq/Jg==", "dev": true, "requires": { - "archiver": "1.3.0", - "chalk": "2.0.1", + "archiver": "2.0.0", + "chalk": "2.1.0", "ci-info": "1.0.0", - "cross-spawn": "4.0.2", + "cross-spawn": "5.1.0", "dargs": "5.1.0", - "inquirer": "3.2.0", + "dev-null": "0.1.1", + "inquirer": "3.2.1", "leek": "0.0.24", "lodash": "4.17.4", "minimist": "1.2.0", "ncp": "2.0.0", - "rimraf": "2.6.1", - "semver": "5.3.0", + "semver": "5.4.1", "slice-ansi": "1.0.0", - "string-width": "2.1.0", + "string-width": "2.1.1", "strip-ansi": "4.0.0", "superagent": "3.5.2", + "tslib": "1.7.1", "uuid": "3.1.0", - "wrap-ansi": "2.1.0" + "wrap-ansi": "3.0.1" } }, "ansi-regex": { @@ -239,23 +406,40 @@ "dev": true }, "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { "color-convert": "1.9.0" } }, + "archiver": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.0.0.tgz", + "integrity": "sha1-/7c+zM2N1lsAGeEYD3gJKgU9Q8Q=", + "dev": true, + "requires": { + "archiver-utils": "1.3.0", + "async": "2.5.0", + "buffer-crc32": "0.2.13", + "glob": "7.1.2", + "lodash": "4.17.4", + "readable-stream": "2.3.3", + "tar-stream": "1.5.4", + "walkdir": "0.0.11", + "zip-stream": "1.2.0" + } + }, "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "dev": true, "requires": { - "ansi-styles": "3.1.0", + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" + "supports-color": "4.2.1" } }, "color-convert": { @@ -268,12 +452,13 @@ } }, "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "4.1.1", + "shebang-command": "1.2.0", "which": "1.2.14" } }, @@ -283,25 +468,74 @@ "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", "dev": true }, + "inquirer": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.1.tgz", + "integrity": "sha512-QgW3eiPN8gpj/K5vVpHADJJgrrF0ho/dZGylikGX7iqAdRgC9FVKYKWFLx6hZDBFcOLEoSqINYrVPeFAeG/PdA==", + "dev": true, + "requires": { + "ansi-escapes": "2.0.0", + "chalk": "2.1.0", + "cli-cursor": "2.1.0", + "cli-width": "2.1.0", + "external-editor": "2.0.4", + "figures": "2.0.0", + "lodash": "4.17.4", + "mute-stream": "0.0.7", + "run-async": "2.3.0", + "rx-lite": "4.0.8", + "rx-lite-aggregates": "4.0.8", + "string-width": "2.1.1", + "strip-ansi": "4.0.0", + "through": "2.3.8" + } + }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "slice-ansi": { + "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0" + "safe-buffer": "5.1.1" } }, "string-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", - "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -318,40 +552,51 @@ } }, "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", "dev": true, "requires": { "has-flag": "2.0.0" } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0" + } } } }, "@ionic/cli-utils": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@ionic/cli-utils/-/cli-utils-1.5.0.tgz", - "integrity": "sha512-w0eissKYEnDAAs/pw5CA1ix8/SPWhvYZ+XeDDbUhq6CCgTnBqVkyTEFC/D+KTkALySqQUX8cKQ1NUKMXqOxUDw==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@ionic/cli-utils/-/cli-utils-1.7.0.tgz", + "integrity": "sha512-PNGDtLwqX8RL6fbE5WnyBndIfBzxuo4eglhW8+VFhCm/5m83/sCsr1+7gflt7ldUVlD8j0/SaPByYEm0JFq/Jg==", "dev": true, "requires": { - "archiver": "1.3.0", - "chalk": "2.0.1", + "archiver": "2.0.0", + "chalk": "2.1.0", "ci-info": "1.0.0", - "cross-spawn": "4.0.2", + "cross-spawn": "5.1.0", "dargs": "5.1.0", - "inquirer": "3.2.0", + "dev-null": "0.1.1", + "inquirer": "3.2.1", "leek": "0.0.24", "lodash": "4.17.4", "minimist": "1.2.0", "ncp": "2.0.0", - "rimraf": "2.6.1", - "semver": "5.3.0", + "semver": "5.4.1", "slice-ansi": "1.0.0", - "string-width": "2.1.0", + "string-width": "2.1.1", "strip-ansi": "4.0.0", "superagent": "3.5.2", + "tslib": "1.7.1", "uuid": "3.1.0", - "wrap-ansi": "2.1.0" + "wrap-ansi": "3.0.1" }, "dependencies": { "ansi-regex": { @@ -361,23 +606,23 @@ "dev": true }, "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { "color-convert": "1.9.0" } }, "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "dev": true, "requires": { - "ansi-styles": "3.1.0", + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" + "supports-color": "4.2.1" } }, "color-convert": { @@ -390,12 +635,13 @@ } }, "cross-spawn": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz", - "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", "dev": true, "requires": { "lru-cache": "4.1.1", + "shebang-command": "1.2.0", "which": "1.2.14" } }, @@ -411,10 +657,16 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, + "semver": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "dev": true + }, "string-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", - "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -431,13 +683,23 @@ } }, "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", "dev": true, "requires": { "has-flag": "2.0.0" } + }, + "wrap-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", + "integrity": "sha1-KIoE2H7aXChuBg3+jxNc6NAH+Lo=", + "dev": true, + "requires": { + "string-width": "2.1.1", + "strip-ansi": "4.0.0" + } } } }, @@ -456,11 +718,15 @@ "resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.30.tgz", "integrity": "sha1-PWCmv23aOOP4pGlhFZg3nx9klQk=" }, + "@types/node": { + "version": "6.0.85", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.85.tgz", + "integrity": "sha512-6qLZpfQFO/g5Ns2e7RsW6brk0Q6Xzwiw7kVVU/XiQNOiJXSojhX76GP457PBYIsNMH2WfcGgcnZB4awFDHrwpA==" + }, "abbrev": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.0.tgz", - "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=", - "dev": true + "integrity": "sha1-0FVMIlZjbi9W58LlrRg/hZQo2B8=" }, "accepts": { "version": "1.3.3", @@ -494,6 +760,22 @@ } } }, + "agent-base": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.1.1.tgz", + "integrity": "sha1-1t4Q1a9hMtW9aSQn1G/FOFOQlMc=", + "requires": { + "extend": "3.0.1", + "semver": "5.0.3" + }, + "dependencies": { + "semver": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz", + "integrity": "sha1-d0Zt5YnNXTyV8TiqeLxWmjy10no=" + } + } + }, "ajv": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", @@ -526,6 +808,14 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, + "ansi-align": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-1.1.0.tgz", + "integrity": "sha1-LwwWWIKXOa3V67FeawxuNCPwFro=", + "requires": { + "string-width": "1.0.2" + } + }, "ansi-escapes": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", @@ -535,14 +825,17 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" }, "anymatch": { "version": "1.3.0", @@ -561,9 +854,9 @@ "dev": true }, "archiver": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-1.3.0.tgz", - "integrity": "sha1-TyGU1tj5nfP1MeaIHxTxXVX6ryI=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-2.0.0.tgz", + "integrity": "sha1-/7c+zM2N1lsAGeEYD3gJKgU9Q8Q=", "dev": true, "requires": { "archiver-utils": "1.3.0", @@ -655,6 +948,11 @@ } } }, + "archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + }, "are-we-there-yet": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz", @@ -724,6 +1022,11 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "dev": true }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" + }, "array-unique": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", @@ -733,8 +1036,7 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, "asn1": { "version": "0.2.3", @@ -797,8 +1099,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "autoprefixer": { "version": "6.7.2", @@ -1242,8 +1543,7 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base62": { "version": "0.1.1", @@ -1328,6 +1628,11 @@ "inherits": "2.0.3" } }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" + }, "bn.js": { "version": "4.11.7", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.7.tgz", @@ -1355,11 +1660,26 @@ "hoek": "2.16.3" } }, + "boxen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-0.6.0.tgz", + "integrity": "sha1-g2TUJIrDT/DvGy8r9JpsYM4NgbY=", + "requires": { + "ansi-align": "1.1.0", + "camelcase": "2.1.1", + "chalk": "1.1.3", + "cli-boxes": "1.0.0", + "filled-array": "1.1.0", + "object-assign": "4.1.1", + "repeating": "2.0.1", + "string-width": "1.0.2", + "widest-line": "1.0.0" + } + }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dev": true, "requires": { "balanced-match": "1.0.0", "concat-map": "0.0.1" @@ -1536,8 +1856,7 @@ "camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" }, "camelcase-keys": { "version": "2.1.0", @@ -1555,6 +1874,11 @@ "integrity": "sha1-Yjot40WM7KN5hGqPFw57F3HHw6M=", "dev": true }, + "capture-stack-trace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.0.tgz", + "integrity": "sha1-Sm+gc5nCa7pH8LJJa00PtAjFVQ0=" + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -1575,7 +1899,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, "requires": { "ansi-styles": "2.2.1", "escape-string-regexp": "1.0.5", @@ -1587,8 +1910,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" } } }, @@ -1680,6 +2002,11 @@ } } }, + "cli-boxes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-1.0.0.tgz", + "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=" + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -1689,6 +2016,22 @@ "restore-cursor": "2.0.0" } }, + "cli-truncate": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", + "integrity": "sha1-nxXPuwcFAFNpIWxiasfQWrkN1XQ=", + "requires": { + "slice-ansi": "0.0.4", + "string-width": "1.0.2" + }, + "dependencies": { + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=" + } + } + }, "cli-width": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", @@ -1706,6 +2049,11 @@ "wrap-ansi": "2.1.0" } }, + "clone": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", + "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=" + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -1715,8 +2063,7 @@ "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, "color-convert": { "version": "0.5.3", @@ -1734,11 +2081,19 @@ "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "dev": true }, + "columnify": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", + "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "requires": { + "strip-ansi": "3.0.1", + "wcwidth": "1.0.1" + } + }, "combined-stream": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", - "dev": true, "requires": { "delayed-stream": "1.0.0" } @@ -1770,14 +2125,59 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "dev": true, + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz", + "integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=", + "requires": { + "inherits": "2.0.3", + "readable-stream": "2.3.3", + "typedarray": "0.0.6" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", - "dev": true, "requires": { "core-util-is": "1.0.2", "inherits": "2.0.3", @@ -1792,18 +2192,34 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, "requires": { "safe-buffer": "5.1.1" } } } }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "configstore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-2.1.0.tgz", + "integrity": "sha1-c3o6cDbpiGECqmCZ5HuzOrGroaE=", + "requires": { + "dot-prop": "3.0.0", + "graceful-fs": "4.1.11", + "mkdirp": "0.5.1", + "object-assign": "4.1.1", + "os-tmpdir": "1.0.2", + "osenv": "0.1.4", + "uuid": "2.0.3", + "write-file-atomic": "1.3.4", + "xdg-basedir": "2.0.0" + }, + "dependencies": { + "uuid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "integrity": "sha1-Z+LoY3lyFVMN/zGOW/nc6/1Hsho=" + } + } }, "console-browserify": { "version": "1.1.0", @@ -2214,6 +2630,14 @@ "elliptic": "6.4.0" } }, + "create-error-class": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz", + "integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=", + "requires": { + "capture-stack-trace": "1.0.0" + } + }, "create-hash": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.1.3.tgz", @@ -2320,7 +2744,6 @@ "version": "2.6.8", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", - "dev": true, "requires": { "ms": "2.0.0" } @@ -2331,11 +2754,23 @@ "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, + "deep-extend": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.4.2.tgz", + "integrity": "sha1-SLaZwn4zS/ifEIkr5DL25MfTSn8=" + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "requires": { + "clone": "1.0.2" + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" }, "delegates": { "version": "1.0.0", @@ -2369,11 +2804,16 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dev": true, "requires": { "repeating": "2.0.1" } }, + "dev-null": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/dev-null/-/dev-null-0.1.1.tgz", + "integrity": "sha1-WiBc48Ky73e2I41roXnrdMag6Bg=", + "dev": true + }, "diff": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/diff/-/diff-2.2.3.tgz", @@ -2415,6 +2855,51 @@ "integrity": "sha1-hnqksJP6oF8d4IwG9NeyH9+GmLw=", "dev": true }, + "dot-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz", + "integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=", + "requires": { + "is-obj": "1.0.1" + } + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "ecc-jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", @@ -2437,6 +2922,28 @@ "integrity": "sha1-CDl5NIkcvPrrvRi4KpW1pIETg2k=", "dev": true }, + "elegant-spinner": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", + "integrity": "sha1-2wQ1IcldfjA/2PNFvtwzSc+wcp4=" + }, + "elementtree": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/elementtree/-/elementtree-0.1.7.tgz", + "integrity": "sha1-mskb5uUvtuYkTE5UpKw+2K6OKcA=", + "dev": true, + "requires": { + "sax": "1.1.4" + }, + "dependencies": { + "sax": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.1.4.tgz", + "integrity": "sha1-dLbTPJrh4AFRDxeakRaFiPGu2qk=", + "dev": true + } + } + }, "elliptic": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", @@ -2508,7 +3015,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", - "dev": true, "requires": { "is-arrayish": "0.2.1" } @@ -2532,8 +3038,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "esmangle-evaluator": { "version": "1.0.1", @@ -2578,6 +3083,11 @@ "create-hash": "1.1.3" } }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=" + }, "expand-brackets": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", @@ -2656,8 +3166,7 @@ "extend": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", - "dev": true + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=" }, "external-editor": { "version": "2.0.4", @@ -2733,6 +3242,11 @@ "repeat-string": "1.6.1" } }, + "filled-array": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filled-array/-/filled-array-1.1.0.tgz", + "integrity": "sha1-w8T2xmO5I0WamqKZEtLQMfFQf4Q=" + }, "finalhandler": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-0.5.1.tgz", @@ -2827,7 +3341,6 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", - "dev": true, "requires": { "asynckit": "0.4.0", "combined-stream": "1.0.5", @@ -2871,8 +3384,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fstream": { "version": "1.0.11", @@ -2886,6 +3398,11 @@ "rimraf": "2.6.1" } }, + "function-bind": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.0.tgz", + "integrity": "sha1-FhdnFMgBeY5Ojyz391KUZ7tKV3E=" + }, "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", @@ -2944,7 +3461,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, "requires": { "fs.realpath": "1.0.0", "inflight": "1.0.6", @@ -2990,11 +3506,61 @@ "minimatch": "3.0.4" } }, + "got": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz", + "integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=", + "requires": { + "create-error-class": "3.0.2", + "duplexer2": "0.1.4", + "is-redirect": "1.0.0", + "is-retry-allowed": "1.1.0", + "is-stream": "1.1.0", + "lowercase-keys": "1.0.0", + "node-status-codes": "1.0.0", + "object-assign": "4.1.1", + "parse-json": "2.2.0", + "pinkie-promise": "2.0.1", + "read-all-stream": "3.1.0", + "readable-stream": "2.3.3", + "timed-out": "3.1.3", + "unzip-response": "1.0.2", + "url-parse-lax": "1.0.0" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "graceful-readlink": { "version": "1.0.1", @@ -3018,11 +3584,18 @@ "har-schema": "1.0.5" } }, + "has": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", + "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", + "requires": { + "function-bind": "1.1.0" + } + }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -3036,8 +3609,7 @@ "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, "hash-base": { "version": "2.0.2", @@ -3114,6 +3686,16 @@ "statuses": "1.3.1" } }, + "http-proxy-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-1.0.0.tgz", + "integrity": "sha1-zBzjjkU7+YSg93AtLdWcc9CBKEo=", + "requires": { + "agent-base": "2.1.1", + "debug": "2.6.8", + "extend": "3.0.1" + } + }, "http-signature": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", @@ -3131,6 +3713,16 @@ "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=", "dev": true }, + "https-proxy-agent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", + "integrity": "sha1-NffabEjOTdv6JkiRrFk+5f+GceY=", + "requires": { + "agent-base": "2.1.1", + "debug": "2.6.8", + "extend": "3.0.1" + } + }, "iconv-lite": { "version": "0.4.18", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.18.tgz", @@ -3148,6 +3740,11 @@ "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, "in-publish": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", @@ -3173,7 +3770,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "1.4.0", "wrappy": "1.0.2" @@ -3184,6 +3780,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ini": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.4.tgz", + "integrity": "sha1-BTfLedr1m1mhpRff9wbIbsA5Fi4=" + }, "inline-process-browser": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/inline-process-browser/-/inline-process-browser-1.0.0.tgz", @@ -3194,13 +3795,13 @@ } }, "inquirer": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.0.tgz", - "integrity": "sha512-4CyUYMP7lOBkiUU1rR24WGrfRX6SucwbY2Mqb1PdApU24wnTIk4TsnkQwV72dDdIKZ2ycLP+fWCV+tA7wwgoew==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.1.tgz", + "integrity": "sha512-QgW3eiPN8gpj/K5vVpHADJJgrrF0ho/dZGylikGX7iqAdRgC9FVKYKWFLx6hZDBFcOLEoSqINYrVPeFAeG/PdA==", "dev": true, "requires": { "ansi-escapes": "2.0.0", - "chalk": "2.0.1", + "chalk": "2.1.0", "cli-cursor": "2.1.0", "cli-width": "2.1.0", "external-editor": "2.0.4", @@ -3210,7 +3811,7 @@ "run-async": "2.3.0", "rx-lite": "4.0.8", "rx-lite-aggregates": "4.0.8", - "string-width": "2.1.0", + "string-width": "2.1.1", "strip-ansi": "4.0.0", "through": "2.3.8" }, @@ -3222,23 +3823,23 @@ "dev": true }, "ansi-styles": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.1.0.tgz", - "integrity": "sha1-CcIC1ckX7CMYjKpcnLkXnNlUd1A=", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { "color-convert": "1.9.0" } }, "chalk": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.0.1.tgz", - "integrity": "sha512-Mp+FXEI+FrwY/XYV45b2YD3E8i3HwnEAoFcM0qlZzq/RZ9RwWitt2Y/c7cqRAz70U7hfekqx6qNYthuKFO6K0g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", "dev": true, "requires": { - "ansi-styles": "3.1.0", + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "supports-color": "4.2.0" + "supports-color": "4.2.1" } }, "color-convert": { @@ -3263,9 +3864,9 @@ "dev": true }, "string-width": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.0.tgz", - "integrity": "sha1-AwZkVh/BRslCPsfZeP4kV0N/5tA=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "2.0.0", @@ -3282,9 +3883,9 @@ } }, "supports-color": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.0.tgz", - "integrity": "sha512-Ts0Mu/A1S1aZxEJNG88I4Oc9rcZSBFNac5e27yh4j2mqbhZSSzR1Ah79EYwSn9Zuh7lrlGD2cVGzw1RKGzyLSg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", "dev": true, "requires": { "has-flag": "2.0.0" @@ -3302,7 +3903,6 @@ "version": "2.2.2", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", - "dev": true, "requires": { "loose-envify": "1.3.1" } @@ -3313,6 +3913,77 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, + "ionic": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/ionic/-/ionic-3.7.0.tgz", + "integrity": "sha512-JAsPGTdH2oZlnhnifWPD4AO0nGhjUOEHrmjHhh0QUgyj62eAi4R48Rk4/n3PxGeCERslCi9LmNyOdXlsfT4YYw==", + "dev": true, + "requires": { + "@ionic/cli-utils": "1.7.0", + "chalk": "2.1.0", + "diff": "3.3.0", + "minimist": "1.2.0", + "opn": "5.1.0", + "os-name": "2.0.1", + "rimraf": "2.6.1", + "semver": "5.3.0", + "ssh-config": "1.0.1", + "tar": "2.2.1", + "tslib": "1.7.1" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + }, + "chalk": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.1.0.tgz", + "integrity": "sha512-LUHGS/dge4ujbXMJrnihYMcL4AoOweGnw9Tp3kQuqy1Kx5c1qKjqvMJZ6nVJPMWJtKCTN72ZogH3oeSO9g9rXQ==", + "dev": true, + "requires": { + "ansi-styles": "3.2.0", + "escape-string-regexp": "1.0.5", + "supports-color": "4.2.1" + } + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "dev": true, + "requires": { + "color-name": "1.1.2" + } + }, + "diff": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", + "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==", + "dev": true + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + }, + "supports-color": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.2.1.tgz", + "integrity": "sha512-qxzYsob3yv6U+xMzPrv170y8AwGP7i74g+pbixCfD6rgso8BscLT2qXIuz6TpOaiJZ3mFgT5O9lyT9nMU4LfaA==", + "dev": true, + "requires": { + "has-flag": "2.0.0" + } + } + } + }, "ionic-angular": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/ionic-angular/-/ionic-angular-3.1.0.tgz", @@ -3334,11 +4005,19 @@ "integrity": "sha1-HgOlL9rYOou7KyXL9JmLTP/NPew=", "dev": true }, + "is-absolute": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", + "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", + "requires": { + "is-relative": "0.2.1", + "is-windows": "0.2.0" + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, "is-binary-path": { "version": "1.0.1", @@ -3395,7 +4074,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, "requires": { "number-is-nan": "1.0.1" } @@ -3404,7 +4082,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, "requires": { "number-is-nan": "1.0.1" } @@ -3418,6 +4095,11 @@ "is-extglob": "1.0.0" } }, + "is-npm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz", + "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" + }, "is-number": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", @@ -3427,6 +4109,16 @@ "kind-of": "3.2.2" } }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -3445,16 +4137,57 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, + "is-redirect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz", + "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=" + }, + "is-relative": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", + "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "requires": { + "is-unc-path": "0.1.2" + } + }, + "is-retry-allowed": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz", + "integrity": "sha1-EaBgVotnM5REAz0BJaYaINVk+zQ=" + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-unc-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", + "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", + "requires": { + "unc-path-regex": "0.1.2" + } + }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" + }, + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=" + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, "isarray": { @@ -3472,7 +4205,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, "requires": { "isarray": "1.0.0" }, @@ -3480,8 +4212,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=" } } }, @@ -3500,8 +4231,7 @@ "js-tokens": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", - "dev": true + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" }, "jsbn": { "version": "0.1.1", @@ -3619,12 +4349,25 @@ "is-buffer": "1.1.5" } }, + "latest-version": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-2.0.0.tgz", + "integrity": "sha1-VvjWE5YghHuAF/jx9NeOIRMkFos=", + "requires": { + "package-json": "2.4.0" + } + }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", "dev": true }, + "lazy-req": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/lazy-req/-/lazy-req-1.1.0.tgz", + "integrity": "sha1-va6+rTD42CQDnODOFJ1Nqge6H6w=" + }, "lazystream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", @@ -3710,6 +4453,11 @@ "unreachable-branch-transform": "0.3.0" } }, + "listify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/listify/-/listify-1.0.0.tgz", + "integrity": "sha1-A8p7otFQ1CZ3c/dOV1WNEFPSvuM=" + }, "livereload-js": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz", @@ -3764,6 +4512,11 @@ "localforage": "1.4.3" } }, + "lockfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/lockfile/-/lockfile-1.0.3.tgz", + "integrity": "sha1-Jjj8OaAzHpysGgS3F5mTHJxQ33k=" + }, "lodash": { "version": "4.17.4", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", @@ -3874,6 +4627,44 @@ "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", "dev": true }, + "log-update": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-1.0.2.tgz", + "integrity": "sha1-GZKfZMQJPS0ucHWh2tivWcKWuNE=", + "requires": { + "ansi-escapes": "1.4.0", + "cli-cursor": "1.0.2" + }, + "dependencies": { + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=" + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "requires": { + "restore-cursor": "1.0.1" + } + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=" + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "requires": { + "exit-hook": "1.1.1", + "onetime": "1.1.0" + } + } + } + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -3884,7 +4675,6 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", - "dev": true, "requires": { "js-tokens": "3.0.2" } @@ -3899,6 +4689,11 @@ "signal-exit": "3.0.2" } }, + "lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" + }, "lru-cache": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz", @@ -3924,6 +4719,19 @@ "vlq": "0.2.2" } }, + "make-error": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.0.tgz", + "integrity": "sha1-Uq06M5zPEM5itAQLcI/nByRLi5Y=" + }, + "make-error-cause": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/make-error-cause/-/make-error-cause-1.2.2.tgz", + "integrity": "sha1-3wOI/NCzeBbf8KX7gQiTl3fcvJ0=", + "requires": { + "make-error": "1.3.0" + } + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -4048,14 +4856,12 @@ "mime-db": { "version": "1.27.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.27.0.tgz", - "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=", - "dev": true + "integrity": "sha1-gg9XIpa70g7CXtVeW13oaeVDbrE=" }, "mime-types": { "version": "2.1.15", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.15.tgz", "integrity": "sha1-pOv1BkCUVpI3uM9wBGd20J/JKu0=", - "dev": true, "requires": { "mime-db": "1.27.0" } @@ -4082,7 +4888,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "1.1.8" } @@ -4115,8 +4920,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "mute-stream": { "version": "0.0.7", @@ -4142,6 +4946,17 @@ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "dev": true }, + "ng2-truncate": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ng2-truncate/-/ng2-truncate-1.3.5.tgz", + "integrity": "sha1-i/Crp2UEZV/e45YEuiMTDc1uvDg=", + "requires": { + "@angular/compiler-cli": "4.0.2", + "@angular/core": "4.0.2", + "@angular/platform-server": "4.3.4", + "typings": "1.5.0" + } + }, "node-gyp": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz", @@ -4266,6 +5081,11 @@ } } }, + "node-status-codes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-status-codes/-/node-status-codes-1.0.0.tgz", + "integrity": "sha1-WuVUHQJGRdMqWPzdyc7s6nrjrC8=" + }, "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", @@ -4323,8 +5143,7 @@ "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" }, "oauth-sign": { "version": "0.8.2", @@ -4335,8 +5154,7 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-keys": { "version": "1.0.11", @@ -4353,6 +5171,14 @@ "is-extendable": "0.1.1" } }, + "object.pick": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.2.0.tgz", + "integrity": "sha1-tTkr7peC2m2ft9avr1OXefEjTCs=", + "requires": { + "isobject": "2.1.0" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -4366,7 +5192,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1.0.2" } @@ -4380,6 +5205,15 @@ "mimic-fn": "1.1.0" } }, + "opn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.1.0.tgz", + "integrity": "sha512-iPNl7SyM8L30Rm1sjGdLLheyHVw5YXVfi3SKWJzBI7efxRwHojfRFjwE/OLM6qp9xJYMgab8WicTU1cPoY+Hpg==", + "dev": true, + "requires": { + "is-wsl": "1.1.0" + } + }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", @@ -4413,8 +5247,7 @@ "os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" }, "os-locale": { "version": "1.4.0", @@ -4438,14 +5271,12 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.4.tgz", "integrity": "sha1-Qv5tWVPfBsgGS+bxdsPQWqqjRkQ=", - "dev": true, "requires": { "os-homedir": "1.0.2", "os-tmpdir": "1.0.2" @@ -4462,6 +5293,17 @@ "object-assign": "4.1.1" } }, + "package-json": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz", + "integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=", + "requires": { + "got": "5.7.1", + "registry-auth-token": "3.3.1", + "registry-url": "3.1.0", + "semver": "5.3.0" + } + }, "pako": { "version": "0.2.9", "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", @@ -4497,11 +5339,18 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, "requires": { "error-ex": "1.3.1" } }, + "parse5": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.2.tgz", + "integrity": "sha1-Be/1fw70V3+xRKefi5qWemzERRA=", + "requires": { + "@types/node": "6.0.85" + } + }, "parseurl": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", @@ -4526,8 +5375,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-parse": { "version": "1.0.5", @@ -4582,18 +5430,59 @@ "pinkie": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" }, "pinkie-promise": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, "requires": { "pinkie": "2.0.4" } }, + "popsicle": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/popsicle/-/popsicle-8.2.0.tgz", + "integrity": "sha1-/0QBAFyrQ6lBipFBBhHAAZdxLSE=", + "requires": { + "any-promise": "1.3.0", + "arrify": "1.0.1", + "concat-stream": "1.6.0", + "form-data": "2.1.4", + "make-error-cause": "1.2.2", + "throwback": "1.1.1", + "tough-cookie": "2.3.2", + "xtend": "4.0.1" + } + }, + "popsicle-proxy-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/popsicle-proxy-agent/-/popsicle-proxy-agent-3.0.0.tgz", + "integrity": "sha1-uRM8VdlFdZq37mG3cRNkYg066tw=", + "requires": { + "http-proxy-agent": "1.0.0", + "https-proxy-agent": "1.0.0" + } + }, + "popsicle-retry": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/popsicle-retry/-/popsicle-retry-3.2.1.tgz", + "integrity": "sha1-4G6GZTO0KnoSPrMwy+Y6fOvLoQw=", + "requires": { + "any-promise": "1.3.0", + "xtend": "4.0.1" + } + }, + "popsicle-rewrite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/popsicle-rewrite/-/popsicle-rewrite-1.0.0.tgz", + "integrity": "sha1-HdTo6pwxgjUfuCD4eTTZkvf7kAc=" + }, + "popsicle-status": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/popsicle-status/-/popsicle-status-2.0.1.tgz", + "integrity": "sha1-jdcMT+fGlBCa3XhP/oDqysHnso0=" + }, "postcss": { "version": "5.2.11", "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.11.tgz", @@ -4612,6 +5501,11 @@ "integrity": "sha1-h/OPnxj3dKSrTIojL1xc6IcqnRU=", "dev": true }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, "preserve": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", @@ -4638,8 +5532,15 @@ "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "dev": true + "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=" + }, + "promise-finally": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/promise-finally/-/promise-finally-2.2.1.tgz", + "integrity": "sha1-ImFsS6kCkW6Yi9RsVNfKoIkQzXc=", + "requires": { + "any-promise": "1.3.0" + } }, "proxy-addr": { "version": "1.1.4", @@ -4685,8 +5586,7 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, "qs": { "version": "6.2.0", @@ -4772,6 +5672,55 @@ "string_decoder": "0.10.31" } }, + "rc": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.1.tgz", + "integrity": "sha1-LgPo5C7kULjLPc5lvhv4l04d/ZU=", + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + } + }, + "read-all-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz", + "integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=", + "requires": { + "pinkie-promise": "2.0.1", + "readable-stream": "2.3.3" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "readable-stream": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "requires": { + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "safe-buffer": "5.1.1", + "string_decoder": "1.0.3", + "util-deprecate": "1.0.2" + } + }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "requires": { + "safe-buffer": "5.1.1" + } + } + } + }, "read-pkg": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", @@ -4897,6 +5846,23 @@ "is-primitive": "2.0.0" } }, + "registry-auth-token": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz", + "integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=", + "requires": { + "rc": "1.2.1", + "safe-buffer": "5.1.1" + } + }, + "registry-url": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", + "integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=", + "requires": { + "rc": "1.2.1" + } + }, "remove-trailing-separator": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", @@ -4919,7 +5885,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dev": true, "requires": { "is-finite": "1.0.2" } @@ -5006,7 +5971,6 @@ "version": "2.6.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", - "dev": true, "requires": { "glob": "7.1.2" } @@ -5216,8 +6180,7 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", - "dev": true + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" }, "safe-json-parse": { "version": "1.0.1", @@ -5267,8 +6230,15 @@ "semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", - "dev": true + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "requires": { + "semver": "5.3.0" + } }, "send": { "version": "0.14.2", @@ -5410,6 +6380,11 @@ } } }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" + }, "sntp": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", @@ -5419,6 +6394,14 @@ "hoek": "2.16.3" } }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "requires": { + "is-plain-obj": "1.1.0" + } + }, "source-list-map": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz", @@ -5465,6 +6448,12 @@ "integrity": "sha1-Nr54Mgr+WAH2zqPueLblqrlA6gw=", "dev": true }, + "ssh-config": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ssh-config/-/ssh-config-1.0.1.tgz", + "integrity": "sha1-OHQhFtztfUX1NiyoavdxMMy+vIs=", + "dev": true + }, "sshpk": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", @@ -5638,7 +6627,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, "requires": { "code-point-at": "1.1.0", "is-fullwidth-code-point": "1.0.0", @@ -5655,7 +6643,6 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -5664,7 +6651,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, "requires": { "is-utf8": "0.2.1" } @@ -5678,6 +6664,11 @@ "get-stdin": "4.0.1" } }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + }, "superagent": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/superagent/-/superagent-3.5.2.tgz", @@ -5812,6 +6803,19 @@ } } }, + "thenify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.0.tgz", + "integrity": "sha1-5p44obq+lpsBCCB5eLn2K4hgSDk=", + "requires": { + "any-promise": "1.3.0" + } + }, + "throat": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-3.2.0.tgz", + "integrity": "sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==" + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -5826,6 +6830,19 @@ "xtend": "4.0.1" } }, + "throwback": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/throwback/-/throwback-1.1.1.tgz", + "integrity": "sha1-8AfnwXYEptFtegfEGqDo/txhhKQ=", + "requires": { + "any-promise": "1.3.0" + } + }, + "timed-out": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-3.1.3.tgz", + "integrity": "sha1-lYYL/MXHbCd/j4Mm/Q9bLiDrohc=" + }, "timers-browserify": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.2.tgz", @@ -5887,11 +6904,28 @@ "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", "dev": true }, + "touch": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz", + "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=", + "requires": { + "nopt": "1.0.10" + }, + "dependencies": { + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "requires": { + "abbrev": "1.1.0" + } + } + } + }, "tough-cookie": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", - "dev": true, "requires": { "punycode": "1.4.1" } @@ -5919,6 +6953,11 @@ "source-map-support": "0.4.15" } }, + "tslib": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.7.1.tgz", + "integrity": "sha1-vIAEFkaRkjp5/oN4u+s9ogF1OOw=" + }, "tslint": { "version": "3.15.1", "resolved": "https://registry.npmjs.org/tslint/-/tslint-3.15.1.tgz", @@ -5976,11 +7015,91 @@ "mime-types": "2.1.15" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, "typescript": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.2.2.tgz", - "integrity": "sha1-YGAiUIR5tV/6NotY/uljoD39eww=", - "dev": true + "integrity": "sha1-YGAiUIR5tV/6NotY/uljoD39eww=" + }, + "typings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/typings/-/typings-1.5.0.tgz", + "integrity": "sha1-udI2zx03RghU+MZx6kldlAW4ED8=", + "requires": { + "any-promise": "1.3.0", + "archy": "1.0.0", + "bluebird": "3.5.0", + "chalk": "1.1.3", + "cli-truncate": "0.2.1", + "columnify": "1.5.4", + "elegant-spinner": "1.0.1", + "has-unicode": "2.0.1", + "listify": "1.0.0", + "log-update": "1.0.2", + "minimist": "1.2.0", + "promise-finally": "2.2.1", + "typings-core": "1.6.1", + "update-notifier": "1.0.3", + "wordwrap": "1.0.0", + "xtend": "4.0.1" + }, + "dependencies": { + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + } + } + }, + "typings-core": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/typings-core/-/typings-core-1.6.1.tgz", + "integrity": "sha1-zkspMeovGbuPPay+xpmDrE6WSjc=", + "requires": { + "any-promise": "1.3.0", + "array-uniq": "1.0.3", + "configstore": "2.1.0", + "debug": "2.6.8", + "detect-indent": "4.0.0", + "graceful-fs": "4.1.11", + "has": "1.0.1", + "invariant": "2.2.2", + "is-absolute": "0.2.6", + "listify": "1.0.0", + "lockfile": "1.0.3", + "make-error-cause": "1.2.2", + "mkdirp": "0.5.1", + "object.pick": "1.2.0", + "parse-json": "2.2.0", + "popsicle": "8.2.0", + "popsicle-proxy-agent": "3.0.0", + "popsicle-retry": "3.2.1", + "popsicle-rewrite": "1.0.0", + "popsicle-status": "2.0.1", + "promise-finally": "2.2.1", + "rc": "1.2.1", + "rimraf": "2.6.1", + "sort-keys": "1.1.2", + "string-template": "1.0.0", + "strip-bom": "2.0.0", + "thenify": "3.3.0", + "throat": "3.2.0", + "touch": "1.0.0", + "typescript": "2.2.2", + "xtend": "4.0.1", + "zip-object": "0.1.0" + }, + "dependencies": { + "string-template": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string-template/-/string-template-1.0.0.tgz", + "integrity": "sha1-np8iM9wA8hhxjsN5oopWc+zKi5Y=" + } + } }, "uglify-js": { "version": "2.8.22", @@ -6043,6 +7162,11 @@ "integrity": "sha1-rOEWq1V80Zc4ak6I9GhTeMiy5Po=", "dev": true }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + }, "underscore.string": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.4.tgz", @@ -6069,6 +7193,26 @@ "through2": "0.6.5" } }, + "unzip-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-1.0.2.tgz", + "integrity": "sha1-uYTwh3/AqJwsdzzB73tbIytbBv4=" + }, + "update-notifier": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-1.0.3.tgz", + "integrity": "sha1-j5LFFUgr1oMbfJMBPnD4dVLHz1o=", + "requires": { + "boxen": "0.6.0", + "chalk": "1.1.3", + "configstore": "2.1.0", + "is-npm": "1.0.0", + "latest-version": "2.0.0", + "lazy-req": "1.1.0", + "semver-diff": "2.1.0", + "xdg-basedir": "2.0.0" + } + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -6087,6 +7231,14 @@ } } }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "1.0.4" + } + }, "user-home": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz", @@ -6113,8 +7265,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=" }, "utils-merge": { "version": "1.0.0", @@ -6194,6 +7345,14 @@ "graceful-fs": "4.1.11" } }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "requires": { + "defaults": "1.0.3" + } + }, "webpack": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/webpack/-/webpack-2.2.1.tgz", @@ -6315,6 +7474,14 @@ "string-width": "1.0.2" } }, + "widest-line": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-1.0.0.tgz", + "integrity": "sha1-DAnIXCqUaD0Nfq+O4JfVZL8OEFw=", + "requires": { + "string-width": "1.0.2" + } + }, "win-release": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/win-release/-/win-release-1.1.1.tgz", @@ -6349,8 +7516,17 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz", + "integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8=", + "requires": { + "graceful-fs": "4.1.11", + "imurmurhash": "0.1.4", + "slide": "1.1.6" + } }, "ws": { "version": "1.1.1", @@ -6362,6 +7538,19 @@ "ultron": "1.0.2" } }, + "xdg-basedir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz", + "integrity": "sha1-7byQPMOF/ARSPZZqM1UEtVBNG9I=", + "requires": { + "os-homedir": "1.0.2" + } + }, + "xhr2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.1.4.tgz", + "integrity": "sha1-f4dliEdxbbUCYyOBL4GMras4el8=" + }, "xml2js": { "version": "0.4.17", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.17.tgz", @@ -6444,6 +7633,11 @@ } } }, + "zip-object": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/zip-object/-/zip-object-0.1.0.tgz", + "integrity": "sha1-waDaBMiMg3dW4khoCgP/kC7D9To=" + }, "zip-stream": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-1.2.0.tgz", @@ -6489,9 +7683,9 @@ } }, "zone.js": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.12.tgz", - "integrity": "sha1-hv9QU8mK7CkaC/S7rFAdaUoFz7s=" + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.5.tgz", + "integrity": "sha1-eQbgF0gsv/TD8HnFw0MFzpQfW6I=" } } } diff --git a/package.json b/package.json index 451b1fb..7cccad2 100644 --- a/package.json +++ b/package.json @@ -49,14 +49,17 @@ "ionic-angular": "3.1.0", "ionic-plugin-keyboard": "^2.2.1", "ionicons": "3.0.0", + "moment": "^2.18.1", + "ng2-truncate": "1.3.5", "rxjs": "5.1.1", "sw-toolbox": "3.4.0", - "zone.js": "^0.8.5" + "zone.js": "0.8.5" }, "devDependencies": { "@ionic/app-scripts": "1.3.6", - "@ionic/cli-plugin-cordova": "1.4.1", - "@ionic/cli-plugin-ionic-angular": "1.3.2", + "@ionic/cli-plugin-cordova": "1.6.2", + "@ionic/cli-plugin-ionic-angular": "1.4.1", + "ionic": "3.7.0", "typescript": "~2.2.1" }, "cordovaPlugins": [ diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 0302226..48fd238 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,11 +1,12 @@ import { Component, ViewChild } from '@angular/core'; import { SplashScreen } from '@ionic-native/splash-screen'; import { FeedbackPage } from '../pages/feedback/feedback'; +import { IntroPage } from '../pages/intro/intro'; import { LoginPage } from '../pages/login/login'; import { AboutPage } from '../pages/about/about'; import { UserPage} from '../pages/user/user'; import { ReceiptPage } from '../pages/receipt/receipt'; -import { RankingPage } from '../pages/ranking/ranking'; +import { LeaderboardPage } from '../pages/leaderboard/leaderboard'; import { SettingPage} from '../pages/setting/setting'; // import { StatPage} from '../pages/stat/stat'; // import { AccountPage } from '../pages/account/account'; @@ -42,7 +43,7 @@ export class MyApp { loggedInPages: PageInterface[]= [ { title: 'Home', component: UserPage, icon: 'home' }, { title: 'Add Receipt',component: ReceiptPage, index:3,icon: 'filing'}, - { title: 'Leaderboard',component: RankingPage, index:5,icon: 'stats'}, + { title: 'Leaderboard',component: LeaderboardPage, index:5,icon: 'stats'}, // Commented out until it has data // { title: 'Graphs',component: StatPage, index:7,icon: 'analytics'}, { title: 'Account',component: SettingPage, index:9,icon: 'person'}, @@ -97,6 +98,24 @@ export class MyApp { } renderLoginPage() { + this.userData.getReturningEntry().subscribe( + result => { + if (result == true) { + console.log('Returning User, do not show intro page'); + this.rootPage = LoginPage; + this.enableMenu(false); + this.platformReady(); + } else { + console.log('First time user, show intro page'); + this.rootPage = IntroPage; + this.enableMenu(false); + this.platformReady(); + } + }, + err => { + console.log('Error checking if returning user'); + } + ); this.rootPage = LoginPage; this.enableMenu(false); this.platformReady(); diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 163dc44..252e4d4 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -12,6 +12,7 @@ import { Keyboard } from '@ionic-native/keyboard'; import { FilePath } from '@ionic-native/file-path'; import { File } from '@ionic-native/file'; import { AppVersion } from '@ionic-native/app-version'; +import { TruncateModule } from 'ng2-truncate'; // import { AppProviders } from './app.providers'; @@ -23,7 +24,7 @@ import { SignupPage } from '../pages/signup/signup'; import { AboutPage } from '../pages/about/about'; import { ReceiptPage } from '../pages/receipt/receipt'; import { UserPage } from '../pages/user/user'; -import { RankingPage } from '../pages/ranking/ranking'; +import { LeaderboardPage } from '../pages/leaderboard/leaderboard'; import { SettingPage } from '../pages/setting/setting'; import { GamePage } from '../pages/game/game'; import { AchievementPage } from '../pages/achievement/achievement'; @@ -31,6 +32,7 @@ import { OverviewPage } from '../pages/overview/overview'; import { AccountPage } from '../pages/account/account'; import { ShopPage } from '../pages/shop/shop'; import { StatPage } from '../pages/stat/stat'; +import { IntroPage } from '../pages/intro/intro'; @NgModule({ declarations: [ @@ -42,7 +44,7 @@ import { StatPage } from '../pages/stat/stat'; AboutPage, ReceiptPage, UserPage, - RankingPage, + LeaderboardPage, SettingPage, AccountPage, OverviewPage, @@ -50,12 +52,14 @@ import { StatPage } from '../pages/stat/stat'; AchievementPage, ShopPage, StatPage, + IntroPage, ], imports: [ IonicModule.forRoot(MyApp,{ scrollAssist: false, autoFocusAssist: false }), IonicStorageModule.forRoot(), BrowserModule, HttpModule, + TruncateModule, ], bootstrap: [IonicApp], entryComponents: [ @@ -67,7 +71,7 @@ import { StatPage } from '../pages/stat/stat'; AboutPage, ReceiptPage, UserPage, - RankingPage, + LeaderboardPage, SettingPage, AccountPage, OverviewPage, @@ -75,6 +79,7 @@ import { StatPage } from '../pages/stat/stat'; AchievementPage, ShopPage, StatPage, + IntroPage, ], providers: [ Transfer, diff --git a/src/app/app.scss b/src/app/app.scss index 097eeab..bace1cc 100644 --- a/src/app/app.scss +++ b/src/app/app.scss @@ -27,3 +27,26 @@ body { ion-app.md { background: none; } + +.item-submit { + font-size: 1.2em; + color: rgba(255, 255, 255, .8); + background: rgba(255, 255, 255, .5); + margin: 1px auto 20px; + width: 90%; + border: 3px solid rgba(255, 255, 255, .8); + border-radius: 10px; +} + +.button-submit { + font-size: 1.1em; + color: rgba(255, 255, 255, .8); + margin: 5px auto; + width: 90%; + border: 3px solid rgba(255, 255, 255, .8); + border-radius: 10px; +} + +.grid-submit { + margin-top: 20%; +} diff --git a/src/pages/feedback/feedback.html b/src/pages/feedback/feedback.html index c35be1c..344f23c 100644 --- a/src/pages/feedback/feedback.html +++ b/src/pages/feedback/feedback.html @@ -12,7 +12,7 @@ - + @@ -21,15 +21,15 @@

Your input is important to us!

-
diff --git a/src/pages/feedback/feedback.scss b/src/pages/feedback/feedback.scss index a61edc6..63fd2d6 100644 --- a/src/pages/feedback/feedback.scss +++ b/src/pages/feedback/feedback.scss @@ -5,29 +5,6 @@ page-feedback { margin: 0px 0px 20px 0px; } - .item-feedback { - font-size: 1.2em; - color: rgba(255, 255, 255, .8); - background: rgba(255, 255, 255, .5); - margin: 1px auto 20px; - width: 90%; - border: 3px solid rgba(255, 255, 255, .8); - border-radius: 10px; - } - - .button-feedback { - font-size: 1.1em; - color: rgba(255, 255, 255, .8); - margin: 5px auto; - width: 90%; - border: 3px solid rgba(255, 255, 255, .8); - border-radius: 10px; - } - - .grid-feedback { - margin-top: 20%; - } - .icon-feedback { height: 25%; margin: 30px auto; diff --git a/src/pages/feedback/feedback.ts b/src/pages/feedback/feedback.ts index bf7ef2a..fe8b755 100644 --- a/src/pages/feedback/feedback.ts +++ b/src/pages/feedback/feedback.ts @@ -84,7 +84,7 @@ export class FeedbackPage { private presentToast(text) { let toast = this.toastCtrl.create({ message: text, - duration: 3000, + duration: 6000, position: 'top' }); toast.present(); diff --git a/src/pages/intro/intro.html b/src/pages/intro/intro.html new file mode 100644 index 0000000..707eea1 --- /dev/null +++ b/src/pages/intro/intro.html @@ -0,0 +1,32 @@ + + + + Local Loop + + + + + + + + + +

Welcome to Local Loop

+
+
+ + + +

Please Register or Login with your account!
You will need a token to register.

+
+ + + + +
+ + + +
+ +
diff --git a/src/pages/intro/intro.scss b/src/pages/intro/intro.scss new file mode 100644 index 0000000..4c13b1f --- /dev/null +++ b/src/pages/intro/intro.scss @@ -0,0 +1,40 @@ +page-intro { + h1 { + font-size: 3em; + color: rgba(255, 255, 255, .8); + margin: 0px 0px 10px 0px; + vertical-align: middle; + } + + h2 { + font-size: 1.2em; + line-height: 1.2em; + color: rgba(255, 255, 255, .8); + margin: 0px 0px 10px 0px; + } + + .home-intro { + scroll-content { + display: flex; + flex-direction: column; + } + + ion-grid { + margin-top: 20px; + padding: 0; + height: 100%; + } + + ion-row { + flex: 1; + overflow: 0; + } + } + + .icon-intro { + height: 100%; + // width: 25%; + margin: 50px auto; + display: block; + } +} diff --git a/src/pages/intro/intro.ts b/src/pages/intro/intro.ts new file mode 100644 index 0000000..c3e734d --- /dev/null +++ b/src/pages/intro/intro.ts @@ -0,0 +1,31 @@ +import { Component } from '@angular/core'; +import { NavController } from 'ionic-angular'; +import { LoginPage } from '../login/login'; +import { SignupPage } from '../signup/signup'; +import { UserData } from '../../providers/user-data'; + + +/* interface of home page*/ +@Component({ + selector: 'page-intro', + templateUrl: 'intro.html', + providers: [ UserData ] +}) + +export class IntroPage { + + constructor( + private navCtrl: NavController, + private userData: UserData, + ) {} + + goToLogin() { + this.navCtrl.setRoot(LoginPage); + } + + goToSignup() { + this.navCtrl.setRoot(LoginPage); + this.navCtrl.push(SignupPage); + } + +} diff --git a/src/pages/ranking/ranking.html b/src/pages/leaderboard/leaderboard.html similarity index 66% rename from src/pages/ranking/ranking.html rename to src/pages/leaderboard/leaderboard.html index f69c9a4..7fb7320 100644 --- a/src/pages/ranking/ranking.html +++ b/src/pages/leaderboard/leaderboard.html @@ -4,7 +4,7 @@ - League Tables + Leaderboard @@ -12,7 +12,7 @@
- + Leaderboard @@ -44,17 +44,17 @@
- + - + -

{{ item.position }}

+

{{ item.position }}

- + -

You

- {{ item.display_name }} - {{ listType.includes('total') ? (item.value | currency:'GBP':true:'1.2-2') : item.value }} +

You

+ {{ item.display_name | truncate : 16 }} + {{ listType.includes('total') ? (item.value | currency:'GBP':true:'1.2-2') : (item.value | number:'1.0-0') }} diff --git a/src/pages/leaderboard/leaderboard.scss b/src/pages/leaderboard/leaderboard.scss new file mode 100644 index 0000000..face379 --- /dev/null +++ b/src/pages/leaderboard/leaderboard.scss @@ -0,0 +1,58 @@ +page-leaderboard{ + + // display top three players in red + + .topThree{ + p{ + color: rgba(255, 100, 100, 1); + font-weight: 700; + } + } + + .leaderboard-list{ + padding-left: 0px; + } + + .leaderboard-item{ + padding-left: 16px; + } + + // position list + .listCtrl{ + ion-list{ + // margin: 0px; + // background-color: rgba(255, 255, 255, .6); + background: rgba(255, 255, 255, .5); + margin: 1px auto 20px; + border: 3px solid rgba(255, 255, 255, .8); + border-radius: 10px; + } + } + + // Is this below here redundant??? + // // position icon + // .pos{ + // margin-left:-30px; + // } + + // display user in black and highlighted + .user{ + background-color: red; + font-weight: bold; + color: green; + + p{ + font-weight: bold; + color:black; + } + + } + + .item-md { + background: none; + } + + .leaderboard-segment-button{ + color: rgba(200, 200, 255, 1); + } +} diff --git a/src/pages/ranking/ranking.ts b/src/pages/leaderboard/leaderboard.ts similarity index 86% rename from src/pages/ranking/ranking.ts rename to src/pages/leaderboard/leaderboard.ts index 11758ac..d8f25d4 100644 --- a/src/pages/ranking/ranking.ts +++ b/src/pages/leaderboard/leaderboard.ts @@ -3,19 +3,19 @@ import { NavController, NavParams, ToastController} from 'ionic-angular'; import { PeopleService } from '../../providers/people-service'; /* - This page represent a ranking page/leaderboard. + This page represent a leaderboard page/leaderboard. display players in leaderboard and highlight important information */ @Component({ - selector: 'page-ranking', - templateUrl: 'ranking.html', + selector: 'page-leaderboard', + templateUrl: 'leaderboard.html', providers: [PeopleService] }) -export class RankingPage { +export class LeaderboardPage { - rankingData: Array; + leaderboardData: Array; currentPos: number; - listType: any = 'daily_total'; + listType: any = 'weekly_total'; constructor( public navCtrl: NavController, @@ -28,7 +28,7 @@ export class RankingPage { this.peopleService.leaderboard(this.listType) .subscribe( result => { - this.rankingData = result.leaderboard; + this.leaderboardData = result.leaderboard; this.currentPos = result.user_position; } ); diff --git a/src/pages/login/login.html b/src/pages/login/login.html index d0d592a..6888636 100644 --- a/src/pages/login/login.html +++ b/src/pages/login/login.html @@ -10,7 +10,7 @@ -

LocalLoop

@@ -18,18 +18,18 @@

LocalLoop

-
diff --git a/src/pages/login/login.scss b/src/pages/login/login.scss index 335d892..57d684a 100644 --- a/src/pages/login/login.scss +++ b/src/pages/login/login.scss @@ -5,31 +5,8 @@ h1 { margin: 0px 0px 20px 0px; } -.item-login { - font-size: 1.2em; - color: rgba(255, 255, 255, .8); - background: rgba(255, 255, 255, .5); - margin: 1px auto 20px; - width: 90%; - border: 3px solid rgba(255, 255, 255, .8); - border-radius: 10px; -} - -.button-login { - font-size: 1.1em; - color: rgba(255, 255, 255, .8); - margin: 5px auto; - width: 90%; - border: 3px solid rgba(255, 255, 255, .8); - border-radius: 10px; -} - -.grid-login { - margin-top: 20%; -} - .icon-login { height: 25%; margin: 30px auto; display: block; -} \ No newline at end of file +} diff --git a/src/pages/login/login.ts b/src/pages/login/login.ts index f71f4bd..ba027b0 100644 --- a/src/pages/login/login.ts +++ b/src/pages/login/login.ts @@ -15,6 +15,7 @@ import 'rxjs/add/operator/timeout'; /* interface of home page*/ @Component({ + selector: 'login', templateUrl: 'login.html', providers: [ UserData, PeopleService ] }) @@ -53,8 +54,24 @@ export class LoginPage { .subscribe( result => { this.userData.setSessionKey( result.session_key ); - this.userData.setEmail( this.login.value.email ); - this.userData.setDisplayName( result.display_name ); + // this.userData.setEmail( this.login.value.email ); + this.userData.setUserInfo( + this.login.value.email, + result.display_name, + ); + this.userData.getReturningEntry().subscribe( + result => { + if (result == true) { + console.log('Returning login, do not set'); + } else { + console.log('First time login, set returning login'); + this.userData.setReturningEntry(); + } + }, + err => { + console.log('Error checking if returning user'); + } + ); this.events.publish('user:login') loading.dismiss(); this.navCtrl.setRoot(UserPage); @@ -64,7 +81,7 @@ export class LoginPage { this.events.publish('user:logout') let toast = this.toastCtrl.create({ message: JSON.parse(error._body).message, - duration: 3000, + duration: 6000, position: 'top' }); toast.present(); diff --git a/src/pages/ranking/ranking.scss b/src/pages/ranking/ranking.scss deleted file mode 100644 index c19fee3..0000000 --- a/src/pages/ranking/ranking.scss +++ /dev/null @@ -1,48 +0,0 @@ -page-ranking{ - - // display top three players in red - - .topThree{ - p{ - color: rgba(255, 100, 100, 1); - font-weight: 700; - } - } - - // position list - .listCtrl{ - ion-list{ - margin: 0px; - background-color: rgba(255, 255, 255, .6); - } - } - - // position icon - .pos{ - margin-left:-30px; - } - - // dispaly user in black and highlighted - .user{ - background-color: red; - font-weight: bold; - color: green; - - p{ - font-weight: bold; - color:black; - } - - } - - .item-md { - background: none; - } - - .ranking-segment-button{ - color: rgba(200, 200, 255, 1); - } -} - - - diff --git a/src/pages/receipt/receipt.html b/src/pages/receipt/receipt.html index aa0ab63..1001130 100644 --- a/src/pages/receipt/receipt.html +++ b/src/pages/receipt/receipt.html @@ -60,12 +60,17 @@ - + Enter amount spent below(£) + + + Click to Edit Time of Purchase + + @@ -86,14 +91,14 @@ -
Press the button to add a receipt photo
+
Submit Receipt Photo
+ +
diff --git a/src/pages/receipt/receipt.scss b/src/pages/receipt/receipt.scss index 290d6c0..544e455 100644 --- a/src/pages/receipt/receipt.scss +++ b/src/pages/receipt/receipt.scss @@ -4,29 +4,47 @@ page-receipt { font-size: 1em; color: rgba(255, 255, 255, 1); } - + .item-input .label-md, { font-size: 1em; - color: rgba(200, 255, 255, .8) + color: rgba(200, 255, 255, .8); + ion-item{ + color: rgba(255, 255, 255, .8); + } + } + + .item-datetime .label-md, { + font-size: 1em; + color: rgba(200, 255, 255, .8); + ion-item{ + color: white; + } } - + .float-right { float: right; } - + + // Makes Date text white + .card-2 { + ion-item{ + color: white; + } + } + .item-md .item-button { padding: 5px 30px; height: 36px; font-size: 1.6rem; border: 1px solid rgba(255, 255, 255, .6); } - + ion-label, .labelreceipt { color: rgba(255, 255, 255, 1); font-size: 1.5em; font-weight: 500; } - + .card-md { border: 3px solid rgba(255, 255, 255, 1); background-color: rgba(255, 255, 255, .2); @@ -34,22 +52,22 @@ page-receipt { width: 86%; margin: 15px auto; } - + .cardContent, .item-md { background-color: rgba(255, 255, 255, 0); } - + .cardContent{ background-color: none; color: rgba(255, 255, 255, 1); } - + .cardItem{ .cardItemHeader{ background-color: red; - color:black; + color:black; font-size: 1.3em; padding: 5px; } @@ -62,21 +80,21 @@ page-receipt { .cardItemContent{ background-color: red; color:darkgray; - font-size: 1.0em; - padding:5px; + font-size: 1.0em; + padding:5px; } - border-bottom: 1px solid lightgray; + border-bottom: 1px solid lightgray; } .btnColor{ color:white; - font-size: 1.5em; + font-size: 1.5em; width:100%; } - + .pearUpCtrl{ - + width: 100%; background: none; padding: 0px; @@ -86,7 +104,7 @@ page-receipt { width: 8em; background: none; } - + button{ z-index: 99; background-color: #f5f5f5; @@ -101,7 +119,7 @@ page-receipt { align-items: center; } } - + .receiptCtrl{ margin-top: 20%; } @@ -111,13 +129,13 @@ page-receipt { color: rgba(255, 255, 255, 1); line-height: .4em; } - + .address-street { font-size: .7em; color: rgba(255, 255, 255, .7); line-height: .6em; } - + .address-town { font-size: .6em; color: rgba(255, 255, 255, .5); diff --git a/src/pages/receipt/receipt.ts b/src/pages/receipt/receipt.ts index 7dc5ad4..ecca4f7 100644 --- a/src/pages/receipt/receipt.ts +++ b/src/pages/receipt/receipt.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core'; +import { Component, Input } from '@angular/core'; import { NavController, NavParams, Platform, LoadingController, Loading, ToastController @@ -11,6 +11,8 @@ import { File } from '@ionic-native/file'; import { Keyboard } from '@ionic-native/keyboard'; import { PeopleService } from '../../providers/people-service'; import { UserData } from '../../providers/user-data'; +import { UserPage } from '../user/user'; +import * as moment from 'moment'; // handles image upload on mobile dvices declare var cordova: any; @@ -51,11 +53,13 @@ export class ReceiptPage { currentStep: number = 1; + myDate: string; + constructor( public actionSheetCtrl: ActionSheetController, public loadingCtrl: LoadingController, public toastCtrl: ToastController, - public nav: NavController, + public navCtrl: NavController, public platform: Platform, public peopleService: PeopleService, public userData: UserData, @@ -66,7 +70,29 @@ export class ReceiptPage { private transfer: Transfer, private file: File, public alertCtrl: AlertController // alert screen for confirmation of receipt entries - ) {} + ) { + this.myDate = moment().format('YYYY-MM-DD[T]HH:mm:ss.SSSZ'); + } + + // calculateTime(offset: any) { + // // create Date object for current location + // let d = new Date(); + // + // // create new Date object using supplied offset + // let nd = new Date(d.getTime() + (3600000 * offset)); + // + // return nd.toISOString(); + // } + // + // stdTimezoneOffset(today: any) { + // let jan = new Date(today.getFullYear(), 0, 1); + // let jul = new Date(today.getFullYear(), 6, 1); + // return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset()); + // } + // + // dst(today: any) { + // return today.getTimezoneOffset() < this.stdTimezoneOffset(today); + // } ionViewDidEnter(){ this.platform.ready().then(() => { @@ -202,13 +228,15 @@ export class ReceiptPage { console.log(this.platform); // Create options for the Camera Dialog var options: CameraOptions = { - quality: 100, + quality: 50, destinationType: this.camera.DestinationType.FILE_URI, encodingType: this.camera.EncodingType.JPEG, mediaType: this.camera.MediaType.PICTURE, sourceType: sourceType, saveToPhotoAlbum: false, - correctOrientation: true + correctOrientation: true, + targetWidth: 1200, + targetHeight: 1200 }; // Get the data of an image @@ -248,6 +276,7 @@ export class ReceiptPage { myParams = { transaction_type : this.transactionAdditionType, transaction_value : this.amount, + purchase_time : this.myDate, organisation_id : this.organisationId, }; break; @@ -255,6 +284,7 @@ export class ReceiptPage { myParams = { transaction_type : this.transactionAdditionType, transaction_value : this.amount, + purchase_time : this.myDate, organisation_id : this.organisationId, }; break; @@ -262,6 +292,7 @@ export class ReceiptPage { myParams = { transaction_type : this.transactionAdditionType, transaction_value : this.amount, + purchase_time : this.myDate, organisation_name : this.submitOrg.name, street_name : this.submitOrg.street_name, town : this.submitOrg.town, @@ -281,8 +312,7 @@ export class ReceiptPage { console.log('Successful Upload'); console.log(response); this.loading.dismiss(); - this.presentToast('Receipt succesfully submitted.'); - this.resetForm(); + this.readSubmitPrompt(); }, err => { console.log('Upload Error'); @@ -323,10 +353,35 @@ export class ReceiptPage { }); } + private readSubmitPrompt() { + let alert = this.alertCtrl.create({ + title: 'Submitted Receipt!', + message: 'Would you like to submit another receipt?', + buttons: [ + { + text: 'No Thanks', + role: 'Yes I do!', + handler: () => { + console.log('Cancel clicked'); + this.navCtrl.setRoot(UserPage); + } + }, + { + text: 'Yes!', + handler: () => { + console.log('Form reset clicked'); + this.resetForm(); + } + } + ] + }); + alert.present(); +} + private presentToast(text) { let toast = this.toastCtrl.create({ message: text, - duration: 3000, + duration: 6000, position: 'top' }); toast.present(); diff --git a/src/pages/setting/setting.html b/src/pages/setting/setting.html index 86b302d..2ffb2e6 100644 --- a/src/pages/setting/setting.html +++ b/src/pages/setting/setting.html @@ -15,17 +15,32 @@ - - - - - - - - Sign Out - - - - - - + +
+ + Full Name + + + + Display Name + + + + Email + + + + Postcode + + + + Confirm Password + + + + New Password + + + +
+
diff --git a/src/pages/setting/setting.scss b/src/pages/setting/setting.scss index ab90587..fdfd241 100644 --- a/src/pages/setting/setting.scss +++ b/src/pages/setting/setting.scss @@ -1,3 +1,44 @@ page-setting { + h1 { + font-size: 2em; + color: rgba(255, 255, 255, .8); + margin: 0px 0px 20px 0px; + } + .item-setting { + font-size: 1.2em; + color: rgba(255, 255, 255, .8); + background: rgba(255, 255, 255, .5); + margin: 1px auto 20px; + width: 90%; + border: 3px solid rgba(255, 255, 255, .8); + border-radius: 10px; + } + + .button-setting { + font-size: 1.1em; + color: rgba(255, 255, 255, .8); + margin: 5px auto; + width: 90%; + border: 3px solid rgba(255, 255, 255, .8); + border-radius: 10px; + } + + .grid-setting { + margin-top: 20%; + } + + .icon-setting { + height: 25%; + margin: 30px auto; + display: block; + } + + // display incorrect input in red + .formError { + p{ + color: red; + } + + } } diff --git a/src/pages/setting/setting.ts b/src/pages/setting/setting.ts index 5a5a5e3..c7eb083 100644 --- a/src/pages/setting/setting.ts +++ b/src/pages/setting/setting.ts @@ -1,7 +1,6 @@ import { Component } from '@angular/core'; -import { NavController, NavParams, Events } from 'ionic-angular'; -import { AccountPage } from '../account/account'; -import { LoginPage } from '../login/login'; +import { Validators, FormBuilder, FormGroup } from '@angular/forms'; +import { Events, ToastController, LoadingController } from 'ionic-angular'; import { PeopleService } from '../../providers/people-service'; import { UserData } from '../../providers/user-data'; @@ -18,26 +17,83 @@ import { UserData } from '../../providers/user-data'; providers: [UserData] }) export class SettingPage { + setting: FormGroup; + constructor( public userData: UserData, public events: Events, public peopleService: PeopleService, - public navCtrl: NavController, public navParams: NavParams) {} + private formBuilder: FormBuilder, + private loadingCtrl: LoadingController, + private toastCtrl: ToastController + ) { + this.setting = this.formBuilder.group({ + full_name : ['', [Validators.required]], + display_name : ['', [Validators.required]], + email : ['', [Validators.required]], + postcode : ['', [Validators.required]], + password : ['', [Validators.required]], + new_password : [''], + }); + - goToAccountPage(){ - this.navCtrl.push(AccountPage); } + /* When the page is fully loaded */ + public ionViewWillEnter() { + this.peopleService.accountFullLoad().subscribe( + result => { + this.setting.setValue({ + full_name: result.full_name, + display_name: result.display_name, + email: result.email, + postcode: result.postcode, + password: '', + new_password: '', + }); + this.userData.setUserInfo( result.email, result.display_name ); + }, + err => { + let toast = this.toastCtrl.create({ + message: 'Unable to retrieve account - are you connected to a network?', + duration: 6000, + position: 'top' + }); + toast.present(); + } + ); + } + + onSubmit() { + console.log(this.setting.value, this.setting.valid); + + let loading = this.loadingCtrl.create({ + content: 'Editing your account...' + }); + loading.present(); - signout(){ - // Give the menu time to close before changing to logged out - setTimeout(() => { - this.events.publish('user:logout'); - this.peopleService.logout().subscribe( - result => console.log('successfully logged out'), - err => console.log('something went wrong when logging out'), + this.peopleService + .accountEditUpdate(this.setting.value) + .subscribe( + result => { + loading.dismiss(); + let toast = this.toastCtrl.create({ + message: 'Edited Account Successfully', + duration: 6000, + position: 'top' + }); + toast.present(); + }, + error => { + loading.dismiss(); + console.log( error._body ); + let toast = this.toastCtrl.create({ + message: JSON.parse(error._body).message, + duration: 6000, + position: 'top' + }); + toast.present(); + } ); - }, 1000); - this.navCtrl.setRoot(LoginPage); } } diff --git a/src/pages/signup/signup.html b/src/pages/signup/signup.html index a70018f..bd3e70a 100644 --- a/src/pages/signup/signup.html +++ b/src/pages/signup/signup.html @@ -6,36 +6,36 @@
-
diff --git a/src/pages/signup/signup.scss b/src/pages/signup/signup.scss index fcdf67c..88583ba 100644 --- a/src/pages/signup/signup.scss +++ b/src/pages/signup/signup.scss @@ -5,29 +5,6 @@ page-signup { margin: 0px 0px 20px 0px; } - .item-signup { - font-size: 1.2em; - color: rgba(255, 255, 255, .8); - background: rgba(255, 255, 255, .5); - margin: 1px auto 20px; - width: 90%; - border: 3px solid rgba(255, 255, 255, .8); - border-radius: 10px; - } - - .button-signup { - font-size: 1.1em; - color: rgba(255, 255, 255, .8); - margin: 5px auto; - width: 90%; - border: 3px solid rgba(255, 255, 255, .8); - border-radius: 10px; - } - - .grid-signup { - margin-top: 20%; - } - .icon-signup { height: 25%; margin: 30px auto; diff --git a/src/pages/signup/signup.ts b/src/pages/signup/signup.ts index b375704..572e7b4 100644 --- a/src/pages/signup/signup.ts +++ b/src/pages/signup/signup.ts @@ -52,7 +52,7 @@ export class SignupPage { loading.dismiss(); let toast = this.toastCtrl.create({ message: 'Registered Successfully', - duration: 3000, + duration: 6000, position: 'top' }); toast.present(); @@ -63,7 +63,7 @@ export class SignupPage { console.log( error._body ); let toast = this.toastCtrl.create({ message: JSON.parse(error._body).message, - duration: 3000, + duration: 6000, position: 'top' }); toast.present(); diff --git a/src/pages/user/user.ts b/src/pages/user/user.ts index 40e414c..6656a7d 100644 --- a/src/pages/user/user.ts +++ b/src/pages/user/user.ts @@ -5,9 +5,11 @@ import { App, Slides, ToastController, + AlertController, } from 'ionic-angular'; import { ReceiptPage } from '../receipt/receipt'; import { OverviewPage } from '../overview/overview'; +import { AboutPage } from '../about/about'; import { GamePage } from '../game/game'; import { ShopPage } from '../shop/shop'; import { StatPage } from '../stat/stat'; @@ -72,17 +74,18 @@ export class UserPage { public peopleService: PeopleService, public userData : UserData, private toastCtrl: ToastController, + private alertCtrl: AlertController, ) { this.receiptPage = ReceiptPage; this.gamePage = GamePage; this.shopPage = ShopPage; this.statPage = StatPage; this.status = "Weekly"; // defualt chart is Daily - // get the username from local stroage } /* When the page is fully loaded */ public ionViewWillEnter() { + this.getUserDisplayName(); this.peopleService.basicStats().subscribe( result => { this.basicStats = result; @@ -90,12 +93,26 @@ export class UserPage { err => { let toast = this.toastCtrl.create({ message: 'Unable to retrieve stats - are you connected to a network?', - duration: 3000, + duration: 6000, position: 'top' }); toast.present(); } ); + this.userData.getReturningLogin().subscribe( + result => { + if (result == true) { + console.log('Returning User, do not show guide'); + } else { + console.log('First time user, prompt the guide'); + this.readGuidePrompt(); + this.userData.setReturningLogin(); + } + }, + err => { + console.log('Error checking if returning user'); + } + ); } ionViewDidLoad() { @@ -103,11 +120,11 @@ export class UserPage { } addReceipt(){ - this.navCtrl.push(ReceiptPage); + this.navCtrl.setRoot(ReceiptPage); } overview(){ - this.navCtrl.push(OverviewPage); + this.navCtrl.setRoot(OverviewPage); } getUserDisplayName() { @@ -126,6 +143,30 @@ export class UserPage { ); } + readGuidePrompt() { + let alert = this.alertCtrl.create({ + title: 'Welcome new user!', + message: 'As this may be your first time here, do you want to read the intro guide?', + buttons: [ + { + text: 'No Thanks', + role: 'cancel', + handler: () => { + console.log('Cancel clicked'); + } + }, + { + text: 'Show Me!', + handler: () => { + console.log('Redirect clicked'); + this.navCtrl.setRoot(AboutPage); + } + } + ] + }); + alert.present(); +} + /*********************** -- Data representation part -- **************************/ /* including calling provider whihc calls api to retrieve user data */ diff --git a/src/providers/people-service.ts b/src/providers/people-service.ts index 5514f34..669e07b 100644 --- a/src/providers/people-service.ts +++ b/src/providers/people-service.ts @@ -66,8 +66,8 @@ export class PeopleService { .flatMap( key => { this.userData.removeSessionKey(); - this.userData.removeEmail(); - this.userData.removeDisplayName(); + // this.userData.removeEmail(); + this.userData.removeUserInfo(); return this.http.post( this.apiUrl + '/logout', { session_key : key } @@ -114,6 +114,8 @@ export class PeopleService { ).map( response => response.json() ); } + // Used for frontpage stats + public basicStats() { return this.userData.getSessionKey() .flatMap( @@ -126,6 +128,33 @@ export class PeopleService { ).map( response => response.json() ); } + // Used for account edit page + + public accountFullLoad() { + return this.userData.getSessionKey() + .flatMap( + key => { + return this.http.post( + this.apiUrl + '/user', + { session_key : key }, + ); + }, + ).map( response => response.json() ); + } + + public accountEditUpdate(data) { + return this.userData.getSessionKey() + .flatMap( + value => { + data.session_key = value; + return this.http.post( + this.apiUrl + '/user/account', + data + ); + }, + ).map( response => response.json() ); + } + public leaderboard(lb_type) { return this.userData.getSessionKey() .flatMap( diff --git a/src/providers/user-data.ts b/src/providers/user-data.ts index b9f23ff..baf959d 100644 --- a/src/providers/user-data.ts +++ b/src/providers/user-data.ts @@ -19,6 +19,8 @@ export class UserData { this.loadTestingData(); } + // Session Key transactions + public setSessionKey(key: string) { console.log("set sessionKey"); this.storage.set('SessionKey',key); @@ -36,32 +38,65 @@ export class UserData { this.storage.remove('SessionKey'); } + // Checks for first time entering app status + + public setReturningEntry() { + console.log("set returning"); + // this.storage.set('returning',true); + } + + public getReturningEntry() { + console.log("get returning"); + return Observable.fromPromise( + this.storage.get('returning') + ); + } + + // Checks for first time login + + public setReturningLogin() { + console.log("set returninglogin"); + this.storage.set('returninglogin',true); + } + + public getReturningLogin() { + console.log("get returninglogin"); + return Observable.fromPromise( + this.storage.get('returninglogin') + ); + } + + // Checks for login status + public hasLoggedIn() { return this.getSessionKey().map( result => result ? true : false ); } - public setEmail(email: string) { - console.log("set Email"); + // Pulls user info to store locally on login + + public setUserInfo( + email: string, + display_name: string) { + console.log("set UserInfo"); this.storage.set('email',email); + this.storage.set('displayname',display_name); } - public getEmail() { - console.log("get email"); - return Observable.fromPromise( - this.storage.get('email') - ); - } + // Deletes account details on logout - public removeEmail() { - console.log("remove email"); + public removeUserInfo() { + console.log("remove UserInfo"); this.storage.remove('email'); + this.storage.remove('displayname'); } - public setDisplayName(displayname: string) { - console.log("set Display Name"); - this.storage.set('displayname',displayname); + public getFullName() { + console.log("get Full Name"); + return Observable.fromPromise( + this.storage.get('fullname') + ); } public getDisplayName() { @@ -71,9 +106,37 @@ export class UserData { ); } - public removeDisplayName() { - console.log("remove Display Name"); - this.storage.remove('displayname'); + public getPostcode() { + console.log("get Postcode"); + return Observable.fromPromise( + this.storage.get('postcode') + ); + } + + public getYearOfBirth() { + console.log("get Year of Birth"); + return Observable.fromPromise( + this.storage.get('yearofbirth') + ); + } + + public getEmail() { + console.log("get email"); + return Observable.fromPromise( + this.storage.get('email') + ); + } + + // Remove below if above code works + + public setEmail(email: string) { + console.log("set Email"); + this.storage.set('email',email); + } + + public removeEmail() { + console.log("remove email"); + this.storage.remove('email'); } /* Testing purpose, ideally, these variable should be initilizaed via calling */ diff --git a/src/theme/variables.scss b/src/theme/variables.scss index 4b24558..e91b3e6 100644 --- a/src/theme/variables.scss +++ b/src/theme/variables.scss @@ -68,6 +68,11 @@ $alert-md-button-text-color: color($colors, secondary); $label-md-text-color: color($colors, primary); +$select-md-icon-color: color($colors, whitish); + +$picker-md-button-text-color: color($colors, secondary); +$picker-md-option-selected-color: color($colors, button-blue); + /*$segment-button-md-border-bottom-color-activated: #ff0000;*/ // App Windows Variables // --------------------------------------------------