From ef3571f08f77994b94963441d7164c0e060a0c3a Mon Sep 17 00:00:00 2001 From: bhargav nelluri Date: Tue, 28 Jul 2020 12:52:53 +0000 Subject: [PATCH] Upload with list of track details --- Alltracks.json | 45 +++ modules/list.js | 35 ++ modules/user.js | 14 +- package-lock.json | 642 +++--------------------------------- package.json | 3 +- routes/public.js | 149 ++++++++- views/error.handlebars | 4 +- views/index.handlebars | 13 +- views/listTrack.handlebars | 46 +++ views/login.handlebars | 14 +- views/raiseIssue.handlebars | 52 +++ views/register.handlebars | 17 +- views/secure.handlebars | 7 +- views/sendMail.handlebars | 15 + views/validate.handlebars | 5 +- 15 files changed, 410 insertions(+), 651 deletions(-) create mode 100644 Alltracks.json create mode 100644 modules/list.js create mode 100644 views/listTrack.handlebars create mode 100644 views/raiseIssue.handlebars create mode 100644 views/sendMail.handlebars diff --git a/Alltracks.json b/Alltracks.json new file mode 100644 index 0000000..27dcb3f --- /dev/null +++ b/Alltracks.json @@ -0,0 +1,45 @@ +[ + { + "Singer_Name": "John", + + "Track":"BlackOut" + }, + { + "Singer_Name": "Justin-Bieber", + "Description":"It was launched in 2002. At that Justin bieber age was 12 years.", + "Track":"Baby" + }, + { + "Singer_Name": "ChainSmoker", + "Track":"Loser" + }, + { + "Singer_Name": "JohnCena", + + "Track":"You-can-see-me" + }, + { + "Singer_Name": "Akon", + + "Track":"Chammak-Challo" + }, + { + "Singer_Name": "A.R-Rehman", + "Track":"Oscar" + }, + { + "Singer_Name": "Pritam", + + "Track":"Black" + }, + { + "Singer_Name": "AlanWalker", + + "Track":"Fade" + }, + { + "Singer_Name": "EDSheeran", + "Track":"We-dont-talk-anymore" + } + +] \ No newline at end of file diff --git a/modules/list.js b/modules/list.js new file mode 100644 index 0000000..3c1e0dc --- /dev/null +++ b/modules/list.js @@ -0,0 +1,35 @@ + +const bcrypt = require('bcrypt-promise') +const sqlite = require('sqlite-async') + +const saltRounds = 10 + +module.exports = class List { + + constructor(dbName = ':memory:') { + return (async() => { + this.db = await sqlite.open(dbName) + /*we need this table to store the user track + const sql = 'CREATE TABLE IF NOT EXISTS uploadTrack\ + (id INTEGER PRIMARY KEY AUTOINCREMENT, user TEXT, pass TEXT, email TEXT);' + await this.db.run(sql)*/ + return this + console.log("Track open") + })() + } + + /** + * checks to see if a set of login credentials are valid + * @param {String} username the username to check + * @param {String} password the password to check + * @returns {Boolean} returns true if credentials are valid + */ + async getAll() { + + + } + + async tearDown() { + await this.db.close() + } +} diff --git a/modules/user.js b/modules/user.js index 9fa7fe8..f6ec2f0 100644 --- a/modules/user.js +++ b/modules/user.js @@ -10,7 +10,7 @@ module.exports = class User { return (async() => { this.db = await sqlite.open(dbName) // we need this table to store the user accounts - const sql = 'CREATE TABLE IF NOT EXISTS users\ + const sql = 'CREATE TABLE IF NOT EXISTS artist\ (id INTEGER PRIMARY KEY AUTOINCREMENT, user TEXT, pass TEXT, email TEXT);' await this.db.run(sql) return this @@ -18,7 +18,7 @@ module.exports = class User { } /** - * registers a new user + * registers a new artist * @param {String} user the chosen username * @param {String} pass the chosen password * @returns {Boolean} returns true if the new user has been added @@ -27,14 +27,14 @@ module.exports = class User { Array.from(arguments).forEach( val => { if(val.length === 0) throw new Error('missing field') }) - let sql = `SELECT COUNT(id) as records FROM users WHERE user="${user}";` + let sql = `SELECT COUNT(id) as records FROM artist WHERE user="${user}";` const data = await this.db.get(sql) if(data.records !== 0) throw new Error(`username "${user}" already in use`) - sql = `SELECT COUNT(id) as records FROM users WHERE email="${email}";` + sql = `SELECT COUNT(id) as records FROM artist WHERE email="${email}";` const emails = await this.db.get(sql) if(emails.records !== 0) throw new Error(`email address "${email}" is already in use`) pass = await bcrypt.hash(pass, saltRounds) - sql = `INSERT INTO users(user, pass, email) VALUES("${user}", "${pass}", "${email}")` + sql = `INSERT INTO artist(user, pass, email) VALUES("${user}", "${pass}", "${email}")` await this.db.run(sql) return true } @@ -46,10 +46,10 @@ module.exports = class User { * @returns {Boolean} returns true if credentials are valid */ async login(username, password) { - let sql = `SELECT count(id) AS count FROM users WHERE user="${username}";` + let sql = `SELECT count(id) AS count FROM artist WHERE user="${username}";` const records = await this.db.get(sql) if(!records.count) throw new Error(`username "${username}" not found`) - sql = `SELECT pass FROM users WHERE user = "${username}";` + sql = `SELECT pass FROM artist WHERE user = "${username}";` const record = await this.db.get(sql) const valid = await bcrypt.compare(password, record.pass) if(valid === false) throw new Error(`invalid password for account "${username}"`) diff --git a/package-lock.json b/package-lock.json index 923c109..a40980d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -216,16 +216,6 @@ "@babel/helper-plugin-utils": "^7.8.0" } }, - "@babel/runtime-corejs3": { - "version": "7.9.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.9.2.tgz", - "integrity": "sha512-HHxmgxbIzOfFlZ+tdeRKtaxWOMUoCG5Mu3wKeUmOxjYrwb3AAHgnmtCUbPPK11/raIWLIBK250t8E2BPO0p7jA==", - "dev": true, - "requires": { - "core-js-pure": "^3.0.0", - "regenerator-runtime": "^0.13.4" - } - }, "@babel/template": { "version": "7.8.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz", @@ -929,21 +919,6 @@ "@types/istanbul-lib-report": "*" } }, - "@types/jest": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.9.1.tgz", - "integrity": "sha512-Fb38HkXSVA4L8fGKEZ6le5bB8r6MRWlOCZbVuWZcmOMSCd2wCYOwN1ibj8daIoV9naq7aaOZjrLCoCMptKU/4Q==", - "dev": true, - "requires": { - "jest-diff": "^24.3.0" - } - }, - "@types/mime-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.0.tgz", - "integrity": "sha1-nKUs2jY/aZxpRmwqbM2q2RPqenM=", - "dev": true - }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -976,16 +951,6 @@ "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", "dev": true }, - "@types/yauzl": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz", - "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, "abab": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", @@ -1069,12 +1034,6 @@ "integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ==", "dev": true }, - "agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "dev": true - }, "ajv": { "version": "6.12.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", @@ -1342,17 +1301,6 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, - "assertion-error-formatter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/assertion-error-formatter/-/assertion-error-formatter-3.0.0.tgz", - "integrity": "sha512-6YyAVLrEze0kQ7CmJfUgrLHb+Y7XghmL2Ie7ijVa2Y9ynP3LV+VDiwFk62Dn0qtqbmY0BT0ss6p1xxpiF2PYbQ==", - "dev": true, - "requires": { - "diff": "^4.0.1", - "pad-right": "^0.2.2", - "repeat-string": "^1.6.1" - } - }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -1625,12 +1573,6 @@ "resolved": "https://registry.npmjs.org/bcrypt-promise/-/bcrypt-promise-2.0.0.tgz", "integrity": "sha1-oLaD6UNCEArubuaXF0Oj4Xna4nw=" }, - "becke-ch--regex--s0-0-v1--base--pl--lib": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/becke-ch--regex--s0-0-v1--base--pl--lib/-/becke-ch--regex--s0-0-v1--base--pl--lib-1.4.0.tgz", - "integrity": "sha1-Qpzuu/pffpNueNc/vcfacWKyDiA=", - "dev": true - }, "bindings": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", @@ -1745,12 +1687,6 @@ "ieee754": "^1.1.4" } }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", @@ -2313,12 +2249,6 @@ "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", "dev": true }, - "core-js-pure": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", - "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", - "dev": true - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -2396,75 +2326,6 @@ "cssom": "0.3.x" } }, - "cucumber": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-6.0.5.tgz", - "integrity": "sha512-x+W9Fwk6TvcapQsYMxwFU5AsQJDOIJVGrPKmH15OC7jzb9/Dk7Hb0ZAyw4WcpaDcUDRc8bi2k2yJejDp5eTRlg==", - "dev": true, - "requires": { - "assertion-error-formatter": "^3.0.0", - "bluebird": "^3.4.1", - "cli-table3": "^0.5.1", - "colors": "^1.1.2", - "commander": "^3.0.1", - "cucumber-expressions": "^8.1.0", - "cucumber-tag-expressions": "^2.0.2", - "duration": "^0.2.1", - "escape-string-regexp": "^2.0.0", - "figures": "^3.0.0", - "gherkin": "5.0.0", - "glob": "^7.1.3", - "indent-string": "^4.0.0", - "is-generator": "^1.0.2", - "is-stream": "^2.0.0", - "knuth-shuffle-seeded": "^1.0.6", - "lodash": "^4.17.14", - "mz": "^2.4.0", - "progress": "^2.0.0", - "resolve": "^1.3.3", - "serialize-error": "^4.1.0", - "stack-chain": "^2.0.0", - "stacktrace-js": "^2.0.0", - "string-argv": "^0.3.0", - "title-case": "^2.1.1", - "util-arity": "^1.0.2", - "verror": "^1.9.0" - }, - "dependencies": { - "commander": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", - "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", - "dev": true - } - } - }, - "cucumber-expressions": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/cucumber-expressions/-/cucumber-expressions-8.3.0.tgz", - "integrity": "sha512-cP2ya0EiorwXBC7Ll7Cj7NELYbasNv9Ty42L4u7sso9KruWemWG1ZiTq4PMqir3SNDSrbykoqI5wZgMbLEDjLQ==", - "dev": true, - "requires": { - "becke-ch--regex--s0-0-v1--base--pl--lib": "^1.4.0", - "xregexp": "^4.2.4" - } - }, - "cucumber-tag-expressions": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/cucumber-tag-expressions/-/cucumber-tag-expressions-2.0.3.tgz", - "integrity": "sha512-+x5j1IfZrBtbvYHuoUX0rl4nUGxaey6Do9sM0CABmZfDCcWXuuRm1fQeCaklIYQgOFHQ6xOHvDSdkMHHpni6tQ==", - "dev": true - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -2888,12 +2749,6 @@ "minimist": "^1.1.1" } }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, "diff-sequences": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", @@ -2941,16 +2796,6 @@ "webidl-conversions": "^4.0.2" } }, - "duration": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/duration/-/duration-0.2.2.tgz", - "integrity": "sha512-06kgtea+bGreF5eKYgI/36A6pLXggY7oR4p1pq4SmdFBn1ReOL5D8RhG64VrqfTTKNucqqtBAwEj8aB88mcqrg==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "~0.10.46" - } - }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -3059,15 +2904,6 @@ "resolved": "https://registry.npmjs.org/error-inject/-/error-inject-1.0.0.tgz", "integrity": "sha1-4rPZG1Su1nLzCdlQ0VSFD6EdTzc=" }, - "error-stack-parser": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.6.tgz", - "integrity": "sha512-d51brTeqC+BHlwF0BhPtcYgF5nlzf9ZZ0ZIUQNZpc9ZB9qw5IJ2diTrBY9jlCJkTLITYPjmiX6OWCwH+fuyNgQ==", - "dev": true, - "requires": { - "stackframe": "^1.1.1" - } - }, "es-abstract": { "version": "1.17.5", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", @@ -3098,38 +2934,6 @@ "is-symbol": "^1.0.2" } }, - "es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -3522,23 +3326,6 @@ "jest-regex-util": "^24.9.0" } }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", - "dev": true - } - } - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -3625,38 +3412,6 @@ } } }, - "extract-zip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.0.tgz", - "integrity": "sha512-i42GQ498yibjdvIhivUsRslx608whtGoFIhF26Z7O4MYncBxp8CwalOs1lnHy21A9sIohWO2+uiE4SRtC9JXDg==", - "dev": true, - "requires": { - "@types/yauzl": "^2.9.1", - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - } - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -3710,32 +3465,6 @@ "bser": "2.1.1" } }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - }, - "dependencies": { - "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 - } - } - }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", @@ -4536,12 +4265,6 @@ "assert-plus": "^1.0.0" } }, - "gherkin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gherkin/-/gherkin-5.0.0.tgz", - "integrity": "sha1-lt70EZjsOQgli1Ea909lWidk0qE=", - "dev": true - }, "github-from-package": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", @@ -4820,33 +4543,6 @@ "sshpk": "^1.7.0" } }, - "http-status-codes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-1.4.0.tgz", - "integrity": "sha512-JrT3ua+WgH8zBD3HEJYbeEgnuQaAnUeRRko/YojPAJjGmIfGD3KPU/asLdsLwKjfxOmQe5nXMQ0pt/7MyapVbQ==", - "dev": true - }, - "https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", - "dev": true, - "requires": { - "agent-base": "5", - "debug": "4" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -4906,12 +4602,6 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, "inflation": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.0.0.tgz", @@ -5149,12 +4839,6 @@ "number-is-nan": "^1.0.0" } }, - "is-generator": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-generator/-/is-generator-1.0.3.tgz", - "integrity": "sha1-wUwhBX7TbjKNuANHlmxpP4hjifM=", - "dev": true - }, "is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", @@ -5214,12 +4898,6 @@ "is-unc-path": "^1.0.0" } }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -5650,33 +5328,6 @@ } } }, - "jest-cucumber": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/jest-cucumber/-/jest-cucumber-2.0.11.tgz", - "integrity": "sha512-5r3T21sGiFaJpWT4CKV244SdFozcPPGaZxpgDlNRNMy7ye8qODoDp2+z4BU/DbeaQDDjmY/xHFn47EYpBG2xkw==", - "dev": true, - "requires": { - "@types/jest": "^24.0.7", - "@types/node": "^11.9.4", - "callsites": "^3.0.0", - "gherkin": "^5.0.0", - "jest": "^24.1.0" - }, - "dependencies": { - "@types/node": { - "version": "11.15.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.15.12.tgz", - "integrity": "sha512-iefeBfpmhoYaZfj+gJM5z9H9eiTwhuzhPsJgH/flx4HP2SBI2FNDra1D3vKljqPLGDr9Cazvh9gP9Xszc30ncA==", - "dev": true - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - } - } - }, "jest-diff": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", @@ -6874,15 +6525,6 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, - "knuth-shuffle-seeded": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/knuth-shuffle-seeded/-/knuth-shuffle-seeded-1.0.6.tgz", - "integrity": "sha1-AfG2VzOqdUDuCNiwF0Fk0iCB5OE=", - "dev": true, - "requires": { - "seed-random": "~2.2.0" - } - }, "koa": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/koa/-/koa-2.11.0.tgz", @@ -7283,12 +6925,6 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, - "lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", - "dev": true - }, "lru-cache": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", @@ -7411,8 +7047,7 @@ "mime": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "dev": true + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==" }, "mime-db": { "version": "1.43.0", @@ -7611,27 +7246,12 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dev": true, - "requires": { - "lower-case": "^1.1.1" - } - }, "node-abi": { "version": "2.16.0", "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.16.0.tgz", @@ -8010,15 +7630,6 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "pad-right": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/pad-right/-/pad-right-0.2.2.tgz", - "integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=", - "dev": true, - "requires": { - "repeat-string": "^1.5.2" - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -8136,12 +7747,6 @@ } } }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", @@ -8380,12 +7985,6 @@ "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" }, - "proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -8596,52 +8195,6 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, - "puppeteer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-3.0.1.tgz", - "integrity": "sha512-DxNnI9n4grVHC+9irUfNK2T6YFuRECJnvG7VzdVolxpVwWC5DQqI5ho9Z0af48K5MQW4sJY5cq3qQ5g6NkAjvw==", - "dev": true, - "requires": { - "@types/mime-types": "^2.1.0", - "debug": "^4.1.0", - "extract-zip": "^2.0.0", - "https-proxy-agent": "^4.0.0", - "mime": "^2.0.3", - "mime-types": "^2.1.25", - "progress": "^2.0.1", - "proxy-from-env": "^1.0.0", - "rimraf": "^3.0.2", - "tar-fs": "^2.0.0", - "unbzip2-stream": "^1.3.3", - "ws": "^7.2.3" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ws": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.3.tgz", - "integrity": "sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ==", - "dev": true - } - } - }, "qs": { "version": "6.9.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.3.tgz", @@ -8774,12 +8327,6 @@ "util.promisify": "^1.0.0" } }, - "regenerator-runtime": { - "version": "0.13.5", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", - "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", - "dev": true - }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", @@ -9230,12 +8777,6 @@ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, - "seed-random": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/seed-random/-/seed-random-2.2.0.tgz", - "integrity": "sha1-KpsZ4lCoFwmSMaW5mk2vgLf77VQ=", - "dev": true - }, "select": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", @@ -9254,15 +8795,6 @@ "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", "dev": true }, - "serialize-error": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-4.1.0.tgz", - "integrity": "sha512-5j9GgyGsP9vV9Uj1S0lDCvlsd+gc2LEPVK7HHHte7IyPwOD4lVQFeaX143gx3U5AnoCi+wbcb3mvaxVysjpxEw==", - "dev": true, - "requires": { - "type-fest": "^0.3.0" - } - }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -9710,62 +9242,12 @@ "tweetnacl": "~0.14.0" } }, - "stack-chain": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-2.0.0.tgz", - "integrity": "sha512-GGrHXePi305aW7XQweYZZwiRwR7Js3MWoK/EHzzB9ROdc75nCnjSJVi21rdAGxFl+yCx2L2qdfl5y7NO4lTyqg==", - "dev": true - }, - "stack-generator": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.5.tgz", - "integrity": "sha512-/t1ebrbHkrLrDuNMdeAcsvynWgoH/i4o8EGGfX7dEYDoTXOYVAkEpFdtshlvabzc6JlJ8Kf9YdFEoz7JkzGN9Q==", - "dev": true, - "requires": { - "stackframe": "^1.1.1" - } - }, "stack-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", "dev": true }, - "stackframe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.1.tgz", - "integrity": "sha512-0PlYhdKh6AfFxRyK/v+6/k+/mMfyiEBbTM5L94D0ZytQnJ166wuwoTYLHFWGbs2dpA8Rgq763KGWmN1EQEYHRQ==", - "dev": true - }, - "stacktrace-gps": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/stacktrace-gps/-/stacktrace-gps-3.0.4.tgz", - "integrity": "sha512-qIr8x41yZVSldqdqe6jciXEaSCKw1U8XTXpjDuy0ki/apyTn/r3w9hDAAQOhZdxvsC93H+WwwEu5cq5VemzYeg==", - "dev": true, - "requires": { - "source-map": "0.5.6", - "stackframe": "^1.1.1" - }, - "dependencies": { - "source-map": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", - "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", - "dev": true - } - } - }, - "stacktrace-js": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stacktrace-js/-/stacktrace-js-2.0.2.tgz", - "integrity": "sha512-Je5vBeY4S1r/RnLydLl0TBTi3F2qdfWmYsGvtfZgEI+SCprPppaIhQf5nGcal4gI4cGpCV/duLcAzT1np6sQqg==", - "dev": true, - "requires": { - "error-stack-parser": "^2.0.6", - "stack-generator": "^2.0.5", - "stacktrace-gps": "^3.0.4" - } - }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", @@ -9798,12 +9280,6 @@ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true }, - "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", - "dev": true - }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", @@ -10085,16 +9561,6 @@ "dev": true, "optional": true }, - "title-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", - "integrity": "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=", - "dev": true, - "requires": { - "no-case": "^2.2.0", - "upper-case": "^1.0.3" - } - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -10220,12 +9686,6 @@ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -10235,12 +9695,6 @@ "prelude-ls": "~1.1.2" } }, - "type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "dev": true - }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -10281,16 +9735,6 @@ "dev": true, "optional": true }, - "unbzip2-stream": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.2.tgz", - "integrity": "sha512-pZMVAofMrrHX6Ik39hCk470kulCbmZ2SWfQLPmTWqfJV/oUm0gn1CblvHdUu4+54Je6Jq34x8kY6XjTy6dMkOg==", - "dev": true, - "requires": { - "buffer": "^5.2.1", - "through": "^2.3.8" - } - }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -10315,6 +9759,59 @@ "set-value": "^2.0.1" } }, + "unirest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/unirest/-/unirest-0.6.0.tgz", + "integrity": "sha512-BdYdcYJHXACqZ53k8Zz7QlNK/1W/HjCZlmg1OaaN/oTSp4FTWh0upXGSJsG88PljDBpSrNc2R649drasUA9NEg==", + "requires": { + "form-data": "^0.2.0", + "mime": "^2.4.0", + "request": "^2.88.0" + }, + "dependencies": { + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=" + }, + "combined-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "integrity": "sha1-ATfmV7qlp1QcV6w3rF/AfXO03B8=", + "requires": { + "delayed-stream": "0.0.5" + } + }, + "delayed-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "integrity": "sha1-1LH0OpPoKW3+AmlPRoC8N6MTxz8=" + }, + "form-data": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", + "integrity": "sha1-Jvi8JtpkQOKZy9z7aQNcT3em5GY=", + "requires": { + "async": "~0.9.0", + "combined-stream": "~0.0.4", + "mime-types": "~2.0.3" + } + }, + "mime-db": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz", + "integrity": "sha1-PQxjGA9FjrENMlqqN9fFiuMS6dc=" + }, + "mime-types": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "integrity": "sha1-MQ4VnbI+B3+Lsit0jav6SVcUCqY=", + "requires": { + "mime-db": "~1.12.0" + } + } + } + }, "universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", @@ -10366,12 +9863,6 @@ } } }, - "upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", - "dev": true - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -10397,12 +9888,6 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, - "util-arity": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/util-arity/-/util-arity-1.1.0.tgz", - "integrity": "sha1-WdAa8f2z/t4KxOYysKtfbOl8kzA=", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -10728,15 +10213,6 @@ "integrity": "sha512-HgS+X6zAztGa9zIK3Y3LXuJes33Lz9x+YyTxgrkIdabu2vqcGOWwdfCpf1hWLRrd553wd4QCDf6BBO6FfdsRiQ==", "dev": true }, - "xregexp": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", - "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", - "dev": true, - "requires": { - "@babel/runtime-corejs3": "^7.8.3" - } - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -10861,16 +10337,6 @@ "decamelize": "^1.2.0" } }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, "ylru": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.2.1.tgz", diff --git a/package.json b/package.json index 24b7a7c..610064b 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,8 @@ "mime-types": "^2.1.26", "nodemailer-promise": "^2.0.0", "sharp": "^0.25.2", - "sqlite-async": "^1.0.12" + "sqlite-async": "^1.0.12", + "unirest": "^0.6.0" }, "devDependencies": { "coverage": "^0.4.1", diff --git a/routes/public.js b/routes/public.js index fc3a4d0..ded8a0b 100644 --- a/routes/public.js +++ b/routes/public.js @@ -1,12 +1,14 @@ const Router = require('koa-router') -const koaBody = require('koa-body')({multipart: true, uploadDir: '.'}) +const koaBody = require('koa-body')({ multipart: true, uploadDir: '.' }) const router = new Router() + const fs = require("fs"); +const tracks=require("../Alltracks.json") const User = require('../modules/user') const dbName = 'website.db' - +const List=require('../modules/list') /** * The secure home page. * @@ -16,8 +18,8 @@ const dbName = 'website.db' router.get('/', async ctx => { try { await ctx.render('index', ctx.hbs) - } catch(err) { - await ctx.render('error', ctx.hbs) + } catch (err) { + await ctx.render('error') } }) @@ -41,10 +43,17 @@ router.post('/register', koaBody, async ctx => { try { // call the functions in the module await user.register(ctx.request.body.user, ctx.request.body.pass, ctx.request.body.email) - ctx.redirect(`/login?msg=new user "${ctx.request.body.user}" added, you need to log in`) - } catch(err) { - ctx.hbs.msg = err.message - ctx.hbs.body = ctx.request.body + const day = 86400, milliseconds = 1000 + const expiry = Math.floor(Date.now() / milliseconds) + day + //const token = await user.generateToken(ctx.request.body.user, expiry) + const html = `

Paste this url into your browser

\ +

${ctx.hbs.host}/validate/${ctx.request.body.user}

` + //await user.sendEmail(ctx.request.body.email, 'Validate Your Account', html) + ctx.redirect(`/postregister?msg=new user "${ctx.request.body.user}" added`) + } catch (err) { + console.log(err); + ctx.msg = err.message + ctx.body = ctx.request.body console.log(ctx.hbs) await ctx.render('register', ctx.hbs) } finally { @@ -58,7 +67,7 @@ router.get('/validate/:user/:token', async ctx => { try { console.log('VALIDATE') console.log(`URL --> ${ctx.request.url}`) - if(!ctx.request.url.includes('.css')) { + if (!ctx.request.url.includes('.css')) { console.log(ctx.params) const milliseconds = 1000 const now = Math.floor(Date.now() / milliseconds) @@ -67,14 +76,16 @@ router.get('/validate/:user/:token', async ctx => { ctx.hbs.msg = `account "${ctx.params.user}" has been validated` await ctx.render('login', ctx.hbs) } - } catch(err) { + } catch (err) { await ctx.render('login', ctx.hbs) } }) router.get('/login', async ctx => { - console.log(ctx.hbs) - await ctx.render('login', ctx.hbs) + const data = {} + if (ctx.query.msg) data.msg = ctx.query.msg + if (ctx.query.user) data.user = ctx.query.user + await ctx.render('login', data) }) router.post('/login', koaBody, async ctx => { @@ -82,11 +93,12 @@ router.post('/login', koaBody, async ctx => { ctx.hbs.body = ctx.request.body try { const body = ctx.request.body - await user.login(body.user, body.pass) + const res= await user.login(body.user, body.pass) + ctx.session.authorised = true - const referrer = body.referrer || '/secure' - return ctx.redirect(`${referrer}?msg=you are now logged in...`) - } catch(err) { + + return ctx.redirect('/secure?msg=you are now logged in...') + } catch (err) { ctx.hbs.msg = err.message await ctx.render('login', ctx.hbs) } finally { @@ -98,5 +110,110 @@ router.get('/logout', async ctx => { ctx.session.authorised = null ctx.redirect('/?msg=you are now logged out') }) +router.get('/listTrack',koaBody,async ctx => { + + try{ + + console.log(tracks); + + ctx.hbs.record=tracks; +await ctx.render('listTrack', ctx.hbs) } + catch (err) { + console.log(err) + ctx.hbs.msg = err.message + ctx.hbs.body = ctx.request.body + console.log(ctx.hbs) + } +}) +router.get("/trackDetails/:track",koaBody,async ctx=>{ + try + { + const value=ctx.params.track; + console.log(value) + var arrFound = tracks.filter(function(item) { + return item.Track == value; +}); + console.log(arrFound[0].Description) + } + catch(err){ console.log(err) + ctx.hbs.msg = err.message + ctx.hbs.body = ctx.request.body + console.log(ctx.hbs)} + +}) + +/* +router.post('/issues', koaBody,async ctx => { + const iss = await new Issues(dbName) + try { + console.log(ctx.request.body.userName) + await iss.insert(ctx.request.body.userName, ctx.request.body.issueList, ctx.request.body.status) + console.log('record inserted') + await ctx.render('issues', ctx.hbs) + + } catch (err) { + console.log(err) + ctx.hbs.msg = err.message + ctx.hbs.body = ctx.request.body + console.log(ctx.hbs) + }finally { + iss.tearDown() + } +}) + + +router.get('/issues', koaBody,async ctx => { + const iss = await new Report(dbName) + //const tech= await new Technician(dbName) + try { + const records= await iss.getAll() + +// const record=await tech.getTech() +ctx.hbs.record=records + await ctx.render('issues', ctx.hbs) + + + + }catch (err) { + console.log(err) + + console.log(ctx.hbs) +}finally { + iss.tearDown() +} +}) +router.get('/raiseissue',async ctx =>{ + await ctx.render('raiseissue') +}) + + + + + +router.put('/issues', async ctx => { + const iss = await new Issues(dbName) + try{ + await iss.update() + }catch(err) { + console.log(err.message) + }finally{ + iss.tearDown() + } + +}) +router.delete('/issues', async ctx => { + const iss = await new Issues(dbName) + try{ + await iss.delRecord() + }catch(err) { + console.log(err.message) + }finally{ + iss.tearDown() + } +}) +}) + + +*/ module.exports = router diff --git a/views/error.handlebars b/views/error.handlebars index 63db6df..ed35868 100644 --- a/views/error.handlebars +++ b/views/error.handlebars @@ -14,7 +14,9 @@

An Error Has Occurred

-

{{message}}

+ {{#if msg}} +

{{message}}

+ {{/if}}
diff --git a/views/index.handlebars b/views/index.handlebars index 8b6c4b7..a84284d 100644 --- a/views/index.handlebars +++ b/views/index.handlebars @@ -18,14 +18,11 @@ {{/if}}

This is the home page. Users can see it without logging in.

- {{#if authorised}} -

secure page

- {{/if}} - {{#if authorised}} -

log out

- {{else}} -

log in

- {{/if}} +

log in

+ + + +
diff --git a/views/listTrack.handlebars b/views/listTrack.handlebars new file mode 100644 index 0000000..17080d1 --- /dev/null +++ b/views/listTrack.handlebars @@ -0,0 +1,46 @@ + + + + + + + Display all tracks + + + + + + + +
+

List of Tracks

+
+ {{#if msg}} +

{{msg}}

+ {{/if}} + +
+
+ + + + + + + {{#each record}} + + + + + + {{/each}} +
Singer-NameTrack
{{Singer_Name}} {{Track}}
+
+ +
Logout
+ + + + + + \ No newline at end of file diff --git a/views/login.handlebars b/views/login.handlebars index acc65c4..8c5e6c2 100644 --- a/views/login.handlebars +++ b/views/login.handlebars @@ -12,25 +12,17 @@

Log In

- Register
{{#if msg}}

{{msg}}

{{/if}}
-

-
- -

-

-
- -

- +

Username:

+

Password:

-

Home page

+

register

diff --git a/views/raiseIssue.handlebars b/views/raiseIssue.handlebars new file mode 100644 index 0000000..27e0738 --- /dev/null +++ b/views/raiseIssue.handlebars @@ -0,0 +1,52 @@ + + + + + + + Home Page + + + + + +
+
+ {{#if msg}} +

{{msg}}

+ {{/if}} +
+ +
+ +

UserName :

+ + + + +

Age_of_appliance:

+ + + +

+ Description:

+

+ + + +
+ +
+ + diff --git a/views/register.handlebars b/views/register.handlebars index 69e90ea..374e1c2 100644 --- a/views/register.handlebars +++ b/views/register.handlebars @@ -12,25 +12,16 @@

Create an Account

- Log in
{{#if msg}}

{{msg}}

{{/if}}
-

-
- -

-

-
- -

-

-
- -

+

Username:

+

Password:

+

Email:

+

diff --git a/views/secure.handlebars b/views/secure.handlebars index 3a4e2a7..4dd8886 100644 --- a/views/secure.handlebars +++ b/views/secure.handlebars @@ -11,15 +11,14 @@
-

Secure Page

- Log out +
{{#if msg}}

{{msg}}

{{/if}}
-

This is a secure page. Users need to have a valid account and be logged in to see it.

-

Home page

+

Display all tracks

+

log out

diff --git a/views/sendMail.handlebars b/views/sendMail.handlebars new file mode 100644 index 0000000..a0059ad --- /dev/null +++ b/views/sendMail.handlebars @@ -0,0 +1,15 @@ + + + + Mail Sent + + + + + + +
+ Mail has sent to repective user complaint. +
+ + diff --git a/views/validate.handlebars b/views/validate.handlebars index ac6ddd5..b2e1ffb 100644 --- a/views/validate.handlebars +++ b/views/validate.handlebars @@ -14,8 +14,9 @@

Account Created

-

Your account has been successfully created and will need to be validated before use

-

Please check the email you registered and click on the link it contains.

+

Your account has been successfully created

+ Login to continue: +

log in