From 005c83d56664b73532c9184be2d2b688d48100a5 Mon Sep 17 00:00:00 2001 From: Andreas Richter Date: Sun, 2 Feb 2020 13:50:33 +0100 Subject: [PATCH 1/7] chore: upgrade dependencies --- .eslintrc | 2 +- bin/nlm.js | 2 + lib/git/ensure-tag.js | 2 +- lib/github/client.js | 10 +- lib/license/index.js | 2 +- lib/steps/changelog.js | 12 +- lib/steps/github-release.js | 2 +- lib/steps/pending-changes.js | 4 +- lib/steps/version-commit.js | 8 +- package-lock.json | 1951 ++++++++++++++++++++++------------ package.json | 28 +- test/steps/changelog.test.js | 14 +- 12 files changed, 1293 insertions(+), 744 deletions(-) diff --git a/.eslintrc b/.eslintrc index ca3c940..5999f9d 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,3 +1,3 @@ { - "extends": "groupon/node6" + "extends": "groupon" } diff --git a/bin/nlm.js b/bin/nlm.js index 644de7f..9996b5e 100755 --- a/bin/nlm.js +++ b/bin/nlm.js @@ -1,3 +1,5 @@ #!/usr/bin/env node + 'use strict'; + require('../lib/cli.js'); diff --git a/lib/git/ensure-tag.js b/lib/git/ensure-tag.js index b7bb85d..db5c384 100644 --- a/lib/git/ensure-tag.js +++ b/lib/git/ensure-tag.js @@ -38,7 +38,7 @@ const fs = require('fs'); const run = require('../run'); function fetchTag(cwd, tag) { - return run('git', ['fetch', 'origin', 'tag', tag], { cwd: cwd }); + return run('git', ['fetch', 'origin', 'tag', tag], { cwd }); } /** diff --git a/lib/github/client.js b/lib/github/client.js index f03b90d..853aa1b 100644 --- a/lib/github/client.js +++ b/lib/github/client.js @@ -48,12 +48,12 @@ Github.prototype.registerEndpoints({ return { commits: function commits(pullId) { return request('/repos/{owner}/{repo}/pulls/{pullId}/commits', { - pathParams: { pullId: pullId }, + pathParams: { pullId }, }).json(); }, get: function get(pullId) { return request('/repos/{owner}/{repo}/pulls/{pullId}', { - pathParams: { pullId: pullId }, + pathParams: { pullId }, }).json(); }, }; @@ -72,13 +72,13 @@ Github.prototype.registerEndpoints({ }, listByIssue: function listByIssue(issueId) { return request('/repos/{owner}/{repo}/issues/{issueId}/labels', { - pathParams: { issueId: issueId }, + pathParams: { issueId }, }).json(); }, setForIssue: function setForIssue(issueId, labels) { return request('/repos/{owner}/{repo}/issues/{issueId}/labels', { method: 'PUT', - pathParams: { issueId: issueId }, + pathParams: { issueId }, json: labels, }); }, @@ -100,7 +100,7 @@ Github.prototype.registerEndpoints({ return { get: function get(tag) { return request('/repos/{owner}/{repo}/git/refs/tags/{tag}', { - pathParams: { tag: tag }, + pathParams: { tag }, }).json(); }, }; diff --git a/lib/license/index.js b/lib/license/index.js index 94de10e..0e11910 100644 --- a/lib/license/index.js +++ b/lib/license/index.js @@ -74,7 +74,7 @@ function collectFiles(cwd, whitelist, optionalExclude) { return globAsync(`${directory}/**/*.{js,coffee}`, { ignore: exclude, nodir: true, - cwd: cwd, + cwd, root: cwd, // so /lib works as "expected" }); } diff --git a/lib/steps/changelog.js b/lib/steps/changelog.js index 38a8553..7978fb7 100644 --- a/lib/steps/changelog.js +++ b/lib/steps/changelog.js @@ -75,9 +75,11 @@ function extractBreakingChanges(commit) { if (!commit.notes || !commit.notes.length) { return []; } - return commit.notes.filter(n => n.title === 'BREAKING CHANGE').map(note => { - return { text: note.text, commit: commit }; - }); + return commit.notes + .filter(n => n.title === 'BREAKING CHANGE') + .map(note => { + return { text: note.text, commit }; + }); } function removeInvalidPRs(prs) { @@ -152,9 +154,7 @@ const generateChangeLog = co.wrap(function*(cwd, pkg, options) { return ` - ${line}`; }); - const titleLine = `${pr.title} - **[@${pr.author.name}](${ - pr.author.href - })** [#${pr.pullId}](${pr.href})`; + const titleLine = `${pr.title} - **[@${pr.author.name}](${pr.author.href})** [#${pr.pullId}](${pr.href})`; return [titleLine].concat(changes).join('\n'); } diff --git a/lib/steps/github-release.js b/lib/steps/github-release.js index 64d0708..42272e1 100644 --- a/lib/steps/github-release.js +++ b/lib/steps/github-release.js @@ -47,7 +47,7 @@ function createGithubRelease(cwd, pkg, options) { const release = { tag_name: name, target_commitish: options.versionCommitSha, - name: name, + name, body: options.changelog, }; return github.releases.create(release); diff --git a/lib/steps/pending-changes.js b/lib/steps/pending-changes.js index 1f6acbb..5b5a4ad 100644 --- a/lib/steps/pending-changes.js +++ b/lib/steps/pending-changes.js @@ -42,9 +42,7 @@ function normalizeReferences(meta, commit) { function normalizeInternalReference(ref) { ref.owner = ref.owner || meta.username; ref.repository = ref.repository || meta.repository; - ref.href = `${meta.htmlBase}/${ref.owner}/${ref.repository}/issues/${ - ref.issue - }`; + ref.href = `${meta.htmlBase}/${ref.owner}/${ref.repository}/issues/${ref.issue}`; if (ref.owner === meta.username && ref.repository === meta.repository) { ref.prefix = '#'; diff --git a/lib/steps/version-commit.js b/lib/steps/version-commit.js index 108a97b..da44333 100644 --- a/lib/steps/version-commit.js +++ b/lib/steps/version-commit.js @@ -46,7 +46,7 @@ function addFiles(cwd, files) { function commit(cwd, message) { return run('git', ['commit', '-m', message], { - cwd: cwd, + cwd, env: Object.assign({}, process.env, { GIT_AUTHOR_NAME: NLM_GIT_NAME, GIT_AUTHOR_EMAIL: NLM_GIT_EMAIL, @@ -57,7 +57,7 @@ function commit(cwd, message) { } function getHEAD(cwd) { - return run('git', ['rev-parse', 'HEAD'], { cwd: cwd }); + return run('git', ['rev-parse', 'HEAD'], { cwd }); } function updatePackageLockVersion(cwd, version, files) { @@ -90,9 +90,7 @@ function createVersionCommit(cwd, pkg, options) { } changeLogContent = ''; } - changeLogContent = `### ${options.nextVersion}\n\n${ - options.changelog - }${changeLogContent}`; + changeLogContent = `### ${options.nextVersion}\n\n${options.changelog}${changeLogContent}`; fs.writeFileSync(changeLogFile, `${changeLogContent.trim()}\n`); const packageJsonFile = path.join(cwd, 'package.json'); diff --git a/package-lock.json b/package-lock.json index 4464bff..3fff868 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,73 +4,88 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "@babel/highlight": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", + "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, "JSONStream": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.4.tgz", - "integrity": "sha512-Y7vfi3I5oMOYIr+WxV8NZxDSwcbNgzdKYsTNInmycOq9bUYwGg9ryu57Wg5NLmCjqdFPNUmpMBo3kSJN9tCbXg==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "requires": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" } }, "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz", + "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==", "dev": true }, "acorn-jsx": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", - "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", - "dev": true, - "requires": { - "acorn": "^3.0.4" - }, - "dependencies": { - "acorn": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", - "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", - "dev": true - } - } + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", + "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", + "dev": true }, "ajv": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", - "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", + "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", "dev": true, "requires": { - "co": "^4.6.0", - "fast-deep-equal": "^1.0.0", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.3.0" + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" } }, - "ajv-keywords": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", - "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", "dev": true }, "ansi-escapes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.1.0.tgz", - "integrity": "sha512-UgAb8H9D41AQnu/PbWlCofQVcnV4Gs2bBJi9eZPxfU/hgglFh3SMDMENRIqdr7H6XFnXdoknctFByVsCOotTVw==", - "dev": true + "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": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "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": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true + "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", @@ -86,20 +101,26 @@ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "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": { - "array-uniq": "^1.0.1" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" } }, - "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.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": "1.0.1", @@ -107,48 +128,19 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" }, "assertive": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/assertive/-/assertive-2.4.1.tgz", - "integrity": "sha512-A+OwJQ+eeVE51SG8pO94sUNfVBW7GH8Z65hLJhR1QpjLS02weO6PStiDJsBi7yi0D4LjL0x58VFN/6rAm9jpfg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/assertive/-/assertive-3.1.0.tgz", + "integrity": "sha512-vf0otBe/M1rpGFR6gFuNUE+4Fwr6Y2D3HQafm+6uwAq3tpJnfJtKtLrDZ09fJ99QmSFxuPnpIUwVFSF6uz1cOw==", "dev": true, "requires": { - "lodash": "^4.6.1" + "lodash.isequal": "^4.5.0" } }, - "babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dev": true, - "requires": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - }, - "dependencies": { - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.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=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } - } + "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 }, "balanced-match": { "version": "1.0.0", @@ -156,9 +148,9 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "bluebird": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.2.tgz", - "integrity": "sha512-dhHTWMI7kMx5whMQntl7Vr9C6BvV10lFXDAasnqnrMYhXVCzzk6IO9Fo2L75jXHT07WrOngL1WDXOp+yYS91Yg==" + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" }, "brace-expansion": { "version": "1.1.11", @@ -175,30 +167,10 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=" - }, - "caller-path": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", - "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", - "dev": true, - "requires": { - "callsites": "^0.2.0" - } - }, "callsites": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", - "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { @@ -248,24 +220,18 @@ } }, "chardet": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", - "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", - "dev": true - }, - "circular-json": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", - "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "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": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "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": "^2.0.0" + "restore-cursor": "^3.1.0" } }, "cli-width": { @@ -274,6 +240,45 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", "dev": true }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.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 + }, + "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" + } + }, + "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" + } + } + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -294,29 +299,11 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "commander": { - "version": "2.15.1", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "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=" }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "contains-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", @@ -324,16 +311,16 @@ "dev": true }, "conventional-commits-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.0.tgz", - "integrity": "sha512-GWh71U26BLWgMykCp+VghZ4s64wVbtseECcKQ/PvcPZR2cUnz+FUc2J9KjxNl7/ZbCxST8R03c9fc+Vi0umS9Q==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz", + "integrity": "sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ==", "requires": { "JSONStream": "^1.0.4", - "is-text-path": "^1.0.0", - "lodash": "^4.2.1", - "meow": "^4.0.0", + "is-text-path": "^1.0.1", + "lodash": "^4.17.15", + "meow": "^5.0.0", "split2": "^2.0.0", - "through2": "^2.0.0", + "through2": "^3.0.0", "trim-off-newlines": "^1.0.0" } }, @@ -343,14 +330,24 @@ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "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=", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { - "lru-cache": "^4.0.1", + "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 + } } }, "currently-unhandled": { @@ -362,11 +359,11 @@ } }, "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, "decamelize": { @@ -409,29 +406,6 @@ "object-keys": "^1.0.12" } }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "dev": true, - "requires": { - "globby": "^5.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", @@ -439,14 +413,20 @@ "dev": true }, "doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "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" } }, + "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 + }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -456,22 +436,27 @@ } }, "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", + "version": "1.17.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", + "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", "requires": { - "es-to-primitive": "^1.2.0", + "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" + "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.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -485,126 +470,204 @@ "dev": true }, "eslint": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", - "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", "dev": true, "requires": { - "ajv": "^5.3.0", - "babel-code-frame": "^6.22.0", + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", "chalk": "^2.1.0", - "concat-stream": "^1.6.0", - "cross-spawn": "^5.1.0", - "debug": "^3.1.0", - "doctrine": "^2.1.0", - "eslint-scope": "^3.7.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^3.5.4", - "esquery": "^1.0.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": "^2.0.0", + "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.0.1", - "ignore": "^3.3.3", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^3.0.6", - "is-resolvable": "^1.0.0", - "js-yaml": "^3.9.1", + "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.4", - "minimatch": "^3.0.2", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "pluralize": "^7.0.0", + "optionator": "^0.8.3", "progress": "^2.0.0", - "regexpp": "^1.0.1", - "require-uncached": "^1.0.3", - "semver": "^5.3.0", - "strip-ansi": "^4.0.0", - "strip-json-comments": "~2.0.1", - "table": "4.0.2", - "text-table": "~0.2.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": "3.2.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.5.tgz", - "integrity": "sha512-D61LaDQPQkxJ5AUM2mbSJRbPkNs/TmdmOeLAi1hgDkpDfIfetSrjmWhccwtuResSwMbACjx/xXQofvM9CE/aeg==", + "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 + }, + "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": { - "ms": "^2.1.1" + "eslint-visitor-keys": "^1.1.0" } }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "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": { - "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" + "ansi-regex": "^4.1.0" } }, - "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==", + "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 } } }, "eslint-config-groupon": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/eslint-config-groupon/-/eslint-config-groupon-6.1.1.tgz", - "integrity": "sha512-9nfrMKwGcWHtvN85qeEfsOd04ui2YlvXrwMpZelHEvpUJnlTkW685pdFM4TPLHJP2MvXdSy8PGNbTt/EfPw7Ig==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-groupon/-/eslint-config-groupon-8.0.1.tgz", + "integrity": "sha512-bDvrY/8fmQDNHkoxpXjc59J57BODtQ1dRDRkg+RxWS2pkCY0wcaxFmnge1kua5RtEy7Cc0UbnFss4F9xi71WEg==", "dev": true }, "eslint-import-resolver-node": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz", - "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==", + "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.5.0" + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "resolve": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } } }, "eslint-module-utils": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.2.0.tgz", - "integrity": "sha1-snA2LNiLGkitMIl2zn+lTphBF0Y=", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", + "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-plugin-es": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz", + "integrity": "sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==", "dev": true, "requires": { - "debug": "^2.6.8", - "pkg-dir": "^1.0.0" + "eslint-utils": "^2.0.0", + "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-import": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.14.0.tgz", - "integrity": "sha512-FpuRtniD/AY6sXByma2Wr0TXvXJ4nA/2/04VPlfpmUDPOpOY264x+ILiwnrk/k4RINgDAyFZByxqPUbSQ5YE7g==", + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", + "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", "dev": true, "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", "contains-path": "^0.1.0", - "debug": "^2.6.8", + "debug": "^2.6.9", "doctrine": "1.5.0", - "eslint-import-resolver-node": "^0.3.1", - "eslint-module-utils": "^2.2.0", - "has": "^1.0.1", - "lodash": "^4.17.4", - "minimatch": "^3.0.3", + "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.6.0" + "resolve": "^1.12.0" }, "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "doctrine": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", @@ -627,6 +690,12 @@ "strip-bom": "^3.0.0" } }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, "parse-json": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", @@ -671,72 +740,106 @@ "find-up": "^2.0.0", "read-pkg": "^2.0.0" } + }, + "resolve": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } } } }, "eslint-plugin-mocha": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-4.12.1.tgz", - "integrity": "sha512-hxWtYHvLA0p/PKymRfDYh9Mxt5dYkg2Goy1vZDarTEEYfELP9ksga7kKG1NUKSQy27C8Qjc7YrSWTLUhOEOksA==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-6.2.2.tgz", + "integrity": "sha512-oNhPzfkT6Q6CJ0HMVJ2KLxEWG97VWGTmuHOoRcDLE0U88ugUyFNV9wrT2XIt5cGtqc5W9k38m4xTN34L09KhBA==", "dev": true, "requires": { - "ramda": "^0.25.0" + "ramda": "^0.26.1" } }, "eslint-plugin-node": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-5.2.1.tgz", - "integrity": "sha512-xhPXrh0Vl/b7870uEbaumb2Q+LxaEcOQ3kS1jtIXanBAwpMre1l5q/l2l/hESYJGEFKuI78bp6Uw50hlpr7B+g==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz", + "integrity": "sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg==", "dev": true, "requires": { - "ignore": "^3.3.6", + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", "minimatch": "^3.0.4", - "resolve": "^1.3.3", - "semver": "5.3.0" + "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 + }, "semver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "dev": true } } }, "eslint-plugin-prettier": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-2.7.0.tgz", - "integrity": "sha512-CStQYJgALoQBw3FsBzH0VOVDRnJ/ZimUlpLm226U8qgqYJfPOY/CPK6wyRInMxh73HSKg5wyRwdS4BVYYHwokA==", + "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": { - "fast-diff": "^1.1.1", - "jest-docblock": "^21.0.0" + "prettier-linter-helpers": "^1.0.0" } }, "eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==", + "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": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "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 + } + } + }, "eslint-visitor-keys": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", - "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==", + "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": "3.5.4", - "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", - "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "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": "^5.5.0", - "acorn-jsx": "^3.0.0" + "acorn": "^7.1.0", + "acorn-jsx": "^5.1.0", + "eslint-visitor-keys": "^1.1.0" } }, "esprima": { @@ -764,9 +867,9 @@ } }, "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==", "dev": true }, "esutils": { @@ -776,32 +879,32 @@ "dev": true }, "external-editor": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", - "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "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.4.0", - "iconv-lite": "^0.4.17", + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", "tmp": "^0.0.33" } }, "fast-deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", - "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, "fast-diff": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", - "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", "dev": true }, "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=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true }, "fast-levenshtein": { @@ -811,22 +914,21 @@ "dev": true }, "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "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": "2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", - "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "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": "^1.2.1", - "object-assign": "^4.0.1" + "flat-cache": "^2.0.1" } }, "find-up": { @@ -837,18 +939,32 @@ "locate-path": "^2.0.0" } }, + "flat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", + "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + } + }, "flat-cache": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", - "integrity": "sha1-0wMLMrOBVPTjt+nHCfSQ9++XxIE=", + "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": { - "circular-json": "^0.3.1", - "del": "^2.0.2", - "graceful-fs": "^4.1.2", - "write": "^0.2.1" + "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 + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -866,6 +982,12 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "glob": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", @@ -878,58 +1000,49 @@ "path-is-absolute": "^1.0.0" } }, - "globals": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.8.0.tgz", - "integrity": "sha512-io6LkyPVuzCHBSQV9fmOwxZkUk6nIaGmxheLDgmuFv89j0fm2aqDbIXKAGfzCMHqz3HLF2Zf8WSG6VqMh2qFmA==", - "dev": true - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", + "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": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "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" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } + "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" } }, "gofer": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/gofer/-/gofer-3.6.0.tgz", - "integrity": "sha512-To3jKjsiAr0q1Ll2kIMpwkU3n/ietyKFZXoJKXPn5gWgMHGpq71VKfFwCd3En7JuMZmwVs65o5iaz8NIbkgePg==", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/gofer/-/gofer-3.8.1.tgz", + "integrity": "sha512-y+fUIUobKt0B0wy1VEC8MQb1rnWQ13FKoPdRoX87fA0R17pN6kvW6inqHgrHCmSGftz8KNfNTfIEq8F53rP9uQ==", "requires": { "bluebird": "^3.3.3", "debug": "^2.2.0", "lodash": "^4.6.1", "qs": "^6.1.0", "url": "^0.11.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, "graceful-fs": { @@ -951,15 +1064,6 @@ "function-bind": "^1.1.1" } }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -967,20 +1071,20 @@ "dev": true }, "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "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==" }, "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, "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==" + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==" }, "iconv-lite": { "version": "0.4.24", @@ -992,11 +1096,21 @@ } }, "ignore": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", - "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "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", @@ -1028,25 +1142,88 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", - "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", "dev": true, "requires": { - "ansi-escapes": "^3.0.0", - "chalk": "^2.0.0", - "cli-cursor": "^2.1.0", + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", "cli-width": "^2.0.0", - "external-editor": "^2.0.4", - "figures": "^2.0.0", - "lodash": "^4.3.0", - "mute-stream": "0.0.7", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", "run-async": "^2.2.0", - "rx-lite": "^4.0.8", - "rx-lite-aggregates": "^4.0.8", - "string-width": "^2.1.0", - "strip-ansi": "^4.0.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", "through": "^2.3.6" + }, + "dependencies": { + "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" + } + }, + "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 + }, + "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 + }, + "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 + } + } + } } }, "is-arrayish": { @@ -1054,23 +1231,27 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, - "is-builtin-module": { - "version": "1.0.0", - "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", - "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", - "requires": { - "builtin-modules": "^1.0.0" - } + "is-buffer": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", + "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "dev": true }, "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==" }, "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + "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==" + }, + "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": "2.0.0", @@ -1078,28 +1259,13 @@ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "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=", + "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": { - "path-is-inside": "^1.0.1" + "is-extglob": "^2.1.1" } }, "is-plain-obj": { @@ -1114,25 +1280,25 @@ "dev": true }, "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", "requires": { - "has": "^1.0.1" + "has": "^1.0.3" } }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "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.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", "requires": { - "has-symbols": "^1.0.0" + "has-symbols": "^1.0.1" } }, "is-text-path": { @@ -1154,16 +1320,10 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "jest-docblock": { - "version": "21.2.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-21.2.0.tgz", - "integrity": "sha512-5IZ7sY9dBAYSV+YjQ0Ovb540Ku7AO9Z5o2Cg789xj167iQuZ2cG+z0f3Uct6WeYLbU6aQiM2pCs7sZ+4dotydw==", - "dev": true - }, "js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "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": { @@ -1182,9 +1342,9 @@ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, "json-schema-traverse": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", - "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "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==", "dev": true }, "json-stable-stringify-without-jsonify": { @@ -1233,6 +1393,21 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, + "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 + }, + "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", @@ -1242,41 +1417,31 @@ "signal-exit": "^3.0.0" } }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, "map-obj": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=" }, "meow": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", - "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", + "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", "requires": { "camelcase-keys": "^4.0.0", "decamelize-keys": "^1.0.0", "loud-rejection": "^1.0.0", - "minimist": "^1.1.3", "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" + "trim-newlines": "^2.0.0", + "yargs-parser": "^10.0.0" } }, "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==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "minimatch": { @@ -1319,37 +1484,64 @@ } }, "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.2.tgz", + "integrity": "sha512-FgDS9Re79yU1xz5d+C4rv1G7QagNGHZ+iXF81hO8zY35YZZcLEsJVfFolfsqKFWunATEvNzMK0r/CwWd/szO9A==", "dev": true, "requires": { + "ansi-colors": "3.2.3", "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", + "debug": "3.2.6", "diff": "3.5.0", "escape-string-regexp": "1.0.5", - "glob": "7.1.2", + "find-up": "3.0.0", + "glob": "7.1.3", "growl": "1.10.5", - "he": "1.1.1", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "2.2.0", "minimatch": "3.0.4", "mkdirp": "0.5.1", - "supports-color": "5.4.0" + "ms": "2.1.1", + "node-environment-flags": "1.0.5", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.0", + "yargs-parser": "13.1.1", + "yargs-unparser": "1.6.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 + }, "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", "dev": true, "requires": { - "ms": "2.0.0" + "ms": "^2.1.1" + } + }, + "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" } }, "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1360,26 +1552,76 @@ "path-is-absolute": "^1.0.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" + } + }, + "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==", + "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": "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" + } + }, + "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 + }, "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", "dev": true, "requires": { "has-flag": "^3.0.0" } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } } } }, "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "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=", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, "natural-compare": { @@ -1388,35 +1630,96 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-environment-flags": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", + "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "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", - "is-builtin-module": "^1.0.0", + "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "resolve": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", + "requires": { + "path-parse": "^1.0.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + } } }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "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==" }, "object-keys": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.12.tgz", - "integrity": "sha512-FTMyFUm2wBcGHnH2eXmz7tC6IwlqQZ6mVZ+6dm6vZ4IQIHjs6FdNsQBuKGPuUUUY6NfJw2PshC08Tn6LzLDOag==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, - "object.getownpropertydescriptors": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", - "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", "requires": { "define-properties": "^1.1.2", - "es-abstract": "^1.5.1" + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.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" } }, "once": { @@ -1428,26 +1731,26 @@ } }, "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "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": "^1.0.0" + "mimic-fn": "^2.1.0" } }, "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==", "dev": true, "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" } }, "os-tmpdir": { @@ -1477,6 +1780,15 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=" }, + "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" + } + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -1496,17 +1808,16 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "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 }, "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 + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" }, "path-type": { "version": "3.0.0", @@ -1521,57 +1832,15 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, "pkg-dir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", - "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "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": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - } + "find-up": "^2.1.0" } }, - "pluralize": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", - "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", - "dev": true - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -1579,26 +1848,29 @@ "dev": true }, "prettier": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.14.3.tgz", - "integrity": "sha512-qZDVnCrnpsRJJq5nSsiHCE3BYMED2OtsI+cmzIzF1QIfqm5ALf8tEJcO27zV1gKNKRPdhjO0dNWnrzssDQ1tFg==", + "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" + } + }, "process-nextick-args": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", - "dev": true - }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "punycode": { @@ -1607,9 +1879,9 @@ "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" }, "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.9.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", + "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==" }, "querystring": { "version": "0.2.0", @@ -1622,9 +1894,9 @@ "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=" }, "ramda": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", - "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", "dev": true }, "rc": { @@ -1681,59 +1953,61 @@ } }, "regexpp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", - "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", "dev": true }, - "require-uncached": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", - "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", - "dev": true, - "requires": { - "caller-path": "^0.1.0", - "resolve-from": "^1.0.0" - } + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true }, "resolve": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.8.1.tgz", - "integrity": "sha512-AicPrAC7Qu1JxPCZ9ZgCZlY35QgFnNqc+0LtbRNxnVw4TXvjQ72wnuL9JQcEBgXkI9JM8MsT9kaQoHcpCRJOYA==", + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", "dev": true, "requires": { - "path-parse": "^1.0.5" + "path-parse": "^1.0.6" } }, "resolve-from": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", - "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "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 }, "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "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": "^2.0.0", + "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "rimraf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz", - "integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==", + "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.0.5" + "glob": "^7.1.3" }, "dependencies": { "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "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", @@ -1755,19 +2029,13 @@ "is-promise": "^2.1.0" } }, - "rx-lite": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", - "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", - "dev": true - }, - "rx-lite-aggregates": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", - "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "rxjs": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "dev": true, "requires": { - "rx-lite": "*" + "tslib": "^1.9.0" } }, "safe-buffer": { @@ -1782,9 +2050,15 @@ "dev": true }, "semver": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.1.tgz", - "integrity": "sha512-PqpAxfrEhlSUWge8dwIp4tZnQ25DIOthpiaHNIthsjEFQD6EvqUKUDM7L8O2rShkFccYo1VjJR0coWfNkCubRw==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.2.tgz", + "integrity": "sha512-BJs9T/H8sEVHbeigqzIEo57Iu/3DG6c4QoqTfbQB3BPA4zgzAomh/Fk9E7QtjWQ8mx2dgA9YCfSF4y9k9bHNpQ==" + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true }, "shebang-command": { "version": "1.2.0", @@ -1807,18 +2081,20 @@ "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "slice-ansi": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", - "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "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" } }, "spdx-correct": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.0.1.tgz", - "integrity": "sha512-hxSPZbRZvSDuOvADntOElzJpenIR7wXJkuoUcUtS0erbgt2fgeaoPIYretfKpslMhfFDY4k0MZ2F5CUzhBsSvQ==", + "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" @@ -1839,9 +2115,9 @@ } }, "spdx-license-ids": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.1.tgz", - "integrity": "sha512-TfOfPcYGBB5sDuPn3deByxPhmfegAhpDYKSOXZQN81Oyrrif8ZCodOLzK3AesELnCx03kikhyDwh0pfvvQvF8w==" + "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==" }, "split2": { "version": "2.2.0", @@ -1849,6 +2125,17 @@ "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", "requires": { "through2": "^2.0.2" + }, + "dependencies": { + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + } } }, "sprintf-js": { @@ -1867,6 +2154,24 @@ "strip-ansi": "^4.0.0" } }, + "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==", + "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==", + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -1908,29 +2213,58 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "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" + } }, "table": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", - "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "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": "^5.2.3", - "ajv-keywords": "^2.1.0", - "chalk": "^2.1.0", - "lodash": "^4.17.4", - "slice-ansi": "1.0.0", - "string-width": "^2.1.1" + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.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 + }, + "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" + } + }, + "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" + } + } } }, "text-extensions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.8.0.tgz", - "integrity": "sha512-mVzjRxuWnDKs/qH1rbOJEVHLlSX9kty9lpi7lMvLgU9S74mQ8/Ozg9UPcKxShh0qG2NZ+NyPOPpcZU4C1Eld9A==" + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==" }, "text-table": { "version": "0.2.0", @@ -1944,12 +2278,11 @@ "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", - "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", + "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", "requires": { - "readable-stream": "^2.1.5", - "xtend": "~4.0.1" + "readable-stream": "2 || 3" } }, "tmp": { @@ -1971,6 +2304,12 @@ "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=" }, + "tslib": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "dev": true + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -1980,12 +2319,29 @@ "prelude-ls": "~1.1.2" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true }, + "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==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", @@ -2001,14 +2357,22 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "util.promisify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", - "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", "requires": { - "define-properties": "^1.1.2", - "object.getownpropertydescriptors": "^2.0.3" + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" } }, + "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 + }, "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", @@ -2027,36 +2391,223 @@ "isexe": "^2.0.0" } }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.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 + }, + "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" + } + }, + "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" + } + }, + "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" + } + } + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "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" } }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true + }, + "yargs": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", + "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.1" + }, + "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 + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "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" + } + }, + "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-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": "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" + } + }, + "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 + }, + "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" + } + }, + "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" + } + }, + "yargs-parser": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", + "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "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==", + "requires": { + "camelcase": "^4.1.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } } } } diff --git a/package.json b/package.json index de763ef..7d1caa0 100644 --- a/package.json +++ b/package.json @@ -32,25 +32,25 @@ }, "dependencies": { "co": "^4.6.0", - "conventional-commits-parser": "^3.0.0", - "debug": "^2.2.0", + "conventional-commits-parser": "^3.0.8", + "debug": "^4.1.1", "glob": "^6.0.1", - "gofer": "^3.2.0", + "gofer": "^3.8.1", "minimist": "^1.2.0", "rc": "^1.2.8", - "semver": "^5.1.0", - "util.promisify": "^1.0.0" + "semver": "^7.1.2", + "util.promisify": "^1.0.1" }, "devDependencies": { - "assertive": "^2.1.0", - "eslint": "^4.7.1", - "eslint-config-groupon": "^6.0.0", - "eslint-plugin-import": "^2.8.0", - "eslint-plugin-mocha": "^4.12.1", - "eslint-plugin-node": "^5.1.1", - "eslint-plugin-prettier": "^2.2.0", - "mocha": "^5.2.0", - "prettier": "^1.6.1" + "assertive": "^3.1.0", + "eslint": "^6.8.0", + "eslint-config-groupon": "^8.0.1", + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-mocha": "^6.2.2", + "eslint-plugin-node": "^11.0.0", + "eslint-plugin-prettier": "^3.1.2", + "mocha": "^6.2.2", + "prettier": "^1.19.1" }, "author": { "name": "Groupon", diff --git a/test/steps/changelog.test.js b/test/steps/changelog.test.js index 9b118ae..a6fba5d 100644 --- a/test/steps/changelog.test.js +++ b/test/steps/changelog.test.js @@ -109,7 +109,7 @@ describe('generateChangeLog', () => { it('can create an empty changelog', () => { const pkg = { repository: 'usr/proj' }; const commits = []; - const options = { commits: commits }; + const options = { commits }; return generateChangeLog(null, pkg, options).then(changelog => { assert.equal('', changelog); }); @@ -151,7 +151,7 @@ describe('generateChangeLog', () => { ], }, ]; - const options = { commits: commits }; + const options = { commits }; const href0 = `https://github.com/usr/proj/commit/${commits[0].sha}`; const href1 = `https://github.com/usr/proj/commit/${commits[1].sha}`; return generateChangeLog(null, pkg, options).then(changelog => { @@ -184,7 +184,7 @@ describe('generateChangeLog', () => { subject: 'Do more things', }, ]; - const options = { commits: commits }; + const options = { commits }; const href0 = `https://github.com/usr/proj/commit/${commits[0].sha}`; const href1 = `https://github.com/usr/proj/commit/${commits[1].sha}`; return generateChangeLog(null, pkg, options).then(changelog => { @@ -218,7 +218,7 @@ describe('generateChangeLog', () => { ], }, ]; - const options = { commits: commits }; + const options = { commits }; const href0 = `https://github.com/usr/proj/commit/${commits[0].sha}`; const href1 = `https://github.com/usr/proj/commit/${commits[1].sha}`; return generateChangeLog(null, pkg, options).then(changelog => { @@ -261,7 +261,7 @@ describe('generateChangeLog', () => { pullId: '1', }, ]; - const options = { commits: commits }; + const options = { commits }; let changelog = null; before('generateChangeLog', () => { @@ -305,7 +305,7 @@ describe('generateChangeLog', () => { if (commit.type === 'pr') return commit; return { sha: commit.sha, header: commit.subject }; }); - const options = { commits: commits }; + const options = { commits }; let changelog = null; let sloppyChangelog = null; @@ -359,7 +359,7 @@ describe('generateChangeLog', () => { pullId: '3', }, ]; - const options = { commits: commits }; + const options = { commits }; let changelog = null; before('generateChangeLog', () => { From edc920b81a231d3fdbfceaaf91c69e4ad380731d Mon Sep 17 00:00:00 2001 From: Andreas Richter Date: Mon, 3 Feb 2020 10:56:14 +0100 Subject: [PATCH 2/7] style: address lint errors & warnings --- lib/cli.js | 2 ++ lib/github/parse-repository.js | 6 +++--- test/steps/publish-to-npm.test.js | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/cli.js b/lib/cli.js index 9466bab..235387a 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -30,6 +30,8 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/*eslint no-process-exit: "off"*/ + 'use strict'; const path = require('path'); diff --git a/lib/github/parse-repository.js b/lib/github/parse-repository.js index 7887a01..59aed66 100644 --- a/lib/github/parse-repository.js +++ b/lib/github/parse-repository.js @@ -32,7 +32,7 @@ 'use strict'; -const Url = require('url'); +const { URL } = require('url'); const PUBLIC_BASE = 'https://api.github.com'; @@ -46,9 +46,9 @@ function parseRepository(repositoryField) { throw new Error(`Invalid or missing repository field: ${repositoryField}`); } - // Transform git@ into git+ssh://git@ which Url.parse can handle + // Transform git@ into git+ssh://git@ which URL constructor can handle const url = repository.replace(/^git@([^:]+):(.*)$/, 'git+ssh://git@$1/$2'); - const parsed = Url.parse(url); + const parsed = new URL(url, 'git+ssh://git@github.com'); const host = parsed.host || 'github.com'; const match = (parsed.pathname || '').match( /^\/?([\w-]+)\/([\w-.]+?)(?:\.git)?$/ diff --git a/test/steps/publish-to-npm.test.js b/test/steps/publish-to-npm.test.js index 07e8fc5..13abd02 100644 --- a/test/steps/publish-to-npm.test.js +++ b/test/steps/publish-to-npm.test.js @@ -89,7 +89,7 @@ describe('publishToNpm', () => { distTag: 'latest', commit: true, npmUsername: 'robin', - npmPasswordBase64: new Buffer('passw0rd').toString('base64'), + npmPasswordBase64: Buffer.from('passw0rd').toString('base64'), npmEmail: 'robin@example.com', npmToken: '', }).then(() => { @@ -98,7 +98,7 @@ describe('publishToNpm', () => { { method: 'PUT', url: '/nlm-test-pkg', - auth: `Basic ${new Buffer('robin:passw0rd').toString('base64')}`, + auth: `Basic ${Buffer.from('robin:passw0rd').toString('base64')}`, }, ], httpCalls.filter(c => c.method !== 'GET') From 02d73e24d92feba06afb93ae3db35a23a39139e5 Mon Sep 17 00:00:00 2001 From: Andreas Richter Date: Mon, 3 Feb 2020 11:29:24 +0100 Subject: [PATCH 3/7] refactor: drop Node 6 support & upgrade packages BREAKING CHANGE: - drop Node 6 support --- .travis.yml | 12 +- package-lock.json | 453 +++++++++++++++++++++++++++------------------- package.json | 11 +- 3 files changed, 280 insertions(+), 196 deletions(-) diff --git a/.travis.yml b/.travis.yml index 387043a..d1b8ebe 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,12 @@ language: node_js node_js: - - 6.14.3 - - 8.11.3 - - 10.5.0 + - '8' + - '10' + - '12' deploy: - provider: script - script: ./bin/nlm.js release + script: npx nlm release skip_cleanup: true 'on': branch: master - node: 10.5.0 -before_install: - - npm i -g npm@^6 + node: '12' diff --git a/package-lock.json b/package-lock.json index 3fff868..f7ea7f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,7 +7,7 @@ "@babel/code-frame": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", - "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "integrity": "sha1-M+JZA9dIEYFTThLsCiXxa2/PQZ4=", "dev": true, "requires": { "@babel/highlight": "^7.8.3" @@ -16,7 +16,7 @@ "@babel/highlight": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.8.3.tgz", - "integrity": "sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==", + "integrity": "sha1-KPFz0EIj6qpZvB1Dmjg25tEmV5c=", "dev": true, "requires": { "chalk": "^2.0.0", @@ -27,7 +27,7 @@ "JSONStream": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "integrity": "sha1-MgjB8I06TZkmGrZPkjArwV4RHKA=", "requires": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -42,13 +42,13 @@ "acorn-jsx": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.1.0.tgz", - "integrity": "sha512-tMUqwBWfLFbJbizRmEcWSLw6HnFzfdJs2sOJEOwwtVPMoH/0Ay+E703oZz78VSXZiiDcZrQ5XKjPIUQixhmgVw==", + "integrity": "sha1-KUrbcbVzmLBoABXwo4xWPuHbU4Q=", "dev": true }, "ajv": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz", - "integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==", + "integrity": "sha1-w2B8vIrjktilpTbyWyH45fP4f+k=", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", @@ -81,16 +81,26 @@ "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==", + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=", "dev": true, "requires": { "color-convert": "^1.9.0" } }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", "dev": true, "requires": { "sprintf-js": "~1.0.2" @@ -104,7 +114,7 @@ "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==", + "integrity": "sha1-zdZ+aFK9+cEhVGB4ZzIlXtJFk0g=", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -115,7 +125,7 @@ "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==", + "integrity": "sha1-DegrQmsDGNv9uUAInjiwQ9N/bHs=", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -130,7 +140,7 @@ "assertive": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/assertive/-/assertive-3.1.0.tgz", - "integrity": "sha512-vf0otBe/M1rpGFR6gFuNUE+4Fwr6Y2D3HQafm+6uwAq3tpJnfJtKtLrDZ09fJ99QmSFxuPnpIUwVFSF6uz1cOw==", + "integrity": "sha1-t16Pj3HuobbgnnrO+ZvsXLsMcxA=", "dev": true, "requires": { "lodash.isequal": "^4.5.0" @@ -139,7 +149,7 @@ "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", - "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=", "dev": true }, "balanced-match": { @@ -147,20 +157,30 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "integrity": "sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=", "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -170,7 +190,7 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "integrity": "sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M=", "dev": true }, "camelcase": { @@ -222,9 +242,25 @@ "chardet": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "integrity": "sha1-kAlISfCTfy7twkJdDSip5fDLrZ4=", "dev": true }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, "cli-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", @@ -287,7 +323,7 @@ "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==", + "integrity": "sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg=", "dev": true, "requires": { "color-name": "1.1.3" @@ -313,7 +349,7 @@ "conventional-commits-parser": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.8.tgz", - "integrity": "sha512-YcBSGkZbYp7d+Cr3NWUeXbPDFUN6g3SaSIzOybi8bjHL5IJ5225OSCxJJ4LgziyEJ7AaJtE9L2/EU6H7Nt/DDQ==", + "integrity": "sha1-IzEKm9psk8h0IkN15ysJ+ydf5xA=", "requires": { "JSONStream": "^1.0.4", "is-text-path": "^1.0.1", @@ -332,7 +368,7 @@ "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=", "dev": true, "requires": { "nice-try": "^1.0.4", @@ -345,7 +381,7 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", "dev": true } } @@ -361,7 +397,7 @@ "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", "requires": { "ms": "^2.1.1" } @@ -390,7 +426,7 @@ "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==" + "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=" }, "deep-is": { "version": "0.1.3", @@ -401,7 +437,7 @@ "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==", + "integrity": "sha1-z4jabL7ib+bbcJT2HYcMvYTO6fE=", "requires": { "object-keys": "^1.0.12" } @@ -415,7 +451,7 @@ "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=", "dev": true, "requires": { "esutils": "^2.0.2" @@ -424,13 +460,13 @@ "emoji-regex": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "integrity": "sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY=", "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==", + "integrity": "sha1-tKxAZIEH/c3PriQvQovqihTU8b8=", "requires": { "is-arrayish": "^0.2.1" } @@ -438,7 +474,7 @@ "es-abstract": { "version": "1.17.4", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", + "integrity": "sha1-467fGXBrIOfCWUw1/A1XYFp54YQ=", "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", @@ -456,7 +492,7 @@ "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==", + "integrity": "sha1-5VzUyc3BiLzvsDs2bHNjI/xciYo=", "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -555,13 +591,13 @@ "eslint-config-groupon": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/eslint-config-groupon/-/eslint-config-groupon-8.0.1.tgz", - "integrity": "sha512-bDvrY/8fmQDNHkoxpXjc59J57BODtQ1dRDRkg+RxWS2pkCY0wcaxFmnge1kua5RtEy7Cc0UbnFss4F9xi71WEg==", + "integrity": "sha1-XPJ1eQF/rc+ADaAdqCyXIvfPPhs=", "dev": true }, "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==", + "integrity": "sha1-26pStrKBa1C8ZxGvdUIt6AjphAQ=", "dev": true, "requires": { "debug": "^2.6.9", @@ -571,7 +607,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" @@ -597,7 +633,7 @@ "eslint-module-utils": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.5.2.tgz", - "integrity": "sha512-LGScZ/JSlqGKiT8OC+cYRxseMjyqt6QO54nl281CK93unD89ijSeRV6An8Ci/2nvWVKe8K/Tqdm75RQoIOCr+Q==", + "integrity": "sha1-eHj3UEgk4bhX3SUFtZqOXtompwg=", "dev": true, "requires": { "debug": "^2.6.9", @@ -607,7 +643,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" @@ -624,7 +660,7 @@ "eslint-plugin-es": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.0.tgz", - "integrity": "sha512-6/Jb/J/ZvSebydwbBJO1R9E5ky7YeElfK56Veh7e4QGFHCXoIXGH9HhVz+ibJLM3XJ1XjP+T7rKBLUa/Y7eIng==", + "integrity": "sha1-mMsbyKsKqAeXeFXhGtnRyUItAUs=", "dev": true, "requires": { "eslint-utils": "^2.0.0", @@ -634,7 +670,7 @@ "regexpp": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.0.0.tgz", - "integrity": "sha512-Z+hNr7RAVWxznLPuA7DIh8UNX1j9CDrUQxskw9IrBE1Dxue2lyXT+shqEIeLUjrokxIP8CMy1WkjgG3rTsd5/g==", + "integrity": "sha1-3WOYLuMwDme0HBlW+FCqaA2dMw4=", "dev": true } } @@ -642,7 +678,7 @@ "eslint-plugin-import": { "version": "2.20.1", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", - "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", + "integrity": "sha1-gCQjGW3LEdnOhDWl/AKm07RpObM=", "dev": true, "requires": { "array-includes": "^3.0.3", @@ -662,7 +698,7 @@ "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", "dev": true, "requires": { "ms": "2.0.0" @@ -755,7 +791,7 @@ "eslint-plugin-mocha": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-6.2.2.tgz", - "integrity": "sha512-oNhPzfkT6Q6CJ0HMVJ2KLxEWG97VWGTmuHOoRcDLE0U88ugUyFNV9wrT2XIt5cGtqc5W9k38m4xTN34L09KhBA==", + "integrity": "sha1-bvS3i9EtdEvrCKBuggneMwmFEA0=", "dev": true, "requires": { "ramda": "^0.26.1" @@ -764,7 +800,7 @@ "eslint-plugin-node": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz", - "integrity": "sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg==", + "integrity": "sha1-NllEuwgExdHVARgqm8QaD/7+1yY=", "dev": true, "requires": { "eslint-plugin-es": "^3.0.0", @@ -778,13 +814,13 @@ "ignore": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.4.tgz", - "integrity": "sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A==", + "integrity": "sha1-hLez2+ZFUrbvDsqZ9nQ9vsbZet8=", "dev": true }, "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "integrity": "sha1-7gpkyK9ejO6mdoexM3YeG+y9HT0=", "dev": true } } @@ -792,7 +828,7 @@ "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==", + "integrity": "sha1-Qy5aZnZmq4TOcvlFxy932Zalybo=", "dev": true, "requires": { "prettier-linter-helpers": "^1.0.0" @@ -828,7 +864,7 @@ "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==", + "integrity": "sha1-4qgs6oT/JGrW+1f5veW0ZiFFnsI=", "dev": true }, "espree": { @@ -845,13 +881,13 @@ "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", "dev": true }, "esquery": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "integrity": "sha1-QGxRZYsfWZGl+bYrHcJbAOPlxwg=", "dev": true, "requires": { "estraverse": "^4.0.0" @@ -860,7 +896,7 @@ "esrecurse": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=", "dev": true, "requires": { "estraverse": "^4.1.0" @@ -869,7 +905,7 @@ "estraverse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "integrity": "sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=", "dev": true }, "esutils": { @@ -881,7 +917,7 @@ "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "integrity": "sha1-ywP3QL764D6k0oPK7SdBqD8zVJU=", "dev": true, "requires": { "chardet": "^0.7.0", @@ -892,19 +928,19 @@ "fast-deep-equal": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", - "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "integrity": "sha1-VFFFB3xQFJHjOxXsQIwpQ3bpSuQ=", "dev": true }, "fast-diff": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "integrity": "sha1-c+4RmC2Gyq95WYKNUZz+kn+sXwM=", "dev": true }, "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "integrity": "sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=", "dev": true }, "fast-levenshtein": { @@ -925,12 +961,21 @@ "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==", + "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=", "dev": true, "requires": { "flat-cache": "^2.0.1" } }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, "find-up": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", @@ -951,7 +996,7 @@ "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=", "dev": true, "requires": { "flatted": "^2.0.0", @@ -962,19 +1007,25 @@ "flatted": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "integrity": "sha1-aeV8qo8OrLwoHS4stFjUb9tEngg=", "dev": true }, "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=" + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=" }, "functional-red-black-tree": { "version": "1.0.1", @@ -989,13 +1040,14 @@ "dev": true }, "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha1-DwiGD2oVUSey+t1PnOJLGqtuTSI=", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { + "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "2 || 3", + "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } @@ -1019,15 +1071,15 @@ } }, "gofer": { - "version": "3.8.1", - "resolved": "https://registry.npmjs.org/gofer/-/gofer-3.8.1.tgz", - "integrity": "sha512-y+fUIUobKt0B0wy1VEC8MQb1rnWQ13FKoPdRoX87fA0R17pN6kvW6inqHgrHCmSGftz8KNfNTfIEq8F53rP9uQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gofer/-/gofer-4.1.0.tgz", + "integrity": "sha512-8J2K3g664K877fyFPCM+swsjF14yiT2YdE+S/tC+U+jLKZC2uakSIjvn9zSN2Hwtr8eKF0jXs5711dcVcw0Ubw==", "requires": { - "bluebird": "^3.3.3", "debug": "^2.2.0", - "lodash": "^4.6.1", - "qs": "^6.1.0", - "url": "^0.11.0" + "lodash.isobjectlike": "^4.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.mergewith": "^4.6.2" }, "dependencies": { "debug": { @@ -1059,7 +1111,7 @@ "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "integrity": "sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=", "requires": { "function-bind": "^1.1.1" } @@ -1073,7 +1125,7 @@ "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==" + "integrity": "sha1-n1IUdYpEGWxAbZvXbOv4HsLdMeg=" }, "he": { "version": "1.2.0", @@ -1084,12 +1136,12 @@ "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==" + "integrity": "sha1-dZz88sTRVq3lmwst+r3cQqa5xww=" }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" @@ -1098,13 +1150,13 @@ "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=", "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==", + "integrity": "sha1-Yz/2GFBueTr1rJG/SLcmd+FcvmY=", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -1139,7 +1191,7 @@ "ini": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc=" }, "inquirer": { "version": "7.0.4", @@ -1231,6 +1283,15 @@ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, "is-buffer": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", @@ -1240,12 +1301,12 @@ "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==" + "integrity": "sha1-9+RrWWiQRW23Tn9ul2yzJz0G+qs=" }, "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==" + "integrity": "sha1-vac28s2P0G0yhE53Q7+nSUw7/X4=" }, "is-extglob": { "version": "2.1.1", @@ -1268,6 +1329,12 @@ "is-extglob": "^2.1.1" } }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -1282,7 +1349,7 @@ "is-regex": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "integrity": "sha1-OdWJo1i/GJZ/cmlnEguPwa7XTq4=", "requires": { "has": "^1.0.3" } @@ -1290,13 +1357,13 @@ "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==", + "integrity": "sha1-QEk+0ZjvP/R3uMf5L2ROyCpc06Y=", "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==", + "integrity": "sha1-OOEBS55jKb4N6dJKQU/XRB7GGTc=", "requires": { "has-symbols": "^1.0.1" } @@ -1323,13 +1390,13 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=", "dev": true }, "js-yaml": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", "dev": true, "requires": { "argparse": "^1.0.7", @@ -1339,12 +1406,12 @@ "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==" + "integrity": "sha1-u4Z8+zRQ5pEHwTHRxRS6s9yLyqk=" }, "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==", + "integrity": "sha1-afaofZUTq4u4/mO9sJecRI5oRmA=", "dev": true }, "json-stable-stringify-without-jsonify": { @@ -1391,7 +1458,7 @@ "lodash": { "version": "4.17.15", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", - "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" + "integrity": "sha1-tEf2ZwoEVbv+7dETku/zMOoJdUg=" }, "lodash.isequal": { "version": "4.5.0", @@ -1399,6 +1466,26 @@ "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", "dev": true }, + "lodash.isobjectlike": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/lodash.isobjectlike/-/lodash.isobjectlike-4.0.0.tgz", + "integrity": "sha1-dCxfxlrdJ5JNPSQZFoGqmheytg0=" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" + }, "log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", @@ -1425,7 +1512,7 @@ "meow": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/meow/-/meow-5.0.0.tgz", - "integrity": "sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig==", + "integrity": "sha1-38c9Y6mvxxSl43F2DrXIi5EHiqQ=", "requires": { "camelcase-keys": "^4.0.0", "decamelize-keys": "^1.0.0", @@ -1447,7 +1534,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "requires": { "brace-expansion": "^1.1.7" } @@ -1460,7 +1547,7 @@ "minimist-options": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", - "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "integrity": "sha1-+6TIGRM54T7PTWG+sD8HAQPz2VQ=", "requires": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0" @@ -1484,13 +1571,14 @@ } }, "mocha": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.2.tgz", - "integrity": "sha512-FgDS9Re79yU1xz5d+C4rv1G7QagNGHZ+iXF81hO8zY35YZZcLEsJVfFolfsqKFWunATEvNzMK0r/CwWd/szO9A==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.0.1.tgz", + "integrity": "sha512-9eWmWTdHLXh72rGrdZjNbG3aa1/3NRPpul1z0D979QpEnFdCG0Q5tv834N+94QEN2cysfV72YocQ3fn87s70fg==", "dev": true, "requires": { "ansi-colors": "3.2.3", "browser-stdout": "1.3.1", + "chokidar": "3.3.0", "debug": "3.2.6", "diff": "3.5.0", "escape-string-regexp": "1.0.5", @@ -1503,7 +1591,7 @@ "minimatch": "3.0.4", "mkdirp": "0.5.1", "ms": "2.1.1", - "node-environment-flags": "1.0.5", + "node-environment-flags": "1.0.6", "object.assign": "4.1.0", "strip-json-comments": "2.0.1", "supports-color": "6.0.0", @@ -1616,7 +1704,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=" }, "mute-stream": { "version": "0.0.8", @@ -1633,13 +1721,13 @@ "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "integrity": "sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y=", "dev": true }, "node-environment-flags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", "dev": true, "requires": { "object.getownpropertydescriptors": "^2.0.3", @@ -1657,7 +1745,7 @@ "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==", + "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=", "requires": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -1676,24 +1764,30 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=" } } }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, "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==" + "integrity": "sha1-9Pa9GBrXfwBrXs5gvQtvOY/3Smc=" }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + "integrity": "sha1-HEfyct8nfzsdrwYWd9nILiMixg4=" }, "object.assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "integrity": "sha1-lovxEA15Vrs8oIbwBvhGs7xACNo=", "requires": { "define-properties": "^1.1.2", "function-bind": "^1.1.1", @@ -1704,7 +1798,7 @@ "object.getownpropertydescriptors": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "integrity": "sha1-Npvx+VktiridcS3O1cuBx8U1Jkk=", "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.0-next.1" @@ -1713,7 +1807,7 @@ "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==", + "integrity": "sha1-aKmezeNWt+kpWjxeDOMdyMlT3l4=", "dev": true, "requires": { "define-properties": "^1.1.3", @@ -1742,7 +1836,7 @@ "optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "integrity": "sha1-hPodA2/p08fiHZmIS2ARZ+yPtJU=", "dev": true, "requires": { "deep-is": "~0.1.3", @@ -1762,7 +1856,7 @@ "p-limit": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=", "requires": { "p-try": "^1.0.0" } @@ -1783,7 +1877,7 @@ "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==", + "integrity": "sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI=", "dev": true, "requires": { "callsites": "^3.0.0" @@ -1817,16 +1911,22 @@ "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==" + "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=" }, "path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=", "requires": { "pify": "^3.0.0" } }, + "picomatch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", + "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", + "dev": true + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -1850,13 +1950,13 @@ "prettier": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "integrity": "sha1-99f1/4qc2HKnvkyhQglZVqYHl8s=", "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==", + "integrity": "sha1-0j1B/hN1ZG3i0BBNNFSjAIgCz3s=", "dev": true, "requires": { "fast-diff": "^1.1.2" @@ -1870,24 +1970,9 @@ "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=", "dev": true }, - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "qs": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz", - "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==" - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, "quick-lru": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", @@ -1896,13 +1981,13 @@ "ramda": { "version": "0.26.1", "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", - "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", + "integrity": "sha1-jUE1HrgRHFU1Nhf8O7/62OTTXQY=", "dev": true }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=", "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -1943,6 +2028,15 @@ "util-deprecate": "~1.0.1" } }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, "redent": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", @@ -1955,7 +2049,7 @@ "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=", "dev": true }, "require-directory": { @@ -1973,7 +2067,7 @@ "resolve": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", - "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", + "integrity": "sha1-G3ypYHPrtS50H/15n2s56kYsZ/U=", "dev": true, "requires": { "path-parse": "^1.0.6" @@ -1982,7 +2076,7 @@ "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==", + "integrity": "sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY=", "dev": true }, "restore-cursor": { @@ -1998,7 +2092,7 @@ "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "integrity": "sha1-stEE/g2Psnz54KHNqCYt04M8bKs=", "dev": true, "requires": { "glob": "^7.1.3" @@ -2007,7 +2101,7 @@ "glob": { "version": "7.1.6", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "integrity": "sha1-FB8zuBp8JJLhJVlDB0gMRmeSeKY=", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -2032,7 +2126,7 @@ "rxjs": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", - "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", + "integrity": "sha1-4Hd/4NGEzseHLfFH8wNXLUFOIRw=", "dev": true, "requires": { "tslib": "^1.9.0" @@ -2041,18 +2135,18 @@ "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==" + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=" }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", "dev": true }, "semver": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.1.2.tgz", - "integrity": "sha512-BJs9T/H8sEVHbeigqzIEo57Iu/3DG6c4QoqTfbQB3BPA4zgzAomh/Fk9E7QtjWQ8mx2dgA9YCfSF4y9k9bHNpQ==" + "integrity": "sha1-hHuuW85oxdCIiYJPAmZxmbcOPYc=" }, "set-blocking": { "version": "2.0.0", @@ -2083,7 +2177,7 @@ "slice-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -2094,7 +2188,7 @@ "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=", "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -2103,12 +2197,12 @@ "spdx-exceptions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" + "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=" }, "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==", + "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=", "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -2117,12 +2211,12 @@ "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==" + "integrity": "sha1-NpS1gEVnpFjTyARYQqY1hjL2JlQ=" }, "split2": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", - "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "integrity": "sha1-GGsldbz4PoW30YRldWI47k7kJJM=", "requires": { "through2": "^2.0.2" }, @@ -2130,7 +2224,7 @@ "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=", "requires": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -2157,7 +2251,7 @@ "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==", + "integrity": "sha1-m9uKxqvW1gKxek7TIYcNL43O/HQ=", "requires": { "define-properties": "^1.1.3", "function-bind": "^1.1.1" @@ -2166,7 +2260,7 @@ "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==", + "integrity": "sha1-RAMUsVmWyGbOigNBiU1FGGIAxdk=", "requires": { "define-properties": "^1.1.3", "function-bind": "^1.1.1" @@ -2175,7 +2269,7 @@ "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==", + "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=", "requires": { "safe-buffer": "~5.1.0" } @@ -2215,7 +2309,7 @@ "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -2224,7 +2318,7 @@ "table": { "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", - "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "integrity": "sha1-EpLRlQDOP4YFOwXw6Ofko7shB54=", "dev": true, "requires": { "ajv": "^6.10.2", @@ -2242,7 +2336,7 @@ "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==", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -2264,7 +2358,7 @@ "text-extensions": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==" + "integrity": "sha1-GFPkX+45yUXOb2w2stZZtaq8KiY=" }, "text-table": { "version": "0.2.0", @@ -2280,7 +2374,7 @@ "through2": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "integrity": "sha1-OSducTwzAu3544jdnIEt07glvVo=", "requires": { "readable-stream": "2 || 3" } @@ -2288,12 +2382,21 @@ "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", "dev": true, "requires": { "os-tmpdir": "~1.0.2" } }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, "trim-newlines": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", @@ -2307,7 +2410,7 @@ "tslib": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "integrity": "sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo=", "dev": true }, "type-check": { @@ -2328,7 +2431,7 @@ "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==", + "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=", "dev": true, "requires": { "punycode": "^2.1.0" @@ -2337,20 +2440,11 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=", "dev": true } } }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -2359,7 +2453,7 @@ "util.promisify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "integrity": "sha1-a693dLgO6w91INi4HQeYKlmruu4=", "requires": { "define-properties": "^1.1.3", "es-abstract": "^1.17.2", @@ -2376,7 +2470,7 @@ "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==", + "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=", "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -2385,7 +2479,7 @@ "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "integrity": "sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo=", "dev": true, "requires": { "isexe": "^2.0.0" @@ -2409,7 +2503,7 @@ "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==", + "integrity": "sha1-YQY29rH3A4kb00dxzLF/uTtHB5w=", "dev": true }, "wrap-ansi": { @@ -2429,15 +2523,6 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "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" - } - }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -2468,7 +2553,7 @@ "write": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=", "dev": true, "requires": { "mkdirp": "^0.5.1" @@ -2477,7 +2562,7 @@ "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + "integrity": "sha1-u3J3n1+kZRhrH0OPZ0+jR/2121Q=" }, "y18n": { "version": "4.0.0", @@ -2593,7 +2678,7 @@ "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==", + "integrity": "sha1-cgImW4n36eny5XZeD+c1qQXtuqg=", "requires": { "camelcase": "^4.1.0" } diff --git a/package.json b/package.json index 7d1caa0..a70b7e6 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,9 @@ "posttest": "./bin/nlm.js verify" }, "engines": { - "yarn": "0.0.0", - "npm": "^6.0.0" + "npm": "^6.0.0", + "node": ">=8.5.0", + "yarn": "0.0.0" }, "nlm": { "license": { @@ -34,8 +35,8 @@ "co": "^4.6.0", "conventional-commits-parser": "^3.0.8", "debug": "^4.1.1", - "glob": "^6.0.1", - "gofer": "^3.8.1", + "glob": "^7.1.6", + "gofer": "^4.1.0", "minimist": "^1.2.0", "rc": "^1.2.8", "semver": "^7.1.2", @@ -49,7 +50,7 @@ "eslint-plugin-mocha": "^6.2.2", "eslint-plugin-node": "^11.0.0", "eslint-plugin-prettier": "^3.1.2", - "mocha": "^6.2.2", + "mocha": "^7.0.1", "prettier": "^1.19.1" }, "author": { From eafbbe655a4019ffe8f3e966d06c47c86f9b0670 Mon Sep 17 00:00:00 2001 From: Andreas Richter Date: Tue, 4 Feb 2020 10:25:58 +0100 Subject: [PATCH 4/7] refactor: drop Node 8 support BREAKING CHANGE: - drop Node 8 support --- .travis.yml | 1 - package-lock.json | 107 ++++++++++++++++++++-------------------------- package.json | 8 ++-- 3 files changed, 50 insertions(+), 66 deletions(-) diff --git a/.travis.yml b/.travis.yml index d1b8ebe..faf8dca 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,5 @@ language: node_js node_js: - - '8' - '10' - '12' deploy: diff --git a/package-lock.json b/package-lock.json index f7ea7f5..94895b6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -60,7 +60,7 @@ "ansi-colors": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "integrity": "sha1-V9NbhoboUeLMBMQD8cACA5dqGBM=", "dev": true }, "ansi-escapes": { @@ -184,7 +184,7 @@ "browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "integrity": "sha1-uqVZ7hTO1zRSIputcyZGfGH6vWA=", "dev": true }, "callsites": { @@ -279,7 +279,7 @@ "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "integrity": "sha1-3u/P2y6AB4SqNPRvoI4GhRx7u8U=", "dev": true, "requires": { "string-width": "^3.1.0", @@ -296,7 +296,7 @@ "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==", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -445,7 +445,7 @@ "diff": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "integrity": "sha1-gAwN0eCov7yVg1wgKtIg/jF+WhI=", "dev": true }, "doctrine": { @@ -589,9 +589,9 @@ } }, "eslint-config-groupon": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-groupon/-/eslint-config-groupon-8.0.1.tgz", - "integrity": "sha1-XPJ1eQF/rc+ADaAdqCyXIvfPPhs=", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-groupon/-/eslint-config-groupon-8.1.0.tgz", + "integrity": "sha512-gvES0dvJSvqKpTu3CG7NEJ5v8IT/VFcAKUqZjBruWiIDS+Jl94kJx4lW28LNy+o2bRyDYLd3AHrMqG7Rvm0qiw==", "dev": true }, "eslint-import-resolver-node": { @@ -987,7 +987,7 @@ "flat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.0.tgz", - "integrity": "sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw==", + "integrity": "sha1-CQvsiwXjnLowl0fx1YjwTbr5jbI=", "dev": true, "requires": { "is-buffer": "~2.0.3" @@ -1036,7 +1036,7 @@ "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "integrity": "sha1-T5RBKoLbMvNuOwuXQfipf+sDH34=", "dev": true }, "glob": { @@ -1071,30 +1071,15 @@ } }, "gofer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/gofer/-/gofer-4.1.0.tgz", - "integrity": "sha512-8J2K3g664K877fyFPCM+swsjF14yiT2YdE+S/tC+U+jLKZC2uakSIjvn9zSN2Hwtr8eKF0jXs5711dcVcw0Ubw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/gofer/-/gofer-4.1.1.tgz", + "integrity": "sha512-4/R62hkILHya9LsO/i+YyfPj1WKAGp1VUyg/fB1QiZ9iiOlTlGwwPIfX4DS76HQr4VnFTfdke1B+47cWFc5Pbw==", "requires": { - "debug": "^2.2.0", + "debug": "^4.1.1", "lodash.isobjectlike": "^4.0.0", "lodash.isplainobject": "^4.0.6", "lodash.merge": "^4.6.2", "lodash.mergewith": "^4.6.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } } }, "graceful-fs": { @@ -1105,7 +1090,7 @@ "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "integrity": "sha1-8nNdwig2dPpnR4sQGBBZNVw2nl4=", "dev": true }, "has": { @@ -1130,7 +1115,7 @@ "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "integrity": "sha1-hK5l+n6vsWX922FWauFLrwVmTw8=", "dev": true }, "hosted-git-info": { @@ -1295,7 +1280,7 @@ "is-buffer": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz", - "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==", + "integrity": "sha1-PlcvI8hBGlz9lVfISeNmXgspBiM=", "dev": true }, "is-callable": { @@ -1489,7 +1474,7 @@ "log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", "dev": true, "requires": { "chalk": "^2.0.1" @@ -1605,13 +1590,13 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", "dev": true }, "debug": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "integrity": "sha1-6D0X3hbYp++3cX7b5fsQE17uYps=", "dev": true, "requires": { "ms": "^2.1.1" @@ -1620,7 +1605,7 @@ "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", "dev": true, "requires": { "locate-path": "^3.0.0" @@ -1629,7 +1614,7 @@ "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "integrity": "sha1-OWCDLT8VdBCDQtr9OmezMsCWnfE=", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1643,7 +1628,7 @@ "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", "dev": true, "requires": { "p-locate": "^3.0.0", @@ -1653,13 +1638,13 @@ "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==", + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", "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==", + "integrity": "sha1-YSebZ3IfUoeqHBOpp/u8SMkpGx4=", "dev": true, "requires": { "p-try": "^2.0.0" @@ -1668,7 +1653,7 @@ "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==", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", "dev": true, "requires": { "p-limit": "^2.0.0" @@ -1677,13 +1662,13 @@ "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==", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", "dev": true }, "supports-color": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "integrity": "sha1-ds/nQs8fQbubHCmtAwaMBbTA5Ao=", "dev": true, "requires": { "has-flag": "^3.0.0" @@ -1692,7 +1677,7 @@ "yargs-parser": { "version": "13.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "integrity": "sha1-0mBYUyqgbTZf4JH2ofwGsvfl7KA=", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -1737,7 +1722,7 @@ "semver": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "integrity": "sha1-qVT5Ma66UI0we78Gnv8MAclhFvc=", "dev": true } } @@ -2061,7 +2046,7 @@ "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "integrity": "sha1-0LMp7MfMD2Fkn2IhW+aa9UqomJs=", "dev": true }, "resolve": { @@ -2241,7 +2226,7 @@ "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", @@ -2494,7 +2479,7 @@ "wide-align": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "integrity": "sha1-rgdOa9wMFKQx6ATmJFScYzsABFc=", "dev": true, "requires": { "string-width": "^1.0.2 || 2" @@ -2509,7 +2494,7 @@ "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==", + "integrity": "sha1-H9H2cjXVttD+54EFYAG/tpTAOwk=", "dev": true, "requires": { "ansi-styles": "^3.2.0", @@ -2526,7 +2511,7 @@ "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==", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -2567,13 +2552,13 @@ "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=", "dev": true }, "yargs": { "version": "13.3.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.0.tgz", - "integrity": "sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA==", + "integrity": "sha1-TGV6VeB+Xyz5R/ijZlZ8BKDe3IM=", "dev": true, "requires": { "cliui": "^5.0.0", @@ -2597,13 +2582,13 @@ "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "integrity": "sha1-48mzFWnhBoEd8kL3FXJaH0xJQyA=", "dev": true }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=", "dev": true, "requires": { "locate-path": "^3.0.0" @@ -2612,7 +2597,7 @@ "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=", "dev": true, "requires": { "p-locate": "^3.0.0", @@ -2622,7 +2607,7 @@ "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==", + "integrity": "sha1-YSebZ3IfUoeqHBOpp/u8SMkpGx4=", "dev": true, "requires": { "p-try": "^2.0.0" @@ -2631,7 +2616,7 @@ "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==", + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=", "dev": true, "requires": { "p-limit": "^2.0.0" @@ -2640,13 +2625,13 @@ "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==", + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=", "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==", + "integrity": "sha1-InZ74htirxCBV0MG9prFG2IgOWE=", "dev": true, "requires": { "emoji-regex": "^7.0.1", @@ -2666,7 +2651,7 @@ "yargs-parser": { "version": "13.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "integrity": "sha1-0mBYUyqgbTZf4JH2ofwGsvfl7KA=", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -2686,7 +2671,7 @@ "yargs-unparser": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "integrity": "sha1-7yXCx2n/a9CeSw+dfGBfsnhG6p8=", "dev": true, "requires": { "flat": "^4.1.0", diff --git a/package.json b/package.json index a70b7e6..eba3a0c 100644 --- a/package.json +++ b/package.json @@ -19,8 +19,8 @@ "posttest": "./bin/nlm.js verify" }, "engines": { - "npm": "^6.0.0", - "node": ">=8.5.0", + "npm": "^6.1.0", + "node": ">=10.3.0", "yarn": "0.0.0" }, "nlm": { @@ -36,7 +36,7 @@ "conventional-commits-parser": "^3.0.8", "debug": "^4.1.1", "glob": "^7.1.6", - "gofer": "^4.1.0", + "gofer": "^4.1.1", "minimist": "^1.2.0", "rc": "^1.2.8", "semver": "^7.1.2", @@ -45,7 +45,7 @@ "devDependencies": { "assertive": "^3.1.0", "eslint": "^6.8.0", - "eslint-config-groupon": "^8.0.1", + "eslint-config-groupon": "^8.1.0", "eslint-plugin-import": "^2.20.1", "eslint-plugin-mocha": "^6.2.2", "eslint-plugin-node": "^11.0.0", From 979104768fa6cafa665a41ca0f515710db878e16 Mon Sep 17 00:00:00 2001 From: Andreas Richter Date: Tue, 4 Feb 2020 10:27:59 +0100 Subject: [PATCH 5/7] style: apply JS transform on lib & test --- lib/cli.js | 19 +-- lib/commands/changelog.js | 11 +- lib/commands/release.js | 19 ++- lib/commands/verify.js | 22 ++-- lib/git/commits.js | 13 +- lib/git/current-branch.js | 1 + lib/git/ensure-tag.js | 10 +- lib/git/push.js | 1 + lib/git/verify-clean.js | 2 + lib/github/client.js | 28 +++-- lib/github/parse-repository.js | 8 +- lib/github/setup-labels.js | 21 +++- lib/license/index.js | 8 +- lib/run.js | 2 +- lib/steps/changelog.js | 39 +++--- lib/steps/detect-branch.js | 2 + lib/steps/execute-prepare-hook-command.js | 7 +- lib/steps/github-release.js | 2 + lib/steps/pending-changes.js | 4 + lib/steps/publish-to-npm.js | 35 ++++-- lib/steps/push-to-remote.js | 2 + lib/steps/release-info.js | 6 +- lib/steps/tag-pr.js | 9 +- lib/steps/version-commit.js | 30 +++-- package-lock.json | 5 - package.json | 1 - test/commands/verify.test.js | 13 +- test/fixture.js | 10 +- test/git/commits.test.js | 19 --- test/git/verify-clean.test.js | 5 - test/github/parse-repository.test.js | 14 +-- test/github/setup-labels.test.js | 3 +- test/license/index.test.js | 7 -- test/steps/changelog.test.js | 118 +++++++++++------- .../execute-prepare-hook-command.test.js | 12 +- test/steps/pending-changes.test.js | 7 -- test/steps/publish-to-npm.test.js | 61 ++++----- test/steps/release-info.test.js | 5 - test/steps/version-commit.test.js | 57 +++++---- 39 files changed, 349 insertions(+), 289 deletions(-) diff --git a/lib/cli.js b/lib/cli.js index 235387a..12af6ba 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -37,6 +37,7 @@ const path = require('path'); const minimist = require('minimist'); + const rc = require('rc'); const COMMANDS = { @@ -44,7 +45,6 @@ const COMMANDS = { release: require('./commands/release'), verify: require('./commands/verify'), }; - const USAGE = [ 'Usage: nlm changelog # Preview the changelog for the next release', ' nlm release # Create a release, push to github & npm', @@ -58,7 +58,6 @@ const USAGE = [ ' -v, --version Print nlm version', ' -h, --help Print usage information', ].join('\n'); - const argv = rc( 'nlm', { @@ -69,7 +68,11 @@ const argv = rc( minimist(process.argv.slice(2), { boolean: ['help', 'version', 'yes', 'commit'], string: ['pr'], - alias: { help: 'h', version: 'v', yes: 'y' }, + alias: { + help: 'h', + version: 'v', + yes: 'y', + }, default: { yes: !!process.env.CI || !process.stdout.isTTY, commit: !!process.env.CI, @@ -84,6 +87,7 @@ function prettyPrintErrorAndExit(error) { if (error.body && error.statusCode) { console.error('Response %j: %j', error.statusCode, error.body); } + const errorMessage = error.message.split('\n').join('\n! '); console.error(`\n!\n! ${errorMessage}\n!\n! NOT OK`); process.exit(1); @@ -97,10 +101,9 @@ if (argv.version) { process.exit(argv.help ? 0 : 1); } else { const cwd = process.cwd(); - const packageJsonFile = path.join(cwd, 'package.json'); - // eslint-disable-next-line import/no-dynamic-require + const packageJsonFile = path.join(cwd, 'package.json'); // eslint-disable-next-line import/no-dynamic-require + const pkg = require(packageJsonFile); - command(cwd, pkg, Object.assign({}, argv, pkg.nlm)).catch( - prettyPrintErrorAndExit - ); + + command(cwd, pkg, { ...argv, ...pkg.nlm }).catch(prettyPrintErrorAndExit); } diff --git a/lib/commands/changelog.js b/lib/commands/changelog.js index f07e8a7..01ec117 100644 --- a/lib/commands/changelog.js +++ b/lib/commands/changelog.js @@ -32,13 +32,13 @@ 'use strict'; -const co = require('co'); - const ensureTag = require('../git/ensure-tag'); + const getPendingChanges = require('../steps/pending-changes'); + const generateChangeLog = require('../steps/changelog'); -const showChangelog = co.wrap(function*(cwd, pkg, options) { +async function showChangelog(cwd, pkg, options) { function ensureVersionTag() { return ensureTag(cwd, `v${pkg.version}`); } @@ -53,8 +53,9 @@ const showChangelog = co.wrap(function*(cwd, pkg, options) { const tasks = [ensureVersionTag, getPendingChanges, generateChangeLog]; - for (const task of tasks) yield Promise.resolve(runTask(task)); + for (const task of tasks) await Promise.resolve(runTask(task)); return printChangelog(); -}); +} + module.exports = showChangelog; diff --git a/lib/commands/release.js b/lib/commands/release.js index abcea43..9d00f8e 100644 --- a/lib/commands/release.js +++ b/lib/commands/release.js @@ -33,14 +33,19 @@ 'use strict'; const debug = require('debug')('nlm:command:release'); + const semver = require('semver'); -const co = require('co'); const generateChangeLog = require('../steps/changelog'); + const createVersionCommit = require('../steps/version-commit'); + const pushReleaseToRemote = require('../steps/push-to-remote'); + const createGithubRelease = require('../steps/github-release'); + const publishToNpm = require('../steps/publish-to-npm'); + const executePrepareHookCommand = require('../steps/execute-prepare-hook-command'); const runVerify = require('./verify'); @@ -49,9 +54,11 @@ function bumpVersion(version, type) { if (type === 'none') { throw new Error('Cannot publish without changes'); } + if (/^0\./.test(version)) { return '1.0.0'; } + return semver.inc(version, type); } @@ -81,31 +88,35 @@ function release(cwd, pkg, options) { return task(cwd, pkg, options); } - const runPublishTasks = co.wrap(function*() { + async function runPublishTasks() { if (options.pr) { debug('Never publishing from a PR'); return null; } + if (!options.commit) { debug('Skipping publish'); return null; } + if (!options.distTag) { debug('Skipping publish, no dist-tag'); return null; } + if (options.releaseType === 'none') { debug('No changes; just verifying NPM publish'); publishTasks = [publishToNpm]; } - for (const task of publishTasks) yield Promise.resolve(runTask(task)); + for (const task of publishTasks) await Promise.resolve(runTask(task)); return null; - }); + } return runVerify(cwd, pkg, options).then( options.commit ? runPublishTasks : () => {} ); } + module.exports = release; diff --git a/lib/commands/verify.js b/lib/commands/verify.js index 7917ed4..a616d41 100644 --- a/lib/commands/verify.js +++ b/lib/commands/verify.js @@ -33,18 +33,21 @@ 'use strict'; const fs = require('fs'); -const path = require('path'); -const co = require('co'); +const path = require('path'); const addLicenseHeaders = require('../license'); const verifyClean = require('../git/verify-clean'); + const ensureTag = require('../git/ensure-tag'); const determineReleaseInfo = require('../steps/release-info'); + const tagPullRequest = require('../steps/tag-pr'); + const getPendingChanges = require('../steps/pending-changes'); + const detectBranch = require('../steps/detect-branch'); function verifyLicenseHeaders(cwd, pkg, options) { @@ -55,13 +58,17 @@ function verifyLicenseHeaders(cwd, pkg, options) { function getPullRequestId() { const travisId = process.env.TRAVIS_PULL_REQUEST; + if (travisId && travisId !== 'false') { return travisId; } + const dotciId = process.env.DOTCI_PULL_REQUEST; + if (dotciId && dotciId !== 'false') { return dotciId; } + return ''; } @@ -72,10 +79,10 @@ function verify(cwd, pkg, options) { if (err.code === 'ENOENT') { return Promise.resolve(); } + throw err; - } + } // Not making this configurable to prevent some possible abuse - // Not making this configurable to prevent some possible abuse options.pr = getPullRequestId(); function ensureLastVersionTag() { @@ -105,10 +112,11 @@ function verify(cwd, pkg, options) { return task(cwd, pkg, options); } - const runVerifyTasks = co.wrap(function*() { - for (const task of verifyTasks) yield Promise.resolve(runTask(task)); - }); + async function runVerifyTasks() { + for (const task of verifyTasks) await Promise.resolve(runTask(task)); + } return runVerifyTasks(); } + module.exports = verify; diff --git a/lib/git/commits.js b/lib/git/commits.js index bf5ace4..9df633b 100644 --- a/lib/git/commits.js +++ b/lib/git/commits.js @@ -33,6 +33,7 @@ 'use strict'; const commitParser = require('conventional-commits-parser'); + const debug = require('debug')('nlm:git:commits'); const run = require('../run'); @@ -48,14 +49,13 @@ function parseCommit(commit) { .trim() .split(' '); const message = commit.slice(metaEndIdx + 1); - const sha = meta.shift(); const parentSha = meta.shift() || null; - const data = commitParser.sync(message, { issuePrefixes: ['#', 'https?://[\\w\\.-/]*[-/]+'], }); const prMatch = message.match(PR_MERGE_PATTERN); + if (prMatch) { const prId = prMatch[1]; data.type = 'pr'; @@ -63,18 +63,22 @@ function parseCommit(commit) { const mergeRef = data.references.find(ref => { return ref.issue === prId; }); + if (!mergeRef) { throw new Error(`Couldn't find reference to merge of PR #${prId}`); } + Object.assign(mergeRef, { action: 'Merges', owner: prMatch[2], }); + if (!mergeRef.repository) { mergeRef.repository = null; } } - return Object.assign({}, data, { sha: sha || data.sha, parentSha }); + + return { ...data, sha: sha || data.sha, parentSha }; } function isNotRandomMerge(commit) { @@ -98,6 +102,7 @@ function gracefulEmptyState(error) { debug('Assuming this was executed before the first commit was made'); return []; } + throw error; } @@ -105,6 +110,7 @@ function createRange(fromRevision) { if (fromRevision && fromRevision !== 'v0.0.0') { return `${fromRevision}..HEAD`; } + return []; } @@ -119,4 +125,5 @@ function getCommits(directory, fromRevision) { } ).then(parseLogOutput, gracefulEmptyState); } + module.exports = getCommits; diff --git a/lib/git/current-branch.js b/lib/git/current-branch.js index e8708a5..66e7471 100644 --- a/lib/git/current-branch.js +++ b/lib/git/current-branch.js @@ -39,4 +39,5 @@ function getCurrentBranch(directory) { cwd: directory, }).then(s => s.trim()); } + module.exports = getCurrentBranch; diff --git a/lib/git/ensure-tag.js b/lib/git/ensure-tag.js index db5c384..c6ff67f 100644 --- a/lib/git/ensure-tag.js +++ b/lib/git/ensure-tag.js @@ -33,14 +33,16 @@ 'use strict'; const path = require('path'); + const fs = require('fs'); const run = require('../run'); function fetchTag(cwd, tag) { - return run('git', ['fetch', 'origin', 'tag', tag], { cwd }); + return run('git', ['fetch', 'origin', 'tag', tag], { + cwd, + }); } - /** * Ensure that a tag was fetched from the remote * @@ -49,6 +51,7 @@ function fetchTag(cwd, tag) { * This checks if a tag exists locally. If it doesn't, it will * fetch the tag from `origin`. */ + function ensureTag(cwd, tag) { if (tag === 'v0.0.0') { // There is no such thing (most likely) @@ -56,13 +59,16 @@ function ensureTag(cwd, tag) { } const tagFile = path.join(cwd, '.git', 'refs', 'tags', tag); + try { return fs.readFileSync(tagFile); } catch (error) { if (error.code !== 'ENOENT') { throw error; } + return fetchTag(cwd, tag); } } + module.exports = ensureTag; diff --git a/lib/git/push.js b/lib/git/push.js index fc6ea4d..284860b 100644 --- a/lib/git/push.js +++ b/lib/git/push.js @@ -39,4 +39,5 @@ function gitPush(directory, origin, refs) { cwd: directory, }).then(s => s.trim()); } + module.exports = gitPush; diff --git a/lib/git/verify-clean.js b/lib/git/verify-clean.js index 97b6afc..8555b04 100644 --- a/lib/git/verify-clean.js +++ b/lib/git/verify-clean.js @@ -38,6 +38,7 @@ function parseStatusOutput(output) { if (output.trim().length) { throw new Error(`Found untracked or changed files\n${output.trim()}`); } + return true; } @@ -46,4 +47,5 @@ function verifyClean(directory) { cwd: directory, }).then(parseStatusOutput); } + module.exports = verifyClean; diff --git a/lib/github/client.js b/lib/github/client.js index 853aa1b..84b1583 100644 --- a/lib/github/client.js +++ b/lib/github/client.js @@ -41,24 +41,27 @@ const parseRepository = require('./parse-repository'); function Github(config) { Gofer.call(this, config, 'github'); } -util.inherits(Github, Gofer); +util.inherits(Github, Gofer); Github.prototype.registerEndpoints({ pull: function pull(request) { return { commits: function commits(pullId) { return request('/repos/{owner}/{repo}/pulls/{pullId}/commits', { - pathParams: { pullId }, + pathParams: { + pullId, + }, }).json(); }, get: function get(pullId) { return request('/repos/{owner}/{repo}/pulls/{pullId}', { - pathParams: { pullId }, + pathParams: { + pullId, + }, }).json(); }, }; }, - labels: function labelsEndpoint(request) { return { create: function create(label) { @@ -72,19 +75,22 @@ Github.prototype.registerEndpoints({ }, listByIssue: function listByIssue(issueId) { return request('/repos/{owner}/{repo}/issues/{issueId}/labels', { - pathParams: { issueId }, + pathParams: { + issueId, + }, }).json(); }, setForIssue: function setForIssue(issueId, labels) { return request('/repos/{owner}/{repo}/issues/{issueId}/labels', { method: 'PUT', - pathParams: { issueId }, + pathParams: { + issueId, + }, json: labels, }); }, }; }, - releases: function releases(request) { return { create: function create(release) { @@ -95,12 +101,13 @@ Github.prototype.registerEndpoints({ }, }; }, - tags: function tags(request) { return { get: function get(tag) { return request('/repos/{owner}/{repo}/git/refs/tags/{tag}', { - pathParams: { tag }, + pathParams: { + tag, + }, }).json(); }, }; @@ -109,7 +116,7 @@ Github.prototype.registerEndpoints({ Github.forRepository = function forRepository(repository) { const repoInfo = parseRepository(repository); - const github = new Github({ + return new Github({ github: { baseUrl: repoInfo.baseUrl, pathParams: { @@ -121,7 +128,6 @@ Github.forRepository = function forRepository(repository) { }, }, }); - return github; }; module.exports = Github; diff --git a/lib/github/parse-repository.js b/lib/github/parse-repository.js index 59aed66..3388cae 100644 --- a/lib/github/parse-repository.js +++ b/lib/github/parse-repository.js @@ -32,8 +32,6 @@ 'use strict'; -const { URL } = require('url'); - const PUBLIC_BASE = 'https://api.github.com'; function parseRepository(repositoryField) { @@ -44,18 +42,19 @@ function parseRepository(repositoryField) { if (!repository || typeof repository !== 'string') { throw new Error(`Invalid or missing repository field: ${repositoryField}`); - } + } // Transform git@ into git+ssh://git@ which URL constructor can handle - // Transform git@ into git+ssh://git@ which URL constructor can handle const url = repository.replace(/^git@([^:]+):(.*)$/, 'git+ssh://git@$1/$2'); const parsed = new URL(url, 'git+ssh://git@github.com'); const host = parsed.host || 'github.com'; const match = (parsed.pathname || '').match( /^\/?([\w-]+)\/([\w-.]+?)(?:\.git)?$/ ); + if (match === null) { throw new Error(`Could not parse git repository: ${repository}`); } + const protocol = parsed.protocol === 'http:' ? 'http://' : 'https://'; return { baseUrl: host === 'github.com' ? PUBLIC_BASE : `${protocol + host}/api/v3`, @@ -64,4 +63,5 @@ function parseRepository(repositoryField) { repository: match[2], }; } + module.exports = parseRepository; diff --git a/lib/github/setup-labels.js b/lib/github/setup-labels.js index 1117ccd..1549e55 100644 --- a/lib/github/setup-labels.js +++ b/lib/github/setup-labels.js @@ -33,10 +33,22 @@ 'use strict'; const REQUIRED_LABELS = [ - { name: 'semver-none', color: 'fafafa' }, - { name: 'semver-patch', color: 'cdf9c5' }, - { name: 'semver-minor', color: 'c5d3f9' }, - { name: 'semver-major', color: 'ff334f' }, + { + name: 'semver-none', + color: 'fafafa', + }, + { + name: 'semver-patch', + color: 'cdf9c5', + }, + { + name: 'semver-minor', + color: 'c5d3f9', + }, + { + name: 'semver-major', + color: 'ff334f', + }, ]; function findMissingLabels(labels) { @@ -51,4 +63,5 @@ function setupLabels(github) { .then(findMissingLabels) .then(labels => Promise.all(labels.map(github.labels.create))); } + module.exports = setupLabels; diff --git a/lib/license/index.js b/lib/license/index.js index 0e11910..870904e 100644 --- a/lib/license/index.js +++ b/lib/license/index.js @@ -33,10 +33,13 @@ 'use strict'; const fs = require('fs'); + const path = require('path'); const debug = require('debug')('nlm:license'); + const promisify = require('util.promisify'); + const globAsync = promisify(require('glob')); const readFileAsync = promisify(fs.readFile); @@ -95,7 +98,7 @@ function collectFiles(cwd, whitelist, optionalExclude) { } function hasNoLicenseHeader(entry) { - return entry.content.indexOf(entry.licenseHeader) === -1; + return !entry.content.includes(entry.licenseHeader); } function addLicenseHeader(entry) { @@ -125,6 +128,7 @@ function getLicenseText(cwd) { if (error.code === 'ENOENT') { return null; } + throw error; }); } @@ -152,6 +156,6 @@ function addLicenseHeaders(cwd, whitelist, optionalExclude) { .then(collectMissingHeaders.bind(null, cwd, whitelist, optionalExclude)) .then(hdrs => Promise.all(hdrs.map(writeLicenseHeaders))); } -module.exports = addLicenseHeaders; +module.exports = addLicenseHeaders; addLicenseHeaders.collectMissing = collectMissingHeaders; diff --git a/lib/run.js b/lib/run.js index dada29b..1de8dbb 100644 --- a/lib/run.js +++ b/lib/run.js @@ -37,7 +37,7 @@ const childProcess = require('child_process'); const debug = require('debug')('nlm:run'); module.exports = function run(command, args, options) { - const debugOpts = Object.assign({}, options); + const debugOpts = { ...options }; delete debugOpts.env; debug(command, args, debugOpts); return new Promise((resolve, reject) => { diff --git a/lib/steps/changelog.js b/lib/steps/changelog.js index 7978fb7..124df9b 100644 --- a/lib/steps/changelog.js +++ b/lib/steps/changelog.js @@ -32,9 +32,8 @@ 'use strict'; -const co = require('co'); - const Github = require('../github/client'); + const parseRepository = require('../github/parse-repository'); function addPullRequestCommits(pkg, commits, pr) { @@ -54,8 +53,8 @@ function addPullRequestCommits(pkg, commits, pr) { pr.commits = commits.filter(commit => shas.includes(commit.sha)); }) .catch(err => { - if (err.statusCode !== 404) throw err; - // If the PR doesn't exist, handle it gracefully. + if (err.statusCode !== 404) throw err; // If the PR doesn't exist, handle it gracefully. + pr.commits = pr.shas = null; }); } @@ -75,10 +74,14 @@ function extractBreakingChanges(commit) { if (!commit.notes || !commit.notes.length) { return []; } + return commit.notes .filter(n => n.title === 'BREAKING CHANGE') .map(note => { - return { text: note.text, commit }; + return { + text: note.text, + commit, + }; }); } @@ -91,9 +94,9 @@ function removeInvalidPRs(prs) { Object.assign(prs, filtered); } -const generateChangeLog = co.wrap(function*(cwd, pkg, options) { +async function generateChangeLog(cwd, pkg, options) { const repoInfo = parseRepository(pkg.repository); - const commits = options.commits; + const { commits } = options; const prs = commits.filter(c => c.type === 'pr'); function getCommitLink(commit) { @@ -114,9 +117,7 @@ const generateChangeLog = co.wrap(function*(cwd, pkg, options) { function prependBreakingChanges(changelog) { const breaking = flatten(commits.map(extractBreakingChanges)); - if (!breaking.length) return changelog; - return [ '#### Breaking Changes', '', @@ -139,31 +140,31 @@ const generateChangeLog = co.wrap(function*(cwd, pkg, options) { function formatCommit(commit) { let subject; + if (commit.type) { subject = `**${commit.type}:** ${commit.subject}`; } else { subject = commit.header; } - return `${getCommitLink( - commit - )} ${subject}${formatReferences(commit.references)}`; + + return `${getCommitLink(commit)} ${subject}${formatReferences( + commit.references + )}`; } function formatPR(pr) { const changes = pr.commits.map(formatCommit).map(line => { return ` - ${line}`; }); - const titleLine = `${pr.title} - **[@${pr.author.name}](${pr.author.href})** [#${pr.pullId}](${pr.href})`; - return [titleLine].concat(changes).join('\n'); } - /* * * {prTitle} - @{author} #{pullId} * - {sha} {type}: {message} * * {sha} {type}: {message} */ + function formatCommits(orphans) { const changes = prs .map(formatPR) @@ -171,19 +172,17 @@ const generateChangeLog = co.wrap(function*(cwd, pkg, options) { .map(line => { return `* ${line}`; }); - return changes.join('\n'); } - for (const pr of prs) yield addPullRequestCommits(pkg, commits, pr); + for (const pr of prs) await addPullRequestCommits(pkg, commits, pr); removeInvalidPRs(prs); - let changelog = removePRCommits(commits, prs); changelog = formatCommits(changelog); changelog = prependBreakingChanges(changelog); options.changelog = changelog; - return changelog; -}); +} + module.exports = generateChangeLog; diff --git a/lib/steps/detect-branch.js b/lib/steps/detect-branch.js index 5cce99f..dd2551c 100644 --- a/lib/steps/detect-branch.js +++ b/lib/steps/detect-branch.js @@ -38,6 +38,7 @@ function getEnvBranch() { if (process.env.TRAVIS_PULL_REQUEST === 'false') { return process.env.TRAVIS_BRANCH; } + return process.env.DOTCI_BRANCH || process.env.BRANCH; } @@ -51,4 +52,5 @@ function detectBranch(cwd, pkg, options) { setCurrentBranch ); } + module.exports = detectBranch; diff --git a/lib/steps/execute-prepare-hook-command.js b/lib/steps/execute-prepare-hook-command.js index 7a26ca8..ba47c99 100644 --- a/lib/steps/execute-prepare-hook-command.js +++ b/lib/steps/execute-prepare-hook-command.js @@ -30,7 +30,7 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -'use strict' /* eslint no-console:0 */; +'use strict'; const childprocess = require('child_process'); @@ -39,13 +39,12 @@ function executePrepareHookCommand(cwd, pkg, options) { if (!prepareHook) return; console.log(` [nlm] Executing 'prepare' hook command: ${prepareHook}`); - const env = Object.assign({}, process.env, { - NLM_NEXT_VERSION: options.nextVersion, - }); + const env = { ...process.env, NLM_NEXT_VERSION: options.nextVersion }; childprocess.execSync(prepareHook, { cwd, stdio: 'inherit', env, }); } + module.exports = executePrepareHookCommand; diff --git a/lib/steps/github-release.js b/lib/steps/github-release.js index 42272e1..f94ae26 100644 --- a/lib/steps/github-release.js +++ b/lib/steps/github-release.js @@ -41,6 +41,7 @@ function createGithubRelease(cwd, pkg, options) { debug('Skipping Github release creation, no Github token'); return null; } + const github = Github.forRepository(pkg.repository); const name = `v${pkg.version}`; debug('Creating release %j at %j', name, options.versionCommitSha); @@ -52,4 +53,5 @@ function createGithubRelease(cwd, pkg, options) { }; return github.releases.create(release); } + module.exports = createGithubRelease; diff --git a/lib/steps/pending-changes.js b/lib/steps/pending-changes.js index 5b5a4ad..81f5f33 100644 --- a/lib/steps/pending-changes.js +++ b/lib/steps/pending-changes.js @@ -33,6 +33,7 @@ 'use strict'; const getCommits = require('../git/commits'); + const parseRepository = require('../github/parse-repository'); const JIRA_PATTERN = /https?:\/\/[\w.-]+\/browse\/(\w+-)/; @@ -66,6 +67,7 @@ function normalizeReferences(meta, commit) { } else if (ghMatch) { ref.owner = ghMatch[3]; ref.repository = ghMatch[4]; + if (ghMatch[1] !== meta.htmlBase) { ref.href = ref.raw; ref.prefix = `${ghMatch[2]}/${ref.owner}/${ref.repository}#`; @@ -79,6 +81,7 @@ function normalizeReferences(meta, commit) { normalizeInternalReference(ref); } } + commit.references.forEach(normalizeReference); return commit; } @@ -89,4 +92,5 @@ function getPendingChanges(cwd, pkg, options) { options.commits = commits.map(normalizeReferences.bind(null, meta)); }); } + module.exports = getPendingChanges; diff --git a/lib/steps/publish-to-npm.js b/lib/steps/publish-to-npm.js index f6b4620..d21e6e1 100644 --- a/lib/steps/publish-to-npm.js +++ b/lib/steps/publish-to-npm.js @@ -30,9 +30,10 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -'use strict' /* eslint no-console:0 */; +'use strict'; const fs = require('fs'); + const path = require('path'); const debug = require('debug')('nlm:publish-to-npm'); @@ -61,31 +62,41 @@ function generateNpmrc(registryUrl) { } function checkPublishRequired(cwd, pkg, options) { - const distTag = options.distTag; + const { distTag } = options; + if (!distTag || distTag === 'false') { return 'wrong-branch'; } - return run('npm', ['show', pkg.name, '--json'], { cwd, env: options.npmEnv }) + return run('npm', ['show', pkg.name, '--json'], { + cwd, + env: options.npmEnv, + }) .then(content => { // If we get an empty response, we'll assume it was not found. if (content.trim() === '') { return 'publish'; } + const registryState = JSON.parse(content); + if (!registryState.versions.includes(pkg.version)) { return 'publish'; } + const distTagCurrent = registryState['dist-tags'][distTag]; + if (distTagCurrent !== pkg.version) { return 'dist-tag'; } + return 'none'; }) .catch(error => { - if (error.message.indexOf('ERR! 404') !== -1) { + if (error.message.includes('ERR! 404')) { return 'publish'; } + throw error; }); } @@ -99,9 +110,9 @@ function deprecateIfNeeded(cwd, pkg, options) { } function getCurrentCommit(cwd) { - return run('git', ['log', '--format=%s', '--max-count=1'], { cwd }).then(s => - s.trim() - ); + return run('git', ['log', '--format=%s', '--max-count=1'], { + cwd, + }).then(s => s.trim()); } function forwardToStdout(str) { @@ -113,6 +124,7 @@ function doPublish(cwd, pkg, options) { console.log('[nlm] Version %s needs publishing', pkg.version); return null; } + return run('npm', ['publish', '--tag', options.distTag], { cwd, env: options.npmEnv, @@ -124,10 +136,14 @@ function updateDistTag(cwd, pkg, options) { console.log('[nlm] Set dist-tag %s to %s', options.distTag, pkg.version); return null; } + return run( 'npm', ['dist-tag', 'add', `${pkg.name}@${pkg.version}`, options.distTag], - { cwd, env: options.npmEnv } + { + cwd, + env: options.npmEnv, + } ).then(forwardToStdout); } @@ -149,7 +165,7 @@ function publishToNPM(cwd, pkg, options) { return Promise.resolve(); } - options.npmEnv = Object.assign({}, process.env); + options.npmEnv = { ...process.env }; ['npmToken', 'npmPasswordBase64', 'npmUsername', 'npmEmail'].forEach(opt => { const envOpt = envify(opt); const cfgVal = options[opt]; @@ -213,4 +229,5 @@ function publishToNPM(cwd, pkg, options) { fs.unlinkSync(rcFile); }); } + module.exports = publishToNPM; diff --git a/lib/steps/push-to-remote.js b/lib/steps/push-to-remote.js index b8c99d5..ee2cc95 100644 --- a/lib/steps/push-to-remote.js +++ b/lib/steps/push-to-remote.js @@ -33,6 +33,7 @@ 'use strict'; const parseRepository = require('../github/parse-repository'); + const gitPush = require('../git/push'); function getTokenRemote(repository) { @@ -53,4 +54,5 @@ function pushReleaseToRemote(cwd, pkg, options) { `${options.versionCommitSha}:refs/heads/${options.currentBranch}`, ]); } + module.exports = pushReleaseToRemote; diff --git a/lib/steps/release-info.js b/lib/steps/release-info.js index aada30f..aa5d7b4 100644 --- a/lib/steps/release-info.js +++ b/lib/steps/release-info.js @@ -63,9 +63,7 @@ function formatInvalidCommit(commit) { function InvalidCommitsError(commits) { Error.call(this); Error.captureStackTrace(this, InvalidCommitsError); - const commitsBlock = commits.map(formatInvalidCommit).join('\n'); - this.message = INVALID_COMMITS_MESSAGE.replace( '<>', commitsBlock @@ -73,6 +71,7 @@ function InvalidCommitsError(commits) { this.code = 'EINVALIDCOMMITS'; this.commits = commits; } + util.inherits(InvalidCommitsError, Error); function isBreaking(note) { @@ -80,9 +79,9 @@ function isBreaking(note) { } const RELEASE_TYPES = ['none', 'patch', 'minor', 'major']; + function determineReleaseInfo(commits, acceptInvalidCommits) { let releaseType = 0; - const invalidCommits = []; for (let idx = 0; idx < commits.length; ++idx) { @@ -129,4 +128,5 @@ function determineReleaseInfo(commits, acceptInvalidCommits) { return RELEASE_TYPES[releaseType]; } + module.exports = determineReleaseInfo; diff --git a/lib/steps/tag-pr.js b/lib/steps/tag-pr.js index 15f1c55..2b58aa1 100644 --- a/lib/steps/tag-pr.js +++ b/lib/steps/tag-pr.js @@ -37,7 +37,7 @@ const debug = require('debug')('nlm:steps:tag-pr'); const Github = require('../github/client'); function nonSemverTag(labelName) { - return labelName.indexOf('semver-') === -1; + return !labelName.includes('semver-'); } function tagPullRequest(cwd, pkg, options) { @@ -48,21 +48,24 @@ function tagPullRequest(cwd, pkg, options) { debug('Skipping PR tagging, no Github token'); return null; } + const github = Github.forRepository(pkg.repository); return github.labels.listByIssue(options.pr).then(labels => { - const releaseType = options.releaseType; + const { releaseType } = options; const name = `semver-${releaseType}`; + if (labels.some(l => l.name === name)) { debug('Already tagged with %j', name); return null; } + const newLabels = labels .map(l => l.name) .filter(nonSemverTag) .concat(name); - debug('Tagging %s', options.pr, newLabels); return github.labels.setForIssue(options.pr, newLabels); }); } + module.exports = tagPullRequest; diff --git a/lib/steps/version-commit.js b/lib/steps/version-commit.js index da44333..8e55769 100644 --- a/lib/steps/version-commit.js +++ b/lib/steps/version-commit.js @@ -33,6 +33,7 @@ 'use strict'; const fs = require('fs'); + const path = require('path'); const run = require('../run'); @@ -41,38 +42,42 @@ const NLM_GIT_NAME = 'nlm'; const NLM_GIT_EMAIL = 'opensource@groupon.com'; function addFiles(cwd, files) { - return run('git', ['add'].concat(files), { cwd }); + return run('git', ['add'].concat(files), { + cwd, + }); } function commit(cwd, message) { return run('git', ['commit', '-m', message], { cwd, - env: Object.assign({}, process.env, { + env: { + ...process.env, GIT_AUTHOR_NAME: NLM_GIT_NAME, GIT_AUTHOR_EMAIL: NLM_GIT_EMAIL, GIT_COMMITTER_NAME: NLM_GIT_NAME, GIT_COMMITTER_EMAIL: NLM_GIT_EMAIL, - }), + }, }); } function getHEAD(cwd) { - return run('git', ['rev-parse', 'HEAD'], { cwd }); + return run('git', ['rev-parse', 'HEAD'], { + cwd, + }); } function updatePackageLockVersion(cwd, version, files) { const lockPath = path.join(cwd, 'package-lock.json'); - if (!fs.existsSync(lockPath)) return; - - // if package-lock.json is in the .gitignore, then we just generated it + if (!fs.existsSync(lockPath)) return; // if package-lock.json is in the .gitignore, then we just generated it // and shouldn't commit it + const ignorePath = path.join(cwd, '.gitignore'); + if (fs.existsSync(ignorePath)) { const ignore = fs.readFileSync(ignorePath, 'utf8'); if (/^\/?package-lock\.json\s*$/m.test(ignore)) return; - } + } // we don't want to risk re-sorting the file, so just do a regexp replace - // we don't want to risk re-sorting the file, so just do a regexp replace const oldLock = fs.readFileSync(lockPath, 'utf8'); const newLock = oldLock.replace(/^( {2}"version": ")[^"]+/m, `$1${version}`); fs.writeFileSync(lockPath, newLock); @@ -82,24 +87,24 @@ function updatePackageLockVersion(cwd, version, files) { function createVersionCommit(cwd, pkg, options) { const changeLogFile = path.join(cwd, 'CHANGELOG.md'); let changeLogContent; + try { changeLogContent = `\n\n\n${fs.readFileSync(changeLogFile, 'utf8').trim()}`; } catch (err) { if (err.code !== 'ENOENT') { throw err; } + changeLogContent = ''; } + changeLogContent = `### ${options.nextVersion}\n\n${options.changelog}${changeLogContent}`; fs.writeFileSync(changeLogFile, `${changeLogContent.trim()}\n`); - const packageJsonFile = path.join(cwd, 'package.json'); pkg.version = options.nextVersion; fs.writeFileSync(packageJsonFile, `${JSON.stringify(pkg, null, 2)}\n`); - const files = ['CHANGELOG.md', 'package.json']; updatePackageLockVersion(cwd, pkg.version, files); - return addFiles(cwd, files) .then(commit.bind(null, cwd, `v${pkg.version}`)) .then(getHEAD.bind(null, cwd)) @@ -108,4 +113,5 @@ function createVersionCommit(cwd, pkg, options) { return options.versionCommitSha; }); } + module.exports = createVersionCommit; diff --git a/package-lock.json b/package-lock.json index 94895b6..00c6e33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -315,11 +315,6 @@ } } }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=" - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", diff --git a/package.json b/package.json index eba3a0c..2543cc4 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,6 @@ } }, "dependencies": { - "co": "^4.6.0", "conventional-commits-parser": "^3.0.8", "debug": "^4.1.1", "glob": "^7.1.6", diff --git a/test/commands/verify.test.js b/test/commands/verify.test.js index 92d2cf4..b0f6127 100644 --- a/test/commands/verify.test.js +++ b/test/commands/verify.test.js @@ -44,38 +44,29 @@ describe('nlm verify', () => { describe('in non-git directory', () => { const dirname = withFixture('non-git'); const output = {}; - before(() => { return run(process.execPath, [CLI_PATH, 'verify'], { cwd: dirname, - env: Object.assign({}, process.env, { - GH_TOKEN: '', - }), + env: { ...process.env, GH_TOKEN: '' }, }).then(stdout => { output.stdout = stdout; }); }); - it('ignores directories that are not git repos', () => { assert.equal('', output.stdout); }); }); - describe('in git directory', () => { const dirname = withFixture('released'); const output = {}; - before(() => { return run(process.execPath, [CLI_PATH, 'verify'], { cwd: dirname, - env: Object.assign({}, process.env, { - GH_TOKEN: '', - }), + env: { ...process.env, GH_TOKEN: '' }, }).then(stdout => { output.stdout = stdout; }); }); - it('reports the change type', () => { assert.include('Changes are "none"', output.stdout); }); diff --git a/test/fixture.js b/test/fixture.js index a0fd9fd..a2da912 100644 --- a/test/fixture.js +++ b/test/fixture.js @@ -32,21 +32,19 @@ 'use strict'; -const execFile = require('child_process').execFile; +const { execFile } = require('child_process'); + const path = require('path'); function withFixture(name) { const dirname = path.join(__dirname, '..', 'tmp', name); const script = path.join(__dirname, 'fixtures', name); - before('remove fixture directory', done => { execFile('rm', ['-rf', dirname], done); }); - before('create fixture directory', done => { execFile('mkdir', ['-p', dirname], done); }); - before('running fixture setup', done => { execFile( script, @@ -66,15 +64,15 @@ function withFixture(name) { process.stdout.write(`${stdout}\n`); process.stderr.write(`${stderr}\n`); } + done(error); } ); }); - after('remove fixture directory', done => { execFile('rm', ['-rf', dirname], done); }); - return dirname; } + module.exports = withFixture; diff --git a/test/git/commits.test.js b/test/git/commits.test.js index 0ed211a..7d991ae 100644 --- a/test/git/commits.test.js +++ b/test/git/commits.test.js @@ -41,17 +41,14 @@ const withFixture = require('../fixture'); describe('getCommits', () => { describe('with an empty project', () => { const dirname = withFixture('empty-project'); - it('returns an empty list', () => { return getCommits(dirname).then(commits => { assert.deepEqual([], commits); }); }); }); - describe('with invalid commits', () => { const dirname = withFixture('invalid-commit'); - it('returns the commit with type=null', () => { return getCommits(dirname).then(commits => { assert.equal(2, commits.length); @@ -61,17 +58,14 @@ describe('getCommits', () => { }); }); }); - describe('issue and ticket links', () => { const dirname = withFixture('ticket-commits'); let allCommits = null; - before('fetch al commits', () => { return getCommits(dirname).then(commits => { allCommits = commits; }); }); - it('includes links to github for #123 style', () => { const commit = allCommits.find(c => c.subject === 'Short'); assert.equal(1, commit.references.length); @@ -82,7 +76,6 @@ describe('getCommits', () => { assert.equal('#', ref.prefix); assert.equal('#42', ref.raw); }); - it('includes links to github for x/y#123 style', () => { const commit = allCommits.find(c => c.subject === 'Repo'); assert.equal(1, commit.references.length); @@ -93,7 +86,6 @@ describe('getCommits', () => { assert.equal('#', ref.prefix); assert.equal('riley/thing#13', ref.raw); }); - it('includes links to github for full public github urls', () => { const commit = allCommits.find(c => c.subject === 'Full'); assert.equal(1, commit.references.length); @@ -103,7 +95,6 @@ describe('getCommits', () => { assert.equal('13', ref.issue); assert.equal('https://github.com/open/source/issues/13', ref.raw); }); - it('includes links to github for full GHE urls', () => { const commit = allCommits.find(c => c.subject === 'GHE'); assert.equal(1, commit.references.length); @@ -113,7 +104,6 @@ describe('getCommits', () => { assert.equal('72', ref.issue); assert.equal('https://github.example.com/some/thing/issues/72', ref.raw); }); - it('includes links to jira', () => { const commit = allCommits.find(c => c.subject === 'Jira'); assert.equal(1, commit.references.length); @@ -124,27 +114,22 @@ describe('getCommits', () => { assert.equal('https://jira.atlassian.com/browse/REPO-2001', ref.raw); }); }); - describe('with multiple commits', () => { const dirname = withFixture('multiple-commits'); let allCommits = null; - before('fetch al commits', () => { return getCommits(dirname).then(commits => { allCommits = commits; }); }); - it('returns all three commits, plus one merge commit', () => { assert.equal(4, allCommits.length); }); - it('returns commits in order', () => { assert.equal('Do stuff', allCommits[0].subject); assert.equal('Adding second', allCommits[1].subject); assert.equal('Changed more stuff', allCommits[2].subject); }); - it('includes parentSha', () => { assert.equal('is null for first commit', null, allCommits[0].parentSha); assert.equal( @@ -153,7 +138,6 @@ describe('getCommits', () => { allCommits[1].parentSha ); }); - it('includes notes for breaking changes', () => { const note = allCommits[1].notes[0]; assert.equal('BREAKING CHANGE', note.title); @@ -166,14 +150,12 @@ describe('getCommits', () => { note.text ); }); - it('includes merge commit info', () => { const merge = allCommits[3]; assert.equal(merge.type, 'pr'); assert.equal(merge.references[0].action, 'Merges'); assert.equal(merge.references[0].issue, '119'); }); - describe('when starting from v0.0.0', () => { it('returns everything from the beginning', () => { return getCommits(dirname, 'v0.0.0').then(commits => { @@ -181,7 +163,6 @@ describe('getCommits', () => { }); }); }); - describe('when starting from the first commit', () => { it('only returns the last two', () => { return getCommits(dirname, allCommits[0].sha).then(commits => { diff --git a/test/git/verify-clean.test.js b/test/git/verify-clean.test.js index 762ea21..860c539 100644 --- a/test/git/verify-clean.test.js +++ b/test/git/verify-clean.test.js @@ -45,23 +45,18 @@ function unexpected() { describe('verifyClean', () => { describe('with an empty project', () => { const dirname = withFixture('empty-project'); - it('returns true', () => { return verifyClean(dirname).then(assert.expect); }); }); - describe('with committed changes', () => { const dirname = withFixture('fix-commit'); - it('returns true', () => { return verifyClean(dirname).then(assert.expect); }); }); - describe('with uncommitted or unstaged changes', () => { const dirname = withFixture('dirty-checkout'); - it('reports the files in question', () => { return verifyClean(dirname).then(unexpected, error => { assert.include('M index.js', error.message); diff --git a/test/github/parse-repository.test.js b/test/github/parse-repository.test.js index 97806cc..9990217 100644 --- a/test/github/parse-repository.test.js +++ b/test/github/parse-repository.test.js @@ -49,7 +49,6 @@ describe('parseRepository', () => { username: 'myname', repository: 'myproject', }; - it('understands ssh urls', () => { [ 'git+ssh://git@github.com/myname/myproject', @@ -58,35 +57,27 @@ describe('parseRepository', () => { 'git@github.com:myname/myproject.git', ].forEach(checkParsed.bind(null, expected)); }); - it('understands https urls', () => { [ 'https://github.com/myname/myproject', 'https://github.com/myname/myproject.git', ].forEach(checkParsed.bind(null, expected)); }); - it('understands git urls', () => { [ 'git://github.com/myname/myproject', 'git://github.com/myname/myproject.git', ].forEach(checkParsed.bind(null, expected)); }); - it('understands npm-style shorthands', () => { ['myname/myproject'].forEach(checkParsed.bind(null, expected)); }); - it('accepts dotted repositories', () => { ['myname/myproject.js.git', 'myname/myproject.js'].forEach( - checkParsed.bind( - null, - Object.assign({}, expected, { repository: 'myproject.js' }) - ) + checkParsed.bind(null, { ...expected, repository: 'myproject.js' }) ); }); }); - describe('Github Enterprise', () => { const expected = { baseUrl: 'https://ghe.mycorp.com/api/v3', @@ -94,7 +85,6 @@ describe('parseRepository', () => { username: 'myname', repository: 'myproject', }; - it('understands ssh urls', () => { [ 'git@ghe.mycorp.com:myname/myproject', @@ -103,14 +93,12 @@ describe('parseRepository', () => { 'git+ssh://git@ghe.mycorp.com/myname/myproject.git', ].forEach(checkParsed.bind(null, expected)); }); - it('understands https urls', () => { [ 'https://ghe.mycorp.com/myname/myproject', 'https://ghe.mycorp.com/myname/myproject.git', ].forEach(checkParsed.bind(null, expected)); }); - it('understands git urls', () => { [ 'git://ghe.mycorp.com/myname/myproject', diff --git a/test/github/setup-labels.test.js b/test/github/setup-labels.test.js index fa3f509..e9a73f4 100644 --- a/test/github/setup-labels.test.js +++ b/test/github/setup-labels.test.js @@ -35,6 +35,7 @@ const assert = require('assertive'); const Github = require('../../lib/github/client'); + const setupLabels = require('../../lib/github/setup-labels'); const packageJSON = require('../../package.json'); @@ -47,13 +48,11 @@ describe('setupLabels', () => { } const github = Github.forRepository(packageJSON.repository); - it('finds no missing labels for nlm', () => { return setupLabels(github).then(addedLabels => { assert.deepEqual([], addedLabels); }); }); - return null; }); }); diff --git a/test/license/index.test.js b/test/license/index.test.js index a20a42b..5418ccc 100644 --- a/test/license/index.test.js +++ b/test/license/index.test.js @@ -48,35 +48,28 @@ describe('addLicenseHeaders', () => { } ); }); - describe('without a LICENSE file', () => { const dirname = withFixture('fix-commit'); - it('does nothing', () => { return addLicenseHeaders(dirname).then(changedFiles => { assert.deepEqual([], changedFiles); }); }); }); - describe('with a file w/o license header', () => { const dirname = withFixture('fix-commit'); const filename = `${dirname}/index.js`; - const licenseText = '\n\nIMPORTANT\n\nLEGAL\nSTUFF HERE!\n\t \n'; const licenseHeader = '/*\n * IMPORTANT\n *\n * LEGAL\n * STUFF HERE!\n */\n'; - before('write license file', () => { fs.writeFileSync(`${dirname}/LICENSE`, licenseText); }); - before('returns the absolute filename', () => { return addLicenseHeaders(dirname).then(changedFiles => { assert.deepEqual([filename], changedFiles); }); }); - it('writes out a file with a license header', () => { const content = fs.readFileSync(filename, 'utf8'); assert.include(licenseHeader, content); diff --git a/test/steps/changelog.test.js b/test/steps/changelog.test.js index a6fba5d..20b7997 100644 --- a/test/steps/changelog.test.js +++ b/test/steps/changelog.test.js @@ -39,7 +39,6 @@ const generateChangeLog = require('../../lib/steps/changelog'); function withFakeGithub() { const httpCalls = []; let server; - before(done => { server = require('http').createServer((req, res) => { httpCalls.push({ @@ -48,11 +47,15 @@ function withFakeGithub() { auth: req.headers.authorization, }); res.setHeader('Content-Type', 'application/json'); + switch (req.url) { case '/api/v3/repos/usr/proj/pulls/1': res.end( JSON.stringify({ - user: { login: 'pr-1-user', html_url: 'http://pr-1-user' }, + user: { + login: 'pr-1-user', + html_url: 'http://pr-1-user', + }, html_url: 'http://pr-1', title: 'PR #1 Title', }) @@ -62,8 +65,12 @@ function withFakeGithub() { case '/api/v3/repos/usr/proj/pulls/1/commits': res.end( JSON.stringify([ - { sha: '1234567890123456789012345678901234567890' }, - { sha: '2234567890123456789012345678901234567890' }, + { + sha: '1234567890123456789012345678901234567890', + }, + { + sha: '2234567890123456789012345678901234567890', + }, ]) ); break; @@ -71,7 +78,10 @@ function withFakeGithub() { case '/api/v3/repos/usr/proj/pulls/2': res.end( JSON.stringify({ - user: { login: 'pr-2-user', html_url: 'http://pr-2-user' }, + user: { + login: 'pr-2-user', + html_url: 'http://pr-2-user', + }, html_url: 'http://pr-2', title: 'PR #2 Title', }) @@ -84,8 +94,12 @@ function withFakeGithub() { // These commits are *not* part of the release. // This could happen, for example, when a foreign PR happens to // have an id that also exists in the current repo. - { sha: 'e234567890123456789012345678901234567890' }, - { sha: 'f234567890123456789012345678901234567890' }, + { + sha: 'e234567890123456789012345678901234567890', + }, + { + sha: 'f234567890123456789012345678901234567890', + }, ]) ); break; @@ -97,26 +111,29 @@ function withFakeGithub() { }); server.listen(3000, done); }); - after(done => { server.close(done); }); - return httpCalls; } describe('generateChangeLog', () => { it('can create an empty changelog', () => { - const pkg = { repository: 'usr/proj' }; + const pkg = { + repository: 'usr/proj', + }; const commits = []; - const options = { commits }; + const options = { + commits, + }; return generateChangeLog(null, pkg, options).then(changelog => { assert.equal('', changelog); }); }); - it('links to github issues and jira tickets', () => { - const pkg = { repository: 'usr/proj' }; + const pkg = { + repository: 'usr/proj', + }; const commits = [ { sha: '1234567890123456789012345678901234567890', @@ -151,7 +168,9 @@ describe('generateChangeLog', () => { ], }, ]; - const options = { commits }; + const options = { + commits, + }; const href0 = `https://github.com/usr/proj/commit/${commits[0].sha}`; const href1 = `https://github.com/usr/proj/commit/${commits[1].sha}`; return generateChangeLog(null, pkg, options).then(changelog => { @@ -169,9 +188,10 @@ describe('generateChangeLog', () => { ); }); }); - it('can create a changelog for two commits', () => { - const pkg = { repository: 'usr/proj' }; + const pkg = { + repository: 'usr/proj', + }; const commits = [ { sha: '1234567890123456789012345678901234567890', @@ -184,7 +204,9 @@ describe('generateChangeLog', () => { subject: 'Do more things', }, ]; - const options = { commits }; + const options = { + commits, + }; const href0 = `https://github.com/usr/proj/commit/${commits[0].sha}`; const href1 = `https://github.com/usr/proj/commit/${commits[1].sha}`; return generateChangeLog(null, pkg, options).then(changelog => { @@ -197,9 +219,10 @@ describe('generateChangeLog', () => { ); }); }); - it('puts breaking changes ahead of everything else', () => { - const pkg = { repository: 'usr/proj' }; + const pkg = { + repository: 'usr/proj', + }; const commits = [ { sha: '1234567890123456789012345678901234567890', @@ -218,7 +241,9 @@ describe('generateChangeLog', () => { ], }, ]; - const options = { commits }; + const options = { + commits, + }; const href0 = `https://github.com/usr/proj/commit/${commits[0].sha}`; const href1 = `https://github.com/usr/proj/commit/${commits[1].sha}`; return generateChangeLog(null, pkg, options).then(changelog => { @@ -239,10 +264,11 @@ describe('generateChangeLog', () => { ); }); }); - describe('pull request commits', () => { const httpCalls = withFakeGithub(); - const pkg = { repository: 'http://127.0.0.1:3000/usr/proj' }; + const pkg = { + repository: 'http://127.0.0.1:3000/usr/proj', + }; const commits = [ { sha: '1234567890123456789012345678901234567890', @@ -261,28 +287,28 @@ describe('generateChangeLog', () => { pullId: '1', }, ]; - const options = { commits }; + const options = { + commits, + }; let changelog = null; - before('generateChangeLog', () => { return generateChangeLog(null, pkg, options).then(_changelog => { changelog = _changelog; }); }); - it('calls out to github to get PR info', () => { assert.equal(2, httpCalls.length); }); - it('groups commits by pull request', () => { assert.include('* PR #1 Title', changelog); assert.include(' - [`1234567`]', changelog); }); }); - describe('with an invalid PR', () => { const httpCalls = withFakeGithub(); - const pkg = { repository: 'http://127.0.0.1:3000/usr/proj' }; + const pkg = { + repository: 'http://127.0.0.1:3000/usr/proj', + }; const commits = [ { sha: '1234567890123456789012345678901234567890', @@ -303,44 +329,45 @@ describe('generateChangeLog', () => { ]; const sloppyCommits = commits.map(commit => { if (commit.type === 'pr') return commit; - return { sha: commit.sha, header: commit.subject }; + return { + sha: commit.sha, + header: commit.subject, + }; }); - const options = { commits }; + const options = { + commits, + }; let changelog = null; let sloppyChangelog = null; - before('generateChangeLog', () => { return generateChangeLog(null, pkg, options).then(_changelog => { changelog = _changelog; }); }); - before('generateSloppyChangeLog', () => { - return generateChangeLog(null, pkg, { commits: sloppyCommits }).then( - _changelog => { - sloppyChangelog = _changelog; - } - ); + return generateChangeLog(null, pkg, { + commits: sloppyCommits, + }).then(_changelog => { + sloppyChangelog = _changelog; + }); }); - it('calls out to github to get PR info', () => { assert.equal(4, httpCalls.length); }); - it('ignores the PR', () => { assert.notInclude('* PR #2 Title', changelog); assert.include('* [`1234567`]', changelog); }); - it('handles poorly formatted commit messages too', () => { assert.include(') Stop doing the wrong thing\n', sloppyChangelog); assert.include(') Do more things', sloppyChangelog); }); }); - describe('with a missing PR', () => { const httpCalls = withFakeGithub(); - const pkg = { repository: 'http://127.0.0.1:3000/usr/proj' }; + const pkg = { + repository: 'http://127.0.0.1:3000/usr/proj', + }; const commits = [ { sha: '1234567890123456789012345678901234567890', @@ -359,19 +386,18 @@ describe('generateChangeLog', () => { pullId: '3', }, ]; - const options = { commits }; + const options = { + commits, + }; let changelog = null; - before('generateChangeLog', () => { return generateChangeLog(null, pkg, options).then(_changelog => { changelog = _changelog; }); }); - it('calls out to github to get PR info', () => { assert.equal(2, httpCalls.length); }); - it('ignores the PR', () => { assert.include('* [`1234567`]', changelog); }); diff --git a/test/steps/execute-prepare-hook-command.test.js b/test/steps/execute-prepare-hook-command.test.js index e41df0a..70ec1fd 100644 --- a/test/steps/execute-prepare-hook-command.test.js +++ b/test/steps/execute-prepare-hook-command.test.js @@ -44,13 +44,11 @@ const withFixture = require('../fixture'); describe('executePrepareHookCommand', () => { const dirname = withFixture('empty-project'); - describe('when no hooks', () => { it('does nothing', () => { executePrepareHookCommand(dirname, null, {}); }); }); - describe('when hooks is empty', () => { it('does nothing', () => { executePrepareHookCommand(dirname, null, { @@ -58,22 +56,24 @@ describe('executePrepareHookCommand', () => { }); }); }); - describe('when hooks does not contain *prepare* hook', () => { it('does nothing', () => { executePrepareHookCommand(dirname, null, { - hooks: { dummy: 'blabla' }, + hooks: { + dummy: 'blabla', + }, }); }); }); - describe('when hooks contains *prepare* hook', () => { it('executes the command defined in the value', () => { const expectedVersion = '1.0.0'; const tmpFilename = 'tmp.txt'; executePrepareHookCommand(dirname, null, { nextVersion: expectedVersion, - hooks: { prepare: `printf $NLM_NEXT_VERSION >> ${tmpFilename}` }, + hooks: { + prepare: `printf $NLM_NEXT_VERSION >> ${tmpFilename}`, + }, }); const version = fs.readFileSync(`${dirname}/${tmpFilename}`, 'utf8'); assert.equal(expectedVersion, version); diff --git a/test/steps/pending-changes.test.js b/test/steps/pending-changes.test.js index 5cb8c12..cac9115 100644 --- a/test/steps/pending-changes.test.js +++ b/test/steps/pending-changes.test.js @@ -45,15 +45,12 @@ describe('getPendingChanges', () => { repository: 'usr/proj', }; const options = {}; - before('create version commit', () => { return getPendingChanges(dirname, pkg, options); }); - it('adds the commits to the options', () => { assert.hasType(Array, options.commits); }); - it('resolves commit references', () => { const commit = options.commits.find(c => c.subject === 'Jira'); assert.equal(1, commit.references.length); @@ -61,7 +58,6 @@ describe('getPendingChanges', () => { assert.equal('REPO-', ref.prefix); assert.equal('https://jira.atlassian.com/browse/REPO-2001', ref.href); }); - it('truncates full urls to same repo', () => { const commit = options.commits.find(c => c.subject === 'Truncate'); assert.equal(1, commit.references.length); @@ -69,7 +65,6 @@ describe('getPendingChanges', () => { assert.equal('#', ref.prefix); assert.equal('https://github.com/usr/proj/issues/44', ref.href); }); - it('builds nice references to sibling repos', () => { const commit = options.commits.find(c => c.subject === 'Full'); assert.equal(1, commit.references.length); @@ -77,7 +72,6 @@ describe('getPendingChanges', () => { assert.equal('open/source#', ref.prefix); assert.equal('https://github.com/open/source/issues/13', ref.href); }); - it('expands short-style refs', () => { const commit = options.commits.find(c => c.subject === 'Short'); assert.equal(1, commit.references.length); @@ -85,7 +79,6 @@ describe('getPendingChanges', () => { assert.equal('#', ref.prefix); assert.equal('https://github.com/usr/proj/issues/42', ref.href); }); - it('supports refs to other Github instances', () => { const commit = options.commits.find(c => c.subject === 'GHE'); assert.equal(1, commit.references.length); diff --git a/test/steps/publish-to-npm.test.js b/test/steps/publish-to-npm.test.js index 13abd02..5e6e74c 100644 --- a/test/steps/publish-to-npm.test.js +++ b/test/steps/publish-to-npm.test.js @@ -43,7 +43,6 @@ const withFixture = require('../fixture'); function withFakeRegistry() { const httpCalls = []; let server; - before(done => { server = require('http').createServer((req, res) => { httpCalls.push({ @@ -51,16 +50,21 @@ function withFakeRegistry() { url: req.url, auth: req.headers.authorization, }); + if (req.method === 'GET' && req.url === '/nlm-test-pkg') { res.statusCode = 404; return void res.end('{}'); } + res.statusCode = 200; + if (req.url === '/nlm-test-pkg?write=true') { res.end( JSON.stringify({ ok: true, - versions: { '1.0.0': {} }, + versions: { + '1.0.0': {}, + }, }) ); } else { @@ -69,11 +73,9 @@ function withFakeRegistry() { }); server.listen(3000, done); }); - after(done => { server.close(done); }); - return httpCalls; } @@ -81,7 +83,6 @@ describe('publishToNpm', () => { describe('with NPM_USERNAME etc.', () => { const dirname = withFixture('released'); const httpCalls = withFakeRegistry(); - it('sends basic auth headers', function() { this.timeout(4000); return publishToNpm(dirname, require(`${dirname}/package.json`), { @@ -108,27 +109,26 @@ describe('publishToNpm', () => { }); function getTokenOptions(overrides) { - return Object.assign( - { - currentBranch: 'master', - distTag: 'latest', - commit: true, - npmUsername: '', - npmPasswordBase64: '', - npmEmail: '', - npmToken: 'some-access-token', - }, - overrides - ); + return { + currentBranch: 'master', + distTag: 'latest', + commit: true, + npmUsername: '', + npmPasswordBase64: '', + npmEmail: '', + npmToken: 'some-access-token', + ...overrides, + }; } describe('with NPM_TOKEN etc.', () => { const dirname = withFixture('released'); const httpCalls = withFakeRegistry(); - it('uses a bearer token', function() { this.timeout(4000); + const pkg = require(`${dirname}/package.json`); + return publishToNpm(dirname, pkg, getTokenOptions()).then(() => { assert.deepEqual( [ @@ -143,15 +143,17 @@ describe('publishToNpm', () => { }); }); }); - describe('with nlm.deprecated set', () => { const dirname = withFixture('released'); const httpCalls = withFakeRegistry(); - it('tries to deprecate', function() { this.timeout(4000); + const pkg = require(`${dirname}/package.json`); - const opts = getTokenOptions({ deprecated: 'reason' }); + + const opts = getTokenOptions({ + deprecated: 'reason', + }); return publishToNpm(dirname, pkg, opts).then(() => { const putReq = { method: 'PUT', @@ -165,13 +167,14 @@ describe('publishToNpm', () => { }); }); }); - describe('without --commmit', () => { const dirname = withFixture('released'); const httpCalls = withFakeRegistry(); - it('makes no http calls', () => { - const opts = getTokenOptions({ commit: false, deprecated: 'foo' }); + const opts = getTokenOptions({ + commit: false, + deprecated: 'foo', + }); return publishToNpm( dirname, require(`${dirname}/package.json`), @@ -181,16 +184,14 @@ describe('publishToNpm', () => { }); }); }); - describe('if the package is set to private', () => { const dirname = withFixture('released'); const httpCalls = withFakeRegistry(); - it('makes no http calls', () => { - const pkg = Object.assign( - { private: true }, - require(`${dirname}/package.json`) - ); + const pkg = { + private: true, + ...require(`${dirname}/package.json`), + }; return publishToNpm(dirname, pkg, getTokenOptions()).then(() => { assert.deepEqual([], httpCalls); }); diff --git a/test/steps/release-info.test.js b/test/steps/release-info.test.js index 5592f57..0f929da 100644 --- a/test/steps/release-info.test.js +++ b/test/steps/release-info.test.js @@ -44,22 +44,18 @@ describe('determineReleaseInfo', () => { it('returns "none" for an empty list of commits', () => { assert.equal('none', determineReleaseInfo([])); }); - describe('with invalid commit messages', () => { const dirname = withFixture('invalid-commit'); - let commits = []; before('load commits', () => { return getCommits(dirname).then(results => { commits = results; }); }); - it('rejects them with a helpful message', () => { const error = assert.throws(() => { determineReleaseInfo(commits); }); - assert.equal( [ 'This repository uses AngularJS Git Commit Message Conventions[1]', @@ -92,7 +88,6 @@ describe('determineReleaseInfo', () => { error.message ); }); - describe('with --acceptInvalidCommits', () => { it('is cautious and considers it "major"', () => { assert.equal('major', determineReleaseInfo(commits, true)); diff --git a/test/steps/version-commit.test.js b/test/steps/version-commit.test.js index 9eb1872..4df1977 100644 --- a/test/steps/version-commit.test.js +++ b/test/steps/version-commit.test.js @@ -32,7 +32,8 @@ 'use strict'; -const execFile = require('child_process').execFile; +const { execFile } = require('child_process'); + const fs = require('fs'); const assert = require('assertive'); @@ -57,6 +58,7 @@ function cloneDeep(obj) { describe('createVersionCommit', () => { let pkg; let options; + function resetVars() { pkg = cloneDeep(DEF_PKG); options = cloneDeep(DEF_OPTS); @@ -64,48 +66,56 @@ describe('createVersionCommit', () => { before(resetVars); afterEach(resetVars); - describe('with no package-lock.json', () => { const dirname = withFixture('multiple-commits'); - before('commits with the original author', done => { - execFile('git', ['show'], { cwd: dirname }, (err, stdout) => { - if (err) return done(err); - assert.include('Author: Robin Developer ', stdout); - return done(); - }); + execFile( + 'git', + ['show'], + { + cwd: dirname, + }, + (err, stdout) => { + if (err) return done(err); + assert.include('Author: Robin Developer ', stdout); + return done(); + } + ); }); - before('create version commit', () => { return createVersionCommit(dirname, pkg, options); }); - it('writes the correct HEAD sha', () => { const HEAD = fs.readFileSync(`${dirname}/.git/refs/heads/master`, 'utf8'); assert.equal(HEAD.trim(), options.versionCommitSha); }); - it('commits with the proper user', done => { - execFile('git', ['show'], { cwd: dirname }, (err, stdout) => { - if (err) return done(err); - assert.include('Author: nlm ', stdout); - return done(); - }); + execFile( + 'git', + ['show'], + { + cwd: dirname, + }, + (err, stdout) => { + if (err) return done(err); + assert.include('Author: nlm ', stdout); + return done(); + } + ); }); }); - describe('using package-lock.json', () => { const dirname = withFixture('with-plock'); - before('create version commit', () => createVersionCommit(dirname, pkg, options) ); - it('bumps the package-lock version number', done => { execFile( 'git', ['show', 'HEAD:package-lock.json'], - { cwd: dirname }, + { + cwd: dirname, + }, (err, json) => { if (err) return void done(err); assert.equal('1.0.0', JSON.parse(json).version); @@ -114,19 +124,18 @@ describe('createVersionCommit', () => { ); }); }); - describe('with unused package-lock.json', () => { const dirname = withFixture('with-bogus-plock'); - before('create version commit', () => createVersionCommit(dirname, pkg, options) ); - it("doesn't touch change it", done => { execFile( 'git', ['show', 'HEAD:package-lock.json'], - { cwd: dirname }, + { + cwd: dirname, + }, err => { assert.truthy(err); const json = fs.readFileSync(`${dirname}/package-lock.json`, 'utf8'); From 5543c9b1d81587819160e6152dacddf335983147 Mon Sep 17 00:00:00 2001 From: Andreas Richter Date: Tue, 4 Feb 2020 10:34:36 +0100 Subject: [PATCH 6/7] style: fix lint issues --- lib/cli.js | 1 + lib/steps/execute-prepare-hook-command.js | 2 ++ lib/steps/publish-to-npm.js | 2 ++ 3 files changed, 5 insertions(+) diff --git a/lib/cli.js b/lib/cli.js index 12af6ba..3391402 100644 --- a/lib/cli.js +++ b/lib/cli.js @@ -103,6 +103,7 @@ if (argv.version) { const cwd = process.cwd(); const packageJsonFile = path.join(cwd, 'package.json'); // eslint-disable-next-line import/no-dynamic-require + // eslint-disable-next-line import/no-dynamic-require const pkg = require(packageJsonFile); command(cwd, pkg, { ...argv, ...pkg.nlm }).catch(prettyPrintErrorAndExit); diff --git a/lib/steps/execute-prepare-hook-command.js b/lib/steps/execute-prepare-hook-command.js index ba47c99..93f7c7f 100644 --- a/lib/steps/execute-prepare-hook-command.js +++ b/lib/steps/execute-prepare-hook-command.js @@ -34,6 +34,8 @@ const childprocess = require('child_process'); +const console = require('console'); + function executePrepareHookCommand(cwd, pkg, options) { const prepareHook = options.hooks && options.hooks.prepare; if (!prepareHook) return; diff --git a/lib/steps/publish-to-npm.js b/lib/steps/publish-to-npm.js index d21e6e1..02078bb 100644 --- a/lib/steps/publish-to-npm.js +++ b/lib/steps/publish-to-npm.js @@ -36,6 +36,8 @@ const fs = require('fs'); const path = require('path'); +const console = require('console'); + const debug = require('debug')('nlm:publish-to-npm'); const run = require('../run'); From 239ae9a52d556f108c360be05283d03547ad52e6 Mon Sep 17 00:00:00 2001 From: Andreas Richter Date: Tue, 4 Feb 2020 20:04:29 +0100 Subject: [PATCH 7/7] fix: address feedback --- lib/commands/changelog.js | 2 +- lib/commands/release.js | 2 +- lib/commands/verify.js | 5 +++-- lib/git/ensure-tag.js | 4 +--- lib/github/parse-repository.js | 3 ++- lib/steps/version-commit.js | 3 ++- 6 files changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/commands/changelog.js b/lib/commands/changelog.js index 01ec117..deceac2 100644 --- a/lib/commands/changelog.js +++ b/lib/commands/changelog.js @@ -53,7 +53,7 @@ async function showChangelog(cwd, pkg, options) { const tasks = [ensureVersionTag, getPendingChanges, generateChangeLog]; - for (const task of tasks) await Promise.resolve(runTask(task)); + for (const task of tasks) await runTask(task); return printChangelog(); } diff --git a/lib/commands/release.js b/lib/commands/release.js index 9d00f8e..19e17a7 100644 --- a/lib/commands/release.js +++ b/lib/commands/release.js @@ -109,7 +109,7 @@ function release(cwd, pkg, options) { publishTasks = [publishToNpm]; } - for (const task of publishTasks) await Promise.resolve(runTask(task)); + for (const task of publishTasks) await runTask(task); return null; } diff --git a/lib/commands/verify.js b/lib/commands/verify.js index a616d41..005b20b 100644 --- a/lib/commands/verify.js +++ b/lib/commands/verify.js @@ -81,8 +81,9 @@ function verify(cwd, pkg, options) { } throw err; - } // Not making this configurable to prevent some possible abuse + } + // Not making this configurable to prevent some possible abuse options.pr = getPullRequestId(); function ensureLastVersionTag() { @@ -113,7 +114,7 @@ function verify(cwd, pkg, options) { } async function runVerifyTasks() { - for (const task of verifyTasks) await Promise.resolve(runTask(task)); + for (const task of verifyTasks) await runTask(task); } return runVerifyTasks(); diff --git a/lib/git/ensure-tag.js b/lib/git/ensure-tag.js index c6ff67f..bb09c9e 100644 --- a/lib/git/ensure-tag.js +++ b/lib/git/ensure-tag.js @@ -39,9 +39,7 @@ const fs = require('fs'); const run = require('../run'); function fetchTag(cwd, tag) { - return run('git', ['fetch', 'origin', 'tag', tag], { - cwd, - }); + return run('git', ['fetch', 'origin', 'tag', tag], { cwd }); } /** * Ensure that a tag was fetched from the remote diff --git a/lib/github/parse-repository.js b/lib/github/parse-repository.js index 3388cae..7630e0b 100644 --- a/lib/github/parse-repository.js +++ b/lib/github/parse-repository.js @@ -42,8 +42,9 @@ function parseRepository(repositoryField) { if (!repository || typeof repository !== 'string') { throw new Error(`Invalid or missing repository field: ${repositoryField}`); - } // Transform git@ into git+ssh://git@ which URL constructor can handle + } + // Transform git@ into git+ssh://git@ which URL constructor can handle const url = repository.replace(/^git@([^:]+):(.*)$/, 'git+ssh://git@$1/$2'); const parsed = new URL(url, 'git+ssh://git@github.com'); const host = parsed.host || 'github.com'; diff --git a/lib/steps/version-commit.js b/lib/steps/version-commit.js index 8e55769..c943500 100644 --- a/lib/steps/version-commit.js +++ b/lib/steps/version-commit.js @@ -76,8 +76,9 @@ function updatePackageLockVersion(cwd, version, files) { if (fs.existsSync(ignorePath)) { const ignore = fs.readFileSync(ignorePath, 'utf8'); if (/^\/?package-lock\.json\s*$/m.test(ignore)) return; - } // we don't want to risk re-sorting the file, so just do a regexp replace + } + // we don't want to risk re-sorting the file, so just do a regexp replace const oldLock = fs.readFileSync(lockPath, 'utf8'); const newLock = oldLock.replace(/^( {2}"version": ")[^"]+/m, `$1${version}`); fs.writeFileSync(lockPath, newLock);