From 9a10b0638536d3bb3c7beb1de7ca8dd49f2a0da4 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 20 May 2019 15:55:09 +0530 Subject: [PATCH 001/163] added star sort --- README.md | 6 +++--- build.js | 8 ++------ populate.js | 19 +++++++++++++++++-- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index fe8bdc1..81cfce3 100644 --- a/README.md +++ b/README.md @@ -49,10 +49,10 @@ $ node build --name username -f #### Sorting Repos -To sort repos provide `--sort [sortBy]` argument while building. Where `[sort]` can be `created`, `updated`, `pushed`,`full_name`. Default: `created` +To sort repos provide `--sort [sortBy]` argument while building. Where `[sort]` can be `star`, `created`, `updated`, `pushed`,`full_name`. Default: `created` ``` -$ node build --name username --sort created +$ node build --name username --sort star ``` #### Ordering Repos @@ -60,7 +60,7 @@ $ node build --name username --sort created To order the sorted repos provide `--order [orderBy]` argument while building. Where `[orderBy]` can be `asc` or `desc`. Default: `asc` ``` -$ node build --name username --sort created --order desc +$ node build --name username --sort star --order desc ``` #### Customize Themes diff --git a/build.js b/build.js index 533abcf..cbeb65d 100644 --- a/build.js +++ b/build.js @@ -74,14 +74,10 @@ populateCSS(); if (program.name) { let sort = program.sort ? program.sort : 'created'; - let order = -1; + let order = "asc"; let includeFork = false; - if(program.order){ - if(program.order === 'asc') - order = 1; - else if(program.order === 'desc') - order = -1; + order = ('%s', program.order); } if(program.fork){ includeFork = true; diff --git a/populate.js b/populate.js index 8ed9f71..6823d75 100644 --- a/populate.js +++ b/populate.js @@ -34,8 +34,23 @@ module.exports.updateHTML = (username, sort, order, includeFork) => { (async () => { try { console.log("Building HTML/CSS..."); - var repos = await got(`https://api.github.com/users/${username}/repos?sort=${sort}&order=${order}&per_page=1200`); - repos = JSON.parse(repos.body); + var repos; + if(sort == "star"){ + repos = await got(`https://api.github.com/users/${username}/repos?per_page=1200`); + repos = JSON.parse(repos.body); + if(order == "desc"){ + repos = repos.sort(function(a, b) { + return b.stargazers_count - a.stargazers_count; + }); + }else{ + repos = repos.sort(function(a, b) { + return a.stargazers_count - b.stargazers_count; + }); + } + }else{ + repos = await got(`https://api.github.com/users/${username}/repos?sort=${sort}&order=${order}&per_page=1200`); + repos = JSON.parse(repos.body); + } for (var i = 0; i < repos.length; i++) { if(repos[i].fork == false){ document.getElementById("work_section").innerHTML += ` From 68039f0e4ae34208ac2deab25cd75331ceeee706 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 20 May 2019 16:46:32 +0530 Subject: [PATCH 002/163] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 81cfce3..6cfdb4b 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ $ node build --name username -f #### Sorting Repos -To sort repos provide `--sort [sortBy]` argument while building. Where `[sort]` can be `star`, `created`, `updated`, `pushed`,`full_name`. Default: `created` +To sort repos provide `--sort [sortBy]` argument while building. Where `[sortBy]` can be `star`, `created`, `updated`, `pushed`,`full_name`. Default: `created` ``` $ node build --name username --sort star From e7fed0a3d76c262185aa43e41b0943edd7f259ed Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 20 May 2019 17:08:22 +0530 Subject: [PATCH 003/163] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6cfdb4b..c15f434 100644 --- a/README.md +++ b/README.md @@ -108,11 +108,12 @@ To Update background or theme you need to run `build` command again. ### Add a Blog -To add your first blog run this command, make sure the title don't have spaces instead use "-". +To add your first blog run this command. ``` $ node blog --title my-first-blog ``` +> (use "-" instead of spaces) This will create a `my-first-blog` folder inside `blog`. Inside `my-first-blog` you will find an `index.html` file which contains all the necessary elements for writing a blog. Customize the content of the file to write your first blog. From 5ff9146ff50579c8ad71ada82440797350e4c0ee Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 20 May 2019 19:46:32 +0530 Subject: [PATCH 004/163] fixed #35 so umm looks like when you used update it would clear out config.json file, resaon being i was updating the html with only one argument and it needed 4 lol mb --- build.js | 12 +++++++++++- update.js | 7 +++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/build.js b/build.js index cbeb65d..e80ba0d 100644 --- a/build.js +++ b/build.js @@ -58,7 +58,7 @@ async function populateCSS() { themeSource = themeSource.toString('utf-8'); let themeTemplate = hbs.compile(themeSource); let styles = themeTemplate({ - 'background': `${process.background || 'https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450'}` + 'background': `${program.background || 'https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450'}` }) /* Add the user-specified styles to the new stylesheet */ await fs.appendFileAsync(stylesheet, styles); @@ -70,6 +70,15 @@ async function populateCSS() { await fs.writeFileAsync(config, JSON.stringify(data, null, ' ')); } +async function populateConfig(sort, order, includeFork) { + let data = await fs.readFileAsync(config); + data = JSON.parse(data); + data[0].sort = sort; + data[0].order = order; + data[0].includeFork = includeFork; + await fs.writeFileAsync(config, JSON.stringify(data, null, ' ')); +} + populateCSS(); if (program.name) { @@ -82,6 +91,7 @@ if (program.name) { if(program.fork){ includeFork = true; } + populateConfig(sort, order, includeFork); updateHTML(('%s', program.name), sort, order, includeFork); } else { console.error("Error: Please provide a GitHub username."); diff --git a/update.js b/update.js index 90b330b..b167de3 100644 --- a/update.js +++ b/update.js @@ -5,9 +5,12 @@ fs.readFile("./dist/config.json", function (err , data) { if (err) throw err; data = JSON.parse(data); var username = data[0].username; - if(!username || username == null){ + var sort = data[0].sort; + var order = data[0].order; + var includeFork = data[0].includeFork; + if(username == null || sort == null || order == null || includeFork == null){ console.log("username not found in config.json, please run build command before using update"); return; } - updateHTML(username); + updateHTML(username, sort, order, includeFork); }); \ No newline at end of file From 3a1731c77661b4268675404ccb77212fef2b2473 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 20 May 2019 19:46:59 +0530 Subject: [PATCH 005/163] fixed #35 so umm looks like when you used update it would clear out config.json file, resaon being i was updating the html with only one argument and it needed 4 lol mb --- dist/config.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dist/config.json b/dist/config.json index 8ae05b1..d504cad 100644 --- a/dist/config.json +++ b/dist/config.json @@ -3,6 +3,9 @@ "username": null, "name": null, "userimg": null, - "theme": "light" + "sort": null, + "order": null, + "includeFork": null, + "theme": "light.css" } ] \ No newline at end of file From d84d6fd2b497ec726dca016364835b5b758cf61a Mon Sep 17 00:00:00 2001 From: ghostslayer989 <45863583+ghostslayer989@users.noreply.github.com> Date: Mon, 20 May 2019 13:04:14 -0400 Subject: [PATCH 006/163] Bump jsdom from 15.0.0 to 15.1.0 (#36) Bumps [jsdom](https://github.com/jsdom/jsdom) from 15.0.0 to 15.1.0. - [Release notes](https://github.com/jsdom/jsdom/releases) - [Changelog](https://github.com/jsdom/jsdom/blob/master/Changelog.md) - [Commits](https://github.com/jsdom/jsdom/compare/15.0.0...15.1.0) Signed-off-by: dependabot[bot] --- package-lock.json | 1848 ++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 925 insertions(+), 925 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f7ed0d..f6e2421 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,924 +1,924 @@ -{ - "name": "gitfolio", - "version": "0.1.2", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" - }, - "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" - }, - "acorn-globals": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", - "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" - }, - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bluebird": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", - "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" - }, - "cacheable-request": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.0.0.tgz", - "integrity": "sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^4.0.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^1.0.1", - "normalize-url": "^3.1.0", - "responselike": "^1.0.2" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "combined-stream": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", - "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cssom": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", - "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==" - }, - "cssstyle": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", - "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", - "requires": { - "cssom": "0.3.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "defer-to-connect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", - "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } - }, - "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "github-emoji": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.0.tgz", - "integrity": "sha512-FCs0tDDtX/pwkXN6sQE5lUC6B4PIIFC+rv7IZAw8956Mtvo5NQSWHEBJvExl+B8+ahqNVU0W33hMrXSIEFSUvA==" - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "http-cache-semantics": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", - "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.0.0.tgz", - "integrity": "sha512-rJnHm7CHyIj4tDyz9VaCt0f0P0nEh/wEmMfwp9mMixy+L/r8OW/BNcgmIlfZuBBnVQS3eRBpvd/qM3R7vr7e3A==", - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - }, - "nwsapi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", - "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } - } - }, - "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", - "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saxes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", - "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", - "requires": { - "xmlchars": "^1.3.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "requires": { - "punycode": "^2.1.0" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "uglify-js": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.13.tgz", - "integrity": "sha512-Lho+IJlquX6sdJgyKSJx/M9y4XbDd3ekPjD8S6HYmT5yVSwDtlSuca2w5hV4g2dIsp0Y/4orbfWxKexodmFv7w==", - "optional": true, - "requires": { - "commander": "~2.20.0", - "source-map": "~0.6.1" - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - }, - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, - "xmlchars": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", - "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" - } - } -} +{ + "name": "gitfolio", + "version": "0.1.2", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" + }, + "acorn-globals": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", + "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bluebird": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", + "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + }, + "cacheable-request": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.0.0.tgz", + "integrity": "sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^4.0.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^1.0.1", + "normalize-url": "^3.1.0", + "responselike": "^1.0.2" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cssom": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", + "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==" + }, + "cssstyle": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", + "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", + "requires": { + "cssom": "0.3.x" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "defer-to-connect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", + "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "github-emoji": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.0.tgz", + "integrity": "sha512-FCs0tDDtX/pwkXN6sQE5lUC6B4PIIFC+rv7IZAw8956Mtvo5NQSWHEBJvExl+B8+ahqNVU0W33hMrXSIEFSUvA==" + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "http-cache-semantics": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.0.tgz", + "integrity": "sha512-QEmc2XIkNfCK3KRfa9ljMJjC4kAGdVgRrs/pCBsQG/QoKz0B42+C58f6TdAmhq/rw494eFCoLHxX6+hWuxb96Q==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + }, + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saxes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", + "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", + "requires": { + "xmlchars": "^1.3.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "uglify-js": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.13.tgz", + "integrity": "sha512-Lho+IJlquX6sdJgyKSJx/M9y4XbDd3ekPjD8S6HYmT5yVSwDtlSuca2w5hV4g2dIsp0Y/4orbfWxKexodmFv7w==", + "optional": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", + "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" + } + } +} diff --git a/package.json b/package.json index 48d978c..ab8c8c9 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,6 @@ "github-emoji": "^1.1.0", "got": "^9.6.0", "handlebars": "^4.1.2", - "jsdom": "^15.0.0" + "jsdom": "^15.1.0" } } From 52014e1cd588afa53374a86d431b2f046ffc5013 Mon Sep 17 00:00:00 2001 From: Benjamin Liden Date: Mon, 20 May 2019 21:37:08 -0400 Subject: [PATCH 007/163] Improved username checking, fix for config.json writing blank (#37) * added better checking for username flag * added fs.writeFileSync, as process would sometimes end before async write finished * removed process.exit(0), which would exec before the config was written * some formatting fixes to align w/ upstream * added trim() to check for whitespace * fixed selectors in index.css (no #projects id exists) --- assets/index.css | 4 ++-- build.js | 2 +- populate.js | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/index.css b/assets/index.css index e2b12ad..7b0c13d 100644 --- a/assets/index.css +++ b/assets/index.css @@ -384,10 +384,10 @@ body{ #work { margin:0px; } - #projects { + .projects { columns:1; } - #projects section { + .projects section { width:88%; } #blogs { diff --git a/build.js b/build.js index e80ba0d..b6da73e 100644 --- a/build.js +++ b/build.js @@ -81,7 +81,7 @@ async function populateConfig(sort, order, includeFork) { populateCSS(); -if (program.name) { +if (typeof program.name === 'string' && program.name.trim() !== '') { let sort = program.sort ? program.sort : 'created'; let order = "asc"; let includeFork = false; diff --git a/populate.js b/populate.js index 6823d75..c101ae3 100644 --- a/populate.js +++ b/populate.js @@ -115,12 +115,12 @@ module.exports.updateHTML = (username, sort, order, includeFork) => { data[0].userimg = user.avatar_url; fs.writeFile('./dist/config.json', JSON.stringify(data, null, ' '), function (err) { if (err) throw err; + console.log("Config file updated."); }); }); fs.writeFile('dist/index.html', '' + window.document.documentElement.outerHTML, function (error) { if (error) throw error; console.log("Build Complete"); - process.exit(0) }); } catch (error) { console.log(error); From 1bdf9ef7d2351a0bb2d2e156116359f4648173a9 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Tue, 21 May 2019 07:08:55 +0530 Subject: [PATCH 008/163] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c15f434..d113761 100644 --- a/README.md +++ b/README.md @@ -135,7 +135,7 @@ Default JSON Format More Arguments for Blog ``` ---subtitle [subtitle] : gives blog a subtitle (Deafult : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.') +--subtitle [subtitle] : gives blog a subtitle (Default : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.') --pagetitle [pagetitle] : gives blog page a title --folder [folder] : give folder a title ``` From 911a23c2c23ad6b60166ecef5a14e5afa35d317b Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Tue, 21 May 2019 07:39:18 +0530 Subject: [PATCH 009/163] fixed #41 -fixed overflow of text -fixed background in dark theme --- assets/index.css | 3 +++ assets/themes/dark.css | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/assets/index.css b/assets/index.css index 7b0c13d..496a1af 100644 --- a/assets/index.css +++ b/assets/index.css @@ -287,6 +287,7 @@ body{ font-size:24px; font-weight:bold; margin:1vh 0px; + word-wrap: break-word; } .about_section { @@ -294,11 +295,13 @@ body{ font-family: 'Questrial', sans-serif; margin:2vh 0px; font-weight:bold; + word-wrap: break-word; } .bottom_section { margin:1vh 0px; font-size:14px; + word-wrap: break-word; } .bottom_section span { diff --git a/assets/themes/dark.css b/assets/themes/dark.css index e35df13..16c28dc 100644 --- a/assets/themes/dark.css +++ b/assets/themes/dark.css @@ -4,7 +4,7 @@ --blog-gray-color: rgb(180, 180, 180); --background-image: linear-gradient(90deg, rgba(10, 10, 10, 0.6), rgb(10, 10, 10, 1)), url("{{background}}"); --background-background: linear-gradient(0deg, rgba(10, 10, 10, 1), rgba(10, 10, 10, 0.6)), - url("{{background-image}}") center center fixed; + url("{{background}}") center center fixed; --height: 50vh; } #display h1 { @@ -25,7 +25,7 @@ } @media (max-width: 800px) { :root { - --background-image: linear-gradient(0deg, rgba(10, 10, 10, 1), rgb(10, 10, 10, 0)), - url("{{background-image}}") !important; + --background-image: linear-gradient(0deg, rgba(10, 10, 10, 1), rgba(10, 10, 10, 0)), + url("{{background}}") !important; } } From b194b6758b2b9ab09b5b97f0e92b5cb6b4e7c1be Mon Sep 17 00:00:00 2001 From: soonoo Date: Tue, 21 May 2019 16:09:31 +0900 Subject: [PATCH 010/163] fixed #43 -Feteched more repos --- populate.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/populate.js b/populate.js index c101ae3..4774317 100644 --- a/populate.js +++ b/populate.js @@ -34,10 +34,15 @@ module.exports.updateHTML = (username, sort, order, includeFork) => { (async () => { try { console.log("Building HTML/CSS..."); - var repos; + var repos = []; + var tempRepos; + var page = 1; if(sort == "star"){ - repos = await got(`https://api.github.com/users/${username}/repos?per_page=1200`); - repos = JSON.parse(repos.body); + do{ + tempRepos = await got(`https://api.github.com/users/${username}/repos?per_page=100&page=${page++}`); + tempRepos = JSON.parse(tempRepos.body); + repos = repos.concat(tempRepos); + } while(tempRepos.length == 100); if(order == "desc"){ repos = repos.sort(function(a, b) { return b.stargazers_count - a.stargazers_count; @@ -48,8 +53,11 @@ module.exports.updateHTML = (username, sort, order, includeFork) => { }); } }else{ - repos = await got(`https://api.github.com/users/${username}/repos?sort=${sort}&order=${order}&per_page=1200`); - repos = JSON.parse(repos.body); + do{ + tempRepos = await got(`https://api.github.com/users/${username}/repos?sort=${sort}&order=${order}&per_page=100&page=${page++}`); + tempRepos = JSON.parse(tempRepos.body); + repos = repos.concat(tempRepos); + } while(tempRepos.length == 100); } for (var i = 0; i < repos.length; i++) { if(repos[i].fork == false){ @@ -129,4 +137,4 @@ module.exports.updateHTML = (username, sort, order, includeFork) => { }).catch(function (error) { console.log(error); }); -} \ No newline at end of file +} From 8feb05f8088ffb145cc0e2f04e2a04d342d43cda Mon Sep 17 00:00:00 2001 From: "Zachary P. Brasseaux" Date: Tue, 21 May 2019 12:05:41 -0500 Subject: [PATCH 011/163] Fix for ./dist/blog initialization issue (#48) When I went to create a blog for the first time, it kept throwing an error due to the fact that ./dist/blog did not exist. The recursive argument in the fs.mkdirSync function should have created it, but didn't. With this change, it now works on my system. --- blog.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/blog.js b/blog.js index e3991ab..fd1ca81 100644 --- a/blog.js +++ b/blog.js @@ -14,6 +14,12 @@ program .parse(process.argv); function createBlog(title, subtitle, pagetitle, folder) { + // Checks to make sure this directory actually exists + // and creates it if it doesn't + if (!fs.existsSync(`./dist/blog/`)){ + fs.mkdirSync(`./dist/blog/`, { recursive: true }, err => {}); + } + if (!fs.existsSync(`./dist/blog/${folder}`)){ fs.mkdirSync(`./dist/blog/${folder}`, { recursive: true }); } From 7524dd4839ff34d85e5f33a2c98a6b7c279dc0d4 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Wed, 22 May 2019 11:29:20 +0530 Subject: [PATCH 012/163] fixed #50 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d113761..3b154c4 100644 --- a/README.md +++ b/README.md @@ -119,7 +119,7 @@ This will create a `my-first-blog` folder inside `blog`. Inside `my-first-blog` This also adds content to `blog.json` file. This file helps in showcasing your blogs on your personal website as [cards](https://imfunniee.github.io/gitfolio/#blog_section). You could customize the JSON object that corresponds your current blog. -Blog Demo? [here](https://imfunniee.github.io/gitfolio/blog/my-first-blog/) +Blog Demo? [here](https://imfunniee.github.io/gitfolio/blog/my-first-post/) Default JSON Format ``` From 2ec61a9132e09019edc487b3ae7b701e104b5af3 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Wed, 22 May 2019 22:49:47 +0530 Subject: [PATCH 013/163] =?UTF-8?q?added=20support=20=E2=98=95=F0=9F=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 3b154c4..b244dbb 100644 --- a/README.md +++ b/README.md @@ -142,6 +142,11 @@ More Arguments for Blog > (use "-" instead of spaces) +## Support + +Support me by buying me a coffee ☕ + +Buy Me A Coffee ## License ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg) From e62e4c05b373a217abc4d50a76593a7cf2996e87 Mon Sep 17 00:00:00 2001 From: Rohit Gohri Date: Thu, 23 May 2019 10:30:49 +0530 Subject: [PATCH 014/163] Cli feature (#29) * Move all cli options to single bin file, export fns from each file instead * Make username/title required in cli itself * fix username not being parsed, set desc separately * read outDir from env var, defaults to dist * set outDir env var in cli to cwd * Move default configs to default dir * handle blog.json not existing * fix assets path * make build function async * update clean command * added defaults to CLI --- assets/index.html | 3 ++ bin/gitfolio.js | 44 +++++++++++++++++++++++++++ blog.js | 51 +++++++++++++------------------ build.js | 57 ++++++++++++++--------------------- {dist => default}/blog.json | 0 {dist => default}/config.json | 0 package.json | 42 ++++++++++++++------------ populate.js | 20 ++++++------ update.js | 12 +++++--- utils.js | 39 ++++++++++++++++++++++++ 10 files changed, 169 insertions(+), 99 deletions(-) create mode 100644 bin/gitfolio.js rename {dist => default}/blog.json (100%) rename {dist => default}/config.json (100%) create mode 100644 utils.js diff --git a/assets/index.html b/assets/index.html index d778287..9b3c668 100644 --- a/assets/index.html +++ b/assets/index.html @@ -50,6 +50,7 @@ },800); },1500); $.getJSON("blog.json", function(blog){ + blog = blog || []; if(blog.length == 0){ return document.getElementById("blog_section").style.display = "none"; } @@ -68,6 +69,8 @@ `); } + }).fail(function(){ + return document.getElementById("blog_section").style.display = "none"; }); diff --git a/bin/gitfolio.js b/bin/gitfolio.js new file mode 100644 index 0000000..dea9d65 --- /dev/null +++ b/bin/gitfolio.js @@ -0,0 +1,44 @@ +#! /usr/bin/env node +/* Argument parser */ +const program = require('commander'); + +process.env.OUT_DIR = process.env.OUT_DIR || process.cwd(); + +const {buildCommand} = require('../build'); +const {updateCommand} = require('../update'); +const {blogCommand} = require('../blog'); +const {version} = require('../package.json'); + +program + .command('build ') + .description('Build site with your GitHub username. This will be used to customize your site') + .option('-t, --theme [theme]', 'specify a theme to use', 'light') + .option('-b, --background [background]', 'set the background image') + .option('-f, --fork', 'includes forks with repos') + .option('-s, --sort [sort]', 'set default sort for repository', 'created') + .option('-o, --order [order]', 'set default order on sort', 'asc') + .action(buildCommand) + +program + .command('update') + .action(updateCommand); + +program + .command('blog ') + .description('Create blog with specified title') + .option('-s, --subtitle [subtitle]', 'give blog a subtitle', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.') + .option('-p, --pagetitle [pagetitle]', 'give blog page a title') + .option('-f, --folder [folder]', 'give folder a title (use "-" instead of spaces)') + .action(blogCommand); + +program.on('command:*', () => { + console.log('Unknown Command: ' + program.args.join(' ')) + program.help() +}); + +program + .version(version, '-v --version') + .usage('<command> [options]') + .parse(process.argv); + +if (program.args.length === 0) program.help(); diff --git a/blog.js b/blog.js index fd1ca81..dbafc00 100644 --- a/blog.js +++ b/blog.js @@ -1,31 +1,23 @@ -const program = require('commander'); const fs = require('fs'); const jsdom = require('jsdom').JSDOM, options = { resources: "usable" }; - -program - .version('0.1.2') - .option('-t, --title [title]', 'give blog a title') - .option('-s, --subtitle [subtitle]', 'give blog a subtitle', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.') - .option('-p, --pagetitle [pagetitle]', 'give blog page a title') - .option('-f, --folder [folder]', 'give folder a title (use "-" instead of spaces)') - .parse(process.argv); +const {getBlog, outDir} = require('./utils'); function createBlog(title, subtitle, pagetitle, folder) { // Checks to make sure this directory actually exists // and creates it if it doesn't - if (!fs.existsSync(`./dist/blog/`)){ - fs.mkdirSync(`./dist/blog/`, { recursive: true }, err => {}); + if (!fs.existsSync(`${outDir}/blog/`)){ + fs.mkdirSync(`${outDir}/blog/`, { recursive: true }, err => {}); } - if (!fs.existsSync(`./dist/blog/${folder}`)){ - fs.mkdirSync(`./dist/blog/${folder}`, { recursive: true }); + if (!fs.existsSync(`${outDir}/blog/${folder}`)){ + fs.mkdirSync(`${outDir}/blog/${folder}`, { recursive: true }); } - fs.copyFile('./assets/blog/blogTemplate.html', `./dist/blog/${folder}/index.html`, (err) => { + fs.copyFile(`${__dirname}/assets/blog/blogTemplate.html`, `${outDir}/blog/${folder}/index.html`, (err) => { if (err) throw err; - jsdom.fromFile(`./dist/blog/${folder}/index.html`, options).then(function (dom) { + jsdom.fromFile(`${outDir}/blog/${folder}/index.html`, options).then(function (dom) { let window = dom.window, document = window.document; var style = document.createElement("link"); style.setAttribute("rel","stylesheet") @@ -36,7 +28,7 @@ function createBlog(title, subtitle, pagetitle, folder) { document.getElementById("blog_title").textContent = title; document.getElementById("blog_sub_title").textContent = subtitle; - fs.writeFile(`./dist/blog/${folder}/index.html`, '<!DOCTYPE html>'+window.document.documentElement.outerHTML, function (error){ + fs.writeFile(`${outDir}/blog/${folder}/index.html`, '<!DOCTYPE html>'+window.document.documentElement.outerHTML, async function (error){ if (error) throw error; var blog_data = { "url_title": pagetitle, @@ -44,14 +36,11 @@ function createBlog(title, subtitle, pagetitle, folder) { "sub_title": subtitle, "top_image": "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450", "visible": true } - fs.readFile("./dist/blog.json", function (err , data) { + const old_blogs = await getBlog(); + old_blogs.push(blog_data); + fs.writeFile(`${outDir}/blog.json`, JSON.stringify(old_blogs, null, ' '), function(err){ if (err) throw err; - var old_blogs = JSON.parse(data); - old_blogs.push(blog_data); - fs.writeFile('./dist/blog.json', JSON.stringify(old_blogs, null, ' '), function(err){ - if (err) throw err; - console.log('Blog Created Successfully in "blog" folder.'); - }); + console.log('Blog Created Successfully in "blog" folder.'); }); }); }).catch(function(error){ @@ -60,18 +49,20 @@ function createBlog(title, subtitle, pagetitle, folder) { }); } -if (program.title) { +function blogCommand(title, program) { /* Check if build has been executed before blog this will prevent it from giving "link : index.css" error */ - if (!fs.existsSync(`./dist/index.html`) || !fs.existsSync(`./dist/index.css`)){ + if (!fs.existsSync(`${outDir}/index.html`) || !fs.existsSync(`${outDir}/index.css`)){ return console.log("You need to run build command before using blog one"); } if (!program.pagetitle) { - program.pagetitle = program.title; + program.pagetitle = title; } if (!program.folder) { - program.folder = program.title; + program.folder = title; } - createBlog(program.title, program.subtitle, program.pagetitle, program.folder); -} else { - console.log("Provide a title to create a new blog"); + createBlog(title, program.subtitle, program.pagetitle, program.folder); } + +module.exports = { + blogCommand, +}; diff --git a/build.js b/build.js index b6da73e..12d982b 100644 --- a/build.js +++ b/build.js @@ -1,5 +1,3 @@ -/* Argument parser */ -const program = require('commander'); /* Filepath utilities */ const path = require('path'); /* Promise library */ @@ -9,22 +7,10 @@ const hbs = require('handlebars'); from callback-passed async functions */ const fs = bluebird.promisifyAll(require('fs')); const { updateHTML } = require('./populate'); +const { getConfig, outDir } = require('./utils'); - -/* Specify the options the program uses */ -program - .version('0.1.2') - .option('-n, --name [username]', 'your GitHub username. This will be used to customize your site') - .option('-t, --theme [theme]', 'specify a theme to use') - .option('-b, --background [background]', 'set the background image') - .option('-f, --fork', 'includes forks with repos') - .option('-s, --sort [sort]', 'set default sort for repository') - .option('-o, --order [order]', 'set default order on sort') - .parse(process.argv); - -const config = './dist/config.json'; -const assetDir = path.resolve('./assets/'); -const outDir = path.resolve('./dist/'); +const assetDir = path.resolve(`${__dirname}/assets/`); +const config = path.join(outDir, 'config.json'); /** * Creates the stylesheet used by the site from a template stylesheet. @@ -32,9 +18,12 @@ const outDir = path.resolve('./dist/'); * Theme styles are added to the new stylesheet depending on command line * arguments. */ -async function populateCSS() { +async function populateCSS({ + theme = 'light', + background = 'https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450', +} = {}) { /* Get the theme the user requests. Defaults to 'light' */ - let theme = `${program.theme || 'light'}.css`; /* Site theme, defaults to 'light' */ + theme = `${theme}.css`; let template = path.resolve(assetDir, 'index.css'); let stylesheet = path.join(outDir, 'index.css'); @@ -58,41 +47,41 @@ async function populateCSS() { themeSource = themeSource.toString('utf-8'); let themeTemplate = hbs.compile(themeSource); let styles = themeTemplate({ - 'background': `${program.background || 'https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450'}` + 'background': `${background}` }) /* Add the user-specified styles to the new stylesheet */ await fs.appendFileAsync(stylesheet, styles); /* Update the config file with the user's theme choice */ - let data = await fs.readFileAsync(config); - data = JSON.parse(data); + const data = await getConfig(); data[0].theme = theme; await fs.writeFileAsync(config, JSON.stringify(data, null, ' ')); } async function populateConfig(sort, order, includeFork) { - let data = await fs.readFileAsync(config); - data = JSON.parse(data); + const data = await getConfig(); data[0].sort = sort; data[0].order = order; data[0].includeFork = includeFork; await fs.writeFileAsync(config, JSON.stringify(data, null, ' ')); } -populateCSS(); - -if (typeof program.name === 'string' && program.name.trim() !== '') { +async function buildCommand(username, program) { + await populateCSS(program); + let sort = program.sort ? program.sort : 'created'; let order = "asc"; let includeFork = false; - if(program.order){ - order = ('%s', program.order); + if(program.order){ + order = ('%s', program.order); } if(program.fork){ includeFork = true; } - populateConfig(sort, order, includeFork); - updateHTML(('%s', program.name), sort, order, includeFork); -} else { - console.error("Error: Please provide a GitHub username."); -} \ No newline at end of file + await populateConfig(sort, order, includeFork); + updateHTML(('%s', username), sort, order, includeFork); +} + +module.exports = { + buildCommand, +}; diff --git a/dist/blog.json b/default/blog.json similarity index 100% rename from dist/blog.json rename to default/blog.json diff --git a/dist/config.json b/default/config.json similarity index 100% rename from dist/config.json rename to default/config.json diff --git a/package.json b/package.json index ab8c8c9..195e4d4 100644 --- a/package.json +++ b/package.json @@ -1,20 +1,22 @@ -{ - "name": "gitfolio", - "version": "0.1.2", - "description": "portfolio website for showcasing your work", - "main": "build.js", - "scripts": { - "clean": "rm -f dist/index.*", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "imfunny", - "license": "ISC", - "dependencies": { - "bluebird": "^3.5.4", - "commander": "^2.20.0", - "github-emoji": "^1.1.0", - "got": "^9.6.0", - "handlebars": "^4.1.2", - "jsdom": "^15.1.0" - } -} +{ + "name": "gitfolio", + "version": "0.1.2", + "description": "portfolio website for showcasing your work", + "main": "build.js", + "bin": "bin/gitfolio.js", + "scripts": { + "cli": "OUT_DIR='./dist' node bin/gitfolio.js", + "clean": "rm -rf ./dist/*", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "imfunny", + "license": "ISC", + "dependencies": { + "bluebird": "^3.5.4", + "commander": "^2.20.0", + "github-emoji": "^1.1.0", + "got": "^9.6.0", + "handlebars": "^4.1.2", + "jsdom": "^15.1.0" + } +} diff --git a/populate.js b/populate.js index 4774317..65922e4 100644 --- a/populate.js +++ b/populate.js @@ -5,6 +5,7 @@ const jsdom = require('jsdom').JSDOM, options = { resources: "usable" }; +const { getConfig, outDir } = require('./utils'); function convertToEmoji(text) { if (text == null) return; @@ -29,7 +30,7 @@ function convertToEmoji(text) { module.exports.updateHTML = (username, sort, order, includeFork) => { //add data to assets/index.html - jsdom.fromFile("./assets/index.html", options).then(function (dom) { + jsdom.fromFile(`${__dirname}/assets/index.html`, options).then(function (dom) { let window = dom.window, document = window.document; (async () => { try { @@ -115,18 +116,15 @@ module.exports.updateHTML = (username, sort, order, includeFork) => { <span style="display:${user.location == null || !user.location ? 'none' : 'block'};"><i class="fas fa-map-marker-alt"></i>    ${user.location}</span> <span style="display:${user.hireable == false || !user.hireable ? 'none' : 'block'};"><i class="fas fa-user-tie"></i>    Available for hire</span>`; //add data to config.json - fs.readFile("./dist/config.json", function (err, data) { + const data = await getConfig(); + data[0].username = user.login; + data[0].name = user.name; + data[0].userimg = user.avatar_url; + fs.writeFile(`${outDir}/config.json`, JSON.stringify(data, null, ' '), function (err) { if (err) throw err; - data = JSON.parse(data); - data[0].username = user.login; - data[0].name = user.name; - data[0].userimg = user.avatar_url; - fs.writeFile('./dist/config.json', JSON.stringify(data, null, ' '), function (err) { - if (err) throw err; - console.log("Config file updated."); - }); + console.log("Config file updated."); }); - fs.writeFile('dist/index.html', '<!DOCTYPE html>' + window.document.documentElement.outerHTML, function (error) { + fs.writeFile(`${outDir}/index.html`, '<!DOCTYPE html>' + window.document.documentElement.outerHTML, function (error) { if (error) throw error; console.log("Build Complete"); }); diff --git a/update.js b/update.js index b167de3..8801655 100644 --- a/update.js +++ b/update.js @@ -1,9 +1,9 @@ const fs = require('fs'); +const {getConfig, outDir} = require('./utils'); const {updateHTML} = require('./populate'); -fs.readFile("./dist/config.json", function (err , data) { - if (err) throw err; - data = JSON.parse(data); +async function updateCommand() { + const data = await getConfig(); var username = data[0].username; var sort = data[0].sort; var order = data[0].order; @@ -13,4 +13,8 @@ fs.readFile("./dist/config.json", function (err , data) { return; } updateHTML(username, sort, order, includeFork); -}); \ No newline at end of file +} + +module.exports = { + updateCommand, +}; diff --git a/utils.js b/utils.js new file mode 100644 index 0000000..6d06861 --- /dev/null +++ b/utils.js @@ -0,0 +1,39 @@ +const path = require('path'); +const bluebird = require('bluebird'); +const fs = bluebird.promisifyAll(require('fs')); + +const outDir = path.resolve(process.env.OUT_DIR || './dist/'); +const configPath = path.join(outDir, 'config.json'); +const blogPath = path.join(outDir, 'blog.json'); + +const defaultConfigPath = path.resolve(`${__dirname}/default/config.json`); +const defaultBlogPath = path.resolve(`${__dirname}/default/blog.json`); + +/** + * Tries to read file from out dir, + * if not present returns default file contents + */ +async function getFileWithDefaults(file, defaultFile) { + try { + await fs.accessAsync(file, fs.constants.F_OK); + } catch (err) { + const defaultData = await fs.readFileAsync(defaultFile); + return JSON.parse(defaultData); + } + const data = await fs.readFileAsync(file); + return JSON.parse(data); +} + +async function getConfig() { + return getFileWithDefaults(configPath, defaultConfigPath); +} + +async function getBlog() { + return getFileWithDefaults(blogPath, defaultBlogPath); +} + +module.exports = { + outDir, + getConfig, + getBlog, +}; From 438f80ee08cc09083f457dff42c657de6e688493 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Thu, 23 May 2019 10:34:24 +0530 Subject: [PATCH 015/163] Update utils.js --- utils.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils.js b/utils.js index 6d06861..bbdeddc 100644 --- a/utils.js +++ b/utils.js @@ -2,7 +2,7 @@ const path = require('path'); const bluebird = require('bluebird'); const fs = bluebird.promisifyAll(require('fs')); -const outDir = path.resolve(process.env.OUT_DIR || './dist/'); +const outDir = path.resolve('./dist/' || process.env.OUT_DIR); const configPath = path.join(outDir, 'config.json'); const blogPath = path.join(outDir, 'blog.json'); From 81e8302b22f4a570ff3517a586aae997bfb8233e Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Thu, 23 May 2019 10:47:40 +0530 Subject: [PATCH 016/163] updated package --- package.json | 64 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index 195e4d4..4013aa0 100644 --- a/package.json +++ b/package.json @@ -1,22 +1,42 @@ -{ - "name": "gitfolio", - "version": "0.1.2", - "description": "portfolio website for showcasing your work", - "main": "build.js", - "bin": "bin/gitfolio.js", - "scripts": { - "cli": "OUT_DIR='./dist' node bin/gitfolio.js", - "clean": "rm -rf ./dist/*", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "imfunny", - "license": "ISC", - "dependencies": { - "bluebird": "^3.5.4", - "commander": "^2.20.0", - "github-emoji": "^1.1.0", - "got": "^9.6.0", - "handlebars": "^4.1.2", - "jsdom": "^15.1.0" - } -} +{ + "name": "gitfolio", + "version": "0.1.2", + "description": "portfolio website for showcasing your work", + "main": "build.js", + "bin": "bin/gitfolio.js", + "scripts": { + "cli": "OUT_DIR='./dist' node bin/gitfolio.js", + "clean": "rm -rf ./dist/*", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": { + "name": "imfunny and community", + "email": "imfunny@wybemf.com", + "url": "https://imfunniee.github.io" + }, + "bugs": "https://github.com/imfunniee/gitfolio/issues", + "homepage": "https://github.com/imfunniee/gitfolio", + "keywords": [ + "personal-website", + "github", + "portfolio", + "portfolio website", + "blog website", + "blog", + "gitfolio", + "git" + ], + "repository": { + "type": "git", + "url": "https://github.com/imfunniee/gitfolio" + }, + "license": "GPL-3.0", + "dependencies": { + "bluebird": "^3.5.4", + "commander": "^2.20.0", + "github-emoji": "^1.1.0", + "got": "^9.6.0", + "handlebars": "^4.1.2", + "jsdom": "^15.1.0" + } +} From 6fb6408534175b60c2129fe6506648d95d0844df Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Thu, 23 May 2019 15:27:23 +0530 Subject: [PATCH 017/163] v0.1.3 -added cli support (thanks @rohit-smpx) -arguments for fork -you can now sort and order repos -fixed bugs --- README.md | 45 +- assets/blog/blog.json | 16 +- assets/index.css | 1 + bin/gitfolio.js | 93 +- blog.js | 2 +- build.js | 2 +- default/config.json | 20 +- package-lock.json | 2610 ++++++++++++++++++++++++++--------------- package.json | 10 +- populate.js | 2 +- run.js | 25 + update.js | 5 +- utils.js | 78 +- 13 files changed, 1853 insertions(+), 1056 deletions(-) create mode 100644 run.js diff --git a/README.md b/README.md index b244dbb..ae707b2 100644 --- a/README.md +++ b/README.md @@ -11,31 +11,29 @@ Check out this [live demo](https://imfunniee.github.io/gitfolio/) to see gitfoli # Getting Started +### Let's Install + +Install gitfolio + +```sh +npm i -g gitfolio +``` + ### Let's Build -a. Clone this repo or simply download it. ```sh -git clone https://github.com/imfunniee/gitfolio.git +gitfolio build <username> ``` +This will build your website using your GitHub username and put it in the `/dist` folder. -b. `cd` into the repo you just cloned or downloaded. -```sh -cd gitfolio # Navigate into the project folder -npm i # Install the required dependencies -``` - -c. Gitfolio is now ready to be used. The command +To run your website use `run` command ```sh -node build --name [username] +gitfolio build <username> ``` -Will build your website using your GitHub username and put it in the `dist/` folder. - -d. To run your website navigate to `./dist/index.html` in your browser. [you won't see blogs until you are on localhost] 🎉 Congrats, you just made yourself a personal website! -> if you get stuck somewhere or get an error, please create an issue ### Let's Customize @@ -44,7 +42,7 @@ d. To run your website navigate to `./dist/index.html` in your browser. [you won To include forks on your personal website just provide `-f` or `--fork` argument while building ``` -$ node build --name username -f +$ gitfolio build username -f ``` #### Sorting Repos @@ -52,7 +50,7 @@ $ node build --name username -f To sort repos provide `--sort [sortBy]` argument while building. Where `[sortBy]` can be `star`, `created`, `updated`, `pushed`,`full_name`. Default: `created` ``` -$ node build --name username --sort star +$ gitfolio build username --sort star ``` #### Ordering Repos @@ -60,7 +58,7 @@ $ node build --name username --sort star To order the sorted repos provide `--order [orderBy]` argument while building. Where `[orderBy]` can be `asc` or `desc`. Default: `asc` ``` -$ node build --name username --sort star --order desc +$ gitfolio build username --sort star --order desc ``` #### Customize Themes @@ -73,7 +71,7 @@ Themes are specified using the `--theme [theme-name]` flag when running the `bui For example, the following command will build the website with the dark theme ``` -$ node build --name username --theme dark +$ gitfolio build username --theme dark ``` #### Customize background image @@ -81,7 +79,7 @@ $ node build --name username --theme dark To customize the background image just provide `--background [url]` argument while building ``` -$ node build --name username --background https://images.unsplash.com/photo-1557277770-baf0ca74f908?w=1634 +$ gitfolio build username --background https://images.unsplash.com/photo-1557277770-baf0ca74f908?w=1634 ``` You could also add in your custom CSS inside `index.css` to give it a more personal feel. @@ -99,7 +97,7 @@ Go To `username.github.io` your site should be up!! To update your info, simply run ``` -$ node update +$ gitfolio update ``` This will update your info and your repository info. @@ -111,7 +109,7 @@ To Update background or theme you need to run `build` command again. To add your first blog run this command. ``` -$ node blog --title my-first-blog +$ gitfolio blog my-first-blog ``` > (use "-" instead of spaces) @@ -142,11 +140,12 @@ More Arguments for Blog > (use "-" instead of spaces) + ## Support -Support me by buying me a coffee ☕ +Support me to make more projects like this by Buying me a Coffee ☕ -<a href="https://www.buymeacoffee.com/imfunniee" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a> +<a href="https://www.buymeacoffee.com/imfunniee" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;"></a> ## License ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg) diff --git a/assets/blog/blog.json b/assets/blog/blog.json index 771d064..e6ddf7c 100644 --- a/assets/blog/blog.json +++ b/assets/blog/blog.json @@ -1,9 +1,9 @@ -[ - { - "url_title": "FooBar", - "title": "FooBar", - "sub_title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", - "top_image": "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450", - "visible": true - } +[ + { + "url_title": "FooBar", + "title": "FooBar", + "sub_title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", + "top_image": "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450", + "visible": true + } ] \ No newline at end of file diff --git a/assets/index.css b/assets/index.css index 496a1af..1c7e5ee 100644 --- a/assets/index.css +++ b/assets/index.css @@ -287,6 +287,7 @@ body{ font-size:24px; font-weight:bold; margin:1vh 0px; + padding:0px 1px; word-wrap: break-word; } diff --git a/bin/gitfolio.js b/bin/gitfolio.js index dea9d65..35360ed 100644 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -1,44 +1,51 @@ #! /usr/bin/env node -/* Argument parser */ -const program = require('commander'); - -process.env.OUT_DIR = process.env.OUT_DIR || process.cwd(); - -const {buildCommand} = require('../build'); -const {updateCommand} = require('../update'); -const {blogCommand} = require('../blog'); -const {version} = require('../package.json'); - -program - .command('build <username>') - .description('Build site with your GitHub username. This will be used to customize your site') - .option('-t, --theme [theme]', 'specify a theme to use', 'light') - .option('-b, --background [background]', 'set the background image') - .option('-f, --fork', 'includes forks with repos') - .option('-s, --sort [sort]', 'set default sort for repository', 'created') - .option('-o, --order [order]', 'set default order on sort', 'asc') - .action(buildCommand) - -program - .command('update') - .action(updateCommand); - -program - .command('blog <title>') - .description('Create blog with specified title') - .option('-s, --subtitle [subtitle]', 'give blog a subtitle', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.') - .option('-p, --pagetitle [pagetitle]', 'give blog page a title') - .option('-f, --folder [folder]', 'give folder a title (use "-" instead of spaces)') - .action(blogCommand); - -program.on('command:*', () => { - console.log('Unknown Command: ' + program.args.join(' ')) - program.help() -}); - -program - .version(version, '-v --version') - .usage('<command> [options]') - .parse(process.argv); - -if (program.args.length === 0) program.help(); +/* Argument parser */ +const program = require('commander'); + +process.env.OUT_DIR = process.env.OUT_DIR || process.cwd(); + +const {buildCommand} = require('../build'); +const {updateCommand} = require('../update'); +const {blogCommand} = require('../blog'); +const {runCommand} = require('../run'); +const {version} = require('../package.json'); + +program + .command('build <username>') + .description('Build site with your GitHub username. This will be used to customize your site') + .option('-t, --theme [theme]', 'specify a theme to use', 'light') + .option('-b, --background [background]', 'set the background image') + .option('-f, --fork', 'includes forks with repos') + .option('-s, --sort [sort]', 'set default sort for repository', 'created') + .option('-o, --order [order]', 'set default order on sort', 'asc') + .action(buildCommand) + +program + .command('update') + .description('Update user and repository data') + .action(updateCommand); + +program + .command('blog <title>') + .description('Create blog with specified title') + .option('-s, --subtitle [subtitle]', 'give blog a subtitle', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.') + .option('-p, --pagetitle [pagetitle]', 'give blog page a title') + .option('-f, --folder [folder]', 'give folder a title (use "-" instead of spaces)') + .action(blogCommand); + +program + .command('run') + .description('Run build files') + .action(runCommand); + +program.on('command:*', () => { + console.log('Unknown Command: ' + program.args.join(' ')) + program.help() +}); + +program + .version(version, '-v --version') + .usage('<command> [options]') + .parse(process.argv); + +if (program.args.length === 0) program.help(); diff --git a/blog.js b/blog.js index dbafc00..70ce0fc 100644 --- a/blog.js +++ b/blog.js @@ -64,5 +64,5 @@ function blogCommand(title, program) { } module.exports = { - blogCommand, + blogCommand }; diff --git a/build.js b/build.js index 12d982b..fd2d828 100644 --- a/build.js +++ b/build.js @@ -83,5 +83,5 @@ async function buildCommand(username, program) { } module.exports = { - buildCommand, + buildCommand }; diff --git a/default/config.json b/default/config.json index d504cad..ea89d87 100644 --- a/default/config.json +++ b/default/config.json @@ -1,11 +1,11 @@ -[ - { - "username": null, - "name": null, - "userimg": null, - "sort": null, - "order": null, - "includeFork": null, - "theme": "light.css" - } +[ + { + "username": null, + "name": null, + "userimg": null, + "sort": null, + "order": null, + "includeFork": null, + "theme": "light.css" + } ] \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f6e2421..ba67f01 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,924 +1,1686 @@ -{ - "name": "gitfolio", - "version": "0.1.2", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" - }, - "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" - }, - "acorn-globals": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", - "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" - }, - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bluebird": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", - "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" - }, - "cacheable-request": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.0.0.tgz", - "integrity": "sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^4.0.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^1.0.1", - "normalize-url": "^3.1.0", - "responselike": "^1.0.2" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cssom": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", - "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==" - }, - "cssstyle": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", - "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", - "requires": { - "cssom": "0.3.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "defer-to-connect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", - "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } - }, - "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "github-emoji": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.0.tgz", - "integrity": "sha512-FCs0tDDtX/pwkXN6sQE5lUC6B4PIIFC+rv7IZAw8956Mtvo5NQSWHEBJvExl+B8+ahqNVU0W33hMrXSIEFSUvA==" - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "http-cache-semantics": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", - "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.0.tgz", - "integrity": "sha512-QEmc2XIkNfCK3KRfa9ljMJjC4kAGdVgRrs/pCBsQG/QoKz0B42+C58f6TdAmhq/rw494eFCoLHxX6+hWuxb96Q==", - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - }, - "nwsapi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", - "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } - } - }, - "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", - "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saxes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", - "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", - "requires": { - "xmlchars": "^1.3.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "requires": { - "punycode": "^2.1.0" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "uglify-js": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.13.tgz", - "integrity": "sha512-Lho+IJlquX6sdJgyKSJx/M9y4XbDd3ekPjD8S6HYmT5yVSwDtlSuca2w5hV4g2dIsp0Y/4orbfWxKexodmFv7w==", - "optional": true, - "requires": { - "commander": "~2.20.0", - "source-map": "~0.6.1" - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - }, - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, - "xmlchars": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", - "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" - } - } -} +{ + "name": "gitfolio", + "version": "0.1.3", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" + }, + "acorn-globals": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", + "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "optional": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big-integer": { + "version": "1.6.43", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.43.tgz", + "integrity": "sha512-9dULc9jsKmXl0Aeunug8wbF+58n+hQoFjqClN7WeZwGLh0XJUWyJJ9Ee+Ep+Ql/J9fRsTVaeThp8MhiCCrY0Jg==", + "optional": true + }, + "bluebird": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", + "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "bplist-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", + "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", + "optional": true, + "requires": { + "big-integer": "^1.6.7" + } + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacheable-request": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.0.0.tgz", + "integrity": "sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^4.0.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^1.0.1", + "normalize-url": "^3.1.0", + "responselike": "^1.0.2" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "optional": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "optional": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cssom": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", + "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==" + }, + "cssstyle": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", + "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", + "requires": { + "cssom": "0.3.x" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "optional": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "optional": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "default-browser-id": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-1.0.4.tgz", + "integrity": "sha1-5Z0JpdFXuCi4dsJoFuYcPSosIDo=", + "optional": true, + "requires": { + "bplist-parser": "^0.1.0", + "meow": "^3.1.0", + "untildify": "^2.0.0" + } + }, + "defer-to-connect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", + "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "optional": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.0.tgz", + "integrity": "sha512-1Z7/t3Z5ZnBG252gKUPyItc4xdeaA0X934ca2ewckAsVsw9EG71i++ZHZPYnus8g/s5Bty8IMpSVEuRkmwwPRQ==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "optional": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "optional": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "github-emoji": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.0.tgz", + "integrity": "sha512-FCs0tDDtX/pwkXN6sQE5lUC6B4PIIFC+rv7IZAw8956Mtvo5NQSWHEBJvExl+B8+ahqNVU0W33hMrXSIEFSUvA==" + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "http-cache-semantics": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "optional": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "optional": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "optional": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.0.tgz", + "integrity": "sha512-QEmc2XIkNfCK3KRfa9ljMJjC4kAGdVgRrs/pCBsQG/QoKz0B42+C58f6TdAmhq/rw494eFCoLHxX6+hWuxb96Q==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "optional": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "optional": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "optional": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + }, + "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=", + "optional": true + }, + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "open": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.3.0.tgz", + "integrity": "sha512-6AHdrJxPvAXIowO/aIaeHZ8CeMdDf7qCyRNq8NwJpinmCdXhz+NZR7ie1Too94lpciCDsG+qHGO9Mt0svA4OqA==", + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "optional": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "optional": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "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=", + "requires": { + "pinkie": "^2.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "optional": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "optional": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "optional": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "optional": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "resolve": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saxes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", + "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", + "requires": { + "xmlchars": "^1.3.1" + } + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "optional": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "optional": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "optional": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "uglify-js": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.13.tgz", + "integrity": "sha512-Lho+IJlquX6sdJgyKSJx/M9y4XbDd3ekPjD8S6HYmT5yVSwDtlSuca2w5hV4g2dIsp0Y/4orbfWxKexodmFv7w==", + "optional": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "untildify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", + "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=", + "optional": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "x-default-browser": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/x-default-browser/-/x-default-browser-0.4.0.tgz", + "integrity": "sha1-cM8NqF2nwKtcsPFaiX8jIqa91IE=", + "requires": { + "default-browser-id": "^1.0.4" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", + "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" + } + } +} diff --git a/package.json b/package.json index 4013aa0..e56f418 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "gitfolio", - "version": "0.1.2", - "description": "portfolio website for showcasing your work", + "version": "0.1.3", + "description": "a portfolio website for everyone to showcase your work", "main": "build.js", "bin": "bin/gitfolio.js", "scripts": { @@ -34,9 +34,13 @@ "dependencies": { "bluebird": "^3.5.4", "commander": "^2.20.0", + "express": "^4.17.0", "github-emoji": "^1.1.0", "got": "^9.6.0", "handlebars": "^4.1.2", - "jsdom": "^15.1.0" + "jsdom": "^15.1.0", + "ncp": "^2.0.0", + "open": "^6.3.0", + "x-default-browser": "^0.4.0" } } diff --git a/populate.js b/populate.js index 65922e4..00f3cd2 100644 --- a/populate.js +++ b/populate.js @@ -126,7 +126,7 @@ module.exports.updateHTML = (username, sort, order, includeFork) => { }); fs.writeFile(`${outDir}/index.html`, '<!DOCTYPE html>' + window.document.documentElement.outerHTML, function (error) { if (error) throw error; - console.log("Build Complete"); + console.log(`Build Complete, Files can be Found @ ${outDir}`); }); } catch (error) { console.log(error); diff --git a/run.js b/run.js new file mode 100644 index 0000000..396b7a3 --- /dev/null +++ b/run.js @@ -0,0 +1,25 @@ +const express = require('express'); +const open = require('open'); +const defaultBrowser = require('x-default-browser'); +const app = express(); +app.use(express.static(__dirname + '/dist')); + +function runCommand(){ + app.get('/',function(req,res){ + res.sendFile('/index.html'); + }); + + app.listen(3000); + + defaultBrowser(function (err, res) { + if(err) throw err; + (async () => { + await open('http://localhost:3000', {app: res.commonName}); + console.log("ctrl + c to exit"); + })(); + }); +} + +module.exports = { + runCommand +}; \ No newline at end of file diff --git a/update.js b/update.js index 8801655..cf58da3 100644 --- a/update.js +++ b/update.js @@ -1,5 +1,4 @@ -const fs = require('fs'); -const {getConfig, outDir} = require('./utils'); +const {getConfig} = require('./utils'); const {updateHTML} = require('./populate'); async function updateCommand() { @@ -16,5 +15,5 @@ async function updateCommand() { } module.exports = { - updateCommand, + updateCommand }; diff --git a/utils.js b/utils.js index bbdeddc..afa6813 100644 --- a/utils.js +++ b/utils.js @@ -1,39 +1,39 @@ -const path = require('path'); -const bluebird = require('bluebird'); -const fs = bluebird.promisifyAll(require('fs')); - -const outDir = path.resolve('./dist/' || process.env.OUT_DIR); -const configPath = path.join(outDir, 'config.json'); -const blogPath = path.join(outDir, 'blog.json'); - -const defaultConfigPath = path.resolve(`${__dirname}/default/config.json`); -const defaultBlogPath = path.resolve(`${__dirname}/default/blog.json`); - -/** - * Tries to read file from out dir, - * if not present returns default file contents - */ -async function getFileWithDefaults(file, defaultFile) { - try { - await fs.accessAsync(file, fs.constants.F_OK); - } catch (err) { - const defaultData = await fs.readFileAsync(defaultFile); - return JSON.parse(defaultData); - } - const data = await fs.readFileAsync(file); - return JSON.parse(data); -} - -async function getConfig() { - return getFileWithDefaults(configPath, defaultConfigPath); -} - -async function getBlog() { - return getFileWithDefaults(blogPath, defaultBlogPath); -} - -module.exports = { - outDir, - getConfig, - getBlog, -}; +const path = require('path'); +const bluebird = require('bluebird'); +const fs = bluebird.promisifyAll(require('fs')); + +const outDir = path.resolve('./dist/' || process.env.OUT_DIR); +const configPath = path.join(outDir, 'config.json'); +const blogPath = path.join(outDir, 'blog.json'); + +const defaultConfigPath = path.resolve(`${__dirname}/default/config.json`); +const defaultBlogPath = path.resolve(`${__dirname}/default/blog.json`); + +/** + * Tries to read file from out dir, + * if not present returns default file contents + */ +async function getFileWithDefaults(file, defaultFile) { + try { + await fs.accessAsync(file, fs.constants.F_OK); + } catch (err) { + const defaultData = await fs.readFileAsync(defaultFile); + return JSON.parse(defaultData); + } + const data = await fs.readFileAsync(file); + return JSON.parse(data); +} + +async function getConfig() { + return getFileWithDefaults(configPath, defaultConfigPath); +} + +async function getBlog() { + return getFileWithDefaults(blogPath, defaultBlogPath); +} + +module.exports = { + outDir, + getConfig, + getBlog +}; From b2b757442f8f71993df3b94f516c53b46551316b Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Thu, 23 May 2019 15:30:03 +0530 Subject: [PATCH 018/163] Add files via upload --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ae707b2..8fc3b22 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Check out this [live demo](https://imfunniee.github.io/gitfolio/) to see gitfoli Install gitfolio ```sh -npm i -g gitfolio +npm i gitfolio -g ``` ### Let's Build @@ -26,7 +26,7 @@ gitfolio build <username> ``` This will build your website using your GitHub username and put it in the `/dist` folder. -To run your website use `run` command +To run your website use `run` command (please refrain from using this for now) ```sh gitfolio build <username> From fb00959194fd758f92ef2b75d04372f69ed1be2a Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Thu, 23 May 2019 15:33:37 +0530 Subject: [PATCH 019/163] updated readme --- README.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 8fc3b22..6ceba48 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ npm i gitfolio -g ```sh gitfolio build <username> ``` -This will build your website using your GitHub username and put it in the `/dist` folder. +<username> is your username on github. This will build your website using your GitHub username and put it in the `/dist` folder. To run your website use `run` command (please refrain from using this for now) @@ -41,24 +41,24 @@ gitfolio build <username> To include forks on your personal website just provide `-f` or `--fork` argument while building -``` -$ gitfolio build username -f +```sh +$ gitfolio build <username> -f ``` #### Sorting Repos To sort repos provide `--sort [sortBy]` argument while building. Where `[sortBy]` can be `star`, `created`, `updated`, `pushed`,`full_name`. Default: `created` -``` -$ gitfolio build username --sort star +```sh +$ gitfolio build <username> --sort star ``` #### Ordering Repos To order the sorted repos provide `--order [orderBy]` argument while building. Where `[orderBy]` can be `asc` or `desc`. Default: `asc` -``` -$ gitfolio build username --sort star --order desc +```sh +$ gitfolio build <username> --sort star --order desc ``` #### Customize Themes @@ -70,16 +70,16 @@ Themes are specified using the `--theme [theme-name]` flag when running the `bui > TODO: Add more themes For example, the following command will build the website with the dark theme -``` -$ gitfolio build username --theme dark +```sh +$ gitfolio build <username> --theme dark ``` #### Customize background image To customize the background image just provide `--background [url]` argument while building -``` -$ gitfolio build username --background https://images.unsplash.com/photo-1557277770-baf0ca74f908?w=1634 +```sh +$ gitfolio build <username> --background https://images.unsplash.com/photo-1557277770-baf0ca74f908?w=1634 ``` You could also add in your custom CSS inside `index.css` to give it a more personal feel. @@ -96,7 +96,7 @@ Go To `username.github.io` your site should be up!! To update your info, simply run -``` +```sh $ gitfolio update ``` This will update your info and your repository info. @@ -108,7 +108,7 @@ To Update background or theme you need to run `build` command again. To add your first blog run this command. -``` +```sh $ gitfolio blog my-first-blog ``` > (use "-" instead of spaces) From fa3fac0dc020d1680f14ba4a4015bc5048d5e6a6 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Thu, 23 May 2019 15:34:22 +0530 Subject: [PATCH 020/163] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6ceba48..e74ae6d 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ npm i gitfolio -g ```sh gitfolio build <username> ``` -<username> is your username on github. This will build your website using your GitHub username and put it in the `/dist` folder. +`<username>` is your username on github. This will build your website using your GitHub username and put it in the `/dist` folder. To run your website use `run` command (please refrain from using this for now) From df740ac8c40432a8cbb534a5c61cd63f2671c9c9 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Thu, 23 May 2019 15:39:12 +0530 Subject: [PATCH 021/163] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e74ae6d..2a5aa19 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ gitfolio build <username> To run your website use `run` command (please refrain from using this for now) ```sh -gitfolio build <username> +gitfolio run ``` 🎉 Congrats, you just made yourself a personal website! From cbd7aeb88db9be543e2df5477c6a675fe70bd66f Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Thu, 23 May 2019 16:06:29 +0530 Subject: [PATCH 022/163] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2a5aa19..1bcdaa0 100644 --- a/README.md +++ b/README.md @@ -143,7 +143,7 @@ More Arguments for Blog ## Support -Support me to make more projects like this by Buying me a Coffee ☕ +Loved My Work? Keep me awake at night by buying me a Coffee ☕ <a href="https://www.buymeacoffee.com/imfunniee" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;"></a> From 88b29ab754e1d8d05e24d08a77ba2076772c71e3 Mon Sep 17 00:00:00 2001 From: Jens Reidel <jens@troet.org> Date: Thu, 23 May 2019 15:54:50 +0200 Subject: [PATCH 023/163] Make the blog attribute a link (#56) * Make the blog a link * actual link text * Make the CSS style the link --- assets/index.css | 12 +++++++++++- populate.js | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/assets/index.css b/assets/index.css index 1c7e5ee..e550cb9 100644 --- a/assets/index.css +++ b/assets/index.css @@ -240,6 +240,16 @@ body{ font-family: 'Questrial', sans-serif; } +#about a { + color:#fff !important; + text-decoration:none; + font-weight:bold; +} + +#about a:hover { + text-decoration:underline; +} + #about span { margin:1vh 0px; display:block; @@ -434,4 +444,4 @@ body{ ::-webkit-scrollbar {width:5px;height:5px;} ::-webkit-scrollbar-track {background:var(--bg-color);} -::-webkit-scrollbar-thumb {background:var(--text-color);} \ No newline at end of file +::-webkit-scrollbar-thumb {background:var(--text-color);} diff --git a/populate.js b/populate.js index 00f3cd2..a5293fe 100644 --- a/populate.js +++ b/populate.js @@ -112,7 +112,7 @@ module.exports.updateHTML = (username, sort, order, includeFork) => { document.getElementById("about").innerHTML = ` <span style="display:${user.company == null || !user.company ? 'none' : 'block'};"><i class="fas fa-users"></i>   ${user.company}</span> <span style="display:${user.email == null || !user.email ? 'none' : 'block'};"><i class="fas fa-envelope"></i>   ${user.email}</span> - <span style="display:${user.blog == null || !user.blog ? 'none' : 'block'};"><i class="fas fa-link"></i>   ${user.blog}</span> + <span style="display:${user.blog == null || !user.blog ? 'none' : 'block'};"><i class="fas fa-link"></i>   <a href="${user.blog}">${user.blog}</a></span> <span style="display:${user.location == null || !user.location ? 'none' : 'block'};"><i class="fas fa-map-marker-alt"></i>    ${user.location}</span> <span style="display:${user.hireable == false || !user.hireable ? 'none' : 'block'};"><i class="fas fa-user-tie"></i>    Available for hire</span>`; //add data to config.json From 1341be7e39eafbc7f5d66ea71add8f4ba1b2a26e Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Fri, 24 May 2019 12:12:23 +0530 Subject: [PATCH 024/163] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1bcdaa0..9852d8e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ <img src="https://i.imgur.com/eA6clZr.png"> -# Gitfolio [![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg) +# Gitfolio [![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) ### personal website + blog for every github user @@ -148,4 +148,4 @@ Loved My Work? Keep me awake at night by buying me a Coffee ☕ <a href="https://www.buymeacoffee.com/imfunniee" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;"></a> ## License -![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg) +![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) From 844169143488abe115dfe0ee2d6a8bb94daa1136 Mon Sep 17 00:00:00 2001 From: Jorge Dacosta <jorgedacostaza@gmail.com> Date: Fri, 24 May 2019 08:21:06 +0100 Subject: [PATCH 025/163] + Service Worker (#47) * chore: lint markup & Load SW if browsers support * chore: Get SW and copy to dist on populateCss * SW stuff! --- assets/index.html | 165 +++++++++++++++++++++------------------ assets/service-worker.js | 42 ++++++++++ build.js | 5 ++ 3 files changed, 136 insertions(+), 76 deletions(-) create mode 100644 assets/service-worker.js diff --git a/assets/index.html b/assets/index.html index 9b3c668..aca9730 100644 --- a/assets/index.html +++ b/assets/index.html @@ -1,77 +1,90 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <meta http-equiv="X-UA-Compatible" content="ie=edge"> - <title> - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-

Work.

-
-
- -
-

Blog.

-
-
- -
- - + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+

Work.

+
+
+ +
+

Blog.

+
+
+ +
+ + + + + \ No newline at end of file diff --git a/assets/service-worker.js b/assets/service-worker.js new file mode 100644 index 0000000..bb84cd8 --- /dev/null +++ b/assets/service-worker.js @@ -0,0 +1,42 @@ + importScripts('https://storage.googleapis.com/workbox-cdn/releases/3.6.1/workbox-sw.js'); + + if (workbox) { + workbox.setConfig({ + debug: false + }); + + var defaultStrategy = workbox.strategies.networkFirst({ + cacheName: "fallback", + plugins: [ + new workbox.expiration.Plugin({ + maxEntries: 128, + maxAgeSeconds: 7 * 24 * 60 * 60, // 1 week + purgeOnQuotaError: true, // Opt-in to automatic cleanup + }), + new workbox.cacheableResponse.Plugin({ + statuses: [0, 200] // for opague requests + }), + ], + }); + workbox.routing.setDefaultHandler( + (args) => { + if (args.event.request.method === 'GET') { + return defaultStrategy.handle(args); // use default strategy + } else { + return null + } + } + ); + + workbox.routing.registerRoute( + new RegExp(/.*\.(?:js|css)/g), + workbox.strategies.networkFirst() + ); + + workbox.routing.registerRoute( + new RegExp(/.*\.(?:png|jpg|jpeg|svg|gif|webp)/g), + workbox.strategies.cacheFirst() + ); + } else { + console.log(`No workbox on this browser 😬`); + } \ No newline at end of file diff --git a/build.js b/build.js index fd2d828..2ba483e 100644 --- a/build.js +++ b/build.js @@ -27,6 +27,8 @@ async function populateCSS({ let template = path.resolve(assetDir, 'index.css'); let stylesheet = path.join(outDir, 'index.css'); + let serviceWorker = path.resolve(assetDir, 'service-worker.js'); + try { await fs.accessAsync(outDir, fs.constants.F_OK); } catch (err) { @@ -35,6 +37,9 @@ async function populateCSS({ /* Copy over the template CSS stylesheet */ await fs.copyFileAsync(template, stylesheet); + /* Add Service Worker */ + await fs.copyFileSync(serviceWorker, `${outDir}/service-worker.js`); + /* Get an array of every available theme */ let themes = await fs.readdirAsync(path.join(assetDir, 'themes')); From 8fcee176c4e6659221d51c918d341eca53e6eea3 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Fri, 24 May 2019 12:54:26 +0530 Subject: [PATCH 026/163] fixed #55 --- run.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/run.js b/run.js index 396b7a3..5a049a0 100644 --- a/run.js +++ b/run.js @@ -1,8 +1,9 @@ const express = require('express'); const open = require('open'); const defaultBrowser = require('x-default-browser'); +const outDir = path.resolve('./dist/' || process.env.OUT_DIR); const app = express(); -app.use(express.static(__dirname + '/dist')); +app.use(express.static(`${outDir}/dist`)); function runCommand(){ app.get('/',function(req,res){ From 9c5655eab86083b878e508fe30375c86cd0223d3 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Fri, 24 May 2019 13:01:33 +0530 Subject: [PATCH 027/163] fixed #49 --- index.css | 456 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 456 insertions(+) create mode 100644 index.css diff --git a/index.css b/index.css new file mode 100644 index 0000000..a0b3b29 --- /dev/null +++ b/index.css @@ -0,0 +1,456 @@ +@import url('https://fonts.googleapis.com/css?family=Poppins'); +@import url('https://fonts.googleapis.com/css?family=Questrial'); + +body{ + margin:0%; + padding:0%; + width:100vw; + background:var(--bg-color); + color:var(--text-color); + max-width:100vw; + overflow-x:hidden; + align-items:center; + font-family: 'Poppins', sans-serif; +} + +#loading { + width: 100vw; + height: 100vh; + position: fixed; + background: var(--bg-color); + z-index: 999; + display: flex; + justify-content: center; + flex-direction: column; + align-items: center; + top:0; + bottom:0; + left:0; + right:0; +} + +#spinner { + animation: rotate 0.5s infinite linear; + width:50px; + height:50px; + border:2px solid var(--bg-color); + border-bottom:2px solid var(--text-color); + border-radius:50%; + margin:0; +} + +@keyframes rotate { + 0% {transform: rotate(0deg);} + 100% {transform: rotate(360deg);} +} + +#profile { + width:24vw; + padding:4vh 3vw; + height:92vh; + display:flex; + flex-direction:column; + justify-content:center; + text-align:left; + background:var(--background-image) center center; + background-size: cover !important; + background-repeat:no-repeat; + position:fixed; + color:#fff !important; +} + +#display { + width:64vw; + padding:4vh 3vw; + height:92vh; + display:inline-block; + padding-left:33vw; +} + +#display h1 { + font-size:50px; + color:var(--text-color); + font-weight:bold; + font-family: 'Questrial', sans-serif; +} + +.emoji { + width:18px; + height:18px; +} + +#profile_img_blog { + border-radius:50%; + width:90px; + height:90px; + background-size:cover !important; + background-repeat: no-repeat; +} + +#username_blog { + font-size:18px; + color:var(--text-color); + font-family: 'Poppins', sans-serif; + font-weight:bold; +} + +#username_blog span { + font-size:24px; + font-family: 'Questrial', sans-serif !important; +} + +#username_blog b { + font-size:12px; + font-family:'Poppins', sans-serif; + font-weight:bold; +} + +#blog-display { + width:60vw; + margin:0px 20vw; + text-align:left; + margin-top:3vh; + z-index:1; +} + +#profile_blog { + width:60vw; + margin:0px 20vw; + margin-top:10vh; + text-align:left; + z-index:1; +} + +#background { + width:100vw; + height:55vh; + background:var(--background-background); + background-size:cover !important; + background-repeat:no-repeat; + position: absolute; + z-index:-1; + margin-top:-10vh; +} + +#blog-display h1 { + font-size:50px; + color:var(--text-color); + font-weight:bold; + font-family: 'Questrial', sans-serif; +} + +#blog-display h2 { + color:var(--blog-gray-color); +} + +#blog-display { + padding:1vh 0px; + font-family: 'Questrial', sans-serif; +} + +#blog p { + font-size:17px; + line-height:25px; + word-spacing:1.2px; + margin:5vh 0px; +} + +#blog p span { + padding:2px 4px; + background:var(--text-color); + color:var(--bg-color) !important; +} + +#blog img { + width:100%; + margin:2vh 0px; + border-radius:5px; + border:1px solid rgb(0, 0, 0, 0.08); +} + +#header { + width:63vw; + text-align:right; + padding:3vh 0px; + position:absolute; +} + +#header a { + color:var(--text-color); + text-decoration:none; + margin-left:4vw; + font-weight:bold; +} + +#footer_blog { + width:90vw; + padding:8vh 5vw; + text-align:center; +} + +#footer_blog a { + color:var(--text-color) !important; + text-decoration:none; + font-family: 'Questrial', sans-serif; + font-weight:bold; +} + +#footer { + width:100%; + padding:8vh 0px; + text-align:center; +} + +#footer a { + color:var(--text-color) !important; + text-decoration:none; + font-family: 'Questrial', sans-serif; + font-weight:bold; +} + +#profile_img { + width:180px; + height:180px; + min-width:180px; + min-height:180px; + max-width:180px; + max-height:180px; + border-radius:5px; + background-size:cover !important; + background-repeat:no-repeat !important; +} + +#profile div { + font-weight:bold; + margin:1.5vh 0px; +} + +#username { + font-size:18px; + font-weight:bold; +} + +#username span { + font-size:24px; +} + +#userbio { + font-size:26px; + font-family: 'Questrial', sans-serif; + width:100%; +} + +#about { + font-size:18px; + font-family: 'Questrial', sans-serif; +} + +#about a { + color:#fff !important; + text-decoration:none; + font-weight:bold; +} + +#about a:hover { + text-decoration:underline; +} + +#about span { + margin:1vh 0px; + display:block; +} + +#about span i { + font-size:16px; +} + +#work { + margin:2vh 0px; + padding:4vh 0px !important; +} + +#forks { + margin:2vh 0px; + padding:4vh 0px !important; +} + +.projects { + columns:2; +} + +.projects section { + width:85%; + padding:2.5vh 5%; + display:inline-block; + border-radius:5px; + color:var(--text-color); + border:1px solid rgb(0, 0, 0, 0.08); + box-shadow:0px 0px 0px rgb(0, 0, 0, 0); + transition:0.4s ease-in-out; + margin:2vh 0px; + transform:scale(1); +} + +.projects section:hover { + cursor: pointer; + border:1px solid rgb(0, 0, 0, 0); + box-shadow:0px 15px 35px rgb(0, 0, 0, 0.06); + transform:scale(1.03); +} + +.section_title { + font-size:24px; + font-weight:bold; + margin:1vh 0px; + padding:0px 1px; + word-wrap: break-word; +} + +.about_section { + font-size:18px; + font-family: 'Questrial', sans-serif; + margin:2vh 0px; + font-weight:bold; + word-wrap: break-word; +} + +.bottom_section { + margin:1vh 0px; + font-size:14px; + word-wrap: break-word; +} + +.bottom_section span { + margin-right:20px; + font-weight:bold; +} + +.bottom_section span i { + font-size:15px; +} + +#blog_section { + margin:2vh 0px; + padding:2vh 0px !important; +} + +#blogs { + columns:2; +} + +#blogs section { + width:85%; + display:inline-block; + border-radius:5px; + color:var(--text-color); + border:1px solid rgb(0, 0, 0, 0.04); + box-shadow:0px 0px 0px rgb(0, 0, 0, 0); + transition:0.4s ease-in-out; + transform:scale(1); + padding:0px; + margin:2vh 0px; +} + +#blogs section img { + width:100%; + border-radius:5px 5px 0px 0px; +} + +.blog_container { + padding:2.5vh 5%; +} + +#blogs section:hover { + cursor: pointer; + border:1px solid rgb(0, 0, 0, 0); + box-shadow:0px 15px 35px rgb(0, 0, 0, 0.06); + transform:scale(1.03); +} + +.go_back { + position: absolute; + color:var(--text-color); + font-size:26px; + margin-left:5vw; + margin-top:4vh; +} + +::selection { + color:var(--bg-color); + background:var(--text-color); +} + +@media (max-width: 800px){ + #profile { + width:90vw; + padding:4vh 5vw; + height:60vh; + text-align:center; + position: relative; + } + #display { + width:90vw; + padding:4vh 5vw; + height:auto; + display:inline-block; + padding-left:5vw; + } + #profile_img { + width:120px; + height:120px; + min-width:120px; + min-height:120px; + max-width:120px; + max-height:120px; + margin:0px auto !important; + } + #work { + margin:0px; + } + .projects { + columns:1; + } + .projects section { + width:88%; + } + #blogs { + columns:1; + } + #blogs section { + width:98%; + } + #blog_section { + margin:0px; + } + #blog-display { + width:90vw; + margin:0px 5vw; + text-align:left; + margin-top:0vh; + z-index:1; + } + #profile_blog { + width:90vw; + margin:0px 5vw; + margin-top:10vh; + text-align:left; + z-index:1; + } + .go_back { + position: relative; + color:var(--text-color); + font-size:26px; + margin-left:5vw; + top:5vh; + } + #blog img { + margin:1vh 0px !important; + } + #blog p { + margin:2vh 0px; + } +} + +::-webkit-scrollbar {width:5px;height:5px;} +::-webkit-scrollbar-track {background:var(--bg-color);} +::-webkit-scrollbar-thumb {background:var(--text-color);} From 6a23ee1d805d0845e3b1d1b1b608e74739e680cf Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Fri, 24 May 2019 21:10:18 +0530 Subject: [PATCH 028/163] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9852d8e..5b37104 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Gitfolio [![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) +# Gitfolio [![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![npm](https://img.shields.io/npm/dm/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) ### personal website + blog for every github user From 5848390bdb359e65eacf4fa65ff68a92e3a6f6cf Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Sat, 25 May 2019 22:08:24 +0530 Subject: [PATCH 029/163] Create FUNDING.yml --- .github/FUNDING.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..ea78329 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,7 @@ +# These are supported funding model platforms + +github: imfunniee +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: imfunniee +custom: # Replace with a single custom sponsorship URL From 5e3a931161530a5264f3365af5239767d4c09377 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Sat, 25 May 2019 22:10:02 +0530 Subject: [PATCH 030/163] Update README.md --- README.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/README.md b/README.md index 5b37104..5e7cdc2 100644 --- a/README.md +++ b/README.md @@ -141,11 +141,5 @@ More Arguments for Blog > (use "-" instead of spaces) -## Support - -Loved My Work? Keep me awake at night by buying me a Coffee ☕ - -Buy Me A Coffee - ## License ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) From af801b40f90c100fc1a023ea392a4553c9f10c58 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Sat, 25 May 2019 22:27:45 +0530 Subject: [PATCH 031/163] Update FUNDING.yml --- .github/FUNDING.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index ea78329..a93ef42 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,7 +1,2 @@ -# These are supported funding model platforms - github: imfunniee -patreon: # Replace with a single Patreon username -open_collective: # Replace with a single Open Collective username ko_fi: imfunniee -custom: # Replace with a single custom sponsorship URL From cb5bba6ba0f619f3841e0864764f57e6c1da24f6 Mon Sep 17 00:00:00 2001 From: yrong1997 Date: Sun, 26 May 2019 18:01:16 +0800 Subject: [PATCH 032/163] fail to run bug fix (#62) --- .gitignore | 3 ++- populate.js | 5 +++-- run.js | 9 +++++---- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 306c35b..41b76fd 100644 --- a/.gitignore +++ b/.gitignore @@ -64,4 +64,5 @@ typings/ dist/ # Editor files and folders -.vscode/ \ No newline at end of file +.vscode/ +.idea/ diff --git a/populate.js b/populate.js index a5293fe..6512fa4 100644 --- a/populate.js +++ b/populate.js @@ -10,8 +10,9 @@ const { getConfig, outDir } = require('./utils'); function convertToEmoji(text) { if (text == null) return; text = text.toString(); - if (text.match(/(?<=:\s*).*?(?=\s*:)/gs) != null) { - var str = text.match(/(?<=:\s*).*?(?=\s*:)/gs); + var pattern = /(?<=:\s*).*?(?=\s*:)/gs + if (text.match(pattern) != null) { + var str = text.match(pattern); str = str.filter(function (arr) { return /\S/.test(arr); }); diff --git a/run.js b/run.js index 5a049a0..af194e8 100644 --- a/run.js +++ b/run.js @@ -1,17 +1,18 @@ const express = require('express'); const open = require('open'); const defaultBrowser = require('x-default-browser'); +const path = require('path'); const outDir = path.resolve('./dist/' || process.env.OUT_DIR); const app = express(); -app.use(express.static(`${outDir}/dist`)); +app.use(express.static(`${outDir}`)); function runCommand(){ app.get('/',function(req,res){ res.sendFile('/index.html'); }); - + app.listen(3000); - + defaultBrowser(function (err, res) { if(err) throw err; (async () => { @@ -23,4 +24,4 @@ function runCommand(){ module.exports = { runCommand -}; \ No newline at end of file +}; From de728e75bdb71ecc23aca44a77bd6ea7234d755f Mon Sep 17 00:00:00 2001 From: Benjamin Liden Date: Sun, 26 May 2019 06:01:48 -0400 Subject: [PATCH 033/163] added link to GH profile in username block + styling (#59) --- assets/index.css | 6 ++++-- populate.js | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/assets/index.css b/assets/index.css index e550cb9..de35776 100644 --- a/assets/index.css +++ b/assets/index.css @@ -240,13 +240,15 @@ body{ font-family: 'Questrial', sans-serif; } -#about a { +#about a, +#username a { color:#fff !important; text-decoration:none; font-weight:bold; } -#about a:hover { +#about a:hover, +#username a:hover { text-decoration:underline; } diff --git a/populate.js b/populate.js index 6512fa4..0a2958e 100644 --- a/populate.js +++ b/populate.js @@ -106,7 +106,7 @@ module.exports.updateHTML = (username, sort, order, includeFork) => { icon.setAttribute("type", "image/png"); document.getElementsByTagName("head")[0].appendChild(icon); document.getElementById("profile_img").style.background = `url('${user.avatar_url}') center center` - document.getElementById("username").innerHTML = `${user.name}@${user.login}`; + document.getElementById("username").innerHTML = `${user.name}@${user.login}`; //document.getElementById("github_link").href = `https://github.com/${user.login}`; document.getElementById("userbio").innerHTML = convertToEmoji(user.bio); document.getElementById("userbio").style.display = user.bio == null || !user.bio ? 'none' : 'block'; From 17cd85327b4c6959ffe6eb3bea6a48e900371af0 Mon Sep 17 00:00:00 2001 From: Benjamin Liden Date: Sun, 26 May 2019 06:03:13 -0400 Subject: [PATCH 034/163] bugfixes: added await for fileWrites (was hanging), added path import, url escape issue (#58) * added await for fileWrites (was hanging), added path import * fixed html escaping issue with background image. +consistency * changed default background to smaller params. only 90kb --- assets/themes/dark.css | 6 +++--- assets/themes/light.css | 2 +- build.js | 13 +++---------- populate.js | 4 ++-- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/assets/themes/dark.css b/assets/themes/dark.css index 16c28dc..38ce447 100644 --- a/assets/themes/dark.css +++ b/assets/themes/dark.css @@ -2,9 +2,9 @@ --bg-color: rgb(10, 10, 10); --text-color: #fff; --blog-gray-color: rgb(180, 180, 180); - --background-image: linear-gradient(90deg, rgba(10, 10, 10, 0.6), rgb(10, 10, 10, 1)), url("{{background}}"); + --background-image: linear-gradient(90deg, rgba(10, 10, 10, 0.6), rgb(10, 10, 10, 1)), url("{{{background}}}"); --background-background: linear-gradient(0deg, rgba(10, 10, 10, 1), rgba(10, 10, 10, 0.6)), - url("{{background}}") center center fixed; + url("{{{background}}}") center center fixed; --height: 50vh; } #display h1 { @@ -26,6 +26,6 @@ @media (max-width: 800px) { :root { --background-image: linear-gradient(0deg, rgba(10, 10, 10, 1), rgba(10, 10, 10, 0)), - url("{{background}}") !important; + url("{{{background}}}") !important; } } diff --git a/assets/themes/light.css b/assets/themes/light.css index 330240a..a4b4b58 100644 --- a/assets/themes/light.css +++ b/assets/themes/light.css @@ -2,6 +2,6 @@ --bg-color: #fff; --text-color: rgb(10, 10, 10); --blog-gray-color: rgb(80, 80, 80); - --background-image: linear-gradient(90deg, rgba(10, 10, 10, 0.4), rgb(10, 10, 10, 0.4)), url("{{background}}"); + --background-image: linear-gradient(90deg, rgba(10, 10, 10, 0.4), rgb(10, 10, 10, 0.4)), url("{{{background}}}"); --background-background: #fff; } diff --git a/build.js b/build.js index 2ba483e..86df9ee 100644 --- a/build.js +++ b/build.js @@ -20,7 +20,7 @@ const config = path.join(outDir, 'config.json'); */ async function populateCSS({ theme = 'light', - background = 'https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450', + background = 'https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=500&h=1000&q=80&fit=crop', } = {}) { /* Get the theme the user requests. Defaults to 'light' */ theme = `${theme}.css`; @@ -73,16 +73,9 @@ async function populateConfig(sort, order, includeFork) { async function buildCommand(username, program) { await populateCSS(program); - let sort = program.sort ? program.sort : 'created'; - let order = "asc"; - let includeFork = false; - if(program.order){ - order = ('%s', program.order); - } - if(program.fork){ - includeFork = true; - } + let order = program.order ? program.order : "asc"; + let includeFork = program.fork ? true : false; await populateConfig(sort, order, includeFork); updateHTML(('%s', username), sort, order, includeFork); } diff --git a/populate.js b/populate.js index 0a2958e..b334346 100644 --- a/populate.js +++ b/populate.js @@ -121,11 +121,11 @@ module.exports.updateHTML = (username, sort, order, includeFork) => { data[0].username = user.login; data[0].name = user.name; data[0].userimg = user.avatar_url; - fs.writeFile(`${outDir}/config.json`, JSON.stringify(data, null, ' '), function (err) { + await fs.writeFile(`${outDir}/config.json`, JSON.stringify(data, null, ' '), function (err) { if (err) throw err; console.log("Config file updated."); }); - fs.writeFile(`${outDir}/index.html`, '' + window.document.documentElement.outerHTML, function (error) { + await fs.writeFile(`${outDir}/index.html`, '' + window.document.documentElement.outerHTML, function (error) { if (error) throw error; console.log(`Build Complete, Files can be Found @ ${outDir}`); }); From 4e7446c52a317ef1b61dfa9fe6cbfe7bdcf47eff Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Sun, 26 May 2019 18:43:15 +0530 Subject: [PATCH 035/163] v.0.1.4 --- README.md | 2 +- package-lock.json | 2 +- package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5e7cdc2..e39b415 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ gitfolio build ``` `` is your username on github. This will build your website using your GitHub username and put it in the `/dist` folder. -To run your website use `run` command (please refrain from using this for now) +To run your website use `run` command ```sh gitfolio run diff --git a/package-lock.json b/package-lock.json index ba67f01..d9c0de1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "gitfolio", - "version": "0.1.3", + "version": "0.1.4", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index e56f418..238b7c6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gitfolio", - "version": "0.1.3", + "version": "0.1.4", "description": "a portfolio website for everyone to showcase your work", "main": "build.js", "bin": "bin/gitfolio.js", From e48e55e59390b19af7face9d3049398d2677d343 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Tue, 28 May 2019 21:53:03 +0530 Subject: [PATCH 036/163] Delete FUNDING.yml --- .github/FUNDING.yml | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index a93ef42..0000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1,2 +0,0 @@ -github: imfunniee -ko_fi: imfunniee From 396817fad41745c248f2c1655f450d6ca748a971 Mon Sep 17 00:00:00 2001 From: Benjamin Liden Date: Wed, 29 May 2019 23:31:18 -0400 Subject: [PATCH 037/163] Horizontal ordering of Repos + Forks (#66) * decent grid layout. some weird gutter issue tho * added neg margin to align with headings. fix a elem width. * quick fix for single-column error when screen is very wide --- assets/index.css | 19 +++++++++++++------ assets/index.html | 28 ++++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/assets/index.css b/assets/index.css index de35776..0187867 100644 --- a/assets/index.css +++ b/assets/index.css @@ -272,11 +272,18 @@ body{ } .projects { - columns:2; + margin-left: -15px; /* align section w/ heading above */ +} + +.projects a { + /* 30px is the gutter size in magic grid */ + width: calc(49% - 30px); /* 49% avoids a weird single column on some wide screens */ + display: flex; + text-decoration: none; } .projects section { - width:85%; + width: 100%; padding:2.5vh 5%; display:inline-block; border-radius:5px; @@ -284,7 +291,6 @@ body{ border:1px solid rgb(0, 0, 0, 0.08); box-shadow:0px 0px 0px rgb(0, 0, 0, 0); transition:0.4s ease-in-out; - margin:2vh 0px; transform:scale(1); } @@ -332,7 +338,6 @@ body{ } #blogs { - columns:2; } #blogs section { @@ -401,13 +406,15 @@ body{ margin:0px; } .projects { - columns:1; + margin-left: 0; /* remove neg margin to align w/ header */ + } + .projects a { + width: 100%; } .projects section { width:88%; } #blogs { - columns:1; } #blogs section { width:98%; diff --git a/assets/index.html b/assets/index.html index aca9730..87e95d0 100644 --- a/assets/index.html +++ b/assets/index.html @@ -11,6 +11,7 @@ integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous"> + @@ -85,6 +86,33 @@ }); } + + \ No newline at end of file From 2cc403b95c1769b8d6378bf9cff2ceb52bc0bdab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gianfranc=C3=B8=20Palumbo?= Date: Mon, 3 Jun 2019 08:03:40 +0300 Subject: [PATCH 038/163] docs: add URL with port number to preview the website (#69) --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e39b415..3ba87db 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ To run your website use `run` command gitfolio run ``` +Open your browser at http://localhost:3000 + 🎉 Congrats, you just made yourself a personal website! From 6c0d2b1db659ffeb9a620d060999ac08f6998877 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 3 Jun 2019 17:59:29 +0530 Subject: [PATCH 039/163] Delete index.css --- index.css | 456 ------------------------------------------------------ 1 file changed, 456 deletions(-) delete mode 100644 index.css diff --git a/index.css b/index.css deleted file mode 100644 index a0b3b29..0000000 --- a/index.css +++ /dev/null @@ -1,456 +0,0 @@ -@import url('https://fonts.googleapis.com/css?family=Poppins'); -@import url('https://fonts.googleapis.com/css?family=Questrial'); - -body{ - margin:0%; - padding:0%; - width:100vw; - background:var(--bg-color); - color:var(--text-color); - max-width:100vw; - overflow-x:hidden; - align-items:center; - font-family: 'Poppins', sans-serif; -} - -#loading { - width: 100vw; - height: 100vh; - position: fixed; - background: var(--bg-color); - z-index: 999; - display: flex; - justify-content: center; - flex-direction: column; - align-items: center; - top:0; - bottom:0; - left:0; - right:0; -} - -#spinner { - animation: rotate 0.5s infinite linear; - width:50px; - height:50px; - border:2px solid var(--bg-color); - border-bottom:2px solid var(--text-color); - border-radius:50%; - margin:0; -} - -@keyframes rotate { - 0% {transform: rotate(0deg);} - 100% {transform: rotate(360deg);} -} - -#profile { - width:24vw; - padding:4vh 3vw; - height:92vh; - display:flex; - flex-direction:column; - justify-content:center; - text-align:left; - background:var(--background-image) center center; - background-size: cover !important; - background-repeat:no-repeat; - position:fixed; - color:#fff !important; -} - -#display { - width:64vw; - padding:4vh 3vw; - height:92vh; - display:inline-block; - padding-left:33vw; -} - -#display h1 { - font-size:50px; - color:var(--text-color); - font-weight:bold; - font-family: 'Questrial', sans-serif; -} - -.emoji { - width:18px; - height:18px; -} - -#profile_img_blog { - border-radius:50%; - width:90px; - height:90px; - background-size:cover !important; - background-repeat: no-repeat; -} - -#username_blog { - font-size:18px; - color:var(--text-color); - font-family: 'Poppins', sans-serif; - font-weight:bold; -} - -#username_blog span { - font-size:24px; - font-family: 'Questrial', sans-serif !important; -} - -#username_blog b { - font-size:12px; - font-family:'Poppins', sans-serif; - font-weight:bold; -} - -#blog-display { - width:60vw; - margin:0px 20vw; - text-align:left; - margin-top:3vh; - z-index:1; -} - -#profile_blog { - width:60vw; - margin:0px 20vw; - margin-top:10vh; - text-align:left; - z-index:1; -} - -#background { - width:100vw; - height:55vh; - background:var(--background-background); - background-size:cover !important; - background-repeat:no-repeat; - position: absolute; - z-index:-1; - margin-top:-10vh; -} - -#blog-display h1 { - font-size:50px; - color:var(--text-color); - font-weight:bold; - font-family: 'Questrial', sans-serif; -} - -#blog-display h2 { - color:var(--blog-gray-color); -} - -#blog-display { - padding:1vh 0px; - font-family: 'Questrial', sans-serif; -} - -#blog p { - font-size:17px; - line-height:25px; - word-spacing:1.2px; - margin:5vh 0px; -} - -#blog p span { - padding:2px 4px; - background:var(--text-color); - color:var(--bg-color) !important; -} - -#blog img { - width:100%; - margin:2vh 0px; - border-radius:5px; - border:1px solid rgb(0, 0, 0, 0.08); -} - -#header { - width:63vw; - text-align:right; - padding:3vh 0px; - position:absolute; -} - -#header a { - color:var(--text-color); - text-decoration:none; - margin-left:4vw; - font-weight:bold; -} - -#footer_blog { - width:90vw; - padding:8vh 5vw; - text-align:center; -} - -#footer_blog a { - color:var(--text-color) !important; - text-decoration:none; - font-family: 'Questrial', sans-serif; - font-weight:bold; -} - -#footer { - width:100%; - padding:8vh 0px; - text-align:center; -} - -#footer a { - color:var(--text-color) !important; - text-decoration:none; - font-family: 'Questrial', sans-serif; - font-weight:bold; -} - -#profile_img { - width:180px; - height:180px; - min-width:180px; - min-height:180px; - max-width:180px; - max-height:180px; - border-radius:5px; - background-size:cover !important; - background-repeat:no-repeat !important; -} - -#profile div { - font-weight:bold; - margin:1.5vh 0px; -} - -#username { - font-size:18px; - font-weight:bold; -} - -#username span { - font-size:24px; -} - -#userbio { - font-size:26px; - font-family: 'Questrial', sans-serif; - width:100%; -} - -#about { - font-size:18px; - font-family: 'Questrial', sans-serif; -} - -#about a { - color:#fff !important; - text-decoration:none; - font-weight:bold; -} - -#about a:hover { - text-decoration:underline; -} - -#about span { - margin:1vh 0px; - display:block; -} - -#about span i { - font-size:16px; -} - -#work { - margin:2vh 0px; - padding:4vh 0px !important; -} - -#forks { - margin:2vh 0px; - padding:4vh 0px !important; -} - -.projects { - columns:2; -} - -.projects section { - width:85%; - padding:2.5vh 5%; - display:inline-block; - border-radius:5px; - color:var(--text-color); - border:1px solid rgb(0, 0, 0, 0.08); - box-shadow:0px 0px 0px rgb(0, 0, 0, 0); - transition:0.4s ease-in-out; - margin:2vh 0px; - transform:scale(1); -} - -.projects section:hover { - cursor: pointer; - border:1px solid rgb(0, 0, 0, 0); - box-shadow:0px 15px 35px rgb(0, 0, 0, 0.06); - transform:scale(1.03); -} - -.section_title { - font-size:24px; - font-weight:bold; - margin:1vh 0px; - padding:0px 1px; - word-wrap: break-word; -} - -.about_section { - font-size:18px; - font-family: 'Questrial', sans-serif; - margin:2vh 0px; - font-weight:bold; - word-wrap: break-word; -} - -.bottom_section { - margin:1vh 0px; - font-size:14px; - word-wrap: break-word; -} - -.bottom_section span { - margin-right:20px; - font-weight:bold; -} - -.bottom_section span i { - font-size:15px; -} - -#blog_section { - margin:2vh 0px; - padding:2vh 0px !important; -} - -#blogs { - columns:2; -} - -#blogs section { - width:85%; - display:inline-block; - border-radius:5px; - color:var(--text-color); - border:1px solid rgb(0, 0, 0, 0.04); - box-shadow:0px 0px 0px rgb(0, 0, 0, 0); - transition:0.4s ease-in-out; - transform:scale(1); - padding:0px; - margin:2vh 0px; -} - -#blogs section img { - width:100%; - border-radius:5px 5px 0px 0px; -} - -.blog_container { - padding:2.5vh 5%; -} - -#blogs section:hover { - cursor: pointer; - border:1px solid rgb(0, 0, 0, 0); - box-shadow:0px 15px 35px rgb(0, 0, 0, 0.06); - transform:scale(1.03); -} - -.go_back { - position: absolute; - color:var(--text-color); - font-size:26px; - margin-left:5vw; - margin-top:4vh; -} - -::selection { - color:var(--bg-color); - background:var(--text-color); -} - -@media (max-width: 800px){ - #profile { - width:90vw; - padding:4vh 5vw; - height:60vh; - text-align:center; - position: relative; - } - #display { - width:90vw; - padding:4vh 5vw; - height:auto; - display:inline-block; - padding-left:5vw; - } - #profile_img { - width:120px; - height:120px; - min-width:120px; - min-height:120px; - max-width:120px; - max-height:120px; - margin:0px auto !important; - } - #work { - margin:0px; - } - .projects { - columns:1; - } - .projects section { - width:88%; - } - #blogs { - columns:1; - } - #blogs section { - width:98%; - } - #blog_section { - margin:0px; - } - #blog-display { - width:90vw; - margin:0px 5vw; - text-align:left; - margin-top:0vh; - z-index:1; - } - #profile_blog { - width:90vw; - margin:0px 5vw; - margin-top:10vh; - text-align:left; - z-index:1; - } - .go_back { - position: relative; - color:var(--text-color); - font-size:26px; - margin-left:5vw; - top:5vh; - } - #blog img { - margin:1vh 0px !important; - } - #blog p { - margin:2vh 0px; - } -} - -::-webkit-scrollbar {width:5px;height:5px;} -::-webkit-scrollbar-track {background:var(--bg-color);} -::-webkit-scrollbar-thumb {background:var(--text-color);} From c772b6b47ce6038a1f01ac0f4ae8b2670ad5a345 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 3 Jun 2019 17:59:46 +0530 Subject: [PATCH 040/163] Add files via upload --- assets/index.css | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/assets/index.css b/assets/index.css index 0187867..a0b3b29 100644 --- a/assets/index.css +++ b/assets/index.css @@ -211,8 +211,13 @@ body{ #profile_img { width:180px; height:180px; + min-width:180px; + min-height:180px; + max-width:180px; + max-height:180px; border-radius:5px; background-size:cover !important; + background-repeat:no-repeat !important; } #profile div { @@ -240,15 +245,13 @@ body{ font-family: 'Questrial', sans-serif; } -#about a, -#username a { +#about a { color:#fff !important; text-decoration:none; font-weight:bold; } -#about a:hover, -#username a:hover { +#about a:hover { text-decoration:underline; } @@ -272,18 +275,11 @@ body{ } .projects { - margin-left: -15px; /* align section w/ heading above */ -} - -.projects a { - /* 30px is the gutter size in magic grid */ - width: calc(49% - 30px); /* 49% avoids a weird single column on some wide screens */ - display: flex; - text-decoration: none; + columns:2; } .projects section { - width: 100%; + width:85%; padding:2.5vh 5%; display:inline-block; border-radius:5px; @@ -291,6 +287,7 @@ body{ border:1px solid rgb(0, 0, 0, 0.08); box-shadow:0px 0px 0px rgb(0, 0, 0, 0); transition:0.4s ease-in-out; + margin:2vh 0px; transform:scale(1); } @@ -338,6 +335,7 @@ body{ } #blogs { + columns:2; } #blogs section { @@ -400,21 +398,23 @@ body{ #profile_img { width:120px; height:120px; + min-width:120px; + min-height:120px; + max-width:120px; + max-height:120px; margin:0px auto !important; } #work { margin:0px; } .projects { - margin-left: 0; /* remove neg margin to align w/ header */ - } - .projects a { - width: 100%; + columns:1; } .projects section { width:88%; } #blogs { + columns:1; } #blogs section { width:98%; From aac45926737f5202b8c016f28b3de2e3e7e3aadd Mon Sep 17 00:00:00 2001 From: Benjamin Liden Date: Tue, 4 Jun 2019 00:54:01 -0400 Subject: [PATCH 041/163] fixed css for project + fork rows and some other (#71) --- assets/index.css | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/assets/index.css b/assets/index.css index a0b3b29..8f0c1eb 100644 --- a/assets/index.css +++ b/assets/index.css @@ -245,13 +245,15 @@ body{ font-family: 'Questrial', sans-serif; } -#about a { +#about a, +#username a { color:#fff !important; text-decoration:none; font-weight:bold; } -#about a:hover { +#about a:hover, +#username a:hover { text-decoration:underline; } @@ -275,11 +277,18 @@ body{ } .projects { - columns:2; + margin-left: -15px; /* align section w/ heading above */ +} + +.projects a { + /* 30px is the gutter size in magic grid */ + width: calc(49% - 30px); /* 49% avoids a weird single column on some wide screens */ + display: flex; + text-decoration: none; } .projects section { - width:85%; + width: 100%; padding:2.5vh 5%; display:inline-block; border-radius:5px; @@ -287,7 +296,6 @@ body{ border:1px solid rgb(0, 0, 0, 0.08); box-shadow:0px 0px 0px rgb(0, 0, 0, 0); transition:0.4s ease-in-out; - margin:2vh 0px; transform:scale(1); } @@ -335,7 +343,6 @@ body{ } #blogs { - columns:2; } #blogs section { @@ -408,13 +415,15 @@ body{ margin:0px; } .projects { - columns:1; + margin-left: 0; /* remove neg margin to align w/ header */ + } + .projects a { + width: 100%; } .projects section { width:88%; } #blogs { - columns:1; } #blogs section { width:98%; From d47fc6c26988bc8a10a9e3fcea20d1698ca3f199 Mon Sep 17 00:00:00 2001 From: traxam Date: Sun, 9 Jun 2019 11:48:27 +0200 Subject: [PATCH 042/163] Fixes #73 (#74) Fixes blog entry URLs with custom folder names. --- blog.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog.js b/blog.js index 70ce0fc..6b02e0d 100644 --- a/blog.js +++ b/blog.js @@ -31,7 +31,7 @@ function createBlog(title, subtitle, pagetitle, folder) { fs.writeFile(`${outDir}/blog/${folder}/index.html`, ''+window.document.documentElement.outerHTML, async function (error){ if (error) throw error; var blog_data = { - "url_title": pagetitle, + "url_title": folder, "title": title, "sub_title": subtitle, "top_image": "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450", From d3136fb829b46e8242e188a84d17a3a561e74d03 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 14 Jul 2019 11:58:45 +0530 Subject: [PATCH 043/163] Bump lodash from 4.17.11 to 4.17.14 (#83) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.11 to 4.17.14. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.11...4.17.14) Signed-off-by: dependabot[bot] --- package-lock.json | 3387 +++++++++++++++++++++++---------------------- 1 file changed, 1701 insertions(+), 1686 deletions(-) diff --git a/package-lock.json b/package-lock.json index d9c0de1..d48c1af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1686 +1,1701 @@ -{ - "name": "gitfolio", - "version": "0.1.4", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" - }, - "acorn-globals": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", - "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" - }, - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "optional": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big-integer": { - "version": "1.6.43", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.43.tgz", - "integrity": "sha512-9dULc9jsKmXl0Aeunug8wbF+58n+hQoFjqClN7WeZwGLh0XJUWyJJ9Ee+Ep+Ql/J9fRsTVaeThp8MhiCCrY0Jg==", - "optional": true - }, - "bluebird": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", - "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "bplist-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", - "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", - "optional": true, - "requires": { - "big-integer": "^1.6.7" - } - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cacheable-request": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.0.0.tgz", - "integrity": "sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^4.0.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^1.0.1", - "normalize-url": "^3.1.0", - "responselike": "^1.0.2" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "optional": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "optional": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cssom": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", - "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==" - }, - "cssstyle": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", - "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", - "requires": { - "cssom": "0.3.x" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "optional": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "optional": true - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "default-browser-id": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-1.0.4.tgz", - "integrity": "sha1-5Z0JpdFXuCi4dsJoFuYcPSosIDo=", - "optional": true, - "requires": { - "bplist-parser": "^0.1.0", - "meow": "^3.1.0", - "untildify": "^2.0.0" - } - }, - "defer-to-connect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", - "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "optional": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "express": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.0.tgz", - "integrity": "sha512-1Z7/t3Z5ZnBG252gKUPyItc4xdeaA0X934ca2ewckAsVsw9EG71i++ZHZPYnus8g/s5Bty8IMpSVEuRkmwwPRQ==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "optional": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "optional": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "github-emoji": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.0.tgz", - "integrity": "sha512-FCs0tDDtX/pwkXN6sQE5lUC6B4PIIFC+rv7IZAw8956Mtvo5NQSWHEBJvExl+B8+ahqNVU0W33hMrXSIEFSUvA==" - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==" - }, - "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "http-cache-semantics": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", - "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "optional": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "optional": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "optional": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.0.tgz", - "integrity": "sha512-QEmc2XIkNfCK3KRfa9ljMJjC4kAGdVgRrs/pCBsQG/QoKz0B42+C58f6TdAmhq/rw494eFCoLHxX6+hWuxb96Q==", - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "optional": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "optional": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "optional": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "optional": true - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - }, - "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=", - "optional": true - }, - "nwsapi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", - "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "optional": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "open": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.3.0.tgz", - "integrity": "sha512-6AHdrJxPvAXIowO/aIaeHZ8CeMdDf7qCyRNq8NwJpinmCdXhz+NZR7ie1Too94lpciCDsG+qHGO9Mt0svA4OqA==", - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "optional": true - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "optional": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "optional": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "optional": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "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=", - "requires": { - "pinkie": "^2.0.0" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" - } - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "optional": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "optional": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "optional": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "optional": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } - } - }, - "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", - "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "resolve": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", - "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saxes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", - "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", - "requires": { - "xmlchars": "^1.3.1" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "optional": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "optional": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "requires": { - "punycode": "^2.1.0" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "optional": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "uglify-js": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.13.tgz", - "integrity": "sha512-Lho+IJlquX6sdJgyKSJx/M9y4XbDd3ekPjD8S6HYmT5yVSwDtlSuca2w5hV4g2dIsp0Y/4orbfWxKexodmFv7w==", - "optional": true, - "requires": { - "commander": "~2.20.0", - "source-map": "~0.6.1" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "untildify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", - "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=", - "optional": true, - "requires": { - "os-homedir": "^1.0.0" - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - }, - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "x-default-browser": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/x-default-browser/-/x-default-browser-0.4.0.tgz", - "integrity": "sha1-cM8NqF2nwKtcsPFaiX8jIqa91IE=", - "requires": { - "default-browser-id": "^1.0.4" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, - "xmlchars": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", - "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" - } - } -} +{ + "name": "gitfolio", + "version": "0.1.4", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" + }, + "acorn-globals": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", + "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" + }, + "ajv": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", + "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "optional": true + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big-integer": { + "version": "1.6.43", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.43.tgz", + "integrity": "sha512-9dULc9jsKmXl0Aeunug8wbF+58n+hQoFjqClN7WeZwGLh0XJUWyJJ9Ee+Ep+Ql/J9fRsTVaeThp8MhiCCrY0Jg==", + "optional": true + }, + "bluebird": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", + "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "bplist-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", + "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", + "optional": true, + "requires": { + "big-integer": "^1.6.7" + } + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacheable-request": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.0.0.tgz", + "integrity": "sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^4.0.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^1.0.1", + "normalize-url": "^3.1.0", + "responselike": "^1.0.2" + } + }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "optional": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "optional": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cssom": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", + "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==" + }, + "cssstyle": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", + "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", + "requires": { + "cssom": "0.3.x" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "optional": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "optional": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "default-browser-id": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-1.0.4.tgz", + "integrity": "sha1-5Z0JpdFXuCi4dsJoFuYcPSosIDo=", + "optional": true, + "requires": { + "bplist-parser": "^0.1.0", + "meow": "^3.1.0", + "untildify": "^2.0.0" + } + }, + "defer-to-connect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", + "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "optional": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.0.tgz", + "integrity": "sha512-1Z7/t3Z5ZnBG252gKUPyItc4xdeaA0X934ca2ewckAsVsw9EG71i++ZHZPYnus8g/s5Bty8IMpSVEuRkmwwPRQ==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "optional": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "optional": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "github-emoji": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.0.tgz", + "integrity": "sha512-FCs0tDDtX/pwkXN6sQE5lUC6B4PIIFC+rv7IZAw8956Mtvo5NQSWHEBJvExl+B8+ahqNVU0W33hMrXSIEFSUvA==" + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", + "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", + "optional": true + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", + "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", + "optional": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "http-cache-semantics": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "optional": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "optional": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "optional": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.0.tgz", + "integrity": "sha512-QEmc2XIkNfCK3KRfa9ljMJjC4kAGdVgRrs/pCBsQG/QoKz0B42+C58f6TdAmhq/rw494eFCoLHxX6+hWuxb96Q==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "optional": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "optional": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "optional": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "optional": true + } + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "optional": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + }, + "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=", + "optional": true + }, + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "optional": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "open": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.3.0.tgz", + "integrity": "sha512-6AHdrJxPvAXIowO/aIaeHZ8CeMdDf7qCyRNq8NwJpinmCdXhz+NZR7ie1Too94lpciCDsG+qHGO9Mt0svA4OqA==", + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "optional": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "optional": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "optional": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "optional": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "optional": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "optional": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "optional": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "optional": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "optional": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "optional": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "optional": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "resolve": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", + "optional": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saxes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", + "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", + "requires": { + "xmlchars": "^1.3.1" + } + }, + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "optional": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "optional": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "optional": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "optional": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", + "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", + "optional": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "optional": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "optional": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "optional": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "uglify-js": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.13.tgz", + "integrity": "sha512-Lho+IJlquX6sdJgyKSJx/M9y4XbDd3ekPjD8S6HYmT5yVSwDtlSuca2w5hV4g2dIsp0Y/4orbfWxKexodmFv7w==", + "optional": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "untildify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", + "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=", + "optional": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "optional": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "x-default-browser": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/x-default-browser/-/x-default-browser-0.4.0.tgz", + "integrity": "sha1-cM8NqF2nwKtcsPFaiX8jIqa91IE=", + "requires": { + "default-browser-id": "^1.0.4" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", + "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" + } + } +} From 4a2872171d2a515b98f68913473ceb075e4c66a4 Mon Sep 17 00:00:00 2001 From: Rohan Mohapatra <31756343+rohanmohapatra@users.noreply.github.com> Date: Thu, 18 Jul 2019 19:13:21 +0530 Subject: [PATCH 044/163] Added Handles for Twitter, Linkedin and Medium to GitFolio (#84) * Added Handles for Twitter, Linkedin and Medium to GitFolio * Updates README * Updates README --- .github/ISSUE_TEMPLATE/feature-request.md | 4 ++-- README.md | 5 +++++ assets/index.css | 5 +++++ bin/gitfolio.js | 3 +++ build.js | 12 +++++++++--- populate.js | 5 ++++- update.js | 5 ++++- 7 files changed, 32 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md index a70bf00..fc84cd6 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -5,8 +5,8 @@ about: Request a new feature. # What feature should be added? - +This feature adds Twitter, Linkedin and Medium links to your profile. # Why should this feature be added? - +Since a portfolio is being made, adding these links help improve the profile better. diff --git a/README.md b/README.md index 3ba87db..036ed52 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,12 @@ $ gitfolio build --background https://images.unsplash.com/photo-15572 You could also add in your custom CSS inside `index.css` to give it a more personal feel. +### Add Twitter, LinkedIn and Medium Links on your profile +Twitter, LinkedIn and Medium Links to your profile while building +```sh +gitfolio build --twitter --linkedin --medium +``` ### Let's Publish Head over to GitHub and create a new repository named `username.github.io`, where username is your username. Push the files inside`/dist` folder to repo you just created. diff --git a/assets/index.css b/assets/index.css index 8f0c1eb..522cfce 100644 --- a/assets/index.css +++ b/assets/index.css @@ -337,6 +337,11 @@ body{ font-size:15px; } +.socials { + color: #fff; + text-decoration: none; +} + #blog_section { margin:2vh 0px; padding:2vh 0px !important; diff --git a/bin/gitfolio.js b/bin/gitfolio.js index 35360ed..66be111 100644 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -18,6 +18,9 @@ program .option('-f, --fork', 'includes forks with repos') .option('-s, --sort [sort]', 'set default sort for repository', 'created') .option('-o, --order [order]', 'set default order on sort', 'asc') + .option('-w, --twitter [handle]', 'set Twitter handle') + .option('-l, --linkedin [username]', 'specify LinkedIn username') + .option('-m, --medium [username]', 'specify Medium username') .action(buildCommand) program diff --git a/build.js b/build.js index 86df9ee..8f45ca9 100644 --- a/build.js +++ b/build.js @@ -63,11 +63,14 @@ async function populateCSS({ await fs.writeFileAsync(config, JSON.stringify(data, null, ' ')); } -async function populateConfig(sort, order, includeFork) { +async function populateConfig(sort, order, includeFork, twitter, linkedin, medium) { const data = await getConfig(); data[0].sort = sort; data[0].order = order; data[0].includeFork = includeFork; + data[0].twitter = twitter; // added twitter + data[0].linkedin = linkedin; // added linkedin + data[0].medium = medium; // added medium await fs.writeFileAsync(config, JSON.stringify(data, null, ' ')); } @@ -76,8 +79,11 @@ async function buildCommand(username, program) { let sort = program.sort ? program.sort : 'created'; let order = program.order ? program.order : "asc"; let includeFork = program.fork ? true : false; - await populateConfig(sort, order, includeFork); - updateHTML(('%s', username), sort, order, includeFork); + let twitter = program.twitter ? program.twitter : null; + let linkedin = program.linkedin ? program.linkedin : null; + let medium = program.medium ? program.medium : null; + await populateConfig(sort, order, includeFork, twitter, linkedin, medium); + updateHTML(('%s', username), sort, order, includeFork, twitter, linkedin, medium); } module.exports = { diff --git a/populate.js b/populate.js index b334346..3dcccad 100644 --- a/populate.js +++ b/populate.js @@ -29,7 +29,7 @@ function convertToEmoji(text) { } } -module.exports.updateHTML = (username, sort, order, includeFork) => { +module.exports.updateHTML = (username, sort, order, includeFork, twitter, linkedin, medium) => { //add data to assets/index.html jsdom.fromFile(`${__dirname}/assets/index.html`, options).then(function (dom) { let window = dom.window, document = window.document; @@ -114,6 +114,9 @@ module.exports.updateHTML = (username, sort, order, includeFork) => {   ${user.company}   ${user.email}   ${user.blog} +    Twitter +    LinkedIn +    Medium    ${user.location}    Available for hire`; //add data to config.json diff --git a/update.js b/update.js index cf58da3..895fcd9 100644 --- a/update.js +++ b/update.js @@ -7,11 +7,14 @@ async function updateCommand() { var sort = data[0].sort; var order = data[0].order; var includeFork = data[0].includeFork; + var twitter = data[0].twitter; + var linkedin = data[0].linkedin; + var medium = data[0].medium; if(username == null || sort == null || order == null || includeFork == null){ console.log("username not found in config.json, please run build command before using update"); return; } - updateHTML(username, sort, order, includeFork); + updateHTML(username, sort, order, includeFork, twitter, linkedin, medium); } module.exports = { From ee354ae8525d017a18b5e8c11c82a22dda00aab3 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 12 Aug 2019 09:40:00 +0530 Subject: [PATCH 045/163] Add files via upload --- README.md | 67 +- assets/blog/blog.json | 10 +- assets/blog/blogTemplate.html | 149 +- assets/index.css | 533 +++--- assets/index.html | 239 +-- assets/themes/dark.css | 12 +- bin/gitfolio.js | 73 +- build.js | 154 +- package-lock.json | 2979 ++++++++++++++------------------- package.json | 6 +- populate.js | 334 ++-- run.js | 29 +- ui.js | 222 +++ update.js | 49 +- views/blog.ejs | 260 +++ views/font/Circular.otf | Bin 0 -> 74500 bytes views/index.css | 299 ++++ views/index.ejs | 145 ++ views/index.js | 7 + 19 files changed, 3180 insertions(+), 2387 deletions(-) create mode 100644 ui.js create mode 100644 views/blog.ejs create mode 100644 views/font/Circular.otf create mode 100644 views/index.css create mode 100644 views/index.ejs create mode 100644 views/index.js diff --git a/README.md b/README.md index 036ed52..436fbb5 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,13 @@ -# Gitfolio [![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![npm](https://img.shields.io/npm/dm/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) - -### personal website + blog for every github user +# Gitfolio [![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20@imfunnieee%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![npm](https://img.shields.io/npm/dm/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) + +### personal website + blog for every github user Gitfolio will help you get started with a portfolio website where you could showcase your work + a blog that will help you spread your ideas into real world. Check out this [live demo](https://imfunniee.github.io/gitfolio/) to see gitfolio in action. - # Getting Started ### Let's Install @@ -21,22 +20,30 @@ npm i gitfolio -g ### Let's Build +Using the UI + +```sh +$ gitfolio ui +``` + +> Tip: You can use ui to create new blogs and for updating your folio too. + +or + ```sh gitfolio build ``` + `` is your username on github. This will build your website using your GitHub username and put it in the `/dist` folder. -To run your website use `run` command +To run your website use `run` command, Default port is 3000 ```sh -gitfolio run +gitfolio run -p [port] ``` -Open your browser at http://localhost:3000 - 🎉 Congrats, you just made yourself a personal website! - ### Let's Customize #### Forks @@ -67,11 +74,12 @@ $ gitfolio build --sort star --order desc Themes are specified using the `--theme [theme-name]` flag when running the `build` command. The available themes are -* `light` -* `dark` -> TODO: Add more themes +- `light` +- `dark` + > TODO: Add more themes For example, the following command will build the website with the dark theme + ```sh $ gitfolio build --theme dark ``` @@ -86,19 +94,20 @@ $ gitfolio build --background https://images.unsplash.com/photo-15572 You could also add in your custom CSS inside `index.css` to give it a more personal feel. -### Add Twitter, LinkedIn and Medium Links on your profile +### Add Twitter, LinkedIn and Medium links on your profile Twitter, LinkedIn and Medium Links to your profile while building + ```sh gitfolio build --twitter --linkedin --medium ``` + ### Let's Publish Head over to GitHub and create a new repository named `username.github.io`, where username is your username. Push the files inside`/dist` folder to repo you just created. Go To `username.github.io` your site should be up!! - ### Updating To update your info, simply run @@ -106,27 +115,33 @@ To update your info, simply run ```sh $ gitfolio update ``` + +or use the `Update` options in gitfolio's UI + This will update your info and your repository info. To Update background or theme you need to run `build` command again. - ### Add a Blog -To add your first blog run this command. +To add your first blog use the UI. ```sh -$ gitfolio blog my-first-blog +$ gitfolio ui ``` -> (use "-" instead of spaces) -This will create a `my-first-blog` folder inside `blog`. Inside `my-first-blog` you will find an `index.html` file which contains all the necessary elements for writing a blog. Customize the content of the file to write your first blog. +This will open up a UI page and you can click on `New Blog` to create a new blog. Once you are done writing your blog you can hit the `Create Blog`. + +This will create a blog inside `./dist/blog` folder. + +Look for success or error in your terminal. This also adds content to `blog.json` file. This file helps in showcasing your blogs on your personal website as [cards](https://imfunniee.github.io/gitfolio/#blog_section). You could customize the JSON object that corresponds your current blog. Blog Demo? [here](https://imfunniee.github.io/gitfolio/blog/my-first-post/) -Default JSON Format +Blog's default JSON Format + ``` { "url_title": "my-first-blog", // the title you provide while creating a new blog, this appears in url @@ -137,16 +152,10 @@ Default JSON Format } ``` -More Arguments for Blog - -``` ---subtitle [subtitle] : gives blog a subtitle (Default : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.') ---pagetitle [pagetitle] : gives blog page a title ---folder [folder] : give folder a title -``` - -> (use "-" instead of spaces) +### Follow me on twitter for more updates +🙌 [@imfunnieee](https://twitter.com/imfunnieee) ## License + ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) diff --git a/assets/blog/blog.json b/assets/blog/blog.json index e6ddf7c..0637a08 100644 --- a/assets/blog/blog.json +++ b/assets/blog/blog.json @@ -1,9 +1 @@ -[ - { - "url_title": "FooBar", - "title": "FooBar", - "sub_title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", - "top_image": "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450", - "visible": true - } -] \ No newline at end of file +[] \ No newline at end of file diff --git a/assets/blog/blogTemplate.html b/assets/blog/blogTemplate.html index 3ce75bb..2dffe48 100644 --- a/assets/blog/blogTemplate.html +++ b/assets/blog/blogTemplate.html @@ -1,64 +1,125 @@ - - - - + + + + + + Lorem ipsum dolor - - - - - + + + + +
-
+
+
- - - + + + + -
-
-
+
+
+ +
-

Lorem ipsum dolor

-

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

-
- -

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut placerat pretium sem, ac maximus dui sodales a. Nunc aliquet hendrerit turpis ac egestas. Phasellus volutpat tristique maximus. Pellentesque feugiat eget nisi et dignissim. Nam nibh erat, sollicitudin non facilisis nec, scelerisque nec ipsum. Sed accumsan velit condimentum, pharetra felis vitae, commodo tellus. Mauris consequat luctus orci.

-

- Vivamus pharetra lobortis dui non tincidunt. Mauris vitae nisi vestibulum, mollis magna a, maximus mi. Suspendisse dictum eget augue quis sodales. Quisque rutrum ligula nec dapibus tincidunt. Proin hendrerit massa a tellus vestibulum, a hendrerit ipsum iaculis. Suspendisse potenti. Praesent eget erat blandit, finibus sapien vitae, ullamcorper erat. Integer blandit, felis at ullamcorper maximus, odio lectus pretium mauris, vel consequat lectus quam eu risus. Pellentesque gravida nec diam eget vehicula. -

- -

- Donec hendrerit turpis non libero eleifend dignissim. Mauris non tempor metus, et tristique massa. Integer consequat justo quam, vitae aliquam arcu vestibulum at. Donec porttitor quam in tempus convallis. Praesent feugiat eget eros vitae accumsan. Duis ultricies odio quis nisl volutpat, consectetur imperdiet sem laoreet. Quisque maximus semper ligula at tincidunt. Pellentesque accumsan varius vehicula. -

-
+

Lorem ipsum dolor

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. +

+
+ +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut placerat + pretium sem, ac maximus dui sodales a. Nunc aliquet hendrerit turpis + ac egestas. Phasellus volutpat tristique maximus. + Pellentesque feugiat eget nisi et dignissim. Nam nibh erat, + sollicitudin non facilisis nec, scelerisque nec ipsum. Sed accumsan + velit condimentum, pharetra felis vitae, commodo tellus. + Mauris consequat luctus orci. +

+

+ Vivamus pharetra lobortis dui non tincidunt. Mauris vitae nisi + vestibulum, mollis magna a, maximus mi. Suspendisse dictum eget augue + quis sodales. Quisque rutrum ligula nec dapibus tincidunt. + Proin hendrerit massa a tellus vestibulum, a hendrerit ipsum + iaculis. Suspendisse potenti. + Praesent eget erat blandit, finibus sapien vitae, ullamcorper erat. + Integer blandit, felis at ullamcorper maximus, odio lectus pretium + mauris, vel consequat lectus quam eu risus. Pellentesque gravida nec + diam eget vehicula. +

+ +

+ Donec hendrerit turpis non libero eleifend dignissim. Mauris non + tempor metus, et tristique massa. Integer consequat justo quam, vitae + aliquam arcu vestibulum at. Donec porttitor quam in tempus convallis. + Praesent feugiat eget eros vitae accumsan. Duis ultricies odio quis + nisl volutpat, consectetur imperdiet sem laoreet. Quisque maximus + semper ligula at tincidunt. Pellentesque accumsan varius vehicula. +

+
+ document.getElementById("profile_img_blog").style.background = `url('${ + user[0].userimg + }') center center`; + document.getElementById( + "username_blog" + ).innerHTML = `${user[0].name}@${user[0].username}`; - \ No newline at end of file + if ((user[0].theme = "dark.css")) { + document.querySelector("#background_overlay").style.background = + "linear-gradient(0deg, rgba(10, 10, 10, 1), rgba(10, 10, 10, 0.1))"; + } else { + document.querySelector("#background_overlay").style.background = + "linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0.1))"; + } + }); + + + diff --git a/assets/index.css b/assets/index.css index 522cfce..e820c45 100644 --- a/assets/index.css +++ b/assets/index.css @@ -1,15 +1,15 @@ @import url('https://fonts.googleapis.com/css?family=Poppins'); @import url('https://fonts.googleapis.com/css?family=Questrial'); -body{ - margin:0%; - padding:0%; - width:100vw; - background:var(--bg-color); - color:var(--text-color); - max-width:100vw; - overflow-x:hidden; - align-items:center; +body { + margin: 0%; + padding: 0%; + width: 100vw; + background: var(--bg-color); + color: var(--text-color); + max-width: 100vw; + overflow-x: hidden; + align-items: center; font-family: 'Poppins', sans-serif; } @@ -23,448 +23,525 @@ body{ justify-content: center; flex-direction: column; align-items: center; - top:0; - bottom:0; - left:0; - right:0; + top: 0; + bottom: 0; + left: 0; + right: 0; } #spinner { animation: rotate 0.5s infinite linear; - width:50px; - height:50px; - border:2px solid var(--bg-color); - border-bottom:2px solid var(--text-color); - border-radius:50%; - margin:0; + width: 50px; + height: 50px; + border: 2px solid var(--bg-color); + border-bottom: 2px solid var(--text-color); + border-radius: 50%; + margin: 0; } @keyframes rotate { - 0% {transform: rotate(0deg);} - 100% {transform: rotate(360deg);} + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } } #profile { - width:24vw; - padding:4vh 3vw; - height:92vh; - display:flex; - flex-direction:column; - justify-content:center; - text-align:left; - background:var(--background-image) center center; + width: 24vw; + padding: 4vh 3vw; + height: 92vh; + display: flex; + flex-direction: column; + justify-content: center; + text-align: left; + background: var(--background-image) center center; background-size: cover !important; - background-repeat:no-repeat; - position:fixed; - color:#fff !important; + background-repeat: no-repeat; + position: fixed; + color: #fff !important; } #display { - width:64vw; - padding:4vh 3vw; - height:92vh; - display:inline-block; - padding-left:33vw; + width: 64vw; + padding: 4vh 3vw; + height: 92vh; + display: inline-block; + padding-left: 33vw; } #display h1 { - font-size:50px; - color:var(--text-color); - font-weight:bold; + font-size: 50px; + color: var(--text-color); + font-weight: bold; font-family: 'Questrial', sans-serif; } .emoji { - width:18px; - height:18px; + width: 18px; + height: 18px; } #profile_img_blog { - border-radius:50%; - width:90px; - height:90px; - background-size:cover !important; + border-radius: 50%; + width: 90px; + height: 90px; + background-size: cover !important; background-repeat: no-repeat; } #username_blog { - font-size:18px; - color:var(--text-color); + font-size: 18px; + color: var(--text-color); font-family: 'Poppins', sans-serif; - font-weight:bold; + font-weight: bold; } #username_blog span { - font-size:24px; + font-size: 24px; font-family: 'Questrial', sans-serif !important; } #username_blog b { - font-size:12px; - font-family:'Poppins', sans-serif; - font-weight:bold; + font-size: 12px; + font-family: 'Poppins', sans-serif; + font-weight: bold; } #blog-display { - width:60vw; - margin:0px 20vw; - text-align:left; - margin-top:3vh; - z-index:1; + width: 60vw; + margin: 0px 20vw; + text-align: left; + margin-top: 3vh; + z-index: 1; } #profile_blog { - width:60vw; - margin:0px 20vw; - margin-top:10vh; - text-align:left; - z-index:1; + width: 60vw; + margin: 0px 20vw; + margin-top: 34vh; + text-align: left; + z-index: 1; +} + +#background_overlay { + width: 100vw; + height: 55vh; + position: absolute; + z-index: -1; + top: 0; + left: 0; } #background { - width:100vw; - height:55vh; - background:var(--background-background); - background-size:cover !important; - background-repeat:no-repeat; + width: 100vw; + height: 55vh; + background-size: cover !important; + background-repeat: no-repeat !important; position: absolute; - z-index:-1; - margin-top:-10vh; + z-index: -2; + top: 0; + left: 0; } #blog-display h1 { - font-size:50px; - color:var(--text-color); - font-weight:bold; + font-size: 50px; + color: var(--text-color); + font-weight: bold; font-family: 'Questrial', sans-serif; } #blog-display h2 { - color:var(--blog-gray-color); + color: var(--blog-gray-color); } #blog-display { - padding:1vh 0px; + padding: 1vh 0px; font-family: 'Questrial', sans-serif; } #blog p { - font-size:17px; - line-height:25px; - word-spacing:1.2px; - margin:5vh 0px; + font-size: 17px; + line-height: 25px; + word-spacing: 1.2px; + margin: 5vh 0px; } #blog p span { - padding:2px 4px; - background:var(--text-color); - color:var(--bg-color) !important; + padding: 2px 4px; + background: var(--text-color); + color: var(--bg-color) !important; } #blog img { - width:100%; - margin:2vh 0px; - border-radius:5px; - border:1px solid rgb(0, 0, 0, 0.08); + width: 100%; + margin: 2vh 0px; + border-radius: 5px; + border: 1px solid rgb(0, 0, 0, 0.08); } #header { - width:63vw; - text-align:right; - padding:3vh 0px; - position:absolute; + width: 63vw; + text-align: right; + padding: 3vh 0px; + position: absolute; } #header a { - color:var(--text-color); - text-decoration:none; - margin-left:4vw; - font-weight:bold; + color: var(--text-color); + text-decoration: none; + margin-left: 4vw; + font-weight: bold; } #footer_blog { - width:90vw; - padding:8vh 5vw; - text-align:center; + width: 90vw; + padding: 8vh 5vw; + text-align: center; } #footer_blog a { - color:var(--text-color) !important; - text-decoration:none; + color: var(--text-color) !important; + text-decoration: none; font-family: 'Questrial', sans-serif; - font-weight:bold; + font-weight: bold; } #footer { - width:100%; - padding:8vh 0px; - text-align:center; + width: 100%; + padding: 8vh 0px; + text-align: center; } #footer a { - color:var(--text-color) !important; - text-decoration:none; + color: var(--text-color) !important; + text-decoration: none; font-family: 'Questrial', sans-serif; - font-weight:bold; + font-weight: bold; } #profile_img { - width:180px; - height:180px; - min-width:180px; - min-height:180px; - max-width:180px; - max-height:180px; - border-radius:5px; - background-size:cover !important; - background-repeat:no-repeat !important; + width: 180px; + height: 180px; + min-width: 180px; + min-height: 180px; + max-width: 180px; + max-height: 180px; + border-radius: 5px; + background-size: cover !important; + background-repeat: no-repeat !important; } #profile div { - font-weight:bold; - margin:1.5vh 0px; + font-weight: bold; + margin: 1.5vh 0px; } #username { - font-size:18px; - font-weight:bold; + font-size: 18px; + font-weight: bold; } #username span { - font-size:24px; + font-size: 24px; } #userbio { - font-size:26px; + font-size: 26px; font-family: 'Questrial', sans-serif; - width:100%; + width: 100%; } #about { - font-size:18px; + font-size: 18px; font-family: 'Questrial', sans-serif; } #about a, #username a { - color:#fff !important; - text-decoration:none; - font-weight:bold; + color: #fff !important; + text-decoration: none; + font-weight: bold; } #about a:hover, #username a:hover { - text-decoration:underline; + text-decoration: underline; } #about span { - margin:1vh 0px; - display:block; + margin: 1vh 0px; + display: block; } #about span i { - font-size:16px; + font-size: 16px; } #work { - margin:2vh 0px; - padding:4vh 0px !important; + margin: 2vh 0px; + padding: 4vh 0px !important; } #forks { - margin:2vh 0px; - padding:4vh 0px !important; + margin: 2vh 0px; + padding: 4vh 0px !important; } .projects { - margin-left: -15px; /* align section w/ heading above */ + margin-left: -15px; + /* align section w/ heading above */ } .projects a { - /* 30px is the gutter size in magic grid */ - width: calc(49% - 30px); /* 49% avoids a weird single column on some wide screens */ - display: flex; - text-decoration: none; + /* 30px is the gutter size in magic grid */ + width: calc(49% - 30px); + /* 49% avoids a weird single column on some wide screens */ + display: flex; + text-decoration: none; } .projects section { width: 100%; - padding:2.5vh 5%; - display:inline-block; - border-radius:5px; - color:var(--text-color); - border:1px solid rgb(0, 0, 0, 0.08); - box-shadow:0px 0px 0px rgb(0, 0, 0, 0); - transition:0.4s ease-in-out; - transform:scale(1); + padding: 2.5vh 5%; + margin: 1vh 0px; + display: inline-block; + border-radius: 5px; + color: var(--text-color); + border: 1px solid rgb(0, 0, 0, 0.08); + box-shadow: 0px 0px 0px rgb(0, 0, 0, 0); + transition: 0.4s ease-in-out; + transform: scale(1); } .projects section:hover { cursor: pointer; - border:1px solid rgb(0, 0, 0, 0); - box-shadow:0px 15px 35px rgb(0, 0, 0, 0.06); - transform:scale(1.03); + border: 1px solid rgb(0, 0, 0, 0); + box-shadow: 0px 15px 35px rgb(0, 0, 0, 0.06); + transform: scale(1.03); } .section_title { - font-size:24px; - font-weight:bold; - margin:1vh 0px; - padding:0px 1px; + font-size: 24px; + font-weight: bold; + margin: 1vh 0px; + padding: 0px 1px; word-wrap: break-word; } .about_section { - font-size:18px; + font-size: 18px; font-family: 'Questrial', sans-serif; - margin:2vh 0px; - font-weight:bold; + margin: 2vh 0px; + font-weight: bold; word-wrap: break-word; } .bottom_section { - margin:1vh 0px; - font-size:14px; + margin: 1vh 0px; + font-size: 14px; word-wrap: break-word; } .bottom_section span { - margin-right:20px; - font-weight:bold; + margin-right: 20px; + font-weight: bold; } .bottom_section span i { - font-size:15px; + font-size: 15px; } .socials { color: #fff; text-decoration: none; + margin: 3vh 0px !important; +} + +.socials span { + display: inline-block !important; + margin-right: 2vw !important; + font-weight: normal !important; +} + +.socials span a { + font-weight: normal !important; } #blog_section { - margin:2vh 0px; - padding:2vh 0px !important; + margin: 2vh 0px; + padding: 2vh 0px !important; } #blogs { + columns: 2; +} + +#blog_title { + font-size: 50px; +} + +#blog_sub_title { + font-size: 36px; + margin-top: -2vh; } #blogs section { - width:85%; - display:inline-block; - border-radius:5px; - color:var(--text-color); - border:1px solid rgb(0, 0, 0, 0.04); - box-shadow:0px 0px 0px rgb(0, 0, 0, 0); - transition:0.4s ease-in-out; - transform:scale(1); - padding:0px; - margin:2vh 0px; + width: 100%; + display: inline-block; + border-radius: 5px; + color: var(--text-color); + border: 1px solid rgb(0, 0, 0, 0.04); + box-shadow: 0px 0px 0px rgb(0, 0, 0, 0); + transition: 0.4s ease-in-out; + transform: scale(1); + padding: 0px; + margin: 2vh 0px; } #blogs section img { - width:100%; - border-radius:5px 5px 0px 0px; + width: 100%; + border-radius: 5px 5px 0px 0px; } .blog_container { - padding:2.5vh 5%; + padding: 2.5vh 5%; } #blogs section:hover { cursor: pointer; - border:1px solid rgb(0, 0, 0, 0); - box-shadow:0px 15px 35px rgb(0, 0, 0, 0.06); - transform:scale(1.03); + border: 1px solid rgb(0, 0, 0, 0); + box-shadow: 0px 15px 35px rgb(0, 0, 0, 0.06); + transform: scale(1.03); } .go_back { position: absolute; - color:var(--text-color); - font-size:26px; - margin-left:5vw; - margin-top:4vh; + color: var(--text-color); + font-size: 26px; + margin-left: 5vw; + margin-top: 4vh; } ::selection { - color:var(--bg-color); - background:var(--text-color); + color: var(--bg-color); + background: var(--text-color); } -@media (max-width: 800px){ +@media (max-width: 800px) { #profile { - width:90vw; - padding:4vh 5vw; - height:60vh; - text-align:center; + width: 90vw; + padding: 4vh 5vw; + height: 60vh; + text-align: center; position: relative; } + #display { - width:90vw; - padding:4vh 5vw; - height:auto; - display:inline-block; - padding-left:5vw; + width: 90vw; + padding: 4vh 5vw; + height: auto; + display: inline-block; + padding-left: 5vw; } + #profile_img { - width:120px; - height:120px; - min-width:120px; - min-height:120px; - max-width:120px; - max-height:120px; - margin:0px auto !important; + width: 120px; + height: 120px; + min-width: 120px; + min-height: 120px; + max-width: 120px; + max-height: 120px; + margin: 0px auto !important; } + #work { - margin:0px; + margin: 0px; } + .projects { - margin-left: 0; /* remove neg margin to align w/ header */ + margin-left: 0; + /* remove neg margin to align w/ header */ } + .projects a { - width: 100%; + width: 100%; } + .projects section { - width:88%; + width: 88%; } + #blogs { + columns: 1; } + #blogs section { - width:98%; + width: 98%; } + #blog_section { - margin:0px; + margin: 0px; } + #blog-display { - width:90vw; - margin:0px 5vw; - text-align:left; - margin-top:0vh; - z-index:1; + width: 90vw; + margin: 0px 5vw; + text-align: left; + margin-top: 0vh; + z-index: 1; } + + #blog_title { + font-size: 32px !important; + } + + #blog_sub_title { + font-size: 24px; + margin-top: -1vh; + } + #profile_blog { - width:90vw; - margin:0px 5vw; - margin-top:10vh; - text-align:left; - z-index:1; + width: 90vw; + margin: 0px 5vw; + margin-top: 36vh; + text-align: left; + z-index: 1; } + + #profile_img_blog { + width: 65px; + height: 65px; + } + .go_back { position: relative; - color:var(--text-color); - font-size:26px; - margin-left:5vw; - top:5vh; + color: var(--text-color); + font-size: 26px; + margin-left: 5vw; + top: 5vh; } + #blog img { - margin:1vh 0px !important; + margin: 1vh 0px !important; } + #blog p { - margin:2vh 0px; + margin: 2vh 0px; } } -::-webkit-scrollbar {width:5px;height:5px;} -::-webkit-scrollbar-track {background:var(--bg-color);} -::-webkit-scrollbar-thumb {background:var(--text-color);} +::-webkit-scrollbar { + width: 5px; + height: 5px; +} + +::-webkit-scrollbar-track { + background: var(--bg-color); +} + +::-webkit-scrollbar-thumb { + background: var(--text-color); +} \ No newline at end of file diff --git a/assets/index.html b/assets/index.html index 87e95d0..6a39dd3 100644 --- a/assets/index.html +++ b/assets/index.html @@ -1,118 +1,121 @@ - - - - - - - - - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-

Work.

-
-
- -
-

Blog.

-
-
- -
- - - - - - - - \ No newline at end of file + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+

Work.

+
+
+ +
+

Blog.

+
+
+ +
+ + + + + diff --git a/assets/themes/dark.css b/assets/themes/dark.css index 38ce447..8a9b0f0 100644 --- a/assets/themes/dark.css +++ b/assets/themes/dark.css @@ -2,30 +2,36 @@ --bg-color: rgb(10, 10, 10); --text-color: #fff; --blog-gray-color: rgb(180, 180, 180); - --background-image: linear-gradient(90deg, rgba(10, 10, 10, 0.6), rgb(10, 10, 10, 1)), url("{{{background}}}"); + --background-image: linear-gradient(90deg, rgba(10, 10, 10, 0.3), rgb(10, 10, 10, 1)), + url("{{{background}}}"); --background-background: linear-gradient(0deg, rgba(10, 10, 10, 1), rgba(10, 10, 10, 0.6)), - url("{{{background}}}") center center fixed; + url("{{{background}}}") center center fixed; --height: 50vh; } + #display h1 { -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: #fff; } + #blog-display h1 { -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: #fff; } + .projects section { background: rgb(20, 20, 20); } + #blog_section section { background: rgb(20, 20, 20); } + @media (max-width: 800px) { :root { --background-image: linear-gradient(0deg, rgba(10, 10, 10, 1), rgba(10, 10, 10, 0)), url("{{{background}}}") !important; } -} +} \ No newline at end of file diff --git a/bin/gitfolio.js b/bin/gitfolio.js index 66be111..7654b14 100644 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -1,54 +1,55 @@ -#! /usr/bin/env node +#! /usr/bin/env node /* Argument parser */ -const program = require('commander'); +const program = require("commander"); process.env.OUT_DIR = process.env.OUT_DIR || process.cwd(); -const {buildCommand} = require('../build'); -const {updateCommand} = require('../update'); -const {blogCommand} = require('../blog'); -const {runCommand} = require('../run'); -const {version} = require('../package.json'); +const { buildCommand } = require("../build"); +const { updateCommand } = require("../update"); +const { uiCommand } = require("../ui"); +const { runCommand } = require("../run"); +const { version } = require("../package.json"); program - .command('build ') - .description('Build site with your GitHub username. This will be used to customize your site') - .option('-t, --theme [theme]', 'specify a theme to use', 'light') - .option('-b, --background [background]', 'set the background image') - .option('-f, --fork', 'includes forks with repos') - .option('-s, --sort [sort]', 'set default sort for repository', 'created') - .option('-o, --order [order]', 'set default order on sort', 'asc') - .option('-w, --twitter [handle]', 'set Twitter handle') - .option('-l, --linkedin [username]', 'specify LinkedIn username') - .option('-m, --medium [username]', 'specify Medium username') - .action(buildCommand) + .command("build ") + .description( + "Build site with your GitHub username. This will be used to customize your site" + ) + .option("-t, --theme [theme]", "specify a theme to use", "light") + .option("-b, --background [background]", "set the background image") + .option("-f, --fork", "includes forks with repos") + .option("-s, --sort [sort]", "set default sort for repository", "created") + .option("-o, --order [order]", "set default order on sort", "asc") + .option("-w, --twitter [username]", "specify twitter username") + .option("-l, --linkedin [username]", "specify linkedin username") + .option("-m, --medium [username]", "specify medium username") + .option("-d, --dribbble [username]", "specify dribbble username") + .action(buildCommand); program - .command('update') - .description('Update user and repository data') - .action(updateCommand); + .command("update") + .description("Update user and repository data") + .action(updateCommand); program - .command('blog ') - .description('Create blog with specified title') - .option('-s, --subtitle [subtitle]', 'give blog a subtitle', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.') - .option('-p, --pagetitle [pagetitle]', 'give blog page a title') - .option('-f, --folder [folder]', 'give folder a title (use "-" instead of spaces)') - .action(blogCommand); + .command("ui") + .description("Create and Manage blogs with ease") + .action(uiCommand); program - .command('run') - .description('Run build files') - .action(runCommand); + .command("run") + .description("Run build files") + .option("-p, --port [port]", "provide a port for localhost, default is 3000") + .action(runCommand); -program.on('command:*', () => { - console.log('Unknown Command: ' + program.args.join(' ')) - program.help() +program.on("command:*", () => { + console.log("Unknown Command: " + program.args.join(" ")); + program.help(); }); program - .version(version, '-v --version') - .usage('<command> [options]') - .parse(process.argv); + .version(version, "-v --version") + .usage("<command> [options]") + .parse(process.argv); if (program.args.length === 0) program.help(); diff --git a/build.js b/build.js index 8f45ca9..425cc15 100644 --- a/build.js +++ b/build.js @@ -1,91 +1,115 @@ /* Filepath utilities */ -const path = require('path'); +const path = require("path"); /* Promise library */ -const bluebird = require('bluebird'); -const hbs = require('handlebars'); +const bluebird = require("bluebird"); +const hbs = require("handlebars"); /* Creates promise-returning async functions from callback-passed async functions */ -const fs = bluebird.promisifyAll(require('fs')); -const { updateHTML } = require('./populate'); -const { getConfig, outDir } = require('./utils'); +const fs = bluebird.promisifyAll(require("fs")); +const { updateHTML } = require("./populate"); +const { getConfig, outDir } = require("./utils"); const assetDir = path.resolve(`${__dirname}/assets/`); -const config = path.join(outDir, 'config.json'); +const config = path.join(outDir, "config.json"); /** * Creates the stylesheet used by the site from a template stylesheet. - * - * Theme styles are added to the new stylesheet depending on command line + * + * Theme styles are added to the new stylesheet depending on command line * arguments. */ async function populateCSS({ - theme = 'light', - background = 'https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=500&h=1000&q=80&fit=crop', + theme = "light", + background = "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80" } = {}) { - /* Get the theme the user requests. Defaults to 'light' */ - theme = `${theme}.css`; - let template = path.resolve(assetDir, 'index.css'); - let stylesheet = path.join(outDir, 'index.css'); + /* Get the theme the user requests. Defaults to 'light' */ + theme = `${theme}.css`; + let template = path.resolve(assetDir, "index.css"); + let stylesheet = path.join(outDir, "index.css"); - let serviceWorker = path.resolve(assetDir, 'service-worker.js'); + try { + await fs.accessAsync(outDir, fs.constants.F_OK); + } catch (err) { + await fs.mkdirAsync(outDir); + } + /* Copy over the template CSS stylesheet */ + await fs.copyFileAsync(template, stylesheet); - try { - await fs.accessAsync(outDir, fs.constants.F_OK); - } catch (err) { - await fs.mkdirAsync(outDir); - } - /* Copy over the template CSS stylesheet */ - await fs.copyFileAsync(template, stylesheet); + /* Get an array of every available theme */ + let themes = await fs.readdirAsync(path.join(assetDir, "themes")); - /* Add Service Worker */ - await fs.copyFileSync(serviceWorker, `${outDir}/service-worker.js`); + if (!themes.includes(theme)) { + console.error('Error: Requested theme not found. Defaulting to "light".'); + theme = "light"; + } + /* Read in the theme stylesheet */ + let themeSource = await fs.readFileSync(path.join(assetDir, "themes", theme)); + themeSource = themeSource.toString("utf-8"); + let themeTemplate = hbs.compile(themeSource); + let styles = themeTemplate({ + background: `${background}` + }); + /* Add the user-specified styles to the new stylesheet */ + await fs.appendFileAsync(stylesheet, styles); - /* Get an array of every available theme */ - let themes = await fs.readdirAsync(path.join(assetDir, 'themes')); - - if (!themes.includes(theme)) { - console.error('Error: Requested theme not found. Defaulting to "light".'); - theme = 'light'; - } - /* Read in the theme stylesheet */ - let themeSource = await fs.readFileSync(path.join(assetDir, 'themes', theme)); - themeSource = themeSource.toString('utf-8'); - let themeTemplate = hbs.compile(themeSource); - let styles = themeTemplate({ - 'background': `${background}` - }) - /* Add the user-specified styles to the new stylesheet */ - await fs.appendFileAsync(stylesheet, styles); - - /* Update the config file with the user's theme choice */ - const data = await getConfig(); - data[0].theme = theme; - await fs.writeFileAsync(config, JSON.stringify(data, null, ' ')); + /* Update the config file with the user's theme choice */ + const data = await getConfig(); + data[0].theme = theme; + await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); } -async function populateConfig(sort, order, includeFork, twitter, linkedin, medium) { - const data = await getConfig(); - data[0].sort = sort; - data[0].order = order; - data[0].includeFork = includeFork; - data[0].twitter = twitter; // added twitter - data[0].linkedin = linkedin; // added linkedin - data[0].medium = medium; // added medium - await fs.writeFileAsync(config, JSON.stringify(data, null, ' ')); +async function populateConfig( + sort, + order, + includeFork, + twitter, + linkedin, + medium, + dribbble +) { + const data = await getConfig(); + data[0].sort = sort; + data[0].order = order; + data[0].includeFork = includeFork; + data[0].twitter = twitter; // added twitter + data[0].linkedin = linkedin; // added linkedin + data[0].medium = medium; // added medium + data[0].dribbble = dribbble; // added dribbble + await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); } async function buildCommand(username, program) { - await populateCSS(program); - let sort = program.sort ? program.sort : 'created'; - let order = program.order ? program.order : "asc"; - let includeFork = program.fork ? true : false; - let twitter = program.twitter ? program.twitter : null; - let linkedin = program.linkedin ? program.linkedin : null; - let medium = program.medium ? program.medium : null; - await populateConfig(sort, order, includeFork, twitter, linkedin, medium); - updateHTML(('%s', username), sort, order, includeFork, twitter, linkedin, medium); + await populateCSS(program); + let sort = program.sort ? program.sort : "created"; + let order = program.order ? program.order : "asc"; + let includeFork = program.fork ? true : false; + let twitter = program.twitter ? program.twitter : null; + let linkedin = program.linkedin ? program.linkedin : null; + let medium = program.medium ? program.medium : null; + let dribbble = program.dribbble ? program.dribbble : null; + await populateConfig( + sort, + order, + includeFork, + twitter, + linkedin, + medium, + dribbble + ); + updateHTML( + ("%s", username), + sort, + order, + includeFork, + twitter, + linkedin, + medium, + dribbble + ); } module.exports = { - buildCommand + buildCommand, + populateCSS, + populateConfig }; diff --git a/package-lock.json b/package-lock.json index d48c1af..8af795c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1701 +1,1278 @@ -{ - "name": "gitfolio", - "version": "0.1.4", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" - }, - "acorn-globals": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", - "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" - }, - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "optional": true - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big-integer": { - "version": "1.6.43", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.43.tgz", - "integrity": "sha512-9dULc9jsKmXl0Aeunug8wbF+58n+hQoFjqClN7WeZwGLh0XJUWyJJ9Ee+Ep+Ql/J9fRsTVaeThp8MhiCCrY0Jg==", - "optional": true - }, - "bluebird": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", - "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "bplist-parser": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.1.1.tgz", - "integrity": "sha1-1g1dzCDLptx+HymbNdPh+V2vuuY=", - "optional": true, - "requires": { - "big-integer": "^1.6.7" - } - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cacheable-request": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.0.0.tgz", - "integrity": "sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^4.0.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^1.0.1", - "normalize-url": "^3.1.0", - "responselike": "^1.0.2" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "optional": true - }, - "camelcase-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", - "optional": true, - "requires": { - "camelcase": "^2.0.0", - "map-obj": "^1.0.0" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cssom": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", - "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==" - }, - "cssstyle": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", - "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", - "requires": { - "cssom": "0.3.x" - } - }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "optional": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "optional": true - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "default-browser-id": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-1.0.4.tgz", - "integrity": "sha1-5Z0JpdFXuCi4dsJoFuYcPSosIDo=", - "optional": true, - "requires": { - "bplist-parser": "^0.1.0", - "meow": "^3.1.0", - "untildify": "^2.0.0" - } - }, - "defer-to-connect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", - "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "optional": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "express": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.0.tgz", - "integrity": "sha512-1Z7/t3Z5ZnBG252gKUPyItc4xdeaA0X934ca2ewckAsVsw9EG71i++ZHZPYnus8g/s5Bty8IMpSVEuRkmwwPRQ==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "optional": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", - "optional": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "github-emoji": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.0.tgz", - "integrity": "sha512-FCs0tDDtX/pwkXN6sQE5lUC6B4PIIFC+rv7IZAw8956Mtvo5NQSWHEBJvExl+B8+ahqNVU0W33hMrXSIEFSUvA==" - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.1.15", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", - "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", - "optional": true - }, - "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", - "optional": true - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "http-cache-semantics": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", - "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "optional": true, - "requires": { - "repeating": "^2.0.0" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "optional": true - }, - "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", - "optional": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.0.tgz", - "integrity": "sha512-QEmc2XIkNfCK3KRfa9ljMJjC4kAGdVgRrs/pCBsQG/QoKz0B42+C58f6TdAmhq/rw494eFCoLHxX6+hWuxb96Q==", - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "optional": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "optional": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "optional": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "meow": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", - "optional": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "optional": true - } - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "optional": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" - }, - "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=", - "optional": true - }, - "nwsapi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", - "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "optional": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "open": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.3.0.tgz", - "integrity": "sha512-6AHdrJxPvAXIowO/aIaeHZ8CeMdDf7qCyRNq8NwJpinmCdXhz+NZR7ie1Too94lpciCDsG+qHGO9Mt0svA4OqA==", - "requires": { - "is-wsl": "^1.1.0" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "optional": true - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "optional": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "optional": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "optional": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "optional": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "optional": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "optional": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "optional": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" - } - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "optional": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "optional": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "redent": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", - "optional": true, - "requires": { - "indent-string": "^2.1.0", - "strip-indent": "^1.0.1" - } - }, - "repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "optional": true, - "requires": { - "is-finite": "^1.0.0" - } - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } - } - }, - "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", - "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "resolve": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", - "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", - "optional": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saxes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", - "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", - "requires": { - "xmlchars": "^1.3.1" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "optional": true - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "optional": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "optional": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "optional": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "optional": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", - "optional": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "optional": true, - "requires": { - "is-utf8": "^0.2.0" - } - }, - "strip-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", - "optional": true, - "requires": { - "get-stdin": "^4.0.1" - } - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "requires": { - "punycode": "^2.1.0" - } - }, - "trim-newlines": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", - "optional": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "uglify-js": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.13.tgz", - "integrity": "sha512-Lho+IJlquX6sdJgyKSJx/M9y4XbDd3ekPjD8S6HYmT5yVSwDtlSuca2w5hV4g2dIsp0Y/4orbfWxKexodmFv7w==", - "optional": true, - "requires": { - "commander": "~2.20.0", - "source-map": "~0.6.1" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "untildify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-2.1.0.tgz", - "integrity": "sha1-F+soB5h/dpUunASF/DEdBqgmouA=", - "optional": true, - "requires": { - "os-homedir": "^1.0.0" - } - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "optional": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - }, - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "x-default-browser": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/x-default-browser/-/x-default-browser-0.4.0.tgz", - "integrity": "sha1-cM8NqF2nwKtcsPFaiX8jIqa91IE=", - "requires": { - "default-browser-id": "^1.0.4" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, - "xmlchars": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", - "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" - } - } -} +{ + "name": "gitfolio", + "version": "0.1.4", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" + }, + "acorn-globals": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", + "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bluebird": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", + "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacheable-request": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.0.0.tgz", + "integrity": "sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^4.0.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^1.0.1", + "normalize-url": "^3.1.0", + "responselike": "^1.0.2" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cssom": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", + "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==" + }, + "cssstyle": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", + "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", + "requires": { + "cssom": "0.3.x" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "defer-to-connect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", + "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz", + "integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.0.tgz", + "integrity": "sha512-1Z7/t3Z5ZnBG252gKUPyItc4xdeaA0X934ca2ewckAsVsw9EG71i++ZHZPYnus8g/s5Bty8IMpSVEuRkmwwPRQ==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "github-emoji": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.0.tgz", + "integrity": "sha512-FCs0tDDtX/pwkXN6sQE5lUC6B4PIIFC+rv7IZAw8956Mtvo5NQSWHEBJvExl+B8+ahqNVU0W33hMrXSIEFSUvA==" + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "http-cache-semantics": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.0.tgz", + "integrity": "sha512-QEmc2XIkNfCK3KRfa9ljMJjC4kAGdVgRrs/pCBsQG/QoKz0B42+C58f6TdAmhq/rw494eFCoLHxX6+hWuxb96Q==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + }, + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saxes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", + "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", + "requires": { + "xmlchars": "^1.3.1" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "uglify-js": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.13.tgz", + "integrity": "sha512-Lho+IJlquX6sdJgyKSJx/M9y4XbDd3ekPjD8S6HYmT5yVSwDtlSuca2w5hV4g2dIsp0Y/4orbfWxKexodmFv7w==", + "optional": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", + "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" + } + } +} diff --git a/package.json b/package.json index 238b7c6..33b8d0c 100644 --- a/package.json +++ b/package.json @@ -33,14 +33,14 @@ "license": "GPL-3.0", "dependencies": { "bluebird": "^3.5.4", + "body-parser": "^1.19.0", "commander": "^2.20.0", + "ejs": "^2.6.2", "express": "^4.17.0", "github-emoji": "^1.1.0", "got": "^9.6.0", "handlebars": "^4.1.2", "jsdom": "^15.1.0", - "ncp": "^2.0.0", - "open": "^6.3.0", - "x-default-browser": "^0.4.0" + "ncp": "^2.0.0" } } diff --git a/populate.js b/populate.js index 3dcccad..f44967c 100644 --- a/populate.js +++ b/populate.js @@ -1,142 +1,240 @@ -const fs = require('fs'); -const got = require('got'); -const emoji = require('github-emoji'); -const jsdom = require('jsdom').JSDOM, - options = { - resources: "usable" - }; -const { getConfig, outDir } = require('./utils'); +const fs = require("fs"); +const got = require("got"); +const emoji = require("github-emoji"); +const jsdom = require("jsdom").JSDOM, + options = { + resources: "usable" + }; +const { getConfig, outDir } = require("./utils"); function convertToEmoji(text) { - if (text == null) return; - text = text.toString(); - var pattern = /(?<=:\s*).*?(?=\s*:)/gs - if (text.match(pattern) != null) { - var str = text.match(pattern); - str = str.filter(function (arr) { - return /\S/.test(arr); - }); - for (i = 0; i < str.length; i++) { - if (emoji.URLS[str[i]] != undefined) { - var output = emoji.of(str[i]); - var emojiImage = output.url.replace("assets-cdn.github", "github.githubassets"); - text = text.replace(`:${str[i]}:`, `<img src="${emojiImage}" class="emoji">`); - } - } - return text; - } else { - return text; + if (text == null) return; + text = text.toString(); + var pattern = /(?<=:\s*).*?(?=\s*:)/gs; + if (text.match(pattern) != null) { + var str = text.match(pattern); + str = str.filter(function(arr) { + return /\S/.test(arr); + }); + for (i = 0; i < str.length; i++) { + if (emoji.URLS[str[i]] != undefined) { + var output = emoji.of(str[i]); + var emojiImage = output.url.replace( + "assets-cdn.github", + "github.githubassets" + ); + text = text.replace( + `:${str[i]}:`, + `<img src="${emojiImage}" class="emoji">` + ); + } } + return text; + } else { + return text; + } } -module.exports.updateHTML = (username, sort, order, includeFork, twitter, linkedin, medium) => { - //add data to assets/index.html - jsdom.fromFile(`${__dirname}/assets/index.html`, options).then(function (dom) { - let window = dom.window, document = window.document; - (async () => { - try { - console.log("Building HTML/CSS..."); - var repos = []; - var tempRepos; - var page = 1; - if(sort == "star"){ - do{ - tempRepos = await got(`https://api.github.com/users/${username}/repos?per_page=100&page=${page++}`); - tempRepos = JSON.parse(tempRepos.body); - repos = repos.concat(tempRepos); - } while(tempRepos.length == 100); - if(order == "desc"){ - repos = repos.sort(function(a, b) { - return b.stargazers_count - a.stargazers_count; - }); - }else{ - repos = repos.sort(function(a, b) { - return a.stargazers_count - b.stargazers_count; - }); - } - }else{ - do{ - tempRepos = await got(`https://api.github.com/users/${username}/repos?sort=${sort}&order=${order}&per_page=100&page=${page++}`); - tempRepos = JSON.parse(tempRepos.body); - repos = repos.concat(tempRepos); - } while(tempRepos.length == 100); - } - for (var i = 0; i < repos.length; i++) { - if(repos[i].fork == false){ - document.getElementById("work_section").innerHTML += ` +module.exports.updateHTML = ( + username, + sort, + order, + includeFork, + twitter, + linkedin, + medium, + dribbble +) => { + //add data to assets/index.html + jsdom + .fromFile(`${__dirname}/assets/index.html`, options) + .then(function(dom) { + let window = dom.window, + document = window.document; + (async () => { + try { + console.log("Building HTML/CSS..."); + var repos = []; + var tempRepos; + var page = 1; + if (sort == "star") { + do { + tempRepos = await got( + `https://api.github.com/users/${username}/repos?per_page=100&page=${page++}` + ); + tempRepos = JSON.parse(tempRepos.body); + repos = repos.concat(tempRepos); + } while (tempRepos.length == 100); + if (order == "desc") { + repos = repos.sort(function(a, b) { + return b.stargazers_count - a.stargazers_count; + }); + } else { + repos = repos.sort(function(a, b) { + return a.stargazers_count - b.stargazers_count; + }); + } + } else { + do { + tempRepos = await got( + `https://api.github.com/users/${username}/repos?sort=${sort}&order=${order}&per_page=100&page=${page++}` + ); + tempRepos = JSON.parse(tempRepos.body); + repos = repos.concat(tempRepos); + } while (tempRepos.length == 100); + } + for (var i = 0; i < repos.length; i++) { + if (repos[i].fork == false) { + document.getElementById("work_section").innerHTML += ` <a href="${repos[i].html_url}" target="_blank"> <section> <div class="section_title">${repos[i].name}</div> <div class="about_section"> - <span style="display:${repos[i].description == undefined ? 'none' : 'block'};">${convertToEmoji(repos[i].description)}</span> + <span style="display:${ + repos[i].description == undefined + ? "none" + : "block" + };">${convertToEmoji(repos[i].description)}</span> </div> <div class="bottom_section"> - <span style="display:${repos[i].language == null ? 'none' : 'inline-block'};"><i class="fas fa-code"></i>  ${repos[i].language}</span> - <span><i class="fas fa-star"></i>  ${repos[i].stargazers_count}</span> - <span><i class="fas fa-code-branch"></i>  ${repos[i].forks_count}</span> + <span style="display:${ + repos[i].language == null + ? "none" + : "inline-block" + };"><i class="fas fa-code"></i>  ${ + repos[i].language + }</span> + <span><i class="fas fa-star"></i>  ${ + repos[i].stargazers_count + }</span> + <span><i class="fas fa-code-branch"></i>  ${ + repos[i].forks_count + }</span> </div> </section> </a>`; - }else{ - if(includeFork == true){ - document.getElementById("forks").style.display = "block"; - document.getElementById("forks_section").innerHTML += ` + } else { + if (includeFork == true) { + document.getElementById("forks").style.display = "block"; + document.getElementById("forks_section").innerHTML += ` <a href="${repos[i].html_url}" target="_blank"> <section> - <div class="section_title">${repos[i].name}</div> + <div class="section_title">${ + repos[i].name + }</div> <div class="about_section"> - <span style="display:${repos[i].description == undefined ? 'none' : 'block'};">${convertToEmoji(repos[i].description)}</span> + <span style="display:${ + repos[i].description == undefined + ? "none" + : "block" + };">${convertToEmoji( + repos[i].description + )}</span> </div> <div class="bottom_section"> - <span style="display:${repos[i].language == null ? 'none' : 'inline-block'};"><i class="fas fa-code"></i>  ${repos[i].language}</span> - <span><i class="fas fa-star"></i>  ${repos[i].stargazers_count}</span> - <span><i class="fas fa-code-branch"></i>  ${repos[i].forks_count}</span> + <span style="display:${ + repos[i].language == null + ? "none" + : "inline-block" + };"><i class="fas fa-code"></i>  ${ + repos[i].language + }</span> + <span><i class="fas fa-star"></i>  ${ + repos[i].stargazers_count + }</span> + <span><i class="fas fa-code-branch"></i>  ${ + repos[i].forks_count + }</span> </div> </section> </a>`; - } - } - } - var user = await got(`https://api.github.com/users/${username}`); - user = JSON.parse(user.body); - document.title = user.login; - var icon = document.createElement("link"); - icon.setAttribute("rel", "icon"); - icon.setAttribute("href", user.avatar_url); - icon.setAttribute("type", "image/png"); - document.getElementsByTagName("head")[0].appendChild(icon); - document.getElementById("profile_img").style.background = `url('${user.avatar_url}') center center` - document.getElementById("username").innerHTML = `<span style="display:${user.name == null || !user.name ? 'none' : 'block'};">${user.name}</span><a href="${user.html_url}">@${user.login}</a>`; - //document.getElementById("github_link").href = `https://github.com/${user.login}`; - document.getElementById("userbio").innerHTML = convertToEmoji(user.bio); - document.getElementById("userbio").style.display = user.bio == null || !user.bio ? 'none' : 'block'; - document.getElementById("about").innerHTML = ` - <span style="display:${user.company == null || !user.company ? 'none' : 'block'};"><i class="fas fa-users"></i>   ${user.company}</span> - <span style="display:${user.email == null || !user.email ? 'none' : 'block'};"><i class="fas fa-envelope"></i>   ${user.email}</span> - <span style="display:${user.blog == null || !user.blog ? 'none' : 'block'};"><i class="fas fa-link"></i>   <a href="${user.blog}">${user.blog}</a></span> - <span style="display:${twitter == null ? 'none' : 'block'};"><i class="fab fa-twitter-square"></i>    <a href="https://www.twitter.com/${twitter}" target="_blank" class="socials"> Twitter</a></span> - <span style="display:${linkedin == null ? 'none' : 'block'};"><i class="fab fa-linkedin"></i>    <a href="https://www.linkedin.com/in/${linkedin}/" target="_blank" class="socials"> LinkedIn</a></span> - <span style="display:${medium == null ? 'none' : 'block'};"><i class="fab fa-medium"></i>    <a href="https://www.medium.com/@${medium}/" target="_blank" class="socials"> Medium</a></span> - <span style="display:${user.location == null || !user.location ? 'none' : 'block'};"><i class="fas fa-map-marker-alt"></i>    ${user.location}</span> - <span style="display:${user.hireable == false || !user.hireable ? 'none' : 'block'};"><i class="fas fa-user-tie"></i>    Available for hire</span>`; - //add data to config.json - const data = await getConfig(); - data[0].username = user.login; - data[0].name = user.name; - data[0].userimg = user.avatar_url; - await fs.writeFile(`${outDir}/config.json`, JSON.stringify(data, null, ' '), function (err) { - if (err) throw err; - console.log("Config file updated."); - }); - await fs.writeFile(`${outDir}/index.html`, '<!DOCTYPE html>' + window.document.documentElement.outerHTML, function (error) { - if (error) throw error; - console.log(`Build Complete, Files can be Found @ ${outDir}`); - }); - } catch (error) { - console.log(error); + } } - })(); - }).catch(function (error) { - console.log(error); + } + var user = await got(`https://api.github.com/users/${username}`); + user = JSON.parse(user.body); + document.title = user.login; + var icon = document.createElement("link"); + icon.setAttribute("rel", "icon"); + icon.setAttribute("href", user.avatar_url); + icon.setAttribute("type", "image/png"); + document.getElementsByTagName("head")[0].appendChild(icon); + document.getElementById("profile_img").style.background = `url('${ + user.avatar_url + }') center center`; + document.getElementById( + "username" + ).innerHTML = `<span style="display:${ + user.name == null || !user.name ? "none" : "block" + };">${user.name}</span><a href="${user.html_url}">@${user.login}</a>`; + //document.getElementById("github_link").href = `https://github.com/${user.login}`; + document.getElementById("userbio").innerHTML = convertToEmoji( + user.bio + ); + document.getElementById("userbio").style.display = + user.bio == null || !user.bio ? "none" : "block"; + document.getElementById("about").innerHTML = ` + <span style="display:${ + user.company == null || !user.company ? "none" : "block" + };"><i class="fas fa-users"></i>   ${user.company}</span> + <span style="display:${ + user.email == null || !user.email ? "none" : "block" + };"><i class="fas fa-envelope"></i>   ${user.email}</span> + <span style="display:${ + user.blog == null || !user.blog ? "none" : "block" + };"><i class="fas fa-link"></i>   <a href="${user.blog}">${ + user.blog + }</a></span> + <span style="display:${ + user.location == null || !user.location ? "none" : "block" + };"><i class="fas fa-map-marker-alt"></i>    ${ + user.location + }</span> + <span style="display:${ + user.hireable == false || !user.hireable ? "none" : "block" + };"><i class="fas fa-user-tie"></i>    Available for hire</span> + <div class="socials"> + <span style="display:${ + twitter == null ? "none !important" : "block" + };"><a href="https://www.twitter.com/${twitter}" target="_blank" class="socials"><i class="fab fa-twitter"></i></a></span> + <span style="display:${ + dribbble == null ? "none !important" : "block" + };"><a href="https://www.dribbble.com/${dribbble}" target="_blank" class="socials"><i class="fab fa-dribbble"></i></a></span> + <span style="display:${ + linkedin == null ? "none !important" : "block" + };"><a href="https://www.linkedin.com/in/${linkedin}/" target="_blank" class="socials"><i class="fab fa-linkedin-in"></i></a></span> + <span style="display:${ + medium == null ? "none !important" : "block" + };"><a href="https://www.medium.com/@${medium}/" target="_blank" class="socials"><i class="fab fa-medium-m"></i></a></span> + </div>`; + + //add data to config.json + const data = await getConfig(); + data[0].username = user.login; + data[0].name = user.name; + data[0].userimg = user.avatar_url; + await fs.writeFile( + `${outDir}/config.json`, + JSON.stringify(data, null, " "), + function(err) { + if (err) throw err; + console.log("Config file updated.\n"); + } + ); + await fs.writeFile( + `${outDir}/index.html`, + "<!DOCTYPE html>" + window.document.documentElement.outerHTML, + function(error) { + if (error) throw error; + console.log(`Build Complete, Files can be Found @ ${outDir}\n`); + } + ); + } catch (error) { + console.log(error); + } + })(); + }) + .catch(function(error) { + console.log(error); }); -} +}; diff --git a/run.js b/run.js index af194e8..b98cae5 100644 --- a/run.js +++ b/run.js @@ -1,25 +1,20 @@ -const express = require('express'); -const open = require('open'); -const defaultBrowser = require('x-default-browser'); -const path = require('path'); -const outDir = path.resolve('./dist/' || process.env.OUT_DIR); +const express = require("express"); +const path = require("path"); +const outDir = path.resolve("./dist/" || process.env.OUT_DIR); const app = express(); app.use(express.static(`${outDir}`)); -function runCommand(){ - app.get('/',function(req,res){ - res.sendFile('/index.html'); +function runCommand(program) { + let port = program.port ? program.port : 3000; + + app.get("/", function(req, res) { + res.sendFile("/index.html"); }); - app.listen(3000); - - defaultBrowser(function (err, res) { - if(err) throw err; - (async () => { - await open('http://localhost:3000', {app: res.commonName}); - console.log("ctrl + c to exit"); - })(); - }); + app.listen(port); + console.log( + `\nGitfolio running on port ${port}, Navigate to http://localhost:${port} in your browser\n` + ); } module.exports = { diff --git a/ui.js b/ui.js new file mode 100644 index 0000000..84bf151 --- /dev/null +++ b/ui.js @@ -0,0 +1,222 @@ +const fs = require("fs"); +const express = require("express"); +let bodyParser = require("body-parser"); +const { updateHTML } = require("./populate"); +const { populateCSS, populateConfig } = require("./build"); +const { updateCommand } = require("./update"); +const app = express(); +app.set("view engine", "ejs"); +app.use(express.static("views")); +app.set("views", __dirname + "/views"); +app.use(express.json({ limit: "50mb" })); +app.use(express.urlencoded({ limit: "50mb", extended: true })); + +const port = 3000; + +const jsdom = require("jsdom").JSDOM, + options = { + resources: "usable" + }; +global.DOMParser = new jsdom().window.DOMParser; +const { getBlog, outDir } = require("./utils"); + +function createBlog(title, subtitle, folder, topImage, images, content) { + // Checks to make sure this directory actually exists + // and creates it if it doesn't + if (!fs.existsSync(`${outDir}/blog/`)) { + fs.mkdirSync(`${outDir}/blog/`, { recursive: true }, err => {}); + } + + if (!fs.existsSync(`${outDir}/blog/${folder}`)) { + fs.mkdirSync(`${outDir}/blog/${folder}`, { recursive: true }); + } + + fs.copyFile( + `${__dirname}/assets/blog/blogTemplate.html`, + `${outDir}/blog/${folder}/index.html`, + err => { + if (err) throw err; + jsdom + .fromFile(`${outDir}/blog/${folder}/index.html`, options) + .then(function(dom) { + let window = dom.window, + document = window.document; + let style = document.createElement("link"); + style.setAttribute("rel", "stylesheet"); + style.setAttribute("href", "../../index.css"); + document.getElementsByTagName("head")[0].appendChild(style); + + document.getElementsByTagName("title")[0].textContent = title; + document.getElementById("blog_title").textContent = title; + document.getElementById("blog_sub_title").textContent = subtitle; + document.getElementById( + "background" + ).style.background = `url('top_image.${ + topImage.split("/")[1].split(";")[0] + }') center center`; + + if (content != null) { + var parser = new DOMParser(); + content = parser.parseFromString(content, "text/html"); + document.getElementById("blog").innerHTML = + content.documentElement.innerHTML; + } + + images = JSON.parse(images); + images.forEach((item, index) => { + var base64Image = item.split(";base64,").pop(); + fs.writeFile( + `${outDir}/blog/${folder}/img_${index}.${ + item.split("/")[1].split(";")[0] + }`, + base64Image, + { encoding: "base64" }, + function(err) { + if (err) throw err; + } + ); + }); + + fs.writeFile( + `${outDir}/blog/${folder}/index.html`, + "<!DOCTYPE html>" + window.document.documentElement.outerHTML, + async function(error) { + if (error) throw error; + + var base64ImageTop = topImage.split(";base64,").pop(); + fs.writeFile( + `${outDir}/blog/${folder}/top_image.${ + topImage.split("/")[1].split(";")[0] + }`, + base64ImageTop, + { encoding: "base64" }, + function(err) { + if (err) throw err; + } + ); + + let blog_data = { + url_title: folder, + title: title, + sub_title: subtitle, + top_image: `top_image.${topImage.split("/")[1].split(";")[0]}`, + visible: true + }; + const old_blogs = await getBlog(); + old_blogs.push(blog_data); + fs.writeFile( + `${outDir}/blog.json`, + JSON.stringify(old_blogs, null, " "), + function(err) { + if (err) throw err; + console.log( + `Blog created successfully at ${outDir}\\blog\\${folder}\n` + ); + } + ); + } + ); + }) + .catch(function(error) { + console.log(error); + }); + } + ); +} + +function uiCommand() { + app.get("/", function(req, res) { + res.render("index.ejs"); + }); + + app.get("/update", function(req, res) { + if (!fs.existsSync(`${outDir}/config.json`)) { + return res.send( + 'You need to run build command before using update<br><a href="/">Go Back</a>' + ); + } + updateCommand(); + res.redirect("/"); + }); + + app.post("/build", function(req, res) { + let username = req.body.username; + if (!username) { + return res.send("username can't be empty"); + } + let sort = req.body.sort ? req.body.sort : "created"; + let order = req.body.order ? req.body.order : "asc"; + let includeFork = req.body.fork == "true" ? true : false; + let twitter = req.body.twitter ? req.body.twitter : null; + let linkedin = req.body.linkedin ? req.body.linkedin : null; + let medium = req.body.medium ? req.body.medium : null; + let dribbble = req.body.dribbble ? req.body.dribbble : null; + let background = req.body.background + ? req.body.background + : "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80"; + let theme = req.body.theme == "on" ? "dark" : "light"; + + updateHTML( + username, + sort, + order, + includeFork, + twitter, + linkedin, + medium, + dribbble + ); + populateCSS({ background: background, theme: theme }); + populateConfig( + sort, + order, + includeFork, + twitter, + linkedin, + medium, + dribbble + ); + res.redirect("/"); + }); + + app.get("/blog", function(req, res) { + if (!fs.existsSync(`${outDir}/config.json`)) { + return res.send( + 'You need to run build command before accessing blogs<br><a href="/">Go Back</a>' + ); + } + fs.readFile("./dist/config.json", function(err, data) { + res.render("blog.ejs", { profile: JSON.parse(data) }); + }); + }); + + app.post("/createBlog", function(req, res) { + let title = req.body.title; + let subtitle = req.body.subtitle; + let content = req.body.content ? req.body.content : null; + if (!title) { + return res.send("title can't be empty"); + } + if (!subtitle) { + return res.send("subtitle can't be empty"); + } + if (!content) { + return res.send("something isn't working fine, try again :p"); + } + let folder = title.replace(/[^a-zA-Z ]/g, "").replace(/ /g, "-"); + let topImage = req.body.top_image; + let images = req.body.images; + createBlog(title, subtitle, folder, topImage, images, content); + res.redirect("/blog"); + }); + + console.log("\nStarting..."); + app.listen(port); + console.log( + `The GUI is running on port ${port}, Navigate to http://localhost:${port} in your browser\n` + ); +} + +module.exports = { + uiCommand +}; diff --git a/update.js b/update.js index 895fcd9..446338e 100644 --- a/update.js +++ b/update.js @@ -1,22 +1,39 @@ -const {getConfig} = require('./utils'); -const {updateHTML} = require('./populate'); +const { getConfig } = require("./utils"); +const { updateHTML } = require("./populate"); async function updateCommand() { - const data = await getConfig(); - var username = data[0].username; - var sort = data[0].sort; - var order = data[0].order; - var includeFork = data[0].includeFork; - var twitter = data[0].twitter; - var linkedin = data[0].linkedin; - var medium = data[0].medium; - if(username == null || sort == null || order == null || includeFork == null){ - console.log("username not found in config.json, please run build command before using update"); - return; - } - updateHTML(username, sort, order, includeFork, twitter, linkedin, medium); + const data = await getConfig(); + var username = data[0].username; + var sort = data[0].sort; + var order = data[0].order; + var includeFork = data[0].includeFork; + var twitter = data[0].twitter; + var linkedin = data[0].linkedin; + var medium = data[0].medium; + var dribbble = data[0].dribbble; + if ( + username == null || + sort == null || + order == null || + includeFork == null + ) { + console.log( + "username not found in config.json, please run build command before using update" + ); + return; + } + updateHTML( + username, + sort, + order, + includeFork, + twitter, + linkedin, + medium, + dribbble + ); } module.exports = { - updateCommand + updateCommand }; diff --git a/views/blog.ejs b/views/blog.ejs new file mode 100644 index 0000000..6c168b9 --- /dev/null +++ b/views/blog.ejs @@ -0,0 +1,260 @@ +<!DOCTYPE html> +<html lang="en"> + <head> + <meta charset="UTF-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0" /> + <meta http-equiv="X-UA-Compatible" content="ie=edge" /> + <title>Gitfolio UI + + + + + + +
+ gitfolio + New Blog + Update + Home +
+
+ +
+ + + + + + + + +
+
+
+
+ <% if(profile[0].name)%> + <%= profile[0].name%> + <% %> +
@<%= profile[0].username%> +
+
+
+
+ +
+ + + + + +
+
+ + + +
Tip : You can use html inside paragraphs
+
+ +
+
+ + + + diff --git a/views/font/Circular.otf b/views/font/Circular.otf new file mode 100644 index 0000000000000000000000000000000000000000..c62b210c51fc6b0a7e4022ac9dd54d50cf5942a3 GIT binary patch literal 74500 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�$ENekd=fCSx(51l~{o+rz#-JDFw1p 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%0D3`R&67{=)GDS8?p!cah zuITs-ba>1f9aMil4Gx6M$_d04eF&xtQ_pBd$VjL(hW?*F$YTaMZ1NW#b2xEE(-zh^ zEhD2BTJik}-ze0Z2KA;vy=hSIIjA=c>P=%bO$$B3 zdJ1Q7``PwVFz#QQZKYTHNFh9k$kdg=Wi>E!l={2Cjvr3s05jaDj9cCyH*y6`6$ewy zC5+dVxvyqk1-B-noXI?LlsP00{b)4U)8NuH=90U>T%^LB^z|jAS_ZwO@V^@Ff48{` zEJlFE2skheE+hgDOoIc{==T9Imk#Exfw`+-?h2S=&l>Nq^X>*MVVVJGNT}Hxq@fTs zd!c5pW>K@3{^Zqqa`ocs&DDpiFIPXV{#*mN26Dj@(+WkQd6Ax$K`WM)?mP7+k~gB; zjD(+A0EBf^uaudiIrwTR+7s&NP`q034Rcu>^dhqJ4bock*q-1#_N(Nnog~m zdB4`&%&oOBOK2@`{HnDwJ=$|Ou4}E$s#+WKF0HM37ucx)U)tPUq3#xNw_V-M%eWht z5jrj7o!o6urB9V|gR9=NHtf0z9o1zJlIn&6=XM73sZzs+;JSqo4;( z(TvP_YUTq2a(_d96$WD9d=&3Sc!H!?eJ?$zU+@5fr4Qc59C(gAi!%qOF$W?6k!}U^ z{yNefrtCSySWfzb#Q2mLpHj{kpv%J>5AlVoOJwBVNbeABLr&mM;4BM|8$r&sfYt@H zqE8Zt@&bDz5P6YSMW2DrhqqEAxwB?`xsx2PlSW4Jdi04UwCXZ=^%O?<9JcecS3PK@ zK37Aor@5ZtYD^AIpiw(9%4zk$M+2^BxEiYx&YR`6M&Klp@Vm77X!qp3JSA!k(0?{0 zZ3Iub!rnK8dL$N7ACR8E@hc@?AgxADXDHdAWH>V9kY|Y{CFfMIH3Sw5CeiVqzi}xD z@wH${nNT+YA}2IxLW3ssXF_|X_8eDh@@NB0QCd^VV+Plr<7!PgnkIcdLTg5tJV!vg z25F68c!bshxFtk#zCb)lafX}?a=t=HBr74BPLnjiJ1CfXFmW=Wx}gmtRJ8Ne$;kvV6Ua=)r3fH1$;|{R z6HS2zR1r5p6%&LZGi7)xRTolcmS@@=jA4>jsD=^LP@{&Tp$Uf|TRvzqv)9&wF|)=N zjG=r5bCR!S%Xt%wx2|0X-&U&FEYRF4#my~c)gx41SUUqrc-ssNVlIHRkPNO<+|wW}k#LSHMD*ut2eu$W*G%@ z*lG|mi)%L5$6Rx`_$Vgd>eTqkr}TJ%A(0ul0#C96caTv@_->JNWIRR!V6588+$LkJ z@Bz6Pdt!+#+{azPwYcvX0}rY(P{y@<$Qg;Gv}*7hxveBO(I}=dc6_IF02Y^>hg|nF z>Wa?ELH;@Tx433>mhexpJhQ$Awqk%ZH{&pRYM@Zk5+xO&2C~A0wj5sIINZaxLCr)- zOP(ZsZ%XY?*bwIH(TvN-c_;I{$dRYf9@tp3j4(H9ciR%Q;&9s~cqjU7@C4@_0q32r z+D!Dv*A(t$?veQ^qU3z;Y^6TFe=M9uX>1REr|lTwO`R5tCQLKsxME(WZt&^m4Y}i& zgEi#;(E)$*Hx6@~`8?PwMw`ak;?4hV;(9Uw3n|fy)<_@zv@`{ZZ=ZSMka<;k5v*6&ed7P(SX`}wlOE%e8_sYjVss> zZjO-s4RpMKI&R^AZPwbWe6mKDT!l8XjZK;9q&-51xzg-|_8oebaPvBHn+^F@9p)LU z9x5kUrRT_=s}=KBzx0Rqp<3yKUr1k7c}cx(^vpEo7P%7%EP_&@ZS{2f780udi^qRK z&v7!_nd{6{^CQ|v%ji>-Y#t4@D$pOJ7lIx7`2pst+a1)F+``6E83$+^g@xNBk{Gu; zGHEG{av06hDMx0bbjH(v@gPTND0KZh8E2uNJbwWj@qeM*FnluGEeGuRw9ZFRUA8{( z7xKy$<*(=PUr=4PGVk>G*WtNSE}^i04l{UO%6RKlqe2M(LHf)bX(%TNu2hcbTTs0< z4oavsi>rL-F|yXk%7aQJp`mceCG)sb&Y3ZT{DCC1dZPI&W74)PFlOed?tnlv2P%($ z7vGXSyygGs_;+Fb=d^Ki^<>UhSXDvv&x~wteiHaMRcV?N)gcjec^2#!2 z$eUuJJgxsMA9LnYFnoQ6{xh`z&SL z92E}p7BBDo>ThtGcg{#c|1~_{RMh`2=PX72e~*p-0?#3dN&X9D!D`kAqz*V?kq5)L zm8?;ClJ&)Za{RMYR!Nqek>4sAIYUFoB+{iFeMp{cz+~m{;#5qDBiAi^f7bN>1)j5J zbmylG$w{Q9KRbfs(;tjwNA5Tqgl3A+|DR?2r{VvXu<_r}#vSW$r}6ua3I9CsU&FB! z^{?VNOYb$Ykj$t|Y{p$Y{Wz#gvEGHn5_mGxWF+D3S*~NypmoG#a=&4`DY{%@i6$l3 zs>o5ka192bf1-QKj*WjupOA&S3aiz>bDJIJznyF3-%jzT3E=AwVsnjdR<(&KGGB36(Q>j-y@5grIGKLIyivl_AX&a@rGu5gTh(g(ux|7-VQeef?NprwV&-G&sq zPBhoII~33jKTU{yCoiPC3}J{EZ{nZfNLkZo$8i%|D3x&#{pSY3ALX0T3<9 zonzcCRA>%LVV;%4#Qxs8Hh~jQdWr6ld4lD4sH=6}Ryo^uAce}3b~^5Qr> z>ua=+(hG%S400-rOTpg6TIzmm2+q;J_QOAj%|-Z;!7&PTVEJJ2nPKBsc;wK1c9{P< zHbU@)a?1YyU*!BJqxk=mIcMjvpmv2w#y6Y1tHlhON84z zknRq>hIpt4UaQ)waIjn_&dA|Al9YD638-g&0=@M=gKRY%;age7j za4-86Ij{x1B66rYGBif=B;in$=omsrJofySU76@|vv3}vC|Uorj~iJ-|C^_OD`z-) zp{Ssxqj^eUjrO3AWW|QO)0NF+2y9KPtCW=v|9_>I{#!7I0Lc9R-{qWH#$T&rc>Fux z|6`c(k%GNy6xN(hY@DNMft=WT#v!%H9*w+M6z5kq*h#j6SQFpP{;ML`Uq8qWiwf)x zt<28BYV53O$=uBqQPmiwbpB>2VBJtETj1oq(i*N=$npR^Oy_?-cCu}G2 z=<%EFcXkwAWJl2@b`xE(v47CU9wPQOr`xXEZrDtSCPFKMzwY8%39Y17N-M41r!~ei zQwOc1)(PKCU9_%RH?6zY0}oBT@Xypo>#OzC`s1T%ARfMxwZYo++7NB1HVl7FQ}EL? zS6hUKre)d&ZKJk{z9{>iWIq{h#i$!!O~wP2lhY3_aYlue@L|D8r zGZ*Rb?E_{X1fp`B>_p<^8ws3F%BhS+c~#CBFka2p9;lmxWAT(VnDVV%eQn`#+i~Wk zB|4C6N6vh-NGDqhTBVC^C@s?!c)M{nCiOsCZ4l>kwAAxh#1G-D4OWIxj`-KAM$3)1 z)u;6)0m}?dJFPfVd^T_vpf$I$|8O^_>{?`}EG>J2x}M}rpoLGf|LQl+4z%>|z;c1J z6D@ub&qIH3cA@1j0nug7ZcxA#TX(2H$BS2hvnSMW)z%A&xQ6#HK1OEi17)P!`a&Jo zZT+B-8~BYeIR~iWh5g@Jgsn9cQ^Zytswv7o|KeJ4TO+8agslt|RFZwnrLA1dq2ZsIQN2`K`#b!9hbH}*W< z2i0}A-4EsUu$5K*!5)ADd)Xd@3VYigffD=J9)%kF+8&1@`?0^IKfBoKLYV_>4WZ6~ zwr8NwLAI7qX|k;ylsecp2x@)amJG!Xu{{sf4z&$|a%m0aZLE^=Hdb7D8+#H;o@=WK zH7~+nh4>sRtbC3&fU-A;?;iGeRnay<<4;3VJ!v&N{Z?$Ci$H0)prqWKN&L$h&zV=z zYhE-oe$K+28gZqs7ge-eOws4P?1{}!>zCrGG-o7xOUrWq0B3$hyCoFu=4U_cL%e^O zv!v}2&M3SAmWMJP<+Rhw9)q$gaXM{PI14~~HRy3qa2Cb`NiAR$4{>hjrw;c|aTaEu zS6$U#q{r09_gi5+zcr#iKFyiS_6%n%RNa{SCY-UhXF22PgH3_Dnd+}C=m#G9X)CDn zInLtHe_KlL!C4AQ>qYPC!QoC&r~oP}+lb0*j}bKb4|Ddx9*!I?{WRV>M_-5u0%C#M7dio3w)mz>3I z|FQi-Eq>)JW;?_gXFJSUl%2gtcyp99&UTEmDE{zHK?7$vV{B(R3uv4daH%jd<~CCqm0&a>a0 zLdiW1SzlIyD2Wz~f=fAvW$!UtJ+#{A36=94dV(;{@wPdJ;I)}2R2<1u4v+d3i+s(x z`{%zwcrOOw&Ey#Ie-)l9c2}pvpKo@vvRanIhr|-_6U<#vcrs3dsbOVs6*nDp1Z%&LfNy-_8iKE|8Ip~m9;K)h;}DT z(h6ehPfBEk3`yIZYPYqt-5F%kAcjJC zRHa`*&X*c|fF_w;RJSXJeKpIGQP5>rap(tU)lQE;g1XVjzo(73xg4a#(~K>$>p>{* z5BxFR?htqL}w&^0;E@ z3P=Sv>#Txz=S{hS*U*6{lRF;J zFJ5WLi`73_u_ni}N{{vv)T?%GL0w@Z&>b_oWuRJn6litxZF1ah4!t>=s)t48bIjkA zMkUOeIXph&!-`;k2wG;6R#usyV-+tn9)~CTTlZ)Ltkq$io+kVJUb$0p^F6hr z@C`c)&QZF;vVtJvE=wum6HdwB=*+Dck?<5Y_`+!T4Cx7By&+4=zxcqKbjU_b=1g`8 zg5{&!6;+VRogDGOy;ET$vK5f^m-TIHUhpv+DtMJvMe2NmJJBhy>o04XzxfmcK6kQC zeja+*#r!pj5=E1UXG7lUj1t?~dnIcOXPNzFkEM)jz>Fr?z$hjEx#(^2yeq(&OFDwoJzWgRnkR_k}h0Ix^O7zB8QSLB9wFyp`?olC0E#inqBwGi?*iZ3a64QqLo}> zS8|0@$ra-F>n$Wt@fjw18}V;!N9q&pO>z2C4x~NN+K3Na7w`E{84{J~ZDLf-8>yOC zQZ;V`6~`gxN&RaoeU6JIS5kEYAgV`tk*ez}sk)((s;elex}lP)t0<|up^~brDXF@;lB#PcO;j!<>lTzG z`l#GW!hTXo*iR`5yROno`4lBpQaYvlN~(T9N!7KLR9#L<)%BEAT}w&T^^{ayPD#}d zDXF@=lByq7QguD0iE=90x}uV;t0>vJfs(DODA~H9lC7&KZB>$zu&XKwyM~gmpHvcd zeI;Q(sU++Mcy!nTWr$uYUP;^Kl(bz%N!t%AX}g+|wjWi}b{!>cKczHacGW8?sb2A{ z>J?2@uV|ur#j~ncG*!K#iRu-NlzyzF(u0*zIYDX>4@^GzVwWe%gZUb{4ph$ zH&j|9uhJSZUzC^uwcGBEDtQFjeS;Bm6Qle|B*`o6#XiS~yvO{J704U1GZv16z4-i! zzXKVc;V{@GgbadTsx$om!F8Hcc$DD!fw^fTbKhxXFY)yt`|*#O-{Ec2!^rq9D+c(6 zBi>Z=C37x(ou4(hspd3wPUUWo?9(S-@htW?4sz9iQTU*Zl<^}xSS+)I?4K6M4$OLMei2#gm7q!0HD#70-)c`|Hftw>hjB5*WJU9|(g_R_WFX zukgXQJwmA^Lij!PR`tDALM1Dn7fpv8p;W5=!V_oF)CjfU3nxe&V9t^&GFlJ1`jtEc zQs}~pm#xPMy-0j6E46S@QgYZ4d=8Z(Axaik??e5Fcd9Q3rM6)2;%yMR%={QFlq3)I zGOCHCtVmQ+Gdp}l)?O^!qHxi6p#)lZe~@EUIS?jZMFk!UFN)u0JQX~M48%ccDN3sN z8J;DRBbN}$ml)hB7~#c5dvg=K!8qc@^p*#8u<)KGG^|f%d7t$`==RnJ)-9uM76@-ws*JDnyQ~m005r8>v*4td`4OW1u|F`0^Fw@&zd7nwl@7nV0sH!&YEfVa{L<+=5-pFHp&4 z^LtCTp+?>>kwteg2U~uHC?&H@EV6B+r}oNw&Kkz0tyq{}SNmKpb1z>mvEfH*tCHv? z?mlquRUxO;?;nIktGgd4^?U01Be{t`A*3YU%RIdm9m7`gN#gDYa}3v3TQTBp0OBn? z$w^zN^GD0-9Qv0Y5`JVpsofkILAlZYTm~y^z{6gAV~MY1ql=6aBAF=~M28tZ zW~wlO5qim-jl{MpIFn`iE1~X4#88n?>3-thkRA)Kr24JoVIANHU56T1*tgX4a8u(;URO8p|?vWL!9>cWny?gdtLWn>8eFwMEVFzIa`MP%wX8Lyhs{;x!Ci$8Yuo{Q!Zix*q0^v8 zL3vg=#6w=pHdfuRFl}K${RZbw)w@Gki_fzRNU~6v72{?e$m%yTtIPNj93K@`3IB|* zZxZ5nEL1?~pWcw61yNKXd&e&YsY-cVqaQKjf*F&zYQ$8bv5Xpw$GoN2^AA6qk*6VT zpsvh!XMrN)iI{4(l@!5#^c!+=#*?}W#wOKYhi<$Ui9>+#>P|WhKzFkx>|%B#w{yEA&XVum$WcW7 z3WdoLK`-9MzZ?7I2&Es3z=x9Td-iZK=Mi5#Bo;tYD}X+7x6(I=&Y>{tS`mzSW09KV z6get%{zu`Duf&j3u)Tm&are9vAB=cmG#4?p;zu41buCg;I@&xh z{fo2~$1Crp9{a5VgOHqHWS7`KW#lAt6LSkAoAkeP%t!)l9xy30x3!9aZdIsAs3XXQ z;^$fN4dzM;>n_`f7(p)37@?{1D+hOyQrbE$`zj>)D_Y?@EstfU|@uHh7^dpi5+ z=5tznnOH#u58iBJ_Fz6y`AU84q}@*r((leNQ;Swy_^K=N9xft+9WUen<^P9wr|GpL zWv+&oP*Rb~*uu+l@<@Z`bfw9Ur)8wqd<0F&SSNe@&^qwHo$H2pu2F9l-AJuf>>COa zHFl`r2=ZGe>CLHJSQzj-PH`oIn>ghMPUWun2OGJHUQn#yZ0s+J04K@N|43GIMsoIo z%17fF@+W~b*qRpIrGc}r(Px~>z>5a{7Lmgq^Ap0>fQ_N%EAUD?f#^f>*06kq17dVQ z(@o0x<}*AQtm3SME<<})WF$_LzN%=+g4DXV`U~@PkRDWZi5H?@3$Ba2wtBkILD)fS zF}p!U5*i!}sJC?=mt7{Oy+!9KI!oso?cUV`(uqHgIMr;-0+!OUSR zDz#QnXFM6VFAEAd792xGA8|u*rh+HZaH=swwY$t*AqtX^%hr>k1c;LO=hgUa;mi7! zFBfpoq6(X&Flk2)zO5h>BnSKk$3+rsiJ{m$UlgLr ze9pYf%#&Cd`DcdTd`Cu#FC%_9#mI;um^cod{46WX^p1<6J?T7!VbaPIcrCoBx$_oy z362g{%3DKEzSqe|=+tT%OaCF33NmATEhPbk;6>qGatW5IV9#1(tM>(=6X`p65R2OV zl_OlT$r_)YdWC+(TuraOVrfQI-wG>7r6|U4G;+Vm+EOg*IP%QFv)n(*ii}OY zN_jH!pl@ORWoI|@&dq{sP8q(moIh-eMPBX@5HjA5=m!W=SMNo6KbsPL8J%`YNYVRPuS#QH5!gprSZK%bA)T20= zVEW*FC}l8rMg%Kv=>0$cr>~e+`4&7OSTb{@teeJ{n@i7{PDbdP<4B%a-)4QvEHmp} zFji=uzA2ZivHv$u*&)sTe7jPExD|SkULT}~VC*=hJq=4r8weM2iz92wtWURy{@=a| z!*%wovd}Vq&9jH|d{gS1V_AAr#aqx1=+9QavBn|MGlXV=(3n>?vmB-8fQt@06xNst zWv`JO-i$EC`33dh!BH#}7Mj08&-^R&!9r%Qmvjm*p&H5y#p$RU>nSUC!+1*zqgmP_GnvXK9OvN0;_0&HmnFsj<{@i+ zgEhWIQCVve4!afEl3qx!G)a8ZFYE}-?~+Gw6jRg`7A1I#Ja5?ug`TbX*P8p)JZ%La zyJR_nxn9ij@-IDzhW+*tg^RgWsMH^M@<&x)BUHbeW72#JNn!>~RZl3;JHlU063{}*^NsFsq&Ys7xZ6;AY|q*h#>@L5^fJSz`$ z3%)K`u$8xksqm75!CC$+orJtnGa~$+b;qyOyE62@62e<%!K_E9CTdMX+E{eGw_Ur+ znwHqs*p~4+lp7&J2S*jRX@HlEc#1YM;>(R1^9plQT)3Q!8d)Q@@M|)1da)S_X+26y zs^B59GDktVQ=>Aqw?-!UDv2fQ#)MOSMk%2-3X{fz_!oPKBXD!91HjiE#GPVF9{Y~D(g^ojD#!8yx_Ymf5HB&pn*P>78uROULq;#=UXQnL3%+x$#Ph+)hlam z0v8A2a=&A3Y%jXTgWSpYzU0Ua6U78Ld)e>Db5E6Z2-WCb<+@T)K3syD%&kwp$r?=ssZmWYa8{!d}o8WiPq zhR?gp!U~HbZiE0T8YD;^MWQA#N(>SeZ+HP?KoOMSB?!u*fcgQ`?!g(~Lj*Bc17VI-TicCN{N~={?iuc@E1i$fWzto;~0BuIHTha=ve$ z_c{7Uf%nGQemTO#$DeulEW_{QS*}l#ys)28m-jI8eh&-hocS6o%?-S{@p~n`_l_T) z{EOP(Mo&;es3p;auS5B5jNgALS@M>C7>99SKJz7?DiCa{&8zN|G=B14cmUoc&1U?6*X_yyoAx<#gefGlXA`2*2#_Z=x{ElZ08$5<+>h5XuEWD6d3+ zt`f?6HDZ9HLMz`TwDMG;mGgyG&JkKU7f9s|u(>r@@`PE=2WEK--cm6JI7evZ=|U?P z3ava-XysYLDc>W6a*+_qvy&ow4H)E$sOhtsznSs9VIh%2LL!HSM4lida;A{TlhBT@ zqs8CA5(NgCEK^qzt=$g_k&E)oX0Kp5mAVUTl#K~59; zI3VahA}>v(a;_Fjw|!TaB3YYO8j6w#L>VzZOxuc|!Z92<@9K zwC@bm@Ar_H6vo(Mc?vzq2o!oe&X$~x6571E8tu)4RApj2(KKbk&z})~{t#+C8FA74 zm+S%5n(qb~JAM#R$1{L}FT^rcxcCC0;>*QyFhP=gQrLLPZ!tIlh>Zu_7)y&}%SpC& z3mfkwPc6d6J7MEnBwJ3h)hgNABiY)UgpJ>qgpJ=XIeXGoU}+RWKEo}?(k?EARN>?+ zpbsl>4~#)?lPnGhEl)0lY8R9I^+^5(B!7dFzw<)N4@mO5g_iFTTE1KI*CYAsmi(QS z{5>uC>l0djrKIo~q2(W!EcQzl&*2^$(eC7P*bdEX!hMp@Aq{*FyKskOb;w0K?LnSQ z4m-r;a6ecR_M?PR>>a2<8?=?N>|Hpz9p#K@Kcx5#{>D&3=7*(Xepmu+KZ+9aKYU93 z5A(qiaSSD7fw)&J5OWmuam1Z)eJCd*#C<~VpOogD5_-Qy=zS;j{x0c^lg_k=JEBOM z^Mo{KuQX@Bdj*RVhCg2z{x)Iwd!#vo(wrV?PPa6tM;QL7^yirLr%(FRFZ~&i{`5}11uSZo-}#fI^S*f1&; z1+YSF7*%4!cvNf{HDbfqC^n2uV#C<1NP#V4!>AP-MxEF&wu%koF|lE6!=np4k)jD6 zvY^dJo-zF$w!ju4&&d7`d(f63&-nfhtFo2IGs-_^>#PR(jkXc26q_(Ft`k2-lhs)> z@?^;fiX|gmEE!p1$(SsbjJw2=akp49^2CxcO)MGH#gZ{YEE$Dj$(SjYjC;hAF)ndu07E8t&v1F{ZUV9C9c*U+DdV>5I z>lFvlsmP*dt_jB`*&xX=!tFTbKLT zr@N82)OZ?u!XmqynYOfd9I$Mkwstn}wp^dK?c39Ai+$S8W0wx6hYxgGWxLXj&X#st z?b8_d*)W{$Yj3sMm``J63#>jCPs^TE&%(M%)WzYE(`W3(zvX8INaWsD(r%=+;ro6#HJlfo z7p@F%4RfAao-vHtT?2#6aXVp8Lkh`k)Mw8?-uvAxyJ*kar|miW3?#M;(*Gv(^^^IM z#hxJ2*~I6UrgSWu|dWhQ=ciNn`+eFdf@1Sb?o`hkqUH z4re=<9xO#EXA<@~mh)X$1HL@(F14YTZ?;qmzGM!I;#x&G+d_;is?c+__7L`tx(Mpe zSj`A(&N-DMsB;iH5kYN(xK0H13_|-Ns3GUBkDzWr*tH01#Td&7&d+&feKg3-=+*M*|&kv5?CuF2%Q!T9W-?usZA;2M@{)y@kcuW6-R)^=6x^zo0V)3HRq>>-nc1 z_AB+qAYof^o}N#c6J&|~7&WK{gW3)K))?@ruG)TrbR9H`Z!Fjo)!6Fq%3!(EVNWmvI_!8U zo+r!k)VKs!H&`a4_P`<;tdYSI8LW`O0vW82!Sa}u;hX_kHK*rKzVD5nITbdTSEHqj zw?Py>;CixW)bV_#bb3p`{S(LU)$w(s%HCDk=hbo;7C~jQaK5u^YLxm zkYw7>>$EcC^?QSCPy7l2c-$grz&3l_>aD@H+YZ=^oz?`Y{eR<#J9rn>23}7n>FNIi DB}TqP literal 0 HcmV?d00001 diff --git a/views/index.css b/views/index.css new file mode 100644 index 0000000..914ddcb --- /dev/null +++ b/views/index.css @@ -0,0 +1,299 @@ +@import url("https://fonts.googleapis.com/css?family=Poppins"); +@import url("https://fonts.googleapis.com/css?family=Questrial"); + +@font-face { + font-family: "Circular"; + src: url("./font/Circular.otf"); +} + +body { + margin: 0%; + padding: 0%; + width: 100vw; + max-width: 100vw; + overflow-x: hidden; + align-items: center; + font-family: "Poppins", sans-serif; + background: rgb(250, 250, 250) !important; + will-change: auto; +} + +header { + width: 90vw; + padding: 4vh 5vw; + font-weight: bold; + background: rgb(255, 255, 255); + font-size: 32px; +} + +header b { + font-family: "Circular", sans-serif; +} + +header a { + font-size: 16px; + margin: 1.8vh 0px; + margin-left: 4vw; + color: #000; + text-decoration: none; + transition: 0.4s ease-in-out; +} + +header a:hover { + color: #bebebe; +} + +form { + width: 90vw; + padding: 2vh 5vw; +} + +form .button { + margin: 2vh 0px; +} + +.input { + margin: 1.5vh 0px !important; +} + +.label { + display: inline-block !important; + margin-right: 25px; + font-weight: bold; +} + +button { + transition: 0.4s ease-in-out !important; +} + +button:hover { + color: #fff; + background: #000 !important; +} + +.-size-small { + margin-right: 1vw !important; +} + +#top_image { + width: 100vw; + height: 50vh; + position: absolute; + top: 14vh; + left: 0; + background: linear-gradient(0deg, rgb(250, 250, 250), rgb(200, 200, 200)); + background-size: cover !important; + background-repeat: no-repeat !important; + z-index: 1; + text-align: right; +} + +#top_image i { + font-size: 20px; + position: absolute; + z-index: 5; + top: 4vh; + right: 5vw; + padding: 15px 15px; + background: #ffffff; + color: rgb(0, 0, 0); + border-radius: 50%; +} + +#top_image i:hover { + cursor: pointer; +} + +#profile_blog { + width: 60vw; + margin: 0px 20vw; + margin-top: 42vh !important; + text-align: left; + z-index: 1; + transition: 0.4s ease-in-out; + z-index: 2; + position: relative; +} + +#profile_img_blog { + border-radius: 50%; + width: 90px; + height: 90px; + background-size: cover !important; + background-repeat: no-repeat; +} + +#username_blog { + font-size: 18px; + color: #000; + font-family: "Poppins", sans-serif; + font-weight: bold; + padding-left: 0px; +} + +#username_blog span { + font-size: 24px; + font-family: "Questrial", sans-serif !important; +} + +#username_blog b { + font-size: 12px; + font-family: "Poppins", sans-serif; + font-weight: bold; +} + +#blog-display { + width: 60vw; + margin: 3vh 20vw; + text-align: left; + z-index: 1; + transition: 0.4s ease-in-out; + z-index: 2; + position: relative; +} + +#blog_title { + font-size: 50px; + color: #000; + font-weight: bold; + font-family: "Questrial", sans-serif; + background: transparent; + border: 0px; + width: 100%; + resize: none; + height: auto; + overflow-y: hidden; +} + +#blog_sub_title { + font-size: 36px; + color: rgb(100, 100, 100); + font-weight: bold; + font-family: "Questrial", sans-serif; + background: transparent; + border: 0px; + width: 100%; + resize: none; + height: auto; + overflow-y: hidden; +} + +#blog_sub_title::placeholder { + color: rgb(100, 100, 100); +} + +#blog-display h2 { + color: var(--blog-gray-color); +} + +#blog-display { + padding: 1vh 0px; + font-family: "Questrial", sans-serif; +} + +.div_for_buttons { + margin-top: 5vh; +} + +.para { + font-size: 17px; + line-height: 25px; + word-spacing: 1.2px; + margin: 5vh 0px; + background: transparent; + border: 0px; + width: 100%; + font-family: "Questrial", sans-serif; + resize: none; + height: auto; + overflow-y: hidden; +} + +.para span { + padding: 2px 4px; + background: #000; + color: #fff !important; +} + +#blog { + margin-top: 2vh; +} + +#blog img { + width: 100%; + margin: 2vh 0px; + border-radius: 5px; + border: 1px solid rgb(0, 0, 0, 0.08); +} + +.remove { + margin-bottom: 2vh 0px; + font-weight: bold; + transition: 0.4s ease-in-out; + font-size: 16px; +} + +.remove i { + font-size: 14px; + margin-right: 3px; +} + +.remove:hover { + cursor: pointer; + color: rgb(255, 70, 70); +} + +@media (max-width: 800px) { + #blog-display { + width: 90vw; + margin: 0px 5vw; + text-align: left; + margin-top: 0vh; + z-index: 1; + } + + #profile_blog { + width: 90vw; + margin: 0px 5vw; + } + + #profile_img_blog { + width: 70px; + height: 70px; + } + + #blog img { + margin: 1vh 0px !important; + } + + #blog p { + margin: 2vh 0px; + } +} + +::selection { + color: #fff; + background: #000; +} + +::-webkit-scrollbar { + width: 5px; + height: 5px; +} + +::-webkit-scrollbar-track { + background: #fff; +} + +::-webkit-scrollbar-thumb { + background: #000; +} + +input, +textarea:focus { + outline: none; +} + +::placeholder { + color: #000; +} \ No newline at end of file diff --git a/views/index.ejs b/views/index.ejs new file mode 100644 index 0000000..8c46305 --- /dev/null +++ b/views/index.ejs @@ -0,0 +1,145 @@ + + + + + + + Gitfolio UI + + + + + + +
+ gitfolio + New Blog + Update + Home +
+
+

Build or Edit Portfolio

+
+ +

Sort By :

+ + + + + + + + + + +

Order By :

+ + +

+ + + + +

+ +
+ + + + diff --git a/views/index.js b/views/index.js new file mode 100644 index 0000000..efb9dc2 --- /dev/null +++ b/views/index.js @@ -0,0 +1,7 @@ +document.querySelector("#socials").addEventListener("change", event => { + if (event.target.checked) { + document.querySelector("#input_for_socials").style.display = "block"; + } else { + document.querySelector("#input_for_socials").style.display = "none"; + } +}); From 5d6fb31047c60fe2c360597fa4c58dde5b135d5e Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 12 Aug 2019 09:40:26 +0530 Subject: [PATCH 046/163] Delete blog.js --- blog.js | 68 --------------------------------------------------------- 1 file changed, 68 deletions(-) delete mode 100644 blog.js diff --git a/blog.js b/blog.js deleted file mode 100644 index 6b02e0d..0000000 --- a/blog.js +++ /dev/null @@ -1,68 +0,0 @@ -const fs = require('fs'); -const jsdom = require('jsdom').JSDOM, -options = { - resources: "usable" -}; -const {getBlog, outDir} = require('./utils'); - -function createBlog(title, subtitle, pagetitle, folder) { - // Checks to make sure this directory actually exists - // and creates it if it doesn't - if (!fs.existsSync(`${outDir}/blog/`)){ - fs.mkdirSync(`${outDir}/blog/`, { recursive: true }, err => {}); - } - - if (!fs.existsSync(`${outDir}/blog/${folder}`)){ - fs.mkdirSync(`${outDir}/blog/${folder}`, { recursive: true }); - } - fs.copyFile(`${__dirname}/assets/blog/blogTemplate.html`, `${outDir}/blog/${folder}/index.html`, (err) => { - if (err) throw err; - jsdom.fromFile(`${outDir}/blog/${folder}/index.html`, options).then(function (dom) { - let window = dom.window, document = window.document; - var style = document.createElement("link"); - style.setAttribute("rel","stylesheet") - style.setAttribute("href","../../index.css"); - document.getElementsByTagName("head")[0].appendChild(style); - - document.getElementsByTagName("title")[0].textContent = pagetitle; - document.getElementById("blog_title").textContent = title; - document.getElementById("blog_sub_title").textContent = subtitle; - - fs.writeFile(`${outDir}/blog/${folder}/index.html`, ''+window.document.documentElement.outerHTML, async function (error){ - if (error) throw error; - var blog_data = { - "url_title": folder, - "title": title, - "sub_title": subtitle, - "top_image": "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450", - "visible": true } - const old_blogs = await getBlog(); - old_blogs.push(blog_data); - fs.writeFile(`${outDir}/blog.json`, JSON.stringify(old_blogs, null, ' '), function(err){ - if (err) throw err; - console.log('Blog Created Successfully in "blog" folder.'); - }); - }); - }).catch(function(error){ - console.log(error); - }); - }); -} - -function blogCommand(title, program) { - /* Check if build has been executed before blog this will prevent it from giving "link : index.css" error */ - if (!fs.existsSync(`${outDir}/index.html`) || !fs.existsSync(`${outDir}/index.css`)){ - return console.log("You need to run build command before using blog one"); - } - if (!program.pagetitle) { - program.pagetitle = title; - } - if (!program.folder) { - program.folder = title; - } - createBlog(title, program.subtitle, program.pagetitle, program.folder); -} - -module.exports = { - blogCommand -}; From 312ef4bc6d962d01a567a1718a9ecfb7eeac18a9 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 12 Aug 2019 09:45:10 +0530 Subject: [PATCH 047/163] Add files via upload --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 436fbb5..1805a38 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,8 @@ Themes are specified using the `--theme [theme-name]` flag when running the `bui - `light` - `dark` - > TODO: Add more themes + +> TODO: Add more themes For example, the following command will build the website with the dark theme @@ -94,12 +95,12 @@ $ gitfolio build --background https://images.unsplash.com/photo-15572 You could also add in your custom CSS inside `index.css` to give it a more personal feel. -### Add Twitter, LinkedIn and Medium links on your profile +#### Add Social Media links on your profile -Twitter, LinkedIn and Medium Links to your profile while building +Twitter, LinkedIn, Medium & Dribbble links to your profile while building ```sh -gitfolio build --twitter --linkedin --medium +gitfolio build --twitter --linkedin --medium --dribbble ``` ### Let's Publish @@ -156,6 +157,6 @@ Blog's default JSON Format 🙌 [@imfunnieee](https://twitter.com/imfunnieee) -## License +### License ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) From c58073275421abf36a7cb5643094ce93eb9b49c0 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 12 Aug 2019 09:46:08 +0530 Subject: [PATCH 048/163] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1805a38..b10edda 100644 --- a/README.md +++ b/README.md @@ -153,10 +153,10 @@ Blog's default JSON Format } ``` -### Follow me on twitter for more updates +# Follow me on twitter for more updates 🙌 [@imfunnieee](https://twitter.com/imfunnieee) -### License +# License ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) From 44a7c4d8e9eb41a2102cba7c3b2368ea1c966171 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 12 Aug 2019 09:46:51 +0530 Subject: [PATCH 049/163] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index b10edda..38f416d 100644 --- a/README.md +++ b/README.md @@ -153,9 +153,7 @@ Blog's default JSON Format } ``` -# Follow me on twitter for more updates - -🙌 [@imfunnieee](https://twitter.com/imfunnieee) +# Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) # License From 663e4fe104e1b25ab5baedd2e263812cd6043133 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 12 Aug 2019 09:48:09 +0530 Subject: [PATCH 050/163] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 38f416d..1553755 100644 --- a/README.md +++ b/README.md @@ -153,8 +153,8 @@ Blog's default JSON Format } ``` -# Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) +## Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) -# License +## License ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) From 03cba16e97e53c3d74e652b385e41bcc0df6714f Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 12 Aug 2019 09:48:47 +0530 Subject: [PATCH 051/163] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1553755..9a28bfb 100644 --- a/README.md +++ b/README.md @@ -153,8 +153,8 @@ Blog's default JSON Format } ``` -## Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) +### Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) -## License +# License ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) From 7f8f627565ee56de14a086c0810d392f932977c7 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 12 Aug 2019 11:16:06 +0530 Subject: [PATCH 052/163] update 0.1.5 -added UI -fixed bugs -fixed css issues -creating a blog is now easier than ever --- README.md | 2 +- bin/gitfolio.js | 2 +- package-lock.json | 2 +- package.json | 4 +- ui.js | 4 +- views/blog.ejs | 5 +- views/css/font/Circular.otf | Bin 0 -> 74500 bytes views/css/index.css | 299 ++++++++++++++++++++++++++++++++++++ views/index.ejs | 12 +- 9 files changed, 318 insertions(+), 12 deletions(-) create mode 100644 views/css/font/Circular.otf create mode 100644 views/css/index.css diff --git a/README.md b/README.md index 9a28bfb..38f416d 100644 --- a/README.md +++ b/README.md @@ -153,7 +153,7 @@ Blog's default JSON Format } ``` -### Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) +# Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) # License diff --git a/bin/gitfolio.js b/bin/gitfolio.js index 7654b14..a094dfc 100644 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -1,4 +1,4 @@ -#! /usr/bin/env node +#! /usr/bin/env node /* Argument parser */ const program = require("commander"); diff --git a/package-lock.json b/package-lock.json index 8af795c..665a0e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "gitfolio", - "version": "0.1.4", + "version": "0.1.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 33b8d0c..6322006 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "gitfolio", - "version": "0.1.4", - "description": "a portfolio website for everyone to showcase your work", + "version": "0.1.5", + "description": "a portfolio website for everyone to showcase their work", "main": "build.js", "bin": "bin/gitfolio.js", "scripts": { diff --git a/ui.js b/ui.js index 84bf151..6a181ed 100644 --- a/ui.js +++ b/ui.js @@ -6,7 +6,7 @@ const { populateCSS, populateConfig } = require("./build"); const { updateCommand } = require("./update"); const app = express(); app.set("view engine", "ejs"); -app.use(express.static("views")); +app.use(express.static(__dirname + "/views")); app.set("views", __dirname + "/views"); app.use(express.json({ limit: "50mb" })); app.use(express.urlencoded({ limit: "50mb", extended: true })); @@ -185,7 +185,7 @@ function uiCommand() { 'You need to run build command before accessing blogs
Go Back' ); } - fs.readFile("./dist/config.json", function(err, data) { + fs.readFile(`${outDir}/config.json`, function(err, data) { res.render("blog.ejs", { profile: JSON.parse(data) }); }); }); diff --git a/views/blog.ejs b/views/blog.ejs index 6c168b9..e041e92 100644 --- a/views/blog.ejs +++ b/views/blog.ejs @@ -15,7 +15,7 @@ integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous" /> - + - - + From 163944c9b698209bacf48148ec3ada69ff5e8693 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 12 Aug 2019 11:16:29 +0530 Subject: [PATCH 053/163] Delete index.css --- views/index.css | 299 ------------------------------------------------ 1 file changed, 299 deletions(-) delete mode 100644 views/index.css diff --git a/views/index.css b/views/index.css deleted file mode 100644 index 914ddcb..0000000 --- a/views/index.css +++ /dev/null @@ -1,299 +0,0 @@ -@import url("https://fonts.googleapis.com/css?family=Poppins"); -@import url("https://fonts.googleapis.com/css?family=Questrial"); - -@font-face { - font-family: "Circular"; - src: url("./font/Circular.otf"); -} - -body { - margin: 0%; - padding: 0%; - width: 100vw; - max-width: 100vw; - overflow-x: hidden; - align-items: center; - font-family: "Poppins", sans-serif; - background: rgb(250, 250, 250) !important; - will-change: auto; -} - -header { - width: 90vw; - padding: 4vh 5vw; - font-weight: bold; - background: rgb(255, 255, 255); - font-size: 32px; -} - -header b { - font-family: "Circular", sans-serif; -} - -header a { - font-size: 16px; - margin: 1.8vh 0px; - margin-left: 4vw; - color: #000; - text-decoration: none; - transition: 0.4s ease-in-out; -} - -header a:hover { - color: #bebebe; -} - -form { - width: 90vw; - padding: 2vh 5vw; -} - -form .button { - margin: 2vh 0px; -} - -.input { - margin: 1.5vh 0px !important; -} - -.label { - display: inline-block !important; - margin-right: 25px; - font-weight: bold; -} - -button { - transition: 0.4s ease-in-out !important; -} - -button:hover { - color: #fff; - background: #000 !important; -} - -.-size-small { - margin-right: 1vw !important; -} - -#top_image { - width: 100vw; - height: 50vh; - position: absolute; - top: 14vh; - left: 0; - background: linear-gradient(0deg, rgb(250, 250, 250), rgb(200, 200, 200)); - background-size: cover !important; - background-repeat: no-repeat !important; - z-index: 1; - text-align: right; -} - -#top_image i { - font-size: 20px; - position: absolute; - z-index: 5; - top: 4vh; - right: 5vw; - padding: 15px 15px; - background: #ffffff; - color: rgb(0, 0, 0); - border-radius: 50%; -} - -#top_image i:hover { - cursor: pointer; -} - -#profile_blog { - width: 60vw; - margin: 0px 20vw; - margin-top: 42vh !important; - text-align: left; - z-index: 1; - transition: 0.4s ease-in-out; - z-index: 2; - position: relative; -} - -#profile_img_blog { - border-radius: 50%; - width: 90px; - height: 90px; - background-size: cover !important; - background-repeat: no-repeat; -} - -#username_blog { - font-size: 18px; - color: #000; - font-family: "Poppins", sans-serif; - font-weight: bold; - padding-left: 0px; -} - -#username_blog span { - font-size: 24px; - font-family: "Questrial", sans-serif !important; -} - -#username_blog b { - font-size: 12px; - font-family: "Poppins", sans-serif; - font-weight: bold; -} - -#blog-display { - width: 60vw; - margin: 3vh 20vw; - text-align: left; - z-index: 1; - transition: 0.4s ease-in-out; - z-index: 2; - position: relative; -} - -#blog_title { - font-size: 50px; - color: #000; - font-weight: bold; - font-family: "Questrial", sans-serif; - background: transparent; - border: 0px; - width: 100%; - resize: none; - height: auto; - overflow-y: hidden; -} - -#blog_sub_title { - font-size: 36px; - color: rgb(100, 100, 100); - font-weight: bold; - font-family: "Questrial", sans-serif; - background: transparent; - border: 0px; - width: 100%; - resize: none; - height: auto; - overflow-y: hidden; -} - -#blog_sub_title::placeholder { - color: rgb(100, 100, 100); -} - -#blog-display h2 { - color: var(--blog-gray-color); -} - -#blog-display { - padding: 1vh 0px; - font-family: "Questrial", sans-serif; -} - -.div_for_buttons { - margin-top: 5vh; -} - -.para { - font-size: 17px; - line-height: 25px; - word-spacing: 1.2px; - margin: 5vh 0px; - background: transparent; - border: 0px; - width: 100%; - font-family: "Questrial", sans-serif; - resize: none; - height: auto; - overflow-y: hidden; -} - -.para span { - padding: 2px 4px; - background: #000; - color: #fff !important; -} - -#blog { - margin-top: 2vh; -} - -#blog img { - width: 100%; - margin: 2vh 0px; - border-radius: 5px; - border: 1px solid rgb(0, 0, 0, 0.08); -} - -.remove { - margin-bottom: 2vh 0px; - font-weight: bold; - transition: 0.4s ease-in-out; - font-size: 16px; -} - -.remove i { - font-size: 14px; - margin-right: 3px; -} - -.remove:hover { - cursor: pointer; - color: rgb(255, 70, 70); -} - -@media (max-width: 800px) { - #blog-display { - width: 90vw; - margin: 0px 5vw; - text-align: left; - margin-top: 0vh; - z-index: 1; - } - - #profile_blog { - width: 90vw; - margin: 0px 5vw; - } - - #profile_img_blog { - width: 70px; - height: 70px; - } - - #blog img { - margin: 1vh 0px !important; - } - - #blog p { - margin: 2vh 0px; - } -} - -::selection { - color: #fff; - background: #000; -} - -::-webkit-scrollbar { - width: 5px; - height: 5px; -} - -::-webkit-scrollbar-track { - background: #fff; -} - -::-webkit-scrollbar-thumb { - background: #000; -} - -input, -textarea:focus { - outline: none; -} - -::placeholder { - color: #000; -} \ No newline at end of file From 5eb4e6656769ff8cf7d956655f8d420a727baf30 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 12 Aug 2019 11:16:45 +0530 Subject: [PATCH 054/163] Delete Circular.otf --- views/font/Circular.otf | Bin 74500 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 views/font/Circular.otf diff --git a/views/font/Circular.otf b/views/font/Circular.otf deleted file mode 100644 index c62b210c51fc6b0a7e4022ac9dd54d50cf5942a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74500 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�$ENekd=fCSx(51l~{o+rz#-JDFw1p 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%0D3`R&67{=)GDS8?p!cah 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 DB}TqP From 4ded27c56f11e94509c5ef09edd25411bbdec6c1 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 12 Aug 2019 11:17:01 +0530 Subject: [PATCH 055/163] Delete index.js --- views/index.js | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 views/index.js diff --git a/views/index.js b/views/index.js deleted file mode 100644 index efb9dc2..0000000 --- a/views/index.js +++ /dev/null @@ -1,7 +0,0 @@ -document.querySelector("#socials").addEventListener("change", event => { - if (event.target.checked) { - document.querySelector("#input_for_socials").style.display = "block"; - } else { - document.querySelector("#input_for_socials").style.display = "none"; - } -}); From 39ffee29446cafe6c1b2b58e94129b060280d65d Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Mon, 12 Aug 2019 11:18:24 +0530 Subject: [PATCH 056/163] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 38f416d..ddd3ffe 100644 --- a/README.md +++ b/README.md @@ -153,8 +153,8 @@ Blog's default JSON Format } ``` -# Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) +### Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) -# License +### License ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) From 870758aa69c7f4386975f5fce42e4c9f868c956f Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Tue, 13 Aug 2019 15:24:14 +0530 Subject: [PATCH 057/163] Fixed Issues and added a UI --- CODE_OF_CONDUCT.md | 26 +- README.md | 2 +- api.js | 66 ++++ assets/blog/blog.json | 2 +- assets/blog/blogTemplate.html | 6 +- assets/index.css | 660 +++++++++++++++++----------------- assets/themes/dark.css | 26 +- assets/themes/light.css | 7 +- bin/gitfolio.js | 7 +- build.js | 63 ++-- default/blog.json | 2 +- default/config.json | 20 +- package-lock.json | 38 +- package.json | 6 +- populate.js | 113 ++---- ui.js | 75 ++-- update.js | 35 +- utils.js | 38 +- views/css/index.css | 2 +- 19 files changed, 614 insertions(+), 580 deletions(-) create mode 100644 api.js diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 8b36e4e..4d5e07a 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,22 +14,22 @@ appearance, race, religion, or sexual identity and orientation. Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Trolling, insulting/derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic + address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting ## Our Responsibilities diff --git a/README.md b/README.md index ddd3ffe..681f430 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# Gitfolio [![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20@imfunnieee%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![npm](https://img.shields.io/npm/dm/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) +# Gitfolio [![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20@imfunnieee%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![npm](https://img.shields.io/npm/dm/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) ### personal website + blog for every github user diff --git a/api.js b/api.js new file mode 100644 index 0000000..e7694d7 --- /dev/null +++ b/api.js @@ -0,0 +1,66 @@ +const got = require("got"); + +/** + * The defaults here are the same as the API + * @see https://developer.github.com/v3/repos/#list-user-repositories + * @param {string} username + * @param {Object} opts + * @param {('all' | 'owner' | 'member')[]} [opts.types] + * @param {'created' | 'updated' | 'pushed' | 'full_name' | 'star'} [opts.sort] + * @param {'desc' | 'asc'} [opts.order] + */ +async function getRepos(username, opts = {}) { + let tempRepos; + let page = 1; + let repos = []; + + const sort = opts.sort; + const order = opts.order || (sort === "full_name" ? "asc" : "desc"); + const types = opts.types || []; + let type = "all"; + + if ( + types.includes("all") || + (types.includes("owner") && types.includes("member")) + ) { + type = "all"; + } else if (types.includes("member")) { + type = "member"; + } + + do { + let requestUrl = `https://api.github.com/users/${username}/repos?per_page=100&page=${page++}&type=${type}`; + if (sort && sort !== "star") { + requestUrl += `&sort=${sort}&direction=${order}`; + } + tempRepos = await got(requestUrl); + tempRepos = JSON.parse(tempRepos.body); + repos = repos.concat(tempRepos); + } while (tempRepos.length == 100); + + if (sort == "star") { + repos = repos.sort(function(a, b) { + if (order == "desc") { + return b.stargazers_count - a.stargazers_count; + } else { + return a.stargazers_count - b.stargazers_count; + } + }); + } + + return repos; +} + +/** + * @see https://developer.github.com/v3/users/#get-a-single-user + * @param {string} username + */ +async function getUser(username) { + const res = await got(`https://api.github.com/users/${username}`); + return JSON.parse(res.body); +} + +module.exports = { + getRepos, + getUser +}; diff --git a/assets/blog/blog.json b/assets/blog/blog.json index 0637a08..fe51488 100644 --- a/assets/blog/blog.json +++ b/assets/blog/blog.json @@ -1 +1 @@ -[] \ No newline at end of file +[] diff --git a/assets/blog/blogTemplate.html b/assets/blog/blogTemplate.html index 2dffe48..7a128c7 100644 --- a/assets/blog/blogTemplate.html +++ b/assets/blog/blogTemplate.html @@ -103,9 +103,9 @@ icon.setAttribute("href", user[0].userimg); icon.setAttribute("type", "image/png"); document.getElementsByTagName("head")[0].appendChild(icon); - document.getElementById("profile_img_blog").style.background = `url('${ - user[0].userimg - }') center center`; + document.getElementById( + "profile_img_blog" + ).style.background = `url('${user[0].userimg}') center center`; document.getElementById( "username_blog" ).innerHTML = `") .description( diff --git a/build.js b/build.js index 425cc15..8ec0e6b 100644 --- a/build.js +++ b/build.js @@ -58,54 +58,33 @@ async function populateCSS({ await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); } -async function populateConfig( - sort, - order, - includeFork, - twitter, - linkedin, - medium, - dribbble -) { +async function populateConfig(opts) { const data = await getConfig(); - data[0].sort = sort; - data[0].order = order; - data[0].includeFork = includeFork; - data[0].twitter = twitter; // added twitter - data[0].linkedin = linkedin; // added linkedin - data[0].medium = medium; // added medium - data[0].dribbble = dribbble; // added dribbble + Object.assign(data[0], opts); await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); } async function buildCommand(username, program) { await populateCSS(program); - let sort = program.sort ? program.sort : "created"; - let order = program.order ? program.order : "asc"; - let includeFork = program.fork ? true : false; - let twitter = program.twitter ? program.twitter : null; - let linkedin = program.linkedin ? program.linkedin : null; - let medium = program.medium ? program.medium : null; - let dribbble = program.dribbble ? program.dribbble : null; - await populateConfig( - sort, - order, - includeFork, - twitter, - linkedin, - medium, - dribbble - ); - updateHTML( - ("%s", username), - sort, - order, - includeFork, - twitter, - linkedin, - medium, - dribbble - ); + let types; + if (!program.include || !program.include.length) { + types = ["all"]; + } else { + types = program.include; + } + const opts = { + sort: program.sort, + order: program.order, + includeFork: program.fork ? true : false, + types, + twitter: program.twitter, + linkedin: program.linkedin, + medium: program.medium, + dribbble: program.dribbble + }; + + await populateConfig(opts); + updateHTML(("%s", username), opts); } module.exports = { diff --git a/default/blog.json b/default/blog.json index 0637a08..fe51488 100644 --- a/default/blog.json +++ b/default/blog.json @@ -1 +1 @@ -[] \ No newline at end of file +[] diff --git a/default/config.json b/default/config.json index ea89d87..d59dbe5 100644 --- a/default/config.json +++ b/default/config.json @@ -1,11 +1,11 @@ [ - { - "username": null, - "name": null, - "userimg": null, - "sort": null, - "order": null, - "includeFork": null, - "theme": "light.css" - } -] \ No newline at end of file + { + "username": null, + "name": null, + "userimg": null, + "sort": null, + "order": null, + "includeFork": null, + "theme": "light.css" + } +] diff --git a/package-lock.json b/package-lock.json index 665a0e4..128c3ae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -152,17 +152,32 @@ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cacheable-request": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.0.0.tgz", - "integrity": "sha512-2N7AmszH/WPPpl5Z3XMw1HAP+8d+xugnKQAeKvxFZ/04dbT/CAznqwbl+7eSr3HkwdepNwtb2yx3CAMQWvG01Q==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "requires": { "clone-response": "^1.0.2", - "get-stream": "^4.0.0", + "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", "keyv": "^3.0.0", - "lowercase-keys": "^1.0.1", - "normalize-url": "^3.1.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } } }, "caseless": { @@ -773,9 +788,9 @@ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" }, "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.3.0.tgz", + "integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==" }, "nwsapi": { "version": "2.1.4", @@ -872,6 +887,11 @@ "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, + "prettier": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", + "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==" + }, "proxy-addr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", diff --git a/package.json b/package.json index 6322006..5042b96 100644 --- a/package.json +++ b/package.json @@ -7,10 +7,11 @@ "scripts": { "cli": "OUT_DIR='./dist' node bin/gitfolio.js", "clean": "rm -rf ./dist/*", + "prettier": "prettier --write \"./**/*.{js,jsx,json,html,css,md}\"", "test": "echo \"Error: no test specified\" && exit 1" }, "author": { - "name": "imfunny and community", + "name": "@imfunniee and community", "email": "imfunny@wybemf.com", "url": "https://imfunniee.github.io" }, @@ -41,6 +42,7 @@ "got": "^9.6.0", "handlebars": "^4.1.2", "jsdom": "^15.1.0", - "ncp": "^2.0.0" + "ncp": "^2.0.0", + "prettier": "^1.18.2" } } diff --git a/populate.js b/populate.js index f44967c..9132717 100644 --- a/populate.js +++ b/populate.js @@ -1,11 +1,11 @@ const fs = require("fs"); -const got = require("got"); const emoji = require("github-emoji"); const jsdom = require("jsdom").JSDOM, options = { resources: "usable" }; const { getConfig, outDir } = require("./utils"); +const { getRepos, getUser } = require("./api"); function convertToEmoji(text) { if (text == null) return; @@ -35,16 +35,8 @@ function convertToEmoji(text) { } } -module.exports.updateHTML = ( - username, - sort, - order, - includeFork, - twitter, - linkedin, - medium, - dribbble -) => { +module.exports.updateHTML = (username, opts) => { + const { includeFork, twitter, linkedin, medium, dribbble } = opts; //add data to assets/index.html jsdom .fromFile(`${__dirname}/assets/index.html`, options) @@ -54,38 +46,19 @@ module.exports.updateHTML = ( (async () => { try { console.log("Building HTML/CSS..."); - var repos = []; - var tempRepos; - var page = 1; - if (sort == "star") { - do { - tempRepos = await got( - `https://api.github.com/users/${username}/repos?per_page=100&page=${page++}` - ); - tempRepos = JSON.parse(tempRepos.body); - repos = repos.concat(tempRepos); - } while (tempRepos.length == 100); - if (order == "desc") { - repos = repos.sort(function(a, b) { - return b.stargazers_count - a.stargazers_count; - }); - } else { - repos = repos.sort(function(a, b) { - return a.stargazers_count - b.stargazers_count; - }); - } - } else { - do { - tempRepos = await got( - `https://api.github.com/users/${username}/repos?sort=${sort}&order=${order}&per_page=100&page=${page++}` - ); - tempRepos = JSON.parse(tempRepos.body); - repos = repos.concat(tempRepos); - } while (tempRepos.length == 100); - } + const repos = await getRepos(username, opts); + for (var i = 0; i < repos.length; i++) { + let element; if (repos[i].fork == false) { - document.getElementById("work_section").innerHTML += ` + element = document.getElementById("work_section"); + } else if (includeFork == true) { + document.getElementById("forks").style.display = "block"; + element = document.getElementById("forks_section"); + } else { + continue; + } + element.innerHTML += `
${repos[i].name}
@@ -102,8 +75,8 @@ module.exports.updateHTML = ( ? "none" : "inline-block" };">  ${ - repos[i].language - } + repos[i].language + }   ${ repos[i].stargazers_count } @@ -113,55 +86,18 @@ module.exports.updateHTML = (
`; - } else { - if (includeFork == true) { - document.getElementById("forks").style.display = "block"; - document.getElementById("forks_section").innerHTML += ` - -
-
${ - repos[i].name - }
-
- ${convertToEmoji( - repos[i].description - )} -
-
-   ${ - repos[i].language - } -   ${ - repos[i].stargazers_count - } -   ${ - repos[i].forks_count - } -
-
-
`; - } - } } - var user = await got(`https://api.github.com/users/${username}`); - user = JSON.parse(user.body); + const user = await getUser(username); document.title = user.login; var icon = document.createElement("link"); icon.setAttribute("rel", "icon"); icon.setAttribute("href", user.avatar_url); icon.setAttribute("type", "image/png"); + document.getElementsByTagName("head")[0].appendChild(icon); - document.getElementById("profile_img").style.background = `url('${ - user.avatar_url - }') center center`; + document.getElementById( + "profile_img" + ).style.background = `url('${user.avatar_url}') center center`; document.getElementById( "username" ).innerHTML = ` - `; - + + `; //add data to config.json const data = await getConfig(); data[0].username = user.login; data[0].name = user.name; data[0].userimg = user.avatar_url; + await fs.writeFile( `${outDir}/config.json`, JSON.stringify(data, null, " "), function(err) { if (err) throw err; - console.log("Config file updated.\n"); + console.log("Config file updated."); } ); await fs.writeFile( diff --git a/ui.js b/ui.js index 6a181ed..70ce5d8 100644 --- a/ui.js +++ b/ui.js @@ -1,6 +1,5 @@ const fs = require("fs"); const express = require("express"); -let bodyParser = require("body-parser"); const { updateHTML } = require("./populate"); const { populateCSS, populateConfig } = require("./build"); const { updateCommand } = require("./update"); @@ -8,8 +7,17 @@ const app = express(); app.set("view engine", "ejs"); app.use(express.static(__dirname + "/views")); app.set("views", __dirname + "/views"); -app.use(express.json({ limit: "50mb" })); -app.use(express.urlencoded({ limit: "50mb", extended: true })); +app.use( + express.json({ + limit: "50mb" + }) +); +app.use( + express.urlencoded({ + limit: "50mb", + extended: true + }) +); const port = 3000; @@ -24,11 +32,19 @@ function createBlog(title, subtitle, folder, topImage, images, content) { // Checks to make sure this directory actually exists // and creates it if it doesn't if (!fs.existsSync(`${outDir}/blog/`)) { - fs.mkdirSync(`${outDir}/blog/`, { recursive: true }, err => {}); + fs.mkdirSync( + `${outDir}/blog/`, + { + recursive: true + }, + err => {} + ); } if (!fs.existsSync(`${outDir}/blog/${folder}`)) { - fs.mkdirSync(`${outDir}/blog/${folder}`, { recursive: true }); + fs.mkdirSync(`${outDir}/blog/${folder}`, { + recursive: true + }); } fs.copyFile( @@ -70,7 +86,9 @@ function createBlog(title, subtitle, folder, topImage, images, content) { item.split("/")[1].split(";")[0] }`, base64Image, - { encoding: "base64" }, + { + encoding: "base64" + }, function(err) { if (err) throw err; } @@ -89,7 +107,9 @@ function createBlog(title, subtitle, folder, topImage, images, content) { topImage.split("/")[1].split(";")[0] }`, base64ImageTop, - { encoding: "base64" }, + { + encoding: "base64" + }, function(err) { if (err) throw err; } @@ -147,6 +167,7 @@ function uiCommand() { let sort = req.body.sort ? req.body.sort : "created"; let order = req.body.order ? req.body.order : "asc"; let includeFork = req.body.fork == "true" ? true : false; + let types = ["owner"]; let twitter = req.body.twitter ? req.body.twitter : null; let linkedin = req.body.linkedin ? req.body.linkedin : null; let medium = req.body.medium ? req.body.medium : null; @@ -155,27 +176,23 @@ function uiCommand() { ? req.body.background : "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80"; let theme = req.body.theme == "on" ? "dark" : "light"; + const opts = { + sort: sort, + order: order, + includeFork: includeFork, + types, + twitter: twitter, + linkedin: linkedin, + medium: medium, + dribbble: dribbble + }; - updateHTML( - username, - sort, - order, - includeFork, - twitter, - linkedin, - medium, - dribbble - ); - populateCSS({ background: background, theme: theme }); - populateConfig( - sort, - order, - includeFork, - twitter, - linkedin, - medium, - dribbble - ); + updateHTML(username, opts); + populateCSS({ + background: background, + theme: theme + }); + populateConfig(opts); res.redirect("/"); }); @@ -186,7 +203,9 @@ function uiCommand() { ); } fs.readFile(`${outDir}/config.json`, function(err, data) { - res.render("blog.ejs", { profile: JSON.parse(data) }); + res.render("blog.ejs", { + profile: JSON.parse(data) + }); }); }); diff --git a/update.js b/update.js index 446338e..a053806 100644 --- a/update.js +++ b/update.js @@ -4,34 +4,23 @@ const { updateHTML } = require("./populate"); async function updateCommand() { const data = await getConfig(); var username = data[0].username; - var sort = data[0].sort; - var order = data[0].order; - var includeFork = data[0].includeFork; - var twitter = data[0].twitter; - var linkedin = data[0].linkedin; - var medium = data[0].medium; - var dribbble = data[0].dribbble; - if ( - username == null || - sort == null || - order == null || - includeFork == null - ) { + if (username == null) { console.log( "username not found in config.json, please run build command before using update" ); return; } - updateHTML( - username, - sort, - order, - includeFork, - twitter, - linkedin, - medium, - dribbble - ); + const opts = { + sort: data[0].sort, + order: data[0].order, + includeFork: data[0].includeFork, + types: data[0].types, + twitter: data[0].twitter, + linkedin: data[0].linkedin, + medium: data[0].medium, + dribbble: data[0].dribbble + }; + updateHTML(username, opts); } module.exports = { diff --git a/utils.js b/utils.js index afa6813..31f19b7 100644 --- a/utils.js +++ b/utils.js @@ -1,10 +1,10 @@ -const path = require('path'); -const bluebird = require('bluebird'); -const fs = bluebird.promisifyAll(require('fs')); +const path = require("path"); +const bluebird = require("bluebird"); +const fs = bluebird.promisifyAll(require("fs")); -const outDir = path.resolve('./dist/' || process.env.OUT_DIR); -const configPath = path.join(outDir, 'config.json'); -const blogPath = path.join(outDir, 'blog.json'); +const outDir = path.resolve("./dist/" || process.env.OUT_DIR); +const configPath = path.join(outDir, "config.json"); +const blogPath = path.join(outDir, "blog.json"); const defaultConfigPath = path.resolve(`${__dirname}/default/config.json`); const defaultBlogPath = path.resolve(`${__dirname}/default/blog.json`); @@ -14,26 +14,26 @@ const defaultBlogPath = path.resolve(`${__dirname}/default/blog.json`); * if not present returns default file contents */ async function getFileWithDefaults(file, defaultFile) { - try { - await fs.accessAsync(file, fs.constants.F_OK); - } catch (err) { - const defaultData = await fs.readFileAsync(defaultFile); - return JSON.parse(defaultData); - } - const data = await fs.readFileAsync(file); - return JSON.parse(data); + try { + await fs.accessAsync(file, fs.constants.F_OK); + } catch (err) { + const defaultData = await fs.readFileAsync(defaultFile); + return JSON.parse(defaultData); + } + const data = await fs.readFileAsync(file); + return JSON.parse(data); } async function getConfig() { - return getFileWithDefaults(configPath, defaultConfigPath); + return getFileWithDefaults(configPath, defaultConfigPath); } async function getBlog() { - return getFileWithDefaults(blogPath, defaultBlogPath); + return getFileWithDefaults(blogPath, defaultBlogPath); } module.exports = { - outDir, - getConfig, - getBlog + outDir, + getConfig, + getBlog }; diff --git a/views/css/index.css b/views/css/index.css index 914ddcb..8b062ad 100644 --- a/views/css/index.css +++ b/views/css/index.css @@ -296,4 +296,4 @@ textarea:focus { ::placeholder { color: #000; -} \ No newline at end of file +} From 5717f17effe64b39c7f0bc476120cb4d7d824312 Mon Sep 17 00:00:00 2001 From: imfunny <36105478+imfunniee@users.noreply.github.com> Date: Tue, 13 Aug 2019 15:24:57 +0530 Subject: [PATCH 058/163] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 681f430..e60f705 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ -# Gitfolio [![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20@imfunnieee%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![npm](https://img.shields.io/npm/dm/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) +# Gitfolio +[![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20@imfunnieee%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![npm](https://img.shields.io/npm/dm/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) ### personal website + blog for every github user From 0e90c885d12b7294ef051fb8b4324ae10d813fab Mon Sep 17 00:00:00 2001 From: Linda_pp Date: Mon, 30 Sep 2019 19:17:18 +0900 Subject: [PATCH 059/163] remove host workaround for emoji URLs since github-emoji v1.1.1 fixed it (#94) --- package.json | 2 +- populate.js | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 5042b96..e1b831b 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "commander": "^2.20.0", "ejs": "^2.6.2", "express": "^4.17.0", - "github-emoji": "^1.1.0", + "github-emoji": "^1.1.1", "got": "^9.6.0", "handlebars": "^4.1.2", "jsdom": "^15.1.0", diff --git a/populate.js b/populate.js index 9132717..262a46b 100644 --- a/populate.js +++ b/populate.js @@ -18,14 +18,9 @@ function convertToEmoji(text) { }); for (i = 0; i < str.length; i++) { if (emoji.URLS[str[i]] != undefined) { - var output = emoji.of(str[i]); - var emojiImage = output.url.replace( - "assets-cdn.github", - "github.githubassets" - ); text = text.replace( `:${str[i]}:`, - `` + `` ); } } From 1de7fd23effcfb99fba69e164d4e7bf5de594ec6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vitor=20=22Pliavi=22=20Silv=C3=A9rio?= Date: Sat, 16 Nov 2019 23:27:32 -0300 Subject: [PATCH 060/163] Setting line endings to unix-style (#95) * Add gitattributes settings to LF * TY @Pliavi * Converting all CRLF to LF --- .gitattributes | 5 + CODE_OF_CONDUCT.md | 152 +- LICENSE | 1348 ++++++++--------- README.md | 322 ++-- api.js | 132 +- assets/blog/blogTemplate.html | 250 ++-- assets/index.css | 1094 +++++++------- assets/index.html | 242 +-- assets/themes/dark.css | 98 +- assets/themes/light.css | 24 +- bin/gitfolio.js | 120 +- build.js | 188 +-- default/config.json | 22 +- package-lock.json | 2596 ++++++++++++++++----------------- package.json | 96 +- populate.js | 344 ++--- run.js | 44 +- ui.js | 482 +++--- update.js | 56 +- utils.js | 78 +- views/blog.ejs | 518 +++---- views/css/font/Circular.otf | Bin 74500 -> 74498 bytes views/css/index.css | 598 ++++---- views/index.ejs | 306 ++-- 24 files changed, 4560 insertions(+), 4555 deletions(-) create mode 100644 .gitattributes mode change 100644 => 100755 bin/gitfolio.js diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..89deaff --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +# Set the default behavior, in case people don't have core.autocrlf set +* text=auto + +# Require Unix line endings +* text eol=lf \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 4d5e07a..7d65aaf 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,76 +1,76 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -In the interest of fostering an open and welcoming environment, we as -contributors and maintainers pledge to making participation in our project and -our community a harassment-free experience for everyone, regardless of age, body -size, disability, ethnicity, sex characteristics, gender identity and expression, -level of experience, education, socio-economic status, nationality, personal -appearance, race, religion, or sexual identity and orientation. - -## Our Standards - -Examples of behavior that contributes to creating a positive environment -include: - -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members - -Examples of unacceptable behavior by participants include: - -- The use of sexualized language or imagery and unwelcome sexual attention or - advances -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or electronic - address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable -behavior and are expected to take appropriate and fair corrective action in -response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or -reject comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to this Code of Conduct, or to ban temporarily or -permanently any contributor for other behaviors that they deem inappropriate, -threatening, offensive, or harmful. - -## Scope - -This Code of Conduct applies both within project spaces and in public spaces -when an individual is representing the project or its community. Examples of -representing a project or community include using an official project e-mail -address, posting via an official social media account, or acting as an appointed -representative at an online or offline event. Representation of a project may be -further defined and clarified by project maintainers. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at imfunny@wybemf.com. All -complaints will be reviewed and investigated and will result in a response that -is deemed necessary and appropriate to the circumstances. The project team is -obligated to maintain confidentiality with regard to the reporter of an incident. -Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good -faith may face temporary or permanent repercussions as determined by other -members of the project's leadership. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic + address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at imfunny@wybemf.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/LICENSE b/LICENSE index 3877ae0..f288702 100644 --- a/LICENSE +++ b/LICENSE @@ -1,674 +1,674 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md index e60f705..a3c377f 100644 --- a/README.md +++ b/README.md @@ -1,161 +1,161 @@ - - -# Gitfolio -[![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20@imfunnieee%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![npm](https://img.shields.io/npm/dm/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) - -### personal website + blog for every github user - -Gitfolio will help you get started with a portfolio website where you could showcase your work + a blog that will help you spread your ideas into real world. - -Check out this [live demo](https://imfunniee.github.io/gitfolio/) to see gitfolio in action. - -# Getting Started - -### Let's Install - -Install gitfolio - -```sh -npm i gitfolio -g -``` - -### Let's Build - -Using the UI - -```sh -$ gitfolio ui -``` - -> Tip: You can use ui to create new blogs and for updating your folio too. - -or - -```sh -gitfolio build -``` - -`` is your username on github. This will build your website using your GitHub username and put it in the `/dist` folder. - -To run your website use `run` command, Default port is 3000 - -```sh -gitfolio run -p [port] -``` - -🎉 Congrats, you just made yourself a personal website! - -### Let's Customize - -#### Forks - -To include forks on your personal website just provide `-f` or `--fork` argument while building - -```sh -$ gitfolio build -f -``` - -#### Sorting Repos - -To sort repos provide `--sort [sortBy]` argument while building. Where `[sortBy]` can be `star`, `created`, `updated`, `pushed`,`full_name`. Default: `created` - -```sh -$ gitfolio build --sort star -``` - -#### Ordering Repos - -To order the sorted repos provide `--order [orderBy]` argument while building. Where `[orderBy]` can be `asc` or `desc`. Default: `asc` - -```sh -$ gitfolio build --sort star --order desc -``` - -#### Customize Themes - -Themes are specified using the `--theme [theme-name]` flag when running the `build` command. The available themes are - -- `light` -- `dark` - -> TODO: Add more themes - -For example, the following command will build the website with the dark theme - -```sh -$ gitfolio build --theme dark -``` - -#### Customize background image - -To customize the background image just provide `--background [url]` argument while building - -```sh -$ gitfolio build --background https://images.unsplash.com/photo-1557277770-baf0ca74f908?w=1634 -``` - -You could also add in your custom CSS inside `index.css` to give it a more personal feel. - -#### Add Social Media links on your profile - -Twitter, LinkedIn, Medium & Dribbble links to your profile while building - -```sh -gitfolio build --twitter --linkedin --medium --dribbble -``` - -### Let's Publish - -Head over to GitHub and create a new repository named `username.github.io`, where username is your username. Push the files inside`/dist` folder to repo you just created. - -Go To `username.github.io` your site should be up!! - -### Updating - -To update your info, simply run - -```sh -$ gitfolio update -``` - -or use the `Update` options in gitfolio's UI - -This will update your info and your repository info. - -To Update background or theme you need to run `build` command again. - -### Add a Blog - -To add your first blog use the UI. - -```sh -$ gitfolio ui -``` - -This will open up a UI page and you can click on `New Blog` to create a new blog. Once you are done writing your blog you can hit the `Create Blog`. - -This will create a blog inside `./dist/blog` folder. - -Look for success or error in your terminal. - -This also adds content to `blog.json` file. This file helps in showcasing your blogs on your personal website as [cards](https://imfunniee.github.io/gitfolio/#blog_section). You could customize the JSON object that corresponds your current blog. - -Blog Demo? [here](https://imfunniee.github.io/gitfolio/blog/my-first-post/) - -Blog's default JSON Format - -``` -{ - "url_title": "my-first-blog", // the title you provide while creating a new blog, this appears in url - "title": "Lorem ipsum dolor sit amet", // main title of blog - "sub_title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", // sub-title of blog - "top_image": "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450", // main image of blog - "visible": true // don't worry about this -} -``` - -### Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) - -### License - -![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) + + +# Gitfolio +[![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20@imfunnieee%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![npm](https://img.shields.io/npm/dm/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) + +### personal website + blog for every github user + +Gitfolio will help you get started with a portfolio website where you could showcase your work + a blog that will help you spread your ideas into real world. + +Check out this [live demo](https://imfunniee.github.io/gitfolio/) to see gitfolio in action. + +# Getting Started + +### Let's Install + +Install gitfolio + +```sh +npm i gitfolio -g +``` + +### Let's Build + +Using the UI + +```sh +$ gitfolio ui +``` + +> Tip: You can use ui to create new blogs and for updating your folio too. + +or + +```sh +gitfolio build +``` + +`` is your username on github. This will build your website using your GitHub username and put it in the `/dist` folder. + +To run your website use `run` command, Default port is 3000 + +```sh +gitfolio run -p [port] +``` + +🎉 Congrats, you just made yourself a personal website! + +### Let's Customize + +#### Forks + +To include forks on your personal website just provide `-f` or `--fork` argument while building + +```sh +$ gitfolio build -f +``` + +#### Sorting Repos + +To sort repos provide `--sort [sortBy]` argument while building. Where `[sortBy]` can be `star`, `created`, `updated`, `pushed`,`full_name`. Default: `created` + +```sh +$ gitfolio build --sort star +``` + +#### Ordering Repos + +To order the sorted repos provide `--order [orderBy]` argument while building. Where `[orderBy]` can be `asc` or `desc`. Default: `asc` + +```sh +$ gitfolio build --sort star --order desc +``` + +#### Customize Themes + +Themes are specified using the `--theme [theme-name]` flag when running the `build` command. The available themes are + +- `light` +- `dark` + +> TODO: Add more themes + +For example, the following command will build the website with the dark theme + +```sh +$ gitfolio build --theme dark +``` + +#### Customize background image + +To customize the background image just provide `--background [url]` argument while building + +```sh +$ gitfolio build --background https://images.unsplash.com/photo-1557277770-baf0ca74f908?w=1634 +``` + +You could also add in your custom CSS inside `index.css` to give it a more personal feel. + +#### Add Social Media links on your profile + +Twitter, LinkedIn, Medium & Dribbble links to your profile while building + +```sh +gitfolio build --twitter --linkedin --medium --dribbble +``` + +### Let's Publish + +Head over to GitHub and create a new repository named `username.github.io`, where username is your username. Push the files inside`/dist` folder to repo you just created. + +Go To `username.github.io` your site should be up!! + +### Updating + +To update your info, simply run + +```sh +$ gitfolio update +``` + +or use the `Update` options in gitfolio's UI + +This will update your info and your repository info. + +To Update background or theme you need to run `build` command again. + +### Add a Blog + +To add your first blog use the UI. + +```sh +$ gitfolio ui +``` + +This will open up a UI page and you can click on `New Blog` to create a new blog. Once you are done writing your blog you can hit the `Create Blog`. + +This will create a blog inside `./dist/blog` folder. + +Look for success or error in your terminal. + +This also adds content to `blog.json` file. This file helps in showcasing your blogs on your personal website as [cards](https://imfunniee.github.io/gitfolio/#blog_section). You could customize the JSON object that corresponds your current blog. + +Blog Demo? [here](https://imfunniee.github.io/gitfolio/blog/my-first-post/) + +Blog's default JSON Format + +``` +{ + "url_title": "my-first-blog", // the title you provide while creating a new blog, this appears in url + "title": "Lorem ipsum dolor sit amet", // main title of blog + "sub_title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", // sub-title of blog + "top_image": "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450", // main image of blog + "visible": true // don't worry about this +} +``` + +### Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) + +### License + +![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) diff --git a/api.js b/api.js index e7694d7..ebdeff0 100644 --- a/api.js +++ b/api.js @@ -1,66 +1,66 @@ -const got = require("got"); - -/** - * The defaults here are the same as the API - * @see https://developer.github.com/v3/repos/#list-user-repositories - * @param {string} username - * @param {Object} opts - * @param {('all' | 'owner' | 'member')[]} [opts.types] - * @param {'created' | 'updated' | 'pushed' | 'full_name' | 'star'} [opts.sort] - * @param {'desc' | 'asc'} [opts.order] - */ -async function getRepos(username, opts = {}) { - let tempRepos; - let page = 1; - let repos = []; - - const sort = opts.sort; - const order = opts.order || (sort === "full_name" ? "asc" : "desc"); - const types = opts.types || []; - let type = "all"; - - if ( - types.includes("all") || - (types.includes("owner") && types.includes("member")) - ) { - type = "all"; - } else if (types.includes("member")) { - type = "member"; - } - - do { - let requestUrl = `https://api.github.com/users/${username}/repos?per_page=100&page=${page++}&type=${type}`; - if (sort && sort !== "star") { - requestUrl += `&sort=${sort}&direction=${order}`; - } - tempRepos = await got(requestUrl); - tempRepos = JSON.parse(tempRepos.body); - repos = repos.concat(tempRepos); - } while (tempRepos.length == 100); - - if (sort == "star") { - repos = repos.sort(function(a, b) { - if (order == "desc") { - return b.stargazers_count - a.stargazers_count; - } else { - return a.stargazers_count - b.stargazers_count; - } - }); - } - - return repos; -} - -/** - * @see https://developer.github.com/v3/users/#get-a-single-user - * @param {string} username - */ -async function getUser(username) { - const res = await got(`https://api.github.com/users/${username}`); - return JSON.parse(res.body); -} - -module.exports = { - getRepos, - getUser -}; +const got = require("got"); + +/** + * The defaults here are the same as the API + * @see https://developer.github.com/v3/repos/#list-user-repositories + * @param {string} username + * @param {Object} opts + * @param {('all' | 'owner' | 'member')[]} [opts.types] + * @param {'created' | 'updated' | 'pushed' | 'full_name' | 'star'} [opts.sort] + * @param {'desc' | 'asc'} [opts.order] + */ +async function getRepos(username, opts = {}) { + let tempRepos; + let page = 1; + let repos = []; + + const sort = opts.sort; + const order = opts.order || (sort === "full_name" ? "asc" : "desc"); + const types = opts.types || []; + let type = "all"; + + if ( + types.includes("all") || + (types.includes("owner") && types.includes("member")) + ) { + type = "all"; + } else if (types.includes("member")) { + type = "member"; + } + + do { + let requestUrl = `https://api.github.com/users/${username}/repos?per_page=100&page=${page++}&type=${type}`; + if (sort && sort !== "star") { + requestUrl += `&sort=${sort}&direction=${order}`; + } + tempRepos = await got(requestUrl); + tempRepos = JSON.parse(tempRepos.body); + repos = repos.concat(tempRepos); + } while (tempRepos.length == 100); + + if (sort == "star") { + repos = repos.sort(function(a, b) { + if (order == "desc") { + return b.stargazers_count - a.stargazers_count; + } else { + return a.stargazers_count - b.stargazers_count; + } + }); + } + + return repos; +} + +/** + * @see https://developer.github.com/v3/users/#get-a-single-user + * @param {string} username + */ +async function getUser(username) { + const res = await got(`https://api.github.com/users/${username}`); + return JSON.parse(res.body); +} + +module.exports = { + getRepos, + getUser +}; diff --git a/assets/blog/blogTemplate.html b/assets/blog/blogTemplate.html index 7a128c7..588b6b5 100644 --- a/assets/blog/blogTemplate.html +++ b/assets/blog/blogTemplate.html @@ -1,125 +1,125 @@ - - - - - - - Lorem ipsum dolor - - - - - -
-
-
- -
-
- - - - - - - -
-
-
-
-

Lorem ipsum dolor

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. -

-
- -

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut placerat - pretium sem, ac maximus dui sodales a. Nunc aliquet hendrerit turpis - ac egestas. Phasellus volutpat tristique maximus. - Pellentesque feugiat eget nisi et dignissim. Nam nibh erat, - sollicitudin non facilisis nec, scelerisque nec ipsum. Sed accumsan - velit condimentum, pharetra felis vitae, commodo tellus. - Mauris consequat luctus orci. -

-

- Vivamus pharetra lobortis dui non tincidunt. Mauris vitae nisi - vestibulum, mollis magna a, maximus mi. Suspendisse dictum eget augue - quis sodales. Quisque rutrum ligula nec dapibus tincidunt. - Proin hendrerit massa a tellus vestibulum, a hendrerit ipsum - iaculis. Suspendisse potenti. - Praesent eget erat blandit, finibus sapien vitae, ullamcorper erat. - Integer blandit, felis at ullamcorper maximus, odio lectus pretium - mauris, vel consequat lectus quam eu risus. Pellentesque gravida nec - diam eget vehicula. -

- -

- Donec hendrerit turpis non libero eleifend dignissim. Mauris non - tempor metus, et tristique massa. Integer consequat justo quam, vitae - aliquam arcu vestibulum at. Donec porttitor quam in tempus convallis. - Praesent feugiat eget eros vitae accumsan. Duis ultricies odio quis - nisl volutpat, consectetur imperdiet sem laoreet. Quisque maximus - semper ligula at tincidunt. Pellentesque accumsan varius vehicula. -

-
-
- - - - + + + + + + + Lorem ipsum dolor + + + + + +
+
+
+ +
+
+ + + + + + + +
+
+
+
+

Lorem ipsum dolor

+

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. +

+
+ +

+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut placerat + pretium sem, ac maximus dui sodales a. Nunc aliquet hendrerit turpis + ac egestas. Phasellus volutpat tristique maximus. + Pellentesque feugiat eget nisi et dignissim. Nam nibh erat, + sollicitudin non facilisis nec, scelerisque nec ipsum. Sed accumsan + velit condimentum, pharetra felis vitae, commodo tellus. + Mauris consequat luctus orci. +

+

+ Vivamus pharetra lobortis dui non tincidunt. Mauris vitae nisi + vestibulum, mollis magna a, maximus mi. Suspendisse dictum eget augue + quis sodales. Quisque rutrum ligula nec dapibus tincidunt. + Proin hendrerit massa a tellus vestibulum, a hendrerit ipsum + iaculis. Suspendisse potenti. + Praesent eget erat blandit, finibus sapien vitae, ullamcorper erat. + Integer blandit, felis at ullamcorper maximus, odio lectus pretium + mauris, vel consequat lectus quam eu risus. Pellentesque gravida nec + diam eget vehicula. +

+ +

+ Donec hendrerit turpis non libero eleifend dignissim. Mauris non + tempor metus, et tristique massa. Integer consequat justo quam, vitae + aliquam arcu vestibulum at. Donec porttitor quam in tempus convallis. + Praesent feugiat eget eros vitae accumsan. Duis ultricies odio quis + nisl volutpat, consectetur imperdiet sem laoreet. Quisque maximus + semper ligula at tincidunt. Pellentesque accumsan varius vehicula. +

+
+
+ + + + diff --git a/assets/index.css b/assets/index.css index d1a1516..159c756 100644 --- a/assets/index.css +++ b/assets/index.css @@ -1,547 +1,547 @@ -@import url("https://fonts.googleapis.com/css?family=Poppins"); -@import url("https://fonts.googleapis.com/css?family=Questrial"); - -body { - margin: 0%; - padding: 0%; - width: 100vw; - background: var(--bg-color); - color: var(--text-color); - max-width: 100vw; - overflow-x: hidden; - align-items: center; - font-family: "Poppins", sans-serif; -} - -#loading { - width: 100vw; - height: 100vh; - position: fixed; - background: var(--bg-color); - z-index: 999; - display: flex; - justify-content: center; - flex-direction: column; - align-items: center; - top: 0; - bottom: 0; - left: 0; - right: 0; -} - -#spinner { - animation: rotate 0.5s infinite linear; - width: 50px; - height: 50px; - border: 2px solid var(--bg-color); - border-bottom: 2px solid var(--text-color); - border-radius: 50%; - margin: 0; -} - -@keyframes rotate { - 0% { - transform: rotate(0deg); - } - - 100% { - transform: rotate(360deg); - } -} - -#profile { - width: 24vw; - padding: 4vh 3vw; - height: 92vh; - display: flex; - flex-direction: column; - justify-content: center; - text-align: left; - background: var(--background-image) center center; - background-size: cover !important; - background-repeat: no-repeat; - position: fixed; - color: #fff !important; -} - -#display { - width: 64vw; - padding: 4vh 3vw; - height: 92vh; - display: inline-block; - padding-left: 33vw; -} - -#display h1 { - font-size: 50px; - color: var(--text-color); - font-weight: bold; - font-family: "Questrial", sans-serif; -} - -.emoji { - width: 18px; - height: 18px; -} - -#profile_img_blog { - border-radius: 50%; - width: 90px; - height: 90px; - background-size: cover !important; - background-repeat: no-repeat; -} - -#username_blog { - font-size: 18px; - color: var(--text-color); - font-family: "Poppins", sans-serif; - font-weight: bold; -} - -#username_blog span { - font-size: 24px; - font-family: "Questrial", sans-serif !important; -} - -#username_blog b { - font-size: 12px; - font-family: "Poppins", sans-serif; - font-weight: bold; -} - -#blog-display { - width: 60vw; - margin: 0px 20vw; - text-align: left; - margin-top: 3vh; - z-index: 1; -} - -#profile_blog { - width: 60vw; - margin: 0px 20vw; - margin-top: 34vh; - text-align: left; - z-index: 1; -} - -#background_overlay { - width: 100vw; - height: 55vh; - position: absolute; - z-index: -1; - top: 0; - left: 0; -} - -#background { - width: 100vw; - height: 55vh; - background-size: cover !important; - background-repeat: no-repeat !important; - position: absolute; - z-index: -2; - top: 0; - left: 0; -} - -#blog-display h1 { - font-size: 50px; - color: var(--text-color); - font-weight: bold; - font-family: "Questrial", sans-serif; -} - -#blog-display h2 { - color: var(--blog-gray-color); -} - -#blog-display { - padding: 1vh 0px; - font-family: "Questrial", sans-serif; -} - -#blog p { - font-size: 17px; - line-height: 25px; - word-spacing: 1.2px; - margin: 5vh 0px; -} - -#blog p span { - padding: 2px 4px; - background: var(--text-color); - color: var(--bg-color) !important; -} - -#blog img { - width: 100%; - margin: 2vh 0px; - border-radius: 5px; - border: 1px solid rgb(0, 0, 0, 0.08); -} - -#header { - width: 63vw; - text-align: right; - padding: 3vh 0px; - position: absolute; -} - -#header a { - color: var(--text-color); - text-decoration: none; - margin-left: 4vw; - font-weight: bold; -} - -#footer_blog { - width: 90vw; - padding: 8vh 5vw; - text-align: center; -} - -#footer_blog a { - color: var(--text-color) !important; - text-decoration: none; - font-family: "Questrial", sans-serif; - font-weight: bold; -} - -#footer { - width: 100%; - padding: 8vh 0px; - text-align: center; -} - -#footer a { - color: var(--text-color) !important; - text-decoration: none; - font-family: "Questrial", sans-serif; - font-weight: bold; -} - -#profile_img { - width: 180px; - height: 180px; - min-width: 180px; - min-height: 180px; - max-width: 180px; - max-height: 180px; - border-radius: 5px; - background-size: cover !important; - background-repeat: no-repeat !important; -} - -#profile div { - font-weight: bold; - margin: 1.5vh 0px; -} - -#username { - font-size: 18px; - font-weight: bold; -} - -#username span { - font-size: 24px; -} - -#userbio { - font-size: 26px; - font-family: "Questrial", sans-serif; - width: 100%; -} - -#about { - font-size: 18px; - font-family: "Questrial", sans-serif; -} - -#about a, -#username a { - color: #fff !important; - text-decoration: none; - font-weight: bold; -} - -#about a:hover, -#username a:hover { - text-decoration: underline; -} - -#about span { - margin: 1vh 0px; - display: block; -} - -#about span i { - font-size: 16px; -} - -#work { - margin: 2vh 0px; - padding: 4vh 0px !important; -} - -#forks { - margin: 2vh 0px; - padding: 4vh 0px !important; -} - -.projects { - margin-left: -15px; - /* align section w/ heading above */ -} - -.projects a { - /* 30px is the gutter size in magic grid */ - width: calc(49% - 30px); - /* 49% avoids a weird single column on some wide screens */ - display: flex; - text-decoration: none; -} - -.projects section { - width: 100%; - padding: 2.5vh 5%; - margin: 1vh 0px; - display: inline-block; - border-radius: 5px; - color: var(--text-color); - border: 1px solid rgb(0, 0, 0, 0.08); - box-shadow: 0px 0px 0px rgb(0, 0, 0, 0); - transition: 0.4s ease-in-out; - transform: scale(1); -} - -.projects section:hover { - cursor: pointer; - border: 1px solid rgb(0, 0, 0, 0); - box-shadow: 0px 15px 35px rgb(0, 0, 0, 0.06); - transform: scale(1.03); -} - -.section_title { - font-size: 24px; - font-weight: bold; - margin: 1vh 0px; - padding: 0px 1px; - word-wrap: break-word; -} - -.about_section { - font-size: 18px; - font-family: "Questrial", sans-serif; - margin: 2vh 0px; - font-weight: bold; - word-wrap: break-word; -} - -.bottom_section { - margin: 1vh 0px; - font-size: 14px; - word-wrap: break-word; -} - -.bottom_section span { - margin-right: 20px; - font-weight: bold; -} - -.bottom_section span i { - font-size: 15px; -} - -.socials { - color: #fff; - text-decoration: none; - margin: 3vh 0px !important; -} - -.socials span { - display: inline-block !important; - margin-right: 2vw !important; - font-weight: normal !important; -} - -.socials span a { - font-weight: normal !important; -} - -#blog_section { - margin: 2vh 0px; - padding: 2vh 0px !important; -} - -#blogs { - columns: 2; -} - -#blog_title { - font-size: 50px; -} - -#blog_sub_title { - font-size: 36px; - margin-top: -2vh; -} - -#blogs section { - width: 100%; - display: inline-block; - border-radius: 5px; - color: var(--text-color); - border: 1px solid rgb(0, 0, 0, 0.04); - box-shadow: 0px 0px 0px rgb(0, 0, 0, 0); - transition: 0.4s ease-in-out; - transform: scale(1); - padding: 0px; - margin: 2vh 0px; -} - -#blogs section img { - width: 100%; - border-radius: 5px 5px 0px 0px; -} - -.blog_container { - padding: 2.5vh 5%; -} - -#blogs section:hover { - cursor: pointer; - border: 1px solid rgb(0, 0, 0, 0); - box-shadow: 0px 15px 35px rgb(0, 0, 0, 0.06); - transform: scale(1.03); -} - -.go_back { - position: absolute; - color: var(--text-color); - font-size: 26px; - margin-left: 5vw; - margin-top: 4vh; -} - -::selection { - color: var(--bg-color); - background: var(--text-color); -} - -@media (max-width: 800px) { - #profile { - width: 90vw; - padding: 4vh 5vw; - height: 60vh; - text-align: center; - position: relative; - } - - #display { - width: 90vw; - padding: 4vh 5vw; - height: auto; - display: inline-block; - padding-left: 5vw; - } - - #profile_img { - width: 120px; - height: 120px; - min-width: 120px; - min-height: 120px; - max-width: 120px; - max-height: 120px; - margin: 0px auto !important; - } - - #work { - margin: 0px; - } - - .projects { - margin-left: 0; - /* remove neg margin to align w/ header */ - } - - .projects a { - width: 100%; - } - - .projects section { - width: 88%; - } - - #blogs { - columns: 1; - } - - #blogs section { - width: 98%; - } - - #blog_section { - margin: 0px; - } - - #blog-display { - width: 90vw; - margin: 0px 5vw; - text-align: left; - margin-top: 0vh; - z-index: 1; - } - - #blog_title { - font-size: 32px !important; - } - - #blog_sub_title { - font-size: 24px; - margin-top: -1vh; - } - - #profile_blog { - width: 90vw; - margin: 0px 5vw; - margin-top: 36vh; - text-align: left; - z-index: 1; - } - - #profile_img_blog { - width: 65px; - height: 65px; - } - - .go_back { - position: relative; - color: var(--text-color); - font-size: 26px; - margin-left: 5vw; - top: 5vh; - } - - #blog img { - margin: 1vh 0px !important; - } - - #blog p { - margin: 2vh 0px; - } -} - -::-webkit-scrollbar { - width: 5px; - height: 5px; -} - -::-webkit-scrollbar-track { - background: var(--bg-color); -} - -::-webkit-scrollbar-thumb { - background: var(--text-color); -} +@import url("https://fonts.googleapis.com/css?family=Poppins"); +@import url("https://fonts.googleapis.com/css?family=Questrial"); + +body { + margin: 0%; + padding: 0%; + width: 100vw; + background: var(--bg-color); + color: var(--text-color); + max-width: 100vw; + overflow-x: hidden; + align-items: center; + font-family: "Poppins", sans-serif; +} + +#loading { + width: 100vw; + height: 100vh; + position: fixed; + background: var(--bg-color); + z-index: 999; + display: flex; + justify-content: center; + flex-direction: column; + align-items: center; + top: 0; + bottom: 0; + left: 0; + right: 0; +} + +#spinner { + animation: rotate 0.5s infinite linear; + width: 50px; + height: 50px; + border: 2px solid var(--bg-color); + border-bottom: 2px solid var(--text-color); + border-radius: 50%; + margin: 0; +} + +@keyframes rotate { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} + +#profile { + width: 24vw; + padding: 4vh 3vw; + height: 92vh; + display: flex; + flex-direction: column; + justify-content: center; + text-align: left; + background: var(--background-image) center center; + background-size: cover !important; + background-repeat: no-repeat; + position: fixed; + color: #fff !important; +} + +#display { + width: 64vw; + padding: 4vh 3vw; + height: 92vh; + display: inline-block; + padding-left: 33vw; +} + +#display h1 { + font-size: 50px; + color: var(--text-color); + font-weight: bold; + font-family: "Questrial", sans-serif; +} + +.emoji { + width: 18px; + height: 18px; +} + +#profile_img_blog { + border-radius: 50%; + width: 90px; + height: 90px; + background-size: cover !important; + background-repeat: no-repeat; +} + +#username_blog { + font-size: 18px; + color: var(--text-color); + font-family: "Poppins", sans-serif; + font-weight: bold; +} + +#username_blog span { + font-size: 24px; + font-family: "Questrial", sans-serif !important; +} + +#username_blog b { + font-size: 12px; + font-family: "Poppins", sans-serif; + font-weight: bold; +} + +#blog-display { + width: 60vw; + margin: 0px 20vw; + text-align: left; + margin-top: 3vh; + z-index: 1; +} + +#profile_blog { + width: 60vw; + margin: 0px 20vw; + margin-top: 34vh; + text-align: left; + z-index: 1; +} + +#background_overlay { + width: 100vw; + height: 55vh; + position: absolute; + z-index: -1; + top: 0; + left: 0; +} + +#background { + width: 100vw; + height: 55vh; + background-size: cover !important; + background-repeat: no-repeat !important; + position: absolute; + z-index: -2; + top: 0; + left: 0; +} + +#blog-display h1 { + font-size: 50px; + color: var(--text-color); + font-weight: bold; + font-family: "Questrial", sans-serif; +} + +#blog-display h2 { + color: var(--blog-gray-color); +} + +#blog-display { + padding: 1vh 0px; + font-family: "Questrial", sans-serif; +} + +#blog p { + font-size: 17px; + line-height: 25px; + word-spacing: 1.2px; + margin: 5vh 0px; +} + +#blog p span { + padding: 2px 4px; + background: var(--text-color); + color: var(--bg-color) !important; +} + +#blog img { + width: 100%; + margin: 2vh 0px; + border-radius: 5px; + border: 1px solid rgb(0, 0, 0, 0.08); +} + +#header { + width: 63vw; + text-align: right; + padding: 3vh 0px; + position: absolute; +} + +#header a { + color: var(--text-color); + text-decoration: none; + margin-left: 4vw; + font-weight: bold; +} + +#footer_blog { + width: 90vw; + padding: 8vh 5vw; + text-align: center; +} + +#footer_blog a { + color: var(--text-color) !important; + text-decoration: none; + font-family: "Questrial", sans-serif; + font-weight: bold; +} + +#footer { + width: 100%; + padding: 8vh 0px; + text-align: center; +} + +#footer a { + color: var(--text-color) !important; + text-decoration: none; + font-family: "Questrial", sans-serif; + font-weight: bold; +} + +#profile_img { + width: 180px; + height: 180px; + min-width: 180px; + min-height: 180px; + max-width: 180px; + max-height: 180px; + border-radius: 5px; + background-size: cover !important; + background-repeat: no-repeat !important; +} + +#profile div { + font-weight: bold; + margin: 1.5vh 0px; +} + +#username { + font-size: 18px; + font-weight: bold; +} + +#username span { + font-size: 24px; +} + +#userbio { + font-size: 26px; + font-family: "Questrial", sans-serif; + width: 100%; +} + +#about { + font-size: 18px; + font-family: "Questrial", sans-serif; +} + +#about a, +#username a { + color: #fff !important; + text-decoration: none; + font-weight: bold; +} + +#about a:hover, +#username a:hover { + text-decoration: underline; +} + +#about span { + margin: 1vh 0px; + display: block; +} + +#about span i { + font-size: 16px; +} + +#work { + margin: 2vh 0px; + padding: 4vh 0px !important; +} + +#forks { + margin: 2vh 0px; + padding: 4vh 0px !important; +} + +.projects { + margin-left: -15px; + /* align section w/ heading above */ +} + +.projects a { + /* 30px is the gutter size in magic grid */ + width: calc(49% - 30px); + /* 49% avoids a weird single column on some wide screens */ + display: flex; + text-decoration: none; +} + +.projects section { + width: 100%; + padding: 2.5vh 5%; + margin: 1vh 0px; + display: inline-block; + border-radius: 5px; + color: var(--text-color); + border: 1px solid rgb(0, 0, 0, 0.08); + box-shadow: 0px 0px 0px rgb(0, 0, 0, 0); + transition: 0.4s ease-in-out; + transform: scale(1); +} + +.projects section:hover { + cursor: pointer; + border: 1px solid rgb(0, 0, 0, 0); + box-shadow: 0px 15px 35px rgb(0, 0, 0, 0.06); + transform: scale(1.03); +} + +.section_title { + font-size: 24px; + font-weight: bold; + margin: 1vh 0px; + padding: 0px 1px; + word-wrap: break-word; +} + +.about_section { + font-size: 18px; + font-family: "Questrial", sans-serif; + margin: 2vh 0px; + font-weight: bold; + word-wrap: break-word; +} + +.bottom_section { + margin: 1vh 0px; + font-size: 14px; + word-wrap: break-word; +} + +.bottom_section span { + margin-right: 20px; + font-weight: bold; +} + +.bottom_section span i { + font-size: 15px; +} + +.socials { + color: #fff; + text-decoration: none; + margin: 3vh 0px !important; +} + +.socials span { + display: inline-block !important; + margin-right: 2vw !important; + font-weight: normal !important; +} + +.socials span a { + font-weight: normal !important; +} + +#blog_section { + margin: 2vh 0px; + padding: 2vh 0px !important; +} + +#blogs { + columns: 2; +} + +#blog_title { + font-size: 50px; +} + +#blog_sub_title { + font-size: 36px; + margin-top: -2vh; +} + +#blogs section { + width: 100%; + display: inline-block; + border-radius: 5px; + color: var(--text-color); + border: 1px solid rgb(0, 0, 0, 0.04); + box-shadow: 0px 0px 0px rgb(0, 0, 0, 0); + transition: 0.4s ease-in-out; + transform: scale(1); + padding: 0px; + margin: 2vh 0px; +} + +#blogs section img { + width: 100%; + border-radius: 5px 5px 0px 0px; +} + +.blog_container { + padding: 2.5vh 5%; +} + +#blogs section:hover { + cursor: pointer; + border: 1px solid rgb(0, 0, 0, 0); + box-shadow: 0px 15px 35px rgb(0, 0, 0, 0.06); + transform: scale(1.03); +} + +.go_back { + position: absolute; + color: var(--text-color); + font-size: 26px; + margin-left: 5vw; + margin-top: 4vh; +} + +::selection { + color: var(--bg-color); + background: var(--text-color); +} + +@media (max-width: 800px) { + #profile { + width: 90vw; + padding: 4vh 5vw; + height: 60vh; + text-align: center; + position: relative; + } + + #display { + width: 90vw; + padding: 4vh 5vw; + height: auto; + display: inline-block; + padding-left: 5vw; + } + + #profile_img { + width: 120px; + height: 120px; + min-width: 120px; + min-height: 120px; + max-width: 120px; + max-height: 120px; + margin: 0px auto !important; + } + + #work { + margin: 0px; + } + + .projects { + margin-left: 0; + /* remove neg margin to align w/ header */ + } + + .projects a { + width: 100%; + } + + .projects section { + width: 88%; + } + + #blogs { + columns: 1; + } + + #blogs section { + width: 98%; + } + + #blog_section { + margin: 0px; + } + + #blog-display { + width: 90vw; + margin: 0px 5vw; + text-align: left; + margin-top: 0vh; + z-index: 1; + } + + #blog_title { + font-size: 32px !important; + } + + #blog_sub_title { + font-size: 24px; + margin-top: -1vh; + } + + #profile_blog { + width: 90vw; + margin: 0px 5vw; + margin-top: 36vh; + text-align: left; + z-index: 1; + } + + #profile_img_blog { + width: 65px; + height: 65px; + } + + .go_back { + position: relative; + color: var(--text-color); + font-size: 26px; + margin-left: 5vw; + top: 5vh; + } + + #blog img { + margin: 1vh 0px !important; + } + + #blog p { + margin: 2vh 0px; + } +} + +::-webkit-scrollbar { + width: 5px; + height: 5px; +} + +::-webkit-scrollbar-track { + background: var(--bg-color); +} + +::-webkit-scrollbar-thumb { + background: var(--text-color); +} diff --git a/assets/index.html b/assets/index.html index 6a39dd3..088ceff 100644 --- a/assets/index.html +++ b/assets/index.html @@ -1,121 +1,121 @@ - - - - - - - - - - - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-

Work.

-
-
- -
-

Blog.

-
-
- -
- - - - - + + + + + + + + + + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+

Work.

+
+
+ +
+

Blog.

+
+
+ +
+ + + + + diff --git a/assets/themes/dark.css b/assets/themes/dark.css index 210339b..683c484 100644 --- a/assets/themes/dark.css +++ b/assets/themes/dark.css @@ -1,49 +1,49 @@ -:root { - --bg-color: rgb(10, 10, 10); - --text-color: #fff; - --blog-gray-color: rgb(180, 180, 180); - --background-image: linear-gradient( - 90deg, - rgba(10, 10, 10, 0.3), - rgb(10, 10, 10, 1) - ), - url("{{{background}}}"); - --background-background: linear-gradient( - 0deg, - rgba(10, 10, 10, 1), - rgba(10, 10, 10, 0.6) - ), - url("{{{background}}}") center center fixed; - --height: 50vh; -} - -#display h1 { - -webkit-background-clip: text; - background-clip: text; - -webkit-text-fill-color: #fff; -} - -#blog-display h1 { - -webkit-background-clip: text; - background-clip: text; - -webkit-text-fill-color: #fff; -} - -.projects section { - background: rgb(20, 20, 20); -} - -#blog_section section { - background: rgb(20, 20, 20); -} - -@media (max-width: 800px) { - :root { - --background-image: linear-gradient( - 0deg, - rgba(10, 10, 10, 1), - rgba(10, 10, 10, 0) - ), - url("{{{background}}}") !important; - } -} +:root { + --bg-color: rgb(10, 10, 10); + --text-color: #fff; + --blog-gray-color: rgb(180, 180, 180); + --background-image: linear-gradient( + 90deg, + rgba(10, 10, 10, 0.3), + rgb(10, 10, 10, 1) + ), + url("{{{background}}}"); + --background-background: linear-gradient( + 0deg, + rgba(10, 10, 10, 1), + rgba(10, 10, 10, 0.6) + ), + url("{{{background}}}") center center fixed; + --height: 50vh; +} + +#display h1 { + -webkit-background-clip: text; + background-clip: text; + -webkit-text-fill-color: #fff; +} + +#blog-display h1 { + -webkit-background-clip: text; + background-clip: text; + -webkit-text-fill-color: #fff; +} + +.projects section { + background: rgb(20, 20, 20); +} + +#blog_section section { + background: rgb(20, 20, 20); +} + +@media (max-width: 800px) { + :root { + --background-image: linear-gradient( + 0deg, + rgba(10, 10, 10, 1), + rgba(10, 10, 10, 0) + ), + url("{{{background}}}") !important; + } +} diff --git a/assets/themes/light.css b/assets/themes/light.css index e61e841..bf968ee 100644 --- a/assets/themes/light.css +++ b/assets/themes/light.css @@ -1,12 +1,12 @@ -:root { - --bg-color: #fff; - --text-color: rgb(10, 10, 10); - --blog-gray-color: rgb(80, 80, 80); - --background-image: linear-gradient( - 90deg, - rgba(10, 10, 10, 0.4), - rgb(10, 10, 10, 0.4) - ), - url("{{{background}}}"); - --background-background: #fff; -} +:root { + --bg-color: #fff; + --text-color: rgb(10, 10, 10); + --blog-gray-color: rgb(80, 80, 80); + --background-image: linear-gradient( + 90deg, + rgba(10, 10, 10, 0.4), + rgb(10, 10, 10, 0.4) + ), + url("{{{background}}}"); + --background-background: #fff; +} diff --git a/bin/gitfolio.js b/bin/gitfolio.js old mode 100644 new mode 100755 index 49ab3f3..dfc0887 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -1,60 +1,60 @@ -#! /usr/bin/env node -/* Argument parser */ -const program = require("commander"); - -process.env.OUT_DIR = process.env.OUT_DIR || process.cwd(); - -const { buildCommand } = require("../build"); -const { updateCommand } = require("../update"); -const { uiCommand } = require("../ui"); -const { runCommand } = require("../run"); -const { version } = require("../package.json"); - -function collect(val, memo) { - memo.push(val); - return memo; -} - -program - .command("build ") - .description( - "Build site with your GitHub username. This will be used to customize your site" - ) - .option("-t, --theme [theme]", "specify a theme to use", "light") - .option("-b, --background [background]", "set the background image") - .option("-f, --fork", "includes forks with repos") - .option("-s, --sort [sort]", "set default sort for repository", "created") - .option("-o, --order [order]", "set default order on sort", "asc") - .option("-w, --twitter [username]", "specify twitter username") - .option("-l, --linkedin [username]", "specify linkedin username") - .option("-m, --medium [username]", "specify medium username") - .option("-d, --dribbble [username]", "specify dribbble username") - .action(buildCommand); - -program - .command("update") - .description("Update user and repository data") - .action(updateCommand); - -program - .command("ui") - .description("Create and Manage blogs with ease") - .action(uiCommand); - -program - .command("run") - .description("Run build files") - .option("-p, --port [port]", "provide a port for localhost, default is 3000") - .action(runCommand); - -program.on("command:*", () => { - console.log("Unknown Command: " + program.args.join(" ")); - program.help(); -}); - -program - .version(version, "-v --version") - .usage(" [options]") - .parse(process.argv); - -if (program.args.length === 0) program.help(); +#! /usr/bin/env node +/* Argument parser */ +const program = require("commander"); + +process.env.OUT_DIR = process.env.OUT_DIR || process.cwd(); + +const { buildCommand } = require("../build"); +const { updateCommand } = require("../update"); +const { uiCommand } = require("../ui"); +const { runCommand } = require("../run"); +const { version } = require("../package.json"); + +function collect(val, memo) { + memo.push(val); + return memo; +} + +program + .command("build ") + .description( + "Build site with your GitHub username. This will be used to customize your site" + ) + .option("-t, --theme [theme]", "specify a theme to use", "light") + .option("-b, --background [background]", "set the background image") + .option("-f, --fork", "includes forks with repos") + .option("-s, --sort [sort]", "set default sort for repository", "created") + .option("-o, --order [order]", "set default order on sort", "asc") + .option("-w, --twitter [username]", "specify twitter username") + .option("-l, --linkedin [username]", "specify linkedin username") + .option("-m, --medium [username]", "specify medium username") + .option("-d, --dribbble [username]", "specify dribbble username") + .action(buildCommand); + +program + .command("update") + .description("Update user and repository data") + .action(updateCommand); + +program + .command("ui") + .description("Create and Manage blogs with ease") + .action(uiCommand); + +program + .command("run") + .description("Run build files") + .option("-p, --port [port]", "provide a port for localhost, default is 3000") + .action(runCommand); + +program.on("command:*", () => { + console.log("Unknown Command: " + program.args.join(" ")); + program.help(); +}); + +program + .version(version, "-v --version") + .usage(" [options]") + .parse(process.argv); + +if (program.args.length === 0) program.help(); diff --git a/build.js b/build.js index 8ec0e6b..b03723c 100644 --- a/build.js +++ b/build.js @@ -1,94 +1,94 @@ -/* Filepath utilities */ -const path = require("path"); -/* Promise library */ -const bluebird = require("bluebird"); -const hbs = require("handlebars"); -/* Creates promise-returning async functions - from callback-passed async functions */ -const fs = bluebird.promisifyAll(require("fs")); -const { updateHTML } = require("./populate"); -const { getConfig, outDir } = require("./utils"); - -const assetDir = path.resolve(`${__dirname}/assets/`); -const config = path.join(outDir, "config.json"); - -/** - * Creates the stylesheet used by the site from a template stylesheet. - * - * Theme styles are added to the new stylesheet depending on command line - * arguments. - */ -async function populateCSS({ - theme = "light", - background = "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80" -} = {}) { - /* Get the theme the user requests. Defaults to 'light' */ - theme = `${theme}.css`; - let template = path.resolve(assetDir, "index.css"); - let stylesheet = path.join(outDir, "index.css"); - - try { - await fs.accessAsync(outDir, fs.constants.F_OK); - } catch (err) { - await fs.mkdirAsync(outDir); - } - /* Copy over the template CSS stylesheet */ - await fs.copyFileAsync(template, stylesheet); - - /* Get an array of every available theme */ - let themes = await fs.readdirAsync(path.join(assetDir, "themes")); - - if (!themes.includes(theme)) { - console.error('Error: Requested theme not found. Defaulting to "light".'); - theme = "light"; - } - /* Read in the theme stylesheet */ - let themeSource = await fs.readFileSync(path.join(assetDir, "themes", theme)); - themeSource = themeSource.toString("utf-8"); - let themeTemplate = hbs.compile(themeSource); - let styles = themeTemplate({ - background: `${background}` - }); - /* Add the user-specified styles to the new stylesheet */ - await fs.appendFileAsync(stylesheet, styles); - - /* Update the config file with the user's theme choice */ - const data = await getConfig(); - data[0].theme = theme; - await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); -} - -async function populateConfig(opts) { - const data = await getConfig(); - Object.assign(data[0], opts); - await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); -} - -async function buildCommand(username, program) { - await populateCSS(program); - let types; - if (!program.include || !program.include.length) { - types = ["all"]; - } else { - types = program.include; - } - const opts = { - sort: program.sort, - order: program.order, - includeFork: program.fork ? true : false, - types, - twitter: program.twitter, - linkedin: program.linkedin, - medium: program.medium, - dribbble: program.dribbble - }; - - await populateConfig(opts); - updateHTML(("%s", username), opts); -} - -module.exports = { - buildCommand, - populateCSS, - populateConfig -}; +/* Filepath utilities */ +const path = require("path"); +/* Promise library */ +const bluebird = require("bluebird"); +const hbs = require("handlebars"); +/* Creates promise-returning async functions + from callback-passed async functions */ +const fs = bluebird.promisifyAll(require("fs")); +const { updateHTML } = require("./populate"); +const { getConfig, outDir } = require("./utils"); + +const assetDir = path.resolve(`${__dirname}/assets/`); +const config = path.join(outDir, "config.json"); + +/** + * Creates the stylesheet used by the site from a template stylesheet. + * + * Theme styles are added to the new stylesheet depending on command line + * arguments. + */ +async function populateCSS({ + theme = "light", + background = "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80" +} = {}) { + /* Get the theme the user requests. Defaults to 'light' */ + theme = `${theme}.css`; + let template = path.resolve(assetDir, "index.css"); + let stylesheet = path.join(outDir, "index.css"); + + try { + await fs.accessAsync(outDir, fs.constants.F_OK); + } catch (err) { + await fs.mkdirAsync(outDir); + } + /* Copy over the template CSS stylesheet */ + await fs.copyFileAsync(template, stylesheet); + + /* Get an array of every available theme */ + let themes = await fs.readdirAsync(path.join(assetDir, "themes")); + + if (!themes.includes(theme)) { + console.error('Error: Requested theme not found. Defaulting to "light".'); + theme = "light"; + } + /* Read in the theme stylesheet */ + let themeSource = await fs.readFileSync(path.join(assetDir, "themes", theme)); + themeSource = themeSource.toString("utf-8"); + let themeTemplate = hbs.compile(themeSource); + let styles = themeTemplate({ + background: `${background}` + }); + /* Add the user-specified styles to the new stylesheet */ + await fs.appendFileAsync(stylesheet, styles); + + /* Update the config file with the user's theme choice */ + const data = await getConfig(); + data[0].theme = theme; + await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); +} + +async function populateConfig(opts) { + const data = await getConfig(); + Object.assign(data[0], opts); + await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); +} + +async function buildCommand(username, program) { + await populateCSS(program); + let types; + if (!program.include || !program.include.length) { + types = ["all"]; + } else { + types = program.include; + } + const opts = { + sort: program.sort, + order: program.order, + includeFork: program.fork ? true : false, + types, + twitter: program.twitter, + linkedin: program.linkedin, + medium: program.medium, + dribbble: program.dribbble + }; + + await populateConfig(opts); + updateHTML(("%s", username), opts); +} + +module.exports = { + buildCommand, + populateCSS, + populateConfig +}; diff --git a/default/config.json b/default/config.json index d59dbe5..2ca4fc7 100644 --- a/default/config.json +++ b/default/config.json @@ -1,11 +1,11 @@ -[ - { - "username": null, - "name": null, - "userimg": null, - "sort": null, - "order": null, - "includeFork": null, - "theme": "light.css" - } -] +[ + { + "username": null, + "name": null, + "userimg": null, + "sort": null, + "order": null, + "includeFork": null, + "theme": "light.css" + } +] diff --git a/package-lock.json b/package-lock.json index 128c3ae..7b825a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,1298 +1,1298 @@ -{ - "name": "gitfolio", - "version": "0.1.5", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" - }, - "acorn-globals": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", - "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", - "requires": { - "acorn": "^6.0.1", - "acorn-walk": "^6.0.1" - } - }, - "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" - }, - "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - }, - "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - }, - "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bluebird": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", - "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "browser-process-hrtime": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", - "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - } - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "cssom": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", - "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==" - }, - "cssstyle": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", - "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", - "requires": { - "cssom": "0.3.x" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", - "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" - } - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "requires": { - "mimic-response": "^1.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "defer-to-connect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", - "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", - "requires": { - "webidl-conversions": "^4.0.2" - } - }, - "duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "ejs": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz", - "integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "requires": { - "once": "^1.4.0" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", - "requires": { - "esprima": "^3.1.3", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", - "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" - }, - "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "express": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.0.tgz", - "integrity": "sha512-1Z7/t3Z5ZnBG252gKUPyItc4xdeaA0X934ca2ewckAsVsw9EG71i++ZHZPYnus8g/s5Bty8IMpSVEuRkmwwPRQ==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - }, - "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" - }, - "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "requires": { - "assert-plus": "^1.0.0" - } - }, - "github-emoji": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.0.tgz", - "integrity": "sha512-FCs0tDDtX/pwkXN6sQE5lUC6B4PIIFC+rv7IZAw8956Mtvo5NQSWHEBJvExl+B8+ahqNVU0W33hMrXSIEFSUvA==" - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", - "requires": { - "neo-async": "^2.6.0", - "optimist": "^0.6.1", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4" - } - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - }, - "har-validator": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", - "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", - "requires": { - "ajv": "^6.5.5", - "har-schema": "^2.0.0" - } - }, - "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", - "requires": { - "whatwg-encoding": "^1.0.1" - } - }, - "http-cache-semantics": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", - "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "jsdom": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.0.tgz", - "integrity": "sha512-QEmc2XIkNfCK3KRfa9ljMJjC4kAGdVgRrs/pCBsQG/QoKz0B42+C58f6TdAmhq/rw494eFCoLHxX6+hWuxb96Q==", - "requires": { - "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", - "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.0", - "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", - "parse5": "5.1.0", - "pn": "^1.1.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "saxes": "^3.1.9", - "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", - "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^6.1.2", - "xml-name-validator": "^3.0.0" - } - }, - "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "requires": { - "json-buffer": "3.0.0" - } - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" - }, - "lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - }, - "minimist": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "ncp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", - "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" - }, - "normalize-url": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.3.0.tgz", - "integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==" - }, - "nwsapi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", - "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - }, - "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, - "prettier": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", - "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==" - }, - "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" - } - }, - "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } - } - } - }, - "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", - "requires": { - "lodash": "^4.17.11" - } - }, - "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", - "requires": { - "request-promise-core": "1.1.2", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - } - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "saxes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", - "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", - "requires": { - "xmlchars": "^1.3.1" - } - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" - }, - "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", - "requires": { - "punycode": "^2.1.0" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "uglify-js": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.13.tgz", - "integrity": "sha512-Lho+IJlquX6sdJgyKSJx/M9y4XbDd3ekPjD8S6HYmT5yVSwDtlSuca2w5hV4g2dIsp0Y/4orbfWxKexodmFv7w==", - "optional": true, - "requires": { - "commander": "~2.20.0", - "source-map": "~0.6.1" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", - "requires": { - "punycode": "^2.1.0" - } - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", - "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", - "requires": { - "browser-process-hrtime": "^0.1.2" - } - }, - "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", - "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", - "xml-name-validator": "^3.0.0" - } - }, - "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" - }, - "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", - "requires": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" - }, - "xmlchars": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", - "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" - } - } -} +{ + "name": "gitfolio", + "version": "0.1.5", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "abab": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", + "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" + }, + "acorn-globals": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", + "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + } + }, + "acorn-walk": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", + "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" + }, + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + }, + "async-limiter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bluebird": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", + "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "browser-process-hrtime": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", + "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", + "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "cssom": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", + "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==" + }, + "cssstyle": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", + "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", + "requires": { + "cssom": "0.3.x" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + }, + "defer-to-connect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", + "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==" + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz", + "integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "end-of-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", + "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "requires": { + "once": "^1.4.0" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "escodegen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", + "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "requires": { + "esprima": "^3.1.3", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", + "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" + }, + "estraverse": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", + "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + }, + "esutils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", + "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "express": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.0.tgz", + "integrity": "sha512-1Z7/t3Z5ZnBG252gKUPyItc4xdeaA0X934ca2ewckAsVsw9EG71i++ZHZPYnus8g/s5Bty8IMpSVEuRkmwwPRQ==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + }, + "fast-deep-equal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", + "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } + }, + "github-emoji": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.0.tgz", + "integrity": "sha512-FCs0tDDtX/pwkXN6sQE5lUC6B4PIIFC+rv7IZAw8956Mtvo5NQSWHEBJvExl+B8+ahqNVU0W33hMrXSIEFSUvA==" + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "handlebars": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", + "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "requires": { + "neo-async": "^2.6.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "http-cache-semantics": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz", + "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", + "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "jsdom": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.0.tgz", + "integrity": "sha512-QEmc2XIkNfCK3KRfa9ljMJjC4kAGdVgRrs/pCBsQG/QoKz0B42+C58f6TdAmhq/rw494eFCoLHxX6+hWuxb96Q==", + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.40.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", + "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" + }, + "mime-types": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", + "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", + "requires": { + "mime-db": "1.40.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimist": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" + }, + "normalize-url": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.3.0.tgz", + "integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==" + }, + "nwsapi": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", + "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" + } + } + }, + "optionator": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", + "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.4", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "wordwrap": "~1.0.0" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "prettier": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", + "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==" + }, + "proxy-addr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", + "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "psl": { + "version": "1.1.31", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", + "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" + }, + "tough-cookie": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", + "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "requires": { + "psl": "^1.1.24", + "punycode": "^1.4.1" + } + } + } + }, + "request-promise-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", + "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "requires": { + "lodash": "^4.17.11" + } + }, + "request-promise-native": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", + "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "requires": { + "request-promise-core": "1.1.2", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "saxes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", + "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", + "requires": { + "xmlchars": "^1.3.1" + } + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" + }, + "symbol-tree": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", + "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "requires": { + "punycode": "^2.1.0" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "uglify-js": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.13.tgz", + "integrity": "sha512-Lho+IJlquX6sdJgyKSJx/M9y4XbDd3ekPjD8S6HYmT5yVSwDtlSuca2w5hV4g2dIsp0Y/4orbfWxKexodmFv7w==", + "optional": true, + "requires": { + "commander": "~2.20.0", + "source-map": "~0.6.1" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "uuid": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "w3c-hr-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", + "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", + "requires": { + "browser-process-hrtime": "^0.1.2" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" + }, + "whatwg-url": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", + "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" + }, + "xmlchars": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", + "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" + } + } +} diff --git a/package.json b/package.json index e1b831b..8f79df5 100644 --- a/package.json +++ b/package.json @@ -1,48 +1,48 @@ -{ - "name": "gitfolio", - "version": "0.1.5", - "description": "a portfolio website for everyone to showcase their work", - "main": "build.js", - "bin": "bin/gitfolio.js", - "scripts": { - "cli": "OUT_DIR='./dist' node bin/gitfolio.js", - "clean": "rm -rf ./dist/*", - "prettier": "prettier --write \"./**/*.{js,jsx,json,html,css,md}\"", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": { - "name": "@imfunniee and community", - "email": "imfunny@wybemf.com", - "url": "https://imfunniee.github.io" - }, - "bugs": "https://github.com/imfunniee/gitfolio/issues", - "homepage": "https://github.com/imfunniee/gitfolio", - "keywords": [ - "personal-website", - "github", - "portfolio", - "portfolio website", - "blog website", - "blog", - "gitfolio", - "git" - ], - "repository": { - "type": "git", - "url": "https://github.com/imfunniee/gitfolio" - }, - "license": "GPL-3.0", - "dependencies": { - "bluebird": "^3.5.4", - "body-parser": "^1.19.0", - "commander": "^2.20.0", - "ejs": "^2.6.2", - "express": "^4.17.0", - "github-emoji": "^1.1.1", - "got": "^9.6.0", - "handlebars": "^4.1.2", - "jsdom": "^15.1.0", - "ncp": "^2.0.0", - "prettier": "^1.18.2" - } -} +{ + "name": "gitfolio", + "version": "0.1.5", + "description": "a portfolio website for everyone to showcase their work", + "main": "build.js", + "bin": "bin/gitfolio.js", + "scripts": { + "cli": "OUT_DIR='./dist' node bin/gitfolio.js", + "clean": "rm -rf ./dist/*", + "prettier": "prettier --write \"./**/*.{js,jsx,json,html,css,md}\"", + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": { + "name": "@imfunniee and community", + "email": "imfunny@wybemf.com", + "url": "https://imfunniee.github.io" + }, + "bugs": "https://github.com/imfunniee/gitfolio/issues", + "homepage": "https://github.com/imfunniee/gitfolio", + "keywords": [ + "personal-website", + "github", + "portfolio", + "portfolio website", + "blog website", + "blog", + "gitfolio", + "git" + ], + "repository": { + "type": "git", + "url": "https://github.com/imfunniee/gitfolio" + }, + "license": "GPL-3.0", + "dependencies": { + "bluebird": "^3.5.4", + "body-parser": "^1.19.0", + "commander": "^2.20.0", + "ejs": "^2.6.2", + "express": "^4.17.0", + "github-emoji": "^1.1.1", + "got": "^9.6.0", + "handlebars": "^4.1.2", + "jsdom": "^15.1.0", + "ncp": "^2.0.0", + "prettier": "^1.18.2" + } +} diff --git a/populate.js b/populate.js index 262a46b..b4fb450 100644 --- a/populate.js +++ b/populate.js @@ -1,172 +1,172 @@ -const fs = require("fs"); -const emoji = require("github-emoji"); -const jsdom = require("jsdom").JSDOM, - options = { - resources: "usable" - }; -const { getConfig, outDir } = require("./utils"); -const { getRepos, getUser } = require("./api"); - -function convertToEmoji(text) { - if (text == null) return; - text = text.toString(); - var pattern = /(?<=:\s*).*?(?=\s*:)/gs; - if (text.match(pattern) != null) { - var str = text.match(pattern); - str = str.filter(function(arr) { - return /\S/.test(arr); - }); - for (i = 0; i < str.length; i++) { - if (emoji.URLS[str[i]] != undefined) { - text = text.replace( - `:${str[i]}:`, - `` - ); - } - } - return text; - } else { - return text; - } -} - -module.exports.updateHTML = (username, opts) => { - const { includeFork, twitter, linkedin, medium, dribbble } = opts; - //add data to assets/index.html - jsdom - .fromFile(`${__dirname}/assets/index.html`, options) - .then(function(dom) { - let window = dom.window, - document = window.document; - (async () => { - try { - console.log("Building HTML/CSS..."); - const repos = await getRepos(username, opts); - - for (var i = 0; i < repos.length; i++) { - let element; - if (repos[i].fork == false) { - element = document.getElementById("work_section"); - } else if (includeFork == true) { - document.getElementById("forks").style.display = "block"; - element = document.getElementById("forks_section"); - } else { - continue; - } - element.innerHTML += ` - -
-
${repos[i].name}
-
- ${convertToEmoji(repos[i].description)} -
-
-   ${ - repos[i].language - } -   ${ - repos[i].stargazers_count - } -   ${ - repos[i].forks_count - } -
-
-
`; - } - const user = await getUser(username); - document.title = user.login; - var icon = document.createElement("link"); - icon.setAttribute("rel", "icon"); - icon.setAttribute("href", user.avatar_url); - icon.setAttribute("type", "image/png"); - - document.getElementsByTagName("head")[0].appendChild(icon); - document.getElementById( - "profile_img" - ).style.background = `url('${user.avatar_url}') center center`; - document.getElementById( - "username" - ).innerHTML = `${user.name}@${user.login}`; - //document.getElementById("github_link").href = `https://github.com/${user.login}`; - document.getElementById("userbio").innerHTML = convertToEmoji( - user.bio - ); - document.getElementById("userbio").style.display = - user.bio == null || !user.bio ? "none" : "block"; - document.getElementById("about").innerHTML = ` -   ${user.company} -   ${user.email} -   ${ - user.blog - } -    ${ - user.location - } -    Available for hire -
- - - - -
- `; - //add data to config.json - const data = await getConfig(); - data[0].username = user.login; - data[0].name = user.name; - data[0].userimg = user.avatar_url; - - await fs.writeFile( - `${outDir}/config.json`, - JSON.stringify(data, null, " "), - function(err) { - if (err) throw err; - console.log("Config file updated."); - } - ); - await fs.writeFile( - `${outDir}/index.html`, - "" + window.document.documentElement.outerHTML, - function(error) { - if (error) throw error; - console.log(`Build Complete, Files can be Found @ ${outDir}\n`); - } - ); - } catch (error) { - console.log(error); - } - })(); - }) - .catch(function(error) { - console.log(error); - }); -}; +const fs = require("fs"); +const emoji = require("github-emoji"); +const jsdom = require("jsdom").JSDOM, + options = { + resources: "usable" + }; +const { getConfig, outDir } = require("./utils"); +const { getRepos, getUser } = require("./api"); + +function convertToEmoji(text) { + if (text == null) return; + text = text.toString(); + var pattern = /(?<=:\s*).*?(?=\s*:)/gs; + if (text.match(pattern) != null) { + var str = text.match(pattern); + str = str.filter(function(arr) { + return /\S/.test(arr); + }); + for (i = 0; i < str.length; i++) { + if (emoji.URLS[str[i]] != undefined) { + text = text.replace( + `:${str[i]}:`, + `` + ); + } + } + return text; + } else { + return text; + } +} + +module.exports.updateHTML = (username, opts) => { + const { includeFork, twitter, linkedin, medium, dribbble } = opts; + //add data to assets/index.html + jsdom + .fromFile(`${__dirname}/assets/index.html`, options) + .then(function(dom) { + let window = dom.window, + document = window.document; + (async () => { + try { + console.log("Building HTML/CSS..."); + const repos = await getRepos(username, opts); + + for (var i = 0; i < repos.length; i++) { + let element; + if (repos[i].fork == false) { + element = document.getElementById("work_section"); + } else if (includeFork == true) { + document.getElementById("forks").style.display = "block"; + element = document.getElementById("forks_section"); + } else { + continue; + } + element.innerHTML += ` + +
+
${repos[i].name}
+
+ ${convertToEmoji(repos[i].description)} +
+
+   ${ + repos[i].language + } +   ${ + repos[i].stargazers_count + } +   ${ + repos[i].forks_count + } +
+
+
`; + } + const user = await getUser(username); + document.title = user.login; + var icon = document.createElement("link"); + icon.setAttribute("rel", "icon"); + icon.setAttribute("href", user.avatar_url); + icon.setAttribute("type", "image/png"); + + document.getElementsByTagName("head")[0].appendChild(icon); + document.getElementById( + "profile_img" + ).style.background = `url('${user.avatar_url}') center center`; + document.getElementById( + "username" + ).innerHTML = `${user.name}@${user.login}`; + //document.getElementById("github_link").href = `https://github.com/${user.login}`; + document.getElementById("userbio").innerHTML = convertToEmoji( + user.bio + ); + document.getElementById("userbio").style.display = + user.bio == null || !user.bio ? "none" : "block"; + document.getElementById("about").innerHTML = ` +   ${user.company} +   ${user.email} +   ${ + user.blog + } +    ${ + user.location + } +    Available for hire +
+ + + + +
+ `; + //add data to config.json + const data = await getConfig(); + data[0].username = user.login; + data[0].name = user.name; + data[0].userimg = user.avatar_url; + + await fs.writeFile( + `${outDir}/config.json`, + JSON.stringify(data, null, " "), + function(err) { + if (err) throw err; + console.log("Config file updated."); + } + ); + await fs.writeFile( + `${outDir}/index.html`, + "" + window.document.documentElement.outerHTML, + function(error) { + if (error) throw error; + console.log(`Build Complete, Files can be Found @ ${outDir}\n`); + } + ); + } catch (error) { + console.log(error); + } + })(); + }) + .catch(function(error) { + console.log(error); + }); +}; diff --git a/run.js b/run.js index b98cae5..7b2d1b4 100644 --- a/run.js +++ b/run.js @@ -1,22 +1,22 @@ -const express = require("express"); -const path = require("path"); -const outDir = path.resolve("./dist/" || process.env.OUT_DIR); -const app = express(); -app.use(express.static(`${outDir}`)); - -function runCommand(program) { - let port = program.port ? program.port : 3000; - - app.get("/", function(req, res) { - res.sendFile("/index.html"); - }); - - app.listen(port); - console.log( - `\nGitfolio running on port ${port}, Navigate to http://localhost:${port} in your browser\n` - ); -} - -module.exports = { - runCommand -}; +const express = require("express"); +const path = require("path"); +const outDir = path.resolve("./dist/" || process.env.OUT_DIR); +const app = express(); +app.use(express.static(`${outDir}`)); + +function runCommand(program) { + let port = program.port ? program.port : 3000; + + app.get("/", function(req, res) { + res.sendFile("/index.html"); + }); + + app.listen(port); + console.log( + `\nGitfolio running on port ${port}, Navigate to http://localhost:${port} in your browser\n` + ); +} + +module.exports = { + runCommand +}; diff --git a/ui.js b/ui.js index 70ce5d8..be68254 100644 --- a/ui.js +++ b/ui.js @@ -1,241 +1,241 @@ -const fs = require("fs"); -const express = require("express"); -const { updateHTML } = require("./populate"); -const { populateCSS, populateConfig } = require("./build"); -const { updateCommand } = require("./update"); -const app = express(); -app.set("view engine", "ejs"); -app.use(express.static(__dirname + "/views")); -app.set("views", __dirname + "/views"); -app.use( - express.json({ - limit: "50mb" - }) -); -app.use( - express.urlencoded({ - limit: "50mb", - extended: true - }) -); - -const port = 3000; - -const jsdom = require("jsdom").JSDOM, - options = { - resources: "usable" - }; -global.DOMParser = new jsdom().window.DOMParser; -const { getBlog, outDir } = require("./utils"); - -function createBlog(title, subtitle, folder, topImage, images, content) { - // Checks to make sure this directory actually exists - // and creates it if it doesn't - if (!fs.existsSync(`${outDir}/blog/`)) { - fs.mkdirSync( - `${outDir}/blog/`, - { - recursive: true - }, - err => {} - ); - } - - if (!fs.existsSync(`${outDir}/blog/${folder}`)) { - fs.mkdirSync(`${outDir}/blog/${folder}`, { - recursive: true - }); - } - - fs.copyFile( - `${__dirname}/assets/blog/blogTemplate.html`, - `${outDir}/blog/${folder}/index.html`, - err => { - if (err) throw err; - jsdom - .fromFile(`${outDir}/blog/${folder}/index.html`, options) - .then(function(dom) { - let window = dom.window, - document = window.document; - let style = document.createElement("link"); - style.setAttribute("rel", "stylesheet"); - style.setAttribute("href", "../../index.css"); - document.getElementsByTagName("head")[0].appendChild(style); - - document.getElementsByTagName("title")[0].textContent = title; - document.getElementById("blog_title").textContent = title; - document.getElementById("blog_sub_title").textContent = subtitle; - document.getElementById( - "background" - ).style.background = `url('top_image.${ - topImage.split("/")[1].split(";")[0] - }') center center`; - - if (content != null) { - var parser = new DOMParser(); - content = parser.parseFromString(content, "text/html"); - document.getElementById("blog").innerHTML = - content.documentElement.innerHTML; - } - - images = JSON.parse(images); - images.forEach((item, index) => { - var base64Image = item.split(";base64,").pop(); - fs.writeFile( - `${outDir}/blog/${folder}/img_${index}.${ - item.split("/")[1].split(";")[0] - }`, - base64Image, - { - encoding: "base64" - }, - function(err) { - if (err) throw err; - } - ); - }); - - fs.writeFile( - `${outDir}/blog/${folder}/index.html`, - "" + window.document.documentElement.outerHTML, - async function(error) { - if (error) throw error; - - var base64ImageTop = topImage.split(";base64,").pop(); - fs.writeFile( - `${outDir}/blog/${folder}/top_image.${ - topImage.split("/")[1].split(";")[0] - }`, - base64ImageTop, - { - encoding: "base64" - }, - function(err) { - if (err) throw err; - } - ); - - let blog_data = { - url_title: folder, - title: title, - sub_title: subtitle, - top_image: `top_image.${topImage.split("/")[1].split(";")[0]}`, - visible: true - }; - const old_blogs = await getBlog(); - old_blogs.push(blog_data); - fs.writeFile( - `${outDir}/blog.json`, - JSON.stringify(old_blogs, null, " "), - function(err) { - if (err) throw err; - console.log( - `Blog created successfully at ${outDir}\\blog\\${folder}\n` - ); - } - ); - } - ); - }) - .catch(function(error) { - console.log(error); - }); - } - ); -} - -function uiCommand() { - app.get("/", function(req, res) { - res.render("index.ejs"); - }); - - app.get("/update", function(req, res) { - if (!fs.existsSync(`${outDir}/config.json`)) { - return res.send( - 'You need to run build command before using update
Go Back' - ); - } - updateCommand(); - res.redirect("/"); - }); - - app.post("/build", function(req, res) { - let username = req.body.username; - if (!username) { - return res.send("username can't be empty"); - } - let sort = req.body.sort ? req.body.sort : "created"; - let order = req.body.order ? req.body.order : "asc"; - let includeFork = req.body.fork == "true" ? true : false; - let types = ["owner"]; - let twitter = req.body.twitter ? req.body.twitter : null; - let linkedin = req.body.linkedin ? req.body.linkedin : null; - let medium = req.body.medium ? req.body.medium : null; - let dribbble = req.body.dribbble ? req.body.dribbble : null; - let background = req.body.background - ? req.body.background - : "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80"; - let theme = req.body.theme == "on" ? "dark" : "light"; - const opts = { - sort: sort, - order: order, - includeFork: includeFork, - types, - twitter: twitter, - linkedin: linkedin, - medium: medium, - dribbble: dribbble - }; - - updateHTML(username, opts); - populateCSS({ - background: background, - theme: theme - }); - populateConfig(opts); - res.redirect("/"); - }); - - app.get("/blog", function(req, res) { - if (!fs.existsSync(`${outDir}/config.json`)) { - return res.send( - 'You need to run build command before accessing blogs
Go Back' - ); - } - fs.readFile(`${outDir}/config.json`, function(err, data) { - res.render("blog.ejs", { - profile: JSON.parse(data) - }); - }); - }); - - app.post("/createBlog", function(req, res) { - let title = req.body.title; - let subtitle = req.body.subtitle; - let content = req.body.content ? req.body.content : null; - if (!title) { - return res.send("title can't be empty"); - } - if (!subtitle) { - return res.send("subtitle can't be empty"); - } - if (!content) { - return res.send("something isn't working fine, try again :p"); - } - let folder = title.replace(/[^a-zA-Z ]/g, "").replace(/ /g, "-"); - let topImage = req.body.top_image; - let images = req.body.images; - createBlog(title, subtitle, folder, topImage, images, content); - res.redirect("/blog"); - }); - - console.log("\nStarting..."); - app.listen(port); - console.log( - `The GUI is running on port ${port}, Navigate to http://localhost:${port} in your browser\n` - ); -} - -module.exports = { - uiCommand -}; +const fs = require("fs"); +const express = require("express"); +const { updateHTML } = require("./populate"); +const { populateCSS, populateConfig } = require("./build"); +const { updateCommand } = require("./update"); +const app = express(); +app.set("view engine", "ejs"); +app.use(express.static(__dirname + "/views")); +app.set("views", __dirname + "/views"); +app.use( + express.json({ + limit: "50mb" + }) +); +app.use( + express.urlencoded({ + limit: "50mb", + extended: true + }) +); + +const port = 3000; + +const jsdom = require("jsdom").JSDOM, + options = { + resources: "usable" + }; +global.DOMParser = new jsdom().window.DOMParser; +const { getBlog, outDir } = require("./utils"); + +function createBlog(title, subtitle, folder, topImage, images, content) { + // Checks to make sure this directory actually exists + // and creates it if it doesn't + if (!fs.existsSync(`${outDir}/blog/`)) { + fs.mkdirSync( + `${outDir}/blog/`, + { + recursive: true + }, + err => {} + ); + } + + if (!fs.existsSync(`${outDir}/blog/${folder}`)) { + fs.mkdirSync(`${outDir}/blog/${folder}`, { + recursive: true + }); + } + + fs.copyFile( + `${__dirname}/assets/blog/blogTemplate.html`, + `${outDir}/blog/${folder}/index.html`, + err => { + if (err) throw err; + jsdom + .fromFile(`${outDir}/blog/${folder}/index.html`, options) + .then(function(dom) { + let window = dom.window, + document = window.document; + let style = document.createElement("link"); + style.setAttribute("rel", "stylesheet"); + style.setAttribute("href", "../../index.css"); + document.getElementsByTagName("head")[0].appendChild(style); + + document.getElementsByTagName("title")[0].textContent = title; + document.getElementById("blog_title").textContent = title; + document.getElementById("blog_sub_title").textContent = subtitle; + document.getElementById( + "background" + ).style.background = `url('top_image.${ + topImage.split("/")[1].split(";")[0] + }') center center`; + + if (content != null) { + var parser = new DOMParser(); + content = parser.parseFromString(content, "text/html"); + document.getElementById("blog").innerHTML = + content.documentElement.innerHTML; + } + + images = JSON.parse(images); + images.forEach((item, index) => { + var base64Image = item.split(";base64,").pop(); + fs.writeFile( + `${outDir}/blog/${folder}/img_${index}.${ + item.split("/")[1].split(";")[0] + }`, + base64Image, + { + encoding: "base64" + }, + function(err) { + if (err) throw err; + } + ); + }); + + fs.writeFile( + `${outDir}/blog/${folder}/index.html`, + "" + window.document.documentElement.outerHTML, + async function(error) { + if (error) throw error; + + var base64ImageTop = topImage.split(";base64,").pop(); + fs.writeFile( + `${outDir}/blog/${folder}/top_image.${ + topImage.split("/")[1].split(";")[0] + }`, + base64ImageTop, + { + encoding: "base64" + }, + function(err) { + if (err) throw err; + } + ); + + let blog_data = { + url_title: folder, + title: title, + sub_title: subtitle, + top_image: `top_image.${topImage.split("/")[1].split(";")[0]}`, + visible: true + }; + const old_blogs = await getBlog(); + old_blogs.push(blog_data); + fs.writeFile( + `${outDir}/blog.json`, + JSON.stringify(old_blogs, null, " "), + function(err) { + if (err) throw err; + console.log( + `Blog created successfully at ${outDir}\\blog\\${folder}\n` + ); + } + ); + } + ); + }) + .catch(function(error) { + console.log(error); + }); + } + ); +} + +function uiCommand() { + app.get("/", function(req, res) { + res.render("index.ejs"); + }); + + app.get("/update", function(req, res) { + if (!fs.existsSync(`${outDir}/config.json`)) { + return res.send( + 'You need to run build command before using update
Go Back' + ); + } + updateCommand(); + res.redirect("/"); + }); + + app.post("/build", function(req, res) { + let username = req.body.username; + if (!username) { + return res.send("username can't be empty"); + } + let sort = req.body.sort ? req.body.sort : "created"; + let order = req.body.order ? req.body.order : "asc"; + let includeFork = req.body.fork == "true" ? true : false; + let types = ["owner"]; + let twitter = req.body.twitter ? req.body.twitter : null; + let linkedin = req.body.linkedin ? req.body.linkedin : null; + let medium = req.body.medium ? req.body.medium : null; + let dribbble = req.body.dribbble ? req.body.dribbble : null; + let background = req.body.background + ? req.body.background + : "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80"; + let theme = req.body.theme == "on" ? "dark" : "light"; + const opts = { + sort: sort, + order: order, + includeFork: includeFork, + types, + twitter: twitter, + linkedin: linkedin, + medium: medium, + dribbble: dribbble + }; + + updateHTML(username, opts); + populateCSS({ + background: background, + theme: theme + }); + populateConfig(opts); + res.redirect("/"); + }); + + app.get("/blog", function(req, res) { + if (!fs.existsSync(`${outDir}/config.json`)) { + return res.send( + 'You need to run build command before accessing blogs
Go Back' + ); + } + fs.readFile(`${outDir}/config.json`, function(err, data) { + res.render("blog.ejs", { + profile: JSON.parse(data) + }); + }); + }); + + app.post("/createBlog", function(req, res) { + let title = req.body.title; + let subtitle = req.body.subtitle; + let content = req.body.content ? req.body.content : null; + if (!title) { + return res.send("title can't be empty"); + } + if (!subtitle) { + return res.send("subtitle can't be empty"); + } + if (!content) { + return res.send("something isn't working fine, try again :p"); + } + let folder = title.replace(/[^a-zA-Z ]/g, "").replace(/ /g, "-"); + let topImage = req.body.top_image; + let images = req.body.images; + createBlog(title, subtitle, folder, topImage, images, content); + res.redirect("/blog"); + }); + + console.log("\nStarting..."); + app.listen(port); + console.log( + `The GUI is running on port ${port}, Navigate to http://localhost:${port} in your browser\n` + ); +} + +module.exports = { + uiCommand +}; diff --git a/update.js b/update.js index a053806..559845f 100644 --- a/update.js +++ b/update.js @@ -1,28 +1,28 @@ -const { getConfig } = require("./utils"); -const { updateHTML } = require("./populate"); - -async function updateCommand() { - const data = await getConfig(); - var username = data[0].username; - if (username == null) { - console.log( - "username not found in config.json, please run build command before using update" - ); - return; - } - const opts = { - sort: data[0].sort, - order: data[0].order, - includeFork: data[0].includeFork, - types: data[0].types, - twitter: data[0].twitter, - linkedin: data[0].linkedin, - medium: data[0].medium, - dribbble: data[0].dribbble - }; - updateHTML(username, opts); -} - -module.exports = { - updateCommand -}; +const { getConfig } = require("./utils"); +const { updateHTML } = require("./populate"); + +async function updateCommand() { + const data = await getConfig(); + var username = data[0].username; + if (username == null) { + console.log( + "username not found in config.json, please run build command before using update" + ); + return; + } + const opts = { + sort: data[0].sort, + order: data[0].order, + includeFork: data[0].includeFork, + types: data[0].types, + twitter: data[0].twitter, + linkedin: data[0].linkedin, + medium: data[0].medium, + dribbble: data[0].dribbble + }; + updateHTML(username, opts); +} + +module.exports = { + updateCommand +}; diff --git a/utils.js b/utils.js index 31f19b7..1e1c887 100644 --- a/utils.js +++ b/utils.js @@ -1,39 +1,39 @@ -const path = require("path"); -const bluebird = require("bluebird"); -const fs = bluebird.promisifyAll(require("fs")); - -const outDir = path.resolve("./dist/" || process.env.OUT_DIR); -const configPath = path.join(outDir, "config.json"); -const blogPath = path.join(outDir, "blog.json"); - -const defaultConfigPath = path.resolve(`${__dirname}/default/config.json`); -const defaultBlogPath = path.resolve(`${__dirname}/default/blog.json`); - -/** - * Tries to read file from out dir, - * if not present returns default file contents - */ -async function getFileWithDefaults(file, defaultFile) { - try { - await fs.accessAsync(file, fs.constants.F_OK); - } catch (err) { - const defaultData = await fs.readFileAsync(defaultFile); - return JSON.parse(defaultData); - } - const data = await fs.readFileAsync(file); - return JSON.parse(data); -} - -async function getConfig() { - return getFileWithDefaults(configPath, defaultConfigPath); -} - -async function getBlog() { - return getFileWithDefaults(blogPath, defaultBlogPath); -} - -module.exports = { - outDir, - getConfig, - getBlog -}; +const path = require("path"); +const bluebird = require("bluebird"); +const fs = bluebird.promisifyAll(require("fs")); + +const outDir = path.resolve("./dist/" || process.env.OUT_DIR); +const configPath = path.join(outDir, "config.json"); +const blogPath = path.join(outDir, "blog.json"); + +const defaultConfigPath = path.resolve(`${__dirname}/default/config.json`); +const defaultBlogPath = path.resolve(`${__dirname}/default/blog.json`); + +/** + * Tries to read file from out dir, + * if not present returns default file contents + */ +async function getFileWithDefaults(file, defaultFile) { + try { + await fs.accessAsync(file, fs.constants.F_OK); + } catch (err) { + const defaultData = await fs.readFileAsync(defaultFile); + return JSON.parse(defaultData); + } + const data = await fs.readFileAsync(file); + return JSON.parse(data); +} + +async function getConfig() { + return getFileWithDefaults(configPath, defaultConfigPath); +} + +async function getBlog() { + return getFileWithDefaults(blogPath, defaultBlogPath); +} + +module.exports = { + outDir, + getConfig, + getBlog +}; diff --git a/views/blog.ejs b/views/blog.ejs index e041e92..47b282f 100644 --- a/views/blog.ejs +++ b/views/blog.ejs @@ -1,259 +1,259 @@ - - - - - - - Gitfolio UI - - - - - - -
- gitfolio - New Blog - Update - Home -
-
- -
- - - - - - - - -
-
-
-
- <% if(profile[0].name)%> - <%= profile[0].name%> - <% %> -
@<%= profile[0].username%> -
-
-
-
- -
- - - - - -
-
- - - -
Tip : You can use html inside paragraphs
-
- -
-
- - - - + + + + + + + Gitfolio UI + + + + + + +
+ gitfolio + New Blog + Update + Home +
+
+ +
+ + + + + + + + +
+
+
+
+ <% if(profile[0].name)%> + <%= profile[0].name%> + <% %> +
@<%= profile[0].username%> +
+
+
+
+ +
+ + + + + +
+
+ + + +
Tip : You can use html inside paragraphs
+
+ +
+
+ + + + diff --git a/views/css/font/Circular.otf b/views/css/font/Circular.otf index c62b210c51fc6b0a7e4022ac9dd54d50cf5942a3..9259da3f69bfb8da26ee4cb6707cd6d12bc96cca 100644 GIT binary patch delta 19 bcmZoU#?o|*WkUq(=1A79g`4@yzpe%VQr!r+ delta 23 dcmZoV#?o?(WkUojBk$%2)~$s=insjhY5->52+;rl diff --git a/views/css/index.css b/views/css/index.css index 8b062ad..d8528cd 100644 --- a/views/css/index.css +++ b/views/css/index.css @@ -1,299 +1,299 @@ -@import url("https://fonts.googleapis.com/css?family=Poppins"); -@import url("https://fonts.googleapis.com/css?family=Questrial"); - -@font-face { - font-family: "Circular"; - src: url("./font/Circular.otf"); -} - -body { - margin: 0%; - padding: 0%; - width: 100vw; - max-width: 100vw; - overflow-x: hidden; - align-items: center; - font-family: "Poppins", sans-serif; - background: rgb(250, 250, 250) !important; - will-change: auto; -} - -header { - width: 90vw; - padding: 4vh 5vw; - font-weight: bold; - background: rgb(255, 255, 255); - font-size: 32px; -} - -header b { - font-family: "Circular", sans-serif; -} - -header a { - font-size: 16px; - margin: 1.8vh 0px; - margin-left: 4vw; - color: #000; - text-decoration: none; - transition: 0.4s ease-in-out; -} - -header a:hover { - color: #bebebe; -} - -form { - width: 90vw; - padding: 2vh 5vw; -} - -form .button { - margin: 2vh 0px; -} - -.input { - margin: 1.5vh 0px !important; -} - -.label { - display: inline-block !important; - margin-right: 25px; - font-weight: bold; -} - -button { - transition: 0.4s ease-in-out !important; -} - -button:hover { - color: #fff; - background: #000 !important; -} - -.-size-small { - margin-right: 1vw !important; -} - -#top_image { - width: 100vw; - height: 50vh; - position: absolute; - top: 14vh; - left: 0; - background: linear-gradient(0deg, rgb(250, 250, 250), rgb(200, 200, 200)); - background-size: cover !important; - background-repeat: no-repeat !important; - z-index: 1; - text-align: right; -} - -#top_image i { - font-size: 20px; - position: absolute; - z-index: 5; - top: 4vh; - right: 5vw; - padding: 15px 15px; - background: #ffffff; - color: rgb(0, 0, 0); - border-radius: 50%; -} - -#top_image i:hover { - cursor: pointer; -} - -#profile_blog { - width: 60vw; - margin: 0px 20vw; - margin-top: 42vh !important; - text-align: left; - z-index: 1; - transition: 0.4s ease-in-out; - z-index: 2; - position: relative; -} - -#profile_img_blog { - border-radius: 50%; - width: 90px; - height: 90px; - background-size: cover !important; - background-repeat: no-repeat; -} - -#username_blog { - font-size: 18px; - color: #000; - font-family: "Poppins", sans-serif; - font-weight: bold; - padding-left: 0px; -} - -#username_blog span { - font-size: 24px; - font-family: "Questrial", sans-serif !important; -} - -#username_blog b { - font-size: 12px; - font-family: "Poppins", sans-serif; - font-weight: bold; -} - -#blog-display { - width: 60vw; - margin: 3vh 20vw; - text-align: left; - z-index: 1; - transition: 0.4s ease-in-out; - z-index: 2; - position: relative; -} - -#blog_title { - font-size: 50px; - color: #000; - font-weight: bold; - font-family: "Questrial", sans-serif; - background: transparent; - border: 0px; - width: 100%; - resize: none; - height: auto; - overflow-y: hidden; -} - -#blog_sub_title { - font-size: 36px; - color: rgb(100, 100, 100); - font-weight: bold; - font-family: "Questrial", sans-serif; - background: transparent; - border: 0px; - width: 100%; - resize: none; - height: auto; - overflow-y: hidden; -} - -#blog_sub_title::placeholder { - color: rgb(100, 100, 100); -} - -#blog-display h2 { - color: var(--blog-gray-color); -} - -#blog-display { - padding: 1vh 0px; - font-family: "Questrial", sans-serif; -} - -.div_for_buttons { - margin-top: 5vh; -} - -.para { - font-size: 17px; - line-height: 25px; - word-spacing: 1.2px; - margin: 5vh 0px; - background: transparent; - border: 0px; - width: 100%; - font-family: "Questrial", sans-serif; - resize: none; - height: auto; - overflow-y: hidden; -} - -.para span { - padding: 2px 4px; - background: #000; - color: #fff !important; -} - -#blog { - margin-top: 2vh; -} - -#blog img { - width: 100%; - margin: 2vh 0px; - border-radius: 5px; - border: 1px solid rgb(0, 0, 0, 0.08); -} - -.remove { - margin-bottom: 2vh 0px; - font-weight: bold; - transition: 0.4s ease-in-out; - font-size: 16px; -} - -.remove i { - font-size: 14px; - margin-right: 3px; -} - -.remove:hover { - cursor: pointer; - color: rgb(255, 70, 70); -} - -@media (max-width: 800px) { - #blog-display { - width: 90vw; - margin: 0px 5vw; - text-align: left; - margin-top: 0vh; - z-index: 1; - } - - #profile_blog { - width: 90vw; - margin: 0px 5vw; - } - - #profile_img_blog { - width: 70px; - height: 70px; - } - - #blog img { - margin: 1vh 0px !important; - } - - #blog p { - margin: 2vh 0px; - } -} - -::selection { - color: #fff; - background: #000; -} - -::-webkit-scrollbar { - width: 5px; - height: 5px; -} - -::-webkit-scrollbar-track { - background: #fff; -} - -::-webkit-scrollbar-thumb { - background: #000; -} - -input, -textarea:focus { - outline: none; -} - -::placeholder { - color: #000; -} +@import url("https://fonts.googleapis.com/css?family=Poppins"); +@import url("https://fonts.googleapis.com/css?family=Questrial"); + +@font-face { + font-family: "Circular"; + src: url("./font/Circular.otf"); +} + +body { + margin: 0%; + padding: 0%; + width: 100vw; + max-width: 100vw; + overflow-x: hidden; + align-items: center; + font-family: "Poppins", sans-serif; + background: rgb(250, 250, 250) !important; + will-change: auto; +} + +header { + width: 90vw; + padding: 4vh 5vw; + font-weight: bold; + background: rgb(255, 255, 255); + font-size: 32px; +} + +header b { + font-family: "Circular", sans-serif; +} + +header a { + font-size: 16px; + margin: 1.8vh 0px; + margin-left: 4vw; + color: #000; + text-decoration: none; + transition: 0.4s ease-in-out; +} + +header a:hover { + color: #bebebe; +} + +form { + width: 90vw; + padding: 2vh 5vw; +} + +form .button { + margin: 2vh 0px; +} + +.input { + margin: 1.5vh 0px !important; +} + +.label { + display: inline-block !important; + margin-right: 25px; + font-weight: bold; +} + +button { + transition: 0.4s ease-in-out !important; +} + +button:hover { + color: #fff; + background: #000 !important; +} + +.-size-small { + margin-right: 1vw !important; +} + +#top_image { + width: 100vw; + height: 50vh; + position: absolute; + top: 14vh; + left: 0; + background: linear-gradient(0deg, rgb(250, 250, 250), rgb(200, 200, 200)); + background-size: cover !important; + background-repeat: no-repeat !important; + z-index: 1; + text-align: right; +} + +#top_image i { + font-size: 20px; + position: absolute; + z-index: 5; + top: 4vh; + right: 5vw; + padding: 15px 15px; + background: #ffffff; + color: rgb(0, 0, 0); + border-radius: 50%; +} + +#top_image i:hover { + cursor: pointer; +} + +#profile_blog { + width: 60vw; + margin: 0px 20vw; + margin-top: 42vh !important; + text-align: left; + z-index: 1; + transition: 0.4s ease-in-out; + z-index: 2; + position: relative; +} + +#profile_img_blog { + border-radius: 50%; + width: 90px; + height: 90px; + background-size: cover !important; + background-repeat: no-repeat; +} + +#username_blog { + font-size: 18px; + color: #000; + font-family: "Poppins", sans-serif; + font-weight: bold; + padding-left: 0px; +} + +#username_blog span { + font-size: 24px; + font-family: "Questrial", sans-serif !important; +} + +#username_blog b { + font-size: 12px; + font-family: "Poppins", sans-serif; + font-weight: bold; +} + +#blog-display { + width: 60vw; + margin: 3vh 20vw; + text-align: left; + z-index: 1; + transition: 0.4s ease-in-out; + z-index: 2; + position: relative; +} + +#blog_title { + font-size: 50px; + color: #000; + font-weight: bold; + font-family: "Questrial", sans-serif; + background: transparent; + border: 0px; + width: 100%; + resize: none; + height: auto; + overflow-y: hidden; +} + +#blog_sub_title { + font-size: 36px; + color: rgb(100, 100, 100); + font-weight: bold; + font-family: "Questrial", sans-serif; + background: transparent; + border: 0px; + width: 100%; + resize: none; + height: auto; + overflow-y: hidden; +} + +#blog_sub_title::placeholder { + color: rgb(100, 100, 100); +} + +#blog-display h2 { + color: var(--blog-gray-color); +} + +#blog-display { + padding: 1vh 0px; + font-family: "Questrial", sans-serif; +} + +.div_for_buttons { + margin-top: 5vh; +} + +.para { + font-size: 17px; + line-height: 25px; + word-spacing: 1.2px; + margin: 5vh 0px; + background: transparent; + border: 0px; + width: 100%; + font-family: "Questrial", sans-serif; + resize: none; + height: auto; + overflow-y: hidden; +} + +.para span { + padding: 2px 4px; + background: #000; + color: #fff !important; +} + +#blog { + margin-top: 2vh; +} + +#blog img { + width: 100%; + margin: 2vh 0px; + border-radius: 5px; + border: 1px solid rgb(0, 0, 0, 0.08); +} + +.remove { + margin-bottom: 2vh 0px; + font-weight: bold; + transition: 0.4s ease-in-out; + font-size: 16px; +} + +.remove i { + font-size: 14px; + margin-right: 3px; +} + +.remove:hover { + cursor: pointer; + color: rgb(255, 70, 70); +} + +@media (max-width: 800px) { + #blog-display { + width: 90vw; + margin: 0px 5vw; + text-align: left; + margin-top: 0vh; + z-index: 1; + } + + #profile_blog { + width: 90vw; + margin: 0px 5vw; + } + + #profile_img_blog { + width: 70px; + height: 70px; + } + + #blog img { + margin: 1vh 0px !important; + } + + #blog p { + margin: 2vh 0px; + } +} + +::selection { + color: #fff; + background: #000; +} + +::-webkit-scrollbar { + width: 5px; + height: 5px; +} + +::-webkit-scrollbar-track { + background: #fff; +} + +::-webkit-scrollbar-thumb { + background: #000; +} + +input, +textarea:focus { + outline: none; +} + +::placeholder { + color: #000; +} diff --git a/views/index.ejs b/views/index.ejs index f6cd055..deea281 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -1,153 +1,153 @@ - - - - - - - Gitfolio UI - - - - - - -
- gitfolio - New Blog - Update - Home -
-
-

Build or Edit Portfolio

-
- -

Sort By :

- - - - - - - - - - -

Order By :

- - -

- - - - -

- -
- - - - + + + + + + + Gitfolio UI + + + + + + +
+ gitfolio + New Blog + Update + Home +
+
+

Build or Edit Portfolio

+
+ +

Sort By :

+ + + + + + + + + + +

Order By :

+ + +

+ + + + +

+ +
+ + + + From 030e52b340b655a35609d7daa0bbeac7acea81f4 Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sat, 7 Dec 2019 21:48:12 +0530 Subject: [PATCH 061/163] Add support for Telegram and email social links --- README.md | 27 ++--- bin/gitfolio.js | 36 ++++-- build.js | 48 ++++++-- populate.js | 89 ++++++++++---- ui.js | 129 +++++++++++++------- update.js | 22 +++- views/index.ejs | 313 ++++++++++++++++++++++++++---------------------- 7 files changed, 415 insertions(+), 249 deletions(-) diff --git a/README.md b/README.md index a3c377f..3ea7c1c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ -# Gitfolio +# Gitfolio + [![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20@imfunnieee%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![npm](https://img.shields.io/npm/dm/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) ### personal website + blog for every github user @@ -75,8 +76,8 @@ $ gitfolio build --sort star --order desc Themes are specified using the `--theme [theme-name]` flag when running the `build` command. The available themes are -- `light` -- `dark` +- `light` +- `dark` > TODO: Add more themes @@ -98,10 +99,10 @@ You could also add in your custom CSS inside `index.css` to give it a more perso #### Add Social Media links on your profile -Twitter, LinkedIn, Medium & Dribbble links to your profile while building +Twitter, LinkedIn, Medium, Dribbble, Telegram & email links to your profile while building ```sh -gitfolio build --twitter --linkedin --medium --dribbble +gitfolio build --twitter --linkedin --medium --dribbble --telegram --email ``` ### Let's Publish @@ -144,15 +145,13 @@ Blog Demo? [here](https://imfunniee.github.io/gitfolio/blog/my-first-post/) Blog's default JSON Format -``` -{ - "url_title": "my-first-blog", // the title you provide while creating a new blog, this appears in url - "title": "Lorem ipsum dolor sit amet", // main title of blog - "sub_title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", // sub-title of blog - "top_image": "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450", // main image of blog - "visible": true // don't worry about this -} -``` + { + "url_title": "my-first-blog", // the title you provide while creating a new blog, this appears in url + "title": "Lorem ipsum dolor sit amet", // main title of blog + "sub_title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", // sub-title of blog + "top_image": "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450", // main image of blog + "visible": true // don't worry about this + } ### Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) diff --git a/bin/gitfolio.js b/bin/gitfolio.js index dfc0887..05ef52c 100755 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -1,16 +1,33 @@ #! /usr/bin/env node + /* Argument parser */ const program = require("commander"); process.env.OUT_DIR = process.env.OUT_DIR || process.cwd(); -const { buildCommand } = require("../build"); -const { updateCommand } = require("../update"); -const { uiCommand } = require("../ui"); -const { runCommand } = require("../run"); -const { version } = require("../package.json"); +const +{ + buildCommand +} = require("../build"); +const +{ + updateCommand +} = require("../update"); +const +{ + uiCommand +} = require("../ui"); +const +{ + runCommand +} = require("../run"); +const +{ + version +} = require("../package.json"); -function collect(val, memo) { +function collect(val, memo) +{ memo.push(val); return memo; } @@ -29,6 +46,8 @@ program .option("-l, --linkedin [username]", "specify linkedin username") .option("-m, --medium [username]", "specify medium username") .option("-d, --dribbble [username]", "specify dribbble username") + .option("-T, --telegram [username]", "specify telegram username") + .option("-e, --email [username]", "specify email") .action(buildCommand); program @@ -47,7 +66,8 @@ program .option("-p, --port [port]", "provide a port for localhost, default is 3000") .action(runCommand); -program.on("command:*", () => { +program.on("command:*", () => +{ console.log("Unknown Command: " + program.args.join(" ")); program.help(); }); @@ -57,4 +77,4 @@ program .usage(" [options]") .parse(process.argv); -if (program.args.length === 0) program.help(); +if (program.args.length === 0) program.help(); \ No newline at end of file diff --git a/build.js b/build.js index b03723c..da2afd2 100644 --- a/build.js +++ b/build.js @@ -6,8 +6,15 @@ const hbs = require("handlebars"); /* Creates promise-returning async functions from callback-passed async functions */ const fs = bluebird.promisifyAll(require("fs")); -const { updateHTML } = require("./populate"); -const { getConfig, outDir } = require("./utils"); +const +{ + updateHTML +} = require("./populate"); +const +{ + getConfig, + outDir +} = require("./utils"); const assetDir = path.resolve(`${__dirname}/assets/`); const config = path.join(outDir, "config.json"); @@ -18,18 +25,23 @@ const config = path.join(outDir, "config.json"); * Theme styles are added to the new stylesheet depending on command line * arguments. */ -async function populateCSS({ +async function populateCSS( +{ theme = "light", background = "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80" -} = {}) { +} = {}) +{ /* Get the theme the user requests. Defaults to 'light' */ theme = `${theme}.css`; let template = path.resolve(assetDir, "index.css"); let stylesheet = path.join(outDir, "index.css"); - try { + try + { await fs.accessAsync(outDir, fs.constants.F_OK); - } catch (err) { + } + catch (err) + { await fs.mkdirAsync(outDir); } /* Copy over the template CSS stylesheet */ @@ -38,7 +50,8 @@ async function populateCSS({ /* Get an array of every available theme */ let themes = await fs.readdirAsync(path.join(assetDir, "themes")); - if (!themes.includes(theme)) { + if (!themes.includes(theme)) + { console.error('Error: Requested theme not found. Defaulting to "light".'); theme = "light"; } @@ -46,7 +59,8 @@ async function populateCSS({ let themeSource = await fs.readFileSync(path.join(assetDir, "themes", theme)); themeSource = themeSource.toString("utf-8"); let themeTemplate = hbs.compile(themeSource); - let styles = themeTemplate({ + let styles = themeTemplate( + { background: `${background}` }); /* Add the user-specified styles to the new stylesheet */ @@ -58,18 +72,23 @@ async function populateCSS({ await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); } -async function populateConfig(opts) { +async function populateConfig(opts) +{ const data = await getConfig(); Object.assign(data[0], opts); await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); } -async function buildCommand(username, program) { +async function buildCommand(username, program) +{ await populateCSS(program); let types; - if (!program.include || !program.include.length) { + if (!program.include || !program.include.length) + { types = ["all"]; - } else { + } + else + { types = program.include; } const opts = { @@ -81,6 +100,9 @@ async function buildCommand(username, program) { linkedin: program.linkedin, medium: program.medium, dribbble: program.dribbble + dribbble: program.dribbble, + telegram: program.telegram, + email: program.email }; await populateConfig(opts); @@ -91,4 +113,4 @@ module.exports = { buildCommand, populateCSS, populateConfig -}; +}; \ No newline at end of file diff --git a/populate.js b/populate.js index b4fb450..79dbd34 100644 --- a/populate.js +++ b/populate.js @@ -4,20 +4,33 @@ const jsdom = require("jsdom").JSDOM, options = { resources: "usable" }; -const { getConfig, outDir } = require("./utils"); -const { getRepos, getUser } = require("./api"); +const +{ + getConfig, + outDir +} = require("./utils"); +const +{ + getRepos, + getUser +} = require("./api"); -function convertToEmoji(text) { +function convertToEmoji(text) +{ if (text == null) return; text = text.toString(); var pattern = /(?<=:\s*).*?(?=\s*:)/gs; - if (text.match(pattern) != null) { + if (text.match(pattern) != null) + { var str = text.match(pattern); - str = str.filter(function(arr) { + str = str.filter(function(arr) + { return /\S/.test(arr); }); - for (i = 0; i < str.length; i++) { - if (emoji.URLS[str[i]] != undefined) { + for (i = 0; i < str.length; i++) + { + if (emoji.URLS[str[i]] != undefined) + { text = text.replace( `:${str[i]}:`, `` @@ -25,32 +38,53 @@ function convertToEmoji(text) { } } return text; - } else { + } + else + { return text; } } -module.exports.updateHTML = (username, opts) => { - const { includeFork, twitter, linkedin, medium, dribbble } = opts; +module.exports.updateHTML = (username, opts) => +{ + const + { + includeFork, + twitter, + linkedin, + medium, + dribbble, + telegram, + email + } = opts; //add data to assets/index.html jsdom .fromFile(`${__dirname}/assets/index.html`, options) - .then(function(dom) { + .then(function(dom) + { let window = dom.window, document = window.document; - (async () => { - try { + (async () => + { + try + { console.log("Building HTML/CSS..."); const repos = await getRepos(username, opts); - for (var i = 0; i < repos.length; i++) { + for (var i = 0; i < repos.length; i++) + { let element; - if (repos[i].fork == false) { + if (repos[i].fork == false) + { element = document.getElementById("work_section"); - } else if (includeFork == true) { + } + else if (includeFork == true) + { document.getElementById("forks").style.display = "block"; element = document.getElementById("forks_section"); - } else { + } + else + { continue; } element.innerHTML += ` @@ -137,6 +171,12 @@ module.exports.updateHTML = (username, opts) => { + + `; //add data to config.json @@ -148,7 +188,8 @@ module.exports.updateHTML = (username, opts) => { await fs.writeFile( `${outDir}/config.json`, JSON.stringify(data, null, " "), - function(err) { + function(err) + { if (err) throw err; console.log("Config file updated."); } @@ -156,17 +197,21 @@ module.exports.updateHTML = (username, opts) => { await fs.writeFile( `${outDir}/index.html`, "" + window.document.documentElement.outerHTML, - function(error) { + function(error) + { if (error) throw error; console.log(`Build Complete, Files can be Found @ ${outDir}\n`); } ); - } catch (error) { + } + catch (error) + { console.log(error); } })(); }) - .catch(function(error) { + .catch(function(error) + { console.log(error); }); -}; +}; \ No newline at end of file diff --git a/ui.js b/ui.js index be68254..bab528b 100644 --- a/ui.js +++ b/ui.js @@ -1,19 +1,31 @@ const fs = require("fs"); const express = require("express"); -const { updateHTML } = require("./populate"); -const { populateCSS, populateConfig } = require("./build"); -const { updateCommand } = require("./update"); +const +{ + updateHTML +} = require("./populate"); +const +{ + populateCSS, + populateConfig +} = require("./build"); +const +{ + updateCommand +} = require("./update"); const app = express(); app.set("view engine", "ejs"); app.use(express.static(__dirname + "/views")); app.set("views", __dirname + "/views"); app.use( - express.json({ + express.json( + { limit: "50mb" }) ); app.use( - express.urlencoded({ + express.urlencoded( + { limit: "50mb", extended: true }) @@ -26,23 +38,32 @@ const jsdom = require("jsdom").JSDOM, resources: "usable" }; global.DOMParser = new jsdom().window.DOMParser; -const { getBlog, outDir } = require("./utils"); +const +{ + getBlog, + outDir +} = require("./utils"); -function createBlog(title, subtitle, folder, topImage, images, content) { +function createBlog(title, subtitle, folder, topImage, images, content) +{ // Checks to make sure this directory actually exists // and creates it if it doesn't - if (!fs.existsSync(`${outDir}/blog/`)) { + if (!fs.existsSync(`${outDir}/blog/`)) + { fs.mkdirSync( `${outDir}/blog/`, { recursive: true }, - err => {} + err => + {} ); } - if (!fs.existsSync(`${outDir}/blog/${folder}`)) { - fs.mkdirSync(`${outDir}/blog/${folder}`, { + if (!fs.existsSync(`${outDir}/blog/${folder}`)) + { + fs.mkdirSync(`${outDir}/blog/${folder}`, + { recursive: true }); } @@ -50,11 +71,13 @@ function createBlog(title, subtitle, folder, topImage, images, content) { fs.copyFile( `${__dirname}/assets/blog/blogTemplate.html`, `${outDir}/blog/${folder}/index.html`, - err => { + err => + { if (err) throw err; jsdom .fromFile(`${outDir}/blog/${folder}/index.html`, options) - .then(function(dom) { + .then(function(dom) + { let window = dom.window, document = window.document; let style = document.createElement("link"); @@ -71,7 +94,8 @@ function createBlog(title, subtitle, folder, topImage, images, content) { topImage.split("/")[1].split(";")[0] }') center center`; - if (content != null) { + if (content != null) + { var parser = new DOMParser(); content = parser.parseFromString(content, "text/html"); document.getElementById("blog").innerHTML = @@ -79,7 +103,8 @@ function createBlog(title, subtitle, folder, topImage, images, content) { } images = JSON.parse(images); - images.forEach((item, index) => { + images.forEach((item, index) => + { var base64Image = item.split(";base64,").pop(); fs.writeFile( `${outDir}/blog/${folder}/img_${index}.${ @@ -89,7 +114,8 @@ function createBlog(title, subtitle, folder, topImage, images, content) { { encoding: "base64" }, - function(err) { + function(err) + { if (err) throw err; } ); @@ -98,7 +124,8 @@ function createBlog(title, subtitle, folder, topImage, images, content) { fs.writeFile( `${outDir}/blog/${folder}/index.html`, "" + window.document.documentElement.outerHTML, - async function(error) { + async function(error) + { if (error) throw error; var base64ImageTop = topImage.split(";base64,").pop(); @@ -110,7 +137,8 @@ function createBlog(title, subtitle, folder, topImage, images, content) { { encoding: "base64" }, - function(err) { + function(err) + { if (err) throw err; } ); @@ -127,7 +155,8 @@ function createBlog(title, subtitle, folder, topImage, images, content) { fs.writeFile( `${outDir}/blog.json`, JSON.stringify(old_blogs, null, " "), - function(err) { + function(err) + { if (err) throw err; console.log( `Blog created successfully at ${outDir}\\blog\\${folder}\n` @@ -137,20 +166,25 @@ function createBlog(title, subtitle, folder, topImage, images, content) { } ); }) - .catch(function(error) { + .catch(function(error) + { console.log(error); }); } ); } -function uiCommand() { - app.get("/", function(req, res) { +function uiCommand() +{ + app.get("/", function(req, res) + { res.render("index.ejs"); }); - app.get("/update", function(req, res) { - if (!fs.existsSync(`${outDir}/config.json`)) { + app.get("/update", function(req, res) + { + if (!fs.existsSync(`${outDir}/config.json`)) + { return res.send( 'You need to run build command before using update
Go Back' ); @@ -159,9 +193,11 @@ function uiCommand() { res.redirect("/"); }); - app.post("/build", function(req, res) { + app.post("/build", function(req, res) + { let username = req.body.username; - if (!username) { + if (!username) + { return res.send("username can't be empty"); } let sort = req.body.sort ? req.body.sort : "created"; @@ -172,9 +208,11 @@ function uiCommand() { let linkedin = req.body.linkedin ? req.body.linkedin : null; let medium = req.body.medium ? req.body.medium : null; let dribbble = req.body.dribbble ? req.body.dribbble : null; - let background = req.body.background - ? req.body.background - : "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80"; + let telegram = req.body.telegram ? req.body.telegram : null; + let email = req.body.email ? req.body.email : null; + let background = req.body.background ? + req.body.background : + "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80"; let theme = req.body.theme == "on" ? "dark" : "light"; const opts = { sort: sort, @@ -184,11 +222,14 @@ function uiCommand() { twitter: twitter, linkedin: linkedin, medium: medium, - dribbble: dribbble + dribbble: dribbble, + telegram: telegram, + email: email }; updateHTML(username, opts); - populateCSS({ + populateCSS( + { background: background, theme: theme }); @@ -196,30 +237,38 @@ function uiCommand() { res.redirect("/"); }); - app.get("/blog", function(req, res) { - if (!fs.existsSync(`${outDir}/config.json`)) { + app.get("/blog", function(req, res) + { + if (!fs.existsSync(`${outDir}/config.json`)) + { return res.send( 'You need to run build command before accessing blogs
Go Back' ); } - fs.readFile(`${outDir}/config.json`, function(err, data) { - res.render("blog.ejs", { + fs.readFile(`${outDir}/config.json`, function(err, data) + { + res.render("blog.ejs", + { profile: JSON.parse(data) }); }); }); - app.post("/createBlog", function(req, res) { + app.post("/createBlog", function(req, res) + { let title = req.body.title; let subtitle = req.body.subtitle; let content = req.body.content ? req.body.content : null; - if (!title) { + if (!title) + { return res.send("title can't be empty"); } - if (!subtitle) { + if (!subtitle) + { return res.send("subtitle can't be empty"); } - if (!content) { + if (!content) + { return res.send("something isn't working fine, try again :p"); } let folder = title.replace(/[^a-zA-Z ]/g, "").replace(/ /g, "-"); @@ -238,4 +287,4 @@ function uiCommand() { module.exports = { uiCommand -}; +}; \ No newline at end of file diff --git a/update.js b/update.js index 559845f..0e140e7 100644 --- a/update.js +++ b/update.js @@ -1,10 +1,18 @@ -const { getConfig } = require("./utils"); -const { updateHTML } = require("./populate"); +const +{ + getConfig +} = require("./utils"); +const +{ + updateHTML +} = require("./populate"); -async function updateCommand() { +async function updateCommand() +{ const data = await getConfig(); var username = data[0].username; - if (username == null) { + if (username == null) + { console.log( "username not found in config.json, please run build command before using update" ); @@ -18,11 +26,13 @@ async function updateCommand() { twitter: data[0].twitter, linkedin: data[0].linkedin, medium: data[0].medium, - dribbble: data[0].dribbble + dribbble: data[0].dribbble, + telegram: data[0].telegram, + email: data[0].email }; updateHTML(username, opts); } module.exports = { updateCommand -}; +}; \ No newline at end of file diff --git a/views/index.ejs b/views/index.ejs index deea281..cc08c0b 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -1,153 +1,174 @@ - - - - - Gitfolio UI - - - - - - -
- gitfolio - New Blog - Update - Home -
-
-

Build or Edit Portfolio

-
- -

Sort By :

- - + + + + + Gitfolio UI + + + + + - + +
+ gitfolio + New Blog + Update + Home +
+ +

Build or Edit Portfolio

+
+ +

Sort By :

+ - + - + -

Order By :

- - -

- - - - -

- -
- - - - + + + + +

Order By :

+ + +

+ + + + +

+ + + + + + + \ No newline at end of file From 0741978b3fe84ca6895b93ec00dd6a63a3697227 Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sat, 7 Dec 2019 21:53:08 +0530 Subject: [PATCH 062/163] Add Open Graph and Twitter embed information --- populate.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/populate.js b/populate.js index 79dbd34..1d65d45 100644 --- a/populate.js +++ b/populate.js @@ -124,6 +124,18 @@ module.exports.updateHTML = (username, opts) => icon.setAttribute("type", "image/png"); document.getElementsByTagName("head")[0].appendChild(icon); + document.getElementsByTagName("head")[0].innerHTML += ` + + + + + + + + + + + `; document.getElementById( "profile_img" ).style.background = `url('${user.avatar_url}') center center`; From fa52f9f981c078e1c5200e028889721b59e4b139 Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sat, 7 Dec 2019 21:57:38 +0530 Subject: [PATCH 063/163] Removed artificial 1.5-second loading wall --- assets/index.html | 194 ++++++++++++++++++++++------------------------ 1 file changed, 94 insertions(+), 100 deletions(-) diff --git a/assets/index.html b/assets/index.html index 088ceff..1d926ab 100644 --- a/assets/index.html +++ b/assets/index.html @@ -1,78 +1,67 @@ - - - - - - - - - - - - -
-
+ + + + + + + + + + + + +
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+

Work.

+
-
-
-

Work.

-
-
- -
-

Blog.

-
-
- + - + } + }).fail(function() + { + return (document.getElementById("blog_section").style.display = "none"); + }); + - - - + $("document").ready(() => + { + magicProjectsGrid.listen(); + magicForksGrid.listen(); + }); + + + + \ No newline at end of file From 711de4849387f8004d343564cfdf642f1bb3f454 Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sat, 7 Dec 2019 22:33:46 +0530 Subject: [PATCH 064/163] Fix build.js --- build.js | 1 - package-lock.json | 6 +++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/build.js b/build.js index da2afd2..987d709 100644 --- a/build.js +++ b/build.js @@ -99,7 +99,6 @@ async function buildCommand(username, program) twitter: program.twitter, linkedin: program.linkedin, medium: program.medium, - dribbble: program.dribbble dribbble: program.dribbble, telegram: program.telegram, email: program.email diff --git a/package-lock.json b/package-lock.json index 7b825a6..79e886c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -513,9 +513,9 @@ } }, "github-emoji": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.0.tgz", - "integrity": "sha512-FCs0tDDtX/pwkXN6sQE5lUC6B4PIIFC+rv7IZAw8956Mtvo5NQSWHEBJvExl+B8+ahqNVU0W33hMrXSIEFSUvA==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.1.tgz", + "integrity": "sha512-SxiGZf8wfMRwg8QwQlHwKMjR7oyy2H3iCpXRzOTp4Mq/xNTNgV9Yi6Y6zwk0Aty6ZUpRC3oJS+Ya5Dgb+DVTiA==" }, "got": { "version": "9.6.0", From 327e0a93aaf856d5dde9c04b53f630a85e26dcda Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sat, 7 Dec 2019 23:15:42 +0530 Subject: [PATCH 065/163] Travis Test #1 --- package-lock.json | 293 +++++++++++++++++++++++++--------------------- package.json | 14 +-- travis.yml | 18 +++ 3 files changed, 185 insertions(+), 140 deletions(-) create mode 100644 travis.yml diff --git a/package-lock.json b/package-lock.json index 79e886c..22a4c70 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,9 +18,9 @@ } }, "abab": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", - "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==" }, "accepts": { "version": "1.3.7", @@ -32,23 +32,30 @@ } }, "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==" }, "acorn-globals": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", - "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", "requires": { "acorn": "^6.0.1", "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", + "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==" + } } }, "acorn-walk": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", - "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" }, "ajv": { "version": "6.10.2", @@ -85,9 +92,9 @@ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "async-limiter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, "asynckit": { "version": "0.4.0", @@ -100,9 +107,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", - "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz", + "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -113,9 +120,9 @@ } }, "bluebird": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.4.tgz", - "integrity": "sha512-FG+nFEZChJrbQ9tIccIfZJBz3J7mLrAhxakAbnrJWn8d7aKOC+LWifa0G+p4ZqKp4y13T7juYvdhq9NzKdsrjw==" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "body-parser": { "version": "1.19.0", @@ -202,9 +209,9 @@ } }, "commander": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", - "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==" + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "content-disposition": { "version": "0.5.3", @@ -235,16 +242,23 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cssom": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", - "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==" + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" }, "cssstyle": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", - "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.0.0.tgz", + "integrity": "sha512-QXSAu2WBsSRXCPjvI43Y40m6fMevvyRm8JVAuF9ksQz5jha4pWP1wpaK7Yu5oLFc6+XAY+hj8YhefyXcBB53gg==", "requires": { - "cssom": "0.3.x" + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==" + } } }, "dashdash": { @@ -334,9 +348,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "ejs": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.6.2.tgz", - "integrity": "sha512-PcW2a0tyTuPHz3tWyYqtK6r1fZ3gp+3Sop8Ph+ZYN81Ob5rwmbHEzaqs10N3BEsaGTkh/ooniXK+WwszGlc2+Q==" + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" }, "encodeurl": { "version": "1.0.2", @@ -357,9 +371,9 @@ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "escodegen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", - "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", + "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==", "requires": { "esprima": "^3.1.3", "estraverse": "^4.2.0", @@ -374,14 +388,14 @@ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" }, "estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=" + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" }, "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, "etag": { "version": "1.8.1", @@ -389,9 +403,9 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "express": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.0.tgz", - "integrity": "sha512-1Z7/t3Z5ZnBG252gKUPyItc4xdeaA0X934ca2ewckAsVsw9EG71i++ZHZPYnus8g/s5Bty8IMpSVEuRkmwwPRQ==", + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "requires": { "accepts": "~1.3.7", "array-flatten": "1.1.1", @@ -423,13 +437,6 @@ "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" - }, - "dependencies": { - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - } } }, "extend": { @@ -536,9 +543,9 @@ } }, "handlebars": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", - "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", + "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", "requires": { "neo-async": "^2.6.0", "optimist": "^0.6.1", @@ -608,6 +615,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=" + }, "ipaddr.js": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", @@ -629,35 +641,35 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsdom": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.1.0.tgz", - "integrity": "sha512-QEmc2XIkNfCK3KRfa9ljMJjC4kAGdVgRrs/pCBsQG/QoKz0B42+C58f6TdAmhq/rw494eFCoLHxX6+hWuxb96Q==", + "version": "15.2.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", + "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", "requires": { "abab": "^2.0.0", - "acorn": "^6.0.4", - "acorn-globals": "^4.3.0", + "acorn": "^7.1.0", + "acorn-globals": "^4.3.2", "array-equal": "^1.0.0", - "cssom": "^0.3.4", - "cssstyle": "^1.1.1", + "cssom": "^0.4.1", + "cssstyle": "^2.0.0", "data-urls": "^1.1.0", "domexception": "^1.0.1", - "escodegen": "^1.11.0", + "escodegen": "^1.11.1", "html-encoding-sniffer": "^1.0.2", - "nwsapi": "^2.1.3", + "nwsapi": "^2.2.0", "parse5": "5.1.0", "pn": "^1.1.0", "request": "^2.88.0", - "request-promise-native": "^1.0.5", + "request-promise-native": "^1.0.7", "saxes": "^3.1.9", "symbol-tree": "^3.2.2", - "tough-cookie": "^2.5.0", + "tough-cookie": "^3.0.1", "w3c-hr-time": "^1.0.1", "w3c-xmlserializer": "^1.1.2", "webidl-conversions": "^4.0.2", "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", "whatwg-url": "^7.0.0", - "ws": "^6.1.2", + "ws": "^7.0.0", "xml-name-validator": "^3.0.0" } }, @@ -710,9 +722,9 @@ } }, "lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw==" + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, "lodash.sortby": { "version": "4.7.0", @@ -793,9 +805,9 @@ "integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==" }, "nwsapi": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.4.tgz", - "integrity": "sha512-iGfd9Y6SFdTNldEy2L0GUhcarIutFmk+MPWIn9dmj8NMIup03G08uUF2KGbbmv/Ux4RT0VZJoP/sVbWA6d/VIw==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==" }, "oauth-sign": { "version": "0.9.0", @@ -825,26 +837,19 @@ "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } } }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" + "word-wrap": "~1.2.3" } }, "p-cancelable": { @@ -888,9 +893,9 @@ "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, "prettier": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.18.2.tgz", - "integrity": "sha512-OeHeMc0JhFE9idD4ZdtNibzY0+TPHSpSSb9h8FqtP+YnoZZ1sl8Vc9b1sasjfymH3SonAF4QcA2+mzHPhMvIiw==" + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==" }, "proxy-addr": { "version": "2.0.5", @@ -902,9 +907,9 @@ } }, "psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", + "integrity": "sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==" }, "pump": { "version": "3.0.0", @@ -921,9 +926,9 @@ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, "range-parser": { "version": "1.2.1", @@ -973,6 +978,11 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -985,21 +995,32 @@ } }, "request-promise-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", - "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", "requires": { - "lodash": "^4.17.11" + "lodash": "^4.17.15" } }, "request-promise-native": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", - "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", "requires": { - "request-promise-core": "1.1.2", + "request-promise-core": "1.1.3", "stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" + }, + "dependencies": { + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } } }, "responselike": { @@ -1021,11 +1042,11 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "saxes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.9.tgz", - "integrity": "sha512-FZeKhJglhJHk7eWG5YM0z46VHmI3KJpMBAQm3xa9meDvd+wevB5GuBB0wc0exPInZiBBHqi00DbS8AcvCGCFMw==", + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", "requires": { - "xmlchars": "^1.3.1" + "xmlchars": "^2.1.1" } }, "send": { @@ -1103,9 +1124,9 @@ "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" }, "symbol-tree": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", - "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=" + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "to-readable-stream": { "version": "1.0.0", @@ -1118,10 +1139,11 @@ "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", + "integrity": "sha512-yQyJ0u4pZsv9D4clxO69OEjLWYw+jbgspjTue4lTQZLfV0c5l1VmK2y1JK8E9ahdpltPOaAThPcp5nKPUgSnsg==", "requires": { + "ip-regex": "^2.1.0", "psl": "^1.1.28", "punycode": "^2.1.1" } @@ -1165,12 +1187,12 @@ } }, "uglify-js": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.13.tgz", - "integrity": "sha512-Lho+IJlquX6sdJgyKSJx/M9y4XbDd3ekPjD8S6HYmT5yVSwDtlSuca2w5hV4g2dIsp0Y/4orbfWxKexodmFv7w==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.1.tgz", + "integrity": "sha512-pnOF7jY82wdIhATVn87uUY/FHU+MDUdPLkmGFvGoclQmeu229eTkbG5gjGGBi3R7UuYYSEeYXY/TTY5j2aym2g==", "optional": true, "requires": { - "commander": "~2.20.0", + "commander": "~2.20.3", "source-map": "~0.6.1" } }, @@ -1201,9 +1223,9 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, "vary": { "version": "1.1.2", @@ -1257,19 +1279,24 @@ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" }, "whatwg-url": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", - "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", "requires": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", "webidl-conversions": "^4.0.2" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" }, "wrappy": { "version": "1.0.2", @@ -1277,11 +1304,11 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "ws": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", - "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.0.tgz", + "integrity": "sha512-+SqNqFbwTm/0DC18KYzIsMTnEWpLwJsiasW/O17la4iDRRIO9uaHbvKiAS3AHgTiuuWerK/brj4O6MYZkei9xg==", "requires": { - "async-limiter": "~1.0.0" + "async-limiter": "^1.0.0" } }, "xml-name-validator": { @@ -1290,9 +1317,9 @@ "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" }, "xmlchars": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-1.3.1.tgz", - "integrity": "sha512-tGkGJkN8XqCod7OT+EvGYK5Z4SfDQGD30zAa58OcnAa0RRWgzUEK72tkXhsX1FZd+rgnhRxFtmO+ihkp8LHSkw==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" } } } diff --git a/package.json b/package.json index 8f79df5..6d13dbe 100644 --- a/package.json +++ b/package.json @@ -33,16 +33,16 @@ }, "license": "GPL-3.0", "dependencies": { - "bluebird": "^3.5.4", + "bluebird": "^3.7.2", "body-parser": "^1.19.0", - "commander": "^2.20.0", - "ejs": "^2.6.2", - "express": "^4.17.0", + "commander": "^2.20.3", + "ejs": "^2.7.4", + "express": "^4.17.1", "github-emoji": "^1.1.1", "got": "^9.6.0", - "handlebars": "^4.1.2", - "jsdom": "^15.1.0", + "handlebars": "^4.5.3", + "jsdom": "^15.2.1", "ncp": "^2.0.0", - "prettier": "^1.18.2" + "prettier": "^1.19.1" } } diff --git a/travis.yml b/travis.yml new file mode 100644 index 0000000..e851e72 --- /dev/null +++ b/travis.yml @@ -0,0 +1,18 @@ +language: node_js +node_js: + - 11 +dist: bionic +deploy: + provider: pages + skip_cleanup: true + github_token: $GITHUB_TOKEN + keep_history: true +on: + branch: master +cache: + directories: + - node_modules +before_script: + - npm install ./ +script: + - gitfolio k4ustu3h From 624b31969a500dfb6ce72feae3a5439ccb70ff38 Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sat, 7 Dec 2019 23:20:53 +0530 Subject: [PATCH 066/163] Update travis.yml --- travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/travis.yml b/travis.yml index e851e72..484eb59 100644 --- a/travis.yml +++ b/travis.yml @@ -1,7 +1,6 @@ language: node_js node_js: - - 11 -dist: bionic + - 7 deploy: provider: pages skip_cleanup: true From ec65c58c0805a00e7c44cf609c7d502282dd527d Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sun, 8 Dec 2019 01:32:51 +0530 Subject: [PATCH 067/163] Travis Test 3 --- travis.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/travis.yml b/travis.yml index 484eb59..0a95570 100644 --- a/travis.yml +++ b/travis.yml @@ -12,6 +12,7 @@ cache: directories: - node_modules before_script: - - npm install ./ + - npm install script: - - gitfolio k4ustu3h + - gitfolio k4ustu3h & + - npm test \ No newline at end of file From fbe28586300430af8e384c3b77b6fd0b18bea426 Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sun, 8 Dec 2019 01:36:46 +0530 Subject: [PATCH 068/163] Travis Test 5 --- travis.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/travis.yml b/travis.yml index 0a95570..bc4893c 100644 --- a/travis.yml +++ b/travis.yml @@ -1,18 +1,24 @@ language: node_js + node_js: - 7 + deploy: provider: pages skip_cleanup: true github_token: $GITHUB_TOKEN keep_history: true + on: branch: master + cache: directories: - node_modules + before_script: - npm install + script: - gitfolio k4ustu3h & - npm test \ No newline at end of file From c06df995a6f0df960cd0dfab12ddff8007dbdc78 Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sun, 8 Dec 2019 03:25:25 +0530 Subject: [PATCH 069/163] Yeah, I'm this stupid... --- travis.yml => .travis.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename travis.yml => .travis.yml (100%) diff --git a/travis.yml b/.travis.yml similarity index 100% rename from travis.yml rename to .travis.yml From cecc8c82ad83528e1700f4414e630d00513c2739 Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sun, 8 Dec 2019 03:28:58 +0530 Subject: [PATCH 070/163] Travis Test 7 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index bc4893c..7846eff 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,7 @@ cache: - node_modules before_script: - - npm install + - npm install -g script: - gitfolio k4ustu3h & From 0775b863f1a9c01ce17cca1d01635f5e14ed8524 Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sun, 8 Dec 2019 03:33:27 +0530 Subject: [PATCH 071/163] Travis Test 8 --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7846eff..0d9d794 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,5 +20,4 @@ before_script: - npm install -g script: - - gitfolio k4ustu3h & - - npm test \ No newline at end of file + - gitfolio k4ustu3h \ No newline at end of file From b2b2458fd67fddb307a554fc6f74c2360d35a2bc Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sun, 8 Dec 2019 16:59:28 +0530 Subject: [PATCH 072/163] Travis Test 9 --- .travis.yml | 29 +++++----- README.md | 161 +--------------------------------------------------- 2 files changed, 14 insertions(+), 176 deletions(-) diff --git a/.travis.yml b/.travis.yml index 0d9d794..f176e8a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,23 +1,20 @@ +dist: bionic language: node_js - node_js: - - 7 - + - 11 +cache: + directories: + - node_modules +before_script: + - npm install -g +script: + - gitfolio build k4ustu3h deploy: provider: pages skip_cleanup: true github_token: $GITHUB_TOKEN keep_history: true - -on: - branch: master - -cache: - directories: - - node_modules - -before_script: - - npm install -g - -script: - - gitfolio k4ustu3h \ No newline at end of file + local_dir: dist + verbose: true + on: + branch: master diff --git a/README.md b/README.md index 3ea7c1c..ee6f3fd 100644 --- a/README.md +++ b/README.md @@ -1,160 +1 @@ - - -# Gitfolio - -[![Tweet](https://img.shields.io/twitter/url/https/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=personal%20website%20and%20a%20blog%20for%20every%20github%20user%20@imfunnieee%20&url=https://github.com/imfunniee/gitfolio) ![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=popout-square) ![npm](https://img.shields.io/npm/dm/gitfolio.svg?style=popout-square) ![GitHub top language](https://img.shields.io/github/languages/top/imfunniee/gitfolio.svg?style=popout-square) ![GitHub last commit](https://img.shields.io/github/last-commit/imfunniee/gitfolio.svg?style=popout-square) ![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier) - -### personal website + blog for every github user - -Gitfolio will help you get started with a portfolio website where you could showcase your work + a blog that will help you spread your ideas into real world. - -Check out this [live demo](https://imfunniee.github.io/gitfolio/) to see gitfolio in action. - -# Getting Started - -### Let's Install - -Install gitfolio - -```sh -npm i gitfolio -g -``` - -### Let's Build - -Using the UI - -```sh -$ gitfolio ui -``` - -> Tip: You can use ui to create new blogs and for updating your folio too. - -or - -```sh -gitfolio build -``` - -`` is your username on github. This will build your website using your GitHub username and put it in the `/dist` folder. - -To run your website use `run` command, Default port is 3000 - -```sh -gitfolio run -p [port] -``` - -🎉 Congrats, you just made yourself a personal website! - -### Let's Customize - -#### Forks - -To include forks on your personal website just provide `-f` or `--fork` argument while building - -```sh -$ gitfolio build -f -``` - -#### Sorting Repos - -To sort repos provide `--sort [sortBy]` argument while building. Where `[sortBy]` can be `star`, `created`, `updated`, `pushed`,`full_name`. Default: `created` - -```sh -$ gitfolio build --sort star -``` - -#### Ordering Repos - -To order the sorted repos provide `--order [orderBy]` argument while building. Where `[orderBy]` can be `asc` or `desc`. Default: `asc` - -```sh -$ gitfolio build --sort star --order desc -``` - -#### Customize Themes - -Themes are specified using the `--theme [theme-name]` flag when running the `build` command. The available themes are - -- `light` -- `dark` - -> TODO: Add more themes - -For example, the following command will build the website with the dark theme - -```sh -$ gitfolio build --theme dark -``` - -#### Customize background image - -To customize the background image just provide `--background [url]` argument while building - -```sh -$ gitfolio build --background https://images.unsplash.com/photo-1557277770-baf0ca74f908?w=1634 -``` - -You could also add in your custom CSS inside `index.css` to give it a more personal feel. - -#### Add Social Media links on your profile - -Twitter, LinkedIn, Medium, Dribbble, Telegram & email links to your profile while building - -```sh -gitfolio build --twitter --linkedin --medium --dribbble --telegram --email -``` - -### Let's Publish - -Head over to GitHub and create a new repository named `username.github.io`, where username is your username. Push the files inside`/dist` folder to repo you just created. - -Go To `username.github.io` your site should be up!! - -### Updating - -To update your info, simply run - -```sh -$ gitfolio update -``` - -or use the `Update` options in gitfolio's UI - -This will update your info and your repository info. - -To Update background or theme you need to run `build` command again. - -### Add a Blog - -To add your first blog use the UI. - -```sh -$ gitfolio ui -``` - -This will open up a UI page and you can click on `New Blog` to create a new blog. Once you are done writing your blog you can hit the `Create Blog`. - -This will create a blog inside `./dist/blog` folder. - -Look for success or error in your terminal. - -This also adds content to `blog.json` file. This file helps in showcasing your blogs on your personal website as [cards](https://imfunniee.github.io/gitfolio/#blog_section). You could customize the JSON object that corresponds your current blog. - -Blog Demo? [here](https://imfunniee.github.io/gitfolio/blog/my-first-post/) - -Blog's default JSON Format - - { - "url_title": "my-first-blog", // the title you provide while creating a new blog, this appears in url - "title": "Lorem ipsum dolor sit amet", // main title of blog - "sub_title": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.", // sub-title of blog - "top_image": "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1450", // main image of blog - "visible": true // don't worry about this - } - -### Follow me on twitter for more updates [@imfunnieee](https://twitter.com/imfunnieee) - -### License - -![GitHub](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=popout-square) +[![Build Status](https://travis-ci.org/k4ustu3h/gitfolio.svg?branch=master)](https://travis-ci.org/k4ustu3h/gitfolio) From ef3d9c94ee8b34c1b4d91cef6aaf525f1b373e3b Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sun, 8 Dec 2019 17:15:22 +0530 Subject: [PATCH 073/163] Add David Badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ee6f3fd..f45203b 100644 --- a/README.md +++ b/README.md @@ -1 +1,2 @@ [![Build Status](https://travis-ci.org/k4ustu3h/gitfolio.svg?branch=master)](https://travis-ci.org/k4ustu3h/gitfolio) +[![Dependency Status](https://david-dm.org/k4ustu3h/gitfolio.svg)](https://david-dm.org/k4ustu3h/gitfolio) From 608f348cb5cbaa8e5c459341be511298e2dfaf2e Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sun, 8 Dec 2019 17:47:18 +0530 Subject: [PATCH 074/163] Update dependencies and remove Prettier --- package-lock.json | 220 +++++++++++++++++++++++++++------------------- package.json | 12 +-- 2 files changed, 136 insertions(+), 96 deletions(-) diff --git a/package-lock.json b/package-lock.json index 22a4c70..d408570 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,16 +5,53 @@ "requires": true, "dependencies": { "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-1.2.0.tgz", + "integrity": "sha512-mwhXGkRV5dlvQc4EgPDxDxO6WuMBVymGFd1CA+2Y+z5dG9MNspoQ+AWjl/Ld1MnpCL8AKbosZlDVohqcIwuWsw==" }, "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-3.1.1.tgz", + "integrity": "sha512-F7vS53bV9NXT+mmYFeSBr2nXaOI1h6qxdlLDVP+4CPG/c60MMStT7aaqYD2TSNWob1DA3GH9ikFY0UW31bUsWA==", "requires": { - "defer-to-connect": "^1.0.1" + "defer-to-connect": "^1.1.1" + } + }, + "@types/cacheable-request": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", + "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } + }, + "@types/http-cache-semantics": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", + "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" + }, + "@types/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-OxT2IEeRdwvoUyp8n1v1hTIFzATb3NQYN8OHv/XbXRHiF2DXwKyzoI4UUaQgwZkRflLaSgyttat+RfWgsKIMIQ==", + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "12.12.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz", + "integrity": "sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==" + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "requires": { + "@types/node": "*" } }, "abab": { @@ -158,10 +195,18 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, + "cacheable-lookup": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-0.2.1.tgz", + "integrity": "sha512-BQ8MRjxJASEq2q+w0SusPU3B054gS278K8sj58QCLMZIso5qG05+MdCdmXxuyVlfvI8h4bPsNOavVUauVCGxrg==", + "requires": { + "keyv": "^3.1.0" + } + }, "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.0.tgz", + "integrity": "sha512-UVG4gMn3WjnAeFBBx7RFoprgOANIAkMwN5Dta6ONmfSwrCxfm0Ip7g0mIBxIRJZX9aDsoID0Ry3dU5Pr0csKKA==", "requires": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -169,22 +214,7 @@ "keyv": "^3.0.0", "lowercase-keys": "^2.0.0", "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", - "requires": { - "pump": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - } + "responselike": "^2.0.0" } }, "caseless": { @@ -198,6 +228,13 @@ "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "requires": { "mimic-response": "^1.0.0" + }, + "dependencies": { + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + } } }, "combined-stream": { @@ -209,9 +246,9 @@ } }, "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.0.1.tgz", + "integrity": "sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==" }, "content-disposition": { "version": "0.5.3", @@ -288,11 +325,11 @@ } }, "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-5.0.0.tgz", + "integrity": "sha512-TLZWWybuxWgoW7Lykv+gq9xvzOsUjQ9tF09Tj6NSTYGMTCHNXzrPnD6Hi+TgZq19PyTAGH4Ll/NIM/eTGglnMw==", "requires": { - "mimic-response": "^1.0.0" + "mimic-response": "^2.0.0" } }, "deep-is": { @@ -301,9 +338,9 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, "defer-to-connect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.0.2.tgz", - "integrity": "sha512-k09hcQcTDY+cwgiwa6PYKLm3jlagNzQ+RSvhjzESOGOx+MNOuXkxTfEvPrO1IOQ81tArCFYQgi631clB70RpQw==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.1.tgz", + "integrity": "sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ==" }, "delayed-stream": { "version": "1.0.0", @@ -348,9 +385,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.1.tgz", + "integrity": "sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw==" }, "encodeurl": { "version": "1.0.2", @@ -358,9 +395,9 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { "once": "^1.4.0" } @@ -504,9 +541,9 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", "requires": { "pump": "^3.0.0" } @@ -525,21 +562,24 @@ "integrity": "sha512-SxiGZf8wfMRwg8QwQlHwKMjR7oyy2H3iCpXRzOTp4Mq/xNTNgV9Yi6Y6zwk0Aty6ZUpRC3oJS+Ya5Dgb+DVTiA==" }, "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/got/-/got-10.0.2.tgz", + "integrity": "sha512-ojjUBCvrhkbEiQRAI8OIcSsCpM+EiVEX5xaoUAS6wFGlnoNa3KnDTiavRfAWXO9x29rA7sl2igh3E7z8glq9Gg==", "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", + "@sindresorhus/is": "^1.0.0", + "@szmarczak/http-timer": "^3.1.1", + "@types/cacheable-request": "^6.0.1", + "cacheable-lookup": "^0.2.1", + "cacheable-request": "^7.0.0", + "decompress-response": "^5.0.0", "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" + "get-stream": "^5.0.0", + "lowercase-keys": "^2.0.0", + "mimic-response": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0", + "to-readable-stream": "^2.0.0", + "type-fest": "^0.8.0" } }, "handlebars": { @@ -732,9 +772,9 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" }, "media-typer": { "version": "0.3.0", @@ -770,9 +810,9 @@ } }, "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.0.0.tgz", + "integrity": "sha512-8ilDoEapqA4uQ3TwS0jakGONKXVJqpy+RpM+3b7pLdOjghCrEiGp9SRkFbUHAmZW9vdnrENWHjaweIoTIJExSQ==" }, "minimist": { "version": "0.0.10", @@ -800,9 +840,9 @@ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" }, "normalize-url": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.3.0.tgz", - "integrity": "sha512-0NLtR71o4k6GLP+mr6Ty34c5GA6CMoEsncKJxvQd8NzPxaHRJNnb5gZE8R1XF4CPIS7QPHLJ74IFszwtNVAHVQ==" + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" }, "nwsapi": { "version": "2.2.0", @@ -853,9 +893,9 @@ } }, "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", + "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" }, "parse5": { "version": "5.1.0", @@ -887,11 +927,6 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - }, "prettier": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", @@ -1024,11 +1059,11 @@ } }, "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", "requires": { - "lowercase-keys": "^1.0.0" + "lowercase-keys": "^2.0.0" } }, "safe-buffer": { @@ -1129,9 +1164,9 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-2.1.0.tgz", + "integrity": "sha512-o3Qa6DGg1CEXshSdvWNX2sN4QHqg03SPq7U6jPXRahlQdl5dK8oXjkU/2/sGrnOZKeGV1zLSO8qPwyKklPPE7w==" }, "toidentifier": { "version": "1.0.0", @@ -1177,6 +1212,11 @@ "prelude-ls": "~1.1.2" } }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + }, "type-is": { "version": "1.6.18", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", @@ -1194,6 +1234,14 @@ "requires": { "commander": "~2.20.3", "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "optional": true + } } }, "unpipe": { @@ -1209,14 +1257,6 @@ "punycode": "^2.1.0" } }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "requires": { - "prepend-http": "^2.0.0" - } - }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", diff --git a/package.json b/package.json index 6d13dbe..f9cde55 100644 --- a/package.json +++ b/package.json @@ -35,14 +35,14 @@ "dependencies": { "bluebird": "^3.7.2", "body-parser": "^1.19.0", - "commander": "^2.20.3", - "ejs": "^2.7.4", + "commander": "4.0.1", + "ejs": "3.0.1", "express": "^4.17.1", "github-emoji": "^1.1.1", - "got": "^9.6.0", + "got": "10.0.2", "handlebars": "^4.5.3", "jsdom": "^15.2.1", - "ncp": "^2.0.0", - "prettier": "^1.19.1" - } + "ncp": "^2.0.0" + }, + "devDependencies": {} } From ebb5785ea0496a4ab02b8d395873fd6edfedda15 Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sun, 8 Dec 2019 18:58:49 +0530 Subject: [PATCH 075/163] Add additional arguments --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f176e8a..2ab2a0e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ cache: before_script: - npm install -g script: - - gitfolio build k4ustu3h + - gitfolio build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com deploy: provider: pages skip_cleanup: true From 723c6925ed3c8f9727e3001d6fb59550b7c8b680 Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sun, 8 Dec 2019 19:25:29 +0530 Subject: [PATCH 076/163] Replace Poppins and Questrial fonts with Asap and Asap Condensed --- assets/index.css | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/assets/index.css b/assets/index.css index 159c756..7739467 100644 --- a/assets/index.css +++ b/assets/index.css @@ -1,5 +1,5 @@ -@import url("https://fonts.googleapis.com/css?family=Poppins"); -@import url("https://fonts.googleapis.com/css?family=Questrial"); +@import url("https://fonts.googleapis.com/css?family=Asap"); +@import url('https://fonts.googleapis.com/css?family=Asap+Condensed'); body { margin: 0%; @@ -10,7 +10,7 @@ body { max-width: 100vw; overflow-x: hidden; align-items: center; - font-family: "Poppins", sans-serif; + font-family: "Asap", sans-serif; } #loading { @@ -76,7 +76,7 @@ body { font-size: 50px; color: var(--text-color); font-weight: bold; - font-family: "Questrial", sans-serif; + font-family: "Asap", sans-serif; } .emoji { @@ -95,18 +95,18 @@ body { #username_blog { font-size: 18px; color: var(--text-color); - font-family: "Poppins", sans-serif; + font-family: "Asap Condensed", sans-serif; font-weight: bold; } #username_blog span { font-size: 24px; - font-family: "Questrial", sans-serif !important; + font-family: "Asap Condensed", sans-serif !important; } #username_blog b { font-size: 12px; - font-family: "Poppins", sans-serif; + font-family: "Asap Condensed", sans-serif; font-weight: bold; } @@ -150,7 +150,7 @@ body { font-size: 50px; color: var(--text-color); font-weight: bold; - font-family: "Questrial", sans-serif; + font-family: "Asap", sans-serif; } #blog-display h2 { @@ -159,7 +159,7 @@ body { #blog-display { padding: 1vh 0px; - font-family: "Questrial", sans-serif; + font-family: "Asap", sans-serif; } #blog p { @@ -205,7 +205,7 @@ body { #footer_blog a { color: var(--text-color) !important; text-decoration: none; - font-family: "Questrial", sans-serif; + font-family: "Asap", sans-serif; font-weight: bold; } @@ -218,7 +218,7 @@ body { #footer a { color: var(--text-color) !important; text-decoration: none; - font-family: "Questrial", sans-serif; + font-family: "Asap", sans-serif; font-weight: bold; } @@ -242,21 +242,23 @@ body { #username { font-size: 18px; font-weight: bold; + font-family: "Asap Condensed", sans-serif; } #username span { font-size: 24px; + font-family: "Asap Condensed", sans-serif; } #userbio { font-size: 26px; - font-family: "Questrial", sans-serif; + font-family: "Asap", sans-serif; width: 100%; } #about { font-size: 18px; - font-family: "Questrial", sans-serif; + font-family: "Asap", sans-serif; } #about a, @@ -333,7 +335,7 @@ body { .about_section { font-size: 18px; - font-family: "Questrial", sans-serif; + font-family: "Asap", sans-serif; margin: 2vh 0px; font-weight: bold; word-wrap: break-word; @@ -544,4 +546,4 @@ body { ::-webkit-scrollbar-thumb { background: var(--text-color); -} +} \ No newline at end of file From 8527e9bfdf29b54e3422c39f024a4ef3254b07bd Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sun, 8 Dec 2019 20:28:48 +0530 Subject: [PATCH 077/163] Remove every Blog related code --- assets/blog/blog.json | 1 - assets/blog/blogTemplate.html | 125 ---------------- assets/index.css | 188 ------------------------ assets/index.html | 35 ----- assets/themes/dark.css | 43 ++---- assets/themes/light.css | 13 +- bin/gitfolio.js | 5 - default/blog.json | 1 - package.json | 19 +-- populate.js | 5 - ui.js | 176 ----------------------- utils.js | 24 ++-- views/blog.ejs | 259 ---------------------------------- views/css/index.css | 128 +---------------- views/index.ejs | 2 - 15 files changed, 41 insertions(+), 983 deletions(-) delete mode 100644 assets/blog/blog.json delete mode 100644 assets/blog/blogTemplate.html delete mode 100644 default/blog.json delete mode 100644 views/blog.ejs diff --git a/assets/blog/blog.json b/assets/blog/blog.json deleted file mode 100644 index fe51488..0000000 --- a/assets/blog/blog.json +++ /dev/null @@ -1 +0,0 @@ -[] diff --git a/assets/blog/blogTemplate.html b/assets/blog/blogTemplate.html deleted file mode 100644 index 588b6b5..0000000 --- a/assets/blog/blogTemplate.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - Lorem ipsum dolor - - - - - -
-
-
- -
-
- - - - - - - -
-
-
-
-

Lorem ipsum dolor

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. -

-
- -

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut placerat - pretium sem, ac maximus dui sodales a. Nunc aliquet hendrerit turpis - ac egestas. Phasellus volutpat tristique maximus. - Pellentesque feugiat eget nisi et dignissim. Nam nibh erat, - sollicitudin non facilisis nec, scelerisque nec ipsum. Sed accumsan - velit condimentum, pharetra felis vitae, commodo tellus. - Mauris consequat luctus orci. -

-

- Vivamus pharetra lobortis dui non tincidunt. Mauris vitae nisi - vestibulum, mollis magna a, maximus mi. Suspendisse dictum eget augue - quis sodales. Quisque rutrum ligula nec dapibus tincidunt. - Proin hendrerit massa a tellus vestibulum, a hendrerit ipsum - iaculis. Suspendisse potenti. - Praesent eget erat blandit, finibus sapien vitae, ullamcorper erat. - Integer blandit, felis at ullamcorper maximus, odio lectus pretium - mauris, vel consequat lectus quam eu risus. Pellentesque gravida nec - diam eget vehicula. -

- -

- Donec hendrerit turpis non libero eleifend dignissim. Mauris non - tempor metus, et tristique massa. Integer consequat justo quam, vitae - aliquam arcu vestibulum at. Donec porttitor quam in tempus convallis. - Praesent feugiat eget eros vitae accumsan. Duis ultricies odio quis - nisl volutpat, consectetur imperdiet sem laoreet. Quisque maximus - semper ligula at tincidunt. Pellentesque accumsan varius vehicula. -

-
-
- - - - diff --git a/assets/index.css b/assets/index.css index 7739467..68c03e7 100644 --- a/assets/index.css +++ b/assets/index.css @@ -84,48 +84,6 @@ body { height: 18px; } -#profile_img_blog { - border-radius: 50%; - width: 90px; - height: 90px; - background-size: cover !important; - background-repeat: no-repeat; -} - -#username_blog { - font-size: 18px; - color: var(--text-color); - font-family: "Asap Condensed", sans-serif; - font-weight: bold; -} - -#username_blog span { - font-size: 24px; - font-family: "Asap Condensed", sans-serif !important; -} - -#username_blog b { - font-size: 12px; - font-family: "Asap Condensed", sans-serif; - font-weight: bold; -} - -#blog-display { - width: 60vw; - margin: 0px 20vw; - text-align: left; - margin-top: 3vh; - z-index: 1; -} - -#profile_blog { - width: 60vw; - margin: 0px 20vw; - margin-top: 34vh; - text-align: left; - z-index: 1; -} - #background_overlay { width: 100vw; height: 55vh; @@ -146,42 +104,6 @@ body { left: 0; } -#blog-display h1 { - font-size: 50px; - color: var(--text-color); - font-weight: bold; - font-family: "Asap", sans-serif; -} - -#blog-display h2 { - color: var(--blog-gray-color); -} - -#blog-display { - padding: 1vh 0px; - font-family: "Asap", sans-serif; -} - -#blog p { - font-size: 17px; - line-height: 25px; - word-spacing: 1.2px; - margin: 5vh 0px; -} - -#blog p span { - padding: 2px 4px; - background: var(--text-color); - color: var(--bg-color) !important; -} - -#blog img { - width: 100%; - margin: 2vh 0px; - border-radius: 5px; - border: 1px solid rgb(0, 0, 0, 0.08); -} - #header { width: 63vw; text-align: right; @@ -196,19 +118,6 @@ body { font-weight: bold; } -#footer_blog { - width: 90vw; - padding: 8vh 5vw; - text-align: center; -} - -#footer_blog a { - color: var(--text-color) !important; - text-decoration: none; - font-family: "Asap", sans-serif; - font-weight: bold; -} - #footer { width: 100%; padding: 8vh 0px; @@ -372,53 +281,6 @@ body { font-weight: normal !important; } -#blog_section { - margin: 2vh 0px; - padding: 2vh 0px !important; -} - -#blogs { - columns: 2; -} - -#blog_title { - font-size: 50px; -} - -#blog_sub_title { - font-size: 36px; - margin-top: -2vh; -} - -#blogs section { - width: 100%; - display: inline-block; - border-radius: 5px; - color: var(--text-color); - border: 1px solid rgb(0, 0, 0, 0.04); - box-shadow: 0px 0px 0px rgb(0, 0, 0, 0); - transition: 0.4s ease-in-out; - transform: scale(1); - padding: 0px; - margin: 2vh 0px; -} - -#blogs section img { - width: 100%; - border-radius: 5px 5px 0px 0px; -} - -.blog_container { - padding: 2.5vh 5%; -} - -#blogs section:hover { - cursor: pointer; - border: 1px solid rgb(0, 0, 0, 0); - box-shadow: 0px 15px 35px rgb(0, 0, 0, 0.06); - transform: scale(1.03); -} - .go_back { position: absolute; color: var(--text-color); @@ -476,48 +338,6 @@ body { width: 88%; } - #blogs { - columns: 1; - } - - #blogs section { - width: 98%; - } - - #blog_section { - margin: 0px; - } - - #blog-display { - width: 90vw; - margin: 0px 5vw; - text-align: left; - margin-top: 0vh; - z-index: 1; - } - - #blog_title { - font-size: 32px !important; - } - - #blog_sub_title { - font-size: 24px; - margin-top: -1vh; - } - - #profile_blog { - width: 90vw; - margin: 0px 5vw; - margin-top: 36vh; - text-align: left; - z-index: 1; - } - - #profile_img_blog { - width: 65px; - height: 65px; - } - .go_back { position: relative; color: var(--text-color); @@ -525,14 +345,6 @@ body { margin-left: 5vw; top: 5vh; } - - #blog img { - margin: 1vh 0px !important; - } - - #blog p { - margin: 2vh 0px; - } } ::-webkit-scrollbar { diff --git a/assets/index.html b/assets/index.html index 1d926ab..46f16de 100644 --- a/assets/index.html +++ b/assets/index.html @@ -41,46 +41,11 @@
-
-

Blog.

-
-
- - - - - diff --git a/views/css/index.css b/views/css/index.css index d8528cd..1e77aaf 100644 --- a/views/css/index.css +++ b/views/css/index.css @@ -104,93 +104,6 @@ button:hover { cursor: pointer; } -#profile_blog { - width: 60vw; - margin: 0px 20vw; - margin-top: 42vh !important; - text-align: left; - z-index: 1; - transition: 0.4s ease-in-out; - z-index: 2; - position: relative; -} - -#profile_img_blog { - border-radius: 50%; - width: 90px; - height: 90px; - background-size: cover !important; - background-repeat: no-repeat; -} - -#username_blog { - font-size: 18px; - color: #000; - font-family: "Poppins", sans-serif; - font-weight: bold; - padding-left: 0px; -} - -#username_blog span { - font-size: 24px; - font-family: "Questrial", sans-serif !important; -} - -#username_blog b { - font-size: 12px; - font-family: "Poppins", sans-serif; - font-weight: bold; -} - -#blog-display { - width: 60vw; - margin: 3vh 20vw; - text-align: left; - z-index: 1; - transition: 0.4s ease-in-out; - z-index: 2; - position: relative; -} - -#blog_title { - font-size: 50px; - color: #000; - font-weight: bold; - font-family: "Questrial", sans-serif; - background: transparent; - border: 0px; - width: 100%; - resize: none; - height: auto; - overflow-y: hidden; -} - -#blog_sub_title { - font-size: 36px; - color: rgb(100, 100, 100); - font-weight: bold; - font-family: "Questrial", sans-serif; - background: transparent; - border: 0px; - width: 100%; - resize: none; - height: auto; - overflow-y: hidden; -} - -#blog_sub_title::placeholder { - color: rgb(100, 100, 100); -} - -#blog-display h2 { - color: var(--blog-gray-color); -} - -#blog-display { - padding: 1vh 0px; - font-family: "Questrial", sans-serif; -} - .div_for_buttons { margin-top: 5vh; } @@ -215,17 +128,6 @@ button:hover { color: #fff !important; } -#blog { - margin-top: 2vh; -} - -#blog img { - width: 100%; - margin: 2vh 0px; - border-radius: 5px; - border: 1px solid rgb(0, 0, 0, 0.08); -} - .remove { margin-bottom: 2vh 0px; font-weight: bold; @@ -243,34 +145,6 @@ button:hover { color: rgb(255, 70, 70); } -@media (max-width: 800px) { - #blog-display { - width: 90vw; - margin: 0px 5vw; - text-align: left; - margin-top: 0vh; - z-index: 1; - } - - #profile_blog { - width: 90vw; - margin: 0px 5vw; - } - - #profile_img_blog { - width: 70px; - height: 70px; - } - - #blog img { - margin: 1vh 0px !important; - } - - #blog p { - margin: 2vh 0px; - } -} - ::selection { color: #fff; background: #000; @@ -296,4 +170,4 @@ textarea:focus { ::placeholder { color: #000; -} +} \ No newline at end of file diff --git a/views/index.ejs b/views/index.ejs index cc08c0b..4daeb31 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -24,8 +24,6 @@
gitfolio - New Blog Update Date: Sun, 8 Dec 2019 21:32:06 +0530 Subject: [PATCH 078/163] Replace Font Awesome with Material Design Icons --- assets/index.css | 78 +++++++++++++++++++++++++++++++++++++++++++++++ assets/index.html | 4 +-- populate.js | 26 ++++++++-------- 3 files changed, 92 insertions(+), 16 deletions(-) diff --git a/assets/index.css b/assets/index.css index 68c03e7..a2cab86 100644 --- a/assets/index.css +++ b/assets/index.css @@ -358,4 +358,82 @@ body { ::-webkit-scrollbar-thumb { background: var(--text-color); +} + +/* Material Icons */ +.mdi::before { + font-size: 24px; + line-height: 14px; +} + +.btn .mdi::before { + position: relative; + top: 4px; +} + +.btn-xs .mdi::before { + font-size: 18px; + top: 3px; +} + +.btn-sm .mdi::before { + font-size: 18px; + top: 3px; +} + +.dropdown-menu .mdi { + width: 18px; +} + +.dropdown-menu .mdi::before { + position: relative; + top: 4px; + left: -8px; +} + +.nav .mdi::before { + position: relative; + top: 4px; +} + +.navbar .navbar-toggle .mdi::before { + position: relative; + top: 4px; + color: #fff; +} + +.breadcrumb .mdi::before { + position: relative; + top: 4px; +} + +.breadcrumb a:hover { + text-decoration: none; +} + +.breadcrumb a:hover span { + text-decoration: underline; +} + +.alert .mdi::before { + position: relative; + top: 4px; + margin-right: 2px; +} + +.input-group-addon .mdi::before { + position: relative; + top: 3px; +} + +.navbar-brand .mdi::before { + position: relative; + top: 2px; + margin-right: 2px; +} + +.list-group-item .mdi::before { + position: relative; + top: 3px; + left: -3px; } \ No newline at end of file diff --git a/assets/index.html b/assets/index.html index 46f16de..5a86710 100644 --- a/assets/index.html +++ b/assets/index.html @@ -9,9 +9,7 @@ content="ie=edge" /> + href="https://cdn.materialdesignicons.com/4.5.95/css/materialdesignicons.min.css" /> diff --git a/populate.js b/populate.js index 9d62f9f..6027e30 100644 --- a/populate.js +++ b/populate.js @@ -103,13 +103,13 @@ module.exports.updateHTML = (username, opts) => repos[i].language == null ? "none" : "inline-block" - };">  ${ + };">  ${ repos[i].language } -   ${ +   ${ repos[i].stargazers_count } -   ${ +   ${ repos[i].forks_count }
@@ -153,37 +153,37 @@ module.exports.updateHTML = (username, opts) => document.getElementById("about").innerHTML = `   ${user.company} + };">   ${user.company}   ${user.email} + };">   ${user.email}    ${ + };">    ${ user.location }    Available for hire + };">    Available for hire
+ };"> + };"> + };"> + };"> + };"> + };">
`; //add data to config.json From efe64030d5ec67d6a0f74e73429c5202527a1e39 Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Sun, 8 Dec 2019 21:53:21 +0530 Subject: [PATCH 079/163] Remove support for Telegram, LinkedIn and Medium --- bin/gitfolio.js | 5 +---- build.js | 7 ++----- populate.js | 22 +++++----------------- ui.js | 12 +++--------- update.js | 7 ++----- views/index.ejs | 27 ++++++--------------------- 6 files changed, 19 insertions(+), 61 deletions(-) diff --git a/bin/gitfolio.js b/bin/gitfolio.js index 8398668..eea9c1d 100755 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -42,12 +42,9 @@ program .option("-f, --fork", "includes forks with repos") .option("-s, --sort [sort]", "set default sort for repository", "created") .option("-o, --order [order]", "set default order on sort", "asc") - .option("-w, --twitter [username]", "specify twitter username") - .option("-l, --linkedin [username]", "specify linkedin username") - .option("-m, --medium [username]", "specify medium username") .option("-d, --dribbble [username]", "specify dribbble username") - .option("-T, --telegram [username]", "specify telegram username") .option("-e, --email [username]", "specify email") + .option("-T, --twitter [username]", "specify twitter username") .action(buildCommand); program diff --git a/build.js b/build.js index 987d709..0b492b2 100644 --- a/build.js +++ b/build.js @@ -96,12 +96,9 @@ async function buildCommand(username, program) order: program.order, includeFork: program.fork ? true : false, types, - twitter: program.twitter, - linkedin: program.linkedin, - medium: program.medium, dribbble: program.dribbble, - telegram: program.telegram, - email: program.email + email: program.email, + twitter: program.twitter }; await populateConfig(opts); diff --git a/populate.js b/populate.js index 6027e30..9b414ec 100644 --- a/populate.js +++ b/populate.js @@ -50,12 +50,9 @@ module.exports.updateHTML = (username, opts) => const { includeFork, - twitter, - linkedin, - medium, dribbble, - telegram, - email + email, + twitter } = opts; //add data to assets/index.html jsdom @@ -166,24 +163,15 @@ module.exports.updateHTML = (username, opts) => user.hireable == false || !user.hireable ? "none" : "block" };">    Available for hire
- - - - +
`; //add data to config.json diff --git a/ui.js b/ui.js index 6a8024d..89b3c8a 100644 --- a/ui.js +++ b/ui.js @@ -69,12 +69,9 @@ function uiCommand() let order = req.body.order ? req.body.order : "asc"; let includeFork = req.body.fork == "true" ? true : false; let types = ["owner"]; - let twitter = req.body.twitter ? req.body.twitter : null; - let linkedin = req.body.linkedin ? req.body.linkedin : null; - let medium = req.body.medium ? req.body.medium : null; let dribbble = req.body.dribbble ? req.body.dribbble : null; - let telegram = req.body.telegram ? req.body.telegram : null; let email = req.body.email ? req.body.email : null; + let twitter = req.body.twitter ? req.body.twitter : null; let background = req.body.background ? req.body.background : "https://images.unsplash.com/photo-1553748024-d1b27fb3f960?w=1500&q=80"; @@ -84,12 +81,9 @@ function uiCommand() order: order, includeFork: includeFork, types, - twitter: twitter, - linkedin: linkedin, - medium: medium, dribbble: dribbble, - telegram: telegram, - email: email + email: email, + twitter: twitter }; updateHTML(username, opts); diff --git a/update.js b/update.js index 0e140e7..c89297f 100644 --- a/update.js +++ b/update.js @@ -23,12 +23,9 @@ async function updateCommand() order: data[0].order, includeFork: data[0].includeFork, types: data[0].types, - twitter: data[0].twitter, - linkedin: data[0].linkedin, - medium: data[0].medium, dribbble: data[0].dribbble, - telegram: data[0].telegram, - email: data[0].email + email: data[0].email, + twitter: data[0].twitter }; updateHTML(username, opts); } diff --git a/views/index.ejs b/views/index.ejs index 4daeb31..092d904 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -116,36 +116,21 @@

- - - - - - \ No newline at end of file +

Order By :

+ + +
+
+ + + + +
+
+ + + + + + From 9dd8f0ff82ef07bfa8fc739229f01a913a5a6ddf Mon Sep 17 00:00:00 2001 From: K4USTU3H Date: Fri, 13 Dec 2019 22:23:05 +0530 Subject: [PATCH 090/163] Animate username --- assets/index.css | 15 ++++++++++++-- assets/index.html | 53 +++++++++++++++++++++++++++++++++++++++++++++++ populate.js | 6 ++++-- 3 files changed, 70 insertions(+), 4 deletions(-) diff --git a/assets/index.css b/assets/index.css index 05ecc49..7fcb6d1 100644 --- a/assets/index.css +++ b/assets/index.css @@ -124,10 +124,14 @@ body { margin: 1.5vh 0px; } +.hidden { + opacity: 0; +} + #username { - font-size: 18px; - font-weight: bold; font-family: "Asap Condensed", sans-serif; + font-size: 18px; + color: white; } #username span { @@ -135,6 +139,13 @@ body { font-family: "Asap Condensed", sans-serif; } +.console-underscore { + display: inline-block; + position: relative; + top: -0.14em; + left: 10px; +} + #userbio { font-size: 26px; font-family: "Asap", sans-serif; diff --git a/assets/index.html b/assets/index.html index 0551a5e..e552fb9 100644 --- a/assets/index.html +++ b/assets/index.html @@ -69,6 +69,59 @@ magicProjectsGrid.listen(); magicForksGrid.listen(); }); + + // function([string1, string2],target id,[color1,color2]) + consoleText(["K4USTU3H", "Just another code copy-paster."], "text", [ + "white", + "white" + ]); + + function consoleText(words, id, colors) { + if (colors === undefined) colors = ["#fff"]; + var visible = true; + var con = document.getElementById("console"); + var letterCount = 1; + var x = 1; + var waiting = false; + var target = document.getElementById(id); + target.setAttribute("style", "color:" + colors[0]); + window.setInterval(function() { + if (letterCount === 0 && waiting === false) { + waiting = true; + target.innerHTML = words[0].substring(0, letterCount); + window.setTimeout(function() { + var usedColor = colors.shift(); + colors.push(usedColor); + var usedWord = words.shift(); + words.push(usedWord); + x = 1; + target.setAttribute("style", "color:" + colors[0]); + letterCount += x; + waiting = false; + }, 1000); + } else if (letterCount === words[0].length + 1 && waiting === false) { + waiting = true; + window.setTimeout(function() { + x = -1; + letterCount += x; + waiting = false; + }, 1000); + } else if (waiting === false) { + target.innerHTML = words[0].substring(0, letterCount); + letterCount += x; + } + }, 120); + window.setInterval(function() { + if (visible === true) { + con.className = "console-underscore hidden"; + visible = false; + } else { + con.className = "console-underscore"; + + visible = true; + } + }, 400); + } diff --git a/populate.js b/populate.js index d9db04e..a654f41 100644 --- a/populate.js +++ b/populate.js @@ -112,9 +112,11 @@ module.exports.updateHTML = (username, opts) => { `; document.getElementById( "username" - ).innerHTML = `${user.name}@${user.login}`; + };">
_

@${user.login}`; //document.getElementById("github_link").href = `https://github.com/${user.login}`; document.getElementById("userbio").innerHTML = convertToEmoji( user.bio From 62b9ee4e5d08c0db041f271a12b93cf19aa119aa Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Fri, 13 Dec 2019 22:38:51 +0530 Subject: [PATCH 091/163] Update dependencies --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index f0845d3..9767af5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -42,9 +42,9 @@ } }, "@types/node": { - "version": "12.12.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.14.tgz", - "integrity": "sha512-u/SJDyXwuihpwjXy7hOOghagLEV1KdAST6syfnOk6QZAMzZuWZqXy5aYYZbh8Jdpd4escVFP0MvftHNDb9pruA==" + "version": "12.12.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.17.tgz", + "integrity": "sha512-Is+l3mcHvs47sKy+afn2O1rV4ldZFU7W8101cNlOd+MRbjM4Onida8jSZnJdTe/0Pcf25g9BNIUsuugmE6puHA==" }, "@types/responselike": { "version": "1.0.0", @@ -562,9 +562,9 @@ "integrity": "sha512-SxiGZf8wfMRwg8QwQlHwKMjR7oyy2H3iCpXRzOTp4Mq/xNTNgV9Yi6Y6zwk0Aty6ZUpRC3oJS+Ya5Dgb+DVTiA==" }, "got": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/got/-/got-10.0.2.tgz", - "integrity": "sha512-ojjUBCvrhkbEiQRAI8OIcSsCpM+EiVEX5xaoUAS6wFGlnoNa3KnDTiavRfAWXO9x29rA7sl2igh3E7z8glq9Gg==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/got/-/got-10.0.4.tgz", + "integrity": "sha512-yMaRLGZJ7iINsDcZ8hso+v44IXVOejz7xrqEabSvUewdHS3zOf57IqU3sWIBYwHlekSrk+CC2PCeLzabOBxnVA==", "requires": { "@sindresorhus/is": "^1.0.0", "@szmarczak/http-timer": "^3.1.1", diff --git a/package.json b/package.json index 96fad86..6f7c0ca 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "ejs": "3.0.1", "express": "^4.17.1", "github-emoji": "^1.1.1", - "got": "10.0.2", + "got": "10.0.4", "handlebars": "^4.5.3", "jsdom": "^15.2.1", "ncp": "^2.0.0" From 4931a6a893c15344358f91aebd26c5f71cf1d5e1 Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Sat, 14 Dec 2019 21:46:09 +0530 Subject: [PATCH 092/163] Re-add Telegram support --- .travis.yml | 2 +- bin/gitfolio.js | 3 ++- build.js | 1 + populate.js | 4 ++++ ui.js | 2 ++ update.js | 1 + views/index.ejs | 6 ++++++ 7 files changed, 17 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index dddd90b..c04ae35 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ before_install: before_script: - npm install -g script: - - gitfolio build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h + - gitfolio build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h after_success: - lhci autorun --upload.target=temporary-public-storage --staticDistDir=/home/travis/build/k4ustu3h/gitfolio/dist deploy: diff --git a/bin/gitfolio.js b/bin/gitfolio.js index 14126e1..1048149 100755 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -31,7 +31,8 @@ program .option("-D, --dribbble [username]", "specify dribbble username") .option("-e, --email [username]", "specify email") .option("-i, --instagram [username]", "specify instagram username") - .option("-T, --twitter [username]", "specify twitter username") + .option("-T, --telegram [username]", "specify telegram username") + .option("-w, --twitter [username]", "specify twitter username") .action(buildCommand); program diff --git a/build.js b/build.js index fc72bcc..13666e7 100644 --- a/build.js +++ b/build.js @@ -82,6 +82,7 @@ async function buildCommand(username, program) { dribbble: program.dribbble, email: program.email, instagram: program.instagram, + telegram: program.telegram, twitter: program.twitter }; diff --git a/populate.js b/populate.js index a654f41..35da3b8 100644 --- a/populate.js +++ b/populate.js @@ -38,6 +38,7 @@ module.exports.updateHTML = (username, opts) => { dribbble, email, instagram, + telegram, twitter } = opts; //add data to assets/index.html @@ -154,6 +155,9 @@ module.exports.updateHTML = (username, opts) => { + diff --git a/ui.js b/ui.js index b74b09b..a8d46fa 100644 --- a/ui.js +++ b/ui.js @@ -56,6 +56,7 @@ function uiCommand() { let dribbble = req.body.dribbble ? req.body.dribbble : null; let email = req.body.email ? req.body.email : null; let instagram = req.body.instagram ? req.body.instagram : null; + let telegram = req.body.telegram ? req.body.telegram : null; let twitter = req.body.twitter ? req.body.twitter : null; let background = req.body.background ? req.body.background @@ -71,6 +72,7 @@ function uiCommand() { dribbble: dribbble, email: email, instagram: instagram, + telegram: telegram, twitter: twitter }; diff --git a/update.js b/update.js index 6c915ff..79d584c 100644 --- a/update.js +++ b/update.js @@ -20,6 +20,7 @@ async function updateCommand() { dribbble: data[0].dribbble, email: data[0].email, instagram: data[0].instagram, + telegram: data[0].telegram, twitter: data[0].twitter }; updateHTML(username, opts); diff --git a/views/index.ejs b/views/index.ejs index 5f2ebc7..1bfa10d 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -145,6 +145,12 @@ id="instagram" name="instagram" /> +
+
Date: Sat, 14 Dec 2019 22:11:07 +0530 Subject: [PATCH 093/163] Change badge style to For The Badge --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4004ce7..4193f06 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/k4ustu3h/gitfolio.svg?branch=master)](https://travis-ci.org/k4ustu3h/gitfolio) -[![Dependency Status](https://david-dm.org/k4ustu3h/gitfolio.svg)](https://david-dm.org/k4ustu3h/gitfolio) -[![devDependencies Status](https://david-dm.org/k4ustu3h/gitfolio/dev-status.svg)](https://david-dm.org/k4ustu3h/gitfolio?type=dev) -[![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat)](https://github.com/prettier/prettier) +[![Build Status](https://img.shields.io/travis/k4ustu3h/gitfolio?style=for-the-badge)](https://travis-ci.org/k4ustu3h/gitfolio) +[![Dependency Status](https://img.shields.io/david/k4ustu3h/gitfolio?style=for-the-badge)](https://david-dm.org/k4ustu3h/gitfolio) +[![devDependencies Status](https://img.shields.io/david/dev/k4ustu3h/gitfolio?style=for-the-badge)](https://david-dm.org/k4ustu3h/gitfolio?type=dev) +[![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=for-the-badge)](https://github.com/prettier/prettier) From 8af465f46e29e4dceef4f3fe9f159bf77a182381 Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Sun, 15 Dec 2019 18:45:08 +0530 Subject: [PATCH 094/163] Add support for Reddit --- .travis.yml | 2 +- bin/gitfolio.js | 1 + build.js | 1 + populate.js | 4 ++++ ui.js | 2 ++ update.js | 1 + views/index.ejs | 8 ++++++++ 7 files changed, 18 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c04ae35..5543772 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ before_install: before_script: - npm install -g script: - - gitfolio build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h + - gitfolio build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h --reddit kaustubhladiya after_success: - lhci autorun --upload.target=temporary-public-storage --staticDistDir=/home/travis/build/k4ustu3h/gitfolio/dist deploy: diff --git a/bin/gitfolio.js b/bin/gitfolio.js index 1048149..52e9cef 100755 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -31,6 +31,7 @@ program .option("-D, --dribbble [username]", "specify dribbble username") .option("-e, --email [username]", "specify email") .option("-i, --instagram [username]", "specify instagram username") + .option("-r, --reddit [username]", "specify reddit username") .option("-T, --telegram [username]", "specify telegram username") .option("-w, --twitter [username]", "specify twitter username") .action(buildCommand); diff --git a/build.js b/build.js index 13666e7..8b250a0 100644 --- a/build.js +++ b/build.js @@ -82,6 +82,7 @@ async function buildCommand(username, program) { dribbble: program.dribbble, email: program.email, instagram: program.instagram, + reddit: program.reddit, telegram: program.telegram, twitter: program.twitter }; diff --git a/populate.js b/populate.js index 35da3b8..7dbba3c 100644 --- a/populate.js +++ b/populate.js @@ -38,6 +38,7 @@ module.exports.updateHTML = (username, opts) => { dribbble, email, instagram, + reddit, telegram, twitter } = opts; @@ -155,6 +156,9 @@ module.exports.updateHTML = (username, opts) => { + diff --git a/ui.js b/ui.js index a8d46fa..95f5817 100644 --- a/ui.js +++ b/ui.js @@ -56,6 +56,7 @@ function uiCommand() { let dribbble = req.body.dribbble ? req.body.dribbble : null; let email = req.body.email ? req.body.email : null; let instagram = req.body.instagram ? req.body.instagram : null; + let reddit = req.body.reddit ? req.body.reddit : null; let telegram = req.body.telegram ? req.body.telegram : null; let twitter = req.body.twitter ? req.body.twitter : null; let background = req.body.background @@ -72,6 +73,7 @@ function uiCommand() { dribbble: dribbble, email: email, instagram: instagram, + reddit: reddit, telegram: telegram, twitter: twitter }; diff --git a/update.js b/update.js index 79d584c..a1cab5c 100644 --- a/update.js +++ b/update.js @@ -20,6 +20,7 @@ async function updateCommand() { dribbble: data[0].dribbble, email: data[0].email, instagram: data[0].instagram, + reddit: data[0].reddit, telegram: data[0].telegram, twitter: data[0].twitter }; diff --git a/views/index.ejs b/views/index.ejs index 1bfa10d..126d1c2 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -146,6 +146,14 @@ name="instagram" />
+ +
Date: Sun, 15 Dec 2019 22:05:21 +0530 Subject: [PATCH 095/163] Add ESLint --- .eslintrc.json | 18 + .prettierrc | 6 + CODE_OF_CONDUCT.md | 30 +- package-lock.json | 845 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 5 files changed, 885 insertions(+), 15 deletions(-) create mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..f1e3d15 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "env": { + "browser": true, + "es6": true, + "node": true + }, + "extends": "eslint:recommended", + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module" + }, + "rules": { + } +} \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index c5aff99..dce3e9f 100644 --- a/.prettierrc +++ b/.prettierrc @@ -6,6 +6,12 @@ "parser": "html", "htmlWhitespaceSensitivity": "ignore" } + }, + { + "files": "*.md", + "options": { + "tabWidth": 4 + } } ] } diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 7d65aaf..febb04f 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,22 +14,22 @@ appearance, race, religion, or sexual identity and orientation. Examples of behavior that contributes to creating a positive environment include: -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -- The use of sexualized language or imagery and unwelcome sexual attention or - advances -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or electronic - address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a - professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic + address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting ## Our Responsibilities @@ -68,9 +68,9 @@ members of the project's leadership. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, -available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html +available at [homepage]: https://www.contributor-covenant.org For answers to common questions about this code of conduct, see -https://www.contributor-covenant.org/faq + diff --git a/package-lock.json b/package-lock.json index 9767af5..62fe662 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,26 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", + "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/highlight": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, "@sindresorhus/is": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-1.2.0.tgz", @@ -89,6 +109,12 @@ } } }, + "acorn-jsx": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", + "dev": true + }, "acorn-walk": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", @@ -105,6 +131,39 @@ "uri-js": "^4.2.2" } }, + "ansi-escapes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", + "integrity": "sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", @@ -128,6 +187,12 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -148,6 +213,12 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz", "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==" }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -185,6 +256,16 @@ } } }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "browser-process-hrtime": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", @@ -217,11 +298,49 @@ "responselike": "^2.0.0" } }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", + "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", + "dev": true + }, "clone-response": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", @@ -237,6 +356,21 @@ } } }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, "combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -250,6 +384,12 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-4.0.1.tgz", "integrity": "sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==" }, + "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 + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -278,6 +418,27 @@ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -357,6 +518,15 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, "domexception": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", @@ -389,6 +559,12 @@ "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.1.tgz", "integrity": "sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw==" }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", @@ -407,6 +583,12 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, + "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 + }, "escodegen": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz", @@ -419,11 +601,127 @@ "source-map": "~0.6.1" } }, + "eslint": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.7.2.tgz", + "integrity": "sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.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" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "espree": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.1.2.tgz", + "integrity": "sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA==", + "dev": true, + "requires": { + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", + "eslint-visitor-keys": "^1.1.0" + } + }, "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" }, + "esquery": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", + "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "dev": true, + "requires": { + "estraverse": "^4.0.0" + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", @@ -481,6 +779,17 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -501,6 +810,24 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, + "figures": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz", + "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -515,6 +842,23 @@ "unpipe": "~1.0.0" } }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -540,6 +884,18 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, "get-stream": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", @@ -561,6 +917,38 @@ "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.1.tgz", "integrity": "sha512-SxiGZf8wfMRwg8QwQlHwKMjR7oyy2H3iCpXRzOTp4Mq/xNTNgV9Yi6Y6zwk0Aty6ZUpRC3oJS+Ya5Dgb+DVTiA==" }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", + "integrity": "sha512-wAfjdLgFsPZsklLJvOBUBmzYE8/CwhEqSBEMRXA3qxIiNtyqvjYurAtIfDh6chlEPUfmTY3MnZh5Hfh4q0UlIw==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, "got": { "version": "10.0.4", "resolved": "https://registry.npmjs.org/got/-/got-10.0.4.tgz", @@ -607,6 +995,12 @@ "har-schema": "^2.0.0" } }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, "html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", @@ -650,11 +1044,64 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "inquirer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz", + "integrity": "sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, "ip-regex": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", @@ -665,16 +1112,73 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", + "dev": true + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", @@ -728,6 +1232,12 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -809,21 +1319,65 @@ "mime-db": "1.40.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "mimic-response": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.0.0.tgz", "integrity": "sha512-8ilDoEapqA4uQ3TwS0jakGONKXVJqpy+RpM+3b7pLdOjghCrEiGp9SRkFbUHAmZW9vdnrENWHjaweIoTIJExSQ==" }, + "minimatch": { + "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.7" + } + }, "minimist": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, "ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", @@ -839,6 +1393,12 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, "normalize-url": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", @@ -870,6 +1430,15 @@ "wrappy": "1" } }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", @@ -892,11 +1461,26 @@ "word-wrap": "~1.2.3" } }, + "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 + }, "p-cancelable": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, "parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", @@ -907,6 +1491,18 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "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 + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -933,6 +1529,12 @@ "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", "dev": true }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, "proxy-addr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", @@ -982,6 +1584,12 @@ "unpipe": "1.0.0" } }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", @@ -1059,6 +1667,12 @@ } } }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, "responselike": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", @@ -1067,6 +1681,43 @@ "lowercase-keys": "^2.0.0" } }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", + "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "dev": true, + "requires": { + "is-promise": "^2.1.0" + } + }, + "rxjs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", + "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -1085,6 +1736,12 @@ "xmlchars": "^2.1.1" } }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -1128,11 +1785,57 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "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 + } + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", @@ -1159,11 +1862,123 @@ "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=" }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "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 + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, "to-readable-stream": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-2.1.0.tgz", @@ -1192,6 +2007,12 @@ "punycode": "^2.1.0" } }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -1268,6 +2089,12 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==" }, + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -1329,6 +2156,15 @@ "webidl-conversions": "^4.0.2" } }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -1344,6 +2180,15 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, "ws": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.0.tgz", diff --git a/package.json b/package.json index 6f7c0ca..837d463 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "ncp": "^2.0.0" }, "devDependencies": { + "eslint": "^6.7.2", "prettier": "1.19.1" } } From 0e9a022c2af9ab99a2c5e882a87a4f6180372d17 Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Wed, 1 Jan 2020 01:31:45 +0530 Subject: [PATCH 096/163] Move build command from Travis config to npm test --- .travis.yml | 2 +- package.json | 143 ++++++++++++++++++++++++++++++++++----------------- 2 files changed, 97 insertions(+), 48 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5543772..8ad8d42 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ before_install: before_script: - npm install -g script: - - gitfolio build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h --reddit kaustubhladiya + - npm run test after_success: - lhci autorun --upload.target=temporary-public-storage --staticDistDir=/home/travis/build/k4ustu3h/gitfolio/dist deploy: diff --git a/package.json b/package.json index 837d463..9482b92 100644 --- a/package.json +++ b/package.json @@ -1,49 +1,98 @@ { - "name": "gitfolio", - "version": "0.1.5", - "description": "a portfolio website for everyone to showcase their work", - "main": "build.js", - "bin": "bin/gitfolio.js", - "scripts": { - "cli": "OUT_DIR='./dist' node bin/gitfolio.js", - "clean": "rm -rf ./dist/*", - "prettier": "prettier --write \"./**/*.{js,jsx,json,html,css,md}\"", - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": { - "name": "@imfunniee and community", - "email": "imfunny@wybemf.com", - "url": "https://imfunniee.github.io" - }, - "bugs": "https://github.com/imfunniee/gitfolio/issues", - "homepage": "https://github.com/imfunniee/gitfolio", - "keywords": [ - "personal-website", - "github", - "portfolio", - "portfolio website", - "gitfolio", - "git" - ], - "repository": { - "type": "git", - "url": "https://github.com/imfunniee/gitfolio" - }, - "license": "GPL-3.0", - "dependencies": { - "bluebird": "^3.7.2", - "body-parser": "^1.19.0", - "commander": "4.0.1", - "ejs": "3.0.1", - "express": "^4.17.1", - "github-emoji": "^1.1.1", - "got": "10.0.4", - "handlebars": "^4.5.3", - "jsdom": "^15.2.1", - "ncp": "^2.0.0" - }, - "devDependencies": { - "eslint": "^6.7.2", - "prettier": "1.19.1" - } + +"name": "gitfolio", + +"version": "0.1.5", + +"description": "a portfolio website for everyone to showcase their work", + +"main": "build.js", + +"bin": "bin/gitfolio.js", + +"scripts": { + +"cli": "OUT_DIR='./dist' node bin/gitfolio.js", + +"clean": "rm -rf ./dist/*", + +"prettier": "prettier --write \"./**/*.{js,jsx,json,html,css,md}\"", + +"test": "OUT_DIR='./dist' node bin/gitfolio.js build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h --reddit kaustubhladiya" + +}, + +"author": { + +"name": "@imfunniee and community", + +"email": "imfunny@wybemf.com", + +"url": "https://imfunniee.github.io" + +}, + +"bugs": "https://github.com/imfunniee/gitfolio/issues", + +"homepage": "https://github.com/imfunniee/gitfolio", + +"keywords": [ + +"personal-website", + +"github", + +"portfolio", + +"portfolio website", + +"gitfolio", + +"git" + +], + +"repository": { + +"type": "git", + +"url": "https://github.com/imfunniee/gitfolio" + +}, + +"license": "GPL-3.0", + +"dependencies": { + +"bluebird": "^3.7.2", + +"body-parser": "^1.19.0", + +"commander": "4.0.1", + +"ejs": "3.0.1", + +"express": "^4.17.1", + +"github-emoji": "^1.1.1", + +"got": "10.0.4", + +"handlebars": "^4.5.3", + +"jsdom": "^15.2.1", + +"ncp": "^2.0.0" + +}, + +"devDependencies": { + +"eslint": "^6.7.2", + +"prettier": "1.19.1" + } + +} + From 631fd6291238509d3608af2af9b4c65e03c977af Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Sun, 5 Jan 2020 18:34:46 +0530 Subject: [PATCH 097/163] Reduce resolution of background image --- build.js | 2 +- package.json | 6 ++++++ ui.js | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/build.js b/build.js index 8b250a0..7026d03 100644 --- a/build.js +++ b/build.js @@ -20,7 +20,7 @@ const config = path.join(outDir, "config.json"); */ async function populateCSS({ theme = "light", - background = "https://source.unsplash.com/1600x900/?wallpaper" + background = "https://source.unsplash.com/1280x720/?wallpaper" } = {}) { /* Get the theme the user requests. Defaults to 'light' */ theme = `${theme}.css`; diff --git a/package.json b/package.json index 9482b92..00a5772 100644 --- a/package.json +++ b/package.json @@ -96,3 +96,9 @@ } +1" + +} + +} + diff --git a/ui.js b/ui.js index 95f5817..34d8c6e 100644 --- a/ui.js +++ b/ui.js @@ -61,7 +61,7 @@ function uiCommand() { let twitter = req.body.twitter ? req.body.twitter : null; let background = req.body.background ? req.body.background - : "https://source.unsplash.com/1600x900/?wallpaper"; + : "https://source.unsplash.com/1280x720/?wallpaper"; let theme = req.body.theme == "on" ? "dark" : "light"; const opts = { sort: sort, From b7a21d8bd7e0bae82c27a21f2f0253aef71efb2b Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Sun, 5 Jan 2020 18:42:52 +0530 Subject: [PATCH 098/163] Update package.json --- package.json | 6 ------ 1 file changed, 6 deletions(-) diff --git a/package.json b/package.json index 00a5772..9482b92 100644 --- a/package.json +++ b/package.json @@ -96,9 +96,3 @@ } -1" - -} - -} - From 957ada3ea7ba255e72f187ad414e441b4bfab9dd Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Sat, 11 Jan 2020 22:18:56 +0530 Subject: [PATCH 099/163] Fix some mistakes and use xo --- .eslintrc.json | 18 - .prettierrc | 1 + README.md | 1 + api.js | 77 +- assets/service-worker.js | 66 +- bin/gitfolio.js | 83 +- build.js | 129 +- package-lock.json | 3791 ++++++++++++++++++++++++++++++++++++++ package.json | 146 +- populate.js | 316 ++-- run.js | 20 +- ui.js | 152 +- update.js | 53 +- utils.js | 23 +- 14 files changed, 4316 insertions(+), 560 deletions(-) delete mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index f1e3d15..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "env": { - "browser": true, - "es6": true, - "node": true - }, - "extends": "eslint:recommended", - "globals": { - "Atomics": "readonly", - "SharedArrayBuffer": "readonly" - }, - "parserOptions": { - "ecmaVersion": 2018, - "sourceType": "module" - }, - "rules": { - } -} \ No newline at end of file diff --git a/.prettierrc b/.prettierrc index dce3e9f..0d3edfc 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,4 +1,5 @@ { + "singleQuote": false, "overrides": [ { "files": ["*.html", "*.ejs"], diff --git a/README.md b/README.md index 4193f06..f2f9eab 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,4 @@ [![Dependency Status](https://img.shields.io/david/k4ustu3h/gitfolio?style=for-the-badge)](https://david-dm.org/k4ustu3h/gitfolio) [![devDependencies Status](https://img.shields.io/david/dev/k4ustu3h/gitfolio?style=for-the-badge)](https://david-dm.org/k4ustu3h/gitfolio?type=dev) [![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=for-the-badge)](https://github.com/prettier/prettier) +[![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg?style=for-the-badge)](https://github.com/xojs/xo) diff --git a/api.js b/api.js index ebdeff0..6158b07 100644 --- a/api.js +++ b/api.js @@ -10,45 +10,46 @@ const got = require("got"); * @param {'desc' | 'asc'} [opts.order] */ async function getRepos(username, opts = {}) { - let tempRepos; - let page = 1; - let repos = []; + let tempRepos; + let page = 1; + let repos = []; - const sort = opts.sort; - const order = opts.order || (sort === "full_name" ? "asc" : "desc"); - const types = opts.types || []; - let type = "all"; + const {sort} = opts; + const order = opts.order || (sort === "full_name" ? "asc" : "desc"); + const types = opts.types || []; + let type = "all"; - if ( - types.includes("all") || - (types.includes("owner") && types.includes("member")) - ) { - type = "all"; - } else if (types.includes("member")) { - type = "member"; - } + if ( + types.includes("all") || + (types.includes("owner") && types.includes("member")) + ) { + type = "all"; + } else if (types.includes("member")) { + type = "member"; + } - do { - let requestUrl = `https://api.github.com/users/${username}/repos?per_page=100&page=${page++}&type=${type}`; - if (sort && sort !== "star") { - requestUrl += `&sort=${sort}&direction=${order}`; - } - tempRepos = await got(requestUrl); - tempRepos = JSON.parse(tempRepos.body); - repos = repos.concat(tempRepos); - } while (tempRepos.length == 100); + do { + let requestUrl = `https://api.github.com/users/${username}/repos?per_page=100&page=${page++}&type=${type}`; + if (sort && sort !== "star") { + requestUrl += `&sort=${sort}&direction=${order}`; + } - if (sort == "star") { - repos = repos.sort(function(a, b) { - if (order == "desc") { - return b.stargazers_count - a.stargazers_count; - } else { - return a.stargazers_count - b.stargazers_count; - } - }); - } + tempRepos = await got(requestUrl); + tempRepos = JSON.parse(tempRepos.body); + repos = repos.concat(tempRepos); + } while (tempRepos.length === 100); - return repos; + if (sort === "star") { + repos = repos.sort((a, b) => { + if (order === "desc") { + return b.stargazers_count - a.stargazers_count; + } + + return a.stargazers_count - b.stargazers_count; + }); + } + + return repos; } /** @@ -56,11 +57,11 @@ async function getRepos(username, opts = {}) { * @param {string} username */ async function getUser(username) { - const res = await got(`https://api.github.com/users/${username}`); - return JSON.parse(res.body); + const res = await got(`https://api.github.com/users/${username}`); + return JSON.parse(res.body); } module.exports = { - getRepos, - getUser + getRepos, + getUser }; diff --git a/assets/service-worker.js b/assets/service-worker.js index 8bf17ec..e21f27a 100644 --- a/assets/service-worker.js +++ b/assets/service-worker.js @@ -1,42 +1,42 @@ importScripts( - "https://storage.googleapis.com/workbox-cdn/releases/3.6.1/workbox-sw.js" + "https://storage.googleapis.com/workbox-cdn/releases/3.6.1/workbox-sw.js" ); if (workbox) { - workbox.setConfig({ - debug: false - }); + workbox.setConfig({ + debug: false + }); - var defaultStrategy = workbox.strategies.networkFirst({ - cacheName: "fallback", - plugins: [ - new workbox.expiration.Plugin({ - maxEntries: 128, - maxAgeSeconds: 7 * 24 * 60 * 60, // 1 week - purgeOnQuotaError: true // Opt-in to automatic cleanup - }), - new workbox.cacheableResponse.Plugin({ - statuses: [0, 200] // for opague requests - }) - ] - }); - workbox.routing.setDefaultHandler(args => { - if (args.event.request.method === "GET") { - return defaultStrategy.handle(args); // use default strategy - } else { - return null; - } - }); + const defaultStrategy = workbox.strategies.networkFirst({ + cacheName: "fallback", + plugins: [ + new workbox.expiration.Plugin({ + maxEntries: 128, + maxAgeSeconds: 7 * 24 * 60 * 60, // 1 week + purgeOnQuotaError: true // Opt-in to automatic cleanup + }), + new workbox.cacheableResponse.Plugin({ + statuses: [0, 200] // For opague requests + }) + ] + }); + workbox.routing.setDefaultHandler(args => { + if (args.event.request.method === "GET") { + return defaultStrategy.handle(args); // Use default strategy + } - workbox.routing.registerRoute( - new RegExp(/.*\.(?:js|css)/g), - workbox.strategies.networkFirst() - ); + return null; + }); - workbox.routing.registerRoute( - new RegExp(/.*\.(?:png|jpg|jpeg|svg|gif|webp)/g), - workbox.strategies.cacheFirst() - ); + workbox.routing.registerRoute( + new RegExp(/.*\.(?:js|css)/g), + workbox.strategies.networkFirst() + ); + + workbox.routing.registerRoute( + new RegExp(/.*\.(?:png|jpg|jpeg|svg|gif|webp)/g), + workbox.strategies.cacheFirst() + ); } else { - console.log(`No workbox on this browser 😬`); + console.log("No workbox on this browser 😬"); } diff --git a/bin/gitfolio.js b/bin/gitfolio.js index 52e9cef..eb56c4d 100755 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -5,56 +5,63 @@ const program = require("commander"); process.env.OUT_DIR = process.env.OUT_DIR || process.cwd(); -const { buildCommand } = require("../build"); -const { updateCommand } = require("../update"); -const { uiCommand } = require("../ui"); -const { runCommand } = require("../run"); -const { version } = require("../package.json"); +const {buildCommand} = require("../build"); +const {updateCommand} = require("../update"); +const {uiCommand} = require("../ui"); +const {runCommand} = require("../run"); +const {version} = require("../package.json"); function collect(val, memo) { - memo.push(val); - return memo; + memo.push(val); + return memo; } program - .command("build ") - .description( - "Build site with your GitHub username. This will be used to customize your site" - ) - .option("-t, --theme [theme]", "specify a theme to use", "light") - .option("-b, --background [background]", "set the background image") - .option("-f, --fork", "includes forks with repos") - .option("-s, --sort [sort]", "set default sort for repository", "created") - .option("-o, --order [order]", "set default order on sort", "asc") - .option("-c, --codepen [username]", "specify codepen username") - .option("-d, --dev [username]", "specify dev username") - .option("-D, --dribbble [username]", "specify dribbble username") - .option("-e, --email [username]", "specify email") - .option("-i, --instagram [username]", "specify instagram username") - .option("-r, --reddit [username]", "specify reddit username") - .option("-T, --telegram [username]", "specify telegram username") - .option("-w, --twitter [username]", "specify twitter username") - .action(buildCommand); + .command("build ") + .description( + "Build site with your GitHub username. This will be used to customize your site" + ) + .option("-t, --theme [theme]", "specify a theme to use", "light") + .option("-b, --background [background]", "set the background image") + .option("-f, --fork", "includes forks with repos") + .option("-s, --sort [sort]", "set default sort for repository", "created") + .option("-o, --order [order]", "set default order on sort", "asc") + .option("-c, --codepen [username]", "specify codepen username") + .option("-d, --dev [username]", "specify dev username") + .option("-D, --dribbble [username]", "specify dribbble username") + .option("-e, --email [username]", "specify email") + .option("-i, --instagram [username]", "specify instagram username") + .option("-r, --reddit [username]", "specify reddit username") + .option("-T, --telegram [username]", "specify telegram username") + .option("-w, --twitter [username]", "specify twitter username") + .action(buildCommand); program - .command("update") - .description("Update user and repository data") - .action(updateCommand); + .command("update") + .description("Update user and repository data") + .action(updateCommand); program - .command("run") - .description("Run build files") - .option("-p, --port [port]", "provide a port for localhost, default is 3000") - .action(runCommand); + .command("ui") + .description("Create and Manage gitfolio with ease") + .action(uiCommand); + +program + .command("run") + .description("Run build files") + .option("-p, --port [port]", "provide a port for localhost, default is 3000") + .action(runCommand); program.on("command:*", () => { - console.log("Unknown Command: " + program.args.join(" ")); - program.help(); + console.log("Unknown Command: " + program.args.join(" ")); + program.help(); }); program - .version(version, "-v --version") - .usage(" [options]") - .parse(process.argv); + .version(version, "-v --version") + .usage(" [options]") + .parse(process.argv); -if (program.args.length === 0) program.help(); +if (program.args.length === 0) { + program.help(); +} diff --git a/build.js b/build.js index 7026d03..011a415 100644 --- a/build.js +++ b/build.js @@ -6,8 +6,8 @@ const hbs = require("handlebars"); /* Creates promise-returning async functions from callback-passed async functions */ const fs = bluebird.promisifyAll(require("fs")); -const { updateHTML } = require("./populate"); -const { getConfig, outDir } = require("./utils"); +const {updateHTML} = require("./populate"); +const {getConfig, outDir} = require("./utils"); const assetDir = path.resolve(`${__dirname}/assets/`); const config = path.join(outDir, "config.json"); @@ -19,80 +19,83 @@ const config = path.join(outDir, "config.json"); * arguments. */ async function populateCSS({ - theme = "light", - background = "https://source.unsplash.com/1280x720/?wallpaper" + theme = "light", + background = "https://source.unsplash.com/1280x720/?wallpaper" } = {}) { - /* Get the theme the user requests. Defaults to 'light' */ - theme = `${theme}.css`; - let template = path.resolve(assetDir, "index.css"); - let stylesheet = path.join(outDir, "index.css"); + /* Get the theme the user requests. Defaults to 'light' */ + theme = `${theme}.css`; + const template = path.resolve(assetDir, "index.css"); + const stylesheet = path.join(outDir, "index.css"); - try { - await fs.accessAsync(outDir, fs.constants.F_OK); - } catch (err) { - await fs.mkdirAsync(outDir); - } - /* Copy over the template CSS stylesheet */ - await fs.copyFileAsync(template, stylesheet); + try { + await fs.accessAsync(outDir, fs.constants.F_OK); + } catch (error) { + await fs.mkdirAsync(outDir); + } - /* Get an array of every available theme */ - let themes = await fs.readdirAsync(path.join(assetDir, "themes")); + /* Copy over the template CSS stylesheet */ + await fs.copyFileAsync(template, stylesheet); - if (!themes.includes(theme)) { - console.error('Error: Requested theme not found. Defaulting to "light".'); - theme = "light"; - } - /* Read in the theme stylesheet */ - let themeSource = await fs.readFileSync(path.join(assetDir, "themes", theme)); - themeSource = themeSource.toString("utf-8"); - let themeTemplate = hbs.compile(themeSource); - let styles = themeTemplate({ - background: `${background}` - }); - /* Add the user-specified styles to the new stylesheet */ - await fs.appendFileAsync(stylesheet, styles); + /* Get an array of every available theme */ + const themes = await fs.readdirAsync(path.join(assetDir, "themes")); - /* Update the config file with the user's theme choice */ - const data = await getConfig(); - data[0].theme = theme; - await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); + if (!themes.includes(theme)) { + console.error('Error: Requested theme not found. Defaulting to "light".'); + theme = "light"; + } + + /* Read in the theme stylesheet */ + let themeSource = await fs.readFileSync(path.join(assetDir, "themes", theme)); + themeSource = themeSource.toString("utf-8"); + const themeTemplate = hbs.compile(themeSource); + const styles = themeTemplate({ + background: `${background}` + }); + /* Add the user-specified styles to the new stylesheet */ + await fs.appendFileAsync(stylesheet, styles); + + /* Update the config file with the user's theme choice */ + const data = await getConfig(); + data[0].theme = theme; + await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); } async function populateConfig(opts) { - const data = await getConfig(); - Object.assign(data[0], opts); - await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); + const data = await getConfig(); + Object.assign(data[0], opts); + await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); } async function buildCommand(username, program) { - await populateCSS(program); - let types; - if (!program.include || !program.include.length) { - types = ["all"]; - } else { - types = program.include; - } - const opts = { - sort: program.sort, - order: program.order, - includeFork: program.fork ? true : false, - types, - codepen: program.codepen, - dev: program.dev, - dribbble: program.dribbble, - email: program.email, - instagram: program.instagram, - reddit: program.reddit, - telegram: program.telegram, - twitter: program.twitter - }; + await populateCSS(program); + let types; + if (!program.include || !program.include.length) { + types = ["all"]; + } else { + types = program.include; + } - await populateConfig(opts); - updateHTML(("%s", username), opts); + const opts = { + sort: program.sort, + order: program.order, + includeFork: Boolean(program.fork), + types, + codepen: program.codepen, + dev: program.dev, + dribbble: program.dribbble, + email: program.email, + instagram: program.instagram, + reddit: program.reddit, + telegram: program.telegram, + twitter: program.twitter + }; + + await populateConfig(opts); + updateHTML(("%s", username), opts); } module.exports = { - buildCommand, - populateCSS, - populateConfig + buildCommand, + populateCSS, + populateConfig }; diff --git a/package-lock.json b/package-lock.json index 62fe662..7f46e7d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,22 @@ "js-tokens": "^4.0.0" } }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, "@sindresorhus/is": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-1.2.0.tgz", @@ -48,6 +64,23 @@ "@types/responselike": "*" } }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, "@types/http-cache-semantics": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", @@ -61,11 +94,23 @@ "@types/node": "*" } }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, "@types/node": { "version": "12.12.17", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.17.tgz", "integrity": "sha512-Is+l3mcHvs47sKy+afn2O1rV4ldZFU7W8101cNlOd+MRbjM4Onida8jSZnJdTe/0Pcf25g9BNIUsuugmE6puHA==" }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, "@types/responselike": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", @@ -131,6 +176,40 @@ "uri-js": "^4.2.2" } }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "dev": true, + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "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 + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, "ansi-escapes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", @@ -164,16 +243,94 @@ "sprintf-js": "~1.0.2" } }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true + }, "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -187,6 +344,12 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -203,6 +366,12 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -219,6 +388,61 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -256,6 +480,59 @@ } } }, + "boxen": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz", + "integrity": "sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==", + "dev": true, + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^2.4.2", + "cli-boxes": "^2.2.0", + "string-width": "^3.0.0", + "term-size": "^1.2.0", + "type-fest": "^0.3.0", + "widest-line": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "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 + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "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 + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -266,16 +543,68 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "browser-process-hrtime": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" }, + "buf-compare": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", + "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", + "dev": true + }, "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, "cacheable-lookup": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-0.2.1.tgz", @@ -298,12 +627,35 @@ "responselike": "^2.0.0" } }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "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 }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -326,6 +678,50 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", + "integrity": "sha1-jffHquUf02h06PjQW5GAvBGj/tc=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "cli-boxes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", + "dev": true + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -356,6 +752,16 @@ } } }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -384,12 +790,61 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-4.0.1.tgz", "integrity": "sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==" }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, "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": "4.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", + "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", + "dev": true, + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -413,6 +868,22 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-assert": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", + "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", + "dev": true, + "requires": { + "buf-compare": "^1.0.0", + "is-error": "^2.2.0" + } + }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -439,6 +910,12 @@ } } }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", + "dev": true + }, "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -459,6 +936,15 @@ } } }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -485,6 +971,36 @@ "ms": "2.0.0" } }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, "decompress-response": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-5.0.0.tgz", @@ -493,16 +1009,81 @@ "mimic-response": "^2.0.0" } }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, + "deep-strict-equal": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz", + "integrity": "sha1-SgeBR6irV/ag1PVUckPNIvROtOQ=", + "dev": true, + "requires": { + "core-assert": "^0.2.0" + } + }, "defer-to-connect": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.1.tgz", "integrity": "sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ==" }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -518,6 +1099,38 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + }, + "dependencies": { + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -535,6 +1148,15 @@ "webidl-conversions": "^4.0.2" } }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -578,6 +1200,60 @@ "once": "^1.4.0" } }, + "enhance-visitors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/enhance-visitors/-/enhance-visitors-1.0.0.tgz", + "integrity": "sha1-qpRdBdpGVnKh69OP7i7T2oUY6Vo=", + "dev": true, + "requires": { + "lodash": "^4.13.1" + } + }, + "env-editor": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.1.tgz", + "integrity": "sha512-suh+Vm00GnPQgXpmONTkcUT9LgBSL6sJrRnJxbykT0j+ONjzmIS+1U3ne467ArdZN/42/npp+GnhtwkLQ+vUjw==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", + "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -663,6 +1339,400 @@ } } }, + "eslint-ast-utils": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-ast-utils/-/eslint-ast-utils-1.1.0.tgz", + "integrity": "sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA==", + "dev": true, + "requires": { + "lodash.get": "^4.4.2", + "lodash.zip": "^4.2.0" + } + }, + "eslint-config-prettier": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.9.0.tgz", + "integrity": "sha512-k4E14HBtcLv0uqThaI6I/n1LEqROp8XaPu6SO9Z32u5NlGRC07Enu1Bh2KEFw4FNHbekH8yzbIU9kUGxbiGmCA==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + }, + "dependencies": { + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + } + } + }, + "eslint-config-xo": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.27.2.tgz", + "integrity": "sha512-qEuZP0zNQkWpOdNZvWnfY2GNp1AZ33uXgeOXl4DN5YVLHFvekHbeSM2FFZ8A489fp1rCCColVRlJsYMf28o4DA==", + "dev": true + }, + "eslint-formatter-pretty": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-2.1.1.tgz", + "integrity": "sha512-gWfagucSWBn82WxzwFloBTLAcwYDgnpAfiV5pQfyAV5YpZikuLflRU8nc3Ts9wnNvLhwk4blzb42/C495Yw7BA==", + "dev": true, + "requires": { + "ansi-escapes": "^3.1.0", + "chalk": "^2.1.0", + "eslint-rule-docs": "^1.1.5", + "log-symbols": "^2.0.0", + "plur": "^3.0.1", + "string-width": "^2.0.0", + "supports-hyperlinks": "^1.0.1" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "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 + }, + "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" + } + } + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + } + }, + "eslint-module-utils": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.1.tgz", + "integrity": "sha512-GcNwsYv8MfoEBSbAmV+PSVn2RlhpCShbLImtNviAYa/LE0PgNqxH5tLi1Ld9yeFwdjHsarXK+7G9vsyddmB6dw==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-ava": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-9.0.0.tgz", + "integrity": "sha512-mJqQ1wQ9pxBi5Pu+grrqjfuSLxiSSgnpa5p5vMdEpBqA9n9cUzSCv0xMZ/NkTMAj5ieOB3TWF8j+7C30Yiv4RA==", + "dev": true, + "requires": { + "deep-strict-equal": "^0.2.0", + "enhance-visitors": "^1.0.0", + "espree": "^6.0.0", + "espurify": "^2.0.0", + "import-modules": "^1.1.0", + "pkg-dir": "^4.2.0", + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "eslint-plugin-es": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", + "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", + "dev": true, + "requires": { + "eslint-utils": "^1.4.2", + "regexpp": "^3.0.0" + }, + "dependencies": { + "regexpp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", + "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", + "dev": true + } + } + }, + "eslint-plugin-eslint-comments": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.1.2.tgz", + "integrity": "sha512-QexaqrNeteFfRTad96W+Vi4Zj1KFbkHHNMMaHZEYcovKav6gdomyGzaxSDSL3GoIyUOo078wRAdYlu1caiauIQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "ignore": "^5.0.5" + }, + "dependencies": { + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz", + "integrity": "sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + } + } + }, + "eslint-plugin-no-use-extend-native": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-use-extend-native/-/eslint-plugin-no-use-extend-native-0.4.1.tgz", + "integrity": "sha512-tDkHM0kvxU0M2TpLRKGfFrpWXctFdTDY7VkiDTLYDaX90hMSJKkr/FiWThEXvKV0Dvffut2Z0B9Y7+h/k6suiA==", + "dev": true, + "requires": { + "is-get-set-prop": "^1.0.0", + "is-js-type": "^2.0.0", + "is-obj-prop": "^1.0.0", + "is-proto-prop": "^2.0.0" + } + }, + "eslint-plugin-node": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz", + "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==", + "dev": true, + "requires": { + "eslint-plugin-es": "^2.0.0", + "eslint-utils": "^1.4.2", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" + }, + "dependencies": { + "ignore": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", + "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "dev": true + } + } + }, + "eslint-plugin-prettier": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", + "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-plugin-promise": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", + "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", + "dev": true + }, + "eslint-plugin-unicorn": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-12.1.0.tgz", + "integrity": "sha512-DkPRrjaZaKa8GDjEyWGms/sqp2DcmVCcbwVi9WQXwN6+Sn0/joTC14SfA+BsCuxTaGPRm/7wa8NC8o5mNDyZpQ==", + "dev": true, + "requires": { + "ci-info": "^2.0.0", + "clean-regexp": "^1.0.0", + "eslint-ast-utils": "^1.1.0", + "eslint-template-visitor": "^1.0.0", + "import-modules": "^2.0.0", + "lodash.camelcase": "^4.3.0", + "lodash.defaultsdeep": "^4.6.1", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.topairs": "^4.3.0", + "lodash.upperfirst": "^4.3.1", + "read-pkg-up": "^7.0.0", + "regexpp": "^3.0.0", + "reserved-words": "^0.1.2", + "safe-regex": "^2.0.2", + "semver": "^6.3.0" + }, + "dependencies": { + "import-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-2.0.0.tgz", + "integrity": "sha512-iczM/v9drffdNnABOKwj0f9G3cFDon99VcG1mxeBsdqnbd+vnQ5c2uAiCHNQITqFTOPaEvwg3VjoWCur0uHLEw==", + "dev": true + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + } + }, + "regexpp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", + "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", + "dev": true + } + } + }, + "eslint-rule-docs": { + "version": "1.1.173", + "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.173.tgz", + "integrity": "sha512-wxO0oFmSPhmD2yxJXEbqy9+bthtjcDaORGxkWfUTi15GTqXzdq/aaD5EAlAAvFXM5GdU+S3rMEVL27ACQxBg+Q==", + "dev": true + }, "eslint-scope": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", @@ -673,6 +1743,17 @@ "estraverse": "^4.1.1" } }, + "eslint-template-visitor": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-template-visitor/-/eslint-template-visitor-1.1.0.tgz", + "integrity": "sha512-Lmy6QVlmFiIGl5fPi+8ACnov3sare+0Ouf7deJAGGhmUfeWJ5fVarELUxZRpsZ9sHejiJUq8626d0dn9uvcZTw==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.1", + "multimap": "^1.0.2" + } + }, "eslint-utils": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", @@ -704,6 +1785,12 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" }, + "espurify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/espurify/-/espurify-2.0.1.tgz", + "integrity": "sha512-7w/dUrReI/QbJFHRwfomTlkQOXaB1NuCrBRn5Y26HXn5gvh18/19AgLbayVrNxXQfkckvgrJloWyvZDuJ7dhEA==", + "dev": true + }, "esquery": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", @@ -737,6 +1824,75 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "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.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + } + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -779,6 +1935,27 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -790,6 +1967,71 @@ "tmp": "^0.0.33" } }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -800,6 +2042,49 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -828,6 +2113,29 @@ "flat-cache": "^2.0.1" } }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -842,6 +2150,27 @@ "unpipe": "~1.0.0" } }, + "find-cache-dir": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz", + "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.0", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -859,6 +2188,12 @@ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -879,6 +2214,15 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -890,12 +2234,30 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "get-set-props": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-set-props/-/get-set-props-0.1.0.tgz", + "integrity": "sha1-mYR1wXhEVobQsyJG2l3428++jqM=", + "dev": true + }, + "get-stdin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", + "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", + "dev": true + }, "get-stream": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", @@ -904,6 +2266,12 @@ "pump": "^3.0.0" } }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -940,6 +2308,21 @@ "is-glob": "^4.0.1" } }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "dev": true, + "requires": { + "ini": "^1.3.4" + } + }, "globals": { "version": "12.3.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", @@ -949,6 +2332,36 @@ "type-fest": "^0.8.1" } }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, "got": { "version": "10.0.4", "resolved": "https://registry.npmjs.org/got/-/got-10.0.4.tgz", @@ -970,6 +2383,12 @@ "type-fest": "^0.8.0" } }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", + "dev": true + }, "handlebars": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", @@ -995,12 +2414,71 @@ "har-schema": "^2.0.0" } }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, "html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", @@ -1060,12 +2538,30 @@ "resolve-from": "^4.0.0" } }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "dev": true + }, + "import-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-1.1.0.tgz", + "integrity": "sha1-dI23nFzEK7lwHvq0JPiU5yYA6dw=", + "dev": true + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -1081,6 +2577,12 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, "inquirer": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz", @@ -1112,6 +2614,116 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" }, + "irregular-plurals": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-2.0.0.tgz", + "integrity": "sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-error": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz", + "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1124,6 +2736,24 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "is-get-set-prop": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-get-set-prop/-/is-get-set-prop-1.0.0.tgz", + "integrity": "sha1-JzGHfk14pqae3M5rudaLB3nnYxI=", + "dev": true, + "requires": { + "get-set-props": "^0.1.0", + "lowercase-keys": "^1.0.0" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + } + } + }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -1133,23 +2763,194 @@ "is-extglob": "^2.1.1" } }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "dev": true, + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^1.0.0" + } + }, + "is-js-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-js-type/-/is-js-type-2.0.0.tgz", + "integrity": "sha1-c2FwBtZZtOtHKbunR9KHgt8PfiI=", + "dev": true, + "requires": { + "js-types": "^1.0.0" + } + }, + "is-npm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-3.0.0.tgz", + "integrity": "sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA==", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-obj-prop": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-obj-prop/-/is-obj-prop-1.0.0.tgz", + "integrity": "sha1-s03nnEULjXxzqyzfZ9yHWtuF+A4=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0", + "obj-props": "^1.0.0" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + } + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "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=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, + "is-proto-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-proto-prop/-/is-proto-prop-2.0.0.tgz", + "integrity": "sha512-jl3NbQ/fGLv5Jhan4uX+Ge9ohnemqyblWVVCpAvtTQzNFvV2xhJq+esnkIbYQ9F1nITXoLfDDQLp7LBw/zzncg==", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0", + "proto-props": "^2.0.0" + }, + "dependencies": { + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + } + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -1161,6 +2962,12 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, + "js-types": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/js-types/-/js-types-1.0.0.tgz", + "integrity": "sha1-0kLmSU7Vcq08koCfyL7X92h8vwM=", + "dev": true + }, "js-yaml": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", @@ -1222,6 +3029,12 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -1262,6 +3075,21 @@ "json-buffer": "3.0.0" } }, + "kind-of": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", + "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "dev": true + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dev": true, + "requires": { + "package-json": "^6.3.0" + } + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -1271,36 +3099,352 @@ "type-check": "~0.3.2" } }, + "line-column-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/line-column-path/-/line-column-path-2.0.0.tgz", + "integrity": "sha512-nz3A+vi4bElhwd62E9+Qk/f9BDYLSzD/4Hy1rir0I4GnMxSTezSymzANyph5N1PgRZ3sSbA+yR5hOuXxc71a0Q==", + "dev": true, + "requires": { + "type-fest": "^0.4.1" + }, + "dependencies": { + "type-fest": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", + "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", + "dev": true + } + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.defaultsdeep": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", + "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, + "lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true + }, + "lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, + "lodash.topairs": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.topairs/-/lodash.topairs-4.3.0.tgz", + "integrity": "sha1-O23qo31g+xFnE8RsXxfqGQ7EjWQ=", + "dev": true + }, + "lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984=", + "dev": true + }, + "lodash.zip": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", + "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", + "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, + "meow": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + } + } + }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, + "merge2": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", + "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", + "dev": true + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -1344,6 +3488,45 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + }, + "dependencies": { + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + } + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -1366,12 +3549,58 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, + "multimap": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz", + "integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==", + "dev": true + }, + "multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "requires": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + } + } + }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -1399,11 +3628,40 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "normalize-url": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", @@ -1414,6 +3672,97 @@ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, + "obj-props": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/obj-props/-/obj-props-1.3.0.tgz", + "integrity": "sha512-k2Xkjx5wn6eC3537SWAXHzB6lkI81kS+icMKMkh4nG3w7shWG6MaWOBrNvhWVOszrtL5uxdfymQQfPUxwY+2eg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -1439,6 +3788,26 @@ "mimic-fn": "^2.1.0" } }, + "open": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "open-editor": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/open-editor/-/open-editor-2.0.1.tgz", + "integrity": "sha512-B3KdD7Pl8jYdpBSBBbdYaqVUI3whQjLl1G1+CvhNc8+d7GzKRUq+VuCIx1thxGiqD2oBGRvsZz7QWrBsFP2yVA==", + "dev": true, + "requires": { + "env-editor": "^0.4.0", + "line-column-path": "^2.0.0", + "open": "^6.2.0" + } + }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", @@ -1472,6 +3841,167 @@ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-limit": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dev": true, + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "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" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + } + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dev": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dev": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "dev": true + } + } + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1481,6 +4011,15 @@ "callsites": "^3.0.0" } }, + "parse-json": { + "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.2.0" + } + }, "parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", @@ -1491,50 +4030,221 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, "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 }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pkg-conf": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", + "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "load-json-file": "^5.2.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "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 + } + } + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "plur": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/plur/-/plur-3.1.1.tgz", + "integrity": "sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w==", + "dev": true, + "requires": { + "irregular-plurals": "^2.0.0" + } + }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "dev": true + }, "prettier": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", "dev": true }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "proto-props": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/proto-props/-/proto-props-2.0.0.tgz", + "integrity": "sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ==", + "dev": true + }, "proxy-addr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", @@ -1544,6 +4254,12 @@ "ipaddr.js": "1.9.0" } }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, "psl": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", @@ -1568,6 +4284,12 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -1584,12 +4306,178 @@ "unpipe": "1.0.0" } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "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=", + "dev": true + } + } + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + } + } + }, + "regexp-tree": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.17.tgz", + "integrity": "sha512-UnOJjFS/EPZmfISmYx+0PcDtPzyFKTe+cZTS5sM5hifnRUDRxoB1j4DAmGwqzxjwBGlwOkGfb2cDGHtjuEwqoA==", + "dev": true + }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, + "registry-auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.0.0.tgz", + "integrity": "sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw==", + "dev": true, + "requires": { + "rc": "^1.2.8", + "safe-buffer": "^5.0.1" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dev": true, + "requires": { + "rc": "^1.2.8" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", @@ -1667,12 +4555,50 @@ } } }, + "reserved-words": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", + "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=", + "dev": true + }, + "resolve": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.2.tgz", + "integrity": "sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, "responselike": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", @@ -1691,6 +4617,12 @@ "signal-exit": "^3.0.2" } }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -1723,6 +4655,15 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safe-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", + "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", + "dev": true, + "requires": { + "regexp-tree": "~0.1.1" + } + }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -1742,6 +4683,23 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, + "semver-diff": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", + "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", + "dev": true, + "requires": { + "semver": "^5.0.3" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -1780,6 +4738,29 @@ "send": "0.17.1" } }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -1806,6 +4787,12 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", @@ -1825,11 +4812,193 @@ } } }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", + "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -1852,6 +5021,27 @@ "tweetnacl": "~0.14.0" } }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -1884,6 +5074,26 @@ } } }, + "string.prototype.trimleft": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", + "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", + "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -1901,6 +5111,24 @@ } } }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, "strip-json-comments": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", @@ -1916,6 +5144,24 @@ "has-flag": "^3.0.0" } }, + "supports-hyperlinks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", + "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", + "dev": true, + "requires": { + "has-flag": "^2.0.0", + "supports-color": "^5.0.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "dev": true + } + } + }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -1958,12 +5204,27 @@ } } }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "dev": true, + "requires": { + "execa": "^0.7.0" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "the-argv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/the-argv/-/the-argv-1.0.0.tgz", + "integrity": "sha1-AIRwUAVzDdhNt1UlPJMa45jblSI=", + "dev": true + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -1979,11 +5240,64 @@ "os-tmpdir": "~1.0.2" } }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "to-readable-stream": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-2.1.0.tgz", "integrity": "sha512-o3Qa6DGg1CEXshSdvWNX2sN4QHqg03SPq7U6jPXRahlQdl5dK8oXjkU/2/sGrnOZKeGV1zLSO8qPwyKklPPE7w==" }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "dependencies": { + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -2007,6 +5321,12 @@ "punycode": "^2.1.0" } }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + }, "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", @@ -2066,11 +5386,92 @@ } } }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "dev": true, + "requires": { + "crypto-random-string": "^1.0.0" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "update-notifier": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-3.0.1.tgz", + "integrity": "sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ==", + "dev": true, + "requires": { + "boxen": "^3.0.0", + "chalk": "^2.0.1", + "configstore": "^4.0.0", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.1.0", + "is-npm": "^3.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -2079,6 +5480,27 @@ "punycode": "^2.1.0" } }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dev": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -2095,6 +5517,16 @@ "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", "dev": true }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -2165,6 +5597,48 @@ "isexe": "^2.0.0" } }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "dev": true, + "requires": { + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "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 + }, + "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" + } + } + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -2189,6 +5663,58 @@ "mkdirp": "^0.5.1" } }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "write-json-file": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", + "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", + "dev": true, + "requires": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.0.0" + }, + "dependencies": { + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "write-pkg": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz", + "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==", + "dev": true, + "requires": { + "sort-keys": "^2.0.0", + "write-json-file": "^2.2.0" + } + }, "ws": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.0.tgz", @@ -2197,6 +5723,12 @@ "async-limiter": "^1.0.0" } }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", + "dev": true + }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", @@ -2206,6 +5738,265 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xo": { + "version": "0.25.3", + "resolved": "https://registry.npmjs.org/xo/-/xo-0.25.3.tgz", + "integrity": "sha512-125on+kPp6oi+EfoAajJ58cGLxIurZqWrehhdqoApWXpano9GL5D0ElcSlbG7UeYAfmNSwKJGTxHoLsHLhrZqg==", + "dev": true, + "requires": { + "arrify": "^2.0.1", + "debug": "^4.1.0", + "eslint": "^6.4.0", + "eslint-config-prettier": "^6.3.0", + "eslint-config-xo": "^0.27.1", + "eslint-formatter-pretty": "^2.0.0", + "eslint-plugin-ava": "^9.0.0", + "eslint-plugin-eslint-comments": "^3.0.1", + "eslint-plugin-import": "^2.18.2", + "eslint-plugin-no-use-extend-native": "^0.4.0", + "eslint-plugin-node": "^10.0.0", + "eslint-plugin-prettier": "^3.1.1", + "eslint-plugin-promise": "^4.0.0", + "eslint-plugin-unicorn": "^12.0.0", + "find-cache-dir": "^3.0.0", + "get-stdin": "^7.0.0", + "globby": "^9.0.0", + "has-flag": "^4.0.0", + "lodash.isequal": "^4.5.0", + "lodash.mergewith": "^4.6.2", + "meow": "^5.0.0", + "multimatch": "^4.0.0", + "open-editor": "^2.0.1", + "path-exists": "^4.0.0", + "pkg-conf": "^3.1.0", + "prettier": "^1.15.2", + "resolve-cwd": "^3.0.0", + "resolve-from": "^5.0.0", + "semver": "^6.3.0", + "slash": "^3.0.0", + "update-notifier": "^3.0.1", + "xo-init": "^0.7.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" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "xo-init": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/xo-init/-/xo-init-0.7.0.tgz", + "integrity": "sha512-mrrCKMu52vz0u2tiOl8DoG709pBtnSp58bb4/j58a4jeXjrb1gV7dxfOBjOlXitYtfW2QnlxxxfAojoFcpynDg==", + "dev": true, + "requires": { + "arrify": "^1.0.0", + "execa": "^0.9.0", + "has-yarn": "^1.0.0", + "minimist": "^1.1.3", + "path-exists": "^3.0.0", + "read-pkg-up": "^3.0.0", + "the-argv": "^1.0.0", + "write-pkg": "^3.1.0" + }, + "dependencies": { + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "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.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", + "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", + "dev": true, + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", + "dev": true + }, + "has-yarn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", + "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + } + } + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + }, + "yargs-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", + "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } } } } diff --git a/package.json b/package.json index 9482b92..bc06777 100644 --- a/package.json +++ b/package.json @@ -1,98 +1,52 @@ { - -"name": "gitfolio", - -"version": "0.1.5", - -"description": "a portfolio website for everyone to showcase their work", - -"main": "build.js", - -"bin": "bin/gitfolio.js", - -"scripts": { - -"cli": "OUT_DIR='./dist' node bin/gitfolio.js", - -"clean": "rm -rf ./dist/*", - -"prettier": "prettier --write \"./**/*.{js,jsx,json,html,css,md}\"", - -"test": "OUT_DIR='./dist' node bin/gitfolio.js build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h --reddit kaustubhladiya" - -}, - -"author": { - -"name": "@imfunniee and community", - -"email": "imfunny@wybemf.com", - -"url": "https://imfunniee.github.io" - -}, - -"bugs": "https://github.com/imfunniee/gitfolio/issues", - -"homepage": "https://github.com/imfunniee/gitfolio", - -"keywords": [ - -"personal-website", - -"github", - -"portfolio", - -"portfolio website", - -"gitfolio", - -"git" - -], - -"repository": { - -"type": "git", - -"url": "https://github.com/imfunniee/gitfolio" - -}, - -"license": "GPL-3.0", - -"dependencies": { - -"bluebird": "^3.7.2", - -"body-parser": "^1.19.0", - -"commander": "4.0.1", - -"ejs": "3.0.1", - -"express": "^4.17.1", - -"github-emoji": "^1.1.1", - -"got": "10.0.4", - -"handlebars": "^4.5.3", - -"jsdom": "^15.2.1", - -"ncp": "^2.0.0" - -}, - -"devDependencies": { - -"eslint": "^6.7.2", - -"prettier": "1.19.1" - + "name": "gitfolio", + "version": "0.1.5", + "description": "a portfolio website for everyone to showcase their work", + "main": "build.js", + "bin": "bin/gitfolio.js", + "scripts": { + "cli": "OUT_DIR='./dist' node bin/gitfolio.js", + "clean": "rm -rf ./dist/*", + "prettier": "prettier --write \"./**/*.{js,jsx,json,html,css,md}\"", + "test": "xo && OUT_DIR='./dist' node bin/gitfolio.js build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h --reddit kaustubhladiya" + }, + "xo": { + "prettier": true + }, + "author": { + "name": "@imfunniee and community", + "email": "imfunny@wybemf.com", + "url": "https://imfunniee.github.io" + }, + "bugs": "https://github.com/imfunniee/gitfolio/issues", + "homepage": "https://github.com/imfunniee/gitfolio", + "keywords": [ + "personal-website", + "github", + "portfolio", + "portfolio website", + "gitfolio", + "git" + ], + "repository": { + "type": "git", + "url": "https://github.com/imfunniee/gitfolio" + }, + "license": "GPL-3.0", + "dependencies": { + "bluebird": "^3.5.4", + "body-parser": "^1.19.0", + "commander": "^2.20.0", + "ejs": "^2.6.2", + "express": "^4.17.0", + "github-emoji": "^1.1.1", + "got": "^9.6.0", + "handlebars": "^4.1.2", + "jsdom": "^15.1.0", + "ncp": "^2.0.0" + }, + "devDependencies": { + "prettier": "1.19.1", + "xo": "^0.25.3" + } } - -} - diff --git a/populate.js b/populate.js index 7dbba3c..c6e0181 100644 --- a/populate.js +++ b/populate.js @@ -1,106 +1,112 @@ const fs = require("fs"); const emoji = require("github-emoji"); -const jsdom = require("jsdom").JSDOM, - options = { - resources: "usable" - }; -const { getConfig, outDir } = require("./utils"); -const { getRepos, getUser } = require("./api"); +const jsdom = require("jsdom").JSDOM; +const options = { + resources: "usable" +}; +const {getConfig, outDir} = require("./utils"); +const {getRepos, getUser} = require("./api"); function convertToEmoji(text) { - if (text == null) return; - text = text.toString(); - var pattern = /(?<=:\s*).*?(?=\s*:)/gs; - if (text.match(pattern) != null) { - var str = text.match(pattern); - str = str.filter(function(arr) { - return /\S/.test(arr); - }); - for (i = 0; i < str.length; i++) { - if (emoji.URLS[str[i]] != undefined) { - text = text.replace( - `:${str[i]}:`, - `` - ); - } - } - return text; - } else { - return text; - } + if (text === null) { + return; + } + + text = text.toString(); + const pattern = /(?<=:\s*).*?(?=\s*:)/gs; + if (text.match(pattern) !== null) { + let str = text.match(pattern); + str = str.filter(arr => { + return /\S/.test(arr); + }); + for (i = 0; i < str.length; i++) { + if (emoji.URLS[str[i]] !== undefined) { + text = text.replace( + `:${str[i]}:`, + `` + ); + } + } + + return text; + } + + return text; } module.exports.updateHTML = (username, opts) => { - const { - includeFork, - codepen, - dev, - dribbble, - email, - instagram, - reddit, - telegram, - twitter - } = opts; - //add data to assets/index.html - jsdom - .fromFile(`${__dirname}/assets/index.html`, options) - .then(function(dom) { - let window = dom.window, - document = window.document; - (async () => { - try { - console.log("Building HTML/CSS..."); - const repos = await getRepos(username, opts); + const { + includeFork, + codepen, + dev, + dribbble, + email, + instagram, + reddit, + telegram, + twitter + } = opts; + // add data to assets/index.html + jsdom + .fromFile(`${__dirname}/assets/index.html`, options) + .then(dom => { + const {window} = dom; + const {document} = window; + (async () => { + try { + console.log("Building HTML/CSS..."); + const repos = await getRepos(username, opts); - for (var i = 0; i < repos.length; i++) { - let element; - if (repos[i].fork == false) { - element = document.getElementById("work_section"); - } else if (includeFork == true) { - document.getElementById("forks").style.display = "block"; - element = document.getElementById("forks_section"); - } else { - continue; - } - element.innerHTML += ` - + for (const element of repos) { + let element; + if (element.fork === false) { + element = document.querySelector("#work_section"); + } else if (includeFork === true) { + document.querySelector("#forks").style.display = "block"; + element = document.querySelector("#forks_section"); + } else { + continue; + } + + element.innerHTML += ` +
-
${repos[i].name}
+
${element.name}
${convertToEmoji(repos[i].description)} + element.description === undefined + ? "none" + : "block" + };">${convertToEmoji(element.description)}
  ${ - repos[i].language - } + element.language === null + ? "none" + : "inline-block" + };">  ${ + element.language + }   ${ - repos[i].stargazers_count - } + element.stargazers_count + }   ${ - repos[i].forks_count - } + element.forks_count + }
`; - } - const user = await getUser(username); - document.title = user.login; - var icon = document.createElement("link"); - icon.setAttribute("rel", "icon"); - icon.setAttribute("href", user.avatar_url); - icon.setAttribute("type", "image/png"); + } - document.getElementsByTagName("head")[0].appendChild(icon); - document.getElementsByTagName("head")[0].innerHTML += ` + const user = await getUser(username); + document.title = user.login; + const icon = document.createElement("link"); + icon.setAttribute("rel", "icon"); + icon.setAttribute("href", user.avatar_url); + icon.setAttribute("type", "image/png"); + + document.querySelectorAll("head")[0].append(icon); + document.querySelectorAll("head")[0].innerHTML += ` @@ -112,89 +118,95 @@ module.exports.updateHTML = (username, opts) => { `; - document.getElementById( - "username" - ).innerHTML = `
_

@${user.login}`; - //document.getElementById("github_link").href = `https://github.com/${user.login}`; - document.getElementById("userbio").innerHTML = convertToEmoji( - user.bio - ); - document.getElementById("userbio").style.display = - user.bio == null || !user.bio ? "none" : "block"; - document.getElementById("about").innerHTML = ` + document.querySelector( + "#username" + ).innerHTML = `
_

@${user.login}`; + // document.getElementById("github_link").href = `https://github.com/${user.login}`; + document.querySelector("#userbio").innerHTML = convertToEmoji( + user.bio + ); + document.querySelector("#userbio").style.display = + user.bio == null || !user.bio ? "none" : "block"; + document.querySelector("#about").innerHTML = `   ${user.company} + user.company == null || !user.company ? "none" : "block" + };">   ${user.company}   ${user.email} + user.email == null || !user.email ? "none" : "block" + };">   ${user.email}    ${ - user.location - } + user.location == null || !user.location ? "none" : "block" + };">    ${ + user.location + }    Available for hire + user.hireable == false || !user.hireable ? "none" : "block" + };">    Available for hire
+ codepen == null ? "none !important" : "block" + };"> + dev == null ? "none !important" : "block" + };"> + dribbble == null ? "none !important" : "block" + };"> + email == null ? "none !important" : "block" + };"> + instagram == null ? "none !important" : "block" + };"> + reddit == null ? "none !important" : "block" + };"> + telegram == null ? "none !important" : "block" + };"> + twitter == null ? "none !important" : "block" + };">
`; - //add data to config.json - const data = await getConfig(); - data[0].username = user.login; - data[0].name = user.name; - data[0].userimg = user.avatar_url; + // add data to config.json + const data = await getConfig(); + data[0].username = user.login; + data[0].name = user.name; + data[0].userimg = user.avatar_url; - await fs.writeFile( - `${outDir}/config.json`, - JSON.stringify(data, null, " "), - function(err) { - if (err) throw err; - console.log("Config file updated."); - } - ); - await fs.writeFile( - `${outDir}/index.html`, - "" + window.document.documentElement.outerHTML, - function(error) { - if (error) throw error; - console.log(`Build Complete, Files can be Found @ ${outDir}\n`); - } - ); - } catch (error) { - console.log(error); - } - })(); - }) - .catch(function(error) { - console.log(error); - }); + await fs.writeFile( + `${outDir}/config.json`, + JSON.stringify(data, null, " "), + err => { + if (err) { + throw err; + } + + console.log("Config file updated."); + } + ); + await fs.writeFile( + `${outDir}/index.html`, + "" + window.document.documentElement.outerHTML, + error => { + if (error) { + throw error; + } + + console.log(`Build Complete, Files can be Found @ ${outDir}\n`); + } + ); + } catch (error) { + console.log(error); + } + })(); + }) + .catch(error => { + console.log(error); + }); }; diff --git a/run.js b/run.js index 7b2d1b4..cb39ee9 100644 --- a/run.js +++ b/run.js @@ -1,22 +1,22 @@ -const express = require("express"); const path = require("path"); +const express = require("express"); const outDir = path.resolve("./dist/" || process.env.OUT_DIR); const app = express(); app.use(express.static(`${outDir}`)); function runCommand(program) { - let port = program.port ? program.port : 3000; + const port = program.port ? program.port : 3000; - app.get("/", function(req, res) { - res.sendFile("/index.html"); - }); + app.get("/", (req, res) => { + res.sendFile("/index.html"); + }); - app.listen(port); - console.log( - `\nGitfolio running on port ${port}, Navigate to http://localhost:${port} in your browser\n` - ); + app.listen(port); + console.log( + `\nGitfolio running on port ${port}, Navigate to http://localhost:${port} in your browser\n` + ); } module.exports = { - runCommand + runCommand }; diff --git a/ui.js b/ui.js index 34d8c6e..899e939 100644 --- a/ui.js +++ b/ui.js @@ -1,99 +1,101 @@ const fs = require("fs"); const express = require("express"); -const { updateHTML } = require("./populate"); -const { populateCSS, populateConfig } = require("./build"); -const { updateCommand } = require("./update"); +const jsdom = require("jsdom").JSDOM; +const options = { + resources: "usable" +}; +const {updateHTML} = require("./populate"); +const {populateCSS, populateConfig} = require("./build"); +const {updateCommand} = require("./update"); const app = express(); app.set("view engine", "ejs"); app.use(express.static(__dirname + "/views")); app.set("views", __dirname + "/views"); app.use( - express.json({ - limit: "50mb" - }) + express.json({ + limit: "50mb" + }) ); app.use( - express.urlencoded({ - limit: "50mb", - extended: true - }) + express.urlencoded({ + limit: "50mb", + extended: true + }) ); const port = 3000; -const jsdom = require("jsdom").JSDOM, - options = { - resources: "usable" - }; global.DOMParser = new jsdom().window.DOMParser; function uiCommand() { - app.get("/", function(req, res) { - res.render("index.ejs"); - }); + app.get("/", (req, res) => { + res.render("index.ejs"); + }); - app.get("/update", function(req, res) { - if (!fs.existsSync(`${outDir}/config.json`)) { - return res.send( - 'You need to run build command before using update
Go Back' - ); - } - updateCommand(); - res.redirect("/"); - }); + app.get("/update", (req, res) => { + if (!fs.existsSync(`${outDir}/config.json`)) { + return res.send( + 'You need to run build command before using update
Go Back' + ); + } - app.post("/build", function(req, res) { - let username = req.body.username; - if (!username) { - return res.send("username can't be empty"); - } - let sort = req.body.sort ? req.body.sort : "created"; - let order = req.body.order ? req.body.order : "asc"; - let includeFork = req.body.fork == "true" ? true : false; - let types = ["owner"]; - let codepen = req.body.codepen ? req.body.codepen : null; - let dev = req.body.dev ? req.body.dev : null; - let dribbble = req.body.dribbble ? req.body.dribbble : null; - let email = req.body.email ? req.body.email : null; - let instagram = req.body.instagram ? req.body.instagram : null; - let reddit = req.body.reddit ? req.body.reddit : null; - let telegram = req.body.telegram ? req.body.telegram : null; - let twitter = req.body.twitter ? req.body.twitter : null; - let background = req.body.background - ? req.body.background - : "https://source.unsplash.com/1280x720/?wallpaper"; - let theme = req.body.theme == "on" ? "dark" : "light"; - const opts = { - sort: sort, - order: order, - includeFork: includeFork, - types, - codepen: codepen, - dev: dev, - dribbble: dribbble, - email: email, - instagram: instagram, - reddit: reddit, - telegram: telegram, - twitter: twitter - }; + updateCommand(); + res.redirect("/"); + }); - updateHTML(username, opts); - populateCSS({ - background: background, - theme: theme - }); - populateConfig(opts); - res.redirect("/"); - }); + app.post("/build", (req, res) => { + const {username} = req.body; + if (!username) { + return res.send("username can't be empty"); + } - console.log("\nStarting..."); - app.listen(port); - console.log( - `The GUI is running on port ${port}, Navigate to http://localhost:${port} in your browser\n` - ); + const sort = req.body.sort ? req.body.sort : "created"; + const order = req.body.order ? req.body.order : "asc"; + const includeFork = req.body.fork === "true"; + const types = ["owner"]; + const codepen = req.body.codepen ? req.body.codepen : null; + const dev = req.body.dev ? req.body.dev : null; + const dribbble = req.body.dribbble ? req.body.dribbble : null; + const email = req.body.email ? req.body.email : null; + const instagram = req.body.instagram ? req.body.instagram : null; + const reddit = req.body.reddit ? req.body.reddit : null; + const telegram = req.body.telegram ? req.body.telegram : null; + const twitter = req.body.twitter ? req.body.twitter : null; + const background = req.body.background + ? req.body.background + : "https://source.unsplash.com/1280x720/?wallpaper"; + const theme = req.body.theme === "on" ? "dark" : "light"; + const opts = { + sort, + order, + includeFork, + types, + codepen, + dev, + dribbble, + email, + instagram, + reddit, + telegram, + twitter + }; + + updateHTML(username, opts); + populateCSS({ + background, + theme + }); + populateConfig(opts); + res.redirect("/"); + }); + + console.log("\nStarting..."); + app.listen(port); + console.log( + `The GUI is running on port ${port}, Navigate to http://localhost:${port} in your browser\n` + ); } module.exports = { - uiCommand + uiCommand }; diff --git a/update.js b/update.js index a1cab5c..29541fc 100644 --- a/update.js +++ b/update.js @@ -1,32 +1,33 @@ -const { getConfig } = require("./utils"); -const { updateHTML } = require("./populate"); +const {getConfig} = require("./utils"); +const {updateHTML} = require("./populate"); async function updateCommand() { - const data = await getConfig(); - var username = data[0].username; - if (username == null) { - console.log( - "username not found in config.json, please run build command before using update" - ); - return; - } - const opts = { - sort: data[0].sort, - order: data[0].order, - includeFork: data[0].includeFork, - types: data[0].types, - codepen: data[0].codepen, - dev: data[0].dev, - dribbble: data[0].dribbble, - email: data[0].email, - instagram: data[0].instagram, - reddit: data[0].reddit, - telegram: data[0].telegram, - twitter: data[0].twitter - }; - updateHTML(username, opts); + const data = await getConfig(); + const {username} = data[0]; + if (username === null) { + console.log( + "username not found in config.json, please run build command before using update" + ); + return; + } + + const opts = { + sort: data[0].sort, + order: data[0].order, + includeFork: data[0].includeFork, + types: data[0].types, + codepen: data[0].codepen, + dev: data[0].dev, + dribbble: data[0].dribbble, + email: data[0].email, + instagram: data[0].instagram, + reddit: data[0].reddit, + telegram: data[0].telegram, + twitter: data[0].twitter + }; + updateHTML(username, opts); } module.exports = { - updateCommand + updateCommand }; diff --git a/utils.js b/utils.js index 6b6de7d..eba4382 100644 --- a/utils.js +++ b/utils.js @@ -12,21 +12,22 @@ const defaultConfigPath = path.resolve(`${__dirname}/default/config.json`); * if not present returns default file contents */ async function getFileWithDefaults(file, defaultFile) { - try { - await fs.accessAsync(file, fs.constants.F_OK); - } catch (err) { - const defaultData = await fs.readFileAsync(defaultFile); - return JSON.parse(defaultData); - } - const data = await fs.readFileAsync(file); - return JSON.parse(data); + try { + await fs.accessAsync(file, fs.constants.F_OK); + } catch (error) { + const defaultData = await fs.readFileAsync(defaultFile); + return JSON.parse(defaultData); + } + + const data = await fs.readFileAsync(file); + return JSON.parse(data); } async function getConfig() { - return getFileWithDefaults(configPath, defaultConfigPath); + return getFileWithDefaults(configPath, defaultConfigPath); } module.exports = { - outDir, - getConfig + outDir, + getConfig }; From 4687ff2e3ecb0b6d95a856b8afaf7566fb1f419f Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sat, 11 Jan 2020 16:51:36 +0000 Subject: [PATCH 100/163] Bump got from 10.0.4 to 10.2.2 Bumps [got](https://github.com/sindresorhus/got) from 10.0.4 to 10.2.2. - [Release notes](https://github.com/sindresorhus/got/releases) - [Commits](https://github.com/sindresorhus/got/compare/v10.0.4...v10.2.2) Signed-off-by: dependabot-preview[bot] --- package-lock.json | 32 ++++++++++++++++---------------- package.json | 2 +- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f46e7d..a525d76 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,9 +46,9 @@ "integrity": "sha512-mwhXGkRV5dlvQc4EgPDxDxO6WuMBVymGFd1CA+2Y+z5dG9MNspoQ+AWjl/Ld1MnpCL8AKbosZlDVohqcIwuWsw==" }, "@szmarczak/http-timer": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-3.1.1.tgz", - "integrity": "sha512-F7vS53bV9NXT+mmYFeSBr2nXaOI1h6qxdlLDVP+4CPG/c60MMStT7aaqYD2TSNWob1DA3GH9ikFY0UW31bUsWA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.0.tgz", + "integrity": "sha512-3yoXv8OtGr/r3R5gaWWNQ3VUoQ5G3Gmo8DXX95V14ZVvE2b7Pj6Ide9uIDON8ym4D/ItyfL9ejohYUPqOyvRXw==", "requires": { "defer-to-connect": "^1.1.1" } @@ -87,9 +87,9 @@ "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" }, "@types/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-OxT2IEeRdwvoUyp8n1v1hTIFzATb3NQYN8OHv/XbXRHiF2DXwKyzoI4UUaQgwZkRflLaSgyttat+RfWgsKIMIQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", + "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", "requires": { "@types/node": "*" } @@ -786,9 +786,9 @@ } }, "commander": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.0.1.tgz", - "integrity": "sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA==" + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "commondir": { "version": "1.0.1", @@ -1177,9 +1177,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "ejs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.1.tgz", - "integrity": "sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw==" + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", + "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" }, "emoji-regex": { "version": "8.0.0", @@ -2363,12 +2363,12 @@ } }, "got": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/got/-/got-10.0.4.tgz", - "integrity": "sha512-yMaRLGZJ7iINsDcZ8hso+v44IXVOejz7xrqEabSvUewdHS3zOf57IqU3sWIBYwHlekSrk+CC2PCeLzabOBxnVA==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/got/-/got-10.2.2.tgz", + "integrity": "sha512-QibZN13xHH/mc7H5uuU2xq28xxs8moEPsJrW9AQQX0jAV4DkGdllHDVE9cxw1nntIPFk8xzzOrgJZBg194AWrg==", "requires": { "@sindresorhus/is": "^1.0.0", - "@szmarczak/http-timer": "^3.1.1", + "@szmarczak/http-timer": "^4.0.0", "@types/cacheable-request": "^6.0.1", "cacheable-lookup": "^0.2.1", "cacheable-request": "^7.0.0", diff --git a/package.json b/package.json index bc06777..6975569 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "ejs": "^2.6.2", "express": "^4.17.0", "github-emoji": "^1.1.1", - "got": "^9.6.0", + "got": "^10.2.2", "handlebars": "^4.1.2", "jsdom": "^15.1.0", "ncp": "^2.0.0" From ee3ccb26ab64405c12146fa741b63c0d456907d2 Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Sun, 12 Jan 2020 15:08:32 +0530 Subject: [PATCH 101/163] Removed xo --- .eslintrc.json | 18 +++ README.md | 1 - api.js | 74 ++++----- assets/service-worker.js | 64 ++++---- bin/gitfolio.js | 82 +++++----- build.js | 126 ++++++++-------- package-lock.json | 24 +-- package.json | 6 +- populate.js | 316 +++++++++++++++++++-------------------- run.js | 18 +-- ui.js | 144 +++++++++--------- update.js | 52 +++---- utils.js | 22 +-- 13 files changed, 478 insertions(+), 469 deletions(-) create mode 100644 .eslintrc.json diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..f1e3d15 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "env": { + "browser": true, + "es6": true, + "node": true + }, + "extends": "eslint:recommended", + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module" + }, + "rules": { + } +} \ No newline at end of file diff --git a/README.md b/README.md index f2f9eab..4193f06 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,3 @@ [![Dependency Status](https://img.shields.io/david/k4ustu3h/gitfolio?style=for-the-badge)](https://david-dm.org/k4ustu3h/gitfolio) [![devDependencies Status](https://img.shields.io/david/dev/k4ustu3h/gitfolio?style=for-the-badge)](https://david-dm.org/k4ustu3h/gitfolio?type=dev) [![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=for-the-badge)](https://github.com/prettier/prettier) -[![XO code style](https://img.shields.io/badge/code_style-XO-5ed9c7.svg?style=for-the-badge)](https://github.com/xojs/xo) diff --git a/api.js b/api.js index 6158b07..94465da 100644 --- a/api.js +++ b/api.js @@ -10,46 +10,46 @@ const got = require("got"); * @param {'desc' | 'asc'} [opts.order] */ async function getRepos(username, opts = {}) { - let tempRepos; - let page = 1; - let repos = []; + let tempRepos; + let page = 1; + let repos = []; - const {sort} = opts; - const order = opts.order || (sort === "full_name" ? "asc" : "desc"); - const types = opts.types || []; - let type = "all"; + const { sort } = opts; + const order = opts.order || (sort === "full_name" ? "asc" : "desc"); + const types = opts.types || []; + let type = "all"; - if ( - types.includes("all") || - (types.includes("owner") && types.includes("member")) - ) { - type = "all"; - } else if (types.includes("member")) { - type = "member"; - } + if ( + types.includes("all") || + (types.includes("owner") && types.includes("member")) + ) { + type = "all"; + } else if (types.includes("member")) { + type = "member"; + } - do { - let requestUrl = `https://api.github.com/users/${username}/repos?per_page=100&page=${page++}&type=${type}`; - if (sort && sort !== "star") { - requestUrl += `&sort=${sort}&direction=${order}`; - } + do { + let requestUrl = `https://api.github.com/users/${username}/repos?per_page=100&page=${page++}&type=${type}`; + if (sort && sort !== "star") { + requestUrl += `&sort=${sort}&direction=${order}`; + } - tempRepos = await got(requestUrl); - tempRepos = JSON.parse(tempRepos.body); - repos = repos.concat(tempRepos); - } while (tempRepos.length === 100); + tempRepos = await got(requestUrl); + tempRepos = JSON.parse(tempRepos.body); + repos = repos.concat(tempRepos); + } while (tempRepos.length === 100); - if (sort === "star") { - repos = repos.sort((a, b) => { - if (order === "desc") { - return b.stargazers_count - a.stargazers_count; - } + if (sort === "star") { + repos = repos.sort((a, b) => { + if (order === "desc") { + return b.stargazers_count - a.stargazers_count; + } - return a.stargazers_count - b.stargazers_count; - }); - } + return a.stargazers_count - b.stargazers_count; + }); + } - return repos; + return repos; } /** @@ -57,11 +57,11 @@ async function getRepos(username, opts = {}) { * @param {string} username */ async function getUser(username) { - const res = await got(`https://api.github.com/users/${username}`); - return JSON.parse(res.body); + const res = await got(`https://api.github.com/users/${username}`); + return JSON.parse(res.body); } module.exports = { - getRepos, - getUser + getRepos, + getUser }; diff --git a/assets/service-worker.js b/assets/service-worker.js index e21f27a..25067a9 100644 --- a/assets/service-worker.js +++ b/assets/service-worker.js @@ -1,42 +1,42 @@ importScripts( - "https://storage.googleapis.com/workbox-cdn/releases/3.6.1/workbox-sw.js" + "https://storage.googleapis.com/workbox-cdn/releases/3.6.1/workbox-sw.js" ); if (workbox) { - workbox.setConfig({ - debug: false - }); + workbox.setConfig({ + debug: false + }); - const defaultStrategy = workbox.strategies.networkFirst({ - cacheName: "fallback", - plugins: [ - new workbox.expiration.Plugin({ - maxEntries: 128, - maxAgeSeconds: 7 * 24 * 60 * 60, // 1 week - purgeOnQuotaError: true // Opt-in to automatic cleanup - }), - new workbox.cacheableResponse.Plugin({ - statuses: [0, 200] // For opague requests - }) - ] - }); - workbox.routing.setDefaultHandler(args => { - if (args.event.request.method === "GET") { - return defaultStrategy.handle(args); // Use default strategy - } + const defaultStrategy = workbox.strategies.networkFirst({ + cacheName: "fallback", + plugins: [ + new workbox.expiration.Plugin({ + maxEntries: 128, + maxAgeSeconds: 7 * 24 * 60 * 60, // 1 week + purgeOnQuotaError: true // Opt-in to automatic cleanup + }), + new workbox.cacheableResponse.Plugin({ + statuses: [0, 200] // For opague requests + }) + ] + }); + workbox.routing.setDefaultHandler(args => { + if (args.event.request.method === "GET") { + return defaultStrategy.handle(args); // Use default strategy + } - return null; - }); + return null; + }); - workbox.routing.registerRoute( - new RegExp(/.*\.(?:js|css)/g), - workbox.strategies.networkFirst() - ); + workbox.routing.registerRoute( + new RegExp(/.*\.(?:js|css)/g), + workbox.strategies.networkFirst() + ); - workbox.routing.registerRoute( - new RegExp(/.*\.(?:png|jpg|jpeg|svg|gif|webp)/g), - workbox.strategies.cacheFirst() - ); + workbox.routing.registerRoute( + new RegExp(/.*\.(?:png|jpg|jpeg|svg|gif|webp)/g), + workbox.strategies.cacheFirst() + ); } else { - console.log("No workbox on this browser 😬"); + console.log("No workbox on this browser 😬"); } diff --git a/bin/gitfolio.js b/bin/gitfolio.js index eb56c4d..58e41dc 100755 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -5,63 +5,63 @@ const program = require("commander"); process.env.OUT_DIR = process.env.OUT_DIR || process.cwd(); -const {buildCommand} = require("../build"); -const {updateCommand} = require("../update"); -const {uiCommand} = require("../ui"); -const {runCommand} = require("../run"); -const {version} = require("../package.json"); +const { buildCommand } = require("../build"); +const { updateCommand } = require("../update"); +const { uiCommand } = require("../ui"); +const { runCommand } = require("../run"); +const { version } = require("../package.json"); function collect(val, memo) { - memo.push(val); - return memo; + memo.push(val); + return memo; } program - .command("build ") - .description( - "Build site with your GitHub username. This will be used to customize your site" - ) - .option("-t, --theme [theme]", "specify a theme to use", "light") - .option("-b, --background [background]", "set the background image") - .option("-f, --fork", "includes forks with repos") - .option("-s, --sort [sort]", "set default sort for repository", "created") - .option("-o, --order [order]", "set default order on sort", "asc") - .option("-c, --codepen [username]", "specify codepen username") - .option("-d, --dev [username]", "specify dev username") - .option("-D, --dribbble [username]", "specify dribbble username") - .option("-e, --email [username]", "specify email") - .option("-i, --instagram [username]", "specify instagram username") - .option("-r, --reddit [username]", "specify reddit username") - .option("-T, --telegram [username]", "specify telegram username") - .option("-w, --twitter [username]", "specify twitter username") - .action(buildCommand); + .command("build ") + .description( + "Build site with your GitHub username. This will be used to customize your site" + ) + .option("-t, --theme [theme]", "specify a theme to use", "light") + .option("-b, --background [background]", "set the background image") + .option("-f, --fork", "includes forks with repos") + .option("-s, --sort [sort]", "set default sort for repository", "created") + .option("-o, --order [order]", "set default order on sort", "asc") + .option("-c, --codepen [username]", "specify codepen username") + .option("-d, --dev [username]", "specify dev username") + .option("-D, --dribbble [username]", "specify dribbble username") + .option("-e, --email [username]", "specify email") + .option("-i, --instagram [username]", "specify instagram username") + .option("-r, --reddit [username]", "specify reddit username") + .option("-T, --telegram [username]", "specify telegram username") + .option("-w, --twitter [username]", "specify twitter username") + .action(buildCommand); program - .command("update") - .description("Update user and repository data") - .action(updateCommand); + .command("update") + .description("Update user and repository data") + .action(updateCommand); program - .command("ui") - .description("Create and Manage gitfolio with ease") - .action(uiCommand); + .command("ui") + .description("Create and Manage gitfolio with ease") + .action(uiCommand); program - .command("run") - .description("Run build files") - .option("-p, --port [port]", "provide a port for localhost, default is 3000") - .action(runCommand); + .command("run") + .description("Run build files") + .option("-p, --port [port]", "provide a port for localhost, default is 3000") + .action(runCommand); program.on("command:*", () => { - console.log("Unknown Command: " + program.args.join(" ")); - program.help(); + console.log("Unknown Command: " + program.args.join(" ")); + program.help(); }); program - .version(version, "-v --version") - .usage(" [options]") - .parse(process.argv); + .version(version, "-v --version") + .usage(" [options]") + .parse(process.argv); if (program.args.length === 0) { - program.help(); + program.help(); } diff --git a/build.js b/build.js index 011a415..2ab8cda 100644 --- a/build.js +++ b/build.js @@ -6,8 +6,8 @@ const hbs = require("handlebars"); /* Creates promise-returning async functions from callback-passed async functions */ const fs = bluebird.promisifyAll(require("fs")); -const {updateHTML} = require("./populate"); -const {getConfig, outDir} = require("./utils"); +const { updateHTML } = require("./populate"); +const { getConfig, outDir } = require("./utils"); const assetDir = path.resolve(`${__dirname}/assets/`); const config = path.join(outDir, "config.json"); @@ -19,83 +19,83 @@ const config = path.join(outDir, "config.json"); * arguments. */ async function populateCSS({ - theme = "light", - background = "https://source.unsplash.com/1280x720/?wallpaper" + theme = "light", + background = "https://source.unsplash.com/1280x720/?wallpaper" } = {}) { - /* Get the theme the user requests. Defaults to 'light' */ - theme = `${theme}.css`; - const template = path.resolve(assetDir, "index.css"); - const stylesheet = path.join(outDir, "index.css"); + /* Get the theme the user requests. Defaults to 'light' */ + theme = `${theme}.css`; + const template = path.resolve(assetDir, "index.css"); + const stylesheet = path.join(outDir, "index.css"); - try { - await fs.accessAsync(outDir, fs.constants.F_OK); - } catch (error) { - await fs.mkdirAsync(outDir); - } + try { + await fs.accessAsync(outDir, fs.constants.F_OK); + } catch (error) { + await fs.mkdirAsync(outDir); + } - /* Copy over the template CSS stylesheet */ - await fs.copyFileAsync(template, stylesheet); + /* Copy over the template CSS stylesheet */ + await fs.copyFileAsync(template, stylesheet); - /* Get an array of every available theme */ - const themes = await fs.readdirAsync(path.join(assetDir, "themes")); + /* Get an array of every available theme */ + const themes = await fs.readdirAsync(path.join(assetDir, "themes")); - if (!themes.includes(theme)) { - console.error('Error: Requested theme not found. Defaulting to "light".'); - theme = "light"; - } + if (!themes.includes(theme)) { + console.error('Error: Requested theme not found. Defaulting to "light".'); + theme = "light"; + } - /* Read in the theme stylesheet */ - let themeSource = await fs.readFileSync(path.join(assetDir, "themes", theme)); - themeSource = themeSource.toString("utf-8"); - const themeTemplate = hbs.compile(themeSource); - const styles = themeTemplate({ - background: `${background}` - }); - /* Add the user-specified styles to the new stylesheet */ - await fs.appendFileAsync(stylesheet, styles); + /* Read in the theme stylesheet */ + let themeSource = await fs.readFileSync(path.join(assetDir, "themes", theme)); + themeSource = themeSource.toString("utf-8"); + const themeTemplate = hbs.compile(themeSource); + const styles = themeTemplate({ + background: `${background}` + }); + /* Add the user-specified styles to the new stylesheet */ + await fs.appendFileAsync(stylesheet, styles); - /* Update the config file with the user's theme choice */ - const data = await getConfig(); - data[0].theme = theme; - await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); + /* Update the config file with the user's theme choice */ + const data = await getConfig(); + data[0].theme = theme; + await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); } async function populateConfig(opts) { - const data = await getConfig(); - Object.assign(data[0], opts); - await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); + const data = await getConfig(); + Object.assign(data[0], opts); + await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); } async function buildCommand(username, program) { - await populateCSS(program); - let types; - if (!program.include || !program.include.length) { - types = ["all"]; - } else { - types = program.include; - } + await populateCSS(program); + let types; + if (!program.include || !program.include.length) { + types = ["all"]; + } else { + types = program.include; + } - const opts = { - sort: program.sort, - order: program.order, - includeFork: Boolean(program.fork), - types, - codepen: program.codepen, - dev: program.dev, - dribbble: program.dribbble, - email: program.email, - instagram: program.instagram, - reddit: program.reddit, - telegram: program.telegram, - twitter: program.twitter - }; + const opts = { + sort: program.sort, + order: program.order, + includeFork: Boolean(program.fork), + types, + codepen: program.codepen, + dev: program.dev, + dribbble: program.dribbble, + email: program.email, + instagram: program.instagram, + reddit: program.reddit, + telegram: program.telegram, + twitter: program.twitter + }; - await populateConfig(opts); - updateHTML(("%s", username), opts); + await populateConfig(opts); + updateHTML(("%s", username), opts); } module.exports = { - buildCommand, - populateCSS, - populateConfig + buildCommand, + populateCSS, + populateConfig }; diff --git a/package-lock.json b/package-lock.json index a525d76..3a2673b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1278,9 +1278,9 @@ } }, "eslint": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.7.2.tgz", - "integrity": "sha512-qMlSWJaCSxDFr8fBPvJM9kJwbazrhNcBU3+DszDW1OlEwKBBRWsJc7NJFelvwQpanHCR14cOLD41x8Eqvo3Nng==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", @@ -1349,6 +1349,12 @@ "lodash.zip": "^4.2.0" } }, + "eslint-config-google": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", + "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", + "dev": true + }, "eslint-config-prettier": { "version": "6.9.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.9.0.tgz", @@ -2584,9 +2590,9 @@ "dev": true }, "inquirer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.1.tgz", - "integrity": "sha512-V1FFQ3TIO15det8PijPLFR9M9baSlnRs9nL7zWu1MNVA2T9YVl9ZbrHJhYs7e9X8jeMZ3lr2JH/rdHFgNCBdYw==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.3.tgz", + "integrity": "sha512-+OiOVeVydu4hnCGLCSX+wedovR/Yzskv9BFqUNNKq9uU2qg7LCcCo3R86S2E7WLo0y/x2pnEZfZe1CoYnORUAw==", "dev": true, "requires": { "ansi-escapes": "^4.2.1", @@ -4642,9 +4648,9 @@ } }, "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { "tslib": "^1.9.0" diff --git a/package.json b/package.json index 6975569..0aff41f 100644 --- a/package.json +++ b/package.json @@ -8,10 +8,7 @@ "cli": "OUT_DIR='./dist' node bin/gitfolio.js", "clean": "rm -rf ./dist/*", "prettier": "prettier --write \"./**/*.{js,jsx,json,html,css,md}\"", - "test": "xo && OUT_DIR='./dist' node bin/gitfolio.js build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h --reddit kaustubhladiya" - }, - "xo": { - "prettier": true + "test": "OUT_DIR='./dist' node bin/gitfolio.js build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h --reddit kaustubhladiya" }, "author": { "name": "@imfunniee and community", @@ -46,6 +43,7 @@ "ncp": "^2.0.0" }, "devDependencies": { + "eslint": "^6.8.0", "prettier": "1.19.1", "xo": "^0.25.3" } diff --git a/populate.js b/populate.js index c6e0181..7dbba3c 100644 --- a/populate.js +++ b/populate.js @@ -1,112 +1,106 @@ const fs = require("fs"); const emoji = require("github-emoji"); -const jsdom = require("jsdom").JSDOM; -const options = { - resources: "usable" -}; -const {getConfig, outDir} = require("./utils"); -const {getRepos, getUser} = require("./api"); +const jsdom = require("jsdom").JSDOM, + options = { + resources: "usable" + }; +const { getConfig, outDir } = require("./utils"); +const { getRepos, getUser } = require("./api"); function convertToEmoji(text) { - if (text === null) { - return; - } - - text = text.toString(); - const pattern = /(?<=:\s*).*?(?=\s*:)/gs; - if (text.match(pattern) !== null) { - let str = text.match(pattern); - str = str.filter(arr => { - return /\S/.test(arr); - }); - for (i = 0; i < str.length; i++) { - if (emoji.URLS[str[i]] !== undefined) { - text = text.replace( - `:${str[i]}:`, - `` - ); - } - } - - return text; - } - - return text; + if (text == null) return; + text = text.toString(); + var pattern = /(?<=:\s*).*?(?=\s*:)/gs; + if (text.match(pattern) != null) { + var str = text.match(pattern); + str = str.filter(function(arr) { + return /\S/.test(arr); + }); + for (i = 0; i < str.length; i++) { + if (emoji.URLS[str[i]] != undefined) { + text = text.replace( + `:${str[i]}:`, + `` + ); + } + } + return text; + } else { + return text; + } } module.exports.updateHTML = (username, opts) => { - const { - includeFork, - codepen, - dev, - dribbble, - email, - instagram, - reddit, - telegram, - twitter - } = opts; - // add data to assets/index.html - jsdom - .fromFile(`${__dirname}/assets/index.html`, options) - .then(dom => { - const {window} = dom; - const {document} = window; - (async () => { - try { - console.log("Building HTML/CSS..."); - const repos = await getRepos(username, opts); + const { + includeFork, + codepen, + dev, + dribbble, + email, + instagram, + reddit, + telegram, + twitter + } = opts; + //add data to assets/index.html + jsdom + .fromFile(`${__dirname}/assets/index.html`, options) + .then(function(dom) { + let window = dom.window, + document = window.document; + (async () => { + try { + console.log("Building HTML/CSS..."); + const repos = await getRepos(username, opts); - for (const element of repos) { - let element; - if (element.fork === false) { - element = document.querySelector("#work_section"); - } else if (includeFork === true) { - document.querySelector("#forks").style.display = "block"; - element = document.querySelector("#forks_section"); - } else { - continue; - } - - element.innerHTML += ` - + for (var i = 0; i < repos.length; i++) { + let element; + if (repos[i].fork == false) { + element = document.getElementById("work_section"); + } else if (includeFork == true) { + document.getElementById("forks").style.display = "block"; + element = document.getElementById("forks_section"); + } else { + continue; + } + element.innerHTML += ` +
-
${element.name}
+
${repos[i].name}
${convertToEmoji(element.description)} + repos[i].description == undefined + ? "none" + : "block" + };">${convertToEmoji(repos[i].description)}
  ${ - element.language - } + repos[i].language == null + ? "none" + : "inline-block" + };">  ${ + repos[i].language + }   ${ - element.stargazers_count - } + repos[i].stargazers_count + }   ${ - element.forks_count - } + repos[i].forks_count + }
`; - } + } + const user = await getUser(username); + document.title = user.login; + var icon = document.createElement("link"); + icon.setAttribute("rel", "icon"); + icon.setAttribute("href", user.avatar_url); + icon.setAttribute("type", "image/png"); - const user = await getUser(username); - document.title = user.login; - const icon = document.createElement("link"); - icon.setAttribute("rel", "icon"); - icon.setAttribute("href", user.avatar_url); - icon.setAttribute("type", "image/png"); - - document.querySelectorAll("head")[0].append(icon); - document.querySelectorAll("head")[0].innerHTML += ` + document.getElementsByTagName("head")[0].appendChild(icon); + document.getElementsByTagName("head")[0].innerHTML += ` @@ -118,95 +112,89 @@ module.exports.updateHTML = (username, opts) => { `; - document.querySelector( - "#username" - ).innerHTML = `
_

@${user.login}`; - // document.getElementById("github_link").href = `https://github.com/${user.login}`; - document.querySelector("#userbio").innerHTML = convertToEmoji( - user.bio - ); - document.querySelector("#userbio").style.display = - user.bio == null || !user.bio ? "none" : "block"; - document.querySelector("#about").innerHTML = ` + document.getElementById( + "username" + ).innerHTML = `
_

@${user.login}`; + //document.getElementById("github_link").href = `https://github.com/${user.login}`; + document.getElementById("userbio").innerHTML = convertToEmoji( + user.bio + ); + document.getElementById("userbio").style.display = + user.bio == null || !user.bio ? "none" : "block"; + document.getElementById("about").innerHTML = `   ${user.company} + user.company == null || !user.company ? "none" : "block" + };">   ${user.company}   ${user.email} + user.email == null || !user.email ? "none" : "block" + };">   ${user.email}    ${ - user.location - } + user.location == null || !user.location ? "none" : "block" + };">    ${ + user.location + }    Available for hire + user.hireable == false || !user.hireable ? "none" : "block" + };">    Available for hire
+ codepen == null ? "none !important" : "block" + };"> + dev == null ? "none !important" : "block" + };"> + dribbble == null ? "none !important" : "block" + };"> + email == null ? "none !important" : "block" + };"> + instagram == null ? "none !important" : "block" + };"> + reddit == null ? "none !important" : "block" + };"> + telegram == null ? "none !important" : "block" + };"> + twitter == null ? "none !important" : "block" + };">
`; - // add data to config.json - const data = await getConfig(); - data[0].username = user.login; - data[0].name = user.name; - data[0].userimg = user.avatar_url; + //add data to config.json + const data = await getConfig(); + data[0].username = user.login; + data[0].name = user.name; + data[0].userimg = user.avatar_url; - await fs.writeFile( - `${outDir}/config.json`, - JSON.stringify(data, null, " "), - err => { - if (err) { - throw err; - } - - console.log("Config file updated."); - } - ); - await fs.writeFile( - `${outDir}/index.html`, - "" + window.document.documentElement.outerHTML, - error => { - if (error) { - throw error; - } - - console.log(`Build Complete, Files can be Found @ ${outDir}\n`); - } - ); - } catch (error) { - console.log(error); - } - })(); - }) - .catch(error => { - console.log(error); - }); + await fs.writeFile( + `${outDir}/config.json`, + JSON.stringify(data, null, " "), + function(err) { + if (err) throw err; + console.log("Config file updated."); + } + ); + await fs.writeFile( + `${outDir}/index.html`, + "" + window.document.documentElement.outerHTML, + function(error) { + if (error) throw error; + console.log(`Build Complete, Files can be Found @ ${outDir}\n`); + } + ); + } catch (error) { + console.log(error); + } + })(); + }) + .catch(function(error) { + console.log(error); + }); }; diff --git a/run.js b/run.js index cb39ee9..c73c8d7 100644 --- a/run.js +++ b/run.js @@ -5,18 +5,18 @@ const app = express(); app.use(express.static(`${outDir}`)); function runCommand(program) { - const port = program.port ? program.port : 3000; + const port = program.port ? program.port : 3000; - app.get("/", (req, res) => { - res.sendFile("/index.html"); - }); + app.get("/", (req, res) => { + res.sendFile("/index.html"); + }); - app.listen(port); - console.log( - `\nGitfolio running on port ${port}, Navigate to http://localhost:${port} in your browser\n` - ); + app.listen(port); + console.log( + `\nGitfolio running on port ${port}, Navigate to http://localhost:${port} in your browser\n` + ); } module.exports = { - runCommand + runCommand }; diff --git a/ui.js b/ui.js index 899e939..0242ac9 100644 --- a/ui.js +++ b/ui.js @@ -2,25 +2,25 @@ const fs = require("fs"); const express = require("express"); const jsdom = require("jsdom").JSDOM; const options = { - resources: "usable" + resources: "usable" }; -const {updateHTML} = require("./populate"); -const {populateCSS, populateConfig} = require("./build"); -const {updateCommand} = require("./update"); +const { updateHTML } = require("./populate"); +const { populateCSS, populateConfig } = require("./build"); +const { updateCommand } = require("./update"); const app = express(); app.set("view engine", "ejs"); app.use(express.static(__dirname + "/views")); app.set("views", __dirname + "/views"); app.use( - express.json({ - limit: "50mb" - }) + express.json({ + limit: "50mb" + }) ); app.use( - express.urlencoded({ - limit: "50mb", - extended: true - }) + express.urlencoded({ + limit: "50mb", + extended: true + }) ); const port = 3000; @@ -28,74 +28,74 @@ const port = 3000; global.DOMParser = new jsdom().window.DOMParser; function uiCommand() { - app.get("/", (req, res) => { - res.render("index.ejs"); - }); + app.get("/", (req, res) => { + res.render("index.ejs"); + }); - app.get("/update", (req, res) => { - if (!fs.existsSync(`${outDir}/config.json`)) { - return res.send( - 'You need to run build command before using update
Go Back' - ); - } + app.get("/update", (req, res) => { + if (!fs.existsSync(`${outDir}/config.json`)) { + return res.send( + 'You need to run build command before using update
Go Back' + ); + } - updateCommand(); - res.redirect("/"); - }); + updateCommand(); + res.redirect("/"); + }); - app.post("/build", (req, res) => { - const {username} = req.body; - if (!username) { - return res.send("username can't be empty"); - } + app.post("/build", (req, res) => { + const { username } = req.body; + if (!username) { + return res.send("username can't be empty"); + } - const sort = req.body.sort ? req.body.sort : "created"; - const order = req.body.order ? req.body.order : "asc"; - const includeFork = req.body.fork === "true"; - const types = ["owner"]; - const codepen = req.body.codepen ? req.body.codepen : null; - const dev = req.body.dev ? req.body.dev : null; - const dribbble = req.body.dribbble ? req.body.dribbble : null; - const email = req.body.email ? req.body.email : null; - const instagram = req.body.instagram ? req.body.instagram : null; - const reddit = req.body.reddit ? req.body.reddit : null; - const telegram = req.body.telegram ? req.body.telegram : null; - const twitter = req.body.twitter ? req.body.twitter : null; - const background = req.body.background - ? req.body.background - : "https://source.unsplash.com/1280x720/?wallpaper"; - const theme = req.body.theme === "on" ? "dark" : "light"; - const opts = { - sort, - order, - includeFork, - types, - codepen, - dev, - dribbble, - email, - instagram, - reddit, - telegram, - twitter - }; + const sort = req.body.sort ? req.body.sort : "created"; + const order = req.body.order ? req.body.order : "asc"; + const includeFork = req.body.fork === "true"; + const types = ["owner"]; + const codepen = req.body.codepen ? req.body.codepen : null; + const dev = req.body.dev ? req.body.dev : null; + const dribbble = req.body.dribbble ? req.body.dribbble : null; + const email = req.body.email ? req.body.email : null; + const instagram = req.body.instagram ? req.body.instagram : null; + const reddit = req.body.reddit ? req.body.reddit : null; + const telegram = req.body.telegram ? req.body.telegram : null; + const twitter = req.body.twitter ? req.body.twitter : null; + const background = req.body.background + ? req.body.background + : "https://source.unsplash.com/1280x720/?wallpaper"; + const theme = req.body.theme === "on" ? "dark" : "light"; + const opts = { + sort, + order, + includeFork, + types, + codepen, + dev, + dribbble, + email, + instagram, + reddit, + telegram, + twitter + }; - updateHTML(username, opts); - populateCSS({ - background, - theme - }); - populateConfig(opts); - res.redirect("/"); - }); + updateHTML(username, opts); + populateCSS({ + background, + theme + }); + populateConfig(opts); + res.redirect("/"); + }); - console.log("\nStarting..."); - app.listen(port); - console.log( - `The GUI is running on port ${port}, Navigate to http://localhost:${port} in your browser\n` - ); + console.log("\nStarting..."); + app.listen(port); + console.log( + `The GUI is running on port ${port}, Navigate to http://localhost:${port} in your browser\n` + ); } module.exports = { - uiCommand + uiCommand }; diff --git a/update.js b/update.js index 29541fc..e17140c 100644 --- a/update.js +++ b/update.js @@ -1,33 +1,33 @@ -const {getConfig} = require("./utils"); -const {updateHTML} = require("./populate"); +const { getConfig } = require("./utils"); +const { updateHTML } = require("./populate"); async function updateCommand() { - const data = await getConfig(); - const {username} = data[0]; - if (username === null) { - console.log( - "username not found in config.json, please run build command before using update" - ); - return; - } + const data = await getConfig(); + const { username } = data[0]; + if (username === null) { + console.log( + "username not found in config.json, please run build command before using update" + ); + return; + } - const opts = { - sort: data[0].sort, - order: data[0].order, - includeFork: data[0].includeFork, - types: data[0].types, - codepen: data[0].codepen, - dev: data[0].dev, - dribbble: data[0].dribbble, - email: data[0].email, - instagram: data[0].instagram, - reddit: data[0].reddit, - telegram: data[0].telegram, - twitter: data[0].twitter - }; - updateHTML(username, opts); + const opts = { + sort: data[0].sort, + order: data[0].order, + includeFork: data[0].includeFork, + types: data[0].types, + codepen: data[0].codepen, + dev: data[0].dev, + dribbble: data[0].dribbble, + email: data[0].email, + instagram: data[0].instagram, + reddit: data[0].reddit, + telegram: data[0].telegram, + twitter: data[0].twitter + }; + updateHTML(username, opts); } module.exports = { - updateCommand + updateCommand }; diff --git a/utils.js b/utils.js index eba4382..9aaab0f 100644 --- a/utils.js +++ b/utils.js @@ -12,22 +12,22 @@ const defaultConfigPath = path.resolve(`${__dirname}/default/config.json`); * if not present returns default file contents */ async function getFileWithDefaults(file, defaultFile) { - try { - await fs.accessAsync(file, fs.constants.F_OK); - } catch (error) { - const defaultData = await fs.readFileAsync(defaultFile); - return JSON.parse(defaultData); - } + try { + await fs.accessAsync(file, fs.constants.F_OK); + } catch (error) { + const defaultData = await fs.readFileAsync(defaultFile); + return JSON.parse(defaultData); + } - const data = await fs.readFileAsync(file); - return JSON.parse(data); + const data = await fs.readFileAsync(file); + return JSON.parse(data); } async function getConfig() { - return getFileWithDefaults(configPath, defaultConfigPath); + return getFileWithDefaults(configPath, defaultConfigPath); } module.exports = { - outDir, - getConfig + outDir, + getConfig }; From 1c7fbe09b66f7095cbd357cfb6bc4fa7a9a6f2d0 Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Sun, 12 Jan 2020 15:55:54 +0530 Subject: [PATCH 102/163] Add support for Keybase --- .eslintrc.json | 33 ++++++++++++++++----------------- .prettierrc | 1 - .travis.yml | 1 + bin/gitfolio.js | 1 + build.js | 1 + package.json | 2 +- populate.js | 10 ++++++++++ ui.js | 2 ++ update.js | 1 + views/index.ejs | 8 ++++++++ 10 files changed, 41 insertions(+), 19 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index f1e3d15..d3fb99f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,18 +1,17 @@ { - "env": { - "browser": true, - "es6": true, - "node": true - }, - "extends": "eslint:recommended", - "globals": { - "Atomics": "readonly", - "SharedArrayBuffer": "readonly" - }, - "parserOptions": { - "ecmaVersion": 2018, - "sourceType": "module" - }, - "rules": { - } -} \ No newline at end of file + "env": { + "browser": true, + "es6": true, + "node": true + }, + "extends": "eslint:recommended", + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module" + }, + "rules": {} +} diff --git a/.prettierrc b/.prettierrc index 0d3edfc..dce3e9f 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,4 @@ { - "singleQuote": false, "overrides": [ { "files": ["*.html", "*.ejs"], diff --git a/.travis.yml b/.travis.yml index 8ad8d42..63e5e86 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,6 +13,7 @@ before_script: - npm install -g script: - npm run test + - npm run prettier after_success: - lhci autorun --upload.target=temporary-public-storage --staticDistDir=/home/travis/build/k4ustu3h/gitfolio/dist deploy: diff --git a/bin/gitfolio.js b/bin/gitfolio.js index 58e41dc..39e5c92 100755 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -31,6 +31,7 @@ program .option("-D, --dribbble [username]", "specify dribbble username") .option("-e, --email [username]", "specify email") .option("-i, --instagram [username]", "specify instagram username") + .option("-k, --keybase [username]", "specify keybase username") .option("-r, --reddit [username]", "specify reddit username") .option("-T, --telegram [username]", "specify telegram username") .option("-w, --twitter [username]", "specify twitter username") diff --git a/build.js b/build.js index 2ab8cda..c6e65b2 100644 --- a/build.js +++ b/build.js @@ -85,6 +85,7 @@ async function buildCommand(username, program) { dribbble: program.dribbble, email: program.email, instagram: program.instagram, + keybase: program.keybase, reddit: program.reddit, telegram: program.telegram, twitter: program.twitter diff --git a/package.json b/package.json index 0aff41f..bbbc82c 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "cli": "OUT_DIR='./dist' node bin/gitfolio.js", "clean": "rm -rf ./dist/*", "prettier": "prettier --write \"./**/*.{js,jsx,json,html,css,md}\"", - "test": "OUT_DIR='./dist' node bin/gitfolio.js build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h --reddit kaustubhladiya" + "test": "OUT_DIR='./dist' node bin/gitfolio.js build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h --reddit kaustubhladiya --keybase k4ustu3h" }, "author": { "name": "@imfunniee and community", diff --git a/populate.js b/populate.js index 7dbba3c..46a3003 100644 --- a/populate.js +++ b/populate.js @@ -38,6 +38,7 @@ module.exports.updateHTML = (username, opts) => { dribbble, email, instagram, + keybase, reddit, telegram, twitter @@ -156,6 +157,15 @@ module.exports.updateHTML = (username, opts) => { + + + + + diff --git a/ui.js b/ui.js index 0242ac9..525e809 100644 --- a/ui.js +++ b/ui.js @@ -58,6 +58,7 @@ function uiCommand() { const dribbble = req.body.dribbble ? req.body.dribbble : null; const email = req.body.email ? req.body.email : null; const instagram = req.body.instagram ? req.body.instagram : null; + const keybase = req.body.keybase ? req.body.keybase : null; const reddit = req.body.reddit ? req.body.reddit : null; const telegram = req.body.telegram ? req.body.telegram : null; const twitter = req.body.twitter ? req.body.twitter : null; @@ -75,6 +76,7 @@ function uiCommand() { dribbble, email, instagram, + keybase, reddit, telegram, twitter diff --git a/update.js b/update.js index e17140c..584df7d 100644 --- a/update.js +++ b/update.js @@ -21,6 +21,7 @@ async function updateCommand() { dribbble: data[0].dribbble, email: data[0].email, instagram: data[0].instagram, + keybase: data[0].keybase, reddit: data[0].reddit, telegram: data[0].telegram, twitter: data[0].twitter diff --git a/views/index.ejs b/views/index.ejs index 126d1c2..56c4d1d 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -146,6 +146,14 @@ name="instagram" />
+ +
Date: Sun, 12 Jan 2020 16:33:25 +0530 Subject: [PATCH 103/163] Fix Update option in UI --- ui.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ui.js b/ui.js index 525e809..9a7ad4e 100644 --- a/ui.js +++ b/ui.js @@ -1,9 +1,6 @@ const fs = require("fs"); const express = require("express"); const jsdom = require("jsdom").JSDOM; -const options = { - resources: "usable" -}; const { updateHTML } = require("./populate"); const { populateCSS, populateConfig } = require("./build"); const { updateCommand } = require("./update"); @@ -26,6 +23,7 @@ app.use( const port = 3000; global.DOMParser = new jsdom().window.DOMParser; +const { outDir } = require("./utils"); function uiCommand() { app.get("/", (req, res) => { From d49d72483e840ed6d2eff8ae6408bb1518ea86ec Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Mon, 13 Jan 2020 22:04:43 +0530 Subject: [PATCH 104/163] Add GitHub logo before username --- populate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/populate.js b/populate.js index 46a3003..e16aba5 100644 --- a/populate.js +++ b/populate.js @@ -119,7 +119,7 @@ module.exports.updateHTML = (username, opts) => { user.name == null || !user.name ? "none" : "block" };">
_

@${user.login}`; + }"> @${user.login}`; //document.getElementById("github_link").href = `https://github.com/${user.login}`; document.getElementById("userbio").innerHTML = convertToEmoji( user.bio From f8ec76b7b68970afb52321853318e936f8fb87c1 Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Tue, 14 Jan 2020 17:24:30 +0530 Subject: [PATCH 105/163] Update Material Design Icons --- assets/index.html | 2 +- package-lock.json | 6 ------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/assets/index.html b/assets/index.html index e552fb9..b81ec9d 100644 --- a/assets/index.html +++ b/assets/index.html @@ -7,7 +7,7 @@ + From 22aea37d3bbcf918566a061ae69528fbeab79e32 Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Sun, 19 Jan 2020 22:45:42 +0530 Subject: [PATCH 109/163] Update package.json --- package-lock.json | 3791 --------------------------------------------- package.json | 3 +- 2 files changed, 1 insertion(+), 3793 deletions(-) diff --git a/package-lock.json b/package-lock.json index efb1a01..ac64956 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,22 +24,6 @@ "js-tokens": "^4.0.0" } }, - "@mrmlnc/readdir-enhanced": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", - "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", - "dev": true, - "requires": { - "call-me-maybe": "^1.0.1", - "glob-to-regexp": "^0.3.0" - } - }, - "@nodelib/fs.stat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", - "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", - "dev": true - }, "@sindresorhus/is": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-1.2.0.tgz", @@ -64,23 +48,6 @@ "@types/responselike": "*" } }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, "@types/http-cache-semantics": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", @@ -94,23 +61,11 @@ "@types/node": "*" } }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, "@types/node": { "version": "12.12.17", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.17.tgz", "integrity": "sha512-Is+l3mcHvs47sKy+afn2O1rV4ldZFU7W8101cNlOd+MRbjM4Onida8jSZnJdTe/0Pcf25g9BNIUsuugmE6puHA==" }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, "@types/responselike": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", @@ -176,40 +131,6 @@ "uri-js": "^4.2.2" } }, - "ansi-align": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", - "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", - "dev": true, - "requires": { - "string-width": "^3.0.0" - }, - "dependencies": { - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "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 - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, "ansi-escapes": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.0.tgz", @@ -243,94 +164,16 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-differ": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", - "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", - "dev": true - }, "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" }, - "array-find-index": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", - "dev": true - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, - "array-includes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", - "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0", - "is-string": "^1.0.5" - } - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "array.prototype.flat": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", - "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "dev": true - }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -344,12 +187,6 @@ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", @@ -366,12 +203,6 @@ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -388,61 +219,6 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -480,59 +256,6 @@ } } }, - "boxen": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-3.2.0.tgz", - "integrity": "sha512-cU4J/+NodM3IHdSL2yN8bqYqnmlBTidDR4RC7nJs61ZmtGz8VZzM3HLQX0zY5mrSmPtR3xWwsq2jOUQqFZN8+A==", - "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^2.4.2", - "cli-boxes": "^2.2.0", - "string-width": "^3.0.0", - "term-size": "^1.2.0", - "type-fest": "^0.3.0", - "widest-line": "^2.0.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "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 - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "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 - } - } - }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -543,68 +266,16 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "browser-process-hrtime": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==" }, - "buf-compare": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buf-compare/-/buf-compare-1.0.1.tgz", - "integrity": "sha1-/vKNqLgROgoNtEMLC2Rntpcws0o=", - "dev": true - }, "bytes": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, "cacheable-lookup": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-0.2.1.tgz", @@ -627,35 +298,12 @@ "responselike": "^2.0.0" } }, - "call-me-maybe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", - "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", - "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 }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "dev": true - }, - "camelcase-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", - "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", - "dev": true, - "requires": { - "camelcase": "^4.1.0", - "map-obj": "^2.0.0", - "quick-lru": "^1.0.0" - } - }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -678,50 +326,6 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clean-regexp/-/clean-regexp-1.0.0.tgz", - "integrity": "sha1-jffHquUf02h06PjQW5GAvBGj/tc=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "cli-boxes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", - "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==", - "dev": true - }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -752,16 +356,6 @@ } } }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -790,61 +384,12 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, "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": "4.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", - "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", - "dev": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "dependencies": { - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "contains-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", - "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", - "dev": true - }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -868,22 +413,6 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-assert": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/core-assert/-/core-assert-0.2.1.tgz", - "integrity": "sha1-+F4s+b/tKPdzzIs/pcW2m9wC/j8=", - "dev": true, - "requires": { - "buf-compare": "^1.0.0", - "is-error": "^2.2.0" - } - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -910,12 +439,6 @@ } } }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "dev": true - }, "cssom": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", @@ -936,15 +459,6 @@ } } }, - "currently-unhandled": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", - "dev": true, - "requires": { - "array-find-index": "^1.0.1" - } - }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -971,36 +485,6 @@ "ms": "2.0.0" } }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "requires": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "dependencies": { - "map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true - } - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, "decompress-response": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-5.0.0.tgz", @@ -1009,81 +493,16 @@ "mimic-response": "^2.0.0" } }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, - "deep-strict-equal": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz", - "integrity": "sha1-SgeBR6irV/ag1PVUckPNIvROtOQ=", - "dev": true, - "requires": { - "core-assert": "^0.2.0" - } - }, "defer-to-connect": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.1.tgz", "integrity": "sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ==" }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -1099,38 +518,6 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, - "detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", - "dev": true - }, - "dir-glob": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", - "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", - "dev": true, - "requires": { - "path-type": "^3.0.0" - }, - "dependencies": { - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -1148,15 +535,6 @@ "webidl-conversions": "^4.0.2" } }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "dev": true, - "requires": { - "is-obj": "^1.0.0" - } - }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -1200,60 +578,6 @@ "once": "^1.4.0" } }, - "enhance-visitors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/enhance-visitors/-/enhance-visitors-1.0.0.tgz", - "integrity": "sha1-qpRdBdpGVnKh69OP7i7T2oUY6Vo=", - "dev": true, - "requires": { - "lodash": "^4.13.1" - } - }, - "env-editor": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/env-editor/-/env-editor-0.4.1.tgz", - "integrity": "sha512-suh+Vm00GnPQgXpmONTkcUT9LgBSL6sJrRnJxbykT0j+ONjzmIS+1U3ne467ArdZN/42/npp+GnhtwkLQ+vUjw==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.0.tgz", - "integrity": "sha512-yYkE07YF+6SIBmg1MsJ9dlub5L48Ek7X0qz+c/CPCHS9EBXfESorzng4cJQjJW5/pB6vDF41u7F8vUhLVDqIug==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -1339,400 +663,6 @@ } } }, - "eslint-ast-utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-ast-utils/-/eslint-ast-utils-1.1.0.tgz", - "integrity": "sha512-otzzTim2/1+lVrlH19EfQQJEhVJSu0zOb9ygb3iapN6UlyaDtyRq4b5U1FuW0v1lRa9Fp/GJyHkSwm6NqABgCA==", - "dev": true, - "requires": { - "lodash.get": "^4.4.2", - "lodash.zip": "^4.2.0" - } - }, - "eslint-config-prettier": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.9.0.tgz", - "integrity": "sha512-k4E14HBtcLv0uqThaI6I/n1LEqROp8XaPu6SO9Z32u5NlGRC07Enu1Bh2KEFw4FNHbekH8yzbIU9kUGxbiGmCA==", - "dev": true, - "requires": { - "get-stdin": "^6.0.0" - }, - "dependencies": { - "get-stdin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", - "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", - "dev": true - } - } - }, - "eslint-config-xo": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.27.2.tgz", - "integrity": "sha512-qEuZP0zNQkWpOdNZvWnfY2GNp1AZ33uXgeOXl4DN5YVLHFvekHbeSM2FFZ8A489fp1rCCColVRlJsYMf28o4DA==", - "dev": true - }, - "eslint-formatter-pretty": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-2.1.1.tgz", - "integrity": "sha512-gWfagucSWBn82WxzwFloBTLAcwYDgnpAfiV5pQfyAV5YpZikuLflRU8nc3Ts9wnNvLhwk4blzb42/C495Yw7BA==", - "dev": true, - "requires": { - "ansi-escapes": "^3.1.0", - "chalk": "^2.1.0", - "eslint-rule-docs": "^1.1.5", - "log-symbols": "^2.0.0", - "plur": "^3.0.1", - "string-width": "^2.0.0", - "supports-hyperlinks": "^1.0.1" - }, - "dependencies": { - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "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 - }, - "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" - } - } - } - }, - "eslint-import-resolver-node": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", - "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", - "dev": true, - "requires": { - "debug": "^2.6.9", - "resolve": "^1.13.1" - } - }, - "eslint-module-utils": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.1.tgz", - "integrity": "sha512-GcNwsYv8MfoEBSbAmV+PSVn2RlhpCShbLImtNviAYa/LE0PgNqxH5tLi1Ld9yeFwdjHsarXK+7G9vsyddmB6dw==", - "dev": true, - "requires": { - "debug": "^2.6.9", - "pkg-dir": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pkg-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", - "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", - "dev": true, - "requires": { - "find-up": "^2.1.0" - } - } - } - }, - "eslint-plugin-ava": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-ava/-/eslint-plugin-ava-9.0.0.tgz", - "integrity": "sha512-mJqQ1wQ9pxBi5Pu+grrqjfuSLxiSSgnpa5p5vMdEpBqA9n9cUzSCv0xMZ/NkTMAj5ieOB3TWF8j+7C30Yiv4RA==", - "dev": true, - "requires": { - "deep-strict-equal": "^0.2.0", - "enhance-visitors": "^1.0.0", - "espree": "^6.0.0", - "espurify": "^2.0.0", - "import-modules": "^1.1.0", - "pkg-dir": "^4.2.0", - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "eslint-plugin-es": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-2.0.0.tgz", - "integrity": "sha512-f6fceVtg27BR02EYnBhgWLFQfK6bN4Ll0nQFrBHOlCsAyxeZkn0NHns5O0YZOPrV1B3ramd6cgFwaoFLcSkwEQ==", - "dev": true, - "requires": { - "eslint-utils": "^1.4.2", - "regexpp": "^3.0.0" - }, - "dependencies": { - "regexpp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", - "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", - "dev": true - } - } - }, - "eslint-plugin-eslint-comments": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-eslint-comments/-/eslint-plugin-eslint-comments-3.1.2.tgz", - "integrity": "sha512-QexaqrNeteFfRTad96W+Vi4Zj1KFbkHHNMMaHZEYcovKav6gdomyGzaxSDSL3GoIyUOo078wRAdYlu1caiauIQ==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "ignore": "^5.0.5" - }, - "dependencies": { - "ignore": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", - "dev": true - } - } - }, - "eslint-plugin-import": { - "version": "2.20.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.0.tgz", - "integrity": "sha512-NK42oA0mUc8Ngn4kONOPsPB1XhbUvNHqF+g307dPV28aknPoiNnKLFd9em4nkswwepdF5ouieqv5Th/63U7YJQ==", - "dev": true, - "requires": { - "array-includes": "^3.0.3", - "array.prototype.flat": "^1.2.1", - "contains-path": "^0.1.0", - "debug": "^2.6.9", - "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.2", - "eslint-module-utils": "^2.4.1", - "has": "^1.0.3", - "minimatch": "^3.0.4", - "object.values": "^1.1.0", - "read-pkg-up": "^2.0.0", - "resolve": "^1.12.0" - }, - "dependencies": { - "doctrine": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", - "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", - "dev": true, - "requires": { - "esutils": "^2.0.2", - "isarray": "^1.0.0" - } - } - } - }, - "eslint-plugin-no-use-extend-native": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-use-extend-native/-/eslint-plugin-no-use-extend-native-0.4.1.tgz", - "integrity": "sha512-tDkHM0kvxU0M2TpLRKGfFrpWXctFdTDY7VkiDTLYDaX90hMSJKkr/FiWThEXvKV0Dvffut2Z0B9Y7+h/k6suiA==", - "dev": true, - "requires": { - "is-get-set-prop": "^1.0.0", - "is-js-type": "^2.0.0", - "is-obj-prop": "^1.0.0", - "is-proto-prop": "^2.0.0" - } - }, - "eslint-plugin-node": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-10.0.0.tgz", - "integrity": "sha512-1CSyM/QCjs6PXaT18+zuAXsjXGIGo5Rw630rSKwokSs2jrYURQc4R5JZpoanNCqwNmepg+0eZ9L7YiRUJb8jiQ==", - "dev": true, - "requires": { - "eslint-plugin-es": "^2.0.0", - "eslint-utils": "^1.4.2", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", - "dev": true - } - } - }, - "eslint-plugin-prettier": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.2.tgz", - "integrity": "sha512-GlolCC9y3XZfv3RQfwGew7NnuFDKsfI4lbvRK+PIIo23SFH+LemGs4cKwzAaRa+Mdb+lQO/STaIayno8T5sJJA==", - "dev": true, - "requires": { - "prettier-linter-helpers": "^1.0.0" - } - }, - "eslint-plugin-promise": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz", - "integrity": "sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw==", - "dev": true - }, - "eslint-plugin-unicorn": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unicorn/-/eslint-plugin-unicorn-12.1.0.tgz", - "integrity": "sha512-DkPRrjaZaKa8GDjEyWGms/sqp2DcmVCcbwVi9WQXwN6+Sn0/joTC14SfA+BsCuxTaGPRm/7wa8NC8o5mNDyZpQ==", - "dev": true, - "requires": { - "ci-info": "^2.0.0", - "clean-regexp": "^1.0.0", - "eslint-ast-utils": "^1.1.0", - "eslint-template-visitor": "^1.0.0", - "import-modules": "^2.0.0", - "lodash.camelcase": "^4.3.0", - "lodash.defaultsdeep": "^4.6.1", - "lodash.kebabcase": "^4.1.1", - "lodash.snakecase": "^4.1.1", - "lodash.topairs": "^4.3.0", - "lodash.upperfirst": "^4.3.1", - "read-pkg-up": "^7.0.0", - "regexpp": "^3.0.0", - "reserved-words": "^0.1.2", - "safe-regex": "^2.0.2", - "semver": "^6.3.0" - }, - "dependencies": { - "import-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-2.0.0.tgz", - "integrity": "sha512-iczM/v9drffdNnABOKwj0f9G3cFDon99VcG1mxeBsdqnbd+vnQ5c2uAiCHNQITqFTOPaEvwg3VjoWCur0uHLEw==", - "dev": true - }, - "parse-json": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", - "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", - "lines-and-columns": "^1.1.6" - } - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - }, - "regexpp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", - "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", - "dev": true - } - } - }, - "eslint-rule-docs": { - "version": "1.1.173", - "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.173.tgz", - "integrity": "sha512-wxO0oFmSPhmD2yxJXEbqy9+bthtjcDaORGxkWfUTi15GTqXzdq/aaD5EAlAAvFXM5GdU+S3rMEVL27ACQxBg+Q==", - "dev": true - }, "eslint-scope": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", @@ -1743,17 +673,6 @@ "estraverse": "^4.1.1" } }, - "eslint-template-visitor": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/eslint-template-visitor/-/eslint-template-visitor-1.1.0.tgz", - "integrity": "sha512-Lmy6QVlmFiIGl5fPi+8ACnov3sare+0Ouf7deJAGGhmUfeWJ5fVarELUxZRpsZ9sHejiJUq8626d0dn9uvcZTw==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0", - "espree": "^6.1.1", - "multimap": "^1.0.2" - } - }, "eslint-utils": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", @@ -1785,12 +704,6 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" }, - "espurify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/espurify/-/espurify-2.0.1.tgz", - "integrity": "sha512-7w/dUrReI/QbJFHRwfomTlkQOXaB1NuCrBRn5Y26HXn5gvh18/19AgLbayVrNxXQfkckvgrJloWyvZDuJ7dhEA==", - "dev": true - }, "esquery": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", @@ -1824,75 +737,6 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "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.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - } - } - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -1935,27 +779,6 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -1967,71 +790,6 @@ "tmp": "^0.0.33" } }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -2042,49 +800,6 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" }, - "fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", - "dev": true - }, - "fast-glob": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", - "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", - "dev": true, - "requires": { - "@mrmlnc/readdir-enhanced": "^2.2.1", - "@nodelib/fs.stat": "^1.1.2", - "glob-parent": "^3.1.0", - "is-glob": "^4.0.0", - "merge2": "^1.2.3", - "micromatch": "^3.1.10" - }, - "dependencies": { - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - } - } - }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", @@ -2113,29 +828,6 @@ "flat-cache": "^2.0.1" } }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -2150,27 +842,6 @@ "unpipe": "~1.0.0" } }, - "find-cache-dir": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.2.0.tgz", - "integrity": "sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.0", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -2188,12 +859,6 @@ "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", "dev": true }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -2214,15 +879,6 @@ "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -2234,30 +890,12 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, - "get-set-props": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-set-props/-/get-set-props-0.1.0.tgz", - "integrity": "sha1-mYR1wXhEVobQsyJG2l3428++jqM=", - "dev": true - }, - "get-stdin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-7.0.0.tgz", - "integrity": "sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ==", - "dev": true - }, "get-stream": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", @@ -2266,12 +904,6 @@ "pump": "^3.0.0" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -2308,21 +940,6 @@ "is-glob": "^4.0.1" } }, - "glob-to-regexp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", - "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", - "dev": true - }, - "global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", - "dev": true, - "requires": { - "ini": "^1.3.4" - } - }, "globals": { "version": "12.3.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", @@ -2332,36 +949,6 @@ "type-fest": "^0.8.1" } }, - "globby": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", - "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^1.0.2", - "dir-glob": "^2.2.2", - "fast-glob": "^2.2.6", - "glob": "^7.1.3", - "ignore": "^4.0.3", - "pify": "^4.0.1", - "slash": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", - "dev": true - } - } - }, "got": { "version": "10.2.2", "resolved": "https://registry.npmjs.org/got/-/got-10.2.2.tgz", @@ -2383,12 +970,6 @@ "type-fest": "^0.8.0" } }, - "graceful-fs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", - "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==", - "dev": true - }, "handlebars": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", @@ -2414,71 +995,12 @@ "har-schema": "^2.0.0" } }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true - }, - "hosted-git-info": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", - "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", - "dev": true - }, "html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", @@ -2538,30 +1060,12 @@ "resolve-from": "^4.0.0" } }, - "import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", - "dev": true - }, - "import-modules": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/import-modules/-/import-modules-1.1.0.tgz", - "integrity": "sha1-dI23nFzEK7lwHvq0JPiU5yYA6dw=", - "dev": true - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, - "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -2577,12 +1081,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", - "dev": true - }, "inquirer": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.3.tgz", @@ -2614,116 +1112,6 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" }, - "irregular-plurals": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-2.0.0.tgz", - "integrity": "sha512-Y75zBYLkh0lJ9qxeHlMjQ7bSbyiSqNW/UOPWDmzC7cXskL1hekSITh1Oc6JV0XCWWZ9DE8VYSB71xocLk3gmGw==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-error": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-error/-/is-error-2.2.2.tgz", - "integrity": "sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg==", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -2736,24 +1124,6 @@ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, - "is-get-set-prop": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-get-set-prop/-/is-get-set-prop-1.0.0.tgz", - "integrity": "sha1-JzGHfk14pqae3M5rudaLB3nnYxI=", - "dev": true, - "requires": { - "get-set-props": "^0.1.0", - "lowercase-keys": "^1.0.0" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - } - } - }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -2763,194 +1133,23 @@ "is-extglob": "^2.1.1" } }, - "is-installed-globally": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", - "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", - "dev": true, - "requires": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - } - }, - "is-js-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-js-type/-/is-js-type-2.0.0.tgz", - "integrity": "sha1-c2FwBtZZtOtHKbunR9KHgt8PfiI=", - "dev": true, - "requires": { - "js-types": "^1.0.0" - } - }, - "is-npm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-3.0.0.tgz", - "integrity": "sha512-wsigDr1Kkschp2opC4G3yA6r9EgVA6NjRpWzIi9axXqeIaAATPRJc4uLujXe3Nd9uO8KoDyA4MD6aZSeXTADhA==", - "dev": true - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "dev": true - }, - "is-obj-prop": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-obj-prop/-/is-obj-prop-1.0.0.tgz", - "integrity": "sha1-s03nnEULjXxzqyzfZ9yHWtuF+A4=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0", - "obj-props": "^1.0.0" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - } - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "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=", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", "dev": true }, - "is-proto-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-proto-prop/-/is-proto-prop-2.0.0.tgz", - "integrity": "sha512-jl3NbQ/fGLv5Jhan4uX+Ge9ohnemqyblWVVCpAvtTQzNFvV2xhJq+esnkIbYQ9F1nITXoLfDDQLp7LBw/zzncg==", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0", - "proto-props": "^2.0.0" - }, - "dependencies": { - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - } - } - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-string": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", - "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", - "dev": true - }, - "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", - "dev": true, - "requires": { - "has-symbols": "^1.0.1" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", @@ -2962,12 +1161,6 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "js-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/js-types/-/js-types-1.0.0.tgz", - "integrity": "sha1-0kLmSU7Vcq08koCfyL7X92h8vwM=", - "dev": true - }, "js-yaml": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", @@ -3029,12 +1222,6 @@ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -3075,21 +1262,6 @@ "json-buffer": "3.0.0" } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", - "dev": true - }, - "latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "requires": { - "package-json": "^6.3.0" - } - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -3099,352 +1271,36 @@ "type-check": "~0.3.2" } }, - "line-column-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/line-column-path/-/line-column-path-2.0.0.tgz", - "integrity": "sha512-nz3A+vi4bElhwd62E9+Qk/f9BDYLSzD/4Hy1rir0I4GnMxSTezSymzANyph5N1PgRZ3sSbA+yR5hOuXxc71a0Q==", - "dev": true, - "requires": { - "type-fest": "^0.4.1" - }, - "dependencies": { - "type-fest": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz", - "integrity": "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==", - "dev": true - } - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "lodash.defaultsdeep": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", - "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==", - "dev": true - }, - "lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", - "dev": true - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "dev": true - }, - "lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", - "dev": true - }, - "lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", - "dev": true - }, - "lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha1-OdcUo1NXFHg3rv1ktdy7Fr7Nj40=", - "dev": true - }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, - "lodash.topairs": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.topairs/-/lodash.topairs-4.3.0.tgz", - "integrity": "sha1-O23qo31g+xFnE8RsXxfqGQ7EjWQ=", - "dev": true - }, - "lodash.upperfirst": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", - "integrity": "sha1-E2Xt9DFIBIHvDRxolXpe2Z1J984=", - "dev": true - }, - "lodash.zip": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.zip/-/lodash.zip-4.2.0.tgz", - "integrity": "sha1-7GZi5IlkCO1KtsVCo5kLcswIACA=", - "dev": true - }, - "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "loud-rejection": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", - "dev": true, - "requires": { - "currently-unhandled": "^0.4.1", - "signal-exit": "^3.0.0" - } - }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "make-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.0.0.tgz", - "integrity": "sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", - "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, - "meow": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", - "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", - "dev": true, - "requires": { - "camelcase-keys": "^4.0.0", - "decamelize-keys": "^1.0.0", - "loud-rejection": "^1.0.0", - "minimist-options": "^3.0.1", - "normalize-package-data": "^2.3.4", - "read-pkg-up": "^3.0.0", - "redent": "^2.0.0", - "trim-newlines": "^2.0.0", - "yargs-parser": "^10.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - } - } - }, "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, - "merge2": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.3.0.tgz", - "integrity": "sha512-2j4DAdlBOkiSZIsaXk4mTE3sRS02yBHAtfy127xRV3bQUFqXkjHCHLW6Scv7DwNRbIWNHH8zpnz9zMaKXIdvYw==", - "dev": true - }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, "mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -3488,45 +1344,6 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" }, - "minimist-options": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", - "dev": true, - "requires": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0" - }, - "dependencies": { - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - } - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", @@ -3549,58 +1366,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, - "multimap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multimap/-/multimap-1.1.0.tgz", - "integrity": "sha512-0ZIR9PasPxGXmRsEF8jsDzndzHDj7tIav+JUmvIFB/WHswliFnquxECT/De7GR4yg99ky/NlRKJT82G1y271bw==", - "dev": true - }, - "multimatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", - "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", - "dev": true, - "requires": { - "@types/minimatch": "^3.0.3", - "array-differ": "^3.0.0", - "array-union": "^2.1.0", - "arrify": "^2.0.1", - "minimatch": "^3.0.4" - }, - "dependencies": { - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - } - } - }, "mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -3628,40 +1399,11 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "normalize-url": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", @@ -3672,97 +1414,6 @@ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, - "obj-props": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/obj-props/-/obj-props-1.3.0.tgz", - "integrity": "sha512-k2Xkjx5wn6eC3537SWAXHzB6lkI81kS+icMKMkh4nG3w7shWG6MaWOBrNvhWVOszrtL5uxdfymQQfPUxwY+2eg==", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", - "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "has": "^1.0.3" - } - }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -3788,26 +1439,6 @@ "mimic-fn": "^2.1.0" } }, - "open": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", - "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - } - }, - "open-editor": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/open-editor/-/open-editor-2.0.1.tgz", - "integrity": "sha512-B3KdD7Pl8jYdpBSBBbdYaqVUI3whQjLl1G1+CvhNc8+d7GzKRUq+VuCIx1thxGiqD2oBGRvsZz7QWrBsFP2yVA==", - "dev": true, - "requires": { - "env-editor": "^0.4.0", - "line-column-path": "^2.0.0", - "open": "^6.2.0" - } - }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", @@ -3841,167 +1472,6 @@ "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", - "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "package-json": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", - "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", - "dev": true, - "requires": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "dependencies": { - "@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "dev": true - }, - "@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dev": true, - "requires": { - "defer-to-connect": "^1.0.1" - } - }, - "cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "dependencies": { - "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" - } - }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - } - } - }, - "decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "requires": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - } - }, - "lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "dev": true - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "dev": true - }, - "responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dev": true, - "requires": { - "lowercase-keys": "^1.0.0" - } - }, - "to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "dev": true - } - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4011,15 +1481,6 @@ "callsites": "^3.0.0" } }, - "parse-json": { - "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.2.0" - } - }, "parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", @@ -4030,221 +1491,50 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, "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 }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", - "dev": true - }, "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, - "path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dev": true, - "requires": { - "pify": "^2.0.0" - } - }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "dev": true, - "requires": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "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 - } - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "plur": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/plur/-/plur-3.1.1.tgz", - "integrity": "sha512-t1Ax8KUvV3FFII8ltczPn2tJdjqbd1sIzu6t4JL7nQ3EyeL/lTrj5PWKb06ic5/6XYDr65rQ4uzQEGN70/6X5w==", - "dev": true, - "requires": { - "irregular-plurals": "^2.0.0" - } - }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, - "prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "dev": true - }, "prettier": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", "dev": true }, - "prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", - "dev": true, - "requires": { - "fast-diff": "^1.1.2" - } - }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "proto-props": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/proto-props/-/proto-props-2.0.0.tgz", - "integrity": "sha512-2yma2tog9VaRZY2mn3Wq51uiSW4NcPYT1cQdBagwyrznrilKSZwIZ0UG3ZPL/mx+axEns0hE35T5ufOYZXEnBQ==", - "dev": true - }, "proxy-addr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", @@ -4254,12 +1544,6 @@ "ipaddr.js": "1.9.0" } }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", - "dev": true - }, "psl": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", @@ -4284,12 +1568,6 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, - "quick-lru": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", - "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", - "dev": true - }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -4306,178 +1584,12 @@ "unpipe": "1.0.0" } }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "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=", - "dev": true - } - } - }, - "read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dev": true, - "requires": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - } - }, - "read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "dependencies": { - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - } - } - }, - "redent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", - "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", - "dev": true, - "requires": { - "indent-string": "^3.0.0", - "strip-indent": "^2.0.0" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - } - } - }, - "regexp-tree": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.17.tgz", - "integrity": "sha512-UnOJjFS/EPZmfISmYx+0PcDtPzyFKTe+cZTS5sM5hifnRUDRxoB1j4DAmGwqzxjwBGlwOkGfb2cDGHtjuEwqoA==", - "dev": true - }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, - "registry-auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.0.0.tgz", - "integrity": "sha512-lpQkHxd9UL6tb3k/aHAVfnVtn+Bcs9ob5InuFLLEDqSqeq+AljB8GZW9xY0x7F+xYwEcjKe07nyoxzEYz6yvkw==", - "dev": true, - "requires": { - "rc": "^1.2.8", - "safe-buffer": "^5.0.1" - } - }, - "registry-url": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", - "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", - "dev": true, - "requires": { - "rc": "^1.2.8" - } - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", @@ -4555,50 +1667,12 @@ } } }, - "reserved-words": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", - "integrity": "sha1-AKCUD5jNUBrqqsMWQR2a3FKzGrE=", - "dev": true - }, - "resolve": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.14.2.tgz", - "integrity": "sha512-EjlOBLBO1kxsUxsKjLt7TAECyKW6fOh1VRkykQkKGzcBbjjPIxBqGh0jf7GJ3k/f5mxMqW3htMD3WdTUVtW8HQ==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, "responselike": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", @@ -4617,12 +1691,6 @@ "signal-exit": "^3.0.2" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -4655,15 +1723,6 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "safe-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", - "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", - "dev": true, - "requires": { - "regexp-tree": "~0.1.1" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -4683,23 +1742,6 @@ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true }, - "semver-diff": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-2.1.0.tgz", - "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=", - "dev": true, - "requires": { - "semver": "^5.0.3" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, "send": { "version": "0.17.1", "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", @@ -4738,29 +1780,6 @@ "send": "0.17.1" } }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -4787,12 +1806,6 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", @@ -4812,193 +1825,11 @@ } } }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "sort-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", - "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", - "dev": true - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -5021,27 +1852,6 @@ "tweetnacl": "~0.14.0" } }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -5074,26 +1884,6 @@ } } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -5111,24 +1901,6 @@ } } }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "dev": true - }, "strip-json-comments": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", @@ -5144,24 +1916,6 @@ "has-flag": "^3.0.0" } }, - "supports-hyperlinks": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", - "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", - "dev": true, - "requires": { - "has-flag": "^2.0.0", - "supports-color": "^5.0.0" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - } - } - }, "symbol-tree": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", @@ -5204,27 +1958,12 @@ } } }, - "term-size": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", - "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", - "dev": true, - "requires": { - "execa": "^0.7.0" - } - }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, - "the-argv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/the-argv/-/the-argv-1.0.0.tgz", - "integrity": "sha1-AIRwUAVzDdhNt1UlPJMa45jblSI=", - "dev": true - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -5240,64 +1979,11 @@ "os-tmpdir": "~1.0.2" } }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, "to-readable-stream": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-2.1.0.tgz", "integrity": "sha512-o3Qa6DGg1CEXshSdvWNX2sN4QHqg03SPq7U6jPXRahlQdl5dK8oXjkU/2/sGrnOZKeGV1zLSO8qPwyKklPPE7w==" }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "dependencies": { - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - } - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, "toidentifier": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", @@ -5321,12 +2007,6 @@ "punycode": "^2.1.0" } }, - "trim-newlines": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", - "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", - "dev": true - }, "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", @@ -5386,92 +2066,11 @@ } } }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "dev": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "update-notifier": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-3.0.1.tgz", - "integrity": "sha512-grrmrB6Zb8DUiyDIaeRTBCkgISYUgETNe7NglEbVsrLWXeESnlCSP50WfRSj/GmzMPl6Uchj24S/p80nP/ZQrQ==", - "dev": true, - "requires": { - "boxen": "^3.0.0", - "chalk": "^2.0.1", - "configstore": "^4.0.0", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.1.0", - "is-npm": "^3.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -5480,27 +2079,6 @@ "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dev": true, - "requires": { - "prepend-http": "^2.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -5517,16 +2095,6 @@ "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", "dev": true }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -5597,48 +2165,6 @@ "isexe": "^2.0.0" } }, - "widest-line": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", - "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", - "dev": true, - "requires": { - "string-width": "^2.1.1" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "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 - }, - "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" - } - } - } - }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -5663,58 +2189,6 @@ "mkdirp": "^0.5.1" } }, - "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "write-json-file": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", - "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", - "dev": true, - "requires": { - "detect-indent": "^5.0.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "pify": "^3.0.0", - "sort-keys": "^2.0.0", - "write-file-atomic": "^2.0.0" - }, - "dependencies": { - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - } - } - }, - "write-pkg": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz", - "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==", - "dev": true, - "requires": { - "sort-keys": "^2.0.0", - "write-json-file": "^2.2.0" - } - }, "ws": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.0.tgz", @@ -5723,12 +2197,6 @@ "async-limiter": "^1.0.0" } }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "dev": true - }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", @@ -5738,265 +2206,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" - }, - "xo": { - "version": "0.25.3", - "resolved": "https://registry.npmjs.org/xo/-/xo-0.25.3.tgz", - "integrity": "sha512-125on+kPp6oi+EfoAajJ58cGLxIurZqWrehhdqoApWXpano9GL5D0ElcSlbG7UeYAfmNSwKJGTxHoLsHLhrZqg==", - "dev": true, - "requires": { - "arrify": "^2.0.1", - "debug": "^4.1.0", - "eslint": "^6.4.0", - "eslint-config-prettier": "^6.3.0", - "eslint-config-xo": "^0.27.1", - "eslint-formatter-pretty": "^2.0.0", - "eslint-plugin-ava": "^9.0.0", - "eslint-plugin-eslint-comments": "^3.0.1", - "eslint-plugin-import": "^2.18.2", - "eslint-plugin-no-use-extend-native": "^0.4.0", - "eslint-plugin-node": "^10.0.0", - "eslint-plugin-prettier": "^3.1.1", - "eslint-plugin-promise": "^4.0.0", - "eslint-plugin-unicorn": "^12.0.0", - "find-cache-dir": "^3.0.0", - "get-stdin": "^7.0.0", - "globby": "^9.0.0", - "has-flag": "^4.0.0", - "lodash.isequal": "^4.5.0", - "lodash.mergewith": "^4.6.2", - "meow": "^5.0.0", - "multimatch": "^4.0.0", - "open-editor": "^2.0.1", - "path-exists": "^4.0.0", - "pkg-conf": "^3.1.0", - "prettier": "^1.15.2", - "resolve-cwd": "^3.0.0", - "resolve-from": "^5.0.0", - "semver": "^6.3.0", - "slash": "^3.0.0", - "update-notifier": "^3.0.1", - "xo-init": "^0.7.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" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "xo-init": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/xo-init/-/xo-init-0.7.0.tgz", - "integrity": "sha512-mrrCKMu52vz0u2tiOl8DoG709pBtnSp58bb4/j58a4jeXjrb1gV7dxfOBjOlXitYtfW2QnlxxxfAojoFcpynDg==", - "dev": true, - "requires": { - "arrify": "^1.0.0", - "execa": "^0.9.0", - "has-yarn": "^1.0.0", - "minimist": "^1.1.3", - "path-exists": "^3.0.0", - "read-pkg-up": "^3.0.0", - "the-argv": "^1.0.0", - "write-pkg": "^3.1.0" - }, - "dependencies": { - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "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.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.9.0.tgz", - "integrity": "sha512-BbUMBiX4hqiHZUA5+JujIjNb6TyAlp2D5KLheMjMluwOuzcnylDL4AxZYLLn1n2AGB49eSWwyKvvEQoRpnAtmA==", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dev": true, - "requires": { - "locate-path": "^2.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "dev": true - }, - "has-yarn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-1.0.0.tgz", - "integrity": "sha1-ieJdtgS3Jcj1l2//Ct3JIbgopac=", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dev": true, - "requires": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - } - }, - "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", - "dev": true - }, - "p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "requires": { - "p-try": "^1.0.0" - } - }, - "p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dev": true, - "requires": { - "p-limit": "^1.1.0" - } - }, - "p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "dev": true - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - }, - "read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", - "dev": true, - "requires": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - } - } - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", - "dev": true - }, - "yargs-parser": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-10.1.0.tgz", - "integrity": "sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ==", - "dev": true, - "requires": { - "camelcase": "^4.1.0" - } } } } diff --git a/package.json b/package.json index a117679..aa42347 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,6 @@ }, "devDependencies": { "eslint": "^6.8.0", - "prettier": "1.19.1", - "xo": "^0.25.3" + "prettier": "1.19.1" } } From 89179accc4b3113664587b31d8d71a830cc9563c Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sun, 19 Jan 2020 17:17:20 +0000 Subject: [PATCH 110/163] Bump ejs from 2.7.4 to 3.0.1 Bumps [ejs](https://github.com/mde/ejs) from 2.7.4 to 3.0.1. - [Release notes](https://github.com/mde/ejs/releases) - [Changelog](https://github.com/mde/ejs/blob/master/CHANGELOG.md) - [Commits](https://github.com/mde/ejs/compare/v2.7.4...v3.0.1) Signed-off-by: dependabot-preview[bot] --- package-lock.json | 6 +++--- package.json | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index ac64956..c54c71d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -555,9 +555,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "ejs": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", - "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.1.tgz", + "integrity": "sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw==" }, "emoji-regex": { "version": "8.0.0", diff --git a/package.json b/package.json index aa42347..14c2063 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ "bluebird": "^3.5.4", "body-parser": "^1.19.0", "commander": "^2.20.0", - "ejs": "^2.6.2", + "ejs": "^3.0.1", "express": "^4.17.0", "github-emoji": "^1.1.1", "got": "^10.2.2", From 80709a6a9e56f0657fba102d49fd44ac20671015 Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Thu, 23 Jan 2020 21:56:05 +0530 Subject: [PATCH 111/163] Multiple Additions Add meta tag for Pinterest verification Install Snyk and add badge to README --- .snyk | 4 + .travis.yml | 2 +- README.md | 3 +- assets/index.html | 1 + package-lock.json | 2372 +++++++++++++++++++++++++++++++++++++++++++-- package.json | 11 +- 6 files changed, 2321 insertions(+), 72 deletions(-) create mode 100644 .snyk diff --git a/.snyk b/.snyk new file mode 100644 index 0000000..29509a0 --- /dev/null +++ b/.snyk @@ -0,0 +1,4 @@ +# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. +version: v1.13.5 +ignore: {} +patch: {} diff --git a/.travis.yml b/.travis.yml index 63e5e86..fe1ee82 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,7 +12,7 @@ before_install: before_script: - npm install -g script: - - npm run test + - npm run build - npm run prettier after_success: - lhci autorun --upload.target=temporary-public-storage --staticDistDir=/home/travis/build/k4ustu3h/gitfolio/dist diff --git a/README.md b/README.md index 4193f06..b3ecf58 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ [![Build Status](https://img.shields.io/travis/k4ustu3h/gitfolio?style=for-the-badge)](https://travis-ci.org/k4ustu3h/gitfolio) +[![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=for-the-badge)](https://github.com/prettier/prettier) [![Dependency Status](https://img.shields.io/david/k4ustu3h/gitfolio?style=for-the-badge)](https://david-dm.org/k4ustu3h/gitfolio) [![devDependencies Status](https://img.shields.io/david/dev/k4ustu3h/gitfolio?style=for-the-badge)](https://david-dm.org/k4ustu3h/gitfolio?type=dev) -[![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=for-the-badge)](https://github.com/prettier/prettier) +![Snyk Vulnerabilities for GitHub Repo](https://img.shields.io/snyk/vulnerabilities/github/k4ustu3h/gitfolio?style=for-the-badge) diff --git a/assets/index.html b/assets/index.html index 6310861..829f7a2 100644 --- a/assets/index.html +++ b/assets/index.html @@ -4,6 +4,7 @@ + =0.6.0", + "xmlbuilder": "~9.0.1" + } + } + } + }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -559,6 +1033,11 @@ "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz", "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==" }, + "email-validator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", + "integrity": "sha512-gYCwo7kh5S3IDyZPLZf6hSS0MnZT8QmJFqYvbqlDZSbwdZlY6QZWxJ4i/6UhITOJ4XzyI647Bm2MXKCLqnJ4nQ==" + }, "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -578,6 +1057,19 @@ "once": "^1.4.0" } }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "requires": { + "es6-promise": "^4.0.3" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -586,8 +1078,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=" }, "escodegen": { "version": "1.12.0", @@ -737,6 +1228,30 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + } + } + }, "express": { "version": "4.17.1", "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", @@ -783,7 +1298,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, "requires": { "chardet": "^0.7.0", "iconv-lite": "^0.4.24", @@ -828,6 +1342,11 @@ "flat-cache": "^2.0.1" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, "finalhandler": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", @@ -884,11 +1403,37 @@ "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "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=" + }, + "ftp": { + "version": "0.3.10", + "resolved": "https://registry.npmjs.org/ftp/-/ftp-0.3.10.tgz", + "integrity": "sha1-kZfYYa2BQvPmPVqDv+TFn3MwiF0=", + "requires": { + "readable-stream": "1.1.x", + "xregexp": "2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } }, "functional-red-black-tree": { "version": "1.0.1", @@ -904,6 +1449,19 @@ "pump": "^3.0.0" } }, + "get-uri": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.4.tgz", + "integrity": "sha512-v7LT/s8kVjs+Tx0ykk1I+H/rbpzkHvuIq87LmeXptcf5sNWm9uQiwjNAt94SJPA1zOlCntmnOlJvVWKmzsxG8Q==", + "requires": { + "data-uri-to-buffer": "1", + "debug": "2", + "extend": "~3.0.2", + "file-uri-to-path": "1", + "ftp": "~0.3.10", + "readable-stream": "2" + } + }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", @@ -912,6 +1470,23 @@ "assert-plus": "^1.0.0" } }, + "git-up": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.1.tgz", + "integrity": "sha512-LFTZZrBlrCrGCG07/dm1aCjjpL1z9L3+5aEeI9SBhAqSc+kiA9Or1bgZhQFNppJX6h/f5McrvJt1mQXTFm6Qrw==", + "requires": { + "is-ssh": "^1.3.0", + "parse-url": "^5.0.0" + } + }, + "git-url-parse": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.1.2.tgz", + "integrity": "sha512-gZeLVGY8QVKMIkckncX+iCq2/L8PlwncvDFKiWkBn9EtCfYDbliRTTp6qzyQ1VMdITUfq7293zDzfpjdiGASSQ==", + "requires": { + "git-up": "^4.0.0" + } + }, "github-emoji": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/github-emoji/-/github-emoji-1.1.1.tgz", @@ -921,7 +1496,6 @@ "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -940,6 +1514,14 @@ "is-glob": "^4.0.1" } }, + "global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "requires": { + "ini": "^1.3.4" + } + }, "globals": { "version": "12.3.0", "resolved": "https://registry.npmjs.org/globals/-/globals-12.3.0.tgz", @@ -970,6 +1552,19 @@ "type-fest": "^0.8.0" } }, + "graceful-fs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "requires": { + "lodash": "^4.17.15" + } + }, "handlebars": { "version": "4.5.3", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", @@ -998,8 +1593,12 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" }, "html-encoding-sniffer": { "version": "1.0.2", @@ -1026,6 +1625,25 @@ "toidentifier": "1.0.0" } }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + } + } + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -1036,6 +1654,30 @@ "sshpk": "^1.7.0" } }, + "https-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", + "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -1050,6 +1692,11 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, "import-fresh": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", @@ -1060,17 +1707,20 @@ "resolve-from": "^4.0.0" } }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -1081,6 +1731,11 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + }, "inquirer": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.3.tgz", @@ -1102,6 +1757,16 @@ "through": "^2.3.6" } }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=" + }, "ip-regex": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", @@ -1112,6 +1777,14 @@ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "requires": { + "ci-info": "^1.5.0" + } + }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -1133,22 +1806,80 @@ "is-extglob": "^2.1.1" } }, + "is-installed-globally": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.1.0.tgz", + "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=", + "requires": { + "global-dirs": "^0.1.0", + "is-path-inside": "^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-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", + "requires": { + "path-is-inside": "^1.0.1" + } + }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", - "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=", - "dev": true + "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" + }, + "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-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" + }, + "is-ssh": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.1.tgz", + "integrity": "sha512-0eRIASHZt1E68/ixClI8bp2YK2wmBPVWEismTs6M+M099jKgrzl/3E976zIbImSIob48N2/XGe9y7ZiYdImSlg==", + "requires": { + "protocols": "^1.1.0" + } + }, + "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=" }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, "isstream": { "version": "0.1.2", @@ -1165,7 +1896,6 @@ "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -1174,8 +1904,7 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" } } }, @@ -1254,6 +1983,17 @@ "verror": "1.10.0" } }, + "jszip": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.2.tgz", + "integrity": "sha512-NmKajvAFQpbg3taXQXr/ccS2wcucR1AZ+NtyWp2Nq7HHVsXhcJFR8p0Baf32C2yVvBylFWVeKf+WI2AnvlPhpA==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, "keyv": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", @@ -1262,6 +2002,22 @@ "json-buffer": "3.0.0" } }, + "latest-version": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-3.1.0.tgz", + "integrity": "sha1-ogU4P+oyKzO1rjsYq+4NwvNW7hU=", + "requires": { + "package-json": "^4.0.0" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "requires": { + "invert-kv": "^1.0.0" + } + }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -1271,11 +2027,54 @@ "type-check": "~0.3.2" } }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" + }, + "lodash.assignin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", + "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=" + }, + "lodash.clone": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz", + "integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y=" + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" + }, + "lodash.flatten": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=" + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -1286,6 +2085,27 @@ "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, + "macos-release": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.3.0.tgz", + "integrity": "sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA==" + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "requires": { + "pify": "^3.0.0" + } + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -1334,7 +2154,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.7" } @@ -1378,11 +2197,47 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "nconf": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.10.0.tgz", + "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==", + "requires": { + "async": "^1.4.0", + "ini": "^1.3.0", + "secure-keys": "^1.0.0", + "yargs": "^3.19.0" + } + }, "ncp": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", "integrity": "sha1-GVoh1sRuNh0vsSgbo4uR6d9727M=" }, + "needle": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "negotiator": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", @@ -1393,17 +2248,34 @@ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==" }, + "netmask": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-1.0.6.tgz", + "integrity": "sha1-ICl+idhvb2QA8lDZ9Pa0wZRfzTU=" + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, "normalize-url": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "requires": { + "path-key": "^2.0.0" + } + }, + "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=" + }, "nwsapi": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", @@ -1414,6 +2286,11 @@ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" }, + "object-hash": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-1.3.1.tgz", + "integrity": "sha512-OSuu/pU4ENM9kmREg0BdNrUDIl1heYa4mBZacJc+vVWz4GtAwu7jO8s4AIt2aGRUTqxykpWzI3Oqnsm13tTMDA==" + }, "on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -1439,6 +2316,14 @@ "mimic-fn": "^2.1.0" } }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "requires": { + "is-wsl": "^1.1.0" + } + }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", @@ -1461,17 +2346,136 @@ "word-wrap": "~1.2.3" } }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "requires": { + "lcid": "^1.0.0" + } + }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, "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=" }, "p-cancelable": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==" }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==" + }, + "pac-proxy-agent": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.1.tgz", + "integrity": "sha512-44DUg21G/liUZ48dJpUSjZnFfZro/0K5JTyFYLBcmh9+T6Ooi4/i4efwUiEy0+4oQusCBqWdhv16XohIj1GqnQ==", + "requires": { + "agent-base": "^4.2.0", + "debug": "^4.1.1", + "get-uri": "^2.0.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "pac-resolver": "^3.0.0", + "raw-body": "^2.2.0", + "socks-proxy-agent": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "pac-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz", + "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==", + "requires": { + "co": "^4.6.0", + "degenerator": "^1.0.4", + "ip": "^1.1.5", + "netmask": "^1.0.6", + "thunkify": "^2.1.2" + } + }, + "package-json": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz", + "integrity": "sha1-iGmgQBJTZhxMTKPabCEh7VVfXu0=", + "requires": { + "got": "^6.7.1", + "registry-auth-token": "^3.0.1", + "registry-url": "^3.0.3", + "semver": "^5.1.0" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "got": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/got/-/got-6.7.1.tgz", + "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=", + "requires": { + "create-error-class": "^3.0.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-redirect": "^1.0.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "lowercase-keys": "^1.0.0", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "unzip-response": "^2.0.1", + "url-parse-lax": "^1.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1481,6 +2485,33 @@ "callsites": "^3.0.0" } }, + "parse-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.1.tgz", + "integrity": "sha512-d7yhga0Oc+PwNXDvQ0Jv1BuWkLVPXcAoQ/WREgd6vNNoKYaW52KI+RdOFjI63wjkmps9yUE8VS4veP+AgpQ/hA==", + "requires": { + "is-ssh": "^1.3.0", + "protocols": "^1.4.0" + } + }, + "parse-url": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-5.0.1.tgz", + "integrity": "sha512-flNUPP27r3vJpROi0/R3/2efgKkyXqnXwyP1KQ2U0SfFRgdizOdWfvrrvJg1LuOoxs7GQhmxJlq23IpQ/BkByg==", + "requires": { + "is-ssh": "^1.3.0", + "normalize-url": "^3.3.0", + "parse-path": "^4.0.0", + "protocols": "^1.4.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==" + } + } + }, "parse5": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", @@ -1494,14 +2525,17 @@ "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-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=" }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, "path-to-regexp": { "version": "0.1.7", @@ -1513,6 +2547,11 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -1523,18 +2562,41 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, "prettier": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", "dev": true }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "requires": { + "asap": "~2.0.3" + } + }, + "protocols": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.7.tgz", + "integrity": "sha512-Fx65lf9/YDn3hUX08XUc0J8rSux36rEsyiv21ZGUC1mOyeM3lTRpZLcrm8aAolzS4itwVfm7TAPyxC2E5zd6xg==" + }, "proxy-addr": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", @@ -1544,6 +2606,46 @@ "ipaddr.js": "1.9.0" } }, + "proxy-agent": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.1.1.tgz", + "integrity": "sha512-WudaR0eTsDx33O3EJE16PjBRZWcX8GqCEeERw1W3hZJgH/F2a46g7jty6UGty6NeJ4CKQy8ds2CJPMiyeqaTvw==", + "requires": { + "agent-base": "^4.2.0", + "debug": "4", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^3.0.0", + "lru-cache": "^5.1.1", + "pac-proxy-agent": "^3.0.1", + "proxy-from-env": "^1.0.0", + "socks-proxy-agent": "^4.0.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=" + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" + }, "psl": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", @@ -1584,12 +2686,81 @@ "unpipe": "1.0.0" } }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" + }, + "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=" + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, + "registry-auth-token": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.4.0.tgz", + "integrity": "sha512-4LM6Fw8eBQdwMYcES4yTnn2TqIasbXuwDx3um+QRs7S55aMKCBKBxvPXl2RiUjHwuJLTyYfxSpmfSAjQpcuP+A==", + "requires": { + "rc": "^1.1.6", + "safe-buffer": "^5.0.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.0.1" + } + }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", @@ -1695,7 +2866,6 @@ "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -1704,7 +2874,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", - "dev": true, "requires": { "is-promise": "^2.1.0" } @@ -1713,7 +2882,6 @@ "version": "6.5.4", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", - "dev": true, "requires": { "tslib": "^1.9.0" } @@ -1728,6 +2896,11 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "saxes": { "version": "3.1.11", "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", @@ -1736,11 +2909,30 @@ "xmlchars": "^2.1.1" } }, + "secure-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", + "integrity": "sha1-8MgtmKOxOah3aogIBQuCRDEIf8o=" + }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "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.0.3" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } + } }, "send": { "version": "0.17.1", @@ -1780,6 +2972,11 @@ "send": "0.17.1" } }, + "set-immediate-shim": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" + }, "setprototypeof": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", @@ -1789,7 +2986,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, "requires": { "shebang-regex": "^1.0.0" } @@ -1797,14 +2993,12 @@ "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "slice-ansi": { "version": "2.1.0", @@ -1825,16 +3019,697 @@ } } }, + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==" + }, + "snyk": { + "version": "1.279.1", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.279.1.tgz", + "integrity": "sha512-i2bpYgXgRYUCKKuVOjVha3P9tl4T7fXurF/IAwnyueaXRcoos8LHeka9larQArEAHkOGqHgq94ZFhkleo8lZiA==", + "requires": { + "@snyk/cli-interface": "2.3.0", + "@snyk/dep-graph": "1.13.1", + "@snyk/gemfile": "1.2.0", + "@snyk/snyk-cocoapods-plugin": "2.0.1", + "@types/agent-base": "^4.2.0", + "@types/restify": "^4.3.6", + "abbrev": "^1.1.1", + "ansi-escapes": "3.2.0", + "chalk": "^2.4.2", + "cli-spinner": "0.2.10", + "configstore": "^3.1.2", + "debug": "^3.1.0", + "diff": "^4.0.1", + "git-url-parse": "11.1.2", + "glob": "^7.1.3", + "inquirer": "^6.2.2", + "lodash": "^4.17.14", + "needle": "^2.2.4", + "opn": "^5.5.0", + "os-name": "^3.0.0", + "proxy-agent": "^3.1.1", + "proxy-from-env": "^1.0.0", + "semver": "^6.0.0", + "snyk-config": "^2.2.1", + "snyk-docker-plugin": "1.33.1", + "snyk-go-plugin": "1.11.1", + "snyk-gradle-plugin": "3.2.4", + "snyk-module": "1.9.1", + "snyk-mvn-plugin": "2.7.0", + "snyk-nodejs-lockfile-parser": "1.17.0", + "snyk-nuget-plugin": "1.16.0", + "snyk-php-plugin": "1.7.0", + "snyk-policy": "1.13.5", + "snyk-python-plugin": "1.16.0", + "snyk-resolve": "1.0.1", + "snyk-resolve-deps": "4.4.0", + "snyk-sbt-plugin": "2.11.0", + "snyk-tree": "^1.0.0", + "snyk-try-require": "1.3.1", + "source-map-support": "^0.5.11", + "strip-ansi": "^5.2.0", + "tempfile": "^2.0.0", + "then-fs": "^2.0.0", + "update-notifier": "^2.5.0", + "uuid": "^3.3.2", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + } + }, + "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=" + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + } + } + }, + "snyk-config": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/snyk-config/-/snyk-config-2.2.3.tgz", + "integrity": "sha512-9NjxHVMd1U1LFw66Lya4LXgrsFUiuRiL4opxfTFo0LmMNzUoU5Bk/p0zDdg3FE5Wg61r4fP2D8w+QTl6M8CGiw==", + "requires": { + "debug": "^3.1.0", + "lodash": "^4.17.15", + "nconf": "^0.10.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "snyk-docker-plugin": { + "version": "1.33.1", + "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.33.1.tgz", + "integrity": "sha512-xfs3DN1tPMTh6J8x2341wGK4HRr+pI5+i/YRuRmsslnBnwk/DkKYcbt8zOIWk6kzMoW8vo+9LqqXBQO/24szKg==", + "requires": { + "debug": "^4.1.1", + "dockerfile-ast": "0.0.16", + "semver": "^6.1.0", + "tar-stream": "^2.1.0", + "tslib": "^1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "snyk-go-parser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/snyk-go-parser/-/snyk-go-parser-1.3.1.tgz", + "integrity": "sha512-jrFRfIk6yGHFeipGD66WV9ei/A/w/lIiGqI80w1ndMbg6D6M5pVNbK7ngDTmo4GdHrZDYqx/VBGBsUm2bol3Rg==", + "requires": { + "toml": "^3.0.0", + "tslib": "^1.9.3" + } + }, + "snyk-go-plugin": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/snyk-go-plugin/-/snyk-go-plugin-1.11.1.tgz", + "integrity": "sha512-IsNi7TmpHoRHzONOWJTT8+VYozQJnaJpKgnYNQjzNm2JlV8bDGbdGQ1a8LcEoChxnJ8v8aMZy7GTiQyGGABtEQ==", + "requires": { + "debug": "^4.1.1", + "graphlib": "^2.1.1", + "snyk-go-parser": "1.3.1", + "tmp": "0.0.33", + "tslib": "^1.10.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "snyk-gradle-plugin": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/snyk-gradle-plugin/-/snyk-gradle-plugin-3.2.4.tgz", + "integrity": "sha512-XmS1gl7uZNHP9HP5RaPuRXW3VjkbdWe+EgSOlvmspztkubIOIainqc87k7rIJ6u3tLBhqsZK8b5ru0/E9Q69hQ==", + "requires": { + "@snyk/cli-interface": "2.3.0", + "@types/debug": "^4.1.4", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "tmp": "0.0.33", + "tslib": "^1.9.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "snyk-module": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/snyk-module/-/snyk-module-1.9.1.tgz", + "integrity": "sha512-A+CCyBSa4IKok5uEhqT+hV/35RO6APFNLqk9DRRHg7xW2/j//nPX8wTSZUPF8QeRNEk/sX+6df7M1y6PBHGSHA==", + "requires": { + "debug": "^3.1.0", + "hosted-git-info": "^2.7.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "snyk-mvn-plugin": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.7.0.tgz", + "integrity": "sha512-DLBt+6ZvtoleXE7Si3wAa6gdPSWsXdIQEY6m2zW2InN9WiaRwIEKMCY822eFmRPZVNNmZNRUIeQsoHZwv/slqQ==", + "requires": { + "@snyk/cli-interface": "2.2.0", + "debug": "^4.1.1", + "lodash": "^4.17.15", + "needle": "^2.4.0", + "tmp": "^0.1.0", + "tslib": "1.9.3" + }, + "dependencies": { + "@snyk/cli-interface": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.2.0.tgz", + "integrity": "sha512-sA7V2JhgqJB9z5uYotgQc5iNDv//y+Mdm39rANxmFjtZMSYJZHkP80arzPjw1mB5ni/sWec7ieYUUFeySZBfVg==", + "requires": { + "tslib": "^1.9.3" + } + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "requires": { + "rimraf": "^2.6.3" + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + } + } + }, + "snyk-nodejs-lockfile-parser": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/snyk-nodejs-lockfile-parser/-/snyk-nodejs-lockfile-parser-1.17.0.tgz", + "integrity": "sha512-i4GAYFj9TJLOQ8F+FbIJuJWdGymi8w/XcrEX0FzXk7DpYUCY3mWibyKhw8RasfYBx5vLwUzEvRMaQuc2EwlyfA==", + "requires": { + "@yarnpkg/lockfile": "^1.0.2", + "graphlib": "^2.1.5", + "lodash": "^4.17.14", + "p-map": "2.1.0", + "source-map-support": "^0.5.7", + "tslib": "^1.9.3", + "uuid": "^3.3.2" + } + }, + "snyk-nuget-plugin": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/snyk-nuget-plugin/-/snyk-nuget-plugin-1.16.0.tgz", + "integrity": "sha512-OEusK3JKKpR4Yto5KwuqjQGgb9wAhmDqBWSQomWdtKQVFrzn5B6BMzOFikUzmeMTnUGGON7gurQBLXeZZLhRqg==", + "requires": { + "debug": "^3.1.0", + "dotnet-deps-parser": "4.9.0", + "jszip": "^3.1.5", + "lodash": "^4.17.14", + "snyk-paket-parser": "1.5.0", + "tslib": "^1.9.3", + "xml2js": "^0.4.17" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "snyk-paket-parser": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/snyk-paket-parser/-/snyk-paket-parser-1.5.0.tgz", + "integrity": "sha512-1CYMPChJ9D9LBy3NLqHyv8TY7pR/LMISSr08LhfFw/FpfRZ+gTH8W6bbxCmybAYrOFNCqZkRprqOYDqZQFHipA==", + "requires": { + "tslib": "^1.9.3" + } + }, + "snyk-php-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/snyk-php-plugin/-/snyk-php-plugin-1.7.0.tgz", + "integrity": "sha512-mDe90xkqSEVrpx1ZC7ItqCOc6fZCySbE+pHVI+dAPUmf1C1LSWZrZVmAVeo/Dw9sJzJfzmcdAFQl+jZP8/uV0A==", + "requires": { + "@snyk/cli-interface": "2.2.0", + "@snyk/composer-lockfile-parser": "1.2.0", + "tslib": "1.9.3" + }, + "dependencies": { + "@snyk/cli-interface": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.2.0.tgz", + "integrity": "sha512-sA7V2JhgqJB9z5uYotgQc5iNDv//y+Mdm39rANxmFjtZMSYJZHkP80arzPjw1mB5ni/sWec7ieYUUFeySZBfVg==", + "requires": { + "tslib": "^1.9.3" + } + }, + "tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + } + } + }, + "snyk-policy": { + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/snyk-policy/-/snyk-policy-1.13.5.tgz", + "integrity": "sha512-KI6GHt+Oj4fYKiCp7duhseUj5YhyL/zJOrrJg0u6r59Ux9w8gmkUYT92FHW27ihwuT6IPzdGNEuy06Yv2C9WaQ==", + "requires": { + "debug": "^3.1.0", + "email-validator": "^2.0.4", + "js-yaml": "^3.13.1", + "lodash.clonedeep": "^4.5.0", + "semver": "^6.0.0", + "snyk-module": "^1.9.1", + "snyk-resolve": "^1.0.1", + "snyk-try-require": "^1.3.1", + "then-fs": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "snyk-python-plugin": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.16.0.tgz", + "integrity": "sha512-IA53xOcy1s881tbIrIXNqIuCNozd4PAVWN8oF0xgRn2NQbq0e7EWt7kFPJbmZodpLCDpXaKKqV2MHbXruFIsrw==", + "requires": { + "@snyk/cli-interface": "^2.0.3", + "tmp": "0.0.33" + } + }, + "snyk-resolve": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/snyk-resolve/-/snyk-resolve-1.0.1.tgz", + "integrity": "sha512-7+i+LLhtBo1Pkth01xv+RYJU8a67zmJ8WFFPvSxyCjdlKIcsps4hPQFebhz+0gC5rMemlaeIV6cqwqUf9PEDpw==", + "requires": { + "debug": "^3.1.0", + "then-fs": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "snyk-resolve-deps": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/snyk-resolve-deps/-/snyk-resolve-deps-4.4.0.tgz", + "integrity": "sha512-aFPtN8WLqIk4E1ulMyzvV5reY1Iksz+3oPnUVib1jKdyTHymmOIYF7z8QZ4UUr52UsgmrD9EA/dq7jpytwFoOQ==", + "requires": { + "@types/node": "^6.14.4", + "@types/semver": "^5.5.0", + "ansicolors": "^0.3.2", + "debug": "^3.2.5", + "lodash.assign": "^4.2.0", + "lodash.assignin": "^4.2.0", + "lodash.clone": "^4.5.0", + "lodash.flatten": "^4.4.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lru-cache": "^4.0.0", + "semver": "^5.5.1", + "snyk-module": "^1.6.0", + "snyk-resolve": "^1.0.0", + "snyk-tree": "^1.0.0", + "snyk-try-require": "^1.1.1", + "then-fs": "^2.0.0" + }, + "dependencies": { + "@types/node": { + "version": "6.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-6.14.9.tgz", + "integrity": "sha512-leP/gxHunuazPdZaCvsCefPQxinqUDsCxCR5xaDUrY2MkYxQRFZZwU5e7GojyYsGB7QVtCi7iVEl/hoFXQYc+w==" + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "snyk-sbt-plugin": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/snyk-sbt-plugin/-/snyk-sbt-plugin-2.11.0.tgz", + "integrity": "sha512-wUqHLAa3MzV6sVO+05MnV+lwc+T6o87FZZaY+43tQPytBI2Wq23O3j4POREM4fa2iFfiQJoEYD6c7xmhiEUsSA==", + "requires": { + "debug": "^4.1.1", + "semver": "^6.1.2", + "tmp": "^0.1.0", + "tree-kill": "^1.2.2", + "tslib": "^1.10.0" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "tmp": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "requires": { + "rimraf": "^2.6.3" + } + } + } + }, + "snyk-tree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/snyk-tree/-/snyk-tree-1.0.0.tgz", + "integrity": "sha1-D7cxdtvzLngvGRAClBYESPkRHMg=", + "requires": { + "archy": "^1.0.0" + } + }, + "snyk-try-require": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/snyk-try-require/-/snyk-try-require-1.3.1.tgz", + "integrity": "sha1-bgJvkuZK9/zM6h7lPVJIQeQYohI=", + "requires": { + "debug": "^3.1.0", + "lodash.clonedeep": "^4.3.0", + "lru-cache": "^4.0.0", + "then-fs": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, + "source-map-support": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz", + "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==", + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, "sshpk": { "version": "1.16.1", @@ -1884,11 +3759,15 @@ } } }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, "requires": { "ansi-regex": "^4.1.0" }, @@ -1896,11 +3775,15 @@ "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" } } }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" + }, "strip-json-comments": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", @@ -1911,7 +3794,6 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } @@ -1958,23 +3840,143 @@ } } }, + "tar-stream": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.0.tgz", + "integrity": "sha512-+DAn4Nb4+gz6WZigRzKEZl1QuJVOLtAwwF+WUxy1fJ6X63CaGaUAxJRD2KEn1OMfcbCjySTYpNC6WmfQoIEOdw==", + "requires": { + "bl": "^3.0.0", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz", + "integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==", + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "requires": { + "safe-buffer": "~5.2.0" + } + } + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" + }, + "tempfile": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz", + "integrity": "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=", + "requires": { + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + } + }, + "term-size": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-1.2.0.tgz", + "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", + "requires": { + "execa": "^0.7.0" + }, + "dependencies": { + "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=", + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "requires": { + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" + } + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "then-fs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/then-fs/-/then-fs-2.0.0.tgz", + "integrity": "sha1-cveS3Z0xcFqRrhnr/Piz+WjIHaI=", + "requires": { + "promise": ">=3.2 <8" + } + }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "thunkify": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz", + "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=" + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, "requires": { "os-tmpdir": "~1.0.2" } @@ -1989,6 +3991,11 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, + "toml": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/toml/-/toml-3.0.0.tgz", + "integrity": "sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w==" + }, "tough-cookie": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-3.0.1.tgz", @@ -2007,11 +4014,15 @@ "punycode": "^2.1.0" } }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" + }, "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", - "dev": true + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" }, "tunnel-agent": { "version": "0.6.0", @@ -2066,11 +4077,41 @@ } } }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "^1.0.0" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, + "unzip-response": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", + "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" + }, + "update-notifier": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", + "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", + "requires": { + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "configstore": "^3.0.0", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -2079,6 +4120,19 @@ "punycode": "^2.1.0" } }, + "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.1" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -2110,6 +4164,11 @@ "extsprintf": "^1.2.0" } }, + "vscode-languageserver-types": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0.tgz", + "integrity": "sha512-AXteNagMhBWnZ6gNN0UB4HTiD/7TajgfHl6jaM6O7qz3zDJw0H3Jf83w05phihnBRCML+K6Ockh8f8bL0OObPw==" + }, "w3c-hr-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", @@ -2160,11 +4219,60 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, "requires": { "isexe": "^2.0.0" } }, + "widest-line": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-2.0.1.tgz", + "integrity": "sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==", + "requires": { + "string-width": "^2.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "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=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "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=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" + }, + "windows-release": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.2.0.tgz", + "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", + "requires": { + "execa": "^1.0.0" + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -2175,6 +4283,38 @@ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "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=" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -2189,6 +4329,16 @@ "mkdirp": "^0.5.1" } }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, "ws": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.0.tgz", @@ -2197,15 +4347,103 @@ "async-limiter": "^1.0.0" } }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==" }, + "xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "dependencies": { + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + } + } + }, + "xmlbuilder": { + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz", + "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=" + }, "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" + }, + "xregexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz", + "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=" + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } } } } diff --git a/package.json b/package.json index aa42347..cabe5f7 100644 --- a/package.json +++ b/package.json @@ -5,10 +5,13 @@ "main": "build.js", "bin": "bin/gitfolio.js", "scripts": { + "build": "OUT_DIR='./dist' node bin/gitfolio.js build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h --reddit kaustubhladiya --keybase k4ustu3h --facebook k4ustu3h", "cli": "OUT_DIR='./dist' node bin/gitfolio.js", "clean": "rm -rf ./dist/*", "prettier": "prettier --write \"./**/*.{js,jsx,json,html,css,md}\"", - "test": "OUT_DIR='./dist' node bin/gitfolio.js build k4ustu3h --fork --theme dark --sort updated --twitter k4ustu3h_ --dribbble k4ustu3h --email k4ustu3h@gmail.com --codepen k4ustu3h --dev k4ustu3h --instagram k4ustu3h --telegram k4ustu3h --reddit kaustubhladiya --keybase k4ustu3h --facebook k4ustu3h" + "snyk-protect": "snyk protect", + "prepare": "npm run snyk-protect", + "test": "snyk test" }, "author": { "name": "@imfunniee and community", @@ -40,10 +43,12 @@ "got": "^10.2.2", "handlebars": "^4.1.2", "jsdom": "^15.1.0", - "ncp": "^2.0.0" + "ncp": "^2.0.0", + "snyk": "^1.279.1" }, "devDependencies": { "eslint": "^6.8.0", "prettier": "1.19.1" - } + }, + "snyk": true } From 9302865ef376aaf99a83377bd872f926b39f0f16 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Thu, 23 Jan 2020 16:27:59 +0000 Subject: [PATCH 112/163] Bump jsdom from 15.2.1 to 16.0.1 Bumps [jsdom](https://github.com/jsdom/jsdom) from 15.2.1 to 16.0.1. - [Release notes](https://github.com/jsdom/jsdom/releases) - [Changelog](https://github.com/jsdom/jsdom/blob/master/Changelog.md) - [Commits](https://github.com/jsdom/jsdom/compare/15.2.1...16.0.1) Signed-off-by: dependabot-preview[bot] --- package-lock.json | 175 +++++++++++++++++++++++----------------------- package.json | 2 +- 2 files changed, 90 insertions(+), 87 deletions(-) diff --git a/package-lock.json b/package-lock.json index 599b630..143c0a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -360,11 +360,6 @@ "sprintf-js": "~1.0.2" } }, - "array-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", - "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=" - }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -404,11 +399,6 @@ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -420,9 +410,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz", - "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==" + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" }, "balanced-match": { "version": "1.0.0", @@ -850,9 +840,9 @@ "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==" }, "cssstyle": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.0.0.tgz", - "integrity": "sha512-QXSAu2WBsSRXCPjvI43Y40m6fMevvyRm8JVAuF9ksQz5jha4pWP1wpaK7Yu5oLFc6+XAY+hj8YhefyXcBB53gg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.2.0.tgz", + "integrity": "sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA==", "requires": { "cssom": "~0.3.6" }, @@ -878,13 +868,13 @@ "integrity": "sha512-vKQ9DTQPN1FLYiiEEOQ6IBGFqvjCa5rSK3cWMy/Nespm5d/x3dGFT9UBZnkLxCwua/IXBi2TYnwTEpsOvhC4UQ==" }, "data-urls": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", - "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", "requires": { - "abab": "^2.0.0", - "whatwg-mimetype": "^2.2.0", - "whatwg-url": "^7.0.0" + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" } }, "debug": { @@ -900,6 +890,11 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" }, + "decimal.js": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.0.tgz", + "integrity": "sha512-vDPw+rDgn3bZe1+F/pyEwb1oMG2XTlRVgAa6B4KccTEpYgF8w6eQllVbQcfIJnZyvzFtFpxnpGtx8dd7DJp/Rw==" + }, "decompress-response": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-5.0.0.tgz", @@ -971,11 +966,11 @@ } }, "domexception": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", - "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", "requires": { - "webidl-conversions": "^4.0.2" + "webidl-conversions": "^5.0.0" } }, "dot-prop": { @@ -1601,11 +1596,11 @@ "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" }, "html-encoding-sniffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", - "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.0.tgz", + "integrity": "sha512-Y9prnPKkM7FXxQevZ5UH8Z6aVTY0ede1tHquck5UxGmKWDshxXh95gSa2xXYjS8AsGO5iOvrCI5+GttRKnLdNA==", "requires": { - "whatwg-encoding": "^1.0.1" + "whatwg-encoding": "^1.0.5" } }, "http-cache-semantics": { @@ -1914,36 +1909,54 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsdom": { - "version": "15.2.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-15.2.1.tgz", - "integrity": "sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g==", + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.0.1.tgz", + "integrity": "sha512-wKJe/APzq+ak9i+2ybWE20lDIhF9AkGKSZf8UsjPN39acatFB6oA7K397kQvHVikds0yQono2h6J7UjbPtPOWw==", "requires": { - "abab": "^2.0.0", + "abab": "^2.0.3", "acorn": "^7.1.0", "acorn-globals": "^4.3.2", - "array-equal": "^1.0.0", - "cssom": "^0.4.1", + "cssom": "^0.4.4", "cssstyle": "^2.0.0", - "data-urls": "^1.1.0", - "domexception": "^1.0.1", - "escodegen": "^1.11.1", - "html-encoding-sniffer": "^1.0.2", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.0", + "domexception": "^2.0.1", + "escodegen": "^1.12.1", + "html-encoding-sniffer": "^2.0.0", "nwsapi": "^2.2.0", - "parse5": "5.1.0", - "pn": "^1.1.0", + "parse5": "5.1.1", "request": "^2.88.0", - "request-promise-native": "^1.0.7", - "saxes": "^3.1.9", + "request-promise-native": "^1.0.8", + "saxes": "^4.0.2", "symbol-tree": "^3.2.2", "tough-cookie": "^3.0.1", "w3c-hr-time": "^1.0.1", - "w3c-xmlserializer": "^1.1.2", - "webidl-conversions": "^4.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^5.0.0", "whatwg-encoding": "^1.0.5", "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^7.0.0", - "ws": "^7.0.0", + "whatwg-url": "^8.0.0", + "ws": "^7.2.1", "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "escodegen": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.13.0.tgz", + "integrity": "sha512-eYk2dCkxR07DsHA/X2hRBj0CFAZeri/LyDMc0C8JT1Hqi6JnVpMhJ7XFITbb0+yZS3lVkaPL2oCkZ3AVmeVbMw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + } } }, "json-buffer": { @@ -2513,9 +2526,9 @@ } }, "parse5": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", - "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==" + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" }, "parseurl": { "version": "1.3.3", @@ -2552,11 +2565,6 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, - "pn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", - "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -2647,9 +2655,9 @@ "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" }, "psl": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", - "integrity": "sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==" }, "pump": { "version": "3.0.0", @@ -2902,11 +2910,11 @@ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" }, "saxes": { - "version": "3.1.11", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", - "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-4.0.2.tgz", + "integrity": "sha512-EZOTeQ4bgkOaGCDaTKux+LaRNcLNbdbvMH7R3/yjEEULPEmqvkFbFub6DJhJTub2iGMT93CfpZ5LTdKZmAbVeQ==", "requires": { - "xmlchars": "^2.1.1" + "xmlchars": "^2.2.0" } }, "secure-keys": { @@ -4007,11 +4015,11 @@ } }, "tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.0.tgz", + "integrity": "sha512-LrErSqfhdUw73AC/eXV2fEmNkvgSYxfm5lvxnLvuVgoVDknvD28Pa5FeDGc8RuVouDxUD3GnHHFv7xnBp7As5w==", "requires": { - "punycode": "^2.1.0" + "punycode": "^2.1.1" } }, "tree-kill": { @@ -4178,19 +4186,17 @@ } }, "w3c-xmlserializer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", - "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", "requires": { - "domexception": "^1.0.1", - "webidl-conversions": "^4.0.2", "xml-name-validator": "^3.0.0" } }, "webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==" }, "whatwg-encoding": { "version": "1.0.5", @@ -4206,13 +4212,13 @@ "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==" }, "whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.0.0.tgz", + "integrity": "sha512-41ou2Dugpij8/LPO5Pq64K5q++MnRCBpEHvQr26/mArEKTkCV5aoXIqyhuYtE0pkqScXwhf2JP57rkRTYM29lQ==", "requires": { "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "tr46": "^2.0.0", + "webidl-conversions": "^5.0.0" } }, "which": { @@ -4340,12 +4346,9 @@ } }, "ws": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.0.tgz", - "integrity": "sha512-+SqNqFbwTm/0DC18KYzIsMTnEWpLwJsiasW/O17la4iDRRIO9uaHbvKiAS3AHgTiuuWerK/brj4O6MYZkei9xg==", - "requires": { - "async-limiter": "^1.0.0" - } + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.2.1.tgz", + "integrity": "sha512-sucePNSafamSKoOqoNfBd8V0StlkzJKL2ZAhGQinCfNQ+oacw+Pk7lcdAElecBF2VkLNZRiIb5Oi1Q5lVUVt2A==" }, "xdg-basedir": { "version": "3.0.0", diff --git a/package.json b/package.json index cabe5f7..04d5e41 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "github-emoji": "^1.1.1", "got": "^10.2.2", "handlebars": "^4.1.2", - "jsdom": "^15.1.0", + "jsdom": "^16.0.1", "ncp": "^2.0.0", "snyk": "^1.279.1" }, From d774aee774816389bef42a57711139b8d25e6d6a Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2020 15:33:37 +0000 Subject: [PATCH 113/163] Bump snyk from 1.279.1 to 1.286.0 Bumps [snyk](https://github.com/snyk/snyk) from 1.279.1 to 1.286.0. - [Release notes](https://github.com/snyk/snyk/releases) - [Changelog](https://github.com/snyk/snyk/blob/master/.releaserc) - [Commits](https://github.com/snyk/snyk/compare/v1.279.1...v1.286.0) Signed-off-by: dependabot-preview[bot] --- package-lock.json | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/package-lock.json b/package-lock.json index 599b630..894f147 100644 --- a/package-lock.json +++ b/package-lock.json @@ -159,9 +159,9 @@ "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==" }, "@types/js-yaml": { - "version": "3.12.1", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.1.tgz", - "integrity": "sha512-SGGAhXLHDx+PK4YLNcNGa6goPf9XRWQNAUUbffkwVGGXIxmDKWyGGL4inzq2sPmExu431Ekb9aEMn9BkPqEYFA==" + "version": "3.12.2", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-3.12.2.tgz", + "integrity": "sha512-0CFu/g4mDSNkodVwWijdlr8jH7RoplRWNgovjFLEZeT+QEbbZXjBmCe3HwaWheAlCbHwomTwzZoSedeOycABug==" }, "@types/keyv": { "version": "3.1.1", @@ -954,9 +954,9 @@ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" }, "dockerfile-ast": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.0.16.tgz", - "integrity": "sha512-+HZToHjjiLPl46TqBrok5dMrg5oCkZFPSROMQjRmvin0zG4FxK0DJXTpV/CUPYY2zpmEvVza55XLwSHFx/xZMw==", + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/dockerfile-ast/-/dockerfile-ast-0.0.18.tgz", + "integrity": "sha512-SEp95qCox1KAzf8BBtjHoBDD0a7/eNlZJ6fgDf9RxqeSEDwLuEN9YjdZ/tRlkrYLxXR4i+kqZzS4eDRSqs8VKQ==", "requires": { "vscode-languageserver-types": "^3.5.0" } @@ -1228,6 +1228,14 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, + "event-loop-spinner": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/event-loop-spinner/-/event-loop-spinner-1.1.0.tgz", + "integrity": "sha512-YVFs6dPpZIgH665kKckDktEVvSBccSYJmoZUfhNUdv5d3Xv+Q+SKF4Xis1jolq9aBzuW1ZZhQh/m/zU/TPdDhw==", + "requires": { + "tslib": "^1.10.0" + } + }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", @@ -3025,9 +3033,9 @@ "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==" }, "snyk": { - "version": "1.279.1", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.279.1.tgz", - "integrity": "sha512-i2bpYgXgRYUCKKuVOjVha3P9tl4T7fXurF/IAwnyueaXRcoos8LHeka9larQArEAHkOGqHgq94ZFhkleo8lZiA==", + "version": "1.286.0", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.286.0.tgz", + "integrity": "sha512-c9Qov7xvUnBC0r/kQR/wXyCQWFH+J8aJU5002QTHKQ+IkU/BMG+BdW9pFw/VLA7Pzy6ObjJqGnqRDHHwruT6Vw==", "requires": { "@snyk/cli-interface": "2.3.0", "@snyk/dep-graph": "1.13.1", @@ -3053,7 +3061,7 @@ "proxy-from-env": "^1.0.0", "semver": "^6.0.0", "snyk-config": "^2.2.1", - "snyk-docker-plugin": "1.33.1", + "snyk-docker-plugin": "1.38.0", "snyk-go-plugin": "1.11.1", "snyk-gradle-plugin": "3.2.4", "snyk-module": "1.9.1", @@ -3215,12 +3223,13 @@ } }, "snyk-docker-plugin": { - "version": "1.33.1", - "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.33.1.tgz", - "integrity": "sha512-xfs3DN1tPMTh6J8x2341wGK4HRr+pI5+i/YRuRmsslnBnwk/DkKYcbt8zOIWk6kzMoW8vo+9LqqXBQO/24szKg==", + "version": "1.38.0", + "resolved": "https://registry.npmjs.org/snyk-docker-plugin/-/snyk-docker-plugin-1.38.0.tgz", + "integrity": "sha512-43HbJj6QatuL2BNG+Uq2Taa73wdfSQSID8FJWW4q5/LYgd9D+RtdiE4lAMwxqYYbvThU9uuza4epuF/B1CAlYw==", "requires": { "debug": "^4.1.1", - "dockerfile-ast": "0.0.16", + "dockerfile-ast": "0.0.18", + "event-loop-spinner": "^1.1.0", "semver": "^6.1.0", "tar-stream": "^2.1.0", "tslib": "^1" @@ -4165,9 +4174,9 @@ } }, "vscode-languageserver-types": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.0.tgz", - "integrity": "sha512-AXteNagMhBWnZ6gNN0UB4HTiD/7TajgfHl6jaM6O7qz3zDJw0H3Jf83w05phihnBRCML+K6Ockh8f8bL0OObPw==" + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.15.1.tgz", + "integrity": "sha512-+a9MPUQrNGRrGU630OGbYVQ+11iOIovjCkqxajPa9w57Sd5ruK8WQNsslzpa0x/QJqC8kRc2DUxWjIFwoNm4ZQ==" }, "w3c-hr-time": { "version": "1.0.1", From a4f871780840ae459f55567a4d5664a175012144 Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Tue, 28 Jan 2020 22:10:40 +0530 Subject: [PATCH 114/163] Update README.md --- README.md | 162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) diff --git a/README.md b/README.md index b3ecf58..ad0ff24 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,167 @@ + + +# Gitfolio + +![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=for-the-badge) [![Build Status](https://img.shields.io/travis/k4ustu3h/gitfolio?style=for-the-badge)](https://travis-ci.org/k4ustu3h/gitfolio) [![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=for-the-badge)](https://github.com/prettier/prettier) [![Dependency Status](https://img.shields.io/david/k4ustu3h/gitfolio?style=for-the-badge)](https://david-dm.org/k4ustu3h/gitfolio) [![devDependencies Status](https://img.shields.io/david/dev/k4ustu3h/gitfolio?style=for-the-badge)](https://david-dm.org/k4ustu3h/gitfolio?type=dev) ![Snyk Vulnerabilities for GitHub Repo](https://img.shields.io/snyk/vulnerabilities/github/k4ustu3h/gitfolio?style=for-the-badge) + +### personal website + blog for every github user + +Gitfolio will help you get started with a portfolio website where you could showcase your work + a blog that will help you spread your ideas into real world. + +--- + +Check out this [live demo](https://k4ustu3h.cf) to see gitfolio in action. + +--- + +# Getting Started + +### Let's Install + +Install gitfolio + +```sh +➜ ~ git clone https://github.com/k4ustu3h/gitfolio.git +➜ ~ cd gitfolio +➜ ~ npm install -g +``` + +### Let's Build + +Using the UI + +```sh +➜ ~ gitfolio ui +``` + +> Tip: You can use ui to create new blogs and for updating your folio too. + +or + +```sh +➜ ~ gitfolio build +``` + +`` is your username on github. This will build your website using your GitHub username and put it in the `/dist` folder. + +To run your website use `run` command, Default port is 3000 + +```sh +➜ ~ gitfolio run -p [port] +``` + +🎉 Congrats, you just made yourself a personal website! + +--- + +### Let's Customize + +#### Forks + +To include forks on your personal website just provide `-f` or `--fork` argument while building + +```sh +➜ ~ gitfolio build -f +``` + +#### Sorting Repos + +To sort repos provide `--sort [sortBy]` argument while building. Where `[sortBy]` can be `star`, `created`, `updated`, `pushed`,`full_name`. Default: `created` + +```sh +➜ ~ gitfolio build --sort star +``` + +#### Ordering Repos + +To order the sorted repos provide `--order [orderBy]` argument while building. Where `[orderBy]` can be `asc` or `desc`. Default: `asc` + +```sh +➜ ~ gitfolio build --sort star --order desc +``` + +#### Customize Themes + +Themes are specified using the `--theme [theme-name]` flag when running the `build` command. The available themes are + +- `light` +- `dark` + +> TODO: Add more themes + +For example, the following command will build the website with the dark theme + +```sh +➜ ~ gitfolio build --theme dark +``` + +#### Customize background image + +To customize the background image just provide `--background [url]` argument while building + +```sh +➜ ~ gitfolio build --background https://images.unsplash.com/photo-1557277770-baf0ca74f908?w=1634 +``` + +You could also add in your custom CSS inside `index.css` to give it a more personal feel. + +#### Add Social Media links on your profile + +gitfolio supports adding the follwing Social links + +- Codepen `-c, --codepen ` +- Dev.to `-d, --dev ` +- Dribbble `-D, --dribbble ` +- Email `-e, --email ` +- Facebook `-f, --facebook ` +- Instagram `-i, --instagram ` +- Keybase `-k, --keybase ` +- Reddit `-r, --reddit ` +- Telegram `-T, --telegram ` +- Twitter `-w, --twitter ` + +```sh +➜ ~ gitfolio build --twitter --dribbble +``` + +--- + +### Let's Publish + +Head over to GitHub and create a new repository named `username.github.io`, where username is your username. Push the files inside`/dist` folder to repo you just created. + +Go To `username.github.io` your site should be up!! + +--- + +### Updating + +To update your info, simply run + +```sh +➜ ~ gitfolio update +``` + +or use the `Update` options in gitfolio's UI + +This will update your info and your repository info. + +To Update background or theme you need to run `build` command again. + +--- + +### License + +![License](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=for-the-badge) + +--- + +## Acknowledgments + +- Hat tip to anyone who's code was used +- The original [gitfolio](https://github.com/imfunniee/gitfolio) made by [@imfunnie](https://github.com/imfunniee/) From d96308f1b3958672a7b684f6df247f5dc4f763c3 Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Tue, 28 Jan 2020 22:40:31 +0530 Subject: [PATCH 115/163] Change footer credit and fix some files --- assets/index.css | 171 +++++++++++++++++++++++----------------------- assets/index.html | 7 +- bin/gitfolio.js | 2 +- 3 files changed, 92 insertions(+), 88 deletions(-) diff --git a/assets/index.css b/assets/index.css index b2b9d90..a0c5455 100644 --- a/assets/index.css +++ b/assets/index.css @@ -1,108 +1,109 @@ body { - margin: 0%; - padding: 0%; - width: 100vw; + align-items: center; background: var(--bg-color); color: var(--text-color); + font-family: "Poppins", sans-serif; + margin: 0%; max-width: 100vw; overflow-x: hidden; - align-items: center; - font-family: "Poppins", sans-serif; + padding: 0%; + width: 100vw; } #profile { - width: 24vw; - padding: 4vh 3vw; - height: 92vh; + background: var(--background-image) center center; + background-repeat: no-repeat; + background-size: cover !important; + color: #fff !important; display: flex; flex-direction: column; + height: 92vh; justify-content: center; - text-align: left; - background: var(--background-image) center center; - background-size: cover !important; - background-repeat: no-repeat; + padding: 4vh 3vw; position: fixed; - color: #fff !important; + text-align: left; + width: 24vw; } #display { - width: 64vw; - padding: 4vh 3vw; - height: 92vh; display: inline-block; + height: 92vh; + padding: 4vh 3vw; padding-left: 33vw; + width: 64vw; + .; } #display h1 { - font-size: 50px; color: var(--text-color); - font-weight: bold; font-family: "Asap", sans-serif; + font-size: 50px; + font-weight: bold; } .emoji { - width: 18px; height: 18px; + width: 18px; } #background_overlay { - width: 100vw; height: 55vh; - position: absolute; - z-index: -1; - top: 0; left: 0; + position: absolute; + top: 0; + width: 100vw; + z-index: -1; } #background { - width: 100vw; - height: 55vh; - background-size: cover !important; background-repeat: no-repeat !important; - position: absolute; - z-index: -2; - top: 0; + background-size: cover !important; + height: 55vh; left: 0; + position: absolute; + top: 0; + width: 100vw; + z-index: -2; } #header { - width: 63vw; - text-align: right; padding: 3vh 0px; position: absolute; + text-align: right; + width: 63vw; } #header a { color: var(--text-color); - text-decoration: none; - margin-left: 4vw; font-weight: bold; + margin-left: 4vw; + text-decoration: none; } #footer { - width: 100%; padding: 8vh 0px; text-align: center; + width: 100%; } #footer a { color: var(--text-color) !important; - text-decoration: none; font-family: "Poppins", sans-serif; font-weight: bold; + text-decoration: none; } #profile_img { - width: 180px; - height: 180px; - background: var(--gradient); - transition: background 0.5s ease; - background-size: 300% 300%; - animation: grad 8s ease infinite; -webkit-background-clip: text; - font-size: 128px; - font-family: "Asap Condensed", sans-serif; -webkit-text-fill-color: transparent; + animation: grad 8s ease infinite; + background: var(--gradient); + background-size: 300% 300%; + font-family: "Asap Condensed", sans-serif; + font-size: 128px; + height: 180px; + transition: background 0.5s ease; + width: 180px; } @keyframes grad { @@ -127,39 +128,39 @@ body { } #username { + color: white; font-family: "Asap Condensed", sans-serif; font-size: 18px; - color: white; } #username span { - font-size: 24px; font-family: "Asap Condensed", sans-serif; + font-size: 24px; } .console-underscore { display: inline-block; + left: 10px; position: relative; top: -0.14em; - left: 10px; } #userbio { - font-size: 26px; font-family: "Asap", sans-serif; + font-size: 26px; width: 100%; } #about { - font-size: 18px; font-family: "Asap", sans-serif; + font-size: 18px; } #about a, #username a { color: #fff !important; - text-decoration: none; font-weight: bold; + text-decoration: none; } #about a:hover, @@ -168,8 +169,8 @@ body { } #about span { - margin: 1vh 0px; display: block; + margin: 1vh 0px; } #about span i { @@ -192,30 +193,30 @@ body { } .projects a { + display: flex; + text-decoration: none; /* 30px is the gutter size in magic grid */ width: calc(49% - 30px); /* 49% avoids a weird single column on some wide screens */ - display: flex; - text-decoration: none; } .projects section { - width: 100%; - padding: 2.5vh 5%; - margin: 1vh 0px; - display: inline-block; border-radius: 5px; - color: var(--text-color); border: 1px solid rgb(0, 0, 0, 0.08); box-shadow: 0px 0px 0px rgb(0, 0, 0, 0); - transition: 0.4s ease-in-out; + color: var(--text-color); + display: inline-block; + margin: 1vh 0px; + padding: 2.5vh 5%; transform: scale(1); + transition: 0.4s ease-in-out; + width: 100%; } .projects section:hover { - cursor: pointer; border: 1px solid rgb(0, 0, 0, 0); box-shadow: 0px 15px 35px rgb(0, 0, 0, 0.06); + cursor: pointer; transform: scale(1.03); } @@ -228,22 +229,22 @@ body { } .about_section { - font-size: 18px; font-family: "Asap", sans-serif; - margin: 2vh 0px; + font-size: 18px; font-weight: bold; + margin: 2vh 0px; word-wrap: break-word; } .bottom_section { - margin: 1vh 0px; font-size: 14px; + margin: 1vh 0px; word-wrap: break-word; } .bottom_section span { - margin-right: 20px; font-weight: bold; + margin-right: 20px; } .bottom_section span i { @@ -252,14 +253,14 @@ body { .socials { color: #fff; - text-decoration: none; margin: 3vh 0px !important; + text-decoration: none; } .socials span { display: inline-block !important; - margin-right: 2vw !important; font-weight: normal !important; + margin-right: 2vw !important; } .socials span a { @@ -267,37 +268,37 @@ body { } ::selection { - color: var(--bg-color); background: var(--text-color); + color: var(--bg-color); } @media (max-width: 800px) { #profile { - width: 90vw; - padding: 4vh 5vw; height: 60vh; - text-align: center; + padding: 4vh 5vw; position: relative; + text-align: center; + width: 90vw; } #display { - width: 90vw; - padding: 4vh 5vw; - height: auto; display: inline-block; + height: auto; padding-left: 5vw; + padding: 4vh 5vw; + width: 90vw; } #profile_img { - margin: 0px auto !important; - background: var(--gradient); - transition: background 0.5s ease; - background-size: 300% 300%; - animation: grad 8s ease infinite; -webkit-background-clip: text; - font-size: 128px; - font-family: "Asap Condensed", sans-serif; -webkit-text-fill-color: transparent; + animation: grad 8s ease infinite; + background: var(--gradient); + background-size: 300% 300%; + font-family: "Asap Condensed", sans-serif; + font-size: 128px; + margin: 0px auto !important; + transition: background 0.5s ease; } @keyframes grad { @@ -331,8 +332,8 @@ body { } ::-webkit-scrollbar { - width: 5px; height: 5px; + width: 5px; } ::-webkit-scrollbar-track { @@ -369,9 +370,9 @@ body { } .dropdown-menu .mdi::before { + left: -8px; position: relative; top: 4px; - left: -8px; } .nav .mdi::before { @@ -380,9 +381,9 @@ body { } .navbar .navbar-toggle .mdi::before { + color: #fff; position: relative; top: 4px; - color: #fff; } .breadcrumb .mdi::before { @@ -399,9 +400,9 @@ body { } .alert .mdi::before { + margin-right: 2px; position: relative; top: 4px; - margin-right: 2px; } .input-group-addon .mdi::before { @@ -410,13 +411,13 @@ body { } .navbar-brand .mdi::before { + margin-right: 2px; position: relative; top: 2px; - margin-right: 2px; } .list-group-item .mdi::before { + left: -3px; position: relative; top: 3px; - left: -3px; } diff --git a/assets/index.html b/assets/index.html index 829f7a2..6232389 100644 --- a/assets/index.html +++ b/assets/index.html @@ -44,8 +44,11 @@
diff --git a/bin/gitfolio.js b/bin/gitfolio.js index 85ab409..6ecc1d2 100755 --- a/bin/gitfolio.js +++ b/bin/gitfolio.js @@ -29,7 +29,7 @@ program .option("-c, --codepen [username]", "specify codepen username") .option("-d, --dev [username]", "specify dev username") .option("-D, --dribbble [username]", "specify dribbble username") - .option("-e, --email [username]", "specify email") + .option("-e, --email [email]", "specify email") .option("-f, --facebook [username]", "specify facebook username") .option("-i, --instagram [username]", "specify instagram username") .option("-k, --keybase [username]", "specify keybase username") From e513201a43c7809d905b0037fedbf68e7ee87fb7 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2020 08:16:53 +0000 Subject: [PATCH 116/163] Bump got from 10.2.2 to 10.4.0 Bumps [got](https://github.com/sindresorhus/got) from 10.2.2 to 10.4.0. - [Release notes](https://github.com/sindresorhus/got/releases) - [Commits](https://github.com/sindresorhus/got/compare/v10.2.2...v10.4.0) Signed-off-by: dependabot-preview[bot] --- package-lock.json | 58 +++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 894f147..0d97ed2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -572,22 +572,22 @@ "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, "cacheable-lookup": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-0.2.1.tgz", - "integrity": "sha512-BQ8MRjxJASEq2q+w0SusPU3B054gS278K8sj58QCLMZIso5qG05+MdCdmXxuyVlfvI8h4bPsNOavVUauVCGxrg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-1.0.0.tgz", + "integrity": "sha512-Te7MkBWBEPUdLjFWLoIu61osWKjrvBdBrSxEso6T9iGLTDPhcA2PI6J++lF/Hmqi5HtZmkKN3q/C7gwa+U/EUg==", "requires": { - "keyv": "^3.1.0" + "keyv": "^4.0.0" } }, "cacheable-request": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.0.tgz", - "integrity": "sha512-UVG4gMn3WjnAeFBBx7RFoprgOANIAkMwN5Dta6ONmfSwrCxfm0Ip7g0mIBxIRJZX9aDsoID0Ry3dU5Pr0csKKA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", + "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", "requires": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", + "keyv": "^4.0.0", "lowercase-keys": "^2.0.0", "normalize-url": "^4.1.0", "responselike": "^2.0.0" @@ -919,9 +919,9 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, "defer-to-connect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.1.tgz", - "integrity": "sha512-J7thop4u3mRTkYRQ+Vpfwy2G5Ehoy82I14+14W4YMDLKdWloI9gSzRbV30s/NckQGVJtPkWNcW4oMAUigTdqiQ==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, "degenerator": { "version": "1.0.4", @@ -1540,15 +1540,15 @@ } }, "got": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/got/-/got-10.2.2.tgz", - "integrity": "sha512-QibZN13xHH/mc7H5uuU2xq28xxs8moEPsJrW9AQQX0jAV4DkGdllHDVE9cxw1nntIPFk8xzzOrgJZBg194AWrg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/got/-/got-10.4.0.tgz", + "integrity": "sha512-yHxq0LgdLFmJcrl27wEOIvZaHbgtn1DYpYUUX/kovLZoQ8q+QwJH+i9zkldDxGUawu1cUsgNMp8Xxm5yKT2UyQ==", "requires": { "@sindresorhus/is": "^1.0.0", "@szmarczak/http-timer": "^4.0.0", "@types/cacheable-request": "^6.0.1", - "cacheable-lookup": "^0.2.1", - "cacheable-request": "^7.0.0", + "cacheable-lookup": "^1.0.0", + "cacheable-request": "^7.0.1", "decompress-response": "^5.0.0", "duplexer3": "^0.1.4", "get-stream": "^5.0.0", @@ -1557,7 +1557,14 @@ "p-cancelable": "^2.0.0", "responselike": "^2.0.0", "to-readable-stream": "^2.0.0", - "type-fest": "^0.8.0" + "type-fest": "^0.9.0" + }, + "dependencies": { + "type-fest": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.9.0.tgz", + "integrity": "sha512-j55pzONIdg7rdtJTRZPKIbV0FosUqYdhHK1aAYJIrUvejv1VVyBokrILE8KQDT4emW/1Ev9tx+yZG+AxuSBMmA==" + } } }, "graceful-fs": { @@ -1955,9 +1962,9 @@ } }, "json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" }, "json-schema": { "version": "0.2.3", @@ -2003,11 +2010,11 @@ } }, "keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.0.tgz", + "integrity": "sha512-U7ioE8AimvRVLfw4LffyOIRhL2xVgmE8T22L6i0BucSnBUyv4w+I7VN/zVZwRKHOI6ZRUcdMdWHQ8KSUvGpEog==", "requires": { - "json-buffer": "3.0.0" + "json-buffer": "3.0.1" } }, "latest-version": { @@ -4057,7 +4064,8 @@ "type-fest": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true }, "type-is": { "version": "1.6.18", From 17f390ed219677088304fbe34ff0106bfc3ffa91 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2020 12:08:40 +0000 Subject: [PATCH 117/163] Bump snyk from 1.286.0 to 1.290.0 Bumps [snyk](https://github.com/snyk/snyk) from 1.286.0 to 1.290.0. - [Release notes](https://github.com/snyk/snyk/releases) - [Changelog](https://github.com/snyk/snyk/blob/master/.releaserc) - [Commits](https://github.com/snyk/snyk/compare/v1.286.0...v1.290.0) Signed-off-by: dependabot-preview[bot] --- package-lock.json | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/package-lock.json b/package-lock.json index 894f147..30ceddd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2480,9 +2480,9 @@ } }, "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" }, "parent-module": { "version": "1.0.1", @@ -3033,9 +3033,9 @@ "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==" }, "snyk": { - "version": "1.286.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.286.0.tgz", - "integrity": "sha512-c9Qov7xvUnBC0r/kQR/wXyCQWFH+J8aJU5002QTHKQ+IkU/BMG+BdW9pFw/VLA7Pzy6ObjJqGnqRDHHwruT6Vw==", + "version": "1.290.0", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.290.0.tgz", + "integrity": "sha512-xQSgv6d+sEf9s1gGWPk8VzSXztn+f3oVYaOeQ6s5i6frI6+WB+8x+OMHdAV3zrVmDHGSTrtuBlOx599ZXKsyCw==", "requires": { "@snyk/cli-interface": "2.3.0", "@snyk/dep-graph": "1.13.1", @@ -3065,12 +3065,12 @@ "snyk-go-plugin": "1.11.1", "snyk-gradle-plugin": "3.2.4", "snyk-module": "1.9.1", - "snyk-mvn-plugin": "2.7.0", + "snyk-mvn-plugin": "2.8.0", "snyk-nodejs-lockfile-parser": "1.17.0", "snyk-nuget-plugin": "1.16.0", "snyk-php-plugin": "1.7.0", "snyk-policy": "1.13.5", - "snyk-python-plugin": "1.16.0", + "snyk-python-plugin": "1.17.0", "snyk-resolve": "1.0.1", "snyk-resolve-deps": "4.4.0", "snyk-sbt-plugin": "2.11.0", @@ -3339,11 +3339,11 @@ } }, "snyk-mvn-plugin": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.7.0.tgz", - "integrity": "sha512-DLBt+6ZvtoleXE7Si3wAa6gdPSWsXdIQEY6m2zW2InN9WiaRwIEKMCY822eFmRPZVNNmZNRUIeQsoHZwv/slqQ==", + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/snyk-mvn-plugin/-/snyk-mvn-plugin-2.8.0.tgz", + "integrity": "sha512-Jt6lsVOFOYj7rp0H2IWz/BZS9xxaO0jEFTAoafLCocJIWWuGhPpVocCqmh/hrYAdKY9gS4gVOViMJ3EvcC1r1Q==", "requires": { - "@snyk/cli-interface": "2.2.0", + "@snyk/cli-interface": "2.3.1", "debug": "^4.1.1", "lodash": "^4.17.15", "needle": "^2.4.0", @@ -3352,9 +3352,9 @@ }, "dependencies": { "@snyk/cli-interface": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.2.0.tgz", - "integrity": "sha512-sA7V2JhgqJB9z5uYotgQc5iNDv//y+Mdm39rANxmFjtZMSYJZHkP80arzPjw1mB5ni/sWec7ieYUUFeySZBfVg==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@snyk/cli-interface/-/cli-interface-2.3.1.tgz", + "integrity": "sha512-JZvsmhDXSyjv1dkc12lPI3tNTNYlIaOiIQMYFg2RgqF3QmWjTyBUgRZcF7LoKyufHtS4dIudM6k1aHBpSaDrhw==", "requires": { "tslib": "^1.9.3" } @@ -3495,9 +3495,9 @@ } }, "snyk-python-plugin": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.16.0.tgz", - "integrity": "sha512-IA53xOcy1s881tbIrIXNqIuCNozd4PAVWN8oF0xgRn2NQbq0e7EWt7kFPJbmZodpLCDpXaKKqV2MHbXruFIsrw==", + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/snyk-python-plugin/-/snyk-python-plugin-1.17.0.tgz", + "integrity": "sha512-EKdVOUlvhiVpXA5TeW8vyxYVqbITAfT+2AbL2ZRiiUNLP5ae+WiNYaPy7aB5HAS9IKBKih+IH8Ag65Xu1IYSYA==", "requires": { "@snyk/cli-interface": "^2.0.3", "tmp": "0.0.33" From 188b7699de42463a98da7860597755cb5de2149c Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Fri, 31 Jan 2020 22:30:41 +0530 Subject: [PATCH 118/163] Update index.css --- assets/index.css | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/assets/index.css b/assets/index.css index a0c5455..2ad9fac 100644 --- a/assets/index.css +++ b/assets/index.css @@ -94,15 +94,16 @@ body { } #profile_img { - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - animation: grad 8s ease infinite; background: var(--gradient); - background-size: 300% 300%; - font-family: "Asap Condensed", sans-serif; - font-size: 128px; - height: 180px; transition: background 0.5s ease; + background-size: 300% 300%; + animation: grad 8s ease infinite; + -webkit-background-clip: text; + font-size: 128px; + font-family: "Asap Condensed", sans-serif; + -webkit-text-fill-color: transparent; + + height: 180px; width: 180px; } @@ -290,15 +291,15 @@ body { } #profile_img { - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - animation: grad 8s ease infinite; - background: var(--gradient); - background-size: 300% 300%; - font-family: "Asap Condensed", sans-serif; - font-size: 128px; margin: 0px auto !important; + background: var(--gradient); transition: background 0.5s ease; + background-size: 300% 300%; + animation: grad 8s ease infinite; + -webkit-background-clip: text; + font-size: 128px; + font-family: "Asap Condensed", sans-serif; + -webkit-text-fill-color: transparent; } @keyframes grad { From 6cfe38774fa0c9f6625d51521a5d463156678416 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2020 17:23:00 +0000 Subject: [PATCH 119/163] Bump snyk from 1.290.0 to 1.290.1 Bumps [snyk](https://github.com/snyk/snyk) from 1.290.0 to 1.290.1. - [Release notes](https://github.com/snyk/snyk/releases) - [Changelog](https://github.com/snyk/snyk/blob/master/.releaserc) - [Commits](https://github.com/snyk/snyk/compare/v1.290.0...v1.290.1) Signed-off-by: dependabot-preview[bot] --- package-lock.json | 252 +++++++++++++++++++++------------------------- 1 file changed, 112 insertions(+), 140 deletions(-) diff --git a/package-lock.json b/package-lock.json index 30ceddd..bd1834a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,6 +59,19 @@ "lodash": "^4.17.13" } }, + "@snyk/configstore": { + "version": "3.2.0-rc1", + "resolved": "https://registry.npmjs.org/@snyk/configstore/-/configstore-3.2.0-rc1.tgz", + "integrity": "sha512-CV3QggFY8BY3u8PdSSlUGLibqbqCG1zJRmGM2DhnhcxQDRRPTGTP//l7vJphOVsUP1Oe23+UQsj7KRWpRUZiqg==", + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, "@snyk/dep-graph": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/@snyk/dep-graph/-/dep-graph-1.13.1.tgz", @@ -107,6 +120,23 @@ } } }, + "@snyk/update-notifier": { + "version": "2.5.1-rc1", + "resolved": "https://registry.npmjs.org/@snyk/update-notifier/-/update-notifier-2.5.1-rc1.tgz", + "integrity": "sha512-cIK+dMUsXBl4K9AKg5EYhdxWts0tAUvyu1WePse+tjzX4E9poME/wojkDrWQl1/SKLlhA559ftiOODmVa1adCg==", + "requires": { + "@snyk/configstore": "3.2.0-rc1", + "boxen": "^1.2.1", + "chalk": "^2.0.1", + "import-lazy": "^2.1.0", + "is-ci": "^1.0.10", + "is-installed-globally": "^0.1.0", + "is-npm": "^1.0.0", + "latest-version": "^3.0.0", + "semver-diff": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, "@szmarczak/http-timer": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.0.tgz", @@ -518,11 +548,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, - "camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" - }, "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", @@ -600,9 +625,9 @@ "dev": true }, "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=" }, "capture-stack-trace": { "version": "1.0.1", @@ -766,19 +791,6 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "configstore": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", - "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -979,11 +991,11 @@ } }, "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", "requires": { - "is-obj": "^1.0.0" + "is-obj": "^2.0.0" } }, "dotnet-deps-parser": { @@ -1237,12 +1249,12 @@ } }, "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -1250,13 +1262,20 @@ "strip-eof": "^1.0.0" }, "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "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=", "requires": { - "pump": "^3.0.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } + }, + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" } } }, @@ -1829,9 +1848,9 @@ "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=" }, "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" }, "is-path-inside": { "version": "1.0.1", @@ -2094,11 +2113,12 @@ "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "requires": { - "yallist": "^3.0.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "macos-release": { @@ -2637,10 +2657,23 @@ "ms": "^2.1.1" } }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "requires": { + "yallist": "^3.0.2" + } + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" } } }, @@ -3033,21 +3066,22 @@ "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==" }, "snyk": { - "version": "1.290.0", - "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.290.0.tgz", - "integrity": "sha512-xQSgv6d+sEf9s1gGWPk8VzSXztn+f3oVYaOeQ6s5i6frI6+WB+8x+OMHdAV3zrVmDHGSTrtuBlOx599ZXKsyCw==", + "version": "1.290.1", + "resolved": "https://registry.npmjs.org/snyk/-/snyk-1.290.1.tgz", + "integrity": "sha512-8fB+b+trI5a6mU5cAKXOU2RG15xxr++4zYxkfNpkFkhbUqkcLsJtXD4H7Pcs6vXcOvoiEafyziPTpYurPFDXBQ==", "requires": { "@snyk/cli-interface": "2.3.0", + "@snyk/configstore": "^3.2.0-rc1", "@snyk/dep-graph": "1.13.1", "@snyk/gemfile": "1.2.0", "@snyk/snyk-cocoapods-plugin": "2.0.1", + "@snyk/update-notifier": "^2.5.1-rc1", "@types/agent-base": "^4.2.0", "@types/restify": "^4.3.6", "abbrev": "^1.1.1", "ansi-escapes": "3.2.0", "chalk": "^2.4.2", "cli-spinner": "0.2.10", - "configstore": "^3.1.2", "debug": "^3.1.0", "diff": "^4.0.1", "git-url-parse": "11.1.2", @@ -3080,7 +3114,6 @@ "strip-ansi": "^5.2.0", "tempfile": "^2.0.0", "then-fs": "^2.0.0", - "update-notifier": "^2.5.0", "uuid": "^3.3.2", "wrap-ansi": "^5.1.0" }, @@ -3564,15 +3597,6 @@ "ms": "^2.1.1" } }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3582,11 +3606,6 @@ "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } }, @@ -3652,24 +3671,10 @@ "ms": "^2.1.1" } }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" } } }, @@ -3906,51 +3911,6 @@ "integrity": "sha1-RYuDiH8oj8Vtb/+/rSYuJmOO+mk=", "requires": { "execa": "^0.7.0" - }, - "dependencies": { - "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=", - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - } } }, "text-table": { @@ -4104,23 +4064,6 @@ "resolved": "https://registry.npmjs.org/unzip-response/-/unzip-response-2.0.1.tgz", "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=" }, - "update-notifier": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-2.5.0.tgz", - "integrity": "sha512-gwMdhgJHGuj/+wHJJs9e6PcCszpxR1b236igrOkUofGhqJuG+amlIKwApH1IW1WWl7ovZxsX49lMBWLxSdm5Dw==", - "requires": { - "boxen": "^1.2.1", - "chalk": "^2.0.1", - "configstore": "^3.0.0", - "import-lazy": "^2.1.0", - "is-ci": "^1.0.10", - "is-installed-globally": "^0.1.0", - "is-npm": "^1.0.0", - "latest-version": "^3.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", @@ -4280,6 +4223,30 @@ "integrity": "sha512-QTlz2hKLrdqukrsapKsINzqMgOUpQW268eJ0OaOpJN32h272waxR9fkB9VoWRtK7uKHG5EHJcTXQBD8XZVJkFA==", "requires": { "execa": "^1.0.0" + }, + "dependencies": { + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + } } }, "word-wrap": { @@ -4403,9 +4370,9 @@ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yargs": { "version": "3.32.0", @@ -4426,6 +4393,11 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", From 97b61562c389952cf9d3408e1374a87570667f24 Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Fri, 31 Jan 2020 17:29:01 +0000 Subject: [PATCH 120/163] Bump handlebars from 4.5.3 to 4.7.2 Bumps [handlebars](https://github.com/wycats/handlebars.js) from 4.5.3 to 4.7.2. - [Release notes](https://github.com/wycats/handlebars.js/releases) - [Changelog](https://github.com/wycats/handlebars.js/blob/v4.7.2/release-notes.md) - [Commits](https://github.com/wycats/handlebars.js/compare/v4.5.3...v4.7.2) Signed-off-by: dependabot-preview[bot] --- package-lock.json | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 98a4e32..5ce3e5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1595,9 +1595,9 @@ } }, "handlebars": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", - "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.2.tgz", + "integrity": "sha512-4PwqDL2laXtTWZghzzCtunQUTLbo31pcCJrd/B/9JP8XbhVzpS5ZXuKqlOzsd1rtcaLo4KqAn8nl8mkknS4MHw==", "requires": { "neo-async": "^2.6.0", "optimist": "^0.6.1", @@ -4045,21 +4045,13 @@ } }, "uglify-js": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.1.tgz", - "integrity": "sha512-pnOF7jY82wdIhATVn87uUY/FHU+MDUdPLkmGFvGoclQmeu229eTkbG5gjGGBi3R7UuYYSEeYXY/TTY5j2aym2g==", + "version": "3.7.6", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.6.tgz", + "integrity": "sha512-yYqjArOYSxvqeeiYH2VGjZOqq6SVmhxzaPjJC1W2F9e+bqvFL9QXQ2osQuKUFjM2hGjKG2YclQnRKWQSt/nOTQ==", "optional": true, "requires": { "commander": "~2.20.3", "source-map": "~0.6.1" - }, - "dependencies": { - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "optional": true - } } }, "unique-string": { From ef1da752cdf830f087b48cebd0d3550cf1b26121 Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Sat, 1 Feb 2020 21:42:41 +0530 Subject: [PATCH 121/163] Update README.md --- README.md | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index ad0ff24..9bb7786 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,18 @@ - - -# Gitfolio - -![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=for-the-badge) [![Build Status](https://img.shields.io/travis/k4ustu3h/gitfolio?style=for-the-badge)](https://travis-ci.org/k4ustu3h/gitfolio) [![Code Style: Prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=for-the-badge)](https://github.com/prettier/prettier) [![Dependency Status](https://img.shields.io/david/k4ustu3h/gitfolio?style=for-the-badge)](https://david-dm.org/k4ustu3h/gitfolio) [![devDependencies Status](https://img.shields.io/david/dev/k4ustu3h/gitfolio?style=for-the-badge)](https://david-dm.org/k4ustu3h/gitfolio?type=dev) -![Snyk Vulnerabilities for GitHub Repo](https://img.shields.io/snyk/vulnerabilities/github/k4ustu3h/gitfolio?style=for-the-badge) +[![GitHub release](https://img.shields.io/github/release/imfunniee/gitfolio.svg?style=for-the-badge)](https://github.com/imfunniee/gitfolio/releases/latest) +[![Snyk Vulnerabilities for GitHub Repo](https://img.shields.io/snyk/vulnerabilities/github/k4ustu3h/gitfolio?style=for-the-badge)](https://snyk.io/test/github/k4ustu3h/gitfolio?targetFile=package.json) + +# Gitfolio ### personal website + blog for every github user Gitfolio will help you get started with a portfolio website where you could showcase your work + a blog that will help you spread your ideas into real world. + + --- Check out this [live demo](https://k4ustu3h.cf) to see gitfolio in action. @@ -157,11 +157,19 @@ To Update background or theme you need to run `build` command again. ### License -![License](https://img.shields.io/github/license/imfunniee/gitfolio.svg?style=for-the-badge) +[![License](https://img.shields.io/github/license/k4ustu3h/gitfolio.svg?style=for-the-badge)](https://github.com/k4ustu3h/gitfolio/blob/master/LICENSE) --- ## Acknowledgments - Hat tip to anyone who's code was used -- The original [gitfolio](https://github.com/imfunniee/gitfolio) made by [@imfunnie](https://github.com/imfunniee/) +- The original [gitfolio](https://github.com/imfunniee/gitfolio) made by [@imfunniee](https://github.com/imfunniee/) + +--- + +[![JavaScript](https://forthebadge.com/images/badges/made-with-javascript.svg)](https://github.com/topics/javascript) +[![HTML](https://forthebadge.com/images/badges/uses-html.svg)](https://github.com/topics/html) +[![CSS](https://forthebadge.com/images/badges/uses-css.svg)](https://github.com/topics/css) +[![h9rbs.js](https://forthebadge.com/images/badges/uses-h9rbs.svg)](https://html9responsiveboilerstrapjs.com/) +[![Electricity](https://forthebadge.com/images/badges/powered-by-electricity.svg)](https://forthebadge.com) From 24ae2e23568d4cd707cd865dd1bbe0fee04c9b6e Mon Sep 17 00:00:00 2001 From: "dependabot-preview[bot]" <27856297+dependabot-preview[bot]@users.noreply.github.com> Date: Sat, 1 Feb 2020 22:47:45 +0000 Subject: [PATCH 122/163] Bump jsdom from 16.0.1 to 16.1.0 Bumps [jsdom](https://github.com/jsdom/jsdom) from 16.0.1 to 16.1.0. - [Release notes](https://github.com/jsdom/jsdom/releases) - [Changelog](https://github.com/jsdom/jsdom/blob/master/Changelog.md) - [Commits](https://github.com/jsdom/jsdom/compare/16.0.1...16.1.0) Signed-off-by: dependabot-preview[bot] --- package-lock.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index efab1d4..41d58db 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1943,15 +1943,15 @@ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsdom": { - "version": "16.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.0.1.tgz", - "integrity": "sha512-wKJe/APzq+ak9i+2ybWE20lDIhF9AkGKSZf8UsjPN39acatFB6oA7K397kQvHVikds0yQono2h6J7UjbPtPOWw==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.1.0.tgz", + "integrity": "sha512-kpIcNAuZYc/L17WADOOHslz/q5+3SipP/iRb3j6zd1zQ6pFJubLi/VCdD3NqBpj/IKKK4YXny1vv44rbEUSGFg==", "requires": { "abab": "^2.0.3", "acorn": "^7.1.0", "acorn-globals": "^4.3.2", "cssom": "^0.4.4", - "cssstyle": "^2.0.0", + "cssstyle": "^2.1.0", "data-urls": "^2.0.0", "decimal.js": "^10.2.0", "domexception": "^2.0.1", From 6a240bfed2144d9d96b5dc4b6bef068d77f043d1 Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Sun, 2 Feb 2020 22:43:00 +0530 Subject: [PATCH 123/163] Change font to Manrope --- assets/fonts/otf/Manrope-Bold.otf | Bin 0 -> 63156 bytes assets/fonts/otf/Manrope-Light.otf | Bin 0 -> 61876 bytes assets/fonts/otf/Manrope-Medium.otf | Bin 0 -> 61895 bytes assets/fonts/otf/Manrope-Regular.otf | Bin 0 -> 61804 bytes assets/fonts/otf/Manrope-SemiBold.otf | Bin 0 -> 61896 bytes assets/fonts/web/Manrope-Bold.woff2 | Bin 0 -> 39634 bytes assets/fonts/web/Manrope-Light.woff2 | Bin 0 -> 39164 bytes assets/fonts/web/Manrope-Medium.woff2 | Bin 0 -> 40063 bytes assets/fonts/web/Manrope-Regular.woff2 | Bin 0 -> 39288 bytes assets/fonts/web/Manrope-SemiBold.woff2 | Bin 0 -> 39784 bytes assets/index.css | 44 ++++++++++++++++++++++-- assets/index.html | 2 +- build.js | 25 ++++++++------ package-lock.json | 23 +++++++++++++ package.json | 1 + 15 files changed, 81 insertions(+), 14 deletions(-) create mode 100644 assets/fonts/otf/Manrope-Bold.otf create mode 100644 assets/fonts/otf/Manrope-Light.otf create mode 100644 assets/fonts/otf/Manrope-Medium.otf create mode 100644 assets/fonts/otf/Manrope-Regular.otf create mode 100644 assets/fonts/otf/Manrope-SemiBold.otf create mode 100644 assets/fonts/web/Manrope-Bold.woff2 create mode 100644 assets/fonts/web/Manrope-Light.woff2 create mode 100644 assets/fonts/web/Manrope-Medium.woff2 create mode 100644 assets/fonts/web/Manrope-Regular.woff2 create mode 100644 assets/fonts/web/Manrope-SemiBold.woff2 diff --git a/assets/fonts/otf/Manrope-Bold.otf b/assets/fonts/otf/Manrope-Bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..ea6e600080786a094dae4b83d5871e9345525948 GIT binary patch literal 63156 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 K!CCZ{fd2q~I6hVY literal 0 HcmV?d00001 diff --git a/assets/fonts/otf/Manrope-Light.otf b/assets/fonts/otf/Manrope-Light.otf new file mode 100644 index 0000000000000000000000000000000000000000..44429837c9b91d699a0078d74ab2475a870ba5d1 GIT binary patch literal 61876 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

tK9ScX z@;XFL=l@@A=L4i=QOEIT_u1VS?hoJvcSsJMXgA~}bKyyN8eN1ZIdnRRM5rioA<}u` z9bAqvqzo~{*h$2ggG9uTG0w#}h-hX+Mo45xM5JWKFb;!^A|cg{CHC3x^WN+G&NRi$ zjov(;eV^aE@AGGOf4jfmZ+9`pcZ%_Xfp%cxb-$qd<#ea$<#bAq%dzQ)(6pl!82!tO zVDvC5Wb;|sd{$bXO3PDed8M>G^A-M^mk_l)t^{08KOZf;k4V40G}}wFtEJgPlTG{$ zkOq5caE)}=OLuFeyFt2}lkN_a?v@ql?m%g6wY0WcT3aryEtl2~mc^ENXXUchY>|gi zDLo!6Tg~P@jA*M>N}C7ERx{G+!P4eI(&oy%ZxOu;D{USuZ7!EKJL$2{YjCu>ytKAP z`s$^rUOGBZI_mQ}8f~d6jU!(A=cIXM(m5}k%Sq>k7U`Uqo|Q?%YNTOax>YXSDwjQ! zd7$O8gse2IvdHJKMLtL7rIyPQvPC|JE%G_MG_OpW=cRdGnpYzm$V%tRq;pjoo4jI-{0m)yAy+fuI%@SERmy7DVgcs0OWiT&r5Msx_ zFKA`UW}~@NjaXT(LH(9h={c32Rq0t-jY03=ReDb4W>s!RY59+I| zEXAObj4=ylIn3#SM@rVgj@LTa9yF5wSaDiOQi0cXF{`t#Lbq>8?qpnkAo(`qY~T9W zdaaM0n$K_e&H2QaK9zh1dv6v|fi5D3-Pm#QdNCF<2tTcksKf-K5H}>ZGUk7ch~h(x z*;$U12*OA4&@RKD{6aE~=v^C8$Ysf@WL;scZHw00F3?)r)mm%2O>1orX{~KIpxVRC75MRIl0LM(P}(m}*^B`aq)=5v%`MUA2i z8k1(?GdCr7&@+DnOXz!ey;<3n6HU1YPxs2?8saxM6FFLl1@$1l@uuWQvuC$0Opl1i z#ZzK$q)WsB;t+ATSSyYe>&5YNV*VzvS)3wH6=#UE#8z>>xIpX@7mG{h%?6#2{9PRdYLL&+)^> zk>bVTC1SlePP|H-C{7kz#A)Kpwma{b?Qaw3ifv+tc(1rbTqdp*SBVdc>%@(1ch70_ zo5d~SHt|_;r?^{uQ9K~N+`j0p4*#0?x_Cl7CH_PFcVw{Q0CA8wR2(7J-rdpK9_qv~ z;y7`F*ete))5TfhT(Mp35|=FCa$&jnptxFmL|iX!5+4_z5VwoZiO-9BI`3?s8}^9@ z#lzwe@tF9gcv|cg&qn5)SSAkXTy%S9u3Ef693_qx$A}GLqu3-ii&Mm@;*8Ek3p#VN z#8z>>xIpX@`PXB}vs7Fmc8hDowc>__luzz4u}9o0J|pfBcZqw&{o*0VgqxRvA;06dBpN#%KCiLoT(sIF`P*A#l*nsC9_1CM`yW--|AOH zbF;K1pH9iATE&KSJXvL7@#U9frOSLp_KP@|$NiX_$kJ}UAHeyu`o)#(TWPj4*{QPB zKFr>f9rggbQQl1lrK8eu>9y&sv?E=XK9WA3?nw8iucy7P!i{ue-6S`|&38-OD!0jP zcYEAnchXy5?Jw~Y{Pn)o-|JWV9>2>U_NPM#BSL+c6lR3BaDP}6dcw}^S#tN~)B7op z&3rbwjpAlnTKpWjPJCEgm1lEebE}BrUPP&V96#?Se6d^b!ETL~J~0pGMPr-;A8a0$ z{(SRQ#W+l^8_Uq-R)|ZnGfi%>*d@t*(!*L9h_e3$FXk=g^Iuc?4A14*6BlK1zQ*Jx zaZHaT%Wh>`eB zDHidM@t~rQbpk$$7iEz|?PH%Gp1aqd5a zSW_Zn|5s=UnFjRTmwjTPF=Xv1%510$b%_b>`FhA?RpB;dGmB;ZtUrrvT8ZpLXhzml zB0J;{A!{s=Js&=atgb}1#q(C7wnVlzR3XcH-@?0jTDz|(ely>mSof}9St47K7zN17oms~qbB-6;X#m_8}wIEyTY5P1~zT|u(vgN+1ATy3D`-bA@cenY`$VL^( zjHBoA7ZgdXYxKmbd|b!ZcYWii1E2Ns*&VGL>Uw!rRx%dl;2y zIJIkbw8#8)tgCZlkrPRAwXuBruAjcn{m^ivg9=hhPwkK&L|&Fs@*g~Nie9F@DXqV7 zg;UuRr}RyIcT3l%^m!>7n9~0Ha@rQo53mx0v>r z^9S<_(!J)O*-83a^GEYb(ihDk^E~PA%%9A!NcXV=brPhiPh8e^@@l{A>knJZ!a7IPw>WzOSj)^uFMtjCRvGdwZR zgBCHiJQbf9nIq;E(qk^ccSx8 z3|?!mvp4XIfZnf3_LBd7cBsc^eTOT?k#ZqdeB0C|_Yj?Zh#AlL6la*1jd@tH#2LGM zb;imi&U#JM7-QqQAj`d~_1zhL_fA~b#P6d1SY{vorL$h0{nNY`&+L$R##0W{cd=(N z=9qX~jFC=e2_h95=biNVx=3PXQ9e|kd&IwrSt-4w&pXAHVjSm9@{0Jfh=%e)h=`tGaW(dSmf=TKKeOKK}?5m`+;-G7lMYkzU9 literal 0 HcmV?d00001 diff --git a/assets/fonts/otf/Manrope-Medium.otf b/assets/fonts/otf/Manrope-Medium.otf new file mode 100644 index 0000000000000000000000000000000000000000..c30459c625556564934424e6b4417a6573d8d2a7 GIT binary patch literal 61895 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
  • a*{2w7*r$E?GwdYn6bQ>4$wj!M&KUh4mw&%9PU-HygGxGL&I z<8e*?uHW8-TOwZKL0rLiw?yMA;g;zARaUVAUmgdy zLw6tX$VZPW;Xi8>1*g|cx~zt?+`e{@s`5R zP~ersT>YqZ^wD#Q-XL5*f%FDXYW`4VMari99fi8K4fE+W$0>!^_UXlQixKeuM5K*$=~RI1a5kP+ecH!iuWVA8l~bB9AW>5w(kIl;%NWg1#S=a@Knx2xpVLA zE%shw!-}HVuqzs|AsP#U6|uwuSYq!eDmD}Z3wBf##e!5dmRJ&viFp%^I!oq!`F=A8 zipJ#s{@?HWT-n{5ot>GTdCJT)PkCi$VgA}9_m~VasI{W@RpTql?8eS~)_U<@B&l$M zO185UZkRzz-gQgO*&ZfGv#AJx{j5O3xDC{CA-aN*9@bWZ;YOIBVwe`zMr)WZTvy{I zUP)^#)m~bfqUIRs4Pz!(hiOY%cV|ysC~oU1r@%BEw|EP!gHv z0qN7qcVmrLCBp=0oO+VdHc!nB*a@le8Z2_Wfip1kCHjmgS?yJDxF+t+OHGG-S zB^^2U$x-gzaV7)U?2y*Rm++r^)K?LTeJhnp@46$gVZ=?f3J?qescBe)PUCA(>i=#U zo*mx`9ezk>A7MJ)TcLC2;pc_-({hr|ACs7D$GoV#DMs3l#w=8dAi1QqKMOk@Yv%67728w*1XXqIV|eZMP-; zr(5eEZF~Ri)_FHMc-C`89d@Vh9njw7S&!s)+aX*}-ji_ojtNG+4%cZhDmCfZe2C@p zP|eM_i%E~oPp=MY)~d&#nhUMrAp>T~O%FV3N2;3j>E9^opYAYVcyFG7)sMEoXn}7J z-n|ULcW$PV2C4Y(*!#}B*hzum@3xiL%T#+VQ)sn+JFR5fxUjoGk4{~n&@!w`|9KBr ze}6%Czu?_$FQHu~Ny|1gjB+;&-YFZtd}qnd^S2Gu&Zk}G(pr;fU1!7U=Q6faJF|UA zwjH@d{^Eo7#X#j-FL|>H9fIEO%jIu7D`+q2oC)2GE4;Dq?afAxx7(Yg^vtqQ8JaW8 zBhWrPzRXx z(F=blfWW-9wE>kUNF%MDIRA<*7XGqNHt}K2Iz=AX!FCo*QP;EGcZ;oep5+gPtk>!n z1G_F|l3nP7_tqXYYD zHhS6|LUPehXY#&BHOxQpfNTriTMKtRj$}pcV#tge#R&)h_ig z{M0hCeaz6*;TJ+LFTUzbHbbcPJKZ9!B@G_I4yNuBQhdqd_AykOv$hPWH<~&>rH#!n z)6&u}Xb?onqZSh#te3``^^cw@qWTo7CNEG^02Xx3$f(6u60{hLy)Wn}$W5tpU0QFn zH8*S*cBwN-@ueQ5?$SrpX)SHwOgDERo25lvL%R>}J=CZD#FpVyTGHU=I9SF_D?_Uu zBHE^;t{KWE4WPvVEKE`mzQjtKhj+wXIc!WbbIX)lgn%B!0i9=04_`dZN}XnS z*P~9RTF1V;7hs_k=rPShxIiGgG-M{-1)?K)+AxRmljh8bTsG6{xoPb68>Slvu4iww zEZ?*_a-A7Kq~8;fqt?oLk?xj_6^&|yo=!G4>6b_ekx6S0S-y)-i+^Dz#cuY3T}c_A z=5TcZp-kJmL_=DVF14T1rdGr2+HEIv8)hXvNTYP7%9GqFThe0(jO~gQbmQ`nOG@{d zll-jYc-wdWzbLoNq#`=d4R$C|IV37m-20un6yy4DaOdi9W9g+>+dGkZ->{Fxs#Q6==OkXFbtGWT;o6Fy|JVscy`Kl0^wv zst4s+G&Lj|^v)Xzb%nOaWC8*Dtp4gGng_DgYC(;ejh!3J2p-klOiH>(Z(n_2&56yqtBC1acsCtq zt1s#QA~yd>pj}tFKSw6%=`f9d1osiJg{M*JBuYyr(x@9UEHuZ$7@kCRqET8p7EhZ= zFiMTq=&56x;-(hM?VbxZ1c3?E!Q%F8J9OIguVyI~8+eZE(bsZffab`d)IC?tX~`41 z^&Bv%t+i`6%&~uZc09UP9B$%!7NyTx6OqC2@ z+5&Rac$<^fuz4~(gm6q2H>d!jvPm2Vk2qTZ3~p_0C4Eb!$c`7=0HY4b8<;MV@c^~) z?%8VKFR*wnT!pZ8hP}f`9jNyvk$8yO3+3#$?R}P1RLV}i@TsZ1s*i1&YeARhy(AgvqeID(CFy_DRLM50i=(Ojcc373rzf zdn!Hb{s$oa&KHKj5>fC96PO=@=kDYyXZ(aG>`X`YzFS@;Dy#+{(DykAIc{aBhm&3ll^JLgM(DQaH;Ss7Tz)(#f&u+ zz%@`ZoQbpr{HD<75yeu20xFfR^ePzCCi`A3VC@|LMP#*pb! zB#rqE)5Jg9Qa?JK_+c&kR&}*aTA~z6w;m~pcOA)b@N(h1GcOXYgXMC)vWU}MD_NLE z7fM7}eIb_!=B$gOyguxXIze_>i|vlm*3Ypu3XeOF6tyGD*?@8yJSP%qOpL&TXPJp`p$!#QTj@e?vQVN~H_03M{1ft&~Vd{KTQQ#n|c`YK-##XjTS)oo%S}W9AK{AXFBeMaP z*<|(`Y&C}cq%6r;CU?br+>g1f5HH>$yE(`>sv+*-Sl-jGq{(9<=8v;>n9;jWJyZR2 z12SeXJ|3Wf%Z0LJm?nJH>WEclVgL`P?qsWR`lQHjr&#^g2E?8-rNr+$u*R}#=l+Pz zX5vmqL+-+b`tTd_bC~K+2N;j7-nBoisHooXBCJ)H3Ef9n;SR&_JdC*%c^L+uBCo@k zQ;`>8%&W-jFcA1xVel*Rb6BBck9#&z`Z!{#O?AXo3kGdw=v{>y9!`e);%$u}${CE@1&`wx7;oC`; zdOPm*A+p(UnACXk1ddT$TBdc_Xl+QJ8athoBloY_WjV9uonbFb|2Zq+`NBW>gni>M2WYOstLyq z-ZDLFb_E`Q28qkbS4pevf2Nw%$Is=a7B9EnbKB7fs`y&4*f2vEGiqnDof}EDh`Jo_xI>Ja86- z=7lTn4>CnAGqjWb)SNw;${r?CgVZn%QZ?|)BVl&pe=v+KU9rcC2kqJF6?^QYzE6Q% zEtbjE0-0Pb&@NXS22rIa6DJ;pIPv3cLlJza$1j-kMX6&T&kqFL(f+o0*s&XKo`l`@ zMCG#^Z%yGF@0-w!UW{=t-!sb@?VqM@OE;>4Tx6I8k>O!9BM7aSoY6F!d;y*^bN03I z%vVh|S(*)HdwkldJYQDh@7nHAB;ztb5;^-?e|xd-v+>ern9ChcRUUHy6@#3 zu@7M9psr+0`9t8q*+u;#!?v=cL=Mwq^e{cHfyQUSdV&c!eg(OKP0mCt z?lXv2Hu1`UM*;Ahb`o(}_ULl#OXrP=5wY7$>YLSxp0= z2AMzY!2}9EOm5rV6hX1bzkx!Aq8sjHz>l1(NQN;B3rA#Y2h~u>9t!LzmMip*tpd5T z9!pv>Y*wavn7Bg2n;7n>EAAMQR6p>uad1Ran@obQB3$V>94_2eXA&II)F$JshTFEL zDs88zZtrS-P^UH|EhU{F*cH)9%ZE&%8aZj_#s#|O!~o2Efu^Z#a~zNIcK!a&zp+fF zplf5$3VfT#owj5y9KwY0j@?HTcev-13<>Sy>%=LGEsN+EjVpViXAgJa{fZUHhkkYA z{rVMkL%*h>&#S93?G$~3e^j)bznw93>>56Oz{rweqdFegTTyG+_pNLgSONHpt@-)N z0M015Z;5QrTzHq5lWW+QK^GVe3E3o88XK1!oNg}Q3Az?(9oAb7u@|HFq}&8EX$odi z3(RD)Wq#12Nne```$(v5nz7?adFlSuU>I9ZFoy904C80wVrLlp8hG`nZ2=dZJUc^u zcf~F7{z6o9AFxqQ{RR+0b%_nPrI_|?+q`$BW%-89kx^#S@(S%HO%IM(7;J4H`t`v6 zCa)8tFHW{VNbNk$t2#BBXziaXl7^(wFKwU^pb znaVv|QD>{3I$%AO$d*&TtIbHgKd?hK7lti+WvYRM|8BaNc$-|j>8Lix^!U28i8u~D z=e5as<@jNdSg^{Sw*Pu2q8L<1d{B znQ%>L3N?{P&DA&Ikh6@LNe9Zb$8F68R<(&lYtHM4Or^12-uRsYJ0y(yMB=y5Xo#P! z7$zpm7nM;;edu=7za}QCV;mFRbET8YxF?eyw%Y8mJY*t#+5~jjCEeLDtlL1gU+^4RImblf3_!0dHblN;iq3T3DUxK;Ckj~hOT#(b2bcRI319monWPvRZ7to9!Z0KsVk<`VhWr&cvb5avd2oXOrtvzXMlB-(|22FK10iqsH(B*MOF9`~@}5wk{5e zm@wKzzMH+mA7 zJK(s5IKmsCtr1$@6+{Y@iMU+)kvS-J4!_cv7Bd-=sJ?q6>SEDX<1St5!d=dIJ9Io_ z&=CtCLA*)h(ucP`s?+(cr2k>L%Fflu_Xc<$F`bZ7>wvc%LJ zayHE0q~&Y4s?Td zM#RYZV=W<#+WR&QcUI@Lx6RQui|kOqsS>uB$c7FySvxIq^ag)$swdrvGdLA#Ff&tK z9Kv)!neQxUhFnz7wv`#U|4dvN#3$Wl)Y~xaA@<}9NdWt44D9J{WVq`#?e5lWu96-) zO{KNveb`Sl9NmJs&sVY`C|NdyBIk6LvjqwZ&rQhA%r(Rj2Ua44o32L8vyR=x94U^h zZNYwo;72ekBn}mQjRHb0D)!DnYYO^@Z04^ow9W2N_>65bZwr&RvE8VDlRB&^Py$J? z`F_a38jzYZH1~PeW%xF0k zF3)l>$?xxu{RpV5m2IwR%GA=z-q*l=VW#?Hrg$E%z+h$6I9sXul9r|(RjSj{mK^C} zdiK*F(mOQhA3Ch}0Lv+*>+B42_bOZkiE1Nw%G|w4*|B%kF7xv%U8>jU+2xBR)(#Jq z$35P_xz&rGiIsRX_?fzgTlEto$f)+2>Ppy8m;Mzyks*rztSs^@opjF-?_XEQG1cGL zr(eie|DDPW^Rqi`zo^r;)fb-aPu&i&c9^EAxaVmbqKQ|Q|E}PxpW&->kiWfmKtBka z9ktJL?*E>e95{HN<-&2z)uEmV&9K2$K0zi9Z;6R`RC-N4EDLNkjkQ|edj9-Y?(^rl zZEDqO)4CQIo)$f%WPoMI+TM)UXNE5h(~5x?AfDM>Zq;LwpkUQzWYuDT6z!BbWO_kzYh`jn>}(HRw=8z zb*);h+o0lQ7{FV(BnO{z6$5Dc{rvz|c}YzNad;oK$hvDhj&&*G5VhCqr2(71-WgmvHABOPq zCS@lZ!k^MGggw|0c6_Kj>hZR42u%&1)6y8iWgmvHHiocvh_dYc5Wd0?Uc-?1VhBg< zRMO2)*${fR`l2m{aGJF}8^UL8h*P|>?04mQE+4`SutSpnaB&Av_m2c&{ae z4Pje0gcZtR2p#zlR(wB%ZP1Ik=*?Rg!q#jESs!5p-?9;Gj}d$fKXmU$@GeHMOADDL z*hla>Mljcrq}fN%k&oaX7{QFR*fSVG2W=fsjG*tn6XPwt*a+sZ5v=fbkKCHo$?C=k zwqYYk+swHn&*?AIQ`>??Qu%@-sqB71?b}<5g_6+th#Z-Cw*&^xO@W?(vAO)+fJKS@eA&0vtbR(F2 z`D8JXY;nBreoUrALU+hyek-0sR{gpuP+wYmNhWJqYx1gI2EwC3hGB5M7;WTjGHm0m zBGEarI*>JstWQzY<3-y=-XxP75F@O?m#ks$+1n+3Xct+(NmehghLJT#748qT2Jfpo8tkCLUi zY&C?ciFAkY!|R4KO)p?m7G-MnHX-7n`29o2@7>p7tY1gG7GEbirdI5aADMR_l2I2C zZ0#QO&TJ)|kfE=<5!sP0JR-tF=v=Q;h;QS23hCPzmKu7R67e9fBs$&|Qgm0+*)GI= z=kJvLV7)?9)FBTF9;xw(a_xv;)wE3U^sR??-hxGqCjE_fq+?5VZr*3vo_H?iV7zl& zeDvw_rc<+$#vQaIjp(+ui@9&_nWO!!{$oRY7x#6(B^_A3FM6A0NA#g}N6d#0&m9+I z-5j!dVt{GPg7K3kScVPh9WtSp^VAVbM)fn%{!Vv(Z7Jz%(|(z1+OKY>@4UU;>dwPk zkaJzb9IRFK+YlE|$2s_{^pt$*Pz`NS^oO4`4J&^?X*g}Dp~IwU z?b(lKnMVF{3uzdV^^0XX!wXZ4C`V$3Jf@9A`oK|YF81s);X0Z`18(MXxbbFiLsKBw zb15ACJb#Qn*6wM)iWmkAf+K;=j7JdGx5DEcwc`Yv$w& zo8l63lzH~k6(z|!#h86IvPc+;q$8V&#R8ltIj{q7oX?LKhO8$&-4BN`FXzhJl}u( zJl{_~&-d>>Z-P8Q-mPFU$Gn^7Rl{N=-k6TGqvg}Y2>dSZl+LURnJZM1%v_;Doh*$e zOZpi05=-VU-N#EGleZiXAzz#fAolV*8i_bQ}x++OzJ zg;JPX-LQvc-=pY%mTw?iO?9PlVZ8t1MX}2cc_h7tz)0%GJ+$IE(Iz@VCdl23UMY0B zJaSP0TrTVBVw71>le)pUOCbjLU5dVWvf4?!t9n4lo;+URzizN!j>!SaTzQEK@9xAG zZhFaryL}ZpRgEW|#nkLaw`9_Qg5r|S>%ph&skdZ(b2Sm4!%HI-Q5^eeFOF0UP(l^E z+h2Qmq-0-Zw=x;FFeJX8tnQ`eKPQWK|D5coW>K?|?xK^Q$E7{)Z)f3+a ztIN|w5_?q*N^?~2%`$G@v~vAAD;Y+{Y2Z^>3&k1Q#5{8N>_C6(-mgY%9ATyn8w00G z5-l>(ahlL|n-^>`r#V46Xq@I=t8=8<8}p&WV85f*V+lvL9WuYZNUJn$iM9TC(y&vy z>Itv14cU^XYMNm)*)rakCK(1l)Bd>T`suhw&W6o{<-fIVG{jE4-|k%Pwa$3KyN;Gt z3~fOjme7W2bL#o1*kjgv%}<|h zeou2CDe8Qx$>tYsB;w;IM11pO11gqpP!Gx@V#6QbSoB|4Begr;RNvg}Na|vtN!%dw z&oWF>J6?!Y#k%bgR3;n!P@lxHP{_T{d_ahCade z^n`|5S}g3#R#Y@KJ=5do@fOl>pyuJk*nsY)rtN!IsMPY}v#FMLbGA|GQETEl%foQ6 zVK&}+s3m1rKfX_NCjEX)T6?GcnnrvvyTy|J#t%mSpdn#H5HF>4i)r&yGgFMsE9a=5#e}(L^)9qj zuyqQpp`kwBq=OVpjT$OW?=hyIdHArc%jR1Hy)_FqUI@Bi&V6x&G>)-GlX6f(N~4pc zU8Jt&x6R*eI%YnT7!n?7J$PBOI<(LBZf1QTDjJ%08_v8l-SUOd+ zmNz6?qT!98hN{DjYoov2x!aU7Gz!Who_v+sBN31*dZAn;u*txB=aAN3`8PlA{ zOz;mGU>-Ac&F*p5ps3lq<4keuqjzqzpfuG*(w~bU-MrI&x(;1DH&Qj5{CW#23?rcc zzbtrqWSE(5v$?kNx?Q`KH>Oahs2)Q<3urnwjn4gv^wX~060v-nl}KBzJS0vgXyQGg znk|<3Hb>*4nKQ!ix-V4me5Ey8!V%miXVw9)PNw#wySJNV(GOw!2AO0N#QSyfg)ZpL z{3Brk-^sR_dy#aPm}YlxG7_iMGxhTqFIYe^kowoUcz ziJtb*`i~3nxAgCzPR^hQC4Kh@(%w7mewtblv-WRtuveChDM(|9`qIZ}(qm0yiOjH7 z)X)mvq*gOp3ug&3HVqVsr$JS$RvN8!pPef}HB%nJ_zYQ-##S3;jA>*58IT5^)ZZIs z6a&1;0LF}<@O~ImG}XybHIVkkq$FyEOaaGG-2F?zbtr+O<9{hhxDu-d{=B^(TuDpA zq-n+jM>0blWPI=d>O-yQ$U6#YMg93teTocSrus&8Wtwdz9J4vuZ;+fPBRLK0_!H*_ zB{Z+Cp|DxsAl0G*CVSqHCJyO)YQ#OnVM$M;>!s&J(C9y5EpuVU8r>tEG<% z8#?2=G%^Ba&b{5p_B2dvwv&nIKqK)_qy7>$Kuf`<`6ewzM|zWyS~`+O8^IN9L6Sa+ zcwgRoISGFvDRGnRg(%-sEouBo9w z886Phwf2@sbQvTL0^W{fw(-`9j0afROT*WNjv4Fg^|-OQ?Vv7=wpuf#!*kXgh`VsD z;rC{6u71SFJIxKM`)tLlP9psnrx-?jY(d^CRC>?m1%-&O)d0uW>JsDe!EmeIo4`LJ zT&&L_bKsiqcZf4H#e?bUjC4nJ9+dJs4H?;HtTlJskV75Jm3lO)9B!=^ey%=LHquYV z-9BJ#6?k%_PZv;D~*X z$5QILcngd_;jp}KJya$|u zdi09w8#~gZBlvo$PLkf7I<`9r`aC3VdPgP{S4aqO5Xk}V!G<@n2t%wO=*y?qX$a7dHKBsY-PFl5Iq~;pU(t^JH)GnBuzv#A3y@ySdP#D&d zBY8Jql>!GWYu`<3!gTlA^&|$^0Kky|NrG^zPWaDnNfQ%kGXIx8k1TzEYT<;qQEQaKGqQ@FCFfXDTo!0_jc#E(3~P{tohbi1{L~wxW6y)%&!h zT8o~}BR& zpFKoqg`Vr>luHCnef=(pJir2OZ*ckUe~B^wRj`%C5ay>6CV4_>3EAqzM|t!e?OadINLUkJ3=+je#;XF21auy&|4g%Q%uj zi;X`*97LW`{Aud3coEMuq%YlPq&n=|>&RYcXz#@WJF&tB83s+tfmxX&g7fNSxShT= zCYRhwH^h?jvy6#{mv4%<8Ukb2$01hGcWug?JX`0H=G$${_b0>RrK2{of@XU7^u^OH zkW!7Awt3p7*_%8j?VY{-u<1lpTw;`EZFJ1HyUno&7KH4wZkn@h*2?Lb+scIPo)$AD z%6b3DJ{x?^V@5BWIo8^Fg1=WAQ`cQ1PxrSN4o{vlY1XtU0sgc4Mh;lock{r5*iw!i za6EJBJ#(g$;c(xco8rbu>eA1&5;538K*be0Ix$r0b@CeYu-D@3Yj4?zHiu z>CD;vmoHqM*m8p+pkns}0T-uWbI@nzAiqwgM!DmOGw6vh;cTdn zscWxs-aR|)&YI35^ihZHzYP7CnK(U3d5c}gi<1rv+hM`JN<1lNJbq+<>Q>ACd76S3 z`;8137HXOC?erBPE1c^_cSiMk()~AiFBThBYACBn;zd$3{&xJ06a<_2BjLBiCkX6t zog`uh!cP5Q3N8`>vTP=i?o zZK3KI-iv$L*^!Kz1o}`Ed2NE1{A0G`j|j_R6EM>3p8Nr^9OOR#7MyThue5?h7S?E; zfk3k%a}Q!WlGuA~OFPrH-lVN1)mhHlLF~lS+7(LPNxI+2zRHSREU?IBP(BNuffNusQbLS)4+C#V@26#3=;(!()PYg&1^} zp=h+isDfyP35C%LXFJcChN(896>j<@TH)^K*v%hBD-6E8l|?JuJ1*)&w8Ei?R`^v| zzwmw^M=LC(gf=nHgY7dCC&$!04=9A#L?|v5Bv3abl+U{d14!4qm>&3QGL6{<*zvx_772F94o{FFyW@%8Q6d5R;>O12;gFV1)0|ek0h|mH1g%pIr_#KlaSJ5ig z72AsA#UOtW#G<`H%G`lq~ zq^9th?v;ppDfY)?U zF0YfLa4mdx_Y|iI$zz_x)9w;-B#UhUA*p??i9T6 z-_^a*{psrFTGq9JYa7=Nu3cSwyY_dT;JUzdqw7J}Gp<>#PhDTR{u}=J&BbaJt6!`I zg5&lrHmcZ!VsnbEC>B*LuGraP*ANW%=VGtnr{6*E0$=^^`m*{j^v(30^xgD*^?v%1 z`f&)1`;C63euI9CekZ*6pVD8{XTX>LkNThWzv zbS{c;VRobFLZ!)RTpQB(wm`4@Z$(0%I=rGSmi_>3jwXm(^}z?po*Z)ey}J<|b7TF% zBl1lphn$xX&#N)kphcIX-`E->ZqE?8vSQ72s(^@eg-)m^ArfnC5~wpa9Czx(#S<~d z*IQFJJzSl+iiLG6bVvwygw^3E;=Kd$0$1J0(c*>1}i0fACirtaB_nB10Uo7IvLq}$U5zoFho4a~j#&m5BH`Lea z8DqO1V|$IWUYgKre|xhbw~OyYzW`|Ir)Uia;gSPBc_hP)hi5M2=A8CzYze2Y5UVy4 zaaMo7ns_DiZ2u-mddrejCk>I>XHn6j5A#Co&Ik6`ox{il$V@M=*quvNkt`xaQ(vM3 zvDh3)PT-a-q6E|6;>1OBj&AJ>-?fmac*OW=R&Ln5Vw3q?ynpXLqeu1$w~iRI{Ya?Q zcb3L`Yl{DM^TV{uk94ZhXn2tl8*}j*yka!ShE8RP`ku5{*WEqO2VmaTX~a0MmL^*I zc_Wwxn16mmO5YiKy;A~q(J;3AjCap{)x3r8S1nrfIehot`NMauhF7*foa%Nv^Ybs4 z&pdmU+W(81-TK$#!8||sDY;zerex2@UP>;*NlAQxj}pD{_~GcimrM`5)0#Bw>eJYg zBAp6PJbKQ2Hep2Hujfq~3stN^)GK^|h9oD`0F0gCMeO!X2NO)Ud!1;}qSxS7{+q|{ z3&I!pPYxL|(A4a5@5hfXU$}oNIMIJ6THk;)Hy+;~GbCR+Ulbs*+z z7j|FYY4O^b^7S>SKcvIh@C#z;`+N1I6(=ic+uJIja zPt7!qnTZeg)c!%kxHE$C8UN1h=`BmLIU(?CW;-HgT{@7m-_m1G%D7Ck;l#Cb zF~?%zMX{Gw7pUAu05$D-f1lVEp0X}@Dx!7<2F{%pWL-%t8sd8v7EPga&Z!X1j!k=_ z63od-e!hK&`Slq-V)wB**1oefURy2>$uNJPnf~DWu2-8{^;`{n8G`M763SeUhz~yz z#G1So@tVAP=tdkKjz|P)eF(k0LC`BO+1;vJQtW{?hGEjpB&i^DDMHy{nbedv zO&Eayn@p%M$A1KA0+E94El~HzE7zXE$%*z^*Q*WcckNQwLhEa5U+wyX<(yM5|6>=e zq@niG;iKm-B>MHV(1zL`Uk&SH(HHnvYA1&&pf72*w_3Zjfr&R*6%a;n5eN5E)!_z) zUDNgJeq%h%I%uE6X(XAXgD10_Il5^|j?UN(VLEJ$G-{*vw)iVr*Z?)t*qUW(S$I~s zO?j`eXq(17rx<>!1J@~&l&=f)G^eha72_Pbb1Bo){MnPf(CR*MJg;xF6(c#mMSEJx zti$>$uOwq#%%gBT`4%#5A9xNT@Fh&(Qy3vS_yhpqVqJ(Si}VU7-6Bc1cBB_{9&?-uDS z!2~&8(?+6*y+{#*5x0byub@K5(F$IO_@xajPMC4aL=xzJt1v$#ZXe#zTS@20?-6~Y zC17Fz-}vQQyYYpKyqU5U^EikB5j<4~p&0b9+pSR$T{8kvVg0mlBY=2@AvzBNk^_4L`kDd}mU1Q~fSIU|pc`I+s4h(s?Ap=0cUxu?fQCKH&a- zb;CeI?h?nl2(QZaZSCPz@9t9;DjO7CF6)S=hTFQybX6Al(jMVjM+I+~`F~^8Sr*TX zmUV84a7Cb_(+iX>R$xS_UDbm0K`a=34s(g3R)UOsrCnY_zR~0v_^Bi@ya_VDE zTOAZ6Dco_rgTq01TZRa1E#k{kZTE+yH1SBgMX5Lm7(L|RU(CJuxGp)n8NMqWFagka--aK|I)~bU~v0&~~%n##| z6+zr8AaHcR#F*IFn3z~yhApQ9S)pq{brv0Sy{?;eeLT!JuX70oL;|TyG;sL_3AwII zBj#Hy*kp5fX1qZvTqiw~NdxSm4%P+3S0D=&dYT}xA&;PWHeZMh6Cg?%rpvom;K5O6 zEPq_PbQCt*mo6M#=Iq=92=GbVv^u-I!{Z9}4YGBevD>XX;I&rq(xutGVCiPSK?F+2 zzHzy8ZmE|BrII?A23>+6;}qg&j*ae(XU@GRJv%47rN@IcvBN9CeBhKRXj)Bg7g>=&BikO&7UIQ_biF}syJ13^u zD%d6~G3Tjx(0VkHA=N5(nKm6(KhfX0{K2 zW(o@wyjam8#4U5Pg=W2h2m11rG&)A`HF|h|u|3wgeLDYKYWmyNen?Py^!HA$6(8n}zjWJlfMb+Rt- zEOl(BgZd69eB(V1!O$QtFt zY2!$pF-k!W3nzY=~~WotCyskN~_MA(iW>on^ip)^5nIsBYo0s zLpqT@x(HIXZ?cYQx5w*3pp>thnDs*{NxAeS3v(v2ER8OcNJ&uWDQLYD;_n*0M)Vln z+Wcj|glpH2M?bS(z2Yq)FsmRSilY6W1L8&^R3f4}Hpk(FD2H=#UX8;EaUeJ0yc>rT zqOvC9oQA_m_(^zy(4I%cB*6*MM8C)VL-8T*e-(el`490m&iNn^PKfPk790@E(}Ht( zhw?brcW8k0K@Nj(Kh$9;VoM6VJu<)|KyYl|(YudOYQ*%(fkL^!;XxCG&ZrOn^7DDF z5`u$gr(WfRGQE3wmP1TRdpf>{KSx>o>WE0N+O`8bloJ}a>(!^6(5h?Of#rmb-F&>u z3Eg}7bSo$H?b8St4qOEF1YFh*Ks2!PY}BB zb1!}#$j@K#a{xb2=I0swJddBl`FSNjZ{+7_d}v{R{QtSKc$lS7hckM$oUm57Aw1^4 zB*EsSFJ>`VN5c z6i?^B#fTrlK%NxLVt)P~4kFKS5@(iUv4bu@9&g|d=U?-Kka{ftHsGfifBr%|nGYx` z#b8S){kBXcT-hkZvym_OXD+-!dhNpdd~a4(sXgqyGWs%ZfDr}*i;=dOr%7c@xH=;3 z1$!s|Hb0*(xV{j?Qei9~;@zG?%-_rCk8I&PM8$my2!AE0!oNi)(OoPnRuHR+wZ(>F zbFq!sQS=sjiT%Z)qQ4j*P85U1S>il#v3NpEMjYR3h|PN&5q5tNe-?j7R9u^b1CM-L z3NdiYA&PBHU_evErfrW{v^@}ab}(YyjzKipAjFLgLyXu+#DiUr*snVg=QSR2Tu&id z>t)1p%|;l}hlrE<0O`rn-e@BGK;Ep~Pi`r|w<|FQTGe~(zY_#{8( zZ_aESpYYNA%NZ@fyZ_bMRd|3A`ab_h;UWGW;qNj2p5*@s$a%p^bTHsr3V(k18-~39 zb3OJv|2Jp*xBj&!-uJ=#zPEpO(YlJJ6umE+r|A9ry55)hKE>YO_Vl8CkCdV%6utkS zYIGERfPY)^Z#z@~E)?`7FWbS5VV_{EQhFm|3D*T~RL*}oJKf+UnVE^SmhNJn90YiWJ_xaSnWczFaE0zDVuru2I`SNe%r`WUoZ_n?`=QQT? zEk!EI&sYDqWq-*3xmJI8`hRoxpSJ(Mt>Z)a|5QT$jemOj&(HGT;`sjK9?E}&vCd+p z7Og-3J`O+_;PyU;>HGg&@`tCal>E*3i|4Sv7&verV;T?W$HDS_Tt83wkG|z#!A1oCs@cZ|=M(&h$GF7fIm5aWNR4MXc^d1-8%QtGmxbe2c;zMjvA-~RZGBEJesL;G*@<1uD~?4Q-1hvSmH|JkSqu~fzhct6`mfW61QlKtYChQ3D{ zQtZF}u$T1y{89Uhj?w!Z|HaLJ^sWCzx$Kqvmw$cHKDYd9`hTC2|BSth`OyEDe;=^) zpNh|4%AT^mP9D_RQ5e_r(W$M^qK_s2Q^ zt6vUs7d9Vqdr<0zVBnO7(G@lmVh6B}W8QyNwEZPcr&53yyl)H2e242x9G_yye^5_h zd2FQYV~ZBPwf9nf9?E?2zbw^Gb%g@#XVlh$Qf>&vi}bt|R6#DJ4FB9n&XbF9#?QdV zKNs-H(*nv_KoRZz_eqxjM?e3HDX5K&|J%Q#v#es)KF$Le-LpeY0qy=6%Ky_w^6`yl zl(nFCJCERHvXT8vD=EsBd2T@2r_Xu&3ix4>5q;mB!n9A{d!OMmH~;TxAp3$374iPI z{I%CPw|UID(Bh)GKgChj7wma{o;??SGtTwVJgLb01>^Pk6#IN4|3}`xc6j(`g;Cgl zAKw0-?+V}fn7!&me(a?R`}6T_2B@y>C9I5$x^4-sbqrzwkqU z6_oy&ek$x~d%gDa$7vtt1Ml-#kb{lKU&?!*gO62Vi;&Y!C#!M#%;x+B^ZNYX3Tm{s zmrH*>l)=7<9Ys^v{YNPdnsS`}cX3-QxL`#L8B%^Kqt^Iia~aErUih?}zx(}PaPm@r zSJvm#(K?JUn>FJ6H@*1zZ)fFw`o!KJ>|Ah%vB5oNb?o~2fA%s8d$MqiWY1er{wM2- zqO~G_!OW7q!JjbdS!AS;#>TlwN?|*SelMOoI4)%4=lHuJvOqd`8)-9GnqjeFE3Qnw z%itg*KjVEFSRoePvnwmJ5El#U#8nhzNWqUo@^?}^4H@_&NWk+QM5McjkHz0034a5F zjy#b%=o}2JcF6p?;tE-*c$B?^`vGWy22xoqWU?-xagZiMDq3G?0EufqJRK+ug3NWi zFaau&6NRZlun;0l6Q&C@gqgxDVYUz|gh66IPna((5WW#sK}vsEI3gSsjtNP^ap8n; zQaCOA23h87Q7bx&<-{stRmd`1h^<6V(MRkd`icWZKXHQiwKz$fEKV2aLYBEmj1-rP ztHjmfR&g6tE_aE0#5gftOmZmZP{E-FWUP?kGwHifL8u}qLUkM!gnCfitSB_aQC(;w zbc5X3N9c)Py@ep5g|JXqBn;tu34X#A9K(ck;g&F*w=F<;jbnoFR`?TN`EMLSqNC_2 zOcgbvvk)xGqE470mK5EDSz>9?LkNXLRuSexEwq9#U#uin5f+IJ#7086*i>vTEET^L zzZ6!8?Zx)Ow~*F$6jq8}VmD!x*jMZ;tQQA~gMEcyu(#1W#uFj*Wejz-T;5GSB#SBh)Vvm3+> z!c1|qxEVdWRopJj7I%ny(6g~(Jo+?2OcWx;B*^KPVdRSm%Nj zBAi)2*z0Ax3}aA+9wimWAqpkW%SYiN{)C0CN z{MKS$r7^IcVT>~{rZe#03x|`?1&6!P6-Q}M0dJ&t!yyBodf?m>hYncfi*sKbZlDwW zKsEZ~C=QA-2={{pe^8N;LIB!04o7j&kcnvJB;aC6;Nn88WftLZ;}~h+80p3_(g2m~ z-%;;N93tq(E0o5t(-qjMqHTFNw7}Cp@swezmSd_5FjXUz79~+aA8AFc;0kKvER+E5 z%AkhOf)JaGrIDwMSO)1Hz-9xmxh%#?0ZzLBr>%k;=u|npTV5=W^a^4Hq*oFv zqb`Q!29D(hj^zf9`$#bod6t4&xPV$L$NdV>3geh94a|f5_Arg zK|dTg{V2`p2X;O|(b-O|1*4$nFvrqL0@j=WVHI(%1UPf#a8`%ISq0GD)wyQGgdIXn4rg^h;r8QcEa+TS;h>O!auTugW(JQsjg&Ju zs)16T70L?9!UcRu3TUCiX`w5JPAe$leL(gD9OZ=Xg(v8VAB1PZ7od~RQR6Q-WRBS) zhvV`bzeNtU1`f4O(6z7$LQ9&#i~L@aNue}ZLzvoU8uw9 zdUeqCnnHE4mRJirsI|qqf`?d7tS^)k8N}BC#5YBHGqIUa6?>4)k-})dnd3kmaDbLV zHE{G+NNFv$7HVLZvaO&8hxbHEJMf2cz>`jR%S-gaxhrs^4mgGnFt!KyhFR<>_7ZAh zF5ruF#w9Caf3v?(OdKE%Knmj|W^j_hf+7wPhX^L@eGWyLe&8);;MH)!Dt-liS_eC# zpgX{^QMhN^rYgrYvp7~9hdhk8*5Ul8Hm9;8r?Mi)Gq*F9K0ImhsD67wxEBuid&I0N{qr>Z@UN9J;&|h9Jfnw z+%Cy++YPw=6L>wt8E1|yt{hujIkpt%*x~?esRzo+=0%doaKo8ng$u_DQDj)*%CVv( z#|meT6(u+hh#Uu;F?Z^N*#*M^XUw4b;hy0@aSr{?9QuoK=y&4KUxGuwGiFvJP$Pr; z;vC|&9KM}7%oS&IXq3jFtptZQEuV2o9Kwoo*mCBu<%oIqHssunIhe>HOwS=q%OT8} zLs$t8VHyr$&X}Pc1TVs@9B(lQE5RX5%OT9U05aHYO~>Itd_UeyuSXC1%I56uoEuc) z+@KQY1|sJM3g-qQ=K~I$4=9`uU`7sD(Q#OD=Nv%KIY0%@0rZ>$l;IGg=MYncLrg^u zF$T^DigCCp#kqmIut(U3*%9LjdJa7$I8SirJVDQ)rv!%^4-PRV&IhV;D3Lgnl;lvN zgavBc>QOrpcPTfUL-4#A3Q8-;^Iv-^* zOJNjUFFaXmJjsS`MRn4x=SG<#y+k+nrNx_ac;A&nb5?4!Z^pyY8HR>o^1(I0Q?a zio0_-)^j*EaX7BX;kYD+V?C$e?i`v+acGt}6?f+_U4m0_J*VI9oN|}tl)Ega*6y5I zm*sR?$<`!N5gM%L zcv6MqNo7un^&C%%a}3dQ3@OQRL(l21p5sFajt^zAIzJ8m{19sfSH9YCwMCo%s60jZUG}x}yX8u35oDYyyRUOCgIrp6N_AlTDyGjnNNIS$N zv*Aj(8f}CtIkY;6MyM#Vq0+M8E^Ll5q>MSr*h<8hgG9uTG0es=sAy(HMo45zMxtKcg{gJxLh{4LYn4fgUe)t zectXyFK&!Hw^X|4v4>T%_GP-Z(N&GEXLKc_YZ%%2l-Mce3(9SI;&r{C>*aK%80Bgr%*GqTnq`N`7o0IO2knUC#>2A5SwpLnOE3K`R)>cYu zhstBiqO(f*YPKlCsFofNm9J*=5k~aYs-?|C<*OO#^iXN@5NUIDKDLNag_SlBl{QyO zo1OI7=QTKbU0zySCw=wOR4*MZmyY_pjz(XqM*WDF{yAx0g>=qK=W^1y;YB*6tImGcP^!(z810S=QIo$mg)~Ia2u?rVzncS!|;kj8Swd zZ8y4RN={%SGE2`C-#x3hF7rUF-a4Z<&FUSqiU)$;s5m3_4YVM7|3)onWpS-q&8pR` z>}#r4vuY`;HgaksD=TQ_%Vxc~Q;S%6u0eLos`i{}&#LyUyvCqs@Txthdb6rGqk6Nl zQmK0LpgOeb$AfH@m8Td~lQCz(D2F*&ez;^F>?F;D?L#B^#|+hKiYlV6G0e`o6y3fd zxs87L?&Mqavjg*E8#O<6M*euiZ_XjV^r_@C_hwwQbW}+r^q|yION? zAJ<&lgPLpGALrVdk@-7v-08W*dQI4=YsdmFB%}GwGH} zN@mV(%pXyK7d4tXXii$m&s>+>f@S^&p3rxRdb7H#B%5+Rk?tkQ<>YU!Cv&s}59$G8 z<4wsA=g#d|k{%Y1iSLO0kuDL-#9`vuV!b$4Y!oNWi^sQ!t>ScXhB!-{BeshR#KmHd zxJ+CzZ*KQj+x45spbJ0S#Upy$jD!wir6Hkbz#P=e7 zA_lQateM|6cb-3693_qs$BB*NMDbE_ia1Sd6K9IEJ8rvWuD?l~FLsDs;vM30@g8xd zxJrCTTqkbqSTwK0Zx*+TkBd)>yTm=>^Wsb5%biOXcKO%DBjR!K9r5qtzaoPb%fun# zaB-wqzo@IdGc<_f#fjo%u~lpnuNCKr^TkfFM_j&`)A7I1MLr;|79SSZi<`tP;x=)I z_>B0hxVQVZ&iUa5@ql-I76J(y>xMRZjRV4E)W-sJ>oKPg?OLXE3OgOiW`Q`iQv$8E;PS2N`#fEo0O?6?3<(Fr*%Xmfhi#V3Y^%$GT%3i)NWB+OW z;u6-awA$IMR9RskVr|M!`x2{B-b;t1qtl7$73rL`E4?RuINg%&O!ucp(tcOvM!5-Y zs+;8&xaDq@+vIk*z3z}Z;jORrTG&={tMS)n7`71o5l zuq(Tl+@1OIF6v`5pG|I~xS2OCevVuxJ|wQnvo*1~Rb+9`r`A4BoOd0u*bT&BH%3pN zoCo8gG0#B^b}OF#0`pbnI83e=&(P%V6IbA8n%pw6N0K|GhxIU!W&bl#%v+4-zozmj z?#r%quaufZp5O1fJk+ zRulczoGgs4zHd%jZ-dR*5w_OW*|Y6sw9j<=MOGBuz%LuQx0<9L&$bQEw?}6`k1Jeg zp5z*i^VSeUj3RDI@rZv!1QlbfL{(U z=MY8z+m0kx!BcU5R`ijl)|*S~*{~<>0n~|*yTT5g_ zhoL9LXZhfKy~u73Yf5CS{|ap((}02NvQ8{ChwMFyG8-B~Lt;W_z8x}IO}Gi!>|&We z?N1|{St2_gT9LJs$PW60$eK%J&xTJTYbcRz^*mLmFOjVcHOMmSTX;6l+wQB1pUihA z*1hLfmdKVT#vLt@ba2!G-&G=;&r!QdBr`c`tDjvWYeTly^X_wZ`I__1$nNzm1(|W2 z**6v6zq`qgMK-!fW*nBspIaocuGy2T@^K#D!1;}%4SZ(hvnyIR-1T#>Crggv7w*j> ziA_(q!^jR5$&8zc+3@4g*LOF?2%teBgDjB?VrS)*X3j*Xnp5^XIXy!A(F;CdJjq`W-lbdW7qt;Yf!Rq!vrSu?WT$S4c44al}2 zqb$fCK(-DUWkGfavR-7Ad6`YGx9v!=#@VOBvAlWdtsF~PIJVJFLdrXz>XYO)okC>) zR&s(I#C4P#_{18}LT}M|X8pw(*yid|>zuaGkBldGF`2AETZuQY0)Jp7xtZ1E7}k>Q z*ho*Zmo=q3DSvH#Z+=d>&m1tjD1T%AV17aQyg6u|rTne=qxmJ}3#>rhP5GjE#r%qL zzd2;~Q2x&R$vj7o{y5tcY&+PVWTXAePuQMj`zhNqY(K-IZ=wf?wG%gMH!=qKzk8vg zr=;c`d7|0LbByi9!IwuO4eu-2kiU`LJQi|AXPhB%`XCazlQ&_;9YvN3*#A?lSF=!>n!1nZ<~hXcCxb%GU6HU z;uPbu@fc<-vBxT3?J;wSy?zrl#@IM7$a1Y(eRoRVy&LB>@w=!$meGfQYOh~=|1j^z zJv%J!ahD_XU9>F592Jj=G1JK?L8MaSJd-|O8A;A8%7^Q7pZFIstECt9d6&3SjQzYx zUJ+jw(NO-dg8cnh+!v|--DGuRu~JB;!HcP(7Pa(J+W0ZG_dxrOJ+l@*gSHx8(puRY Wk+rnb^_S``81aA3RCE@-CE!25nFSdD literal 0 HcmV?d00001 diff --git a/assets/fonts/otf/Manrope-SemiBold.otf b/assets/fonts/otf/Manrope-SemiBold.otf new file mode 100644 index 0000000000000000000000000000000000000000..347f9734989b94b378114152c48b0cd5a5a652da GIT binary patch literal 61896 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/web/Manrope-Light.woff2 b/assets/fonts/web/Manrope-Light.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..1415f8922b8a150748181037cc3c7c52f8c27e45 GIT binary patch literal 39164 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/web/Manrope-Medium.woff2 b/assets/fonts/web/Manrope-Medium.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..f358aa0b2f5fc2a9f2e668547f44a5957161c316 GIT binary patch literal 40063 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

    wIhXPW|M3E53&S)W`k; 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

    6+P5%V(&kgrmCu={Yke6?)B)>*P!axh2D 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 literal 0 HcmV?d00001 diff --git a/assets/fonts/web/Manrope-SemiBold.woff2 b/assets/fonts/web/Manrope-SemiBold.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d74c1dac6199651cc17a7e8c700a2e46033fa987 GIT binary patch literal 39784 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 literal 0 HcmV?d00001 diff --git a/assets/index.css b/assets/index.css index 2ad9fac..b8949fd 100644 --- a/assets/index.css +++ b/assets/index.css @@ -1,13 +1,52 @@ +@charset "UTF-8"; + +@font-face { + font-family: "Manrope"; + src: url("/assets/fonts/web/Manrope-Bold.woff2") format("woff2"), + url("/assets/fonts/otf/Manrope-Bold.otf") format("opentype"); + font-style: normal; + font-weight: 700; +} +@font-face { + font-family: "Manrope"; + src: url("/assets/fonts/web/Manrope-SemiBold.woff2") format("woff2"), + url("/assets/fonts/otf/Manrope-SemiBold.otf") format("opentype"); + font-style: normal; + font-weight: 600; +} +@font-face { + font-family: "Manrope"; + src: url("/assets/fonts/web/Manrope-Medium.woff2") format("woff2"), + url("/assets/fonts/otf/Manrope-Medium.otf") format("opentype"); + font-style: normal; + font-weight: 500; +} +@font-face { + font-family: "Manrope"; + src: url("/assets/fonts/web/Manrope-Regular.woff2") format("woff2"), + url("/assets/fonts/otf/Manrope-Regular.otf") format("opentype"); + font-style: normal; + font-weight: 400; +} +@font-face { + font-family: "Manrope"; + src: url("/assets/fonts/web/Manrope-Light.woff2") format("woff2"), + url("/assets/fonts/otf/Manrope-Light.otf") format("opentype"); + font-style: normal; + font-weight: 300; +} + body { align-items: center; background: var(--bg-color); color: var(--text-color); - font-family: "Poppins", sans-serif; + font-family: "Manrope", sans-serif; margin: 0%; max-width: 100vw; overflow-x: hidden; padding: 0%; width: 100vw; + font-feature-settings: "calt", "liga"; } #profile { @@ -31,7 +70,6 @@ body { padding: 4vh 3vw; padding-left: 33vw; width: 64vw; - .; } #display h1 { @@ -88,7 +126,7 @@ body { #footer a { color: var(--text-color) !important; - font-family: "Poppins", sans-serif; + font-family: "Manrope", sans-serif; font-weight: bold; text-decoration: none; } diff --git a/assets/index.html b/assets/index.html index 6232389..99c1efa 100644 --- a/assets/index.html +++ b/assets/index.html @@ -16,7 +16,7 @@ crossorigin="anonymous" > diff --git a/build.js b/build.js index 02b4074..24c9271 100644 --- a/build.js +++ b/build.js @@ -1,11 +1,11 @@ -/* Filepath utilities */ +// Filepath utilities const path = require("path"); -/* Promise library */ +// Promise library const bluebird = require("bluebird"); const hbs = require("handlebars"); -/* Creates promise-returning async functions - from callback-passed async functions */ +// Creates promise-returning async functions from callback-passed async functions const fs = bluebird.promisifyAll(require("fs")); +const fse = require("fs-extra"); const { updateHTML } = require("./populate"); const { getConfig, outDir } = require("./utils"); @@ -22,10 +22,12 @@ async function populateCSS({ theme = "light", background = "https://source.unsplash.com/1280x720/?wallpaper" } = {}) { - /* Get the theme the user requests. Defaults to 'light' */ + // Get the theme the user requests. Defaults to 'light' theme = `${theme}.css`; const template = path.resolve(assetDir, "index.css"); const stylesheet = path.join(outDir, "index.css"); + const tempfont = path.resolve(assetDir, "fonts"); + const fonts = path.join(outDir, "assets/fonts"); try { await fs.accessAsync(outDir, fs.constants.F_OK); @@ -33,10 +35,13 @@ async function populateCSS({ await fs.mkdirAsync(outDir); } - /* Copy over the template CSS stylesheet */ + // Copy over the template CSS stylesheet await fs.copyFileAsync(template, stylesheet); - /* Get an array of every available theme */ + // Copy Fonts + fse.copySync(tempfont, fonts); + + // Get an array of every available theme const themes = await fs.readdirAsync(path.join(assetDir, "themes")); if (!themes.includes(theme)) { @@ -44,17 +49,17 @@ async function populateCSS({ theme = "light"; } - /* Read in the theme stylesheet */ + // Read in the theme stylesheet let themeSource = await fs.readFileSync(path.join(assetDir, "themes", theme)); themeSource = themeSource.toString("utf-8"); const themeTemplate = hbs.compile(themeSource); const styles = themeTemplate({ background: `${background}` }); - /* Add the user-specified styles to the new stylesheet */ + // Add the user-specified styles to the new stylesheet await fs.appendFileAsync(stylesheet, styles); - /* Update the config file with the user's theme choice */ + // Update the config file with the user's theme choice const data = await getConfig(); data[0].theme = theme; await fs.writeFileAsync(config, JSON.stringify(data, null, " ")); diff --git a/package-lock.json b/package-lock.json index 41d58db..1eddf38 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1430,6 +1430,16 @@ "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -2019,6 +2029,14 @@ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -4062,6 +4080,11 @@ "crypto-random-string": "^1.0.0" } }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", diff --git a/package.json b/package.json index 2587a38..1de1c40 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "commander": "^2.20.0", "ejs": "^3.0.1", "express": "^4.17.0", + "fs-extra": "8.1.0", "github-emoji": "^1.1.1", "got": "^10.2.2", "handlebars": "^4.1.2", From 523521ea35f7f8836d8bb7d2cae4e4cf452d371a Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Mon, 3 Feb 2020 23:18:10 +0530 Subject: [PATCH 124/163] Various Updates - Move Email from Socials to About - Attach a link to user location that searches it on Google Maps - Update Material Design Icons --- assets/index.html | 2 +- populate.js | 21 ++++++++++----------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/assets/index.html b/assets/index.html index 99c1efa..638eaf2 100644 --- a/assets/index.html +++ b/assets/index.html @@ -8,7 +8,7 @@ - - -

    -
    - K_ +
    +
    + K_
    @@ -31,7 +35,7 @@
    -
    +

    Work.

    @@ -40,7 +44,7 @@

    Forks.

    -
    `; + //Script + document.getElementById("script").innerHTML = ``; //add data to config.json const data = await getConfig(); data[0].username = user.login; From e0cd4e7e27ec0dc2ea2b58e4b1a59bd248e3898f Mon Sep 17 00:00:00 2001 From: Kaustubh Ladiya Date: Wed, 22 Apr 2020 20:36:51 +0530 Subject: [PATCH 143/163] Updates and Fixes Updated - ejs - got - handlebars - jsdom - snyk - prettier - stylelint Fixed - Manrope font Added - fs-extra --- assets/fonts/otf/manrope-bold.otf | Bin 0 -> 77470 bytes assets/fonts/variable/Manrope[wght].ttf | Bin 0 -> 155756 bytes assets/fonts/web/manrope-bold.woff2 | Bin 0 -> 49840 bytes assets/index.css | 30 +- assets/index.html | 12 +- build.js | 14 +- package-lock.json | 1173 +++++++++++++---------- package.json | 15 +- 8 files changed, 714 insertions(+), 530 deletions(-) create mode 100644 assets/fonts/otf/manrope-bold.otf create mode 100644 assets/fonts/variable/Manrope[wght].ttf create mode 100644 assets/fonts/web/manrope-bold.woff2 diff --git a/assets/fonts/otf/manrope-bold.otf b/assets/fonts/otf/manrope-bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..c5bc09676616633d6a92203affe6865328ab9322 GIT binary patch literal 77470 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 VkpD|Wn~8srQba1CG)2Am{U5iFuA2Y= literal 0 HcmV?d00001 diff --git a/assets/fonts/variable/Manrope[wght].ttf b/assets/fonts/variable/Manrope[wght].ttf new file mode 100644 index 0000000000000000000000000000000000000000..9c9a74af0dea48740445b9c36045436f001417c2 GIT binary patch literal 155756 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 literal 0 HcmV?d00001 diff --git a/assets/index.css b/assets/index.css index 066849f..0612e42 100644 --- a/assets/index.css +++ b/assets/index.css @@ -1,9 +1,30 @@ +@charset "UTF-8"; +@font-face { + font-family: "Manrope VF"; + src: url("/assets/fonts/variable/Manrope%5Bwght%5D.ttf") + format("truetype-variations"); + font-style: normal; + font-weight: 200 800; +} + +@font-face { + font-family: "Manrope"; + src: url("/assets/fonts/web/manrope-bold.woff2") format("woff2"), + url("/assets/fonts/otf/manrope-bold.otf") format("opentype"); + font-style: normal; + font-weight: 700; +} + body { align-items: center; background: var(--bg-color); color: var(--text-color); - font-family: "Manrope", sans-serif; + font-family: "Manrope VF", Manrope, sans-serif; font-feature-settings: "calt", "liga"; + font-size: 64px; + font-variation-ligatures: normal; + font-variation-settings: "wght" 500; + font-weight: 700; margin: 0%; max-width: 100vw; overflow-x: hidden; @@ -54,8 +75,11 @@ body { .footer a { color: var(--text-color) !important; - font-family: "Manrope", sans-serif; - font-weight: bold; + font-family: "Manrope VF", Manrope, sans-serif; + font-feature-settings: "calt", "liga"; + font-variation-ligatures: normal; + font-variation-settings: "wght" 500; + font-weight: 700; text-decoration: none; } diff --git a/assets/index.html b/assets/index.html index 36b548f..ba9fc34 100644 --- a/assets/index.html +++ b/assets/index.html @@ -10,15 +10,11 @@ href="https://fonts.googleapis.com/css?family=Asap|Asap+Condensed&display=swap" rel="stylesheet" /> - - + @@ -39,7 +35,7 @@

    Work.

    - `; //Script From 6775659805bdd2d00506e93f53ecf47a5d6e40bd Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 2 Jun 2020 15:56:09 -0400 Subject: [PATCH 159/163] attempting to add youtube..? --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d77ccd3..73c2272 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "main": "build.js", "bin": "bin/gitfolio.js", "scripts": { - "build": "OUT_DIR='./dist' node bin/gitfolio.js build dilllxd -f -t dark -s updated -e dylan@dylanh.dev -i dilllx -k dilll -r dilllx -S dilll -w dilllxd", + "build": "OUT_DIR='./dist' node bin/gitfolio.js build dilllxd -f -t dark -s updated -e dylan@dylanh.dev -i dilllx -k dilll -r dilllx -S dilll -w dilllxd -y UCuQ2CKTDMlxugSQsDJKVeQA", "cli": "OUT_DIR='./dist' node bin/gitfolio.js", "clean": "rm -rf ./dist/*", "prettier": "prettier --write \"./**/*.{js,jsx,json,html,css,md}\"", From 6087e82ed10dde2efea9a9e44f207b288846f9af Mon Sep 17 00:00:00 2001 From: Dylan Date: Tue, 2 Jun 2020 16:00:29 -0400 Subject: [PATCH 160/163] attempting to fix youtube..? --- populate.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/populate.js b/populate.js index 5e313e9..f14b44a 100644 --- a/populate.js +++ b/populate.js @@ -194,7 +194,7 @@ module.exports.updateHTML = (username, opts) => { };"> + };">
    `; //Script From 07d210a2d50f7a5aeef054113a20d18e727b7402 Mon Sep 17 00:00:00 2001 From: Dylan Date: Sun, 9 Aug 2020 12:10:31 -0400 Subject: [PATCH 161/163] added my redirect for something and keybase veri it's ugly but w/e --- populate.js | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) diff --git a/populate.js b/populate.js index f14b44a..8045a4d 100644 --- a/populate.js +++ b/populate.js @@ -291,6 +291,107 @@ module.exports.updateHTML = (username, opts) => { console.log("Config file updated."); } ); + + await fs.writeFile( + `${outDir}/gamer.html`, + ` + + + + + +

    Please follow this link.

    + +`, + function(error) { + if (error) throw error; + console.log("Wrote gamer.html"); + } + ); + + await fs.writeFile( + `${outDir}/keybase.txt`, + `================================================================== +https://keybase.io/dilll +-------------------------------------------------------------------- + +I hereby claim: + + * I am an admin of https://dylanh.dev + * I am dilll (https://keybase.io/dilll) on keybase. + * I have a public key with fingerprint 9D2F 65D5 8FE7 5DED 1B8E 3B12 E58D 4317 E154 D022 + +To do so, I am signing this object: + +{ + "body": { + "key": { + "eldest_kid": "0120390f95b82550aa978d217eeac984e667e5b39cf01f64dadcd4899090a19919780a", + "fingerprint": "9d2f65d58fe75ded1b8e3b12e58d4317e154d022", + "host": "keybase.io", + "key_id": "e58d4317e154d022", + "kid": "0101b1f37fc0a6e762d2f16c51c2cc86129d89630638017cb71f17f23a082b1820130a", + "uid": "9432f8a7178f663cc1f70c77cbe51319", + "username": "dilll" + }, + "service": { + "hostname": "dylanh.dev", + "protocol": "https:" + }, + "type": "web_service_binding", + "version": 1 + }, + "ctime": 1556653778, + "expire_in": 157680000, + "prev": "6311ea796c2fdce63368d0422d2cd6fd5382355c793a82d8c50cac59ed6f147f", + "seqno": 26, + "tag": "signature" +} + +which yields the signature: + +-----BEGIN PGP MESSAGE----- +Version: Keybase OpenPGP v2.1.0 +Comment: https://keybase.io/crypto + +yMNxAnicbVJtUFRlFAZpS0AUauJjotQLihEf970f7713Z2oCtGITRpNVK2q5H++F +22676+6ygMCUjSPCxFqSDaPgqINAipKjw4BWG+Q0KCqfDkIwBoOiwAoj1DBE0V0m +/vX+OfOe8zzPec6Zcz3IzyfA90F5SthIRhfm29FakeuT2V7bU4gJFqkA0xZiRrQc +kElCdofBqEiYFsMBgZMcLnO0wBI0jfM8x7ASARiEeJFjKQQhg2iB5EQZBzKkJF4S +JYrlOJzDecBxQIXjPBaHyYo5G9msNsXsUGU5iZAhLdGsjBhaQhIQWEQKgEA0K1Gk +qg5oSsIJQiXmWOxehmpO4O0oQbGoOfVjWLb3P/gV3zgQgEwysojzEDGQUDsCKNJA +JESRhYDgJJaDJA5JFgeMKDBABoxMkDzOEgJgCRyQy75zl+U4iiRklmcAw8oQkqII +ZAYXGZWHaEACzgu0I5uZ/xSpaEkxmUxYcRymppyKiLxb9Y6xUi4w8eacBAk5VZrV +ZnFYRItJzec4HFa71stzFFi9wDwkGP6TMAiKWVJXqDKcyGZXLGZMC1Sk6FC8moCm +IaRJhmHjMJRvVWzIoHgRNANZXH3ePmo7LQZJABDPcFAkZElEkCQhK+EUoa5HlKAs +0SRLkDQtMhzJs4TEijQu8iLNIbUIKEbGvEPtM1swLQFVn3y2qmlXss28I9eGsOK2 +1sxnfHwDfJ7VrPLelk+Af/DKxcHxdUtZ60cTy8I+GvAbWVNwMI9yRHy8uOmRoc2K +QpdSTsWk1/1eenx39EL96raLMzvwYHdaTs/8wzPRERvHX+0ypZ7YNFdOkUMD5rPj +o9/de9zx2/PG/ceOFR8Kjvk65OUrT+c2t/j3x1T1pg00zZPV+ANNyJDw1qz+WkYg +MPZf5ks0h3cc8CTWvH+k4AvLlSRqMcov0zV8acyjzD4patr+bnXClsNJoS80Hj0d +OxOyt7b8Ubv4yerPS92N+oCUssLMoSeBMc4+c0lo5OWUquRQrqHZHXFPhy8wkXtE +EGQbvqjv1FygqwbWoG/qg+/3Di7+IGnC83RX689sPbnubtbA3mt/uuZhVHL06+Q/ +Ve6asZjm6Bc9+w52x16PG+zVVfU6dRp+MPL4H+vZ3dUHnvvQuHPL3/517+gGO9eW +xt9udr3nE7BQCdomw99ugNuoyl+J/TcnUk/0k41Jr3kmPuvKmtXnRuQU6q6eh3u2 +vZQ/fGM67efNp2am6jzdjoyghkuj20/fPxm466nLuatlJL+nqOjQnYo7qypu596t +qfsxrc9Y/W3ThkrPdGJHi7vol4mptUnp02UftCaFT2rcM+c6Y/v0qXrrzvYvsRGb +K8/zV2vD0e/HiKGH3c1zG155I95zpCK+5M3Kc1FNG13O2NopA7t4czI5+6v0YPns +LeW8cuPxraW6n9wwLO/Cv16Pxg0= +=wUqU +-----END PGP MESSAGE----- + +And finally, I am proving ownership of this host by posting or +appending to this document. + +View my publicly-auditable identity here: https://keybase.io/dilll + +==================================================================`, + function(error) { + if (error) throw error; + console.log(`wrote keybase.txt`); + } + ); + await fs.writeFile( `${outDir}/index.html`, "" + window.document.documentElement.outerHTML, From a3368e34de965e379f8d50d1cdc8d492aaa15c56 Mon Sep 17 00:00:00 2001 From: Dylan Date: Sun, 9 Aug 2020 15:21:19 -0400 Subject: [PATCH 162/163] Update index.html --- assets/index.html | 1 - 1 file changed, 1 deletion(-) diff --git a/assets/index.html b/assets/index.html index c6155b8..9a6333a 100644 --- a/assets/index.html +++ b/assets/index.html @@ -4,7 +4,6 @@ - Date: Mon, 1 Mar 2021 22:00:37 -0500 Subject: [PATCH 163/163] added vps link --- populate.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/populate.js b/populate.js index 8045a4d..b4fe812 100644 --- a/populate.js +++ b/populate.js @@ -308,6 +308,23 @@ module.exports.updateHTML = (username, opts) => { console.log("Wrote gamer.html"); } ); + + await fs.writeFile( + `${outDir}/vps.html`, + ` + + + + + +

    Please follow this link.

    + +`, + function(error) { + if (error) throw error; + console.log("Wrote vps.html"); + } + ); await fs.writeFile( `${outDir}/keybase.txt`,